mcpField
C
create-cli

create-cli

github.com/steipete开发7.4k423 次安装1 周前更新
代码仓库

关于 create-cli

用于设计面向用户且便于脚本使用的命令行界面的技能。它引导 Agent 澄清需求,并生成可供实现的精简 CLI 规范。

主要功能

  1. 01CLI 需求核对清单
  2. 02命令树与用法概要
  3. 03参数、输入输出及退出码规则
  4. 04安全与配置约定
  5. 05调用示例设计

适用场景

  1. 01定义新的 CLI 界面
  2. 02规范命令与参数行为
  3. 03规划兼容脚本的输出
  4. 04说明错误与安全规则

安装

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

$npx skills add https://github.com/steipete/agent-scripts --skill create-cli

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

附带文件references/cli-guidelines.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