# 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.

**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 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.
