원클릭으로
원클릭으로
| name | update-cli-command-docs |
| description | AgentBay CLI 命令文档同步更新流程(docs/、README、CHANGELOG) |
在 AgentBay CLI 需求开发完成后,同步更新以下三类文档:
docs/en/<group>.md 和 docs/zh/<group>.mdREADME.md 和 README.zh-CN.md本 skill 不涉及代码实现,仅负责文档层面的同步。
对客文档(cli-analysis/ 目录、钉钉文档)不在此 skill 范围内,需手动同步。
当出现以下情况时触发:
create-cli-command skill 的 Phase 5 委托调用本 skill 必须在代码变更完成后触发,不得在代码尚未完成时提前生成文档。典型组合:
| 场景 | 前置 skill | 本 skill 时机 |
|---|---|---|
| 新增命令 | create-cli-command Phase 1-4 完成后 | 替代其 Phase 5 |
| 修改命令 | 直接修改代码后 | 代码修改完成即可 |
| 发版前 | feature-development-workflow Phase 4 完成后 | 在 Phase 5 推送之前 |
| 仅补翻译 | 无前置 | 任意时间 |
目的:识别本次变更影响了哪些命令组、哪些文档需要更新,避免遗漏或无谓修改。
检查当前变更范围
# 最近一次提交的变更文件
git diff --name-only HEAD~1
# 工作区未提交的变更
git diff --name-only
识别受影响的命令组
根据变更的代码文件映射到命令组:
| 代码文件 | 命令组 | docs 文件 |
|---|---|---|
cmd/apikey*.go, cmd/concurrency.go | apikey | docs/en/apikey.md / docs/zh/apikey.md |
cmd/image*.go | image | docs/en/image.md / docs/zh/image.md |
cmd/network.go | network | docs/en/network.md / docs/zh/network.md |
cmd/skills*.go | skills | docs/en/skills.md / docs/zh/skills.md |
cmd/docker.go | docker | docs/en/docker.md / docs/zh/docker.md |
cmd/login.go, cmd/logout.go, cmd/constants.go | core | docs/en/core.md / docs/zh/core.md |
判定文档更新类型
| 变更类型 | docs 更新 | README 更新 | CHANGELOG 更新 |
|---|---|---|---|
| 新增命令 | ✅ 添加完整命令文档节 | ✅ 在表格中添加子命令 | ✅ |
| 新增参数 | ✅ 更新参数表格 | ✅ 如影响简述则更新 | ✅ |
| 修改参数默认值 | ✅ 更新默认值和说明 | ✅ 如影响简述则更新 | ✅ |
| 修改输出格式 | ✅ 更新输出示例 | ❌ 通常不需要 | ✅ |
| 修改命令行为 | ✅ 更新说明和注意事项 | ✅ 更新简述 | ✅ |
| 仅内部重构 | ❌ 通常不需要 | ❌ | 视情况 |
| 仅补充翻译 | ❌ | ❌ | ✅ 仅 Phase 3 |
向用户确认更新范围
展示分析结果,例如:
检测到以下变更需要文档同步:
- 新增命令:
apikey status→ 需更新docs/en/apikey.md、docs/zh/apikey.md、README 表格、CHANGELOG- 修改参数:
image create --os-type默认值变更 → 需更新docs/en/image.md、docs/zh/image.md是否按此范围执行文档更新?
原则:中英文文档结构必须完全一致,内容互为翻译。先更新英文版,再同步中文版。
读取目标命令组的现有文档,理解当前格式和风格。
在对应命令组文档的 ## Commands / ## 命令 部分末尾追加新节。
英文版模板:
---
### `<group> <subcommand>`
<一句话描述>
```bash
agentbay <group> <subcommand> [flags]
Flags:
| Flag | Short | Type | Required | Description |
|---|---|---|---|---|
--param | -p | string | Yes | 说明 |
Notes:
**中文版模板**:
```markdown
---
### `<group> <subcommand>`
<一句话中文描述>
```bash
agentbay <group> <subcommand> [flags]
参数:
| 参数 | 短参数 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
--param | -p | string | 是 | 中文说明 |
注意事项:
**关键约束**:
- 命令示例保留英文(`agentbay apikey create` 不翻译为 `agentbay apikey 创建`)
- 表头英文版用 `Flag` / `Short` / `Type` / `Required` / `Description`,中文版用 `参数` / `短参数` / `类型` / `必填` / `说明`
- `Required` 列英文版用 `Yes`/`No`,中文版用 `是`/`否`
- 如果命令有破坏性操作,必须包含 `--yes` / `-y` 参数说明和注意事项
- 如果没有短参数(Short),中文版可省略"短参数"列(参考同文件已有命令的格式)
- 新增节前用 `---` 分隔线
#### 1.3 修改命令 — 更新已有命令文档节
定位到对应子命令的文档节,更新受影响的部分:
- **新增参数**:在参数表格中追加行
- **修改参数默认值**:更新 Type 列中的默认值标注和 Description/说明列
- **修改输出格式**:更新输出示例代码块
- **修改命令行为**:更新描述段落和注意事项
**必须注意**:修改时不要破坏同一节中未变更的内容。
#### 1.4 双语同步验证
更新完成后,逐项对比中英文文档:
- [ ] 英文版和中文版的命令数量一致
- [ ] 每个命令的参数数量和名称一致
- [ ] Required/必填 列的值一致
- [ ] 注意事项的条目数一致
- [ ] 双语切换链接(文件第一行)正确
---
### Phase 1.5: 更新 RAM 接口权限说明
**目的**:当新增或删除 OpenAPI 调用时,同步维护各命令文档中的「涉及接口」章节,以及 README 中的 RAM 权限汇总表,并向用户输出权限变更摘要供人工核查。
#### 1.5.1 识别接口变更
基于 Phase 0 的变更分析,确认哪些命令新增/删除/修改了 OpenAPI 调用:
- 读取相关 `cmd/*.go` 文件,统计调用的接口名(函数名即 Action)
- 每个 Action 对应的权限字符串:`agentbay:<ActionName>`
- 不统计本地 docker CLI 封装命令(`docker tag`、`docker push`)
#### 1.5.2 在 docs/ 中维护「涉及接口」章节
**位置**:每个子命令的参数表格之后(或注意事项之后)、`---` 分隔线之前。
**英文版模板**:
```markdown
**Involved APIs:**
| Action | Required Permission |
|---|---|
| `XxxAction` | `agentbay:XxxAction` |
```json
{
"Action": [
"agentbay:XxxAction"
]
}
**中文版模板**:
```markdown
**涉及接口:**
| Action | 所需权限 |
|---|---|
| `XxxAction` | `agentbay:XxxAction` |
```json
{
"Action": [
"agentbay:XxxAction"
]
}
**规则**:
- 一个命令涉及多个接口时,表格按调用顺序列出所有 Action,JSON 数组同样全部列出
- 无需区分分支条件,只要命令可能调用的接口均需列出
- 本地 CLI 封装命令(无 AgentBay API 调用)不加「涉及接口」表格,改用提示:
- 英文:`> **Note**: This is a native docker CLI wrapper — no AgentBay API calls are made. No additional RAM permissions required.`
- 中文:`> **注意**:此命令是本地 docker CLI 的封装命令,不调用任何 AgentBay OpenAPI 接口,无需配置额外的 RAM 权限。`
- `skills list`(占位命令)等尚无 API 调用的命令不加「涉及接口」章节
#### 1.5.3 更新 README RAM 权限汇总表
`README.md` 和 `README.zh-CN.md` 中的 `## RAM Permissions` / `## RAM 账号接口权限` 章节包含各命令组的权限汇总表和 Policy JSON 示例。
**更新规则**:
- 新增接口:在对应命令组的汇总表中追加行,并在 Policy JSON 的 `Action` 数组中追加权限字符串
- 删除接口:从表格和 Policy JSON 中移除对应行/条目(需先确认该接口在该命令组的其他命令中已无引用)
- 接口名变更:同步修改表格和 Policy JSON
**Policy JSON 格式参考**(`README.md`):
```json
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"agentbay:XxxAction"
],
"Resource": "*"
}
]
}
⚠️ 执行本 skill 时,必须在终端输出以下格式的权限变更摘要,供用户核查是否有接口遗漏或误加:
========================================
RAM 接口权限变更摘要
========================================
受影响命令组:<group>
受影响命令:<group> <subcommand>
新增接口权限:
+ agentbay:XxxAction (<group> <subcommand>)
删除接口权限:
- agentbay:YyyAction (<group> <subcommand>)
无变更:(如无新增/删除则显示此行)
已同步位置:
- docs/en/<group>.md — <subcommand> 涉及接口章节
- docs/zh/<group>.md — <subcommand> 涉及接口章节
- README.md — RAM Permissions > <group> 命令组
- README.zh-CN.md — RAM 账号接口权限 > <group> 命令组
请核查上述权限变更是否正确,如有遗漏请告知。
========================================
输出时机:在完成所有文档更新后,统一输出一次摘要。如果本次变更无 OpenAPI 调用变化(纯参数修改、文档格式调整等),则输出「无接口权限变更」。
原则:README 表格只做概要展示,不展示详细参数。更新时保持表格格式不变。
README.md 中搜索 ## Command Overview。
README.zh-CN.md 中搜索 ## 命令概览。
新增子命令:在对应命令组的 Commands 列中,按逻辑序追加子命令名(用反引号包裹,逗号分隔)。
例如新增 apikey status 命令后:
`create`, `enable`, `disable`, `delete`, `list`, `status`, `concurrency set``create`, `enable`, `disable`, `delete`, `list`, `status`, `concurrency set`修改子命令:如果命令重命名,替换旧名为新名。
关键约束:
Details 列的链接不变原则:CHANGELOG 由 git-cliff 自动生成英文部分,中文翻译由 AI 生成后经用户确认写入。
git fetch aliyun
git log aliyun/master..HEAD --oneline
此步骤确认有哪些新 commit 将被纳入 CHANGELOG,验证 git-cliff 的输出是否完整。
# 优先使用 Makefile target
make changelog
# 或直接使用 git-cliff
git-cliff -o CHANGELOG.md
如果 git-cliff 未安装,提示用户安装:
make changelog-install
# 或
brew install git-cliff
读取更新后的 CHANGELOG.md,检查:
[Unreleased] 部分是否包含本次变更**apikey**:、**image**: 等)查找待翻译占位符:
在 CHANGELOG.md 中搜索 <!-- 中文翻译待补充 或 <!-- 中文翻译待补充 / Add Chinese translation before release -->。
翻译规则:
| 英文分类 | 中文分类 | 条目动词示例 |
|---|---|---|
| Features | 新功能 | 新增、支持 |
| Bug Fixes | 问题修复 | 修正、修复、兼容 |
| Documentation | 文档 | 补充、更新、新增 |
| Refactoring | 重构 | 重构、简化 |
| Performance | 性能 | 优化、提升 |
| Other Changes | 其他变更 | 更新、移除、新增 |
翻译格式:
在 * * * 分隔线下方,镜像英文结构的中文版本:
* * *
### 新功能
- **apikey**: 新增 `apikey delete` 命令,支持多步骤确认
- **image**: 新增 `image warmup-status` 命令
### 问题修复
- **client**: 兼容响应中 `HttpStatusCode` 字段为字符串类型的情况
翻译要点:
**apikey**:、**image**:、**client**:)`apikey delete` 不翻译)CHANGELOG.md 中 v0.2.7、v0.2.9 等已有翻译)将生成的中文翻译完整展示给用户:
已生成以下 CHANGELOG 中文翻译,请确认:
### 新功能 - **apikey**: 新增 `apikey status` 命令,用于查询 API Key 状态是否需要修改?确认后将写入 CHANGELOG.md。
⚠️ 铁律:翻译必须经用户确认后才可写入,不得自动替换占位符。
将翻译替换占位符,写入 CHANGELOG.md。验证:
<!-- 中文翻译待补充 --> 占位符已被替换* * * 分隔线在英文和中文之间docs/en/<group>.md 已更新(新增节或修改已有节)docs/zh/<group>.md 已更新(与英文版结构一致)README.md RAM Permissions 表格已更新(新增/删除接口时)README.zh-CN.md RAM 账号接口权限表格已更新README.md Command Overview 表格已更新README.zh-CN.md 命令概览表格已更新git fetch aliyun 已执行git-cliff -o CHANGELOG.md 已执行(或 make changelog)<!-- 中文翻译待补充 --> 占位符[Unreleased] 或最新版本