用途:帮助在 Rust 中构建可预测、可脚本化、终端体验良好且易于发布的命令行工具,围绕 clap 的 derive 与 builder 两种 API 展开。
工作方式:先发现现有 CLI 契约,包括 Cargo.toml、src/bin、clap 定义、集成测试、快照、发布脚本与 README 示例;除非任务明确要求破坏性变更,否则保留面向用户的命令行为,若行为改变需在同一补丁中更新测试与文档。普通 CLI 优先使用 clap derive;当命令动态生成、隐藏或不稳定命令面需要自定义构造,或宏使结构更难读时使用 builder API。
输出契约:把命令输出当作 API 设计——人类可读输出走 stdout,诊断走 stderr,自动化场景提供确定性的 --json 机器输出,并保持稳定退出码。命令处理函数保持轻薄:解析为类型化参数、一次性归一化配置,再调用可在不启动进程的情况下被测试的库代码。
参考资料:按需查阅 references/clap-parser-playbook.md(derive/builder 设计、参数组、校验器、补全与迁移)、references/terminal-contracts.md(stdout/stderr、颜色、进度、配置优先级、错误信息与 shell 自动化规则)、references/testing-packaging.md(assert_cmd、trycmd、快照、二进制、补全、manpage、cargo-dist 与发布检查)。
默认建议:当环境变量属于契约一部分时使用 clap = { features = ["derive", "env"] },否则避免无用特性;仅当 UTF-8 路径是显式不变量时才用 camino 或 Utf8PathBuf,否则保留 PathBuf;使用 anstream/anstyle 或 clap 样式输出并尊重 NO_COLOR、CLICOLOR 与非 TTY 行为;在有子命令、网络调用、守护/客户端模式或隐藏调试标志时用 tracing 做诊断;领域错误用 thiserror,仅在丰富报告有价值时在展示边界用 miette 或 color-eyre。
验证:CLI 变更优先采用最小验证阶梯:cargo fmt --all --check、cargo test --all-targets、cargo clippy --workspace --all-targets --all-features -- -D warnings;为新标志、输出模式、退出码、配置优先级和文档示例添加聚焦命令测试;仅在归一化易变路径、时间戳、颜色与顺序后再对 CLI 输出做快照。
限制:资料未提供具体版本兼容范围、收费方式与平台支持细节。