From xonovex-skill-c99
Use when editing or reviewing general-purpose C99 — libraries, CLI tools, system code without strong opinions on memory ownership or layout. Triggers on `.c`/`.h` files and prompts about C99 idioms, designated initializers, fixed-width types, const-correctness, malloc/free patterns, inline functions, value-oriented APIs, sanitizers, or error returns, even when the user doesn't say 'C'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/xonovex-skill-c99:c99-guideThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- **Memory management** - Free all heap allocations, avoid leaks, see [references/memory-management.md](references/memory-management.md)
SOURCES.mdevals.jsonreferences/build-and-warnings.mdreferences/compound-literals.mdreferences/const-correctness.mdreferences/designated-initializers.mdreferences/error-handling.mdreferences/fixed-width-types.mdreferences/inline-functions.mdreferences/memory-management.mdreferences/string-views.mdreferences/value-types.mdconst, designated initializers (ZII), small functions, see references/designated-initializers.md, references/const-correctness.md<stdint.h> for sized/serialized data; size_t for counts and indices, see references/fixed-width-types.mdinline functions over macros where practical, see references/inline-functions.md{ok, value} result struct; reserve out-params for large or multiple results, see references/value-types.mdstrlen/strcat/strtok rescans, see references/string-views.mdINT_MAX + 1 lets the compiler eliminate "impossible" code pathsint* to float* is UB unless via union or memcpy — silently miscompiled at higher optimization levelsmalloc returns memory that's max-aligned; custom arenas must preserve alignment for _Bool/double/SIMD types.field = x) zero-fill unmentioned members — a missing field becomes silent zero, not a compile errorlong is 32-bit on Windows and 64-bit on most 64-bit Unix targets — a struct of int/long serializes and hashes differently per platform; use <stdint.h> exact-width types for any stored or shared dataint against an unsigned size_t converts the int — a negative value becomes a huge size_t and the bounds check passes; keep counts/indices in size_t end to end-std=c99 usually still means the GNU dialect — set C_EXTENSIONS OFF for true ISO C99, then #define _XOPEN_SOURCE 700 or POSIX calls (readlink, strnlen, ssize_t) become implicit-declaration errors-Wextra's -Wmissing-field-initializers/-Wmissing-braces fire on intentional zero-init — suppress those two, keep the rest of -Werrorsnprintf into a fixed buffer trips -Wformat-truncation; check its return (>= size ⇒ truncated) to handle the case and clear the warningGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Resolves in-progress git merge or rebase conflicts by analyzing history, understanding intent, and preserving both changes where possible. Runs automated checks after resolution.
npx claudepluginhub xonovex/platform --plugin xonovex-skill-c99