Skills and Slash Commands
Package repeatable Claude Code workflows into reusable commands and skills.
Key takeaways
- Custom slash commands are now merged into skills:
.claude/commands/deploy.mdand.claude/skills/deploy/SKILL.mdboth create/deploy, but skills are recommended for supporting files and invocation control. - A skill's body loads only when used, so long reference material costs almost nothing until needed; storage location (enterprise, personal, project, plugin) controls who can use it.
- Only
descriptionis recommended frontmatter; other useful fields includedisable-model-invocation,user-invocable,allowed-tools,model/effort, andcontext: fork. - Pass arguments via
$ARGUMENTS/$N, and inject live data with a!`<command>`line that runs a shell command and replaces the placeholder with its output before the skill reaches Claude. - Recent releases reshaped the command surface —
/simplifyis now cleanup-only (pair with/code-reviewfor bugs), and/run,/verify,/reload-skillscarry version requirements. - As rechecked on June 25, 2026, v2.1.181~v2.1.190 focused on MCP, sandbox, model, and agent operations rather than adding a new user-invoked slash command surface.
Skills and slash commands turn repeated work into a named workflow. Use them after a pattern is stable enough that humans would otherwise paste the same instructions again and again.
Commands are now skills
Custom slash commands have been merged into skills. A file at .claude/commands/deploy.md and a
skill at .claude/skills/deploy/SKILL.md both create /deploy and behave the same way. Existing
.claude/commands/ files keep working and support the same frontmatter, but skills are the
recommended form because they also support supporting files, invocation control, and automatic
loading. If a skill and a command share the same name, the skill takes precedence.
Slash Commands
Slash commands are best for short, direct workflows:
- Run a release checklist.
- Generate a focused review prompt.
- Start a documented debugging routine.
- Prepare a handoff summary.
A command is only recognized at the start of your message; any text after the command name is passed
to it as arguments. Type / to see every command available to you, or / plus letters to filter.
Example command body:
Inspect changed files, identify risky behavior changes, run the focused test if available, and
return findings first with file references.Skills
Skills are better for multi-step workflows with reference material, scripts, or templates. A useful
skill explains when to use it, what files to read, and what output to produce. Each skill is a
directory whose SKILL.md is the required entrypoint; other files (templates, examples, scripts,
reference docs) are optional and load only when referenced.
my-skill/
├── SKILL.md # Main instructions (required)
├── template.md # Template for Claude to fill in
├── examples/
│ └── sample.md # Example output showing expected format
└── scripts/
└── validate.sh # Script Claude can executeUnlike CLAUDE.md content, a skill's body loads only when the skill is used, so long reference material costs almost nothing until you need it. Keep the body concise: once a skill loads, its content stays in context across turns, so every line is a recurring token cost.
Good skill contents:
- Trigger conditions.
- Required repository conventions.
- Scripts or templates to reuse.
- Verification requirements.
- Known failure modes.
Where Skills Live
Where you store a skill determines who can use it:
| Location | Path | Applies to |
|---|---|---|
| Enterprise | Managed settings location | All users in your organization |
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | All your projects |
| Project | .claude/skills/<skill-name>/SKILL.md | This project only |
| Plugin | <plugin>/skills/<skill-name>/SKILL.md | Where the plugin is enabled |
When skills share a name across levels, enterprise overrides personal, and personal overrides
project. Plugin skills use a plugin-name:skill-name namespace, so they never conflict. The
command you type comes from the skill directory name (.claude/skills/deploy-staging/ →
/deploy-staging), or from the file name for a .claude/commands/ file.
Project skills load from .claude/skills/ in your starting directory and every parent directory up
to the repository root, and Claude Code discovers nested .claude/skills/ directories on demand
when you work with files in subdirectories (useful for monorepos). Claude Code watches these
directories for changes during a session; use /reload-skills to force a re-scan after adding or
editing skills on disk.
June 25, 2026 recheck
The v2.1.181~v2.1.190 changelog did not introduce a new user-invoked slash command that changes this chapter's command table. The operating impact from this update round is covered in the setup, headless, MCP, and subagent chapters: MCP login/logout, MCP idle timeout, sandbox credentials, model restriction warnings, and the agent nesting cap.
Frontmatter Discipline
If a workflow needs a specific reasoning level or model behavior, encode that in the command or skill frontmatter and keep the body operational:
---
description: Review handbook route changes for locale regressions.
---
Check route helpers, sitemap generation, localized links, and E2E coverage.All frontmatter fields are optional; only description is recommended so Claude knows when to apply
the skill. The most useful fields:
| Field | Use it for |
|---|---|
description | What the skill does and when to use it. Claude matches against this to load the skill automatically. |
name | Display label in skill listings. Defaults to the directory name; it does not change what you type to invoke the skill (except for a plugin-root SKILL.md). |
argument-hint | Hint shown during autocomplete, e.g. [issue-number]. |
disable-model-invocation | Set true so only you can invoke it with /name; Claude never triggers it automatically. Use for side-effecting workflows like /deploy or /commit. |
user-invocable | Set false to hide it from the / menu; only Claude invokes it. Use for background knowledge that is not a meaningful command. |
allowed-tools | Tools Claude may use without prompting while the skill is active. Does not restrict other tools. |
model / effort | Override the model or effort level for the duration of the skill. |
context: fork | Run the skill in an isolated subagent; pair with agent to pick the subagent type (e.g. Explore). |
Arguments and Dynamic Context
Arguments passed after the command name are available via $ARGUMENTS (the full string),
$ARGUMENTS[N], or the shorthand $N for the Nth (0-based) argument. If a skill does not include
$ARGUMENTS, Claude Code appends ARGUMENTS: <your input> to the end so Claude still sees it.
---
description: Fix a GitHub issue
disable-model-invocation: true
---
Fix GitHub issue $ARGUMENTS following our coding standards, then write tests and commit.A line beginning with !`<command>` runs the shell command before the skill is sent to Claude
and replaces the placeholder with its output, so Claude receives real data rather than the command
text. Use a fenced ```! block for multi-line commands. This is preprocessing, not something
Claude executes.
## Current changes
!`git diff HEAD`
## Instructions
Summarize the changes above and flag any risks.Current Command Surface
Recent Claude Code releases changed several command responsibilities:
| Command | Use it for |
|---|---|
/goal | Set a completion condition so Claude keeps working across turns until it is met. |
/workflows | Watch, pause, resume, or save running and completed dynamic workflow runs. |
/background or /bg | Detach the current session to run as a background agent and free the terminal. |
/usage-credits | Configure usage credits when limits block progress. Renamed from /extra-usage. |
/reload-skills | Re-scan skill and command directories so on-disk changes apply without restarting. |
/skills | List available skills, sort by token count, and toggle skill visibility. |
/run | Launch and drive the project app to see a change working in the running app. |
/verify | Confirm behavior by building and running the app, not just tests or type checks. |
/code-review | Find correctness bugs and cleanups; use /code-review ultra for the deeper cloud review path. |
/simplify | Cleanup-only review for reuse, simplification, efficiency, and abstraction level. |
/cd <path> | Move the session to another working directory while preserving prompt cache; requires v2.1.169+. |
/simplify is not a bug finder
From v2.1.154, /simplify runs a cleanup-only review (four agents covering reuse, simplification,
efficiency, and abstraction level) and does not look for correctness bugs. Pair it with
/code-review when both cleanup and correctness review are needed. On earlier versions /simplify
was equivalent to /code-review --fix.
/run, /verify, and /run-skill-generator require Claude Code v2.1.145 or later; /reload-skills
requires v2.1.152 or later; the /simplify cleanup-only behavior and the ultra review level
landed in v2.1.154. /run and /verify infer the launch from your project type and metadata;
/run-skill-generator records a per-project recipe at .claude/skills/run-<name>/ for projects that
need more than a standard launch.
For locked-down sessions, --disable-slash-commands disables all skills and commands for that
invocation. To hide only bundled Claude Code skills and workflows, set disableBundledSkills: true
or CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1; plugin, project, and user skills remain available, and
built-in slash commands like /init remain typable but are hidden from the model.
Governance
Review commands and skills like production code. Remove stale ones, merge duplicates, and keep
high-risk automation visible to the team. Treat checked-in project skills as trusted code: an
allowed-tools entry can grant broad tool access once the workspace is trusted, so review project
.claude/skills/ before trusting a repository.