Claude-skill-registry Creating Slash Commands
Build custom slash commands in Claude Code with YAML frontmatter, permissions, and best practices. Use when creating automation workflows, project-specific commands, or standardizing repetitive tasks.
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/creating-slash-commands" ~/.claude/skills/majiayu000-claude-skill-registry-creating-slash-commands && rm -rf "$T"
manifest:
skills/data/creating-slash-commands/SKILL.mdsource content
Creating Slash Commands
Overview
Slash commands automate workflows by encapsulating multi-step processes into reusable commands. They support YAML frontmatter for permissions, can integrate with CLI tools, and enable sophisticated decision logic.
When to Use
- Automate repetitive multi-step workflows
- Standardize team processes (issue triage, PR reviews, etc.)
- Integrate external tools (GitHub CLI, git, custom scripts)
- Create project-specific automation patterns
Process
- Create command file in
.claude/commands/[name].md - Add YAML frontmatter with permissions and description
- Write command prompt with clear steps and decision logic
- Use $ARGUMENTS variable for dynamic input
- Test command with
/<command-name> [args]
Command Structure
Basic Template
# .claude/commands/my-command.md --- allowed-tools: Bash(git:*),Read,Edit description: Brief description of what this command does --- Command instructions here. Use $ARGUMENTS to reference user input. Steps: 1. First action 2. Second action 3. Final action
YAML Frontmatter Fields
: Restrict which tools the command can useallowed-tools- Examples:
,Bash(gh:*)
,Bash(git:*)
,Read
,EditWrite - Use wildcards:
allows any pytest commandBash(pytest:*)
- Examples:
: One-line summary shown in command listdescription
Permission Patterns
# Specific command only allowed-tools: Bash(gh issue view:*) # Multiple related commands allowed-tools: Bash(gh issue view:*),Bash(gh issue comment:*) # Tool categories allowed-tools: Read,Edit,Grep,Glob # Combined patterns allowed-tools: Bash(git:*),Bash(gh:*),Read,Write
Reference Example: Issue Triage Command
This project's
/plan-issue demonstrates sophisticated automation:
# .claude/commands/plan-issue.md --- allowed-tools: Bash(gh issue view:*),Bash(gh issue comment:*) description: Respond to a github issue with a plan of action --- You are an expert software developer and project manager. Respond to GitHub issue $ARGUMENTS with a detailed plan. Steps: 1. Fetch issue: `gh issue view <issue-number>` 2. Analyze description and comments 3. Comment you're working on a plan: `gh issue comment <issue-number> --body "<your-comment>"` 4. Review codebase for context 5. Assess clarity: Need more info? - Yes: Comment clarifying questions, stop and wait - No: Proceed to step 6 6. Break down into smaller tasks 7. Comment detailed plan: `gh issue comment <issue-number> --body "<your-plan>"` with: - Issue summary - Resolution steps - Dependencies and considerations
Key strengths:
- Specific tool permissions (only issue view/comment)
- Multi-step workflow with decision branching
- GitHub CLI integration
- Context-aware (reads codebase before planning)
- Conditional logic (asks questions when unclear)
Best Practices
Permissions
- ✅ Do: Use specific tool permissions to limit scope
- ✅ Do: Use wildcards for command families (
)Bash(git:*) - ❌ Don't: Grant broad permissions without reason
Command Design
- ✅ Do: Include decision logic for complex workflows
- ✅ Do: Read relevant context before taking action
- ✅ Do: Use CLI tool integration (gh, git, etc.)
- ❌ Don't: Assume context without verification
- ❌ Don't: Skip validation steps
Structure
- ✅ Do: Number steps clearly
- ✅ Do: Use $ARGUMENTS for user input
- ✅ Do: Include clear success criteria
- ❌ Don't: Write vague instructions
- ❌ Don't: Omit error handling guidance
Integration Patterns
With Skills
Reference skill files in commands:
--- description: Review code using TDD skill --- 1. Read skill: .claude/skills/testing/test-driven-development.md 2. Apply skill to files: $ARGUMENTS 3. Report findings
With GitHub CLI
--- allowed-tools: Bash(gh:*) --- 1. Fetch PR: `gh pr view $ARGUMENTS` 2. Get diff: `gh pr diff $ARGUMENTS` 3. Review and comment
With Git
--- allowed-tools: Bash(git:*) --- 1. Check status: `git status` 2. Stage changes: `git add $ARGUMENTS` 3. Commit with message
Common Use Cases
Workflow Automation
- Issue triage and planning
- PR review orchestration
- Release preparation
- Testing workflows
Code Operations
- Batch refactoring
- Migration scripts
- Code generation
- Style enforcement
Project Management
- Status reporting
- Documentation generation
- Dependency updates
- Configuration management
Anti-patterns
-
❌ Don't: Create commands for single-step tasks
- ✅ Do: Reserve commands for multi-step workflows
-
❌ Don't: Grant unlimited tool access
- ✅ Do: Use specific allowed-tools restrictions
-
❌ Don't: Skip context gathering
- ✅ Do: Read relevant files before action
-
❌ Don't: Write commands without decision logic
- ✅ Do: Include conditional workflows for edge cases
-
❌ Don't: Ignore error scenarios
- ✅ Do: Specify what to do when things fail
Resources
- Official Docs: https://docs.claude.com/en/docs/claude-code/slash-commands
- Settings Reference: https://docs.claude.com/en/docs/claude-code/settings
- Permissions Guide: https://docs.claude.com/en/docs/claude-code/iam