@fitlab-ai/agent-infra 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +368 -51
  2. package/README.zh-CN.md +369 -52
  3. package/bin/cli.js +1 -1
  4. package/lib/version.js +2 -1
  5. package/package.json +1 -1
  6. package/templates/.agents/README.md +12 -0
  7. package/templates/.agents/README.zh-CN.md +12 -0
  8. package/templates/.agents/skills/analyze-task/SKILL.md +106 -105
  9. package/templates/.agents/skills/check-task/SKILL.md +108 -94
  10. package/templates/.agents/skills/check-task/SKILL.zh-CN.md +12 -0
  11. package/templates/.agents/skills/close-codescan/SKILL.md +64 -63
  12. package/templates/.agents/skills/close-dependabot/SKILL.md +71 -70
  13. package/templates/.agents/skills/commit/SKILL.md +19 -4
  14. package/templates/.agents/skills/commit/SKILL.zh-CN.md +19 -4
  15. package/templates/.agents/skills/complete-task/SKILL.md +11 -1
  16. package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +11 -1
  17. package/templates/.agents/skills/create-issue/SKILL.md +302 -0
  18. package/templates/.agents/skills/create-issue/SKILL.zh-CN.md +302 -0
  19. package/templates/.agents/skills/create-pr/SKILL.md +140 -5
  20. package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +140 -5
  21. package/templates/.agents/skills/create-release-note/SKILL.md +18 -11
  22. package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +18 -11
  23. package/templates/.agents/skills/create-task/SKILL.md +80 -78
  24. package/templates/.agents/skills/create-task/SKILL.zh-CN.md +7 -6
  25. package/templates/.agents/skills/implement-task/SKILL.md +7 -2
  26. package/templates/.agents/skills/implement-task/SKILL.zh-CN.md +7 -2
  27. package/templates/.agents/skills/import-codescan/SKILL.md +54 -53
  28. package/templates/.agents/skills/import-dependabot/SKILL.md +57 -56
  29. package/templates/.agents/skills/import-issue/SKILL.md +58 -58
  30. package/templates/.agents/skills/init-labels/SKILL.md +8 -0
  31. package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +8 -0
  32. package/templates/.agents/skills/plan-task/SKILL.md +151 -149
  33. package/templates/.agents/skills/refine-task/SKILL.md +147 -137
  34. package/templates/.agents/skills/refine-task/SKILL.zh-CN.md +10 -2
  35. package/templates/.agents/skills/review-task/SKILL.md +196 -186
  36. package/templates/.agents/skills/review-task/SKILL.zh-CN.md +13 -4
  37. package/templates/.agents/skills/sync-issue/SKILL.md +252 -272
  38. package/templates/.agents/skills/sync-issue/SKILL.zh-CN.md +26 -47
  39. package/templates/.agents/skills/sync-pr/SKILL.md +274 -82
  40. package/templates/.agents/skills/sync-pr/SKILL.zh-CN.md +251 -59
  41. package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +1 -1
  42. package/templates/.claude/CLAUDE.md +13 -0
  43. package/templates/.claude/CLAUDE.zh-CN.md +13 -0
  44. package/templates/.claude/commands/create-issue.md +8 -0
  45. package/templates/.claude/commands/create-issue.zh-CN.md +8 -0
  46. package/templates/.gemini/commands/_project_/create-issue.toml +8 -0
  47. package/templates/.gemini/commands/_project_/create-issue.zh-CN.toml +8 -0
  48. package/templates/.opencode/commands/create-issue.md +11 -0
  49. package/templates/.opencode/commands/create-issue.zh-CN.md +11 -0
  50. package/templates/AGENTS.md +13 -0
  51. package/templates/AGENTS.zh-CN.md +13 -0
package/README.zh-CN.md CHANGED
@@ -5,47 +5,135 @@
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](License.txt)
6
6
  [![Node.js >= 18](https://img.shields.io/badge/Node.js-%3E%3D18-brightgreen?logo=node.js)](https://nodejs.org/)
7
7
  [![GitHub release](https://img.shields.io/github/v/release/fitlab-ai/agent-infra)](https://github.com/fitlab-ai/agent-infra/releases)
8
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
8
9
 
9
- 用于初始化和维护 AI 多工具协作基础设施及项目治理配置的模板仓库和技能仓库。
10
+ AI 编程代理之间缺失的协作层 —— 为 Claude Code、Codex、Gemini CLI、OpenCode 提供统一的 skills 和工作流。
11
+
12
+ **AI Agent 半自动化编程神器。** 定义需求,让 AI 完成分析、方案设计、编码、审查和交付 —— 你只需在关键节点介入。
10
13
 
11
14
  [English](README.md)
12
15
 
13
- ## 什么是 agent-infra
16
+ <a id="why-agent-infra"></a>
17
+
18
+ ## 为什么需要 agent-infra?
19
+
20
+ 越来越多的团队会在同一个仓库里混用 Claude Code、Codex、Gemini CLI、OpenCode 等 AI TUI,但每个工具往往都会带来自己的命令体系、提示词习惯和本地约定。缺少共享层时,结果通常是工作流割裂、初始化重复、任务历史难以追踪。
21
+
22
+ agent-infra 的目标就是把这层协作面标准化。它为所有支持的 AI TUI 提供统一的任务生命周期、统一的 skill 词汇、统一的项目治理文件以及统一的升级路径,让团队切换工具时不必重新发明流程。
23
+
24
+ <a id="see-it-in-action"></a>
25
+
26
+ ## 实战演示
27
+
28
+ **场景**:Issue #42 报告 *"登录接口在邮箱包含加号时返回 500"*。以下是完整的修复流程 —— AI 执行主要工作,你掌控方向:
29
+
30
+ ```bash
31
+ /import-issue 42
32
+ ```
33
+
34
+ > AI 读取 Issue,创建 `TASK-20260319-100000`,提取需求。
35
+
36
+ ```bash
37
+ /analyze-task TASK-20260319-100000
38
+ ```
39
+
40
+ > AI 扫描代码库,定位 `src/auth/login.ts` 为根因,输出 `analysis.md`。
41
+
42
+ ```bash
43
+ /plan-task TASK-20260319-100000
44
+ ```
45
+
46
+ > AI 提出修复方案:*"在 `LoginService.validate()` 中清洗邮箱输入,并添加专项单元测试。"*
47
+ >
48
+ > **你审查方案后用自然语言回复:**
49
+
50
+ ```
51
+ 方案方向没问题,但不要动数据库结构。
52
+ 只在应用层的 LoginService 里修复就行。
53
+ ```
54
+
55
+ > AI 按你的要求更新方案并确认。
14
56
 
15
- agent-infra 为 AI TUI 工具(Claude Code、Codex、Gemini CLI、OpenCode)提供标准化配置,使它们能在同一项目中高效协作。轻量级引导 CLI 安装种子命令,后续所有操作由 AI 技能驱动。
57
+ ```bash
58
+ /implement-task TASK-20260319-100000
59
+ ```
16
60
 
17
- ### 核心特性
61
+ > AI 编写修复代码,添加 `user+tag@example.com` 的测试用例,运行全部测试 —— 通过。
62
+
63
+ ```bash
64
+ /review-task TASK-20260319-100000
65
+ ```
18
66
 
19
- - **多 AI 协作**:为 Claude Code、Codex、Gemini CLI 和 OpenCode 提供结构化工作流
20
- - **引导 CLI + 技能驱动**:一次 CLI 初始化,后续全部通过 AI 技能完成
21
- - **双语支持**:所有面向用户的文件提供英文和中文两个版本
22
- - **模块化设计**:两个独立模块(`ai` 和 `github`),可单独安装
23
- - **模板源架构**:`templates/` 完整镜像工作目录,再渲染生成项目工作文件
24
- - **AI 智能合并**:更新时由大模型处理模板合并,保留用户定制内容
67
+ > AI 审查自己的实现:*"通过。0 阻塞项,0 主要问题,1 次要问题(缺少 JSDoc)。"*
68
+
69
+ ```bash
70
+ /refine-task TASK-20260319-100000
71
+ ```
72
+
73
+ > AI 修复次要问题并重新验证。
74
+
75
+ ```bash
76
+ /commit
77
+ /create-pr
78
+ /complete-task TASK-20260319-100000
79
+ ```
80
+
81
+ > 提交完成,PR #43 已创建(自动关联 Issue #42),任务归档。
82
+
83
+ **9 条命令,1 次自然语言纠正,从 Issue 到合并 PR。** 这就是完整的 SOP —— 编程也可以有标准作业流程。
84
+
85
+ 以上每条命令在 Claude Code、Codex、Gemini CLI、OpenCode 中完全通用。任务进行到一半切换工具,工作流状态照常延续。
86
+
87
+ ### 每个 skill 背后做了什么
88
+
89
+ 这些不是简单的命令别名。每个 skill 都封装了手动操作时容易遗漏或不一致的标准化流程:
90
+
91
+ - **结构化产物** — 每个步骤都输出模板化的文档(`analysis.md`、`plan.md`、`review.md`),格式统一,而非自由发挥的散文
92
+ - **多轮版本化** — 需求变了?再执行一次 `analyze-task` 会生成 `analysis-r2.md`,完整修订历史自动保留
93
+ - **分级审查机制** — `review-task` 按 Blocker / Major / Minor 分类问题,附带文件路径和修复建议,而非含糊的"看着没问题"
94
+ - **跨工具状态延续** — `task.md` 记录了谁在什么时间做了什么;Claude 分析、Codex 实现、Gemini 审查——上下文无缝衔接
95
+ - **审计轨迹与联合署名** — 每个步骤自动追加 Activity Log;最终提交包含所有参与 AI 的 `Co-Authored-By` 署名
96
+
97
+ <a id="key-features"></a>
98
+
99
+ ## 核心特性
100
+
101
+ - **多 AI 协作**:为 Claude Code、Codex、Gemini CLI、OpenCode 提供统一的协作模型
102
+ - **引导 CLI + skill 驱动执行**:初始化一次,后续日常操作交给 AI skills
103
+ - **双语文档**:英文为主文档,配套同步的中文版本
104
+ - **模板源架构**:`templates/` 目录镜像最终渲染出的项目结构
105
+ - **AI 辅助升级**:模板升级时可合并变更,同时尽量保留项目侧定制
106
+
107
+ <a id="quick-start"></a>
25
108
 
26
109
  ## 快速开始
27
110
 
28
111
  ### 1. 安装 agent-infra
29
112
 
30
- **方式 A npm(推荐)**
113
+ **方式 A - npm(推荐)**
31
114
 
32
115
  ```bash
33
116
  npm install -g @fitlab-ai/agent-infra
34
- npx @fitlab-ai/agent-infra init
35
117
  ```
36
118
 
37
- **方式 B Shell 脚本**
119
+ **方式 B - Shell 脚本**
38
120
 
39
121
  ```bash
122
+ # 便捷封装:检测 Node.js 后,内部执行 npm install -g
40
123
  curl -fsSL https://raw.githubusercontent.com/fitlab-ai/agent-infra/main/install.sh | sh
41
124
  ```
42
125
 
43
- **方式 C — 源码安装**
126
+ ### 更新 agent-infra
127
+
128
+ ```bash
129
+ npm update -g @fitlab-ai/agent-infra
130
+ ```
131
+
132
+ 查看当前版本:
44
133
 
45
134
  ```bash
46
- git clone https://github.com/fitlab-ai/agent-infra.git
47
- cd agent-infra
48
- sh install.sh
135
+ ai version
136
+ # 或:agent-infra version
49
137
  ```
50
138
 
51
139
  ### 2. 初始化新项目
@@ -53,12 +141,12 @@ sh install.sh
53
141
  ```bash
54
142
  cd my-project
55
143
  ai init
56
- # 或: agent-infra init
144
+ # 或:agent-infra init
57
145
  ```
58
146
 
59
- CLI 会交互式收集项目信息(名称、组织、语言等),安装 `update-agent-infra` 种子命令到所有 AI TUI,并生成 `.airc.json`。
147
+ CLI 会收集项目元数据,向所有支持的 AI TUI 安装 `update-agent-infra` 种子命令,并生成 `.airc.json`。
60
148
 
61
- > **提示:** `ai` 是 `agent-infra` 的简写命令,两者完全等价。
149
+ > `ai` 是 `agent-infra` 的简写命令,两者等价。
62
150
 
63
151
  ### 3. 渲染完整基础设施
64
152
 
@@ -71,57 +159,193 @@ CLI 会交互式收集项目信息(名称、组织、语言等),安装 `up
71
159
  | Gemini CLI | `/{{project}}:update-agent-infra` |
72
160
  | OpenCode | `/update-agent-infra` |
73
161
 
74
- 该命令会拉取最新模板并渲染所有文件。后续更新使用同一命令——自动处理首次安装和增量更新。
162
+ 该命令会拉取最新模板并渲染所有受管理文件。首次安装和后续升级都使用同一条命令。
163
+
164
+ <a id="architecture-overview"></a>
165
+
166
+ ## 架构概览
167
+
168
+ agent-infra 的结构刻意保持简单:引导 CLI 负责生成种子配置,之后由 AI skills 和 workflows 接管后续协作。
169
+
170
+ ### 端到端流程
171
+
172
+ 1. **安装** — `npm install -g @fitlab-ai/agent-infra`(或使用 shell 脚本便捷封装)
173
+ 2. **初始化** — 在项目根目录运行 `ai init`,生成 `.airc.json` 并安装种子命令
174
+ 3. **渲染** — 在任意 AI TUI 中执行 `update-agent-infra`,拉取模板并生成所有受管理文件
175
+ 4. **开发** — 使用 28 个内置 skill 驱动完整生命周期:`analysis → design → implementation → review → fix → commit`
176
+ 5. **升级** — 有新模板版本时再次执行 `update-agent-infra` 即可
177
+
178
+ ### 分层架构
179
+
180
+ ```mermaid
181
+ block-beta
182
+ columns 4
183
+
184
+ block:tui:4
185
+ columns 4
186
+ claude["Claude Code"] codex["Codex"] gemini["Gemini CLI"] opencode["OpenCode"]
187
+ end
188
+
189
+ space:4
190
+
191
+ block:shared:4
192
+ columns 3
193
+ skills["28 Skills"] workflows["4 Workflows"] templates["Templates"]
194
+ end
195
+
196
+ space:4
197
+
198
+ block:project:4
199
+ columns 4
200
+ agents[".agents/"] config[".airc.json"] workspace[".agent-workspace/"] governance["AGENTS.md"]
201
+ end
202
+
203
+ tui -- "slash commands" --> shared
204
+ shared -- "renders into" --> project
205
+ ```
206
+
207
+ GitHub 原生支持 Mermaid 渲染。即使某些下游渲染器不支持,上方文字也足以传达系统结构。
208
+
209
+ <a id="what-you-get"></a>
75
210
 
76
211
  ## 安装效果
77
212
 
78
213
  安装完成后,项目将获得完整的 AI 协作基础设施:
79
214
 
80
- ```
215
+ ```text
81
216
  my-project/
82
217
  ├── .agents/ # 共享 AI 协作配置
83
- │ ├── skills/ # 30+ 内置 AI 技能
84
- │ ├── workflows/ # 结构化开发工作流
218
+ │ ├── skills/ # 28 个内置 AI skills
219
+ │ ├── workflows/ # 4 个预置工作流
85
220
  │ └── templates/ # 任务与产物模板
86
- ├── .agent-workspace/ # 任务工作区(已被 git 忽略)
221
+ ├── .agent-workspace/ # 任务工作区(git 忽略)
87
222
  ├── .claude/ # Claude Code 配置与命令
88
223
  ├── .gemini/ # Gemini CLI 配置与命令
89
224
  ├── .opencode/ # OpenCode 配置与命令
90
225
  ├── .github/ # PR 模板、Issue 表单、工作流
91
- ├── AGENTS.md # 通用 AI 代理指令
92
- ├── CONTRIBUTING.md # 开发指南
93
- ├── SECURITY.md # 安全政策(英文)
94
- ├── SECURITY.zh-CN.md # 安全政策(中文)
226
+ ├── AGENTS.md # 通用 AI agent 指令
227
+ ├── CONTRIBUTING.md # 贡献指南
228
+ ├── SECURITY.md # 安全策略(英文)
229
+ ├── SECURITY.zh-CN.md # 安全策略(中文)
95
230
  └── .airc.json # 中央配置文件
96
231
  ```
97
232
 
98
- ### 内置 AI 技能
233
+ <a id="built-in-ai-skills"></a>
99
234
 
100
- | 分类 | 技能 | 说明 |
101
- |------|------|------|
102
- | **任务管理** | `create-task`、`analyze-task`、`import-issue`、`plan-task`、`implement-task`、`review-task`、`refine-task`、`complete-task` | 完整开发生命周期 |
103
- | **代码质量** | `commit`、`test`、`test-integration` | 带联合署名的提交、运行测试 |
104
- | **PR 与 Issue** | `create-pr`、`sync-issue`、`sync-pr` | 创建 PR、同步进度 |
105
- | **发布** | `release`、`create-release-note` | 版本发布工作流 |
106
- | **安全** | `import-dependabot`、`import-codescan` | 安全告警分析 |
107
- | **维护** | `upgrade-dependency`、`refine-title` | 依赖升级、标题优化 |
235
+ ## 内置 AI Skills
108
236
 
109
- > 所有技能在所有支持的 AI TUI 中通用——同一工作流,任选工具。
237
+ agent-infra 内置 **28 个 AI skills**。它们按使用场景分组,但共享同一个核心目标:无论使用哪种 AI TUI,都能在同一仓库里执行相同的工作流词汇和协作约定。
110
238
 
111
- ### 基本工作流示例
239
+ <a id="task-lifecycle"></a>
112
240
 
113
- 最简单的端到端开发工作流:
241
+ ### 任务生命周期
114
242
 
115
- ```
243
+ | Skill | 描述 | 参数 | 推荐场景 |
244
+ |-------|------|------|---------|
245
+ | `create-task` | 根据自然语言请求创建任务骨架。 | `description` | 从零开始记录新功能、缺陷或改进需求。 |
246
+ | `import-issue` | 将 GitHub Issue 导入本地任务工作区。 | `issue-number` | 把已有 Issue 转成可执行的任务目录。 |
247
+ | `analyze-task` | 为已有任务输出需求分析产物。 | `task-id` | 在设计前明确范围、风险和受影响文件。 |
248
+ | `plan-task` | 编写技术实施方案,并设置人工审查检查点。 | `task-id` | 分析完成后定义具体实现路径。 |
249
+ | `implement-task` | 按批准方案实施并生成实现报告。 | `task-id` | 在方案获批后编写代码、测试和文档。 |
250
+ | `review-task` | 审查实现结果,并按严重程度分类问题。 | `task-id` | 合入前执行结构化代码审查。 |
251
+ | `refine-task` | 按优先级修复审查问题,不额外扩张范围。 | `task-id` | 根据 review 反馈完成修正。 |
252
+ | `complete-task` | 在所有关卡通过后标记任务完成并归档。 | `task-id` | 测试、审查和提交都完成后收尾。 |
253
+
254
+ <a id="task-status"></a>
255
+
256
+ ### 任务状态
257
+
258
+ | Skill | 描述 | 参数 | 推荐场景 |
259
+ |-------|------|------|---------|
260
+ | `check-task` | 查看当前任务状态、工作流进度和下一步建议。 | `task-id` | 不修改任务状态,仅检查当前进展。 |
261
+ | `block-task` | 将任务标记为阻塞并记录阻塞原因。 | `task-id`、`reason`(可选) | 缺少外部依赖、决策或资源时暂停任务。 |
262
+
263
+ <a id="issue-and-pr"></a>
264
+
265
+ ### Issue 与 PR
266
+
267
+ | Skill | 描述 | 参数 | 推荐场景 |
268
+ |-------|------|------|---------|
269
+ | `create-issue` | 根据任务文件创建 GitHub Issue。 | `task-id` | 需要把本地任务同步到 GitHub 跟踪时。 |
270
+ | `sync-issue` | 将任务进度同步回关联的 GitHub Issue。 | `task-id` 或 `issue-number` | 任务推进过程中持续同步状态。 |
271
+ | `create-pr` | 向推断出的目标分支或显式指定分支创建 Pull Request。 | `target-branch`(可选) | 变更准备合入时创建 PR。 |
272
+ | `sync-pr` | 将任务进度和审查元数据同步到 Pull Request。 | `task-id` | 让 PR 元数据与本地任务记录保持一致。 |
273
+
274
+ <a id="code-quality"></a>
275
+
276
+ ### 代码质量
277
+
278
+ | Skill | 描述 | 参数 | 推荐场景 |
279
+ |-------|------|------|---------|
280
+ | `commit` | 创建 Git 提交,并附带任务状态更新和版权年份检查。 | 无 | 在测试通过后固化一组完整变更。 |
281
+ | `test` | 运行项目标准验证流程。 | 无 | 修改后执行编译检查和单元测试验证。 |
282
+ | `test-integration` | 运行集成测试或端到端验证。 | 无 | 需要验证跨模块或整条流程行为时。 |
283
+
284
+ <a id="release-skills"></a>
285
+
286
+ ### 发布
287
+
288
+ | Skill | 描述 | 参数 | 推荐场景 |
289
+ |-------|------|------|---------|
290
+ | `release` | 执行版本发布流程。 | `version`(`X.Y.Z`) | 发布新版本时。 |
291
+ | `create-release-note` | 基于 PR 和 commit 生成发布说明。 | `version`、`previous-version`(可选) | 发布前准备 changelog 时。 |
292
+
293
+ <a id="security-skills"></a>
294
+
295
+ ### 安全
296
+
297
+ | Skill | 描述 | 参数 | 推荐场景 |
298
+ |-------|------|------|---------|
299
+ | `import-dependabot` | 导入 Dependabot 告警并创建修复任务。 | `alert-number` | 将依赖安全告警转入标准任务流程。 |
300
+ | `close-dependabot` | 关闭 Dependabot 告警并记录依据。 | `alert-number` | 告警经评估后无需处理时。 |
301
+ | `import-codescan` | 导入 Code Scanning 告警并创建修复任务。 | `alert-number` | 将 CodeQL 告警纳入常规修复流程。 |
302
+ | `close-codescan` | 关闭 Code Scanning 告警并记录依据。 | `alert-number` | 扫描告警可安全忽略时。 |
303
+
304
+ <a id="project-maintenance"></a>
305
+
306
+ ### 项目维护
307
+
308
+ | Skill | 描述 | 参数 | 推荐场景 |
309
+ |-------|------|------|---------|
310
+ | `upgrade-dependency` | 将依赖从旧版本升级到新版本并验证结果。 | `package`、`old-version`、`new-version` | 进行受控的依赖维护时。 |
311
+ | `refine-title` | 将 Issue 或 PR 标题重构为 Conventional Commits 格式。 | `number` | GitHub 标题格式不规范时。 |
312
+ | `init-labels` | 初始化仓库标准 GitHub labels 体系。 | 无 | 新仓库首次配置 labels 时。 |
313
+ | `init-milestones` | 初始化仓库 milestones 结构。 | 无 | 新仓库首次建立里程碑时。 |
314
+ | `update-agent-infra` | 将项目协作基础设施升级到最新模板版本。 | 无 | 需要刷新共享 AI 工具层时。 |
315
+
316
+ > 所有 skills 都可跨支持的 AI TUI 复用。变化的只是命令前缀,工作流语义保持一致。
317
+
318
+ <a id="prebuilt-workflows"></a>
319
+
320
+ ## 预置工作流
321
+
322
+ agent-infra 内置 **4 个预置工作流**。其中 3 个共享同一条分阶段交付链路:
323
+
324
+ `analysis -> design -> implementation -> review -> fix -> commit`
325
+
326
+ 第 4 个 `code-review` 则更轻量,专门用于审查已有 PR 或分支。
327
+
328
+ | Workflow | 适用场景 | 步骤链 |
329
+ |----------|----------|--------|
330
+ | `feature-development` | 开发新功能或新能力 | `analysis -> design -> implementation -> review -> fix -> commit` |
331
+ | `bug-fix` | 诊断并修复缺陷,同时补回归验证 | `analysis -> design -> implementation -> review -> fix -> commit` |
332
+ | `refactoring` | 进行应保持行为稳定的结构性重构 | `analysis -> design -> implementation -> review -> fix -> commit` |
333
+ | `code-review` | 审查已有 Pull Request 或分支 | `analysis -> review -> report` |
334
+
335
+ ### 生命周期示例
336
+
337
+ 最简单的端到端交付回路如下:
338
+
339
+ ```text
116
340
  import-issue #42 从 GitHub Issue 导入任务
117
- (或: create-task "添加暗色模式") 或直接描述需求创建任务
341
+ (或: create-task "添加暗色模式") 或直接从描述创建任务
118
342
  |
119
- | --> 得到任务 ID, T1
343
+ | --> 得到任务 ID,例如 T1
120
344
  v
121
345
  analyze-task T1 需求分析
122
346
  |
123
347
  v
124
- plan-task T1 设计技术方案 <-- 人工审查检查点
348
+ plan-task T1 设计方案 <-- 人工审查
125
349
  |
126
350
  v
127
351
  implement-task T1 编写代码与测试
@@ -144,26 +368,119 @@ import-issue #42 从 GitHub Issue 导入任务
144
368
  commit 提交最终代码
145
369
  |
146
370
  v
147
- complete-task T1 归档完成
371
+ complete-task T1 归档并完成
148
372
  ```
149
373
 
374
+ <a id="configuration-reference"></a>
375
+
376
+ ## 配置参考
377
+
378
+ 生成出的 `.airc.json` 是引导 CLI、模板系统和后续升级之间的中心契约。
379
+
380
+ ### `.airc.json` 示例
381
+
382
+ ```json
383
+ {
384
+ "project": "my-project",
385
+ "org": "my-org",
386
+ "language": "en",
387
+ "templateSource": "templates/",
388
+ "templateVersion": "v0.3.2",
389
+ "modules": ["ai", "github"],
390
+ "files": {
391
+ "managed": [
392
+ ".agents/skills/",
393
+ ".agents/templates/",
394
+ ".agents/workflows/",
395
+ ".claude/commands/",
396
+ ".gemini/commands/",
397
+ ".opencode/commands/"
398
+ ],
399
+ "merged": [
400
+ ".agents/README.md",
401
+ ".gitignore",
402
+ "AGENTS.md",
403
+ "CONTRIBUTING.md",
404
+ "SECURITY.md"
405
+ ],
406
+ "ejected": []
407
+ }
408
+ }
409
+ ```
410
+
411
+ ### 字段说明
412
+
413
+ | 字段 | 含义 |
414
+ |------|------|
415
+ | `project` | 用于渲染命令、路径和模板内容的项目名。 |
416
+ | `org` | 生成元数据和链接时使用的 GitHub 组织或拥有者。 |
417
+ | `language` | 渲染模板时采用的项目主语言或区域设置。 |
418
+ | `templateSource` | 本地模板根目录。 |
419
+ | `templateVersion` | 当前安装的模板版本,用于升级和差异追踪。 |
420
+ | `modules` | 启用的模板模块。可选值为 `ai` 和 `github`。 |
421
+ | `files` | 针对具体路径配置 `managed`、`merged`、`ejected` 三类更新策略。 |
422
+
423
+ ### 模块说明
424
+
425
+ | 模块 | 包含内容 |
426
+ |------|----------|
427
+ | `ai` | `.agents/`、`.claude/`、`.gemini/`、`.opencode/`、`AGENTS.md` 及相关协作资产 |
428
+ | `github` | `.github/`、贡献模板、发布配置以及 GitHub 治理相关文件 |
429
+
430
+ <a id="file-management-strategies"></a>
431
+
150
432
  ## 文件管理策略
151
433
 
434
+ 每个生成路径都会绑定一种更新策略,它决定 `update-agent-infra` 之后如何处理该文件。
435
+
152
436
  | 策略 | 含义 | 更新行为 |
153
437
  |------|------|---------|
154
- | **managed** | agent-infra 完全控制 | 更新时覆盖,用户不应修改 |
155
- | **merged** | 模板 + 用户定制共存 | AI 智能合并,保留用户添加的内容 |
156
- | **ejected** | 仅首次运行时生成 | 永不更新 |
438
+ | **managed** | 文件完全由 agent-infra 管理 | 升级时重新渲染并覆盖 |
439
+ | **merged** | 模板内容与用户定制共存 | 通过 AI 辅助合并尽量保留本地新增内容 |
440
+ | **ejected** | 仅首次生成,之后归项目自己维护 | 后续升级永不触碰 |
441
+
442
+ ### 策略配置示例
443
+
444
+ ```json
445
+ {
446
+ "files": {
447
+ "managed": [
448
+ ".agents/skills/",
449
+ ".github/workflows/pr-title-check.yml"
450
+ ],
451
+ "merged": [
452
+ ".gitignore",
453
+ "AGENTS.md",
454
+ "CONTRIBUTING.md"
455
+ ],
456
+ "ejected": [
457
+ "SECURITY.md"
458
+ ]
459
+ }
460
+ }
461
+ ```
462
+
463
+ ### 如何把文件从 `managed` 改为 `ejected`
464
+
465
+ 1. 在 `.airc.json` 中把该路径从 `managed` 数组移除。
466
+ 2. 将同一路径加入 `ejected` 数组。
467
+ 3. 再次执行 `update-agent-infra`,让后续升级不再管理这个文件。
157
468
 
158
- 用户可在 `.airc.json` 中按文件调整策略。
469
+ 当某个文件一开始适合由模板控制,但后续逐渐演变成强项目定制内容时,这个做法最合适。
470
+
471
+ <a id="version-management"></a>
159
472
 
160
473
  ## 版本管理
161
474
 
162
- 通过 git tag 使用语义版本号。模板版本记录在 `.airc.json` 的 `templateVersion` 字段中。
475
+ agent-infra 通过 Git tag GitHub release 使用语义化版本号。当前安装的模板版本记录在 `.airc.json` 的 `templateVersion` 字段中,方便人和 AI 工具在升级时都能基于同一个版本基线工作。
476
+
477
+ <a id="contributing"></a>
163
478
 
164
479
  ## 参与贡献
165
480
 
166
- 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解开发指南。
481
+ 开发规范请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)
482
+
483
+ <a id="license"></a>
167
484
 
168
485
  ## 许可协议
169
486
 
package/bin/cli.js CHANGED
@@ -23,7 +23,7 @@ Shorthand: ai (e.g. ai init)
23
23
  Install methods:
24
24
  npm: npm install -g @fitlab-ai/agent-infra
25
25
  npx: npx @fitlab-ai/agent-infra init
26
- curl: curl -fsSL https://raw.githubusercontent.com/fitlab-ai/agent-infra/main/install.sh | sh
26
+ curl: curl -fsSL https://raw.githubusercontent.com/fitlab-ai/agent-infra/main/install.sh | sh (runs npm install -g internally)
27
27
 
28
28
  Examples:
29
29
  cd my-project && agent-infra init
package/lib/version.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
 
3
- const { version: VERSION } = JSON.parse(
3
+ const { version } = JSON.parse(
4
4
  readFileSync(new URL('../package.json', import.meta.url), 'utf8')
5
5
  );
6
+ const VERSION = `v${version}`;
6
7
 
7
8
  export { VERSION };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fitlab-ai/agent-infra",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Bootstrap tool for AI multi-tool collaboration infrastructure — works with Claude Code, Codex, Gemini CLI, and OpenCode",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -100,6 +100,18 @@ Each AI tool has different strengths. Use them accordingly:
100
100
  4. **Run the workflow**: Follow the appropriate workflow in `.agents/workflows/`.
101
101
  5. **Hand off**: When switching AIs, create a handoff document from the template.
102
102
 
103
+ ## Label Conventions
104
+
105
+ GitHub Labels in this project use the following prefixes, each with a defined scope:
106
+
107
+ | Label prefix | Issue | PR | Notes |
108
+ |---|---|---|---|
109
+ | `type:` | — | Yes | Issues use the native GitHub Type field; PRs use `type:` labels for changelog generation and categorization |
110
+ | `status:` | Yes | — | PRs already have their own state flow (Open / Draft / Merged / Closed); Issues use `status:` labels for project tracking states |
111
+ | `in:` | Yes | Yes | Both Issues and PRs can be filtered by module |
112
+
113
+ Initialize the label set with the `/init-labels` command.
114
+
103
115
  ## Skill Authoring Conventions
104
116
 
105
117
  When writing or updating `.agents/skills/*/SKILL.md` files and their templates, keep step numbering consistent:
@@ -100,6 +100,18 @@
100
100
  4. **执行工作流**:按照 `.agents/workflows/` 中相应的工作流执行。
101
101
  5. **交接**:切换 AI 时,从模板创建交接文档。
102
102
 
103
+ ## Label 规范
104
+
105
+ 本项目的 GitHub Labels 按以下前缀分类,各前缀有明确的适用范围:
106
+
107
+ | Label 前缀 | Issue | PR | 说明 |
108
+ |---|---|---|---|
109
+ | `type:` | — | Yes | Issue 使用 GitHub 原生 Type 字段;PR 无原生类型字段,通过 `type:` label 驱动 changelog 和分类 |
110
+ | `status:` | Yes | — | PR 有自身状态流转(Open / Draft / Merged / Closed);Issue 使用 `status:` label 标记等待反馈、已确认等项目管理状态 |
111
+ | `in:` | Yes | Yes | Issue 和 PR 均可按模块筛选 |
112
+
113
+ 初始化 Label 体系:使用 `/init-labels` 命令一次性创建标准 labels。
114
+
103
115
  ## Skill 编写规范
104
116
 
105
117
  编写或维护 `.agents/skills/*/SKILL.md` 及其模板时,步骤编号遵循以下规则: