# Command Development Skill Comprehensive guidance on creating Claude Code slash commands, including file format, frontmatter options, dynamic arguments, and best practices. ## Overview This skill provides knowledge about: - Slash command file format and structure - YAML frontmatter configuration fields - Dynamic arguments ($ARGUMENTS, $1, $2, etc.) - File references with @ syntax - Bash execution with !` syntax - Command organization and namespacing - Best practices for command development - Plugin-specific features (${CLAUDE_PLUGIN_ROOT}, plugin patterns) - Integration with plugin components (agents, skills, hooks) - Validation patterns and error handling ## Skill Structure ### SKILL.md (~2,470 words) Core skill content covering: **Fundamentals:** - Command basics and locations - File format (Markdown with optional frontmatter) - YAML frontmatter fields overview - Dynamic arguments ($ARGUMENTS and positional) - File references (@ syntax) - Bash execution (!` syntax) - Command organization patterns - Best practices and common patterns - Troubleshooting **Plugin-Specific:** - ${CLAUDE_PLUGIN_ROOT} environment variable - Plugin command discovery and organization - Plugin command patterns (configuration, template, multi-script) - Integration with plugin components (agents, skills, hooks) - Validation patterns (argument, file, resource, error handling) ### References Detailed documentation: - **frontmatter-reference.md**: Complete YAML frontmatter field specifications - All field descriptions with types and defaults - When to use each field - Examples and best practices - Validation and common errors - **plugin-features-reference.md**: Plugin-specific command features - Plugin command discovery and organization - ${CLAUDE_PLUGIN_ROOT} environment variable usage - Plugin command patterns (configuration, template, multi-script) - Integration with plugin agents, skills, and hooks - Validation patterns and error handling ### Examples Practical command examples: - **simple-commands.md**: 10 complete command examples - Code review commands - Testing commands - Deployment commands - Documentation generators - Git integration commands - Analysis and research commands - **plugin-commands.md**: 10 plugin-specific command examples - Simple plugin commands with scripts - Multi-script workflows - Template-based generation - Configuration-driven deployment - Agent and skill integration - Multi-component workflows - Validated input commands - Environment-aware commands ## When This Skill Triggers Claude Code activates this skill when users: - Ask to "create a slash command" or "add a command" - Need to "write a custom command" - Want to "define command arguments" - Ask about "command frontmatter" or YAML configuration - Need to "organize commands" or use namespacing - Want to create commands with file references - Ask about "bash execution in commands" - Need command development best practices ## Progressive Disclosure The skill uses progressive disclosure: 1. **SKILL.md** (~2,470 words): Core concepts, common patterns, and plugin features overview 2. **References** (~13,500 words total): Detailed specifications - frontmatter-reference.md (~1,200 words) - plugin-features-reference.md (~1,800 words) - interactive-commands.md (~2,500 words) - advanced-workflows.md (~1,700 words) - testing-strategies.md (~2,200 words) - documentation-patterns.md (~2,000 words) - marketplace-considerations.md (~2,200 words) 3. **Examples** (~6,000 words total): Complete working command examples - simple-commands.md - plugin-commands.md Claude loads references and examples as needed based on task. ## Command Basics Quick Reference ### File Format ```markdown --- description: Brief description argument-hint: [arg1] [arg2] allowed-tools: Read, Bash(git:*) --- Command prompt content with: - Arguments: $1, $2, or $ARGUMENTS - Files: @path/to/file - Bash: !`command here` ``` ### Locations - **Project**: `.claude/commands/` (shared with team) - **Personal**: `~/.claude/commands/` (your commands) - **Plugin**: `plugin-name/commands/` (plugin-specific) ### Key Features **Dynamic arguments:** - `$ARGUMENTS` - All arguments as single string - `$1`, `$2`, `$3` - Positional arguments **File references:** - `@path/to/file` - Include file contents **Bash execution:** - `!`command`` - Execute and include output ## Frontmatter Fields Quick Reference | Field | Purpose | Example | |-------|---------|---------| | `description` | Brief description for /help | `"Review code for issues"` | | `allowed-tools` | Restrict tool access | `Read, Bash(git:*)` | | `model` | Specify model | `sonnet`, `opus`, `haiku` | | `argument-hint` | Document arguments | `[pr-number] [priority]` | | `disable-model-invocation` | Manual-only command | `true` | ## Common Patterns ### Simple Review Command ```markdown --- description: Review code for issues --- Review this code for quality and potential bugs. ``` ### Command with Arguments ```markdown --- description: Deploy to environment argument-hint: [environment] [version] --- Deploy to $1 environment using version $2 ``` ### Command with File Reference ```markdown --- description: Document file argument-hint: [file-path] --- Generate documentation for @$1 ``` ### Command with Bash Execution ```markdown --- description: Show Git status allowed-tools: Bash(git:*) --- Current status: !`git status` Recent commits: !`git log --oneline -5` ``` ## Development Workflow 1. **Design command:** - Define purpose and scope - Determine required arguments - Identify needed tools 2. **Create file:** - Choose appropriate location - Create `.md` file with command name - Write basic prompt 3. **Add frontmatter:** - Start minimal (just description) - Add fields as needed (allowed-tools, etc.) - Document arguments with argument-hint 4. **Test command:** - Invoke with `/command-name` - Verify arguments work - Check bash execution - Test file references 5. **Refine:** - Improve prompt clarity - Handle edge cases - Add examples in comments - Document requirements ## Best Practices Summary 1. **Single responsibility**: One command, one clear purpose 2. **Clear descriptions**: Make discoverable in `/help` 3. **Document arguments**: Always use argument-hint 4. **Minimal tools**: Use most restrictive allowed-tools 5. **Test thoroughly**: Verify all features work 6. **Add comments**: Explain complex logic 7. **Handle errors**: Consider missing arguments/files ## Status **Completed enhancements:** - ✓ Plugin command patterns (${CLAUDE_PLUGIN_ROOT}, discovery, organization) - ✓ Integration patterns (agents, skills, hooks coordination) - ✓ Validation patterns (input, file, resource validation, error handling) **Remaining enhancements (in progress):** - Advanced workflows (multi-step command sequences) - Testing strategies (how to test commands effectively) - Documentation patterns (command documentation best practices) - Marketplace considerations (publishing and distribution) ## Maintenance To update this skill: 1. Keep SKILL.md focused on core fundamentals 2. Move detailed specifications to references/ 3. Add new examples/ for different use cases 4. Update frontmatter when new fields added 5. Ensure imperative/infinitive form throughout 6. Test examples work with current Claude Code ## Version History **v0.1.0** (2025-01-15): - Initial release with basic command fundamentals - Frontmatter field reference - 10 simple command examples - Ready for plugin-specific pattern additions