541 lines
12 KiB
Markdown
541 lines
12 KiB
Markdown
---
|
|
description: Brief description of what this command does (shown in /help)
|
|
allowed-tools: Bash(git status:*), Bash(git add:*), Read(*)
|
|
# Optional: Explicitly declare which tools this command needs
|
|
# Format: Tool(pattern:*) or Tool(*)
|
|
# Examples:
|
|
# - Bash(git *:*) - Allow all git commands
|
|
# - Read(*), Glob(*) - Allow file reading and searching
|
|
# - Write(*), Edit(*) - Allow file modifications
|
|
|
|
argument-hint: [optional-parameter]
|
|
# Optional: Hint text showing expected arguments
|
|
# Appears in command autocompletion and help
|
|
# Examples: [file-path], [branch-name], [message]
|
|
|
|
disable-model-invocation: false
|
|
# Optional: Set to true if this is a simple prompt that doesn't need AI processing
|
|
# Use for commands that just display text or run simple scripts
|
|
---
|
|
|
|
# Command Template
|
|
|
|
Clear, concise instructions for Claude on what to do when this command is invoked.
|
|
|
|
## Technology Adaptation
|
|
|
|
**IMPORTANT**: This command adapts to the project's technology stack.
|
|
|
|
**Configuration Source**: [CLAUDE.md](../../CLAUDE.md)
|
|
|
|
Before executing, consult CLAUDE.md for:
|
|
- **Package Manager**: (npm, NuGet, pip, cargo, Maven) - Use correct install/test/build commands
|
|
- **Build Tool**: (dotnet, npm scripts, make, cargo) - Use correct build commands
|
|
- **Test Framework**: (xUnit, Jest, pytest, JUnit) - Use correct test commands
|
|
- **Language**: (C#, TypeScript, Python, Rust, Java) - Follow syntax conventions
|
|
- **Project Structure**: Navigate to correct paths for src, tests, config
|
|
|
|
## MCP Server Integration
|
|
|
|
**Available MCP Servers**: Leverage configured MCP servers for enhanced capabilities.
|
|
|
|
### Serena MCP
|
|
|
|
**Code Tools**: `find_symbol`, `find_referencing_symbols`, `get_symbols_overview`, `search_for_pattern`, `rename_symbol`
|
|
|
|
**Persistent Memory** (stored in `.serena/memories/`):
|
|
- `write_memory` - Store command findings, patterns, decisions
|
|
- `read_memory` - Recall past information
|
|
- `list_memories` - Browse all memories
|
|
|
|
Use for command-specific persistent knowledge.
|
|
|
|
### Memory MCP
|
|
|
|
**Temporary Context** (in-memory, cleared after session):
|
|
- `create_entities` - Track entities during command execution
|
|
- `create_relations` - Model relationships
|
|
- `add_observations` - Add details
|
|
|
|
Use for temporary command state.
|
|
|
|
### Other MCP Servers
|
|
- **context7**: Library documentation
|
|
- **fetch**: Web content
|
|
- **playwright**: Browser automation
|
|
- **windows-mcp**: Windows automation
|
|
|
|
## Arguments
|
|
|
|
If your command accepts arguments, explain how to use them:
|
|
|
|
**$ARGUMENTS** - All arguments passed to the command as a single string
|
|
**$1** - First positional argument
|
|
**$2** - Second positional argument
|
|
**$3** - Third positional argument, etc.
|
|
|
|
### Example Usage:
|
|
|
|
```
|
|
/command-name argument1 argument2 argument3
|
|
```
|
|
|
|
In the command file:
|
|
- `$ARGUMENTS` would be: "argument1 argument2 argument3"
|
|
- `$1` would be: "argument1"
|
|
- `$2` would be: "argument2"
|
|
- `$3` would be: "argument3"
|
|
|
|
## Instructions
|
|
|
|
Provide clear, step-by-step instructions for Claude:
|
|
|
|
1. **First step**: What to do first
|
|
- Specific action or tool to use
|
|
- Expected behavior
|
|
|
|
2. **Second step**: Next action
|
|
- How to process information
|
|
- What to check or validate
|
|
|
|
3. **Final step**: Output or result
|
|
- Format for results
|
|
- What to return to the user
|
|
|
|
## Expected Output
|
|
|
|
Describe the format and structure of the command's output:
|
|
|
|
```markdown
|
|
## Section Title
|
|
- Item 1
|
|
- Item 2
|
|
|
|
**Summary**: Key findings...
|
|
```
|
|
|
|
Or for code output:
|
|
```language
|
|
// Expected code format
|
|
output_example();
|
|
```
|
|
|
|
## Advanced Features
|
|
|
|
### Bash Execution
|
|
|
|
Execute shell commands directly:
|
|
|
|
```markdown
|
|
!ls -la
|
|
!git status
|
|
!npm test
|
|
```
|
|
|
|
Prefix commands with `!` to run them immediately.
|
|
|
|
### File References
|
|
|
|
Include file contents in the prompt:
|
|
|
|
```markdown
|
|
Review this file: @path/to/file.js
|
|
Compare these files: @file1.py @file2.py
|
|
```
|
|
|
|
Use `@` prefix to automatically include file contents.
|
|
|
|
### Conditional Logic
|
|
|
|
Add conditional instructions:
|
|
|
|
```markdown
|
|
If $1 is "quick":
|
|
- Run fast analysis only
|
|
- Skip detailed checks
|
|
|
|
If $1 is "full":
|
|
- Run comprehensive analysis
|
|
- Include all checks
|
|
- Generate detailed report
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Example 1: Basic Usage
|
|
```
|
|
/command-name
|
|
```
|
|
**Expected behavior**: Description of what happens
|
|
|
|
### Example 2: With Arguments
|
|
```
|
|
/command-name src/app.js detailed
|
|
```
|
|
**Expected behavior**: How arguments affect behavior
|
|
|
|
### Example 3: Advanced Usage
|
|
```
|
|
/command-name @file.js --option
|
|
```
|
|
**Expected behavior**: Combined features
|
|
|
|
## Best Practices
|
|
|
|
### When to Use This Command
|
|
- Scenario 1: When you need...
|
|
- Scenario 2: For tasks involving...
|
|
- Scenario 3: To quickly...
|
|
|
|
### Common Patterns
|
|
|
|
**Read then analyze:**
|
|
```markdown
|
|
1. Read the files in $ARGUMENTS
|
|
2. Analyze for [specific criteria]
|
|
3. Provide structured feedback
|
|
```
|
|
|
|
**Execute then report:**
|
|
```markdown
|
|
1. Run: !command $1
|
|
2. Parse the output
|
|
3. Summarize results
|
|
```
|
|
|
|
**Generate then write:**
|
|
```markdown
|
|
1. Generate [content type] based on $1
|
|
2. Write to specified location
|
|
3. Confirm completion
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
Handle common issues gracefully:
|
|
|
|
```markdown
|
|
If no arguments provided:
|
|
- Show usage example
|
|
- Ask user for required input
|
|
|
|
If file not found:
|
|
- List similar files
|
|
- Suggest corrections
|
|
|
|
If operation fails:
|
|
- Explain the error
|
|
- Suggest next steps
|
|
```
|
|
|
|
## Integration with Other Features
|
|
|
|
### Works well with:
|
|
- **Hooks**: Can trigger pre/post command hooks
|
|
- **Subagents**: Can invoke specialized agents
|
|
- **Skills**: Commands can activate relevant skills
|
|
- **MCP Servers**: Can use MCP tools and resources
|
|
|
|
### Combine with tools:
|
|
```markdown
|
|
Use Read tool to load $1
|
|
Use Grep to search for $2
|
|
Use Edit to update findings
|
|
```
|
|
|
|
## Notes and Tips
|
|
|
|
- Keep commands focused on a single task
|
|
- Use descriptive names (verb-noun pattern)
|
|
- Document all arguments clearly
|
|
- Provide helpful examples
|
|
- Consider error cases
|
|
- Test with team members
|
|
|
|
---
|
|
|
|
## Template Usage Guidelines
|
|
|
|
### Naming Commands
|
|
|
|
**Good names** (verb-noun pattern):
|
|
- `/review-pr` - Review pull request
|
|
- `/generate-tests` - Generate unit tests
|
|
- `/check-types` - Check TypeScript types
|
|
- `/update-deps` - Update dependencies
|
|
|
|
**Poor names**:
|
|
- `/fix` - Too vague
|
|
- `/test` - Conflicts with built-in
|
|
- `/help` - Reserved
|
|
- `/my-command-that-does-many-things` - Too long
|
|
|
|
### Writing Descriptions
|
|
|
|
The `description` field appears in `/help` output:
|
|
|
|
**Good descriptions**:
|
|
```yaml
|
|
description: Review pull request for code quality and best practices
|
|
description: Generate unit tests for specified file or module
|
|
description: Update package dependencies and check for breaking changes
|
|
```
|
|
|
|
**Poor descriptions**:
|
|
```yaml
|
|
description: Does stuff
|
|
description: Helper command
|
|
description: Command
|
|
```
|
|
|
|
### Choosing Tool Permissions
|
|
|
|
Explicitly declare tools your command needs:
|
|
|
|
```yaml
|
|
# Read-only command
|
|
allowed-tools: Read(*), Grep(*), Glob(*)
|
|
|
|
# Git operations
|
|
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*)
|
|
|
|
# File modifications
|
|
allowed-tools: Read(*), Edit(*), Write(*), Bash(npm test:*)
|
|
|
|
# Comprehensive access
|
|
allowed-tools: Bash(*), Read(*), Write(*), Edit(*), Grep(*), Glob(*)
|
|
```
|
|
|
|
**Pattern syntax**:
|
|
- `Tool(*)` - All operations
|
|
- `Tool(pattern:*)` - Specific operation (e.g., `Bash(git status:*)`)
|
|
- `Tool(*pattern*)` - Contains pattern
|
|
|
|
### Using Arguments Effectively
|
|
|
|
**Simple single argument**:
|
|
```yaml
|
|
argument-hint: [file-path]
|
|
```
|
|
```markdown
|
|
Analyze the file: $ARGUMENTS
|
|
```
|
|
|
|
**Multiple arguments**:
|
|
```yaml
|
|
argument-hint: [source] [target]
|
|
```
|
|
```markdown
|
|
Compare $1 to $2 and identify differences.
|
|
```
|
|
|
|
**Optional arguments**:
|
|
```markdown
|
|
If $1 is provided:
|
|
- Use $1 as the target
|
|
Otherwise:
|
|
- Use current directory
|
|
```
|
|
|
|
### Command Categories
|
|
|
|
Organize related commands in subdirectories:
|
|
|
|
```
|
|
.claude/commands/
|
|
├── COMMANDS_TEMPLATE.md
|
|
├── git/
|
|
│ ├── commit.md
|
|
│ ├── review-pr.md
|
|
│ └── sync.md
|
|
├── testing/
|
|
│ ├── run-tests.md
|
|
│ ├── generate-tests.md
|
|
│ └── coverage.md
|
|
└── docs/
|
|
├── generate-readme.md
|
|
└── update-api-docs.md
|
|
```
|
|
|
|
Invoke with: `/git/commit`, `/testing/run-tests`, etc.
|
|
|
|
### Combining with Bash Execution
|
|
|
|
Execute shell commands inline:
|
|
|
|
```markdown
|
|
First, check the current branch:
|
|
!git branch --show-current
|
|
|
|
Then check for uncommitted changes:
|
|
!git status --short
|
|
|
|
If there are changes, show them:
|
|
!git diff
|
|
```
|
|
|
|
### Combining with File References
|
|
|
|
Include file contents automatically:
|
|
|
|
```markdown
|
|
Review the implementation in @$1 and suggest improvements.
|
|
|
|
Compare the old version @$1 with the new version @$2.
|
|
|
|
Analyze these related files:
|
|
@src/main.js
|
|
@src/utils.js
|
|
@tests/main.test.js
|
|
```
|
|
|
|
### Model Selection Strategy
|
|
|
|
Choose the right model for the task:
|
|
|
|
```yaml
|
|
# For complex reasoning and code generation (default)
|
|
model: claude-3-5-sonnet-20241022
|
|
|
|
# For fast, simple tasks (commit messages, formatting)
|
|
model: claude-3-5-haiku-20241022
|
|
|
|
# For most complex tasks (architecture, security reviews)
|
|
model: claude-opus-4-20250514
|
|
```
|
|
|
|
### Disabling Model Invocation
|
|
|
|
For simple text commands that don't need AI:
|
|
|
|
```yaml
|
|
---
|
|
description: Show project documentation
|
|
disable-model-invocation: true
|
|
---
|
|
|
|
# Project Documentation
|
|
|
|
Visit: https://github.com/org/repo
|
|
|
|
## Quick Links
|
|
- [Setup Guide](docs/setup.md)
|
|
- [API Reference](docs/api.md)
|
|
- [Contributing](CONTRIBUTING.md)
|
|
```
|
|
|
|
## Command vs Skill: When to Use What
|
|
|
|
### Use a **Command** when:
|
|
- ✅ User needs to explicitly trigger the action
|
|
- ✅ It's a specific workflow or routine task
|
|
- ✅ You want predictable, on-demand behavior
|
|
- ✅ Examples: `/review-pr`, `/generate-tests`, `/commit`
|
|
|
|
### Use a **Skill** when:
|
|
- ✅ Claude should automatically use it when relevant
|
|
- ✅ It's specialized knowledge or expertise
|
|
- ✅ You want Claude to discover it based on context
|
|
- ✅ Examples: PDF processing, Excel analysis, specific frameworks
|
|
|
|
### Can be **Both**:
|
|
Create a command that explicitly invokes a skill:
|
|
```markdown
|
|
---
|
|
description: Perform comprehensive code review
|
|
---
|
|
|
|
Activate the Code Review skill and analyze $ARGUMENTS for:
|
|
- Code quality
|
|
- Best practices
|
|
- Security issues
|
|
- Performance opportunities
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Your Command
|
|
|
|
### 1. Basic Functionality
|
|
```
|
|
/command-name
|
|
```
|
|
Verify it executes without errors.
|
|
|
|
### 2. With Arguments
|
|
```
|
|
/command-name arg1 arg2
|
|
```
|
|
Check argument handling works correctly.
|
|
|
|
### 3. Edge Cases
|
|
```
|
|
/command-name
|
|
/command-name ""
|
|
/command-name with many arguments here
|
|
```
|
|
|
|
### 4. Tool Permissions
|
|
Verify declared tools work without extra permission prompts.
|
|
|
|
### 5. Team Testing
|
|
Have colleagues try the command and provide feedback.
|
|
|
|
---
|
|
|
|
## Quick Reference Card
|
|
|
|
| Element | Purpose | Required |
|
|
|---------|---------|----------|
|
|
| `description` | Shows in /help | ✅ Recommended |
|
|
| `allowed-tools` | Pre-approve tools | ❌ Optional |
|
|
| `argument-hint` | Show expected args | ❌ Optional |
|
|
| `model` | Specify model | ❌ Optional |
|
|
| `disable-model-invocation` | Skip AI for static text | ❌ Optional |
|
|
| Instructions | What to do | ✅ Yes |
|
|
| Examples | Usage demos | ✅ Recommended |
|
|
| Error handling | Handle failures | ✅ Recommended |
|
|
|
|
---
|
|
|
|
## Common Command Patterns
|
|
|
|
### 1. Read-Analyze-Report
|
|
```markdown
|
|
1. Read files specified in $ARGUMENTS
|
|
2. Analyze for [criteria]
|
|
3. Generate structured report
|
|
```
|
|
|
|
### 2. Execute-Parse-Summarize
|
|
```markdown
|
|
1. Run: !command $1
|
|
2. Parse the output
|
|
3. Summarize findings
|
|
```
|
|
|
|
### 3. Generate-Validate-Write
|
|
```markdown
|
|
1. Generate [content] based on $1
|
|
2. Validate against [rules]
|
|
3. Write to $2 or default location
|
|
```
|
|
|
|
### 4. Compare-Diff-Suggest
|
|
```markdown
|
|
1. Load both $1 and $2
|
|
2. Compare differences
|
|
3. Suggest improvements or migrations
|
|
```
|
|
|
|
### 5. Check-Fix-Verify
|
|
```markdown
|
|
1. Check for [issues] in $ARGUMENTS
|
|
2. Apply fixes automatically
|
|
3. Verify corrections worked
|
|
```
|
|
|
|
---
|
|
|
|
**Pro tip**: Start with simple commands and gradually add complexity. Test each feature before adding the next. Share with your team early for feedback.
|