Claude-skill-registry claude-commands
Guide for creating custom slash commands for Claude Code. Use when adding new commands, defining command arguments, or implementing command workflows.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/claude-commands" ~/.claude/skills/majiayu000-claude-skill-registry-claude-commands && rm -rf "$T"
manifest:
skills/data/claude-commands/SKILL.mdsource content
Claude Code Commands
Guide for creating custom slash commands that extend Claude Code functionality.
When to Use This Skill
Activate this skill when:
- Creating new custom slash commands
- Understanding command structure and syntax
- Organizing commands for plugins
- Implementing command workflows
- Debugging command execution
What Are Commands?
Commands are custom slash commands (like
/commit, /review) that users can invoke to trigger specific workflows or expand prompts. They are markdown files that can contain:
- Static prompt text
- Dynamic content based on arguments
- Multi-step workflows
- Integration with tools and scripts
Command File Structure
Location
Commands are defined in markdown files located in:
- Plugin:
<plugin-root>/commands/ - User-level:
.claude/commands/
File Naming
- Use kebab-case:
my-command.md - File name becomes the command name:
→my-command.md/my-command - Avoid conflicts with built-in commands
Basic Command Format
Simple Static Command
# /my-command This is the prompt that will be expanded when the user types /my-command. The entire content of this file will replace the slash command in the conversation.
Command with Description
<!-- description: Brief description of what this command does --> # /my-command Command prompt goes here...
Command Arguments
Commands can accept arguments that users provide when invoking the command.
Single Argument
# /greet Hello, {{arg}}! Welcome to the project.
Usage:
/greet Alice → "Hello, Alice! Welcome to the project."
Multiple Arguments
# /create-file Create a new file at {{arg1}} with the following content: {{arg2}}
Usage:
/create-file src/main.rs "fn main() {}"
Named Arguments
# /deploy Deploy {{environment}} environment to {{region}}. Configuration: - Environment: {{environment}} - Region: {{region}} - Branch: {{branch}}
Usage:
/deploy --environment=production --region=us-east-1 --branch=main
Advanced Features
Conditional Content
# /analyze Analyze the {{language}} codebase. {{#if verbose}} Provide detailed analysis including: - Code complexity metrics - Dependency analysis - Security vulnerabilities {{else}} Provide a summary analysis. {{/if}}
Including Files
Reference other files or command outputs:
# /context Here is the current project structure: {{file:PROJECT_STRUCTURE.md}} And the current git status: {{shell:git status}}
Multi-Step Workflows
# /full-review I'll perform a comprehensive code review: 1. First, let me check the git diff: {{shell:git diff}} 2. Now analyzing code quality... 3. Checking for security issues... 4. Final recommendations:
Best Practices
Clear Command Names
- Use descriptive, action-oriented names
not/analyze-security/sec
not/create-component/comp
Provide Context
Always include what the command will do:
# /commit I'll analyze the current git changes and create a conventional commit message. Current changes: {{shell:git diff --staged}} Based on these changes, here's my suggested commit message:
Handle Edge Cases
# /deploy {{#if staging}} Deploying to staging environment (safe for testing) {{else if production}} ⚠️ WARNING: Deploying to PRODUCTION Are you sure you want to continue? This will affect live users. {{else}} Error: Unknown environment. Please specify --staging or --production {{/if}}
Document Arguments
<!-- description: Deploy application to specified environment usage: /deploy [--environment=<env>] [--region=<region>] arguments: - environment: Target environment (staging, production) - region: AWS region (us-east-1, eu-west-1, etc.) --> # /deploy
Command Organization
Plugin Commands
In
plugin.json:
{ "commands": [ "./commands/deploy.md", "./commands/analyze.md", "./commands/review.md" ] }
Directory-Based Commands
{ "commands": ["./commands"] }
This loads all
.md files in the commands/ directory.
Namespaced Commands
Organize related commands in subdirectories:
commands/ ├── git/ │ ├── commit.md │ ├── review.md │ └── cleanup.md ├── deploy/ │ ├── staging.md │ └── production.md
Common Command Patterns
Git Commit Message Generator
# /gcm I'll analyze the staged changes and generate a conventional commit message. {{shell:git diff --staged}} Based on these changes, here's my commit message:
Code Review Command
# /review-pr I'll review the pull request changes. PR Number: {{pr_number}} {{shell:gh pr diff {{pr_number}}}} Review checklist: - [ ] Code quality and style - [ ] Security considerations - [ ] Test coverage - [ ] Documentation updates
Project Scaffolding
# /new-component Creating a new {{component_type}} component named {{name}}. I'll create: 1. Component file at src/components/{{name}}.tsx 2. Test file at src/components/{{name}}.test.tsx 3. Storybook file at src/components/{{name}}.stories.tsx
Testing Commands
Manual Testing
- Install the plugin locally
- Reload Claude Code
- Type your command in the chat
- Verify the expansion is correct
Debugging
If a command doesn't work:
- Check file location matches plugin.json
- Verify markdown syntax
- Test argument substitution
- Check for conflicts with existing commands
Command Templates
Analysis Command Template
<!-- description: Analyze {{target}} for {{criteria}} --> # /analyze-{{target}} I'll analyze the {{target}} codebase for {{criteria}}. {{shell:find {{target}} -type f -name "*.{{extension}}"}} Analysis results:
Workflow Command Template
<!-- description: Execute {{workflow}} workflow --> # /{{workflow}} Starting {{workflow}} workflow... Step 1: {{step1_description}} {{step1_action}} Step 2: {{step2_description}} {{step2_action}} Workflow complete!
Integration with Skills
Commands can reference skills:
# /elixir-review I'll review this Elixir code using my Phoenix and OTP knowledge. Please provide the code to review, and I'll check for: - Phoenix best practices - OTP design patterns - Elixir anti-patterns - Performance considerations
Security Considerations
Avoid Sensitive Data
Never hardcode:
- API keys
- Passwords
- Tokens
- Private URLs
Validate Input
# /deploy {{#unless environment}} Error: --environment is required {{/unless}} {{#if (validate_environment environment)}} Proceeding with deployment... {{else}} Error: Invalid environment. Must be staging or production. {{/if}}
Safe Shell Commands
Be cautious with shell command execution:
# /safe-deploy <!-- Only allow whitelisted commands --> {{shell:./scripts/deploy.sh {{environment}}}}
References
For more information about Claude Code commands:
- Claude Code Documentation: https://code.claude.com/docs/en/commands
- Example Commands: https://github.com/anthropics/claude-code/tree/main/examples/commands