К основному содержанию
скилл CX Codex

zig-compiler — скилл для Claude Code: компиляция Zig и zig cc

Ведёт агента по вызову компилятора Zig: режимы оптимизации, типы сборки, zig cc вместо C-компилятора и разбор сообщений об ошибках.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill zig-compiler -a claude-code
Открыть на GitHub

Что делает zig-compiler

Скилл включается, когда вы спрашиваете про zig build-exe, zig build-lib, режимы ReleaseSafe, ReleaseFast, ReleaseSmall, zig cc или ошибки компиляции. Внутри — рабочий порядок действий: базовая компиляция одного файла, выбор типа вывода (исполняемый файл, статическая и динамическая библиотека, объектный файл), кросс-компиляция по тройке cpu-os-abi, вывод LLVM IR и ассемблера, проверка синтаксиса через zig ast-check и zig fmt.

Отдельная часть посвящена zig cc — компилятору C и C++ на базе Clang с musl в комплекте. Он герметичный: системный libc не нужен, а кросс-сборка под ARM идёт без отдельного тулчейна. В скилле есть примеры подстановки в CMake и Makefile через переменные CC и CXX.

Есть таблица режимов оптимизации с сопоставлением флагам -O0, -O2, -O3, -Os и разбор типовых ошибок — от несовпадения типов до неиспользуемых переменных, которые в Zig нужно явно отбрасывать через _ = x;. Режим ReleaseFast снимает проверки безопасности и превращает их в неопределённое поведение, поэтому автор советует сначала проверить сборку на ReleaseSafe. Для проектов с build.zig скилл отсылает к соседним разделам про систему сборки и C-интероп.

Какие задачи решает

  • собрать исполняемый файл из одного файла main.zig
  • выбрать между ReleaseSafe и ReleaseFast для продакшена
  • собрать C-код через zig cc без системного тулчейна
  • прочитать ошибку Zig и понять, где несовпадение типов
  • проверить синтаксис до полной компиляции

Примеры запросов агенту

  • Как собрать src/main.zig в исполняемый файл с именем myapp?
  • Какой режим оптимизации выбрать для продакшена и чем ReleaseSafe отличается от ReleaseFast?
  • Собери C-файл под aarch64-linux-gnu через zig cc

Как установить zig-compiler

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill zig-compiler -a claude-code

2Вручную: положить файлы

~/.claude/skills/zig-compiler/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/zig-compiler/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора62

rust-no-std Скилл для разработки на Rust без стандартной библиотеки: разбирает границу core, alloc и std, глобальные аллокаторы и обработчики паник. CX Codex +1 474установок dwarf-debug-format Скилл объясняет агенту, как читать отладочную информацию DWARF: секции ELF, split DWARF, debuginfod, влияние LTO и stripping. CX Codex +1 471установок intel-vtune-amd-uprof Скилл для профилирования процессора: помогает найти горячие функции, разобрать промахи кэша и заторы конвейера через Intel VTune и AMD uProf. CX Codex +1 469установок rust-async-internals Помогает агенту объяснять и отлаживать async Rust: модель poll, Pin и Unpin, планировщик tokio, утечки waker. Пригодится, когда задача виснет или тормозит. CX Codex +1 467установок zig-comptime Скилл для агентов, который помогает писать обобщённые функции, рефлексию типов и код, вычисляемый на этапе компиляции в Zig. CX Codex +1 443установок zig-testing Скилл ведёт агента по тестовой системе Zig: zig build test, фильтры, comptime-проверки, тестовый аллокатор и встроенный фаззер. CX Codex +1 440установок stm32-baremetal Ведёт агента по сборке прошивки STM32 на одних заголовках CMSIS: тактовые частоты, RCC, линкерный скрипт, сборка через arm-none-eabi-gcc. CX Codex +1 360установок device-drivers Скилл ведёт агента по разработке драйверов ядра Linux: platform/i2c/spi, символьные устройства, IRQ, DMA, regmap и runtime PM. CX Codex +1 358установок

Похожие

Compiler Explorer compiler-explorer Даёт агенту доступ к godbolt.org: компилирует код, показывает ассемблер и делится ссылками. Пригодится, когда нужно разобрать, во что превращается ваш C++ или Rust. CX Codex +1 ★ 19 148звёзд репо reference-compiler-cli angular Скилл объясняет внутреннее устройство Angular Compiler (ngtsc) — как работает компиляция декораторов, система traits и трансформация кода. Подключайте его перед работой с packages/compiler-cli. CX Codex +1 909установок check-compiler-errors cursor Скилл запускает команды компиляции и проверки типов, собирает ошибки по файлам и категориям, потом чинит их по приоритету. Нужен, когда локальная валидация или CI блокируется на типах. CX Codex +1 2 300установок rust-async-patterns Seth Hobson Скилл помогает писать и разбирать асинхронный Rust на Tokio: задачи, каналы, потоки и обработку ошибок. Пригодится для сетевых сервисов и отладки. CX Codex 20 625установок mojo-syntax modular Скилл исправляет устаревший синтаксис Mojo в ответах ассистента. Помогает при написании, ревью и переносе кода под свежие версии компилятора. CX Codex +1 2 900установок build-fix codewithmukesh Запускает автономный цикл починки сборки и тестов в проектах на .NET. Скилл разбирает ошибки компилятора, исправляет код и останавливается при регрессиях. CX Codex +1 2 800установок

Вопросы о zig-compiler

Как установить zig-compiler в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill zig-compiler -a claude-code. Скилл окажется в ~/.claude/skills/zig-compiler/SKILL.md.

Что делает zig-compiler?

Подсказывает агенту, как вызывать компилятор Zig: типы вывода, режимы оптимизации, кросс-компиляция, zig cc для C и C++, разбор сообщений об ошибках.

Чем zig cc отличается от gcc и clang?

Он не требует системного тулчейна, умеет кросс-компиляцию под любую поддерживаемую цель и несёт в комплекте musl для статических сборок под Linux.

Исходный текст

SKILL.md · MIT
---
name: zig-compiler
description: Zig compiler skill for systems programming. Use when compiling Zig programs, selecting optimization modes, using zig cc as a C compiler, reading Zig error messages, or understanding Zig's compilation model. Activates on queries about zig build-exe, zig build-lib, optimize modes, ReleaseSafe, ReleaseFast, ReleaseSmall, zig cc, zig ast-check, or Zig compilation errors.
---

# Zig Compiler

## Purpose

Guide agents through Zig compiler invocation: optimization modes, output types, `zig cc` as a C compiler drop-in, error message interpretation, and the Zig compilation pipeline.

## Triggers

- "How do I compile a Zig program?"
- "What are Zig's optimization modes and when do I use each?"
- "How do I use zig cc to compile C code?"
- "How do I read Zig error messages?"
- "How do I compile a Zig library?"
- "What is zig ast-check?"

## Workflow

### 1. Basic compilation

```bash
# Compile and run a single file
zig run src/main.zig

# Compile to executable
zig build-exe src/main.zig

# Compile to static library
zig build-lib src/mylib.zig

# Compile to shared library
zig build-lib src/mylib.zig -dynamic

# Compile to object file
zig build-obj src/main.zig

# Output name
zig build-exe src/main.zig -femit-bin=myapp
```

### 2. Optimization modes

| Mode | Flag | `-O` equiv | Purpose |
|------|------|-----------|---------|
| `Debug` (default) | `-O Debug` | `-O0 -g` | Fast compile, all safety checks, debug info |
| `ReleaseSafe` | `-O ReleaseSafe` | `-O2 + checks` | Optimized with safety checks retained |
| `ReleaseFast` | `-O ReleaseFast` | `-O3` | Maximum speed, safety checks removed |
| `ReleaseSmall` | `-O ReleaseSmall` | `-Os` | Minimize binary size |

```bash
zig build-exe src/main.zig -O Debug        # dev builds
zig build-exe src/main.zig -O ReleaseSafe  # production with safety
zig build-exe src/main.zig -O ReleaseFast  # max performance
zig build-exe src/main.zig -O ReleaseSmall # embedded/WASM
```

Safety checks in `Debug` and `ReleaseSafe`:
- Integer overflow → detected and panics with source location
- Array bounds checking → panics on OOB
- Null pointer dereference → panic (not crash)
- `unreachable` → panic
- Enum tag validation → panic on bad cast

`ReleaseFast`: turns safety checks into `undefined behaviour` (same semantics as C `-O3`). Use only when you've validated with `ReleaseSafe` first.

### 3. Target specification

```bash
# List all supported targets
zig targets

# Cross-compile for specific target
zig build-exe src/main.zig \
    -target aarch64-linux-gnu \
    -O ReleaseFast

# Embedded (no OS)
zig build-exe src/main.zig \
    -target thumb-freestanding-eabi \
    -O ReleaseSmall

# WebAssembly
zig build-exe src/main.zig \
    -target wasm32-freestanding \
    -O ReleaseSmall \
    --export=main

# Common target triples: cpu-os-abi
# x86_64-linux-gnu, x86_64-windows-gnu, aarch64-macos-none
# thumbv7m-freestanding-eabi, wasm32-wasi, wasm32-freestanding
```

### 4. zig cc — C compiler drop-in

Zig ships a C/C++ compiler (`zig cc` / `zig c++`) backed by Clang and musl. It is hermetic — no system libc required.

```bash
# Compile C code
zig cc -O2 -Wall main.c -o myapp

# Compile C++ code
zig c++ -std=c++17 -O2 main.cpp -o myapp

# Cross-compile C for ARM (no cross toolchain needed!)
zig cc -target aarch64-linux-gnu -O2 main.c -o myapp-arm

# Statically link with musl
zig cc -target x86_64-linux-musl main.c -o myapp-static

# Use in CMake (override compiler)
CC="zig cc" CXX="zig c++" cmake -S . -B build
cmake --build build

# Use in Makefile
CC="zig cc" make
```

`zig cc` advantages over gcc/clang:
- No system toolchain required (fully hermetic)
- Built-in cross-compilation for any supported target
- Always ships with a recent clang version
- musl libc bundled for static Linux builds

### 5. Emit formats

```bash
# Emit LLVM IR
zig build-exe src/main.zig --emit-llvm-ir

# Emit assembly
zig build-exe src/main.zig --emit-asm
cat main.s

# Emit binary and assembly
zig build-exe src/main.zig -femit-bin=myapp -femit-asm=myapp.s
```

### 6. AST check and syntax validation

```bash
# Check syntax without compiling
zig ast-check src/main.zig

# Format code
zig fmt src/main.zig
zig fmt src/          # format entire directory

# Check formatting without modifying
zig fmt --check src/

# Tokenize (debugging zig fmt)
zig tokenize src/main.zig
```

### 7. Reading Zig error messages

Zig error messages include:
- Source file and line
- Column indicator with arrow
- Note messages for context

```
src/main.zig:10:5: error: expected type 'u32', found 'i32'
    x: i32 = 5,
    ^
src/main.zig:7:5: note: struct field 'x' declared here
    x: u32,
    ^
```

Key error patterns:
| Error | Meaning |
|-------|---------|
| `error: expected type 'X', found 'Y'` | Type mismatch |
| `error: use of undeclared identifier 'X'` | Missing import or typo |
| `error: integer overflow` | Comptime overflow (caught at compile) |
| `error: cannot assign to constant` | Mutating a `const` variable |
| `error: unused variable 'x'` | All variables must be used |
| `error: unused function parameter 'x'` | Use `_ = x;` to suppress |

Suppress "unused" errors:
```zig
_ = unused_variable;  // explicitly discard
```

### 8. Version and environment

```bash
# Check Zig version
zig version

# Show build configuration
zig env

# Show standard library location
zig env | grep lib_dir
```

For optimization mode details and target triple reference, see [references/zig-optimize-modes.md](references/zig-optimize-modes.md).

## Related skills

- Use `skills/zig/zig-build-system` for multi-file projects with build.zig
- Use `skills/zig/zig-cinterop` for calling C from Zig and vice versa
- Use `skills/zig/zig-cross` for cross-compilation targets and sysroots
- Use `skills/zig/zig-debugging` for GDB/LLDB with Zig binaries

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой