SuperAPI AI 工具集

cli-development

编程与开发

查看项目

更新于 10-16 05:29

技能介绍

用途

该技能用于把命令行界面(CLI)的设计与开发工作建立在 clig.dev 发布的《Command Line Interface Guidelines》之上。clig.dev 是由 Aanand Prasad、Ben Firshman、Carl Tashian 和 Eva Parish 维护的开源指南,用现代“以人为本”的理念更新了传统 UNIX 原则。clig.dev 是单一权威页面,全文发布在 https://clig.dev/(HTML)和 https://clig.dev/llms.txt(机器可读 markdown)。该技能以站点地图加分区参考文件的形式镜像该指南结构,并指示在引用规则前先获取权威源,以便建议跟随上游变化。

适用场景

当工作涉及 CLI 表面时使用该技能,包括:

  • 设计:提出新的 CLI 工具或子命令布局;选择标志名称、默认值或参数形态;决定哪些配置放在标志、环境变量或配置文件中;为二进制文件命名。
  • 实现:连接 stdout/stderr;输出帮助文本和错误;选择参数解析库;处理 Ctrl-C;决定何时提示;对危险操作加门控。
  • 评审:阅读新增或修改 CLI 表面的拉取请求;向评审者指出变更所冲突的具体指南。
  • 规格:起草包含命令行界面的 CLI 规格、RFC、设计文档或架构图。
  • QA:测试 clig.dev 指出的 CLI 行为(TTY 检测、NO_COLOR、--no-input、退出码、错误重写、信号处理、分页器行为)。
  • 讨论:回答关于 CLI 惯例的问题,为某个 CLI 设计选择辩护或批评,比较不同方案。

如果对话涉及 CLI 表面且问题是“正确的做法是什么?”,应在回答前查阅 clig.dev。

工作流程

  1. 定位相关章节。阅读 references/sitemap.md。它索引了每个 clig.dev 锚点并附一行描述。选择与工作匹配的章节——通常一到四个。
  2. 拉取权威源。clig.dev 会演进;不要仅依赖本地参考副本作出有约束力的建议。获取实时内容:
    • 首选:使用 tavily-extract 技能,URL 为 https://clig.dev/llms.txt,查询中指明章节(例如“arguments and flags”)。这会返回干净的 markdown。
    • 备选:对 https://clig.dev/llms.txt 或 https://clig.dev/#<anchor> 使用 WebFetch,并在提示中指明章节。
    • 离线回退:references/ 下的分区文件是指南文本的快照。当网络获取失败时使用;并标注该建议基于快照而非实时内容。
  3. 完整阅读匹配章节。每个章节都很短。端到端阅读捆绑的参考文件或获取的文本。指南各节相互关联——关于标志的建议常常会引用 Output 或 Configuration 章节。
  4. 将指导应用到任务。把规则转化为具体建议、代码变更或评审意见。先陈述规则,再说明理由,最后给出应用。
  5. 引用锚点。当你建议或批评时,链接到具体的 clig.dev 锚点——例如 https://clig.dev/#arguments-and-flags——以便读者核实或深入阅读。引用是交付物的一部分,而非可选装饰。

引用规则

陈述规则时,说明其来源。格式示例:

“当 stdout 不是 TTY 时禁用颜色(clig.dev: Output)。”

如果用户正在评审代码,引用 clig.dev 中确切的规则标题(指南中的粗体引导句,如“Disable color if your program is not in a terminal or the user requested it.”),使评论基于原始文本而非你的转述。

不覆盖的范围

clig.dev 明确说明其范围:不覆盖全屏终端程序(vim、emacs、ncurses TUI)。它也与语言和框架无关。如果用户询问 TUI 设计或特定框架的惯用法,clig.dev 覆盖底层 CLI 礼仪,但不覆盖框架细节。

参考文件布局

文件 覆盖内容
references/sitemap.md 每个 clig.dev 锚点的索引,含权威 URL 和一行摘要。先读这个。
references/philosophy.md 九条哲学原则(以人为本设计、可组合性、一致性、可发现性、对话、健壮性、同理心、混沌)。
references/the-basics.md 参数解析库、退出码、stdout 与 stderr。不可妥协的基础。
references/help.md 帮助文本内容、格式、输入错误时的建议、-h/--help 行为。
references/documentation.md Web 文档、终端文档、man 页面。
references/output.md 人类与机器输出、--plain、--json、颜色、NO_COLOR、分页器、用于密度的 ASCII 艺术。
references/errors.md 为人类重写错误、信噪比、调试信息、缺陷报告流程。
references/arguments-and-flags.md 标志命名惯例、常见标志、危险操作确认、机密处理。
references/interactivity.md TTY 检查、--no-input、密码提示、退出路径。
references/subcommands.md 子命令何时有帮助、命名一致性、名词-动词 vs 动词-名词。
references/robustness.md 输入验证、响应性预算、进度、并行、超时、恢复、崩溃即设计。
references/future-proofing.md 增量变更、弃用、缩写、定时炸弹。
references/signals.md Ctrl-C 处理、双击 Ctrl-C 语义。
references/configuration.md XDG 基础目录、优先级顺序、项目级配置。
references/environment-variables.md 命名、.env 用法、知名变量、为何机密不应放在环境变量中。
references/naming.md 选择易记、易输入、小写的命令名。
references/distribution.md 单二进制偏好、易于卸载。
references/analytics.md 遥测同意、收集分析数据的替代方案。

捆绑的参考文件与 clig.dev 发布的正文相同,供离线使用并作为稳定的可引用锚点。权威文本仍为 https://clig.dev/ 和 https://clig.dev/llms.txt。