| name | command-optimization |
| description | CLI command development specialist. Use when creating commands, designing argument parsing, automating tasks, or implementing CLI best practices. Specializes in command design patterns and user experience. |
| author | Joseph OBrien |
| status | unpublished |
| updated | 2025-12-23 |
| version | 1.0.1 |
| tag | skill |
| type | skill |
Command Optimization
This skill specializes in creating, designing, and optimizing command-line interfaces. It focuses on command design patterns, argument parsing, task automation, and CLI best practices.
When to Use This Skill
- When creating new CLI commands
- When designing command interfaces
- When optimizing existing commands
- When implementing argument parsing
- When automating tasks via CLI
- When improving command user experience
What This Skill Does
- Command Design: Creates well-structured CLI commands
- Argument Parsing: Designs intuitive argument and option structures
- Task Automation: Automates repetitive tasks through commands
- User Experience: Improves command usability and feedback
- Error Handling: Implements robust error handling and validation
- Documentation: Creates clear command documentation and help text
How to Use
Create Command
Create a command to generate React components
Design a CLI command for database migrations
Optimize Command
Improve the user experience of this command
Command Design Patterns
Task-Oriented Commands
Structure:
- Clear action verb (generate, create, build)
- Target object (component, migration, test)
- Options for customization
- Helpful output and feedback
Example:
# Good: Clear and actionable
npm run generate:component UserProfile
# Bad: Unclear purpose
npm run make UserProfile
Analysis Commands
Structure:
- Analysis type (analyze, check, audit)
- Target to analyze
- Output format options
- Actionable recommendations
Example:
# Good: Clear analysis command
npm run analyze:dependencies -- --outdated
# Bad: Vague command
npm run check
Argument Handling
File/Directory Arguments
Pattern:
- Accept single file or directory
- Support glob patterns
- Validate existence
- Handle permissions
Example:
# Single file
lint src/utils.js
# Directory
lint src/
# Glob pattern
lint "src/**/*.js"
Configuration Options
Common Options:
--config: Custom configuration file--output: Output directory or format--verbose: Detailed logging--dry-run: Preview without execution--force: Override safety checks
Error Handling
Input Validation
Check:
- File/directory existence
- Read/write permissions
- File format validity
- Required dependencies
- Configuration syntax
Error Messages
Good Error Messages:
- Clear description of the problem
- Specific location (file, line)
- Suggested fix
- Context about why it failed
Example:
# Good
Error: Configuration file not found: .eslintrc.json
Run 'npm run init:config' to create it.
# Bad
Error: File not found
Examples
Example 1: Component Generator Command
Input: Create a command to generate React components
Output:
## Command: generate:component
### Usage
```bash
npm run generate:component ComponentName [options]
Options
--path <path>: Output path (default: src/components)--type <type>: Component type (functional|class) (default: functional)--with-tests: Generate test file--with-styles: Generate stylesheet
Examples
# Basic component
npm run generate:component UserCard
# With options
npm run generate:component UserCard --path src/features/users --with-tests --with-styles
Implementation
// scripts/generate-component.js
const componentName = process.argv[2];
const options = parseArgs(process.argv.slice(3));
if (!componentName) {
console.error('Error: Component name required');
console.log('Usage: npm run generate:component <Name>');
process.exit(1);
}
generateComponent(componentName, options);
Example 2: Database Migration Command
Input: Create a database migration command
Output:
## Command: db:migrate
### Usage
```bash
npm run db:migrate [migration-name] [options]
Options
--create <table>: Create new migration for table--rollback: Rollback last migration--status: Show migration status--to <version>: Migrate to specific version
Examples
# Create migration
npm run db:migrate --create users
# Run migrations
npm run db:migrate
# Check status
npm run db:migrate --status
# Rollback
npm run db:migrate --rollback
## Reference Files
- **`references/SLASH_COMMAND.template.md`** - Slash command template with frontmatter, dynamic context, and workflow structure
## Best Practices
### Command Design
1. **Clear Names**: Use descriptive, action-oriented names
2. **Consistent Patterns**: Follow project conventions
3. **Helpful Defaults**: Sensible defaults for common use cases
4. **Good Feedback**: Clear output and progress indicators
5. **Error Handling**: Graceful failure with helpful messages
### User Experience
- **Progressive Disclosure**: Show basic usage, advanced options in help
- **Validation**: Validate inputs early with clear errors
- **Confirmation**: Ask for confirmation on destructive operations
- **Dry Run**: Support --dry-run for preview
- **Verbose Mode**: --verbose for detailed output
### Documentation
- **Help Text**: Clear, concise help for each command
- **Examples**: Include practical examples
- **Error Messages**: Explain what went wrong and how to fix
- **README**: Document commands in project README
## Related Use Cases
- Creating project-specific commands
- Automating development tasks
- Building CLI tools
- Improving command usability
- Standardizing command patterns