team-skills 1.2.2 → 1.3.0
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/package.json +1 -1
- package/scripts/check-skill-structure.js +1 -1
- package/skills/_team-rules/constitutional-rules.md +16 -23
- package/skills/_team-rules/skill-spec.md +485 -0
- package/skills/_team-rules/verification-protocol.md +24 -26
- package/skills/team-brainstorm/SKILL.md +78 -54
- package/skills/team-debug/SKILL.md +74 -82
- package/skills/team-feedback/SKILL.md +105 -73
- package/skills/team-finish/SKILL.md +85 -82
- package/skills/team-impl/SKILL.md +154 -158
- package/skills/team-orchestrator/SKILL.md +378 -253
- package/skills/team-orchestrator/references/14-team-template.md +2 -2
- package/skills/team-review/SKILL.md +144 -125
- package/skills/team-score/SKILL.md +144 -98
- package/skills/team-spec/SKILL.md +122 -145
- package/skills/team-spec/references/01-plan-template.md +6 -4
- package/skills/team-test/SKILL.md +100 -85
- package/skills/team-test/references/10-test-report-template.md +11 -0
- package/skills/team-verify/SKILL.md +79 -91
- package/skills/using-team-skills/SKILL.md +48 -41
|
@@ -7,8 +7,6 @@ description: Use when task needs full spec→impl→test→review pipeline with
|
|
|
7
7
|
|
|
8
8
|
## 角色定位
|
|
9
9
|
|
|
10
|
-
你是 AI 协作团队的 **编排器**。你的核心职责是**有向图流程编排**——不是简单的线性流水线,而是根据每个环节的产出质量动态决定下一步走向哪里。
|
|
11
|
-
|
|
12
10
|
```mermaid
|
|
13
11
|
flowchart TD
|
|
14
12
|
H1["H1: 人类确认目标"] --> branch["创建功能分支"]
|
|
@@ -32,32 +30,37 @@ flowchart TD
|
|
|
32
30
|
### 系统提示词
|
|
33
31
|
|
|
34
32
|
```
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
1.
|
|
39
|
-
2.
|
|
40
|
-
3.
|
|
41
|
-
4.
|
|
42
|
-
5. 遵守 Constitutional Rules
|
|
43
|
-
6.
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
角色:流程编排器——有向图编排,非线性流水线
|
|
34
|
+
核心原则:根据产出质量动态决定回退或继续,对"先记着后面修"零容忍(FP-4)
|
|
35
|
+
流程:
|
|
36
|
+
1. 理解需求,拆解子任务
|
|
37
|
+
2. 有向图调度:specAgent → implAgent → testAgent → reviewAgent
|
|
38
|
+
3. H1-H4 人类介入点暂停等待确认
|
|
39
|
+
4. 各 Agent 产出质量决定回退或继续
|
|
40
|
+
5. 遵守 Constitutional Rules(`_team-rules/constitutional-rules.md`)
|
|
41
|
+
6. --compact 精简模式:H1/H2 简化为单句确认,跳过 Step 6,H4 不可省略
|
|
42
|
+
约束:
|
|
43
|
+
- testAgent 发现 bug → 回退 implAgent;spec 遗漏 → 回退 specAgent
|
|
44
|
+
- 同一阶段回退 ≤ 2 次
|
|
45
|
+
- H1/H4 任何模式下不可省略
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
###
|
|
48
|
+
### 路由推理检查点
|
|
49
|
+
|
|
50
|
+
**核心指令**:价值在于协调而非执行。关注:Agent 是否卡住(需回退或 H3),下一个 Agent 需要什么上下文。对"先记着后面修"零容忍(FP-4)。
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
**推理框架**:
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
1. **当前状态**:上一个 Agent 产出质量?DONE 还是 DONE_WITH_CONCERNS?
|
|
55
|
+
2. **路由选择**:调度哪个 Agent?有无需回退?
|
|
56
|
+
3. **上下文传递**:下一个 Agent 需要哪些文件?传递完整吗?
|
|
57
|
+
4. **门禁检查**:当前阶段门禁全部满足?有无被绕过?
|
|
58
|
+
5. **人类介入**:需要触发 H3 吗?回退次数接近上限?
|
|
53
59
|
|
|
54
|
-
|
|
55
|
-
2. **路由选择**:下一步应该调度哪个 Agent?有没有需要回退的情况?
|
|
56
|
-
3. **上下文传递**:下一个 Agent 需要哪些文件和上下文?传递是否完整?
|
|
57
|
-
4. **门禁检查**:当前阶段的门禁条件是否全部满足?有没有被绕过的?
|
|
58
|
-
5. **人类介入判断**:当前是否需要触发 H3?回退次数是否接近上限?
|
|
60
|
+
**对抗自检**:
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
- [ ] 下一个 Agent 有足够信息开始工作吗?
|
|
63
|
+
- [ ] 回退上下文是否足够让目标 Agent 一次修好?
|
|
61
64
|
|
|
62
65
|
## Iron Law
|
|
63
66
|
|
|
@@ -93,7 +96,7 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
93
96
|
┌──────────────────┐ │
|
|
94
97
|
│ specAgent │ │
|
|
95
98
|
│ 产出 01-05 文件 │ │
|
|
96
|
-
│ + 分期建议
|
|
99
|
+
│ + 分期建议 │ │
|
|
97
100
|
└──────┬───────────┘ │
|
|
98
101
|
│ │
|
|
99
102
|
▼ │
|
|
@@ -109,7 +112,7 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
109
112
|
▼ └──→ 返回 specAgent 修改
|
|
110
113
|
┌──────────────────┐
|
|
111
114
|
│ implAgent │
|
|
112
|
-
│ TDD 开发(
|
|
115
|
+
│ TDD 开发(当期) │
|
|
113
116
|
│ 产出 06-08 + 代码│
|
|
114
117
|
│ + 自我约束预算 │
|
|
115
118
|
└──────┬───────────┘
|
|
@@ -155,12 +158,13 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
155
158
|
┌──────────────────────────┐ │
|
|
156
159
|
│ H4: 人类验收最终交付物 │ │
|
|
157
160
|
│ (展示 14-team + 15-brief │ │
|
|
158
|
-
│ + 代码 diff +
|
|
161
|
+
│ + 代码 diff + 分期建议) │ │
|
|
159
162
|
├──────────────────────────┤ │
|
|
160
|
-
│
|
|
163
|
+
│ 分期决策: 是否继续下一期 │ │
|
|
161
164
|
└──────┬───────────────────┘ │
|
|
162
165
|
│ │
|
|
163
166
|
├── 验收通过 → 完成 ✅ │
|
|
167
|
+
├── 下期批准 → 新建下期任务(新序号 + 新目录)→ 从 Step 1 重启
|
|
164
168
|
│ │
|
|
165
169
|
└── 不通过 → 根据反馈 ──────→ 回到对应 Agent
|
|
166
170
|
```
|
|
@@ -170,38 +174,36 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
170
174
|
| 介入点 | 触发时机 | 编排器动作 | 人类决策内容 | 超时策略 |
|
|
171
175
|
| ------ | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------ |
|
|
172
176
|
| H1 | 编排器初始化后,调度任何 Agent 之前 | 向用户展示任务理解 + 初步方案 + 风险预判 + 分期建议 | 确认目标理解是否正确,方案方向是否合理,是否接受分期交付 | 等待用户回复 |
|
|
173
|
-
| H2 | specAgent 产出 01-05 后 | 向用户展示 01-plan.md 和 03-sdd.md 核心内容 + 分期方案
|
|
177
|
+
| H2 | specAgent 产出 01-05 后 | 向用户展示 01-plan.md 和 03-sdd.md 核心内容 + 分期方案 + Kill Switch 评估 | 确认规格方案是否接受,是否需要调整,是否继续执行 | 等待用户回复 |
|
|
174
178
|
| H3 | testAgent/reviewAgent 发现需要人类决策的问题,或触发 Kill Switch | 向用户展示问题描述 + 建议方案 + 选项 | 决策如何处理问题,或确认是否终止任务 | 等待用户回复 |
|
|
175
|
-
| H4 | reviewAgent 完成 + team 产出 14-15 后 | 向用户展示交付物清单 + 代码 diff 摘要 +
|
|
179
|
+
| H4 | reviewAgent 完成 + team 产出 14-15 后 | 向用户展示交付物清单 + 代码 diff 摘要 + 后续分期候选 + Kill Switch 评估 | 验收最终交付物,决策是否启动下一期,或触发 Kill Switch 终止 | 等待用户回复 |
|
|
176
180
|
|
|
177
181
|
## 流程状态持久化
|
|
178
182
|
|
|
179
|
-
>
|
|
183
|
+
> 防止 LLM 上下文压缩导致流程位置丢失。以下规则将状态持久化到磁盘。
|
|
180
184
|
|
|
181
185
|
### 规则 1:进入 H 节点前写 checkpoint
|
|
182
186
|
|
|
183
|
-
进入任何 H 节点(H1/H2/H3/H4
|
|
187
|
+
进入任何 H 节点(H1/H2/H3/H4)前,先 **WRITE** `.checkpoint.json`,记录 `current_step`、`next_step`、`pending_decision`。
|
|
184
188
|
|
|
185
189
|
### 规则 2:H 节点对话超过 3 轮后重读 checkpoint
|
|
186
190
|
|
|
187
|
-
在 H 节点与用户对话超过 3 轮时,**
|
|
191
|
+
在 H 节点与用户对话超过 3 轮时,**READ** `docs/tasks/{slug}/.checkpoint.json` 确认当前流程位置,防止因上下文压缩导致流程迷失。
|
|
188
192
|
|
|
189
193
|
### 规则 3:H 节点回复嵌入流程锚点
|
|
190
194
|
|
|
191
|
-
编排器在 H
|
|
195
|
+
编排器在 H 节点每次回复用户时,在回复末尾附加流程锚点:
|
|
192
196
|
|
|
193
197
|
```markdown
|
|
194
198
|
<!-- orchestrator-anchor: slug={slug} step={current_step} next={next_step} -->
|
|
195
199
|
```
|
|
196
200
|
|
|
197
|
-
此锚点在上下文压缩后仍可作为最近输出被保留,帮助编排器快速定位。
|
|
198
|
-
|
|
199
201
|
### 规则 4:上下文恢复协议
|
|
200
202
|
|
|
201
|
-
|
|
203
|
+
**IF** 编排器不确定当前流程位置(上下文被压缩后):
|
|
202
204
|
|
|
203
|
-
1.
|
|
204
|
-
2. 扫描 slug
|
|
205
|
+
1. **READ** `docs/tasks/{slug}/.checkpoint.json` → 获取 `current_step` 和 `next_step`
|
|
206
|
+
2. **EXEC** 扫描 slug 目录下已有文件 → 交叉验证阶段
|
|
205
207
|
3. 从 checkpoint 记录的位置恢复流程,不重复已完成的 Step
|
|
206
208
|
|
|
207
209
|
## 质量职责
|
|
@@ -224,7 +226,7 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
224
226
|
|
|
225
227
|
用户已分步执行了各 Agent,现在执行 `/team-orchestrator {slug}` 仅补全团队级证据。
|
|
226
228
|
|
|
227
|
-
**方式 B 流程**:跳过 Step 1-5,从 Step 6
|
|
229
|
+
**方式 B 流程**:跳过 Step 1-5,从 Step 6 开始。**READ** `docs/tasks/{slug}/` 下文件 → 完整模式检查 01-13 + task-rules.md;精简模式检查 03-04 + 06-13 + task-rules.md。**RESOLVE** `mode`:`.checkpoint.json` 有 mode → 取其值;有 01-plan.md → 完整;仅有 03-sdd.md + 04-boundary.md → 精简。缺失文件 → **H3** 由用户决定。
|
|
228
230
|
|
|
229
231
|
### 方式 C:精简模式(简单任务)
|
|
230
232
|
|
|
@@ -236,9 +238,9 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
236
238
|
| ---- | -------- | -------- | ------------ |
|
|
237
239
|
| Small | 修 bug、改文案、加字段、调样式 | `--compact` 精简模式 | 11 个文档(03-04 + 06-13 + task-rules) |
|
|
238
240
|
| Medium | 新增功能模块、重构组件、加 API | 完整模式(默认) | 全部 17 文件 |
|
|
239
|
-
| Large | 跨系统重构、架构变更、多模块联动 | 完整模式 +
|
|
241
|
+
| Large | 跨系统重构、架构变更、多模块联动 | 完整模式 + 多期分期 | 全部 17 文件 + 多期迭代 |
|
|
240
242
|
|
|
241
|
-
|
|
243
|
+
判断标准:预计修改 ≤ 3 文件且无跨模块影响 → Small;4-15 文件 → Medium;> 15 文件或跨 2+ 模块 → Large。
|
|
242
244
|
|
|
243
245
|
**精简模式 vs 完整模式对比**:
|
|
244
246
|
|
|
@@ -258,111 +260,149 @@ NO AGENT DISPATCH WITHOUT H1 HUMAN CONFIRMATION FIRST
|
|
|
258
260
|
|
|
259
261
|
### 执行模型
|
|
260
262
|
|
|
261
|
-
默认执行模型是**单会话顺序执行**:编排器在同一个 AI 会话中依次调用各 sub-skill(`/team-spec` → `/team-impl` → `/team-test` → `/team-review
|
|
263
|
+
默认执行模型是**单会话顺序执行**:编排器在同一个 AI 会话中依次调用各 sub-skill(`/team-spec` → `/team-impl` → `/team-test` → `/team-review` → `/team-finish`)。
|
|
262
264
|
|
|
263
|
-
|
|
265
|
+
**IF** 工具支持 Agent tool 并行调度 → 可在不相互依赖的阶段使用并行执行(如 Step 6 的一致性检查),但 spec→impl→test→review 主链路必须顺序执行。
|
|
264
266
|
|
|
265
267
|
### 断点续传机制
|
|
266
268
|
|
|
267
|
-
当 session 中断或跨 session
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
269
|
+
> 当 session 中断或跨 session 继续任务时,通过 checkpoint 文件恢复流程位置。
|
|
270
|
+
|
|
271
|
+
**WRITE** checkpoint(每个 Step 转换点,包括进入/离开 H 节点)→ 更新 `docs/tasks/{slug}/.checkpoint.json`:
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"slug": "0001-add-tooltip",
|
|
276
|
+
"task_description": "实现用户注册功能",
|
|
277
|
+
"branch": "0001-add-tooltip",
|
|
278
|
+
"base_branch": "main",
|
|
279
|
+
"current_step": "H2",
|
|
280
|
+
"next_step": "Step 3",
|
|
281
|
+
"phase": "spec",
|
|
282
|
+
"completed_steps": ["Step 1", "H1", "Step 1.5", "Step 2"],
|
|
283
|
+
"pending_decision": "用户确认规格方案",
|
|
284
|
+
"completed_at": "2026-01-15T10:30:00Z",
|
|
285
|
+
"rollback_counts": {
|
|
286
|
+
"test→impl": 0,
|
|
287
|
+
"test→spec": 0,
|
|
288
|
+
"review→impl": 0,
|
|
289
|
+
"review→spec": 0
|
|
290
|
+
},
|
|
291
|
+
"status": "IN_PROGRESS|DONE|DONE_WITH_CONCERNS|NEEDS_CONTEXT|BLOCKED",
|
|
292
|
+
"blocked_reason": null,
|
|
293
|
+
"parent_slug": null
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**`status` 字段使用规则**:
|
|
298
|
+
|
|
299
|
+
- `IN_PROGRESS`:默认值。Step 1 到 Step 8 期间所有正常流转
|
|
300
|
+
- **BLOCKED**:触发 **H3** 或 Kill Switch 时设置,必须同时填写 `blocked_reason`
|
|
301
|
+
- **NEEDS_CONTEXT**:缺少关键上下文无法继续时设置
|
|
302
|
+
- **DONE**:仅在 Step 8 质量检查全部通过后设置。执行过程中不得使用此值
|
|
303
|
+
- **DONE_WITH_CONCERNS**:Step 8 通过但有保留意见时设置
|
|
304
|
+
|
|
305
|
+
**恢复检测**:**IF** 用户执行 `/team-orchestrator {slug}`(已有 slug)→ **READ** `.checkpoint.json`:
|
|
306
|
+
|
|
307
|
+
**MATCH** `checkpoint.status`:
|
|
308
|
+
|
|
309
|
+
- `IN_PROGRESS` → 从 `next_step` 对应的 Step 继续
|
|
310
|
+
- `DONE` || `DONE_WITH_CONCERNS` → 提示用户"该任务已完成",询问是否新建变体任务
|
|
311
|
+
- `BLOCKED` → 触发 **H3** 展示 `blocked_reason`
|
|
312
|
+
- `NEEDS_CONTEXT` → 展示缺失信息,请求用户补充
|
|
313
|
+
- *not found*(checkpoint 不存在)→ **GOTO** 恢复:文件推断阶段
|
|
314
|
+
|
|
315
|
+
#### 恢复:文件推断阶段
|
|
316
|
+
|
|
317
|
+
> 当 checkpoint 不存在时,根据已有文件推断应从哪个 Step 恢复。
|
|
318
|
+
|
|
319
|
+
**MATCH** `existing_files`:
|
|
320
|
+
|
|
321
|
+
- 仅有 `00-design-brief.md` → **GOTO** Step 1.5 或 Step 2
|
|
322
|
+
- 有 `03-sdd.md` + `04-boundary.md`(或 01-05 齐全)→ **GOTO** Step 3
|
|
323
|
+
- 有 `06-tdd-log.md` 但无 `09-test-matrix.md` → **GOTO** Step 4
|
|
324
|
+
- 有 `09-10` 但无 `11-review.md` → **GOTO** Step 5
|
|
325
|
+
- 有 `11-13` 但无 `14-team.md` → **GOTO** Step 6
|
|
326
|
+
- 有 `14-team.md` + `15-brief.md` → **GOTO** Step 7
|
|
327
|
+
- *none*(不符合任何模式)→ **H3**,展示已有/缺失文件清单,由用户决定
|
|
328
|
+
|
|
329
|
+
**回退计数规则**:`rollback_counts` 按 `source→target` 对独立计数。计数仅在以下情况重置:(1) **H3** 后用户明确决定重试;(2) specAgent 重新产出规格后,重置所有下游计数。正常回退修复不重置。
|
|
316
330
|
|
|
317
331
|
### Step 1:初始化 + H1 人类确认
|
|
318
332
|
|
|
319
|
-
1.
|
|
320
|
-
2.
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
333
|
+
1. **READ** 用户参数 → 提取任务描述
|
|
334
|
+
2. **RESOLVE** `slug`:
|
|
335
|
+
1. **READ** `docs/tasks/` 已有目录(**IF** 不存在 → 创建)
|
|
336
|
+
2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/00-design-brief.md` 存在 → 复用该 slug
|
|
337
|
+
3. **IF** 分期任务(H4 后续分期触发)→ slug 包含 `-p{N}` 后缀,checkpoint 记录 `parent_slug`
|
|
338
|
+
4. *default* → 取最大序号 +1(从 `0001` 起),拼接 `{NNNN}-{关键词}`(kebab-case,≤ 50 字符)
|
|
339
|
+
3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)
|
|
340
|
+
4. **WRITE** checkpoint:`current_step=Step 1, next_step=H1, phase=init, status=IN_PROGRESS`
|
|
341
|
+
5. **READ** `docs/tasks/progress.md`(**IF** 不存在 → 创建含表头)→ **ASSERT** `{slug}` 未被重复派发
|
|
342
|
+
- **IF** 已存在且状态 DONE → 提示用户,询问是否新建变体任务
|
|
328
343
|
|
|
329
|
-
|
|
344
|
+
> progress.md 是跨任务进度索引,位于 `docs/tasks/` 根目录,不在 slug 子目录中。
|
|
330
345
|
|
|
331
|
-
|
|
346
|
+
6. **WRITE** checkpoint:`current_step=H1, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
|
|
347
|
+
7. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
|
|
348
|
+
- **IF** `00-design-brief.md` 存在 → **READ** 并将摘要纳入展示
|
|
349
|
+
|
|
350
|
+
**GATE** H1 用户已确认
|
|
332
351
|
|
|
333
|
-
H1
|
|
352
|
+
- 用户确认 → **WRITE** checkpoint:`completed_steps 追加 H1` → **GOTO** Step 1.5
|
|
353
|
+
- 用户不确认 → 根据反馈调整 → 重新展示
|
|
354
|
+
- 任务明显不可行 → 向用户提出终止建议(Kill Switch 预检查)
|
|
355
|
+
|
|
356
|
+
### Step 1.5:Git 分支初始化
|
|
334
357
|
|
|
335
|
-
|
|
358
|
+
> H1 确认后、specAgent 启动前,创建功能分支隔离本次任务的所有变更。
|
|
336
359
|
|
|
337
|
-
|
|
360
|
+
#### 1.5.1 确定基准分支
|
|
338
361
|
|
|
339
|
-
|
|
340
|
-
2. **Git 远程默认分支**:`git symbolic-ref refs/remotes/origin/HEAD` 解析出分支名;失败则 `git remote show origin` 解析 HEAD branch
|
|
341
|
-
3. **常见分支名兜底**:按 `main` → `master` → `develop` 顺序检查本地是否存在(`git show-ref --verify refs/heads/{name}`)
|
|
362
|
+
**RESOLVE** `base_branch`(首个命中即停):
|
|
342
363
|
|
|
343
|
-
|
|
364
|
+
1. **READ** `CLAUDE.md` / `.cursor/rules/` → 查找 `base_branch` 或 `default_branch` 配置项
|
|
365
|
+
2. **EXEC** `git symbolic-ref refs/remotes/origin/HEAD` → 解析分支名;失败则 **EXEC** `git remote show origin`
|
|
366
|
+
3. **FOR** `name` in [`main`, `master`, `develop`] → **EXEC** `git show-ref --verify refs/heads/{name}` 首个存在即停
|
|
367
|
+
4. *none* → **H3**,请求用户指定基准分支
|
|
344
368
|
|
|
345
369
|
#### 1.5.2 创建功能分支
|
|
346
370
|
|
|
347
|
-
1.
|
|
348
|
-
2.
|
|
349
|
-
|
|
350
|
-
|
|
371
|
+
1. **EXEC** `git branch --show-current` → 获取当前分支名
|
|
372
|
+
2. **EXEC** `git status --porcelain` → 检查未提交变更
|
|
373
|
+
- **IF** `output` 非空 → **GOTO** 1.5.2.1:处理未提交变更
|
|
374
|
+
3. **EXEC** `git checkout -b {slug}`
|
|
375
|
+
- **ASSERT** `exit_code == 0`(分支已存在 → `git checkout {slug}`)
|
|
376
|
+
4. **WRITE** checkpoint:`current_step=Step 2, branch={slug}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
|
|
377
|
+
|
|
378
|
+
#### 1.5.2.1:处理未提交变更
|
|
379
|
+
|
|
380
|
+
> 当 `git status --porcelain` 输出非空时触发。
|
|
381
|
+
|
|
382
|
+
**WRITE**(对话中)变更列表给用户。
|
|
383
|
+
|
|
384
|
+
**MATCH** `user_choice`:
|
|
385
|
+
|
|
386
|
+
- (A) stash 后继续 → **EXEC** `git stash` → **GOTO** 1.5.2 步骤 3
|
|
387
|
+
- (B) 先提交再继续 → 等待用户提交 → **GOTO** 1.5.2 步骤 3
|
|
388
|
+
- (C) 取消 → **BLOCKED**
|
|
389
|
+
|
|
390
|
+
不自动 stash 或丢弃。
|
|
351
391
|
|
|
352
392
|
**跳过条件**(不创建分支):
|
|
353
393
|
|
|
354
|
-
-
|
|
355
|
-
-
|
|
394
|
+
- **IF** 当前分支名 ≠ `base_branch` → 使用当前分支,checkpoint 中 `branch` 记录当前分支名
|
|
395
|
+
- **IF** 用户指定 `--no-branch` → 直接在当前分支上工作
|
|
356
396
|
|
|
357
|
-
|
|
397
|
+
**恢复场景**:**IF** 断点续传(checkpoint 已有 `branch` 字段)→ **ASSERT** 当前分支与 checkpoint 一致。不一致 → 提示用户切换分支,不自动切换。
|
|
358
398
|
|
|
359
399
|
### Step 2:调度 specAgent
|
|
360
400
|
|
|
361
|
-
**
|
|
401
|
+
**ROUTE** `team-spec`
|
|
362
402
|
|
|
363
403
|
调用方式取决于工具能力:
|
|
364
404
|
|
|
365
|
-
- **Claude Code**:直接执行 `/team-spec {任务描述}
|
|
405
|
+
- **Claude Code**:直接执行 `/team-spec {任务描述}`
|
|
366
406
|
- **支持 Agent tool 的工具**:通过 Agent tool 调度,传递以下 prompt
|
|
367
407
|
|
|
368
408
|
```
|
|
@@ -375,31 +415,47 @@ H1 确认后、specAgent 启动前,创建功能分支隔离本次任务的所
|
|
|
375
415
|
背景参考:{如果 docs/tasks/{slug}/00-design-brief.md 存在,将其内容作为设计背景输入;否则写"无"}
|
|
376
416
|
约束:遵守 team-spec Skill 的 Phase 1-3 步骤;所有结论标注来源标签;产出前执行自检清单。
|
|
377
417
|
回退上下文:{如有 testAgent/reviewAgent 报告的 spec 遗漏则附上,否则写"无"}
|
|
418
|
+
分期上下文:{如果是分期继承任务,附上上期的 docs/tasks/{parent_slug}/01-plan.md 候选表和 03-sdd.md 路径;否则写"无"}
|
|
378
419
|
|
|
379
420
|
读取 skills/team-spec/SKILL.md 获取完整执行步骤。
|
|
380
421
|
```
|
|
381
422
|
|
|
382
|
-
|
|
423
|
+
**完成验证**(产出门禁):
|
|
424
|
+
|
|
425
|
+
**IF** `mode == full` → **FOR** each file in [`01-plan.md`, `02-context.md`, `03-sdd.md`, `04-boundary.md`, `05-risk.md`, `prompt-template.md`]:
|
|
426
|
+
**ELSE**(`mode == compact`)→ **FOR** each file in [`03-sdd.md`, `04-boundary.md`]:
|
|
427
|
+
|
|
428
|
+
- **ASSERT** `文件存在`
|
|
429
|
+
- **ASSERT** `有效行数 >= 5`
|
|
430
|
+
- 任一不通过 → **ROLLBACK** specAgent,指明缺失文件名
|
|
383
431
|
|
|
384
|
-
|
|
432
|
+
**WRITE** checkpoint:`current_step=H2, next_step=Step 3, phase=spec, completed_steps 追加 Step 2`
|
|
385
433
|
|
|
386
434
|
### Step 2.5:H2 人类确认规格 + Kill Switch 检查
|
|
387
435
|
|
|
388
|
-
|
|
436
|
+
**IF** `mode == compact`:
|
|
437
|
+
|
|
438
|
+
- **WRITE**(对话中)一句话摘要:"规格概要:{SDD 核心目标与修改范围}。是否继续?"→ 等待确认
|
|
439
|
+
- **WRITE** checkpoint:`completed_steps 追加 H2_compact`
|
|
440
|
+
- **GOTO** Step 3
|
|
441
|
+
|
|
442
|
+
**ELSE**(`mode == full`):
|
|
443
|
+
|
|
444
|
+
- **WRITE**(对话中)向用户展示 `01-plan.md` 和 `03-sdd.md` 核心内容 + 分期方案 + 自我约束预算
|
|
389
445
|
|
|
390
|
-
|
|
446
|
+
**MATCH** `user_response`:
|
|
391
447
|
|
|
392
|
-
- 用户确认 →
|
|
393
|
-
- 用户要求修改 →
|
|
394
|
-
-
|
|
448
|
+
- 用户确认 → **WRITE** checkpoint:`current_step=Step 3, completed_steps 追加 H2` → **GOTO** Step 3
|
|
449
|
+
- 用户要求修改 → **GOTO** Step 2(根据反馈调整后重新调度 specAgent)
|
|
450
|
+
- Kill Switch(用户认为不可行/范围不可接受)→ 终止流程
|
|
395
451
|
|
|
396
452
|
### Step 3:调度 implAgent
|
|
397
453
|
|
|
398
|
-
**
|
|
454
|
+
**ROUTE** `team-impl`
|
|
399
455
|
|
|
400
456
|
调用方式取决于工具能力:
|
|
401
457
|
|
|
402
|
-
- **Claude Code**:直接执行 `/team-impl
|
|
458
|
+
- **Claude Code**:直接执行 `/team-impl`
|
|
403
459
|
- **支持 Agent tool 的工具**:通过 Agent tool 调度,传递以下 prompt
|
|
404
460
|
|
|
405
461
|
```
|
|
@@ -408,36 +464,50 @@ H1 确认后、specAgent 启动前,创建功能分支隔离本次任务的所
|
|
|
408
464
|
任务 slug:{slug}
|
|
409
465
|
模式:{完整 / --compact 精简}
|
|
410
466
|
输入目录:docs/tasks/{slug}/(完整模式读取 01-05 + prompt-template.md;精简模式读取 03-sdd.md + 04-boundary.md)
|
|
411
|
-
约束:遵守 team-impl Skill 步骤;04-boundary.md 的 allow/deny 不可越界;遵循 TDD
|
|
412
|
-
TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功能点} (RED)),再 commit 实现(feat:/fix
|
|
467
|
+
约束:遵守 team-impl Skill 步骤;04-boundary.md 的 allow/deny 不可越界;遵循 TDD 红-绿-重构循环;当期范围聚焦。
|
|
468
|
+
TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功能点} (RED)),再 commit 实现(feat:/fix:)。编排器将验证 06-tdd-log.md 中 RED→GREEN 顺序和失败输出,不合格将回退。
|
|
413
469
|
回退上下文:{如有 testAgent/reviewAgent 的 bug 报告则附上,否则写"无"}
|
|
470
|
+
回退修复要求:{如果是回退修复,写"修复遵循 TDD 循环,更新 06-tdd-log.md 和 08-ai-decisions.md,重新运行全量测试";首次调度写"无"}
|
|
414
471
|
|
|
415
472
|
读取 skills/team-impl/SKILL.md 获取完整执行步骤。
|
|
416
473
|
```
|
|
417
474
|
|
|
418
|
-
|
|
475
|
+
**完成验证**(产出门禁):
|
|
419
476
|
|
|
420
|
-
|
|
477
|
+
**FOR** each file in [`06-tdd-log.md`, `07-prompt-log.md`, `08-ai-decisions.md`]:
|
|
421
478
|
|
|
422
|
-
**
|
|
479
|
+
- **ASSERT** `文件存在` && `有效行数 >= 5`
|
|
480
|
+
- **ASSERT** `06-tdd-log.md` 至少包含一个 `RED` 段落标记
|
|
481
|
+
- 任一不通过 → **ROLLBACK** implAgent,指明缺失文件名
|
|
423
482
|
|
|
424
|
-
|
|
425
|
-
2. **失败输出验证**:RED 段落的"失败输出"字段非空,且包含错误关键词(FAIL / fail / Error / error / ✗ / FAILED)
|
|
426
|
-
3. **通过输出验证**:GREEN 段落的"通过输出"字段非空,且包含通过关键词(PASS / pass / OK / ✓ / ✅ / passed)
|
|
427
|
-
4. **时间递增验证**:RED 时间 < GREEN 时间 < REFACTOR 时间(如有)
|
|
428
|
-
5. **git 提交验证**:`git log --oneline` 中同一功能点存在 `test:` 提交
|
|
483
|
+
**测试/CI 门禁**:
|
|
429
484
|
|
|
430
|
-
|
|
485
|
+
**EXEC** 项目测试和 CI 检查命令 → **ASSERT** `exit_code == 0` && `failures == 0`
|
|
431
486
|
|
|
432
|
-
|
|
487
|
+
- **IF** implAgent 已在 `06-tdd-log.md` 中提供测试输出证据(验证命令 + 退出码 + 输出摘要)→ 可验证证据完整性而非重复执行,但证据须为当次运行且符合 `_team-rules/verification-protocol.md` 结构
|
|
488
|
+
- **IF** `exit_code != 0` → **ROLLBACK** implAgent,附失败输出和具体失败项
|
|
489
|
+
|
|
490
|
+
**TDD 证据验证**(Constitutional Rule #9 门禁):
|
|
491
|
+
|
|
492
|
+
**READ** `06-tdd-log.md` → **FOR** each `feature_block`:
|
|
493
|
+
|
|
494
|
+
1. **ASSERT** `RED 位置 < GREEN 位置`
|
|
495
|
+
2. **ASSERT** `RED.失败输出` 非空 && `RED.失败输出` 包含 `FAIL|fail|Error|error|✗|FAILED`
|
|
496
|
+
3. **ASSERT** `GREEN.通过输出` 非空 && `GREEN.通过输出` 包含 `PASS|pass|OK|✓|✅|passed`
|
|
497
|
+
4. **ASSERT** `RED.时间 <= GREEN.时间` && `GREEN.时间 <= REFACTOR.时间`
|
|
498
|
+
5. **EXEC** `git log --oneline` → **ASSERT** `test:` 提交数 >= `06-tdd-log.md` 功能点数
|
|
499
|
+
|
|
500
|
+
任一项不通过 → **ROLLBACK** implAgent,附具体不合格项及期望修正行为。
|
|
501
|
+
|
|
502
|
+
**WRITE** checkpoint:`current_step=Step 4, next_step=Step 5, phase=impl, completed_steps 追加 Step 3`
|
|
433
503
|
|
|
434
504
|
### Step 4:调度 testAgent
|
|
435
505
|
|
|
436
|
-
**
|
|
506
|
+
**ROUTE** `team-test`
|
|
437
507
|
|
|
438
508
|
调用方式取决于工具能力:
|
|
439
509
|
|
|
440
|
-
- **Claude Code**:直接执行 `/team-test
|
|
510
|
+
- **Claude Code**:直接执行 `/team-test`
|
|
441
511
|
- **支持 Agent tool 的工具**:通过 Agent tool 调度,传递以下 prompt
|
|
442
512
|
|
|
443
513
|
```
|
|
@@ -451,27 +521,37 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
451
521
|
读取 skills/team-test/SKILL.md 获取完整执行步骤。
|
|
452
522
|
```
|
|
453
523
|
|
|
454
|
-
|
|
524
|
+
**完成验证**(产出门禁):
|
|
525
|
+
|
|
526
|
+
**FOR** each file in [`09-test-matrix.md`, `10-test-report.md`]:
|
|
527
|
+
|
|
528
|
+
- **ASSERT** `文件存在` && `有效行数 >= 5`
|
|
529
|
+
- **ASSERT** `10-test-report.md` 包含测试输出证据(含退出码)
|
|
530
|
+
- 任一不通过 → **ROLLBACK** testAgent,指明缺失文件名
|
|
531
|
+
|
|
532
|
+
**READ** `10-test-report.md` 中 testAgent 路由决策(→ reviewAgent / → implAgent / → specAgent / → **H3**)
|
|
455
533
|
|
|
456
|
-
|
|
534
|
+
**WRITE** checkpoint:`current_step=Step 5, next_step=Step 6, phase=test, completed_steps 追加 Step 4`
|
|
457
535
|
|
|
458
|
-
|
|
536
|
+
**回退检查**(Constitutional Rule #7:同一 source→target 对回退 ≤ 2 次):
|
|
459
537
|
|
|
460
|
-
|
|
538
|
+
**IF** testAgent 报告发现 bug 或 spec 遗漏:
|
|
461
539
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
-
|
|
465
|
-
-
|
|
466
|
-
-
|
|
540
|
+
**MATCH** `test_issue`:
|
|
541
|
+
|
|
542
|
+
- bug → **WRITE** checkpoint:`rollback_counts test→impl +1` → **ROLLBACK** implAgent(**GOTO** Step 3,附 bug 上下文)
|
|
543
|
+
- spec 遗漏 → **WRITE** checkpoint:`rollback_counts test→spec +1` → **ROLLBACK** specAgent(**GOTO** Step 2,附遗漏上下文)
|
|
544
|
+
- 同一对第 3 次回退 → **WRITE** checkpoint:`status=BLOCKED` → 强制 **H3**
|
|
545
|
+
- Kill Switch(任务不可行)→ **WRITE** checkpoint:`status=BLOCKED` → **H3**
|
|
546
|
+
- 人类需决策 → **WRITE** checkpoint:`status=BLOCKED` → **H3**
|
|
467
547
|
|
|
468
548
|
### Step 5:调度 reviewAgent
|
|
469
549
|
|
|
470
|
-
**
|
|
550
|
+
**ROUTE** `team-review`
|
|
471
551
|
|
|
472
552
|
调用方式取决于工具能力:
|
|
473
553
|
|
|
474
|
-
- **Claude Code**:直接执行 `/team-review
|
|
554
|
+
- **Claude Code**:直接执行 `/team-review`
|
|
475
555
|
- **支持 Agent tool 的工具**:通过 Agent tool 调度,传递以下 prompt
|
|
476
556
|
|
|
477
557
|
```
|
|
@@ -486,98 +566,133 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
486
566
|
读取 skills/team-review/SKILL.md 获取完整执行步骤。
|
|
487
567
|
```
|
|
488
568
|
|
|
489
|
-
|
|
569
|
+
**完成验证**(产出门禁):
|
|
570
|
+
|
|
571
|
+
**FOR** each file in [`11-review.md`, `12-asset-update.md`, `13-retrospective.md`, `task-rules.md`]:
|
|
572
|
+
|
|
573
|
+
- **ASSERT** `文件存在` && `有效行数 >= 5`
|
|
574
|
+
- **ASSERT** `13-retrospective.md` 包含"新规则"或"本次沉淀"关键词
|
|
575
|
+
- 任一不通过 → **ROLLBACK** reviewAgent,指明缺失文件名
|
|
576
|
+
|
|
577
|
+
**READ** `11-review.md` 中 reviewAgent 修复/回退决策
|
|
490
578
|
|
|
491
|
-
|
|
579
|
+
**WRITE** checkpoint:`current_step=Step 6, next_step=Step 7, phase=review, completed_steps 追加 Step 5`
|
|
492
580
|
|
|
493
|
-
|
|
581
|
+
**回退检查**(Constitutional Rule #7:同一 source→target 对回退 ≤ 2 次):
|
|
494
582
|
|
|
495
|
-
|
|
583
|
+
**IF** reviewAgent 报告发现 P0/P1 bug 或 spec 遗漏:
|
|
496
584
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
-
|
|
500
|
-
-
|
|
501
|
-
-
|
|
585
|
+
**MATCH** `review_issue`:
|
|
586
|
+
|
|
587
|
+
- bug → **WRITE** checkpoint:`rollback_counts review→impl +1` → **ROLLBACK** implAgent(**GOTO** Step 3,附 bug 上下文)
|
|
588
|
+
- spec 遗漏 → **WRITE** checkpoint:`rollback_counts review→spec +1` → **ROLLBACK** specAgent(**GOTO** Step 2,附遗漏上下文)
|
|
589
|
+
- 同一对第 3 次回退 → **WRITE** checkpoint:`status=BLOCKED` → 强制 **H3**
|
|
590
|
+
- Kill Switch → **WRITE** checkpoint:`status=BLOCKED` → **H3**
|
|
591
|
+
- 人类需决策 → **WRITE** checkpoint:`status=BLOCKED` → **H3**
|
|
502
592
|
|
|
503
593
|
### Step 6:补全团队级证据
|
|
504
594
|
|
|
505
|
-
|
|
595
|
+
**IF** `mode == compact` → 跳过此步,**GOTO** Step 7。checkpoint 中 `completed_steps` 不含 Step 6。
|
|
506
596
|
|
|
507
|
-
由编排器自己执行以下检查并产出 2
|
|
597
|
+
> 由编排器自己执行以下检查并产出 2 个文件。
|
|
508
598
|
|
|
509
599
|
#### 6.1 一致性自动化检查(先执行再写入 14-team.md)
|
|
510
600
|
|
|
511
|
-
1.
|
|
512
|
-
2.
|
|
513
|
-
3. **
|
|
514
|
-
4. **
|
|
515
|
-
5.
|
|
601
|
+
1. **READ** `02-context.md` → 提取术语表 → **EXEC** `grep` 检查任务目录下所有文件中的不一致别名
|
|
602
|
+
2. **EXEC** 检查任务目录下所有文件是否遵循统一 Markdown 标题层级
|
|
603
|
+
3. **EXEC** `git log --oneline` → **ASSERT** `commit_format` 遵循 `type: description`
|
|
604
|
+
4. **READ** reviewAgent 新增规则 → **ASSERT** `新增规则` 与 `已有规则` 不矛盾
|
|
605
|
+
5. **IF** 多个模块级 AI 规范文件存在 → **ASSERT** `结构一致`
|
|
606
|
+
6. **READ** 任务目录下所有文件 → **ASSERT** 来源标签使用一致 + 表格格式统一 + 引用块风格统一
|
|
516
607
|
|
|
517
|
-
|
|
608
|
+
**IF** 发现不一致 → 立即修复。
|
|
518
609
|
|
|
519
610
|
#### 6.2 确保每位成员有复盘
|
|
520
611
|
|
|
521
|
-
|
|
612
|
+
**READ** `13-retrospective.md` → **EXEC** `git log --format='%an' | sort -u` → **IF** 多位贡献者 → **ASSERT** 每位成员有独立复盘段落或独立文件。
|
|
522
613
|
|
|
523
614
|
#### 文件 14:`14-team.md`
|
|
524
615
|
|
|
525
|
-
|
|
616
|
+
**WRITE** `14-team.md`(模板见 `references/14-team-template.md`)。
|
|
526
617
|
|
|
527
|
-
|
|
618
|
+
**IF** 仅 1 位人类作者 → §一 角色分工填写"用户 + AI Agent 团队",§三 将用户审查/确认决策也计入贡献,§四 正常填写 reviewAgent 审查数据。
|
|
528
619
|
|
|
529
620
|
#### 文件 15:`15-brief.md`
|
|
530
621
|
|
|
531
|
-
|
|
622
|
+
**WRITE** `15-brief.md`(模板见 `references/15-brief-template.md`),填写方式:
|
|
532
623
|
|
|
533
|
-
- §一 Elevator Pitch:从 01-plan.md
|
|
534
|
-
- §二 关键决策:从 08-ai-decisions.md 挑选 2-3
|
|
535
|
-
- §三 AI 协作亮点:从 07-prompt-log.md
|
|
536
|
-
- §四 测试覆盖概要:从 09-test-matrix.md + 10-test-report.md
|
|
537
|
-
- §五 遗留风险:从 11-review.md §四 摘录
|
|
538
|
-
- §六 改进承诺:从 13-retrospective.md §三 摘录
|
|
624
|
+
- §一 Elevator Pitch:从 `01-plan.md` + `03-sdd.md` + `10-test-report.md` 提炼 3 句话
|
|
625
|
+
- §二 关键决策:从 `08-ai-decisions.md` 挑选 2-3 个最重要决策
|
|
626
|
+
- §三 AI 协作亮点:从 `07-prompt-log.md` 纠偏记录 + `06-tdd-log.md` bug 发现中提取
|
|
627
|
+
- §四 测试覆盖概要:从 `09-test-matrix.md` + `10-test-report.md` 提取
|
|
628
|
+
- §五 遗留风险:从 `11-review.md` §四 摘录
|
|
629
|
+
- §六 改进承诺:从 `13-retrospective.md` §三 摘录
|
|
539
630
|
|
|
540
|
-
|
|
631
|
+
**WRITE** checkpoint:`current_step=Step 7, next_step=Step 7.3, phase=finish, completed_steps 追加 Step 6`
|
|
541
632
|
|
|
542
|
-
### Step 7
|
|
633
|
+
### Step 7:分支完成处理
|
|
543
634
|
|
|
544
|
-
>
|
|
635
|
+
> 在人类验收前完成分支处理,确保用户验收时所有技术工作已就绪。
|
|
545
636
|
|
|
546
|
-
|
|
637
|
+
**READ** `12-asset-update.md` → **IF** CHANGELOG.md 需要更新但尚未更新 → 补全。
|
|
547
638
|
|
|
548
|
-
|
|
639
|
+
**ROUTE** `team-finish`:
|
|
549
640
|
|
|
550
641
|
- 传递 checkpoint 中的 `branch` 和 `base_branch` 信息
|
|
551
642
|
- `team-finish` 将验证测试 → 展示选项(merge/PR/keep/discard)→ 执行用户选择
|
|
552
|
-
- 如果用户选择 merge,合并后确认合并 commit 已推送
|
|
553
|
-
- 如果用户选择 PR,确认 PR 已创建
|
|
554
|
-
- 如果用户选择 keep/discard,记录用户决策
|
|
555
643
|
|
|
556
|
-
|
|
644
|
+
**IF** `team-finish` 报告测试不通过 → **ROLLBACK** implAgent(附失败详情),修复完成后 **GOTO** Step 7。
|
|
645
|
+
|
|
646
|
+
**MATCH** `finish_result`:
|
|
647
|
+
|
|
648
|
+
- merge → **ASSERT** `merge_commit 存在`
|
|
649
|
+
- PR → **ASSERT** `PR 已创建`
|
|
650
|
+
- keep/discard → 记录用户决策
|
|
557
651
|
|
|
558
|
-
|
|
652
|
+
**WRITE** checkpoint:`current_step=Step 7.3, next_step=Step 7.5, phase=finish, completed_steps 追加 Step 7`
|
|
559
653
|
|
|
560
|
-
|
|
654
|
+
### Step 7.3:H4 人类验收 + 分期决策
|
|
561
655
|
|
|
562
|
-
|
|
656
|
+
**WRITE**(对话中)向用户展示:交付物清单 + 代码 diff 摘要。
|
|
563
657
|
|
|
564
|
-
-
|
|
565
|
-
-
|
|
566
|
-
|
|
658
|
+
- **IF** `mode == full` → 还展示 `14-team.md` 和 `15-brief.md` 核心内容
|
|
659
|
+
- **IF** `mode == compact` → 展示 `11-review.md` 审查结论 + `13-retrospective.md` 改进承诺
|
|
660
|
+
|
|
661
|
+
**IF** `docs/delivery-checklist.md` 存在 → **READ** 检查 `- [ ]` 项完成情况 → 未完成项列入 H4 展示,供用户判断。
|
|
662
|
+
|
|
663
|
+
**MATCH** `user_decision`:
|
|
664
|
+
|
|
665
|
+
- 验收通过 → **WRITE** checkpoint:`completed_steps 追加 H4` → **GOTO** Step 7.5
|
|
666
|
+
- 验收不通过 → 根据反馈 **GOTO** 对应 Agent
|
|
667
|
+
- 后续分期决策(**IF** `01-plan.md` §二 定义了后续分期候选)→ **GOTO** 7.3.1:后续分期启动
|
|
668
|
+
|
|
669
|
+
#### 7.3.1:后续分期启动
|
|
670
|
+
|
|
671
|
+
> 用户验收通过后,如 `01-plan.md` 定义了后续分期候选,启动下一期任务。
|
|
672
|
+
|
|
673
|
+
1. **WRITE**(对话中)候选项 + 触发条件给用户
|
|
674
|
+
2. **IF** 用户批准 →
|
|
675
|
+
- **RESOLVE** 新 slug:取最大序号 +1,关键词追加 `-p{N}`
|
|
676
|
+
- **EXEC** 创建新目录 `docs/tasks/{新slug}/`
|
|
677
|
+
- **WRITE** 新 `.checkpoint.json`,含 `parent_slug` 指向上期
|
|
678
|
+
- **GOTO** Step 1(H1 简化为单句确认)
|
|
679
|
+
- specAgent 调度时额外传递上期 `01-plan.md` 候选表和 `03-sdd.md` 路径
|
|
567
680
|
|
|
568
681
|
### Step 7.5:归档与知识合并
|
|
569
682
|
|
|
570
|
-
|
|
683
|
+
> 用户验收通过后执行知识沉淀。
|
|
571
684
|
|
|
572
|
-
1.
|
|
573
|
-
2. **
|
|
574
|
-
|
|
685
|
+
1. **READ** `docs/tasks/{slug}/task-rules.md` → **WRITE** 标记为"可泛化"的规则到项目级/模块级 AI 规范文件
|
|
686
|
+
2. **IF** 项目维护 `docs/specs/` 目录 → **WRITE** 本次 `03-sdd.md` 关键规格合并进去
|
|
687
|
+
- **IF** 增量模式 → 执行 delta 合并(ADDED 追加、MODIFIED 替换、REMOVED 删除)
|
|
688
|
+
- **IF** 冲突 → 以本次 SDD 为准,在 commit message 中注明
|
|
689
|
+
3. **WRITE** `docs/tasks/progress.md`(**注意是 `docs/tasks/` 根目录**)追加:
|
|
575
690
|
|
|
576
691
|
```markdown
|
|
577
692
|
| {slug} | {YYYY-MM-DD} | {DONE/DONE_WITH_CONCERNS} | {起始commit..结束commit} | {一句话摘要} |
|
|
578
693
|
```
|
|
579
694
|
|
|
580
|
-
4.
|
|
695
|
+
4. **IF** 本次变更影响 AGENTS.md 架构描述 → **WRITE** 同步更新
|
|
581
696
|
|
|
582
697
|
**进度账本模板**(首次创建时使用):
|
|
583
698
|
|
|
@@ -592,90 +707,100 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
592
707
|
|
|
593
708
|
### Step 8:最终质量检查
|
|
594
709
|
|
|
595
|
-
|
|
710
|
+
**RESOLVE** `mode`:**READ** `.checkpoint.json` 模式字段。**IF** `mode == compact` → `[完整模式]` 项跳过,`[精简替代]` 项替换原项,D5 整组跳过。
|
|
711
|
+
|
|
712
|
+
**GATE** 全部检查项通过才可声明质量检查通过:
|
|
596
713
|
|
|
597
714
|
**硬门槛(7 项全部必须通过):**
|
|
598
715
|
|
|
599
|
-
- [ ] G1: `[完整模式]` 01-plan.md 包含目标澄清、上下文、阶段拆分、修改范围、验证计划。`[精简替代]` 03-sdd.md 包含任务目标和关键设计决策
|
|
600
|
-
- [ ] G2: 04-boundary.md 有 allow/deny 两个方向
|
|
601
|
-
- [ ] G3:
|
|
602
|
-
- [ ] G4:
|
|
603
|
-
- [ ] G5: 项目 AI 规范中每条规则包含「触发条件 +
|
|
604
|
-
- [ ] G6: `[完整模式]` 05-risk.md 有风险识别 + 11-review.md §四 有剩余风险说明。`[精简替代]` 11-review.md §四 有剩余风险说明
|
|
605
|
-
- [ ] G7: `[完整模式]` 08-ai-decisions.md 能解释关键决策 + 15-brief.md 有决策解释表。`[精简替代]` 08-ai-decisions.md 能解释关键决策
|
|
716
|
+
- [ ] G1: `[完整模式]` **ASSERT** `01-plan.md` 包含目标澄清、上下文、阶段拆分、修改范围、验证计划。`[精简替代]` **ASSERT** `03-sdd.md` 包含任务目标和关键设计决策
|
|
717
|
+
- [ ] G2: **ASSERT** `04-boundary.md` 有 allow/deny 两个方向
|
|
718
|
+
- [ ] G3: **ASSERT** `09-test-matrix.md` + `10-test-report.md` + 测试代码存在
|
|
719
|
+
- [ ] G4: **EXEC** 项目 CI 全量检查 → **ASSERT** `exit_code == 0` && `failures == 0`
|
|
720
|
+
- [ ] G5: **ASSERT** 项目 AI 规范中每条规则包含「触发条件 + 可执行指令」
|
|
721
|
+
- [ ] G6: `[完整模式]` **ASSERT** `05-risk.md` 有风险识别 + `11-review.md` §四 有剩余风险说明。`[精简替代]` **ASSERT** `11-review.md` §四 有剩余风险说明
|
|
722
|
+
- [ ] G7: `[完整模式]` **ASSERT** `08-ai-decisions.md` 能解释关键决策 + `15-brief.md` 有决策解释表。`[精简替代]` **ASSERT** `08-ai-decisions.md` 能解释关键决策
|
|
606
723
|
|
|
607
724
|
**D1 AI 协作资产沉淀(25 分):**
|
|
608
725
|
|
|
609
|
-
- [ ] D1.1
|
|
610
|
-
- [ ] D1.2
|
|
611
|
-
- [ ] D1.3
|
|
612
|
-
- [ ] D1.4 工具适配 ≥ 2
|
|
613
|
-
- [ ] D1.5
|
|
726
|
+
- [ ] D1.1 **ASSERT** 分层组织:项目级 + 模块级 + task-rules.md 三层齐全
|
|
727
|
+
- [ ] D1.2 **ASSERT** 8 类内容覆盖(业务术语/架构/代码结构/接口/编码规范/测试/Review/交付有对应文件)。不满足 → **ROLLBACK** reviewAgent 补建
|
|
728
|
+
- [ ] D1.3 **ASSERT** `12-asset-update.md` 中每条规则有「触发条件 + 可执行指令 + 示例」
|
|
729
|
+
- [ ] D1.4 **ASSERT** 工具适配 ≥ 2 类
|
|
730
|
+
- [ ] D1.5 **ASSERT** 项目 AI 规范有「资产维护机制」段落
|
|
614
731
|
|
|
615
732
|
**D2 AI 协作任务规划(25 分):**
|
|
616
733
|
|
|
617
|
-
- [ ] D2.1 `[完整模式]`
|
|
618
|
-
- [ ] D2.2 `[完整模式]`
|
|
619
|
-
- [ ] D2.3 `[完整模式]`
|
|
620
|
-
- [ ] D2.4
|
|
621
|
-
- [ ] D2.5 `[完整模式]`
|
|
734
|
+
- [ ] D2.1 `[完整模式]` **ASSERT** `01-plan.md` 有成功标准 ≥ 3 条 + 非目标 ≥ 2 条。`[精简替代]` **ASSERT** `03-sdd.md` §一 有明确目标
|
|
735
|
+
- [ ] D2.2 `[完整模式]` **ASSERT** `02-context.md` 有必要引用 + 已排除上下文。`[精简替代]` 跳过
|
|
736
|
+
- [ ] D2.3 `[完整模式]` **ASSERT** `01-plan.md` 有 ≥ 5 阶段拆分。`[精简替代]` 跳过
|
|
737
|
+
- [ ] D2.4 **ASSERT** `04-boundary.md` 有 allow/deny + 依赖约束
|
|
738
|
+
- [ ] D2.5 `[完整模式]` **ASSERT** `05-risk.md` 有验证计划 + 停下来问人条件 ≥ 3 个。`[精简替代]` 跳过
|
|
622
739
|
|
|
623
740
|
**D3 AI 交付质量保障(27 分):**
|
|
624
741
|
|
|
625
|
-
- [ ] D3.1
|
|
626
|
-
- [ ] D3.2
|
|
627
|
-
- [ ] D3.3
|
|
628
|
-
- [ ] D3.4
|
|
629
|
-
- [ ] D3.5
|
|
742
|
+
- [ ] D3.1 **ASSERT** `03-sdd.md` 含输入/输出/边界/异常/验收 Checklist
|
|
743
|
+
- [ ] D3.2 **READ** `06-tdd-log.md` → **ASSERT** RED 有失败输出在前 + GREEN 有通过输出在后 + `git log` 中 `test:` 提交早于 `feat:/fix:`
|
|
744
|
+
- [ ] D3.3 **ASSERT** `09-test-matrix.md` 四维矩阵(功能/边界/异常/代码)+ `10-test-report.md` §八 回归验证存在
|
|
745
|
+
- [ ] D3.4 **ASSERT** `06-tdd-log.md` + `11-review.md` 有修复记录
|
|
746
|
+
- [ ] D3.5 **ASSERT** `11-review.md` 含五维度审查 + §四剩余风险
|
|
630
747
|
|
|
631
748
|
**D4 AI 使用过程与复盘(13 分):**
|
|
632
749
|
|
|
633
|
-
- [ ] D4.1
|
|
634
|
-
- [ ] D4.2
|
|
635
|
-
- [ ] D4.3
|
|
636
|
-
- [ ] D4.4
|
|
637
|
-
- [ ] D4.5 `[完整模式]`
|
|
750
|
+
- [ ] D4.1 **ASSERT** `07-prompt-log.md` 每条含五要素
|
|
751
|
+
- [ ] D4.2 **ASSERT** `07-prompt-log.md` 每条含效果记录;**IF** 存在偏离 → 有纠偏前后对比
|
|
752
|
+
- [ ] D4.3 **ASSERT** `07-prompt-log.md` + `08-ai-decisions.md` 有关键过程记录
|
|
753
|
+
- [ ] D4.4 **ASSERT** `13-retrospective.md` 有「本次沉淀的新规则」
|
|
754
|
+
- [ ] D4.5 `[完整模式]` **ASSERT** `15-brief.md` 有 Elevator Pitch + 决策解释 + 亮点 + 测试覆盖 + 风险。`[精简替代]` 跳过
|
|
638
755
|
|
|
639
756
|
**D5 团队协作表现(10 分):**
|
|
640
757
|
|
|
641
|
-
> 精简模式下 D5
|
|
758
|
+
> 精简模式下 D5 整组跳过。
|
|
759
|
+
|
|
760
|
+
- [ ] D5.1 **ASSERT** `14-team.md` §一 有角色/负责人/职责/产出物
|
|
761
|
+
- [ ] D5.2 **ASSERT** `14-team.md` §二 一致性检查全部 ✅ 或已修复
|
|
762
|
+
- [ ] D5.3 **ASSERT** `14-team.md` §四 真实问题占比 > 0
|
|
763
|
+
- [ ] D5.4 **ASSERT** `14-team.md` §三 每位贡献者有明确产出物和提交数
|
|
642
764
|
|
|
643
|
-
|
|
644
|
-
- [ ] D5.2 资产一致:14-team.md §二 一致性检查全部 ✅ 或已修复
|
|
645
|
-
- [ ] D5.3 交叉 Review:14-team.md §四 真实问题占比 > 0
|
|
646
|
-
- [ ] D5.4 个人贡献:14-team.md §三 每位贡献者有明确产出物和提交数
|
|
765
|
+
**IF** `unchecked_items > 0` → **GOTO** 对应 Agent 补全。
|
|
647
766
|
|
|
648
|
-
|
|
767
|
+
全部通过 → **WRITE** checkpoint:`status=DONE, completed_steps 追加 Step 7.5 和 Step 8`。
|
|
649
768
|
|
|
650
|
-
|
|
769
|
+
> 此时且仅此时 `status` 设为 **DONE**(如有保留意见则设为 **DONE_WITH_CONCERNS**)。
|
|
651
770
|
|
|
652
771
|
## STOP Signals
|
|
653
772
|
|
|
654
|
-
-
|
|
655
|
-
-
|
|
656
|
-
-
|
|
657
|
-
-
|
|
773
|
+
- **跳过** H1 或 H4 人类介入点
|
|
774
|
+
- **延迟**回退("先记着后面一起修")
|
|
775
|
+
- **信任** Agent 自我声明而不验证产出
|
|
776
|
+
- **超出**预算却不砍范围
|
|
658
777
|
|
|
659
|
-
##
|
|
778
|
+
## Constitutional Rules 遵守
|
|
779
|
+
|
|
780
|
+
引用 `_team-rules/constitutional-rules.md`。编排阶段尤其注意:
|
|
660
781
|
|
|
661
|
-
|
|
782
|
+
- **Rule #1 人类介入是一等公民**:H1-H4 不可被任何 Agent 自动确认,"用户没回复就默认同意"是违规(FP-1)
|
|
783
|
+
- **Rule #2 有向图回退**:testAgent/reviewAgent 发现问题必须 **ROLLBACK** 对应 Agent,不可"先记着后面一起修"(FP-4)
|
|
784
|
+
- **Rule #7 回退次数上限**:同一 source→target 对回退 ≤ 2 次,第 3 次强制触发 **H3**(FP-1)
|
|
785
|
+
- **Rule #9 TDD 顺序不可逆**:implAgent 完成后必须验证 `06-tdd-log.md` 中 RED 在 GREEN 之前(FP-2)
|
|
786
|
+
|
|
787
|
+
## 自检门禁
|
|
662
788
|
|
|
663
|
-
- [ ]
|
|
664
|
-
- [ ] H1 和 H4
|
|
665
|
-
- [ ]
|
|
666
|
-
- [ ] Step 8 质量检查全部通过
|
|
667
|
-
- [ ] CHANGELOG.md
|
|
668
|
-
- [ ] 进度账本已更新
|
|
789
|
+
- [ ] **IF** 完整模式 → **ASSERT** 17 个文件已产出;**IF** 精简模式 → **ASSERT** 核心文件已产出
|
|
790
|
+
- [ ] **ASSERT** H1 和 H4 经过人类确认(完整模式还需 H2;精简模式需 H2 单句确认)
|
|
791
|
+
- [ ] **ASSERT** 回退计数未超上限(同一对 ≤ 2 次)
|
|
792
|
+
- [ ] **ASSERT** Step 8 质量检查全部通过
|
|
793
|
+
- [ ] **IF** reviewAgent 要求 → **ASSERT** CHANGELOG.md 已更新
|
|
794
|
+
- [ ] **ASSERT** 进度账本已更新
|
|
669
795
|
|
|
670
796
|
## 完成标志
|
|
671
797
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
```
|
|
798
|
+
**MATCH** `result`:
|
|
799
|
+
|
|
800
|
+
- 全流程完成 + 质量检查通过 → **DONE**(`模式: {完整/精简}`, `文件: {17/11}`, `质量检查: pass`)
|
|
801
|
+
- 完成但有保留意见 → **DONE_WITH_CONCERNS**(`concerns: [...]`)
|
|
802
|
+
- 缺少关键上下文 → **NEEDS_CONTEXT**
|
|
803
|
+
- 被阻塞(Kill Switch / 人类决策)→ **BLOCKED** → **H3**
|
|
679
804
|
|
|
680
805
|
## 集成关系
|
|
681
806
|
|