// Create and use custom slash commands to automate Claude Code workflows. Learn argument passing, frontmatter configuration, bash integration, and file references for building reusable prompts.
| name | Writing Slash Commands |
| description | Create and use custom slash commands to automate Claude Code workflows. Learn argument passing, frontmatter configuration, bash integration, and file references for building reusable prompts. |
| allowed-tools | Bash |
Slash commands are reusable prompt templates that automate recurring tasks in Claude Code. Define them once, invoke them anytime with /command-name [args].
Project-scoped (shared with team):
mkdir -p .claude/commands
echo "Analyze this code for performance issues:" > .claude/commands/optimize.md
Personal (across all projects):
mkdir -p ~/.claude/commands
echo "Review this code for security vulnerabilities:" > ~/.claude/commands/security-review.md
Invoke with /optimize or /security-review.
| Scope | Location | Scope | Shareable |
|---|---|---|---|
| Project | .claude/commands/ | Repository-specific | Yes (team) |
| Personal | ~/.claude/commands/ | All projects | No |
Organize commands in subdirectories (no effect on invocation):
.claude/commands/
โโโ frontend/
โ โโโ component.md # Invokes as `/component` (shows "project:frontend")
โโโ backend/
โ โโโ api.md # Invokes as `/api` (shows "project:backend")
โโโ security-review.md # Invokes as `/security-review`
Note: User-level and project-level commands with the same name conflict; only one is available.
$ARGUMENTSUse $ARGUMENTS when you need all arguments as a single string:
---
description: Fix issue with optional priority
argument-hint: [issue-number] [optional-priority]
---
Fix issue #$ARGUMENTS following our coding standards.
Usage: /fix-issue 123 โ $ARGUMENTS = "123"
Usage: /fix-issue 123 high-priority โ $ARGUMENTS = "123 high-priority"
$1, $2, ...Use positional parameters for structured commands:
---
description: Review pull request with priority and assignee
argument-hint: [pr-number] [priority] [assignee]
---
Review PR #$1 with priority $2 and assign to $3.
Focus on security, performance, and code style.
Usage: /review-pr 456 high alice โ $1="456", $2="high", $3="alice"
When to use positional:
${3:-unassigned}All options are optional; commands work without frontmatter.
| Field | Purpose | Example |
|---|---|---|
description | Shown in /help (required for SlashCommand tool) | "Fix security issues" |
argument-hint | Argument syntax hint for autocomplete | "[issue] [priority]" |
allowed-tools | Tools this command can invoke | Bash(git add:*), Bash(git status:*) |
model | Override default model for this command | "claude-3-5-haiku-20241022" |
disable-model-invocation | Prevent SlashCommand tool from triggering | true |
---
description: Create a git commit with staged changes
argument-hint: [message]
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
model: claude-3-5-haiku-20241022
---
Create a git commit with message: $ARGUMENTS
!Prefix inline commands with ! to execute before the command runs. Requires allowed-tools with Bash:
---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git log:*)
description: Create a git commit
---
## Context
- Current status: !`git status`
- Staged changes: !`git diff --cached`
- Recent commits: !`git log --oneline -5`
## Your Task
Create a single commit summarizing the changes.
Output from bash commands is included in the prompt context.
@Include file contents in commands:
Review the implementation in @src/utils/helpers.js
Compare @src/old-version.js with @src/new-version.js
Use standard file references (e.g., @docs/, @src/).
---
description: Fix issue with priority level
argument-hint: [issue-number] [priority-level]
---
Fix GitHub issue #$1 with priority "$2".
Steps:
1. Understand the issue context
2. Write minimal, focused fix
3. Consider edge cases
4. Ensure tests pass
Usage: /fix-issue 42 high
---
allowed-tools: Bash(git diff:*), Bash(git log:*)
description: Review recent commits for code quality
argument-hint: "[number-of-commits]"
---
## Context
Recent changes:
!`git log --oneline -${1:-5}`
Full diff:
!`git diff HEAD~${1:-5}...HEAD`
## Your Task
Provide a code quality review focusing on readability, performance, and best practices.
Usage: /review-commits 3 โ Reviews last 3 commits
---
description: Set up feature flags for testing
argument-hint: feature [enable|disable] [environment]
---
Configure feature "$1" to be $2 in the $3 environment.
Verify:
- Feature flag exists in @src/config/features.ts
- Environment is valid (dev, staging, production)
- Changes are tested before deployment
Usage: /feature dark-mode enable staging
The SlashCommand tool allows Claude to invoke your custom commands programmatically.
Add to CLAUDE.md or project instructions:
When appropriate, use /optimize to analyze code performance.
When fixing bugs, use /fix-issue with the issue number.
description frontmatterdisable-model-invocation: trueSlashCommand tool in permissionsPrevent Claude from auto-invoking a command:
---
disable-model-invocation: true
description: Manual review only
---
Your command content...
Fine-grained control via /permissions:
SlashCommand:/commit # Exact match: /commit only
SlashCommand:/review-pr:* # Prefix match: /review-pr with any args
Deny SlashCommand entirely to disable all auto-invocation.
โ Do:
/optimize, /security-review)description for discoverability via /help and SlashCommand toolargument-hint for clear usage patternsโ Don't:
allowed-toolsEssential commands you get for free:
| Command | Purpose |
|---|---|
/help | List all commands (built-in + custom) |
/config | Open Settings interface |
/status | Show version, model, account |
/cost | Token usage statistics |
/model | Switch AI model |
/memory | Edit CLAUDE.md |
/rewind | Rewind conversation or code |
/clear | Clear history |
/agents | Manage custom AI subagents |
/mcp | Manage MCP server connections |
In CLAUDE.md or project instructions:
## Custom Commands
Use these commands to accelerate development:
- `/optimize [file]` โ Analyze code performance
- `/security-review [file]` โ Check for vulnerabilities
- `/commit [message]` โ Create atomic commits
- `/test [suite]` โ Run tests with focus
In conversations:
> I'll use /optimize to check this function for performance issues.
Claude recognizes the slash and may auto-invoke if SlashCommand tool is enabled.
/mcp__server__prompt)/plugin-name:command or just /command)