Docs · last updated
Claude Code skills vs slash commands vs subagents
When to use each, what the difference is on disk, and how Knack packs combine all three. The reference operators reach for when a pack adds something they didn't know they had.
Claude Code has three extension surfaces. Each is a markdown file, each lives in ~/.claude/, and each gets invoked differently. Operators using Claude Code in anger will eventually want all three. This page is the reference.
The three surfaces
| Surface | Lives at | Invoked how | Best for |
|---|---|---|---|
| Skill | ~/.claude/skills/<name>/SKILL.md | Auto-attached when Claude judges the skill is relevant; can also be referenced explicitly | Long-form domain reference: rules, examples, voice, decision frameworks the model should consult |
| Slash command | ~/.claude/commands/<name>.md | You type /<name> in Claude Code | Short, named workflows the operator triggers consciously |
| Subagent | ~/.claude/agents/<name>.md | Natural-language reference, explicit @"<name> (agent)", or claude --agent <name> | Multi-step orchestration with isolated context and a pruned tool list |
The three are complementary, not alternatives. A pack can ship any combination. The Knack Starter Pack ships skills only. Solo Consultant Ops ships five skills, one subagent, and one slash command (the last is a wrapper around the agent so buyers can type /engagement-coordinator).
Skills
A skill is a markdown file with YAML frontmatter at the top and prose underneath. The frontmatter declares a name and a short description. The prose is what Claude Code attaches to the model’s context when it decides the skill is relevant to the current task.
Skills are the right shape for content like:
- Voice and tone rules (“write in operator-to-operator tone, no hype words, named examples”)
- Decision frameworks (“when ranging a project, derive a rate-card from take-home + utilisation; refuse if the operator says ‘as much as possible’”)
- Templates with editorial intent (“here is the proposal structure; here is what each section is for; here are the three things buyers usually get wrong”)
A skill can include supporting files in its directory. The Knack convention is examples/ for worked examples, but the directory shape is yours.
The advantage of a skill over a slash command is that Claude Code attaches it automatically when relevant. The buyer doesn’t need to remember to invoke it. The disadvantage is the buyer doesn’t always know it’s running.
Slash commands
A slash command is a single markdown file in ~/.claude/commands/. Typing /<filename> in Claude Code injects the file’s body as a prompt. The frontmatter is minimal (a description for the picker UI).
Slash commands are the right shape for:
- Conscious workflows that the operator triggers deliberately (
/lint-pack,/ship-pack) - Wrappers around skills or agents the operator wants a memorable shortcut for (
/engagement-coordinatorinvokes the SCO subagent of the same name) - One-shot prompts that don’t need conditional behaviour, just predictable output
Slash commands aren’t auto-attached. They’re invoked by the operator. That makes them better for “do this specific thing now” and worse for “always be aware of these rules”.
Subagents
A subagent is a markdown file in ~/.claude/agents/ with frontmatter declaring its name, a description, optionally a model override, and (important) a tools: field listing which tools the agent is allowed to use.
When invoked, a subagent runs in its own context window, separate from the main conversation. The parent conversation passes a task; the subagent works it; the subagent returns one final message. The parent doesn’t see the subagent’s internal back-and-forth.
Subagents are the right shape for:
- Multi-step orchestration that benefits from a clean context (the SCO
engagement-coordinatorruns all seven phases of a consulting engagement) - Tool-restricted operations (a code reviewer subagent that can read but not edit)
- Long-running work that would otherwise pollute the parent’s context
Two gotchas worth knowing:
- The
tools:field is required for the agent to load reliably. SCO v1.1.0 omitted it; v1.1.1 added it back. Withouttools:, recent Claude Code versions don’t surface the agent in/agents. - Subagents aren’t slash-invokable by default. You invoke them by natural language (“use the engagement-coordinator subagent to draft the SoW”), by the
@"engagement-coordinator (agent)"mention, or by theclaude --agent engagement-coordinatorCLI flag. If you want a slash path, ship a slash command that wraps the agent — that’s exactly what SCO does with/engagement-coordinator.
How a Knack pack combines them
A well-shaped pack uses each surface for what it’s good at.
Take Solo Consultant Ops as the worked example:
- Five skills. One per phase that benefits from a domain-specific reference (
proposal-writer,sow-templater,follow-up-sequencer,invoice-chaser,rate-card-calculator). These get auto-attached when the operator is in the relevant kind of conversation. - One subagent.
engagement-coordinatororchestrates a full lifecycle, calling the right skill at the right phase and refusing to skip phases. It runs in its own context so the operator’s main conversation isn’t polluted by the orchestration back-and-forth. - One slash command.
/engagement-coordinatoris a thin wrapper around the agent so the buyer who expects “slash means do the thing” gets the slash path.
Other packs will pick a different mix. Some won’t need an agent. Some will be skill-only. The choice is about which surface fits the workflow, not about ticking boxes.
Reading further
For where each file actually lands on disk and what’s inside, see what files a knack pack puts on your machine. For editing or extending any of these, see customising a knack pack you’ve installed.