# Pre-ship checklist

Run before considering a skill done.

## Discovery
- [ ] `description` says **what + when + trigger words**, third person, and names the platform (iOS/SwiftUI).
- [ ] Description disambiguates from sibling skills (a reader can tell when to pick this vs a neighbor).
- [ ] Tested: in a fresh task that should trigger it, does the model actually reach for it? If not, sharpen the description.

## Leanness
- [ ] `SKILL.md` reads like an index, ~1 page (hard cap ~500 lines).
- [ ] Detail lives in bundled files **one level deep** - no nested-deeper references.
- [ ] Every line survives "would Claude err without this?" - no over-explaining, no restating what the model knows.
- [ ] Deterministic code is a **script**, not prose asking the model to regenerate it.

## Shape
- [ ] Layer is explicit (reference or workflow) and matches the content.
- [ ] **Reference** skill has **no numbered procedures** - heuristics + pointers only.
- [ ] **Workflow** skill's numbered steps are **only** the deterministic/irreversible spine, and it has a **verification gate**.
- [ ] Conventions **point to canonical files** rather than pasting code that will rot.

## Naming & wiring
- [ ] Name has **no platform prefix**; reference = aspect noun, workflow = verb-phrase; not vague/reserved.
- [ ] Registered in the plugin manifest (`<plugin>/.claude-plugin/plugin.json` `skills` array) and the marketplace version bumped (`.github/plugin/marketplace.json`).
- [ ] Listed in the `index` skill's route table.

## House rules
- [ ] No AI/Claude/Anthropic attribution anywhere in the skill or its examples.
- [ ] Escape hatches name the skill to hand off to when this one doesn't apply.

## High-confidence gate (new / substantially-changed skills)
- [ ] Ran the multi-architect audit ([audit.md](audit.md)) and looped fix → re-audit until `clearsBar` (no blockers/majors).
