名称: unix-cli 描述: UNIX 命令行界面指南,用于构建遵循 POSIX 惯例、正确退出码、流处理和 UNIX 哲学的工具。此技能应在编写、审核或设计 CLI 工具时使用,以确保它们与 UNIX 工具链正确集成。在涉及 CLI 工具、命令行参数、退出码、标准输出/标准错误、信号或 shell 脚本的任务中触发。
UNIX/POSIX 标准 CLI 最佳实践
构建遵循 UNIX 惯例的命令行工具的综合指南,专为 AI 代理和 LLM 设计。包含 8 个类别的 44 条规则,按影响从关键(参数处理、退出码、输出流)到增量(配置和环境)优先排序。
何时应用
在以下情况下参考这些指南:
- 用任何语言编写新的 CLI 工具
- 解析命令行参数和标志
- 决定哪些内容输出到 stdout 与 stderr
- 选择适当的退出码
- 处理信号如 SIGINT 和 SIGTERM
规则类别按优先级排序
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 参数与标志设计 | 关键 | args- |
| 2 | 退出码 | 关键 | exit- |
| 3 | 输出流 | 关键 | output- |
| 4 | 错误处理 | 高 | error- |
| 5 | I/O 与组合 | 高 | io- |
| 6 | 帮助与文档 | 中高 | help- |
| 7 | 信号与鲁棒性 | 中 | signal- |
| 8 | 配置与环境 | 中 | config- |
快速参考
1. 参数与标志设计(关键)
args-use-getopt- 使用标准参数解析库args-provide-long-options- 为所有短选项提供长选项args-support-double-dash- 支持双破折号终止选项args-require-help-version- 实现 --help 和 --version 选项args-prefer-flags-over-positional- 优先使用标志而非位置参数args-use-standard-flag-names- 使用标准标志名称args-never-read-secrets-from-flags- 永不从命令行标志读取秘密args-support-option-bundling- 支持选项捆绑
2. 退出码(关键)
exit-zero-for-success- 仅成功时返回零exit-use-standard-codes- 使用标准退出码exit-signal-codes- 使用 128+N 表示信号终止exit-partial-success- 一致处理部分成功exit-distinguish-error-types- 使用不同退出码区分错误类型
3. 输出流(关键)
output-stdout-for-data- 仅将数据写入 stdoutoutput-stderr-for-errors- 将错误和诊断写入 stderroutput-detect-tty- 检测 TTY 用于面向人的输出output-provide-machine-format- 提供机器可读的输出格式output-line-based-text- 使用基于行的输出处理文本流output-respect-no-color- 尊重 NO_COLOR 环境变量
4. 错误处理(高)
error-include-program-name- 在错误消息中包含程序名error-actionable-messages- 使错误消息可操作error-use-strerror- 对系统错误使用 strerrorerror-avoid-stack-traces- 避免在用户面对的错误中显示堆栈跟踪error-validate-early- 早期验证输入并快速失败
5. I/O 与组合(高)
io-support-stdin- 支持从 stdin 读取io-write-to-stdout- 默认写入 stdoutio-be-stateless- 设计无状态操作io-handle-binary-safely- 安全处理二进制数据io-atomic-writes- 使用原子文件写入io-handle-multiple-files- 一致处理多个输入文件
6. 帮助与文档(中高)
help-show-usage-on-error- 在参数错误时显示简要用法help-structure-help-output- 结构帮助输出一致help-show-defaults- 在帮助中显示默认值help-include-examples- 在帮助中包含实际示例help-version-format- 正确格式化版本输出
7. 信号与鲁棒性(中)
signal-handle-sigint- 优雅处理 SIGINTsignal-handle-sigterm- 为清理关闭处理 SIGTERMsignal-handle-sigpipe- 为损坏管道处理 SIGPIPEsignal-cleanup-on-second-interrupt- 在第二次中断时跳过清理
8. 配置与环境(中)
config-follow-xdg- 遵循 XDG 基础目录规范config-precedence-order- 以正确优先级顺序应用配置config-env-naming- 使用一致的环境变量命名config-never-store-secrets- 永不将秘密存储在配置文件或环境中config-respect-standard-vars- 尊重标准环境变量
如何使用
阅读单个参考文件获取详细解释和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |