Commands Creator
This skill provides guidance for creating and managing slash commands in Claude Code. Slash commands are Markdown files that define frequently used prompts and workflows for Claude to execute.
Quick Start
Create a Project Command
mkdir -p .claude/commands echo "Review this code for security vulnerabilities:" > .claude/commands/security-review.md
Usage: /security-review
Create a Personal Command
mkdir -p ~/.claude/commands echo "Explain this code in simple terms:" > ~/.claude/commands/explain.md
Usage: /explain
Commands vs Skills
Use slash commands for:
-
Quick, frequently used prompts
-
Simple prompt snippets you use often
-
Prompt reminders or templates
-
Frequently used instructions that fit in one file
Use Skills for:
-
Complex workflows with multiple steps
-
Capabilities requiring scripts or utilities
-
Knowledge organized across multiple files
-
Team workflows you want to standardize
See skills-vs-commands.md for detailed comparison.
Command Creation Process
-
Analyze requirements: What do you want the command to do?
-
Choose scope: Project (.claude/commands/ ) or Personal (~/.claude/commands/ )
-
Write frontmatter: Add metadata (description, allowed-tools, etc.)
-
Write prompt content: Define what Claude should execute
-
Test the command: Invoke it and verify behavior
-
Iterate: Refine based on usage
Command Types
Project Commands
-
Stored in .claude/commands/
-
Shared with your team via git
-
Shown as (project) in /help
Personal Commands
-
Stored in ~/.claude/commands/
-
Available across all projects
-
Shown as (user) in /help
Priority: Project commands take precedence over personal commands if both have the same name.
Plugin Commands
-
Provided by plugins
-
Automatically available when plugin is enabled
-
Can be namespaced: /plugin-name:command-name
MCP Commands
-
Dynamically discovered from connected MCP servers
-
Format: /mcp__<server-name>__<prompt-name>
-
Managed via /mcp command
See command-types.md for detailed information.
Command Scope: Project vs Personal
Use Project Commands When:
-
The command is project-specific
-
You want to share with your team
-
The workflow should be version-controlled
Use Personal Commands When:
-
The command is a general-purpose utility
-
You want it available across all projects
-
The workflow is personal to your development style
Basic Syntax
/<command-name> [arguments]
Command Name
-
Derived from the Markdown filename (without .md extension)
-
Must be unique within scope
-
Can be namespaced using subdirectories
Arguments
-
Optional parameters passed to the command
-
Use placeholders in command content:
-
$ARGUMENTS : All arguments as a single string
-
$1 , $2 , $3 : Individual positional arguments
See syntax-and-arguments.md for detailed syntax and argument handling.
Frontmatter
Command files support frontmatter for metadata:
description: Brief description of the command allowed-tools: Bash(git add:), Bash(git status:) argument-hint: [message]
Common Frontmatter Fields
Field Purpose Default
description
Brief description First line of prompt
allowed-tools
Tools command can use Inherits from conversation
argument-hint
Arguments expected None
model
Specific model to use Inherits from conversation
disable-model-invocation
Block Skill tool invocation false
hooks
Command-scoped hooks None
See frontmatter-reference.md for complete frontmatter reference.
Advanced Features
Bash Command Execution
Execute bash commands before the slash command runs:
allowed-tools: Bash(git add:), Bash(git status:), Bash(git commit:*)
Current git status: !git status
Use ! prefix to include bash command output in command context.
File References
Include file contents using @ prefix:
Review the implementation in @src/utils/helpers.js
Hooks
Define hooks scoped to command execution:
description: Deploy to staging hooks: PreToolUse: - matcher: "Bash" hooks: - type: command command: "./scripts/validate-deploy.sh" once: true
Deploy to staging environment.
Thinking Mode
Trigger extended thinking by including extended thinking keywords in the command content.
See advanced-features.md for detailed advanced features.
Namespacing
Organize commands in subdirectories:
.claude/commands/ ├── frontend/ │ ├── review.md # Creates /review (project:frontend) │ └── test.md # Creates /test (project:frontend) └── backend/ ├── review.md # Creates /review (project:backend) └── deploy.md # Creates /deploy (project:backend)
Subdirectories appear in the command description but don't affect the command name.
Command Discovery and Autocomplete
-
Type / at any position to see available commands
-
Autocomplete works anywhere in input, not just at the beginning
-
Commands are discovered from:
-
Project commands: .claude/commands/
-
Personal commands: ~/.claude/commands/
-
Plugin commands (when plugins are enabled)
-
MCP commands (when MCP servers are connected)
Skill Tool Integration
The Skill tool allows Claude to programmatically invoke commands during conversations. To encourage Claude to use a specific command, reference it in prompts or CLAUDE.md :
Run /review before committing changes.
Commands with disable-model-invocation: true cannot be invoked via the Skill tool.
See best-practices.md for usage patterns and recommendations.
Command Examples
Basic command:
description: Review code for security vulnerabilities
Review this code for security vulnerabilities:
- SQL injection risks
- XSS vulnerabilities
- Authentication/authorization issues
- Input validation problems
Command with arguments:
argument-hint: [type] [description] description: Create a git commit
Create a git commit with type "$1" and description "$2".
Commit format: $1: $2
Command with bash execution:
allowed-tools: Bash(git add:), Bash(git status:), Bash(git commit:*) description: Create a commit from staged changes
Current status
!git status
Changes to commit
!git diff --cached
Create a meaningful commit message for these changes.
See examples.md for more examples.
Common Built-in Commands
Claude Code provides 35+ built-in commands. Common ones include:
Command Purpose
/help
Get usage help
/clear
Clear conversation history
/context
Visualize current context usage
/cost
Show token usage statistics
/config
Open Settings interface
/memory
Edit CLAUDE.md memory files
/model
Select or change AI model
/plan
Enter plan mode
/review
Request code review
Built-in commands are not available through the Skill tool.
Troubleshooting
Issue Solution
Command not found Check filename matches command name
Arguments not working Verify placeholder syntax ($1, $2, $ARGUMENTS)
Bash execution failing Add command to allowed-tools
Project command ignored Personal command may have same name (project takes precedence)
Reference Files
-
command-types.md - Detailed information on command types
-
syntax-and-arguments.md - Syntax and argument handling
-
frontmatter-reference.md - Complete frontmatter reference
-
advanced-features.md - Bash execution, hooks, thinking mode
-
best-practices.md - Naming, namespacing, permissions
-
examples.md - Additional command examples