CLAUDE.md@.claude/skills · diff
git:20261013.4e5c041 to git:20261014.0f16275
27 added, 4 removed. Audit A to A.
# Adding or renaming a skill
- **The vet run covers the cross-references**: `scripts/vet.sh` calls `scripts/check-skill-catalog.sh`, so there is no separate step to remember — run the script directly only when you want the answer before the next vet. What it protects: the skills are densely cross-referenced, and a `@.claude/skills/<name>/SKILL.md` pointer to a file that isn't there fails **silently** — the agent follows the surviving prose and skips the step they couldn't load. Where the catalog ships, the script also asserts that every skill has exactly one entry in `.claude/skills/update-muthur/catalog.md` or its parts under `catalog/`, which keeps that inventory from drifting as skills are added.
+ **The vet run covers the cross-references**: `scripts/vet.sh` calls
+ `scripts/check-skill-catalog.sh`, so there is no separate step to remember — run
+ the script directly only when you want the answer before the next vet. What it
+ protects: the skills are densely cross-referenced, and a
+ `@.claude/skills/<name>/SKILL.md` pointer to a file that isn't there fails
+ **silently** — the agent follows the surviving prose and skips the step they
+ couldn't load. Where the catalog ships, the script also asserts that every skill
+ has exactly one entry in `.claude/skills/update-muthur/catalog.md` or its parts
+ under `catalog/`, which keeps that inventory from drifting as skills are added.
- **Don't name a skill with a word the loop already uses as an instruction token.** Skills trigger on description matching before their body loads, so a name that doubles as a go-ahead ("implement", "proceed", "ship it", "let's …" — `@.claude/skills/plan/SKILL.md` § "The approval gate" holds the list) fires on prose that meant the token, not the skill. Where the skill takes an argument, naming it after the argument — `/task`, `/pr` — puts it out of reach of that reading entirely.
+ **Don't name a skill with a word the loop already uses as an instruction
+ token.** Skills trigger on description matching before their body loads, so a
+ name that doubles as a go-ahead ("implement", "proceed", "ship it", "let's …" —
+ `@.claude/skills/plan/SKILL.md` § "The approval gate" holds the list) fires on
+ prose that meant the token, not the skill. Where the skill takes an argument,
+ naming it after the argument — `/task`, `/pr` — puts it out of reach of that
+ reading entirely.
- **A skill named inside another skill's argument is written bare** — `/relay go`, `/from-branch #123 finalize` — in descriptions, examples and every command a skill hands the operator to type, because the Claude app refuses to send a command whose argument carries a slash command. A skill that reads such an argument takes a first token naming a directory under `.claude/skills/` as that skill, slash or no slash, since the CLI still sends the slashed form; `@.claude/skills/from-branch/SKILL.md` § "Argument shape" is that reading, and `/relay take` dispatches through it.
+ **A skill named inside another skill's argument is written bare** — `/relay go`,
+ `/from-branch #123 finalize` — in descriptions, examples and every command a
+ skill hands the operator to type, because the Claude app refuses to send a
+ command whose argument carries a slash command. A skill that reads such an
+ argument takes a first token naming a directory under `.claude/skills/` as that
+ skill, slash or no slash, since the CLI still sends the slashed form;
+ `@.claude/skills/from-branch/SKILL.md` § "Argument shape" is that reading, and
+ `/relay take` dispatches through it.
- **A change to a skill's `description:` is an edit to an always-loaded file**, since the skill listing carries it on every turn: stage the `SKILL.md` first, per `@.claude/rules/staging.md`. A body-only edit goes in place.
+ **A change to a skill's `description:` is an edit to an always-loaded file**,
+ since the skill listing carries it on every turn: stage the `SKILL.md` first,
+ per `@.claude/rules/staging.md`. A body-only edit goes in place.