|
| 1 | +# Commands vs Skills: When to Use Each |
| 2 | + |
| 3 | +## Same Mechanism, Different Complexity |
| 4 | + |
| 5 | +Both commands and skills: |
| 6 | + |
| 7 | +- Are invoked via the Skill tool |
| 8 | +- Support $ARGUMENTS and `[BANG]` bash execution |
| 9 | +- Support frontmatter (description, allowed-tools, model) |
| 10 | +- Can control invocability (disable-model-invocation) |
| 11 | + |
| 12 | +## Decision Matrix |
| 13 | + |
| 14 | +| Need | Use | Location | |
| 15 | +| ----------------------- | ------- | ---------------------- | |
| 16 | +| Simple reusable prompt | Command | commands/foo.md | |
| 17 | +| Dynamic arguments only | Command | commands/foo.md | |
| 18 | +| Scripts for validation | Skill | skills/foo/ | |
| 19 | +| Reference documentation | Skill | skills/foo/references/ | |
| 20 | +| Working examples | Skill | skills/foo/examples/ | |
| 21 | +| Progressive disclosure | Skill | skills/foo/ | |
| 22 | + |
| 23 | +## Invocation Control |
| 24 | + |
| 25 | +| Setting | User (/) | Claude (Skill tool) | |
| 26 | +| ----------------------------------- | -------- | ------------------- | |
| 27 | +| Default | Yes | Yes | |
| 28 | +| disable-model-invocation: true | Yes | No | |
| 29 | +| user-invocable: false (skills only) | No | Yes | |
| 30 | + |
| 31 | +## Migration: Command to Skill |
| 32 | + |
| 33 | +When a command grows complex: |
| 34 | + |
| 35 | +1. Create `skills/name/SKILL.md` |
| 36 | +2. Move command content to SKILL.md body |
| 37 | +3. Add `references/` for detailed docs |
| 38 | +4. Add `scripts/` for utilities |
| 39 | +5. Delete original command file |
0 commit comments