| name | add_command |
| description | Creates a new slash command (skill) that users can invoke with /name. Use when asked to add a command, automate a repeatable workflow step, or expose a task as a /name shortcut. |
| when_to_use | Use when the user says "add a /command", "make a shortcut for X", or "I want to run this with a slash command". |
| argument-hint | <command-name> <what it does> |
| allowed-tools | Write |
Create a skill
Slash commands in this project live in .claude/skills/<name>/SKILL.md. Each skill is a markdown file with YAML frontmatter.
Step 1 — Create the file
Create .claude/skills/<name>/SKILL.md where <name> is the command name (lowercase, hyphen-separated).
Step 2 — Write the frontmatter
---
name: <name>
description: <What it does and when to use it. Third person. Include trigger keywords.>
when_to_use: <Extra trigger context — action phrases the user might say.>
argument-hint: "<expected arguments>"
allowed-tools: Bash Read Write
model: sonnet
effort: medium
disable-model-invocation: true
user-invocable: false
context: fork
---
Not all fields are required — only include what changes the default behaviour.
Step 3 — Write the body
Run this command to <what it does>.
## Steps
1. <step one — prefer shell commands over prose>
2. <step two>
## Rules
- <constraint if any>
$ARGUMENTS expands to the full argument string. Use $1, $2 for positional args.
Guidelines
- Name: lowercase, hyphen-separated, max 64 chars
- Description quality is load-bearing: if Claude doesn't trigger it automatically, the description is too vague — add keywords users would naturally say
- No file reads in the body: embed what the agent needs inline; don't say "read X first"
- Side-effect commands: set
disable-model-invocation: true so only the user can invoke them
- Background conventions: set
user-invocable: false so Claude loads them automatically