mcpField
C
creating-cli-tools

creating-cli-tools

github.com/zenobi-us开发6839 次安装今天更新
代码仓库

关于 creating-cli-tools

creating-cli-tools 是一项用于设计兼顾人工使用与脚本调用的命令行界面的技能。它引导梳理需求,并产出涵盖命令、输入输出、错误、安全、配置和示例的精简规格。

主要功能

  1. 01明确命令用途和目标用户
  2. 02定义命令树、参数和选项
  3. 03规定输出、错误和退出码
  4. 04设置安全、配置及环境变量规则
  5. 05提供调用示例

适用场景

  1. 01规划新命令行工具的命令结构
  2. 02定义稳定的机器可读输出
  3. 03规定交互式与脚本调用行为
  4. 04记录确认机制和破坏性操作规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zenobi-us/dotfiles --skill creating-cli-tools

安装后在 Claude Code 中输入/creating-cli-tools确认已加载。

附带文件references/cli-guidelines.mdreferences/styles-bash.md

详细介绍

创建 CLI

设计 CLI 的使用界面(语法 + 行为),以人为本,便于脚本使用。

先做这些

快速澄清

先提问;如果用户不确定,则采用最合理的默认值并继续:

  • 命令名称 + 一句话用途。
  • 主要用户:人类、脚本,还是两者兼有。
  • 输入来源:参数还是 stdin;文件还是 URL;机密信息(绝不通过标志传递)。
  • 输出约定:人类可读文本、--json、--plain、退出码。
  • 交互方式:是否允许提示?是否需要 --no-input?破坏性操作是否需要确认?
  • 配置模型:标志/环境变量/配置文件;优先级;XDG 还是仓库本地配置。
  • 平台/运行时限制:macOS/Linux/Windows;单一二进制文件还是需要运行时。

交付内容(输出什么)

设计 CLI 时,请提供一份紧凑的规格说明,方便用户实现:

  • 命令树 + USAGE 用法概要。
  • 参数/标志表(类型、默认值、必填/可选、示例)。
  • 子命令语义(每项的作用;幂等性;状态变更)。
  • 输出规则:stdout 与 stderr;TTY 检测;--json/--plain;--quiet/--verbose。
  • 错误与退出码映射(主要失败模式)。
  • 安全规则:--dry-run、确认、--force、--no-input。
  • 配置/环境变量规则 + 优先级(标志 > 环境变量 > 项目配置 > 用户配置 > 系统配置)。
  • Shell 补全方案(如适用):安装/可发现性;生成命令或内置脚本。
  • 5–10 个调用示例(常见流程;包含管道/stdin 示例)。

默认约定(除非用户另有说明)

  • -h/--help 始终显示帮助,并忽略其他参数。
  • --version 将版本信息打印到 stdout。
  • 主要数据输出到 stdout;诊断信息/错误输出到 stderr。
  • 添加 --json 以支持机器处理;可考虑添加 --plain,提供稳定的逐行文本。
  • 仅当 stdin 是 TTY 时才显示提示;--no-input 禁用提示。
  • 破坏性操作:交互模式下要求确认;非交互模式下必须使用 --force 或显式指定 --confirm=...。
  • 遵循 NO_COLOR、TERM=dumb;提供 --no-color。
  • 处理 Ctrl-C:快速退出;限制清理时间;尽可能采用崩溃即终止设计。

模板(复制到你的回答中)

CLI 规格说明骨架

填写以下部分,删除不相关内容:

  1. 名称:mycmd
  2. 一句话说明:...
  3. USAGE:
    • mycmd [global flags] <subcommand> [args]
  4. 子命令:
    • mycmd init ...
    • mycmd run ...
  5. 全局标志:
    • -h, --help
    • --version
    • -q, --quiet / -v, --verbose(明确定义)
    • --json / --plain(如适用)
  6. I/O 约定:
    • stdout:
    • stderr:
  7. 退出码:
    • 0 成功
    • 1 通用失败
    • 2 用法无效(解析/验证错误)
    • (仅在确有帮助时添加命令专属退出码)
  8. 环境变量/配置:
    • 环境变量:
    • 配置文件路径 + 优先级:
  9. 示例:
    • …

备注

  • 仅在用户提出要求时,才建议使用特定语言的解析库;否则保持语言无关。
  • 如果请求是“设计参数”,不要偏离主题去讨论实现。

评论

支持 Markdown