# Zireael Spec Guardian

> Enforce locked docs, boundary rules, and safety guardrails for any Zireael change. Use when this capability is needed.

- Skill: `tomevault-io/zireael-spec-guardian` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/zireael-spec-guardian`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/zireael-spec-guardian/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/zireael-spec-guardian

---


## When to use

**Use this skill first** for any task in this repo, especially when:

- adding/modifying ABI, formats, or platform code
- changing ownership/memory behavior
- changing Unicode, rendering, diff output, or tests

After guardian checks, run `zireael-code-style` for any code edit/review.

## Source of truth

- `README.md` — GitHub-facing overview
- `docs/00_INDEX.md` — internal reading path
- `docs/CODE_STANDARDS.md` — code style and comments

Key locked docs:

- `docs/SAFETY_RULESET.md`
- `docs/LIBC_POLICY.md`
- `docs/ERROR_CODES_CATALOG.md`
- `docs/VERSION_PINS.md`
- `docs/GOLDEN_FIXTURE_FORMAT.md`

## Hard constraints (must not violate)

- **Engine-only repo:** no TypeScript, Node tooling, or monorepo
- **Platform boundary:**
    - `src/core`, `src/unicode`, `src/util` MUST NOT include OS headers
    - OS code only in `src/platform/win32/` and `src/platform/posix/`
    - `#ifdef _WIN32` only in platform backends
- **Ownership (locked):**
    - engine owns all its allocations
    - caller never frees engine memory
    - engine doesn't return heap pointers requiring caller free
- **Error model:** `0 = OK`, negative `ZR_ERR_*` codes
- **UB avoidance:** no type-punning; safe unaligned reads; validate all bounds
- **Hot paths:** no per-frame heap churn; single flush per present

## Pre-flight checklist

1. Identify affected docs (`docs/00_INDEX.md`)
2. Verify dependency direction: util → unicode → core → platform
3. Check version pins (`docs/VERSION_PINS.md`)
4. Decide caps/limits impacted (`zr_limits_t`)
5. Decide test impact (unit/golden/fuzz/integration)

## Review checklist

- [ ] No OS headers in core/unicode/util
- [ ] No `#ifdef` leaked into core/unicode/util
- [ ] No API returns pointers requiring caller free
- [ ] Error returns match `docs/ERROR_CODES_CATALOG.md`
- [ ] Parsers have bounds checks and fuzz consideration
- [ ] Golden outputs updated if behavior changed
- [ ] Docs updated if behavior/ABI/formats changed
- [ ] Readability gate met (named constants, rationale comments, no dense opaque expressions)

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/rtlzeromemory) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

