diff options
Diffstat (limited to '.agents/skills/command-development/references/documentation-patterns.md')
| -rw-r--r-- | .agents/skills/command-development/references/documentation-patterns.md | 739 |
1 files changed, 739 insertions, 0 deletions
diff --git a/.agents/skills/command-development/references/documentation-patterns.md b/.agents/skills/command-development/references/documentation-patterns.md new file mode 100644 index 0000000..3ea03ec --- /dev/null +++ b/.agents/skills/command-development/references/documentation-patterns.md @@ -0,0 +1,739 @@ +# Command Documentation Patterns + +Strategies for creating self-documenting, maintainable commands with excellent user experience. + +## Overview + +Well-documented commands are easier to use, maintain, and distribute. Documentation should be embedded in the command itself, making it immediately accessible to users and maintainers. + +## Self-Documenting Command Structure + +### Complete Command Template + +```markdown +--- +description: Clear, actionable description under 60 chars +argument-hint: [arg1] [arg2] [optional-arg] +allowed-tools: Read, Bash(git:*) +model: sonnet +--- + +<!-- +COMMAND: command-name +VERSION: 1.0.0 +AUTHOR: Team Name +LAST UPDATED: 2025-01-15 + +PURPOSE: +Detailed explanation of what this command does and why it exists. + +USAGE: + /command-name arg1 arg2 + +ARGUMENTS: + arg1: Description of first argument (required) + arg2: Description of second argument (optional, defaults to X) + +EXAMPLES: + /command-name feature-branch main + → Compares feature-branch with main + + /command-name my-branch + → Compares my-branch with current branch + +REQUIREMENTS: + - Git repository + - Branch must exist + - Permissions to read repository + +RELATED COMMANDS: + /other-command - Related functionality + /another-command - Alternative approach + +TROUBLESHOOTING: + - If branch not found: Check branch name spelling + - If permission denied: Check repository access + +CHANGELOG: + v1.0.0 (2025-01-15): Initial release + v0.9.0 (2025-01-10): Beta version +--> + +# Command Implementation + +[Command prompt content here...] + +[Explain what will happen...] + +[Guide user through steps...] + +[Provide clear output...] +``` + +### Documentation Comment Sections + +**PURPOSE**: Why the command exists +- Problem it solves +- Use cases +- When to use vs when not to use + +**USAGE**: Basic syntax +- Command invocation pattern +- Required vs optional arguments +- Default values + +**ARGUMENTS**: Detailed argument documentation +- Each argument described +- Type information +- Valid values/ranges +- Defaults + +**EXAMPLES**: Concrete usage examples +- Common use cases +- Edge cases +- Expected outputs + +**REQUIREMENTS**: Prerequisites +- Dependencies +- Permissions +- Environmental setup + +**RELATED COMMANDS**: Connections +- Similar commands +- Complementary commands +- Alternative approaches + +**TROUBLESHOOTING**: Common issues +- Known problems +- Solutions +- Workarounds + +**CHANGELOG**: Version history +- What changed when +- Breaking changes highlighted +- Migration guidance + +## In-Line Documentation Patterns + +### Commented Sections + +```markdown +--- +description: Complex multi-step command +--- + +<!-- SECTION 1: VALIDATION --> +<!-- This section checks prerequisites before proceeding --> + +Checking prerequisites... +- Git repository: !`git rev-parse --git-dir 2>/dev/null` +- Branch exists: [validation logic] + +<!-- SECTION 2: ANALYSIS --> +<!-- Analyzes the differences between branches --> + +Analyzing differences between $1 and $2... +[Analysis logic...] + +<!-- SECTION 3: RECOMMENDATIONS --> +<!-- Provides actionable recommendations --> + +Based on analysis, recommend: +[Recommendations...] + +<!-- END: Next steps for user --> +``` + +### Inline Explanations + +```markdown +--- +description: Deployment command with inline docs +--- + +# Deploy to $1 + +## Pre-flight Checks + +<!-- We check branch status to prevent deploying from wrong branch --> +Current branch: !`git branch --show-current` + +<!-- Production deploys must come from main/master --> +if [ "$1" = "production" ] && [ "$(git branch --show-current)" != "main" ]; then + ⚠️ WARNING: Not on main branch for production deploy + This is unusual. Confirm this is intentional. +fi + +<!-- Test status ensures we don't deploy broken code --> +Running tests: !`npm test` + +✓ All checks passed + +## Deployment + +<!-- Actual deployment happens here --> +<!-- Uses blue-green strategy for zero-downtime --> +Deploying to $1 environment... +[Deployment steps...] + +<!-- Post-deployment verification --> +Verifying deployment health... +[Health checks...] + +Deployment complete! + +## Next Steps + +<!-- Guide user on what to do after deployment --> +1. Monitor logs: /logs $1 +2. Run smoke tests: /smoke-test $1 +3. Notify team: /notify-deployment $1 +``` + +### Decision Point Documentation + +```markdown +--- +description: Interactive deployment command +--- + +# Interactive Deployment + +## Configuration Review + +Target: $1 +Current version: !`cat version.txt` +New version: $2 + +<!-- DECISION POINT: User confirms configuration --> +<!-- This pause allows user to verify everything is correct --> +<!-- We can't automatically proceed because deployment is risky --> + +Review the above configuration. + +**Continue with deployment?** +- Reply "yes" to proceed +- Reply "no" to cancel +- Reply "edit" to modify configuration + +[Await user input before continuing...] + +<!-- After user confirms, we proceed with deployment --> +<!-- All subsequent steps are automated --> + +Proceeding with deployment... +``` + +## Help Text Patterns + +### Built-in Help Command + +Create a help subcommand for complex commands: + +```markdown +--- +description: Main command with help +argument-hint: [subcommand] [args] +--- + +# Command Processor + +if [ "$1" = "help" ] || [ "$1" = "--help" ] || [ "$1" = "-h" ]; then + **Command Help** + + USAGE: + /command [subcommand] [args] + + SUBCOMMANDS: + init [name] Initialize new configuration + deploy [env] Deploy to environment + status Show current status + rollback Rollback last deployment + help Show this help + + EXAMPLES: + /command init my-project + /command deploy staging + /command status + /command rollback + + For detailed help on a subcommand: + /command [subcommand] --help + + Exit. +fi + +[Regular command processing...] +``` + +### Contextual Help + +Provide help based on context: + +```markdown +--- +description: Context-aware command +argument-hint: [operation] [target] +--- + +# Context-Aware Operation + +if [ -z "$1" ]; then + **No operation specified** + + Available operations: + - analyze: Analyze target for issues + - fix: Apply automatic fixes + - report: Generate detailed report + + Usage: /command [operation] [target] + + Examples: + /command analyze src/ + /command fix src/app.js + /command report + + Run /command help for more details. + + Exit. +fi + +[Command continues if operation provided...] +``` + +## Error Message Documentation + +### Helpful Error Messages + +```markdown +--- +description: Command with good error messages +--- + +# Validation Command + +if [ -z "$1" ]; then + ❌ ERROR: Missing required argument + + The 'file-path' argument is required. + + USAGE: + /validate [file-path] + + EXAMPLE: + /validate src/app.js + + Try again with a file path. + + Exit. +fi + +if [ ! -f "$1" ]; then + ❌ ERROR: File not found: $1 + + The specified file does not exist or is not accessible. + + COMMON CAUSES: + 1. Typo in file path + 2. File was deleted or moved + 3. Insufficient permissions + + SUGGESTIONS: + - Check spelling: $1 + - Verify file exists: ls -la $(dirname "$1") + - Check permissions: ls -l "$1" + + Exit. +fi + +[Command continues if validation passes...] +``` + +### Error Recovery Guidance + +```markdown +--- +description: Command with recovery guidance +--- + +# Operation Command + +Running operation... + +!`risky-operation.sh` + +if [ $? -ne 0 ]; then + ❌ OPERATION FAILED + + The operation encountered an error and could not complete. + + WHAT HAPPENED: + The risky-operation.sh script returned a non-zero exit code. + + WHAT THIS MEANS: + - Changes may be partially applied + - System may be in inconsistent state + - Manual intervention may be needed + + RECOVERY STEPS: + 1. Check operation logs: cat /tmp/operation.log + 2. Verify system state: /check-state + 3. If needed, rollback: /rollback-operation + 4. Fix underlying issue + 5. Retry operation: /retry-operation + + NEED HELP? + - Check troubleshooting guide: /help troubleshooting + - Contact support with error code: ERR_OP_FAILED_001 + + Exit. +fi +``` + +## Usage Example Documentation + +### Embedded Examples + +```markdown +--- +description: Command with embedded examples +--- + +# Feature Command + +This command performs feature analysis with multiple options. + +## Basic Usage + +\`\`\` +/feature analyze src/ +\`\`\` + +Analyzes all files in src/ directory for feature usage. + +## Advanced Usage + +\`\`\` +/feature analyze src/ --detailed +\`\`\` + +Provides detailed analysis including: +- Feature breakdown by file +- Usage patterns +- Optimization suggestions + +## Use Cases + +**Use Case 1: Quick overview** +\`\`\` +/feature analyze . +\`\`\` +Get high-level feature summary of entire project. + +**Use Case 2: Specific directory** +\`\`\` +/feature analyze src/components +\`\`\` +Focus analysis on components directory only. + +**Use Case 3: Comparison** +\`\`\` +/feature analyze src/ --compare baseline.json +\`\`\` +Compare current features against baseline. + +--- + +Now processing your request... + +[Command implementation...] +``` + +### Example-Driven Documentation + +```markdown +--- +description: Example-heavy command +--- + +# Transformation Command + +## What This Does + +Transforms data from one format to another. + +## Examples First + +### Example 1: JSON to YAML +**Input:** `data.json` +\`\`\`json +{"name": "test", "value": 42} +\`\`\` + +**Command:** `/transform data.json yaml` + +**Output:** `data.yaml` +\`\`\`yaml +name: test +value: 42 +\`\`\` + +### Example 2: CSV to JSON +**Input:** `data.csv` +\`\`\`csv +name,value +test,42 +\`\`\` + +**Command:** `/transform data.csv json` + +**Output:** `data.json` +\`\`\`json +[{"name": "test", "value": "42"}] +\`\`\` + +### Example 3: With Options +**Command:** `/transform data.json yaml --pretty --sort-keys` + +**Result:** Formatted YAML with sorted keys + +--- + +## Your Transformation + +File: $1 +Format: $2 + +[Perform transformation...] +``` + +## Maintenance Documentation + +### Version and Changelog + +```markdown +<!-- +VERSION: 2.1.0 +LAST UPDATED: 2025-01-15 +AUTHOR: DevOps Team + +CHANGELOG: + v2.1.0 (2025-01-15): + - Added support for YAML configuration + - Improved error messages + - Fixed bug with special characters in arguments + + v2.0.0 (2025-01-01): + - BREAKING: Changed argument order + - BREAKING: Removed deprecated --old-flag + - Added new validation checks + - Migration guide: /migration-v2 + + v1.5.0 (2024-12-15): + - Added --verbose flag + - Improved performance by 50% + + v1.0.0 (2024-12-01): + - Initial stable release + +MIGRATION NOTES: + From v1.x to v2.0: + Old: /command arg1 arg2 --old-flag + New: /command arg2 arg1 + + The --old-flag is removed. Use --new-flag instead. + +DEPRECATION WARNINGS: + - The --legacy-mode flag is deprecated as of v2.1.0 + - Will be removed in v3.0.0 (estimated 2025-06-01) + - Use --modern-mode instead + +KNOWN ISSUES: + - #123: Slow performance with large files (workaround: use --stream flag) + - #456: Special characters in Windows (fix planned for v2.2.0) +--> +``` + +### Maintenance Notes + +```markdown +<!-- +MAINTENANCE NOTES: + +CODE STRUCTURE: + - Lines 1-50: Argument parsing and validation + - Lines 51-100: Main processing logic + - Lines 101-150: Output formatting + - Lines 151-200: Error handling + +DEPENDENCIES: + - Requires git 2.x or later + - Uses jq for JSON processing + - Needs bash 4.0+ for associative arrays + +PERFORMANCE: + - Fast path for small inputs (< 1MB) + - Streams large files to avoid memory issues + - Caches results in /tmp for 1 hour + +SECURITY CONSIDERATIONS: + - Validates all inputs to prevent injection + - Uses allowed-tools to limit Bash access + - No credentials in command file + +TESTING: + - Unit tests: tests/command-test.sh + - Integration tests: tests/integration/ + - Manual test checklist: tests/manual-checklist.md + +FUTURE IMPROVEMENTS: + - TODO: Add support for TOML format + - TODO: Implement parallel processing + - TODO: Add progress bar for large files + +RELATED FILES: + - lib/parser.sh: Shared parsing logic + - lib/formatter.sh: Output formatting + - config/defaults.yml: Default configuration +--> +``` + +## README Documentation + +Commands should have companion README files: + +```markdown +# Command Name + +Brief description of what the command does. + +## Installation + +This command is part of the [plugin-name] plugin. + +Install with: +\`\`\` +/plugin install plugin-name +\`\`\` + +## Usage + +Basic usage: +\`\`\` +/command-name [arg1] [arg2] +\`\`\` + +## Arguments + +- `arg1`: Description (required) +- `arg2`: Description (optional, defaults to X) + +## Examples + +### Example 1: Basic Usage +\`\`\` +/command-name value1 value2 +\`\`\` + +Description of what happens. + +### Example 2: Advanced Usage +\`\`\` +/command-name value1 --option +\`\`\` + +Description of advanced feature. + +## Configuration + +Optional configuration file: `.claude/command-name.local.md` + +\`\`\`markdown +--- +default_arg: value +enable_feature: true +--- +\`\`\` + +## Requirements + +- Git 2.x or later +- jq (for JSON processing) +- Node.js 14+ (optional, for advanced features) + +## Troubleshooting + +### Issue: Command not found + +**Solution:** Ensure plugin is installed and enabled. + +### Issue: Permission denied + +**Solution:** Check file permissions and allowed-tools setting. + +## Contributing + +Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md). + +## License + +MIT License - See [LICENSE](LICENSE). + +## Support + +- Issues: https://github.com/user/plugin/issues +- Docs: https://docs.example.com +- Email: support@example.com +``` + +## Best Practices + +### Documentation Principles + +1. **Write for your future self**: Assume you'll forget details +2. **Examples before explanations**: Show, then tell +3. **Progressive disclosure**: Basic info first, details available +4. **Keep it current**: Update docs when code changes +5. **Test your docs**: Verify examples actually work + +### Documentation Locations + +1. **In command file**: Core usage, examples, inline explanations +2. **README**: Installation, configuration, troubleshooting +3. **Separate docs**: Detailed guides, tutorials, API reference +4. **Comments**: Implementation details for maintainers + +### Documentation Style + +1. **Clear and concise**: No unnecessary words +2. **Active voice**: "Run the command" not "The command can be run" +3. **Consistent terminology**: Use same terms throughout +4. **Formatted well**: Use headings, lists, code blocks +5. **Accessible**: Assume reader is beginner + +### Documentation Maintenance + +1. **Version everything**: Track what changed when +2. **Deprecate gracefully**: Warn before removing features +3. **Migration guides**: Help users upgrade +4. **Archive old docs**: Keep old versions accessible +5. **Review regularly**: Ensure docs match reality + +## Documentation Checklist + +Before releasing a command: + +- [ ] Description in frontmatter is clear +- [ ] argument-hint documents all arguments +- [ ] Usage examples in comments +- [ ] Common use cases shown +- [ ] Error messages are helpful +- [ ] Requirements documented +- [ ] Related commands listed +- [ ] Changelog maintained +- [ ] Version number updated +- [ ] README created/updated +- [ ] Examples actually work +- [ ] Troubleshooting section complete + +With good documentation, commands become self-service, reducing support burden and improving user experience. |
