OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  create-cli:设计并构建命令行参数、标志位与子命令的工具

create-cli:设计并构建命令行参数、标志位与子命令的工具

 
  system ·  2026-02-19 23:52:23 · 3 次点击  · 0 条评论  

名称: create-cli
描述: >
设计命令行界面参数与用户体验:参数、标志、子命令、帮助文本、输出格式、错误信息、退出码、交互提示、配置/环境变量优先级,以及安全/试运行行为。适用于设计CLI规范(在实现之前)或重构现有CLI的交互界面,以确保一致性、可组合性和可发现性。


创建CLI

以人为先、脚本友好为原则,设计CLI交互界面(语法与行为)。

首要步骤

  • 阅读 agent-scripts/skills/create-cli/references/cli-guidelines.md 并将其作为默认评估标准。
  • 完整上游指南:https://clig.dev/(建议修改:https://github.com/cli-guidelines/cli-guidelines)
  • 仅提出最必要的澄清问题以确定接口设计。

快速澄清

询问用户,若用户不确定,则采用最佳猜测的默认值继续:

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

交付成果(输出内容)

设计CLI时,生成一份简洁的规范供用户实现:

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

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

  • -h/--help 始终显示帮助信息并忽略其他参数。
  • --version 将版本信息打印到 stdout。
  • 主要数据输出到 stdout;诊断/错误信息输出到 stderr。
  • 添加 --json 用于机器输出;考虑 --plain 用于稳定的基于行的文本输出。
  • 仅当 stdin 是 TTY 时显示提示;--no-input 禁用提示。
  • 破坏性操作:交互式确认 + 非交互式需要 --force 或显式的 --confirm=...
  • 遵循 NO_COLORTERM=dumb;提供 --no-color
  • 处理 Ctrl-C:快速退出;有限清理;尽可能实现崩溃即退出。

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

CLI 规范骨架

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

  1. 名称: mycmd
  2. 一句话描述: ...
  3. USAGE:
    • mycmd [全局标志] <子命令> [参数]
  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. 示例:

注意事项

  • 仅在用户要求时推荐特定语言的解析库;否则本技能应保持与语言无关。
  • 如果请求是“设计参数”,请不要偏离到实现细节。
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor