rust-clap
29
总安装量
29
周安装量
#7167
全站排名
安装命令
npx skills add https://github.com/pproenca/dot-skills --skill rust-clap
Agent 安装分布
claude-code
26
codex
24
opencode
24
gemini-cli
22
antigravity
19
windsurf
19
Skill 文档
Rust Clap Best Practices
Comprehensive best practices guide for building CLI applications in Rust using clap. Contains 42 rules across 8 categories, prioritized by impact to guide CLI design, argument parsing, and testing.
When to Apply
Reference these guidelines when:
- Designing new Rust CLI applications
- Adding arguments or subcommands to existing CLIs
- Validating and parsing command-line input
- Writing integration tests for CLI tools
- Improving help text and user experience
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Type-Driven Design | CRITICAL | type- |
| 2 | Derive API Patterns | CRITICAL | derive- |
| 3 | Argument Configuration | HIGH | arg- |
| 4 | Validation & Parsing | HIGH | valid- |
| 5 | Subcommand Architecture | MEDIUM-HIGH | subcmd- |
| 6 | Help & Documentation | MEDIUM | help- |
| 7 | Error Handling | MEDIUM | error- |
| 8 | Testing Patterns | LOW-MEDIUM | test- |
Quick Reference
1. Type-Driven Design (CRITICAL)
type-valueenum-enums– Use ValueEnum for enumerated argumentstype-option-optional– Use Option for truly optional argumentstype-pathbuf-files– Use PathBuf for file system argumentstype-vec-multiple– Use Vec for multiple value argumentstype-newtype-semantic– Use newtypes for semantic distinctiontype-bool-flags– Use bool for simple flags
2. Derive API Patterns (CRITICAL)
derive-parser-entry– Derive Parser for CLI entry pointderive-command-metadata– Use Command attribute for metadataderive-subcommand-enum– Use Subcommand derive for command hierarchiesderive-args-reusable– Derive Args for reusable argument groupsderive-doc-comments– Use doc comments for help textderive-global-options– Use Global for cross-subcommand optionsderive-propagate-version– Propagate version to subcommands
3. Argument Configuration (HIGH)
arg-default-value– Use default_value for sensible defaultsarg-env-fallback– Use env for environment variable fallbackarg-short-long– Provide both short and long option namesarg-conflicts-with– Use conflicts_with for mutually exclusive optionsarg-requires– Use requires for dependent argumentsarg-value-name– Use value_name for descriptive placeholders
4. Validation & Parsing (HIGH)
valid-value-parser– Use value_parser for custom validationvalid-possible-values– Use PossibleValuesParser for string constraintsvalid-fromstr-types– Implement FromStr for domain typesvalid-try-parse– Use try_parse for graceful error handlingvalid-num-args– Use num_args for value count constraints
5. Subcommand Architecture (MEDIUM-HIGH)
subcmd-nested-hierarchy– Use nested subcommands for complex CLIssubcmd-args-struct– Use struct for subcommand argumentssubcmd-required-help– Require subcommand or show helpsubcmd-arg-groups– Use ArgGroup for one-of-many requirementssubcmd-external– Use external subcommands for plugin systems
6. Help & Documentation (MEDIUM)
help-shell-completions– Generate shell completions with clap_completehelp-next-heading– Use next_help_heading for organized helphelp-after-help– Use after_help for examples and contexthelp-hide-options– Hide advanced options from default help
7. Error Handling (MEDIUM)
error-exit-codes– Use appropriate exit codeserror-context– Add context to error messageserror-suggestions– Enable suggestions for typoserror-color-styles– Use colored output for error visibility
8. Testing Patterns (LOW-MEDIUM)
test-assert-cmd– Use assert_cmd for integration testingtest-predicates– Use predicates for flexible assertionstest-temp-files– Use assert_fs for temporary test filestest-parse-from– Use parse_from for unit testing parserstest-trycmd-snapshots– Use trycmd for snapshot testing
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions – Category structure and impact levels
- Rule template – Template for adding new rules
Reference Files
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |