Zig Programming Language
Entry point for Zig development. Provides an overview, version awareness, and routes to focused skills.
Anti-fabrication
This skill follows core:anti-fabrication. Zig is pre-1.0 with every minor release
breaking std and build APIs, so version-migration claims are the highest-risk content
in this plugin. Verified against zig 0.16.0 (locally installed, claude-skills-204) by
compiling the documented snippets: references/migration-0.16.md's claim that
std.c.arc4random_buf is BSD/Darwin-only was refuted by its own citation (lib/std/c.zig
covers Linux/Android too) and corrected to a compile-probed target table, and
references/version-history.md's listing of fmt.bufPrintZ under "Renamed" was
corrected — it is still present, deprecated in favor of bufPrintSentinel. Re-verify
against a locally installed zig version before asserting a std API claim this skill
doesn't cover — see plugins/languages/zig/skills/sources.md for the full per-claim
record.
Available Skills
This plugin provides focused skills for specific Zig topics:
- zig:language - Core language: comptime, error handling, data types, slices, defer
- zig:build - Build system: build.zig, cross-compilation, dependencies, CI
- zig:allocators - Memory management: allocator types, patterns, leak detection
- zig:testing - Built-in test framework, test allocator, build integration
- zig:c-interop - C interoperability: @cImport, type mappings, translate-c, linking
- zig:troubleshooting - Common errors, debugging, runtime panics, memory issues
Version Awareness
Zig is pre-1.0: every minor release carries breaking changes. Run zig version
first and match guidance to the installed toolchain. This plugin documents
0.16.0 (current stable, released 2026-04-13); 0.15.x and 0.14.x notes are
retained for migration. Check https://ziglang.org/download/index.json for the
release list — GitHub tags lag behind (they stop at 0.15.2).
| Version |
Template |
Highlights |
| 0.16.0 |
templates/0.16.0/mise.toml |
std.Io async architecture (all blocking ops take io, io.async/Future, Io.Threaded), @cImport deprecated for b.addTranslateC(), @Type replaced by dedicated builtins, "juicy main" main(init: std.process.Init), sync primitives moved to std.Io.* |
| 0.15.2 |
templates/0.15.2/mise.toml |
std.Io Reader/Writer redesign ("Writergate"), unmanaged std.ArrayList default, usingnamespace and async/await removed, top-level root_source_file removed from build options, {f} format specifier, self-hosted x86_64 Debug backend |
| 0.14.1 |
templates/0.14.1/mise.toml |
Managed std.ArrayList, root_module introduced (old fields deprecated), build.zig.zon fingerprint + enum-literal name |
The full breaking-change tables and 0.14 → 0.15 migration checklist live in
references/version-history.md. For concrete 0.15 → 0.16 before/after code
snippets (sync primitives, Reader API, ArrayList, ordered maps, C interop,
process API, macOS 26 build) see references/migration-0.16.md.
Quick Start
# Install via mise (pin the exact version)
mise use zig@0.16.0
# Create a new project
mkdir myproject && cd myproject
zig init # add --minimal for just a build.zig.zon stub (0.15+)
Copy templates/0.16.0/mise.toml into the project for build/test/fmt/watch
tasks. Projects pinned to older toolchains use templates/0.15.2/mise.toml or
templates/0.14.1/mise.toml.
Key Principles
- No hidden control flow: if code does not look like it calls a function, it does not
- No hidden memory allocations: allocators are explicit parameters
- No preprocessor, no macros: comptime replaces both
- Explicit over implicit: be clear about allocations, errors, ownership
- Performance and safety: both achievable without compromise
- C ecosystem integration: use existing C libraries without depending on libc
- Cross-compilation first-class: target any platform from any platform
1---2name: zig3description: Guide for Zig programming language. Use when writing Zig code, setting up Zig projects, migrating between Zig versions, or needing an overview of Zig development workflows.4---56# Zig Programming Language78Entry point for Zig development. Provides an overview, version awareness, and routes to focused skills.910## Anti-fabrication1112This skill follows `core:anti-fabrication`. Zig is pre-1.0 with every minor release13breaking `std` and build APIs, so version-migration claims are the highest-risk content14in this plugin. Verified against zig 0.16.0 (locally installed, claude-skills-204) by15compiling the documented snippets: `references/migration-0.16.md`'s claim that16`std.c.arc4random_buf` is BSD/Darwin-only was refuted by its own citation (`lib/std/c.zig`17covers Linux/Android too) and corrected to a compile-probed target table, and18`references/version-history.md`'s listing of `fmt.bufPrintZ` under "Renamed" was19corrected — it is still present, deprecated in favor of `bufPrintSentinel`. Re-verify20against a locally installed `zig version` before asserting a `std` API claim this skill21doesn't cover — see `plugins/languages/zig/skills/sources.md` for the full per-claim22record.2324## Available Skills2526This plugin provides focused skills for specific Zig topics:2728- **zig:language** - Core language: comptime, error handling, data types, slices, defer29- **zig:build** - Build system: build.zig, cross-compilation, dependencies, CI30- **zig:allocators** - Memory management: allocator types, patterns, leak detection31- **zig:testing** - Built-in test framework, test allocator, build integration32- **zig:c-interop** - C interoperability: @cImport, type mappings, translate-c, linking33- **zig:troubleshooting** - Common errors, debugging, runtime panics, memory issues3435## Version Awareness3637Zig is pre-1.0: every minor release carries breaking changes. Run `zig version`38first and match guidance to the installed toolchain. This plugin documents39**0.16.0** (current stable, released 2026-04-13); 0.15.x and 0.14.x notes are40retained for migration. Check https://ziglang.org/download/index.json for the41release list — GitHub tags lag behind (they stop at 0.15.2).4243| Version | Template | Highlights |44|---|---|---|45| 0.16.0 | `templates/0.16.0/mise.toml` | `std.Io` async architecture (all blocking ops take `io`, `io.async`/`Future`, `Io.Threaded`), `@cImport` deprecated for `b.addTranslateC()`, `@Type` replaced by dedicated builtins, "juicy main" `main(init: std.process.Init)`, sync primitives moved to `std.Io.*` |46| 0.15.2 | `templates/0.15.2/mise.toml` | `std.Io` Reader/Writer redesign ("Writergate"), unmanaged `std.ArrayList` default, `usingnamespace` and `async`/`await` removed, top-level `root_source_file` removed from build options, `{f}` format specifier, self-hosted x86_64 Debug backend |47| 0.14.1 | `templates/0.14.1/mise.toml` | Managed `std.ArrayList`, `root_module` introduced (old fields deprecated), `build.zig.zon` `fingerprint` + enum-literal `name` |4849The full breaking-change tables and 0.14 → 0.15 migration checklist live in50`references/version-history.md`. For concrete 0.15 → 0.16 before/after code51snippets (sync primitives, Reader API, ArrayList, ordered maps, C interop,52process API, macOS 26 build) see `references/migration-0.16.md`.5354## Quick Start5556```bash57# Install via mise (pin the exact version)58mise use zig@0.16.05960# Create a new project61mkdir myproject && cd myproject62zig init # add --minimal for just a build.zig.zon stub (0.15+)63```6465Copy `templates/0.16.0/mise.toml` into the project for build/test/fmt/watch66tasks. Projects pinned to older toolchains use `templates/0.15.2/mise.toml` or67`templates/0.14.1/mise.toml`.6869## Key Principles7071- **No hidden control flow**: if code does not look like it calls a function, it does not72- **No hidden memory allocations**: allocators are explicit parameters73- **No preprocessor, no macros**: comptime replaces both74- **Explicit over implicit**: be clear about allocations, errors, ownership75- **Performance and safety**: both achievable without compromise76- **C ecosystem integration**: use existing C libraries without depending on libc77- **Cross-compilation first-class**: target any platform from any platform