home / skills / philoserf / claude-code-setup / command-authoring
/skills/command-authoring
npx playbooks add skill philoserf/claude-code-setup --skill command-authoringReview the files below or copy the command above to add this skill to your agents.
---
name: command-authoring
description: Guide for authoring slash commands. Use when creating, building, reviewing, or improving commands, learning command best practices, or deciding when to use commands vs skills.
allowed-tools:
- Read
- Grep
- Glob
- Bash
- AskUserQuestion
# model: inherit
---
## Reference Files
Detailed command authoring guidance:
- [command-design-patterns.md](command-design-patterns.md) - Four design patterns with complete examples and when to use each
- [command-creation-process.md](command-creation-process.md) - Step-by-step command creation workflow (7 steps)
- [command-examples.md](command-examples.md) - Real command examples with analysis and best practices
---
## About Commands
Commands are user-invoked shortcuts that provide explicit control over when capabilities are used. They're typed as `/command-name`.
**Key characteristics**:
- **User-invoked** - Typed explicitly as `/command-name` (not auto-triggered)
- **Simple** - Focused instructions or actions rather than complex logic
- **Focused** - Single, clear purpose
- **Explicit** - User controls timing of invocation
- **Discoverable** - Shown in `/help` output
**When to use commands**:
- User wants explicit shortcut for frequent task
- Simple, focused instructions
- User should control timing
- Convenience wrapper for common operations
## Core Philosophy
### Commands Should Be Simple
**Golden rule**: Commands provide focused instructions, they don't implement complex logic.
**Good command** (simple and focused):
```markdown
---
description: Run comprehensive code quality checks
---
# check-quality
Run linting, type checking, and tests on the codebase.
!npm run lint && npm run type-check && npm test
```
**Bad command** (complex logic):
```markdown
# bad-example
# DON'T DO THIS - complex logic in command
First analyze all files, then determine which linters to run, then parse results,
then generate a custom report format, then send notifications...
[50 lines of implementation details]
```
**Why keep it simple**:
- Easier to maintain
- Clear purpose
- Less prone to errors
- Follows single responsibility principle
### Commands Are Explicit
Unlike skills (which auto-trigger), commands require user action.
**Use commands when**:
- User wants control over timing
- Action shouldn't happen automatically
- Frequently-used prompt that deserves shortcut
- Explicit workflow trigger
**Use skills when**:
- Should auto-trigger based on context
- User doesn't need to remember to invoke it
- Complex domain knowledge that enhances conversation
## Command Structure
### Required Elements
Every command must have:
1. **description field** (in frontmatter) - Required for `/help` and model invocation
2. **Command name heading** (# command-name)
3. **Clear purpose** - What the command does
### Optional Elements
Depending on complexity:
- **Usage section** - How to invoke, with/without arguments
- **What It Does** - Detailed explanation
- **Examples** - Sample invocations
- **Use Cases** - When to use the command
- **Output** - What to expect
### Two Patterns
**Pattern 1: Simple Command** (6-10 lines)
- Just frontmatter + brief description
- Minimal documentation
- Clear, focused instructions
**Pattern 2: Documented Command** (30-80 lines)
- Full usage instructions
- Examples and use cases
- Detailed explanation of what happens
- What It Does section
**Choose based on**:
- Complexity of the operation
- Whether arguments need explanation
- How often users will reference it
See [command-design-patterns.md](command-design-patterns.md) for detailed design patterns and examples.
See [command-creation-process.md](command-creation-process.md) for step-by-step creation workflow.
## Commands vs Skills Decision Guide
**📄 See [when-to-use-what.md](../../references/when-to-use-what.md) for complete decision guide including agents and output-styles (shared)**
**Quick guide**:
**Use a Command when**:
- User wants explicit control over timing
- Action should be deliberate, not automatic
- Frequently-used prompt deserves shortcut
- User-initiated workflow
- Simple wrapper around agent/skill
**Use a Skill when**:
- AI should auto-discover capability
- Complex domain knowledge
- Should trigger on user queries automatically
- Needs progressive disclosure with references/
- Automatic workflow assistance
## Common Mistakes to Avoid
1. **Complex logic in command** - Commands should provide focused instructions, not implement complex workflows
2. **Missing description** - Frontmatter description is required
3. **Unclear purpose** - Command should have single, clear focus
4. **Vague purpose** - Be specific about what the command does
5. **Too many arguments** - Keep it simple, 0-2 args typically
6. **Not testing with /help** - Verify command appears correctly
7. **Poor naming** - Use descriptive, action-oriented names
See [command-examples.md](command-examples.md) for complete examples with analysis.
## Tips for Success
1. **Keep commands under 50 lines** unless truly necessary
2. **Stay focused** - one clear purpose per command
3. **Test with `/help`** to verify display
4. **Use descriptive names** - action verbs work well
5. **Make purpose immediately clear** - no guessing
6. **Optional arguments are better** - provide defaults
7. **Start simple** - can always add documentation later
## Related Skills
This skill is part of the authoring skill family:
- **author-agent** - Guide for creating agents
- **author-skill** - Guide for creating skills
- **author-command** - Guide for creating commands (this skill)
- **author-output-style** - Guide for creating output styles
For validation, use the corresponding audit skills:
- **audit-command** - Validate command configurations
- **audit-coordinator** - Comprehensive multi-faceted audits
## Quick Start Checklist
Creating a new command:
- [ ] Identify the purpose and operation
- [ ] Choose descriptive name (kebab-case)
- [ ] Write clear description (50-150 chars)
- [ ] Decide: simple (6-10 lines) or documented (30-80 lines)?
- [ ] Create file at `~/.claude/commands/command-name.md`
- [ ] Add required frontmatter with description
- [ ] Write focused instructions
- [ ] Test with `/help` and invocation
- [ ] Verify arguments work correctly (if any)
## Reference to Standards
For detailed standards and validation:
- **Naming conventions** - Use kebab-case for command names
- **Frontmatter requirements** - description field is required
- **File organization** - `~/.claude/commands/command-name.md`
See `audit-coordinator` skill for comprehensive standards.