@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.
- package/README.md +368 -51
- package/README.zh-CN.md +369 -52
- package/bin/cli.js +1 -1
- package/lib/version.js +2 -1
- package/package.json +1 -1
- package/templates/.agents/README.md +12 -0
- package/templates/.agents/README.zh-CN.md +12 -0
- package/templates/.agents/skills/analyze-task/SKILL.md +106 -105
- package/templates/.agents/skills/check-task/SKILL.md +108 -94
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +12 -0
- package/templates/.agents/skills/close-codescan/SKILL.md +64 -63
- package/templates/.agents/skills/close-dependabot/SKILL.md +71 -70
- package/templates/.agents/skills/commit/SKILL.md +19 -4
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +19 -4
- package/templates/.agents/skills/complete-task/SKILL.md +11 -1
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +11 -1
- package/templates/.agents/skills/create-issue/SKILL.md +302 -0
- package/templates/.agents/skills/create-issue/SKILL.zh-CN.md +302 -0
- package/templates/.agents/skills/create-pr/SKILL.md +140 -5
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +140 -5
- package/templates/.agents/skills/create-release-note/SKILL.md +18 -11
- package/templates/.agents/skills/create-release-note/SKILL.zh-CN.md +18 -11
- package/templates/.agents/skills/create-task/SKILL.md +80 -78
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +7 -6
- package/templates/.agents/skills/implement-task/SKILL.md +7 -2
- package/templates/.agents/skills/implement-task/SKILL.zh-CN.md +7 -2
- package/templates/.agents/skills/import-codescan/SKILL.md +54 -53
- package/templates/.agents/skills/import-dependabot/SKILL.md +57 -56
- package/templates/.agents/skills/import-issue/SKILL.md +58 -58
- package/templates/.agents/skills/init-labels/SKILL.md +8 -0
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +8 -0
- package/templates/.agents/skills/plan-task/SKILL.md +151 -149
- package/templates/.agents/skills/refine-task/SKILL.md +147 -137
- package/templates/.agents/skills/refine-task/SKILL.zh-CN.md +10 -2
- package/templates/.agents/skills/review-task/SKILL.md +196 -186
- package/templates/.agents/skills/review-task/SKILL.zh-CN.md +13 -4
- package/templates/.agents/skills/sync-issue/SKILL.md +252 -272
- package/templates/.agents/skills/sync-issue/SKILL.zh-CN.md +26 -47
- package/templates/.agents/skills/sync-pr/SKILL.md +274 -82
- package/templates/.agents/skills/sync-pr/SKILL.zh-CN.md +251 -59
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +1 -1
- package/templates/.claude/CLAUDE.md +13 -0
- package/templates/.claude/CLAUDE.zh-CN.md +13 -0
- package/templates/.claude/commands/create-issue.md +8 -0
- package/templates/.claude/commands/create-issue.zh-CN.md +8 -0
- package/templates/.gemini/commands/_project_/create-issue.toml +8 -0
- package/templates/.gemini/commands/_project_/create-issue.zh-CN.toml +8 -0
- package/templates/.opencode/commands/create-issue.md +11 -0
- package/templates/.opencode/commands/create-issue.zh-CN.md +11 -0
- package/templates/AGENTS.md +13 -0
- package/templates/AGENTS.zh-CN.md +13 -0
package/README.zh-CN.md
CHANGED
|
@@ -5,47 +5,135 @@
|
|
|
5
5
|
[](License.txt)
|
|
6
6
|
[](https://nodejs.org/)
|
|
7
7
|
[](https://github.com/fitlab-ai/agent-infra/releases)
|
|
8
|
+
[](CONTRIBUTING.md)
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
AI 编程代理之间缺失的协作层 —— 为 Claude Code、Codex、Gemini CLI、OpenCode 提供统一的 skills 和工作流。
|
|
11
|
+
|
|
12
|
+
**AI Agent 半自动化编程神器。** 定义需求,让 AI 完成分析、方案设计、编码、审查和交付 —— 你只需在关键节点介入。
|
|
10
13
|
|
|
11
14
|
[English](README.md)
|
|
12
15
|
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
126
|
+
### 更新 agent-infra
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
npm update -g @fitlab-ai/agent-infra
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
查看当前版本:
|
|
44
133
|
|
|
45
134
|
```bash
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
#
|
|
144
|
+
# 或:agent-infra init
|
|
57
145
|
```
|
|
58
146
|
|
|
59
|
-
CLI
|
|
147
|
+
CLI 会收集项目元数据,向所有支持的 AI TUI 安装 `update-agent-infra` 种子命令,并生成 `.airc.json`。
|
|
60
148
|
|
|
61
|
-
>
|
|
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/ #
|
|
84
|
-
│ ├── workflows/ #
|
|
218
|
+
│ ├── skills/ # 28 个内置 AI skills
|
|
219
|
+
│ ├── workflows/ # 4 个预置工作流
|
|
85
220
|
│ └── templates/ # 任务与产物模板
|
|
86
|
-
├── .agent-workspace/ #
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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** |
|
|
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
|
-
|
|
469
|
+
当某个文件一开始适合由模板控制,但后续逐渐演变成强项目定制内容时,这个做法最合适。
|
|
470
|
+
|
|
471
|
+
<a id="version-management"></a>
|
|
159
472
|
|
|
160
473
|
## 版本管理
|
|
161
474
|
|
|
162
|
-
通过
|
|
475
|
+
agent-infra 通过 Git tag 和 GitHub release 使用语义化版本号。当前安装的模板版本记录在 `.airc.json` 的 `templateVersion` 字段中,方便人和 AI 工具在升级时都能基于同一个版本基线工作。
|
|
476
|
+
|
|
477
|
+
<a id="contributing"></a>
|
|
163
478
|
|
|
164
479
|
## 参与贡献
|
|
165
480
|
|
|
166
|
-
|
|
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
package/package.json
CHANGED
|
@@ -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` 及其模板时,步骤编号遵循以下规则:
|