ClawSkills logoClawSkills

Create Cli

设计命令行界面参数和用户体验:参数、标志、子命令、帮助文本、输出格式、错误消息、退出代码、提示、配置/env prece

介绍

# Create CLI

设计 CLI 表面区域(语法 + 行为),以人为本,对脚本友好。

## 首先执行此操作

- 阅读 `agent-scripts/skills/create-cli/references/cli-guidelines.md` 并将其作为默认标准应用。 - 上游/完整指南:https://clig.dev/ (提议更改:https://github.com/cli-guidelines/cli-guidelines) - 仅询问确定接口所需的最少量澄清问题。

## 澄清(快速)

询问,然后如果用户不确定则使用最佳猜测默认值继续:

- 命令名称 + 一句话目的。 - 主要用户:人类、脚本或两者兼有。 - 输入来源:参数与标准输入;文件与 URL;密钥(绝不通过 flags)。 - 输出约定:人类文本,`--json`,`--plain`,退出码。 - 交互性:是否允许提示?需要 `--no-input` 吗?破坏性操作是否需要确认? - 配置模型:flags/env/config-file;优先级;XDG 与仓库本地。 - 平台/运行时约束:macOS/Linux/Windows;单一二进制文件与运行时。

## 交付物(输出内容)

设计 CLI 时,生成一个用户可以实现的紧凑规范:

- 命令树 + USAGE 提要。 - 参数/flags 表(类型、默认值、必需/可选、示例)。 - 子命令语义(每个子命令的作用;幂等性;状态变更)。 - 输出规则:stdout 与 stderr;TTY 检测;`--json`/`--plain`;`--quiet`/`--verbose`。 - 错误 + 退出码映射(主要失败模式)。 - 安全规则:`--dry-run`,确认,`--force`,`--no-input`。 - 配置/env 规则 + 优先级(flags > env > 项目配置 > 用户配置 > 系统)。 - 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. **全局 flags**: - `-h, --help` - `--version` - `-q, --quiet` / `-v, --verbose` (准确定义) - `--json` / `--plain` (如适用) 6. **I/O 约定**: - stdout: - stderr: 7. **退出码**: - `0` 成功 - `1` 通用失败 - `2` 无效用法(解析/验证) - (仅在确实有用时添加命令特定代码) 8. **Env/config**: - 环境变量: - 配置文件路径 + 优先级: 9. **示例**: - …

## 备注

- 仅在被询问时才推荐解析库(特定语言);否则保持此技能与语言无关。 - 如果请求是“设计参数”,不要偏向实现细节。

更多产品