Help us improve
Share bugs, ideas, or general feedback.
From zig
TigerBeetle's coding style guide for writing safe, performant Zig code. Enforces strict safety rules (assertions, bounded control flow, static memory), performance discipline (mechanical sympathy, batching), and naming/formatting conventions. Use this skill when: (1) Writing or generating Zig code — apply Tiger Style rules during generation, (2) Reviewing Zig code — run a detailed review against all Tiger Style principles, (3) User asks about Tiger Style conventions, naming, assertions, or formatting. Triggers on: writing Zig code, code review requests, style questions, "tiger style", "tiger review".
npx claudepluginhub mattrobenolt/pi-configs --plugin zigHow this skill is triggered — by the user, by Claude, or both
Slash command
/zig:tiger-styleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Design goals in priority order: **safety > performance > developer experience**.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Structures git workflow practices for committing, branching, resolving conflicts, and organizing work across parallel streams. Use when making any code change.
Share bugs, ideas, or general feedback.
Design goals in priority order: safety > performance > developer experience.
assert(a); assert(b); not assert(a and b);.u32) — avoid usize.if/else. Don't use complex else if chains.if (index < length) not if (index >= length).self).tracy.traceNamed(@src(), ...) zone. Zones are compiled out in release builds (zero cost), so add them wherever they provide even marginal observability value. Name zones to distinguish initial vs continuation paths (e.g., "decrypt" vs "decrypt remaining").Note: Casing and formatting are enforced by zig fmt + ziglint (see AGENTS.md). The rules below cover semantics that linters don't catch.
latency_ms_max not max_latency_ms.source/target not src/dest.readSector() → readSectorCallback().const T = @This();), then methods.//, capital letter, full stop. End-of-line comments can be phrases.Every bool should trigger the question: "can this be modeled better?" Booleans are almost always a crutch for a richer type. Consider:
enum — if it represents a state or mode, name the states: .active / .inactive not true/false?T) — "present or absent" is clearer than a bool + separate valueBooleans aren't forbidden, but every use should survive scrutiny. A function that takes two bools is a strong signal something should be an enum or options struct.
*const if not meant to be copied.fn init(target: *T) !void). In-place init is viral.void > enum > u64 > ?u64 > !u64. Avoid bool returns — an enum with named variants is almost always clearer.defer using newlines.index (0-based) vs count (1-based) vs size (count × unit) are distinct types.@divExact(), @divFloor(), or div_ceil() to show division intent.For a thorough code review against Tiger Style, read the relevant reference files:
When performing a full Tiger Style review, read all three reference files and check the code against each section systematically.