claude-commands
This skill contains shell command directives (!`command`) that may execute system commands. Review carefully before installing.
Claude Command Authoring
Create custom slash commands that extend Claude Code with reusable prompts and workflows.
Commands vs Skills
Critical distinction:
| Aspect | Commands (This Skill) | Skills |
|---|---|---|
| Purpose | Reusable prompts invoked by users | Capability packages auto-triggered |
| Invocation | Explicit: /command-name args |
Automatic (model-triggered by context) |
| Location | commands/ directory |
skills/ directory with SKILL.md |
| Structure | Single .md file |
Directory with resources |
| Arguments | $1, $2, $ARGUMENTS |
No argument system |
Commands are user-initiated. Skills are model-initiated.
Quick Start
Basic Command
Create .claude/commands/review.md:
---
description: Review code for best practices and issues
---
Review the following code for:
- Code quality and readability
- Potential bugs or edge cases
- Performance considerations
- Security concerns
Use with: /review
Command with Arguments
Create .claude/commands/fix-issue.md:
---
description: Fix a specific GitHub issue
argument-hint: <issue-number>
---
Fix issue #$1 following our coding standards.
Review the issue, implement a fix, add tests, and create a commit.
Use with: /fix-issue 123
Command with Context
Create .claude/commands/commit.md:
---
description: Create git commit from staged changes
allowed-tools: Bash(git *)
---
## Context
<!-- NOTE: Place "!" before the opening backtick for preprocessing to work -->
Current branch: `git branch --show-current`
Staged changes: `git diff --staged`
Recent commits: `git log --oneline -5`
## Task
Create a commit with a clear message based on the staged changes.
Use with: /commit
Workflow Overview
- Discovery - Define purpose, scope, and target users
- Design - Choose features and configuration
- Implementation - Write frontmatter and content
- Validation - Verify against quality standards
Stage 1: Discovery
Before writing code, clarify:
- Purpose: What task does this command automate?
- Scope: Project-specific or personal workflow?
- Arguments: What inputs does it need?
- Tools: What operations will it perform?
Key questions:
- Will this be shared with the team (project) or personal use?
- Does it require bash execution or file references?
- Should tool access be restricted for safety?
Stage 2: Design
Command Scopes
| Scope | Location | Visibility | Use Case |
|---|---|---|---|
| Project | .claude/commands/ |
Team via git | Shared workflows |
| Personal | ~/.claude/commands/ |
You only | Individual preferences |
| Plugin | <plugin>/commands/ |
Plugin users | Distributed via marketplace |
Project commands show "(project)" in /help. Personal show "(user)".
Core Features
| Feature | Syntax | Purpose |
|---|---|---|
| Arguments | $1, $2, $ARGUMENTS |
Dynamic input from user |
| Bash execution | !backtickcommandbacktick |
Include shell output in context |
| File references | @path/to/file |
Include file contents |
| Tool restrictions | allowed-tools: |
Limit Claude's capabilities |
Frontmatter Schema
---
description: Brief description for /help # Required for discovery
argument-hint: <required> [optional] # Shown in autocomplete
allowed-tools: Read, Grep, Bash(git *) # Restrict tool access
model: claude-3-5-haiku-20241022 # Override model
disable-model-invocation: true # Prevent SlashCommand tool
---
See frontmatter.md for complete schema.
Stage 3: Implementation
File Structure
---
description: Deploy to environment with validation
argument-hint: <environment> [--skip-tests]
allowed-tools: Bash(*), Read
---
# Deployment
Target: $1
Options: $2
## Pre-flight Checks
<!-- NOTE: Place "!" before the opening backtick for preprocessing to work -->
Environment: `echo "$1" | grep -E "^(staging|production)$" || echo "Invalid"`
Tests: `[[ "$2" == *"--skip-tests"* ]] && echo "Skipped" || bun test`
## Task
Based on validation above, proceed with deployment or explain issues.
Argument Patterns
Positional arguments ($1, $2, $3):
Compare file $1 with file $2 and summarize differences.
Usage: /compare old.ts new.ts
All arguments ($ARGUMENTS):
Fix the following issues: $ARGUMENTS
Usage: /fix memory leak in auth slow query in search
Combined with file references:
Analyze this file: @$1
Usage: /analyze src/main.ts
See arguments.md for advanced patterns.
Bash Execution
Execute commands and include output. The ! must precede the opening backtick for preprocessing to work:
## Git Context
<!-- NOTE: Place "!" before the opening backtick for preprocessing to work -->
Branch: `git branch --show-current`
Status: `git status --short`
Diff: `git diff --stat`
Based on the above, suggest next steps.
Important: Output is truncated at 15,000 characters by default. Use SLASH_COMMAND_TOOL_CHAR_BUDGET to adjust.
See bash-execution.md for patterns.
File References
Include file contents directly:
Review this configuration:
- Package: @package.json
- TypeScript: @tsconfig.json
- User input: @$1
See file-references.md for details.
Tool Permissions
Restrict what Claude can do:
# Read-only analysis
allowed-tools: Read, Grep, Glob
# Git operations only
allowed-tools: Bash(git *), Read
# Full bash with restrictions
allowed-tools: Bash(bun *), Bash(npm *), Read, Write, Edit
See permissions.md for patterns.
Stage 4: Validation
After creating a command, validate against these checklists.
Frontmatter Checks
- Opens with
---on line 1, closes with--- -
descriptionpresent and action-oriented -
argument-hintuses<required>and[optional]syntax -
allowed-toolsuses correct names (case-sensitive) - Uses spaces (not tabs) for indentation
Naming Conventions
- Kebab-case filename:
my-command.md - No spaces or special characters
- Action-oriented: verb-noun pattern preferred
- Concise: 1-3 words
Good: review-pr.md, deploy-staging.md, fix-issue.md
Bad: my command.md, DoStuff.md, helper.md
Description Quality
- Action-oriented (starts with verb)
- Specific about what it does
- Under 80 characters
- Helpful for
/helpdiscovery
Good: "Deploy to staging with health checks and Slack notification" Bad: "Deploy stuff" or "Helps with deployment"
Content Quality
- Clear instructions for Claude
- Proper argument handling if used
- Bash commands validated (test in terminal first)
- File paths relative to project root
- Error handling for edge cases
Validation Report Format
# Command Validation: [command-name]
## Summary
- **Status**: PASS | FAIL | WARNINGS
- **Location**: [path]
- **Issues**: [count]
## Critical Issues (must fix)
1. [Issue with fix]
## Warnings (should fix)
1. [Issue with fix]
## Strengths
- [What's done well]
Namespacing
Organize commands in subdirectories:
.claude/commands/
+-- frontend/
| +-- component.md # /component (project:frontend)
| +-- styling.md # /styling (project:frontend)
+-- backend/
| +-- migration.md # /migration (project:backend)
+-- review.md # /review (project)
The namespace appears in /help but commands are invoked without prefix: /component or /frontend/component.
See namespacing.md for organization patterns.
Testing Commands
- Create the command file
- Verify with
/help- should see your command listed - Test basic invocation:
/your-command - Test with arguments:
/your-command arg1 arg2 - Verify tool restrictions if using
allowed-tools
Debug Mode
claude --debug
Shows command loading and execution details.
Troubleshooting
Command Not Found
- Verify file location:
.claude/commands/name.md - Check filename: lowercase,
.mdextension, no spaces - Restart Claude Code or use
/clear
Arguments Not Working
- Use
$1,$2not{1},{2} - Use
$ARGUMENTSfor all arguments - Quote arguments with spaces:
/cmd "arg with spaces"
Bash Commands Failing
- Use
!before backticks:!`command` - Test command in terminal first
- Check output length (15k char limit)
- Verify
allowed-toolsincludesBash
Tool Restrictions Not Applied
- Check YAML syntax (no tabs, proper quoting)
- Tool names are case-sensitive:
Readnotread - Use wildcards for bash:
Bash(git *)
References
| Reference | Content |
|---|---|
| frontmatter.md | Complete frontmatter schema and fields |
| arguments.md | Argument handling and patterns |
| bash-execution.md | Shell command execution |
| file-references.md | File inclusion syntax |
| permissions.md | Tool restriction patterns |
| namespacing.md | Directory organization |
| sdk-integration.md | Agent SDK usage |
| community.md | Community examples and resources |
See EXAMPLES.md for complete real-world examples.
See scripts/ for scaffolding and validation utilities.
Related Skills
- claude-hook-authoring: Add automation triggers to command workflows
- claude-plugin-development: Bundle commands into distributable plugins
- claude-code-configuration: Configure Claude Code settings globally
More from outfitter-dev/agents
graphite-stacks
This skill should be used when the user asks to "create a stack", "submit stacked PRs", "gt submit", "gt create", "reorganize branches", "fix stack corruption", or mentions Graphite, stacked PRs, gt commands, or trunk-based development workflows.
76code-review
This skill should be used when reviewing code before commit, conducting quality gates, or when "review", "fresh eyes", "pre-commit review", or "quality gate" are mentioned.
34hono-dev
This skill should be used when building APIs with Hono, using hc client, implementing OpenAPI, or when "Hono", "RPC", or "type-safe API" are mentioned.
28software-craft
This skill should be used when making design decisions, evaluating trade-offs, assessing code quality, or when "engineering judgment" or "code quality" are mentioned.
28subagents
This skill should be used when coordinating agents, delegating tasks to specialists, or when "dispatch agents", "which agent", or "multi-agent" are mentioned.
25context-management
Manage context window, survive compaction, persist state. Use when planning long tasks, coordinating agents, approaching context limits, or when "context", "compaction", "tasks", or "persist state" are mentioned.
24