team-skills 1.5.0 → 1.5.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/CHANGELOG.md +24 -0
- package/package.json +1 -1
- package/skills/_team-rules/task-lifecycle.md +15 -2
- package/skills/_team-rules/verification-protocol.md +23 -10
- package/skills/team-brainstorm/SKILL.md +5 -2
- package/skills/team-debug/SKILL.md +1 -0
- package/skills/team-feedback/SKILL.md +6 -3
- package/skills/team-finish/SKILL.md +10 -2
- package/skills/team-impl/SKILL.md +3 -2
- package/skills/team-orchestrator/SKILL.md +28 -16
- package/skills/team-review/SKILL.md +43 -26
- package/skills/team-spec/SKILL.md +8 -2
- package/skills/team-test/SKILL.md +8 -6
- package/skills/team-verify/SKILL.md +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,30 @@
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.5.2] - 2026-06-28
|
|
11
|
+
|
|
12
|
+
### 修复
|
|
13
|
+
|
|
14
|
+
- team-review: Phase 2 P0/P1 路由硬化——从被动"向编排器报告:建议路由到"改为显式 `route_target` 赋值 + `GOTO Phase 3`,消除顺序流滑入自修的路径
|
|
15
|
+
- team-review: Phase 3 重排为 MATCH `route_target` 优先分发——P0/P1 以 `DONE_WITH_CONCERNS` 硬终止执行,P2 自修入口增加 GATE 准入断言(`severity != P0 && severity != P1`)
|
|
16
|
+
- team-review: COMPLETION 补充 P0/P1 路由回退的 `DONE_WITH_CONCERNS` 状态定义(仅产出 `11-review.md`,Phase 4/5 跳过)
|
|
17
|
+
- team-orchestrator: Step 5 先 READ 路由决策再完成验证——P0/P1 回退场景跳过文件完整性检查(避免 team-review 提前终止后因缺少 12/13/task-rules 文件被误判导致死循环)
|
|
18
|
+
|
|
19
|
+
## [1.5.1] - 2026-06-28
|
|
20
|
+
|
|
21
|
+
### 修复
|
|
22
|
+
|
|
23
|
+
- team-orchestrator: slug RESOLVE 链修复——READ 动作从 RESOLVE 中独立,消除 LLM"首个命中即停"导致的重复序号 bug
|
|
24
|
+
- team-orchestrator: Step 7.3.1 分期任务去掉独立 slug 解析,统一由 Step 1 处理(消除双重解析冲突)
|
|
25
|
+
- team-orchestrator: Step 1 步骤编号连续性修复(5,6 重复→7,8)
|
|
26
|
+
|
|
27
|
+
### 变更
|
|
28
|
+
|
|
29
|
+
- 共享内容一致性同步:verify_cmd RESOLVE 5 步链(5 个 skill)、slug 解析流程(3 个 skill)、回退四要素(2 个 skill)、失败模式表 4→10 行(verification-protocol + team-verify)——全部与 canonical source 完全一致
|
|
30
|
+
- CLAUDE.md §2.2:明确 REF 仅用于声明性章节(CONSTITUTIONAL_RULES/COMPLETION),STEPS 中操作性内容必须内联
|
|
31
|
+
- 5 个 skill 补充 spec-driven-workflow.md 声明性 REF(team-test/review/orchestrator/debug/feedback)
|
|
32
|
+
- 4 个 skill 补充 verification-protocol.md / task-lifecycle.md / ai-collaboration-standards.md 声明性 REF
|
|
33
|
+
|
|
10
34
|
## [1.5.0] - 2026-06-28
|
|
11
35
|
|
|
12
36
|
### 新增
|
package/package.json
CHANGED
|
@@ -33,11 +33,24 @@ docs/tasks/{NNNN}-{keyword}/
|
|
|
33
33
|
|
|
34
34
|
格式:`{NNNN}-{keyword}`
|
|
35
35
|
|
|
36
|
-
- 序号:扫描 `docs/tasks/` 已有目录取最大序号 +1,从 `0001` 起
|
|
37
36
|
- 关键词:从任务描述提取,kebab-case
|
|
38
37
|
- 整体 ≤ 50 字符
|
|
39
38
|
- 示例:`0001-add-tooltip`、`0012-refactor-auth`
|
|
40
|
-
-
|
|
39
|
+
- 分期继承任务:使用新序号,在上期关键词后追加 `-p{N}`(N 从 2 起)。如 `0001-add-tooltip`(P1)→ `0002-add-tooltip-p2`(P2)→ `0005-add-tooltip-p3`(P3)
|
|
40
|
+
|
|
41
|
+
#### Slug 解析流程
|
|
42
|
+
|
|
43
|
+
> 所有需要生成 slug 的 Skill(`team-orchestrator`、`team-spec`、`team-brainstorm`)统一遵循此流程,不可自行实现序号计算。
|
|
44
|
+
|
|
45
|
+
1. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
46
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
47
|
+
2. **RESOLVE** `slug`(首个命中即停):
|
|
48
|
+
1. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
|
|
49
|
+
2. **IF** 分期继承任务(上下文含 `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
|
|
50
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`
|
|
51
|
+
3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
52
|
+
|
|
53
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
|
|
41
54
|
|
|
42
55
|
### 1.3 信息来源标签
|
|
43
56
|
|
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
> 共享规则文件。任何"测试通过""CI 通过""lint 通过"的声明 MUST 基于此协议。
|
|
4
4
|
|
|
5
|
+
## verify_cmd 解析流程
|
|
6
|
+
|
|
7
|
+
> 所有需要执行验证的 Skill(`team-impl`、`team-test`、`team-verify`、`team-feedback`、`team-finish`)统一遵循此流程解析验证命令,不可自行实现。
|
|
8
|
+
|
|
9
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
10
|
+
|
|
11
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
12
|
+
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
13
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
14
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
15
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
16
|
+
|
|
5
17
|
## 5 步验证流程
|
|
6
18
|
|
|
7
19
|
```
|
|
8
20
|
|
|
9
|
-
1.
|
|
10
|
-
- 05-risk.md §一验证计划
|
|
11
|
-
- CLAUDE.md / .cursor/rules/
|
|
12
|
-
- package.json scripts / Makefile / Cargo.toml
|
|
13
|
-
- 以上均无 → NEEDS_CONTEXT,请求用户提供
|
|
14
|
-
- 项目无自动化验证 → 10-test-report.md 标注,改用手动验证(截图/curl/日志对比),不可跳过
|
|
21
|
+
1. 确定验证命令 → 执行上方 verify_cmd 解析流程
|
|
15
22
|
2. 执行命令——不用缓存,不引用上一轮输出
|
|
16
23
|
3. 完整阅读输出——不截断,不跳过 warning。Warning 处理:退出码 = 0 时 warning 不阻塞通过声明,但必须在验证报告中列出 warning 内容供人类判断
|
|
17
24
|
4. 退出码 = 0 且失败数 = 0
|
|
@@ -51,7 +58,13 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
|
51
58
|
|
|
52
59
|
| 声明 | 充分证据 | 不充分 |
|
|
53
60
|
| ---- | -------- | ------ |
|
|
54
|
-
| 测试通过 | 0
|
|
55
|
-
| Lint 干净 | 0
|
|
56
|
-
| 构建成功 |
|
|
57
|
-
| Bug 修复 |
|
|
61
|
+
| 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
|
|
62
|
+
| Lint 干净 | `errors == 0` + `exit_code == 0` | 部分检查、推测 |
|
|
63
|
+
| 构建成功 | `exit_code == 0` + 无 error | Lint 通过、日志看起来对 |
|
|
64
|
+
| Bug 修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
|
|
65
|
+
| 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
|
|
66
|
+
| Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
|
|
67
|
+
| 需求满足 | 逐条对照 checklist | 测试通过了 |
|
|
68
|
+
| 性能达标 | benchmark 通过 + baseline 对比 | "看起来快了"、仅 CI 通过 |
|
|
69
|
+
| 向后兼容 | 回归全通过 + 无 breaking API | "没改公共接口"但未运行旧版测试 |
|
|
70
|
+
| 文档已更新 | `git diff` 显示文档变更 + 链接检查通过 | "代码改了,文档应该也对" |
|
|
@@ -81,10 +81,13 @@ NO IMPLEMENTATION WITHOUT USER APPROVED DESIGN FIRST
|
|
|
81
81
|
1. 从用户需求提取核心关键词(kebab-case)
|
|
82
82
|
2. 从项目上下文推断关键词
|
|
83
83
|
3. *NONE* → **NEEDS_CONTEXT**:请用户提供任务关键词
|
|
84
|
-
6. **IF** `docs/tasks
|
|
85
|
-
|
|
84
|
+
6. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
85
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
86
|
+
7. 最大序号 +1,零填充四位,拼接 `slug` = `{NNNN}-{keyword}`(整体 ≤ 50 字符)
|
|
86
87
|
8. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
87
88
|
|
|
89
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
|
|
90
|
+
|
|
88
91
|
### Phase 2:需求澄清(一次性提问)
|
|
89
92
|
|
|
90
93
|
> 挖出用户未说出的假设和隐性约束。好问题比好答案更有价值——问错问题意味着后续全部方向偏移。
|
|
@@ -207,6 +207,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
|
207
207
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
208
208
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
209
209
|
**REF** `_team-rules/verification-protocol.md` — 5 步验证协议
|
|
210
|
+
**REF** `_team-rules/spec-driven-workflow.md` — TDD 修复循环与有向图回退规则
|
|
210
211
|
|
|
211
212
|
调试阶段尤其注意:
|
|
212
213
|
|
|
@@ -135,10 +135,11 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
135
135
|
|
|
136
136
|
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
137
137
|
|
|
138
|
-
1. `READ("05-risk.md", "§一验证计划")
|
|
138
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
139
139
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
140
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
141
|
-
4.
|
|
140
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
141
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
142
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
142
143
|
|
|
143
144
|
实施顺序:
|
|
144
145
|
|
|
@@ -222,6 +223,8 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
|
|
|
222
223
|
|
|
223
224
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
224
225
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
226
|
+
**REF** `_team-rules/spec-driven-workflow.md` — TDD 逐项验证与有向图回退规则
|
|
227
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
225
228
|
|
|
226
229
|
反馈处理阶段尤其注意:
|
|
227
230
|
|
|
@@ -66,9 +66,15 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
|
|
|
66
66
|
|
|
67
67
|
> TRAP:你会倾向于引用上一轮的测试结果来跳过重新执行。Iron Law 不允许——每次进入 finish 都必须重新运行。
|
|
68
68
|
|
|
69
|
-
**
|
|
69
|
+
**RESOLVE** `verify_cmd`(首个命中即停):
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
72
|
+
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
73
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
74
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
75
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
76
|
+
|
|
77
|
+
**EXEC** `verify_cmd` → **ASSERT** `exit_code == 0` && `failures == 0`
|
|
72
78
|
|
|
73
79
|
- 通过 → **GOTO** Step 1.5
|
|
74
80
|
- 失败 → **MATCH** `mode`:
|
|
@@ -281,6 +287,8 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
|
|
|
281
287
|
|
|
282
288
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
283
289
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
290
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
291
|
+
**REF** `_team-rules/task-lifecycle.md` — 进度追踪与知识合并(§3)
|
|
284
292
|
|
|
285
293
|
分支完成阶段尤其注意:
|
|
286
294
|
|
|
@@ -290,10 +290,11 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
|
|
|
290
290
|
> 用独立的全量验证确认实现正确。此阶段的每个"通过"声明必须基于刚执行的命令输出,不是 Phase 1 的记忆。
|
|
291
291
|
|
|
292
292
|
1. **RESOLVE** `verify_cmd`(首个命中即停):
|
|
293
|
-
1. `READ("05-risk.md", "§一验证计划")
|
|
293
|
+
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
294
294
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
295
295
|
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
296
|
-
4.
|
|
296
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
297
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令,记录到 `06-tdd-log.md`
|
|
297
298
|
|
|
298
299
|
2. **EXEC** `verify_cmd`(测试)→ **ASSERT** `exit_code == 0` && `failures == 0`
|
|
299
300
|
3. **EXEC** 项目 lint 命令 → **ASSERT** `exit_code == 0`
|
|
@@ -370,20 +370,24 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
|
|
|
370
370
|
> 确保任务目标被准确理解,用户对方案方向有明确确认。跳过 CONFIRM_GOAL 是编排器最危险的错误——后续所有 Agent 的工作都建立在这个确认之上。
|
|
371
371
|
|
|
372
372
|
1. **READ** 用户参数 → 提取任务描述
|
|
373
|
-
2. **
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
3.
|
|
379
|
-
|
|
380
|
-
|
|
373
|
+
2. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
374
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
375
|
+
3. **RESOLVE** `slug`(首个命中即停):
|
|
376
|
+
1. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/00-design-brief.md EXISTS` → 复用该 slug
|
|
377
|
+
2. **IF** 分期继承任务(checkpoint 含 `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
|
|
378
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
|
|
379
|
+
|
|
380
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
|
|
381
|
+
|
|
382
|
+
4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
383
|
+
5. **WRITE** checkpoint:`current_step=Step 1, next_step=CONFIRM_GOAL, phase=init, status=IN_PROGRESS`
|
|
384
|
+
6. **READ** `docs/tasks/progress.md`(**IF** NOT_EXISTS → 创建含表头)→ **ASSERT** `{slug} 不在 progress.md 已完成列表中`
|
|
381
385
|
- **IF** 已存在且状态 `DONE` → 提示用户,询问是否新建变体任务
|
|
382
386
|
|
|
383
387
|
> progress.md 是跨任务进度索引,位于 `docs/tasks/` 根目录,不在 slug 子目录中。
|
|
384
388
|
|
|
385
|
-
|
|
386
|
-
|
|
389
|
+
7. **WRITE** checkpoint:`current_step=CONFIRM_GOAL, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
|
|
390
|
+
8. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
|
|
387
391
|
- **IF** `00-design-brief.md EXISTS` → **READ** 并将摘要纳入展示
|
|
388
392
|
|
|
389
393
|
**MATCH** `user_response`:
|
|
@@ -673,6 +677,17 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
673
677
|
读取 skills/team-review/SKILL.md 获取完整执行步骤。
|
|
674
678
|
```
|
|
675
679
|
|
|
680
|
+
**READ** `11-review.md` 中 team-review 修复/回退决策
|
|
681
|
+
|
|
682
|
+
**IF** team-review 报告 `DONE_WITH_CONCERNS` 且 `route_target IN [team-impl, team-spec]`(P0/P1 回退场景,team-review 提前终止是正确行为):
|
|
683
|
+
|
|
684
|
+
> team-review 发现 P0/P1 问题后以 DONE_WITH_CONCERNS 终止执行,仅产出 11-review.md,不产出 12-asset-update.md / 13-retrospective.md / task-rules.md。这是有向图回退的正确行为,跳过完成验证直接进入回退检查。
|
|
685
|
+
|
|
686
|
+
→ **WRITE**(对话中)team-review 回退摘要:P0/P1 问题描述 + 路由决策(→ team-impl / → team-spec)
|
|
687
|
+
→ 直接进入下方回退检查
|
|
688
|
+
|
|
689
|
+
**ELSE**(team-review 正常完成):
|
|
690
|
+
|
|
676
691
|
**完成验证**(产出门禁):
|
|
677
692
|
|
|
678
693
|
**FOR** `file` **IN** [`11-review.md`, `12-asset-update.md`, `13-retrospective.md`, `task-rules.md`]:
|
|
@@ -681,8 +696,6 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
681
696
|
- **ASSERT** `13-retrospective.md CONTAINS "新规则" || CONTAINS "本次沉淀"`
|
|
682
697
|
- 任一不通过 → **ROLLBACK** team-review,指明缺失文件名
|
|
683
698
|
|
|
684
|
-
**READ** `11-review.md` 中 team-review 修复/回退决策
|
|
685
|
-
|
|
686
699
|
**WRITE**(对话中)team-review 产出摘要:五维度审查结论 + P0/P1 问题数 + 路由决策(继续/回退)。**IF** `status == DONE_WITH_CONCERNS` → 完整展示 concerns 给用户。
|
|
687
700
|
|
|
688
701
|
**WRITE** checkpoint:`current_step=Step 6, next_step=Step 7, phase=review, completed_steps 追加 Step 5`
|
|
@@ -854,10 +867,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
854
867
|
|
|
855
868
|
1. **WRITE**(对话中)候选项 + 触发条件给用户
|
|
856
869
|
2. **IF** 用户批准:
|
|
857
|
-
- **
|
|
858
|
-
- **
|
|
859
|
-
- **WRITE** 新 `.checkpoint.json`,含 `parent_slug` 指向上期
|
|
860
|
-
- **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认)
|
|
870
|
+
- **WRITE** checkpoint:`phase=phasing, parent_slug={当前slug}, next_phase_n={N}`
|
|
871
|
+
- **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认;Step 1 的 RESOLVE `slug` 将检测 checkpoint 中 `parent_slug` 触发分期任务分支,自动扫描目录生成新序号)
|
|
861
872
|
- team-spec 调度时额外传递上期 `01-plan.md` 候选表和 `03-sdd.md` 路径
|
|
862
873
|
|
|
863
874
|
**ELSE** → 记录用户决策,流程结束
|
|
@@ -982,6 +993,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
|
|
|
982
993
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
983
994
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
984
995
|
**REF** `_team-rules/ai-collaboration-standards.md` — AI 协作资产与 Prompt 工程规范
|
|
996
|
+
**REF** `_team-rules/spec-driven-workflow.md` — 有向图回退规则与回退次数上限
|
|
985
997
|
|
|
986
998
|
编排阶段尤其注意:
|
|
987
999
|
|
|
@@ -177,53 +177,62 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
|
|
|
177
177
|
**MATCH** `severity`:
|
|
178
178
|
|
|
179
179
|
- `P0` || `P1`
|
|
180
|
-
- `P0 实现 bug` && `spec 定义正确` →
|
|
181
|
-
- `P0 设计/架构缺陷` →
|
|
180
|
+
- `P0 实现 bug` && `spec 定义正确` → `route_target = team-impl` → **GOTO** Phase 3
|
|
181
|
+
- `P0 设计/架构缺陷` → `route_target = team-spec` → **GOTO** Phase 3
|
|
182
182
|
- `P0 安全漏洞` → **ASK_HUMAN**(安全决策需要人类确认)
|
|
183
|
-
- `P1 实现 bug` →
|
|
184
|
-
- `P1 测试遗漏` →
|
|
185
|
-
- `P0/P1 spec 遗漏` →
|
|
183
|
+
- `P1 实现 bug` → `route_target = team-impl` → **GOTO** Phase 3
|
|
184
|
+
- `P1 测试遗漏` → `route_target = team-impl`(需要补写测试) → **GOTO** Phase 3
|
|
185
|
+
- `P0/P1 spec 遗漏` → `route_target = team-spec` → **GOTO** Phase 3
|
|
186
186
|
- 需要人类决策 → **ASK_HUMAN**(有多个可行方案需要选择)
|
|
187
|
-
- `P2` →
|
|
188
|
-
- `P3` → 记录但不处理
|
|
187
|
+
- `P2` → `route_target = self` → **GOTO** Phase 3
|
|
188
|
+
- `P3` → 记录但不处理 → **GOTO** Phase 4
|
|
189
189
|
- *DEFAULT* → **GOTO** Phase 4
|
|
190
190
|
|
|
191
191
|
**回退时必须提供**:
|
|
192
192
|
|
|
193
193
|
- 问题 ID 和严重级别
|
|
194
194
|
- 具体位置(文件 + 行号)
|
|
195
|
-
-
|
|
195
|
+
- 问题描述(不是"有 bug",而是"第 42 行空指针")
|
|
196
196
|
- 建议的修复方案
|
|
197
197
|
- **IF** 回退到 team-impl → 提供修复后的期望测试用例
|
|
198
198
|
|
|
199
199
|
### Phase 3:执行路由决策
|
|
200
200
|
|
|
201
|
-
>
|
|
202
|
-
|
|
203
|
-
> TRAP:自修时容易越界——"顺手"改了超过 20 行或触及了不在自己职责内的逻辑。超范围修改应回退 team-impl。
|
|
204
|
-
|
|
205
|
-
1. 直接修改代码/测试(**每个问题限 20 行以内的修改**——更大规模的重构记录为建议,不直接执行)
|
|
206
|
-
2. **EXEC** 项目测试命令 — 确认修复正确
|
|
207
|
-
**ASSERT** `exit_code == 0` — 测试失败 → 回滚修改 → **GOTO** Phase 2
|
|
208
|
-
3. **EXEC** 项目 CI 检查命令 — 确认无 lint 问题
|
|
209
|
-
**ASSERT** `exit_code == 0` — lint 失败 → 修复后重新执行
|
|
210
|
-
|
|
211
|
-
**验证协议**:步骤 2-3 声明"通过"前必须执行 `_team-rules/verification-protocol.md: 验证执行步骤`
|
|
212
|
-
|
|
213
|
-
4. **ASSERT** `exit_code == 0` && `failures == 0`
|
|
214
|
-
- 通过 → **WRITE** 修复详情(问题 ID + 修复内容 + 验证结果)到 `11-review.md` §三修复记录
|
|
215
|
-
- 修复导致新测试失败或引入新问题 → 立即停止自修 → **ROLLBACK** team-impl(通过编排器),附带修复尝试的上下文和失败详情
|
|
201
|
+
> 根据 Phase 2 的 `route_target` 执行对应动作。P0/P1 必须终止执行交还编排器,不可自修。
|
|
216
202
|
|
|
217
203
|
**MATCH** `route_target`:
|
|
218
204
|
|
|
219
205
|
- `team-impl` || `team-spec` →
|
|
220
|
-
1. **WRITE** 问题详情到 `11-review.md
|
|
221
|
-
2.
|
|
206
|
+
1. **WRITE** 问题详情到 `11-review.md`(包含"回退时必须提供"的完整信息)
|
|
207
|
+
2. 以 **DONE_WITH_CONCERNS** 终止执行,向编排器交付路由决策和问题上下文
|
|
208
|
+
|
|
209
|
+
> TRAP:到了这里不要"顺手修一下"——P0/P1 问题必须回退给专职 Skill,这是有向图回退的硬约束 `_team-rules/first-principles.md: First Principle #4`。
|
|
210
|
+
|
|
222
211
|
- `human` →
|
|
223
212
|
1. **WRITE** 问题详情到 `11-review.md`
|
|
224
213
|
2. 向用户展示问题 + 选项 → **ASK_HUMAN**,等待决策
|
|
225
214
|
3. 根据决策执行修复
|
|
226
|
-
|
|
215
|
+
|
|
216
|
+
- `self`(仅 P2 及以下) →
|
|
217
|
+
|
|
218
|
+
**GATE** 自修准入:
|
|
219
|
+
- **ASSERT** `severity != P0 && severity != P1` — P0/P1 不可自修,必须回退
|
|
220
|
+
|
|
221
|
+
> TRAP:自修时容易越界——"顺手"改了超过 20 行或触及了不在自己职责内的逻辑。超范围修改应回退 team-impl。
|
|
222
|
+
|
|
223
|
+
1. 直接修改代码/测试(**每个问题限 20 行以内的修改**——更大规模的重构记录为建议,不直接执行)
|
|
224
|
+
2. **EXEC** 项目测试命令 — 确认修复正确
|
|
225
|
+
**ASSERT** `exit_code == 0` — 测试失败 → 回滚修改 → **GOTO** Phase 2
|
|
226
|
+
3. **EXEC** 项目 CI 检查命令 — 确认无 lint 问题
|
|
227
|
+
**ASSERT** `exit_code == 0` — lint 失败 → 修复后重新执行
|
|
228
|
+
|
|
229
|
+
**验证协议**:步骤 2-3 声明"通过"前必须执行 `_team-rules/verification-protocol.md: 验证执行步骤`
|
|
230
|
+
|
|
231
|
+
4. **ASSERT** `exit_code == 0` && `failures == 0`
|
|
232
|
+
- 通过 → **WRITE** 修复详情(问题 ID + 修复内容 + 验证结果)到 `11-review.md` §三修复记录
|
|
233
|
+
- 修复导致新测试失败或引入新问题 → 立即停止自修 → `route_target = team-impl` → 以 **DONE_WITH_CONCERNS** 终止执行,附带修复尝试的上下文和失败详情
|
|
234
|
+
|
|
235
|
+
- *DEFAULT* → **GOTO** Phase 4
|
|
227
236
|
|
|
228
237
|
### Phase 4:AI 协作资产维护(消费方契约)
|
|
229
238
|
|
|
@@ -459,6 +468,9 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
|
|
|
459
468
|
|
|
460
469
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
461
470
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
471
|
+
**REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
|
|
472
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
473
|
+
**REF** `_team-rules/ai-collaboration-standards.md` — 消费方契约原则(§1.2)与资产维护机制(§1.3)
|
|
462
474
|
|
|
463
475
|
审查阶段尤其注意:
|
|
464
476
|
|
|
@@ -496,6 +508,11 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
|
|
|
496
508
|
- 修复记录:直接修复 `{N}` 个,回退 `team-impl` `{N}` 个,回退 `team-spec` `{N}` 个,人类决策 `{N}` 个
|
|
497
509
|
- 资产更新:`{N}` 个文件已更新
|
|
498
510
|
- → 编排器将补全团队级证据并交付用户验收
|
|
511
|
+
- 发现 P0/P1 问题,路由回退 → **DONE_WITH_CONCERNS**
|
|
512
|
+
- 产出文件:`11-review.md`(仅此文件,Phase 4/5 跳过)
|
|
513
|
+
- `route_target`:`team-impl` / `team-spec`
|
|
514
|
+
- 问题详情:包含"回退时必须提供"的完整信息
|
|
515
|
+
- → 编排器读取 route_target 执行有向图回退
|
|
499
516
|
- 全部通过但有保留意见(P2 建议未采纳等) → **DONE_WITH_CONCERNS**
|
|
500
517
|
- 缺少关键上下文(SDD 缺失、代码无法访问等) → **NEEDS_CONTEXT**
|
|
501
518
|
- P0/P1 问题阻塞且路由失败 → **BLOCKED**,触发 **ASK_HUMAN**
|
|
@@ -67,8 +67,13 @@ NO CODE WITHOUT SPEC FIRST
|
|
|
67
67
|
|
|
68
68
|
**RESOLVE** `slug`(首个命中即停):
|
|
69
69
|
|
|
70
|
-
1.
|
|
71
|
-
|
|
70
|
+
1. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
|
|
71
|
+
**ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
|
|
72
|
+
2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
|
|
73
|
+
3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
|
|
74
|
+
4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
|
|
75
|
+
|
|
76
|
+
> TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
|
|
72
77
|
|
|
73
78
|
产出到 `docs/tasks/{slug}/`。
|
|
74
79
|
|
|
@@ -294,6 +299,7 @@ NO CODE WITHOUT SPEC FIRST
|
|
|
294
299
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
295
300
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
296
301
|
**REF** `_team-rules/spec-driven-workflow.md` — Spec-Driven 开发原则与 TDD 工作流
|
|
302
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
297
303
|
|
|
298
304
|
规格制定阶段尤其注意:
|
|
299
305
|
|
|
@@ -126,8 +126,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
126
126
|
|
|
127
127
|
1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
|
|
128
128
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
129
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
130
|
-
4.
|
|
129
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
130
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
131
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供测试命令
|
|
131
132
|
|
|
132
133
|
### Phase 4:补充测试(填补缺口)
|
|
133
134
|
|
|
@@ -224,9 +225,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
224
225
|
|
|
225
226
|
**回退时 MUST 提供**:
|
|
226
227
|
|
|
227
|
-
-
|
|
228
|
+
- 具体问题描述(不是"有 bug",而是"第 42 行空指针")
|
|
228
229
|
- 复现步骤(包括命令和输出)
|
|
229
|
-
- 期望行为(引用
|
|
230
|
+
- 期望行为(引用 SDD 条目编号)
|
|
230
231
|
- 建议修复方向
|
|
231
232
|
|
|
232
233
|
## OUTPUT_TEMPLATE
|
|
@@ -247,8 +248,9 @@ Phase 1 只分析,不写测试代码。
|
|
|
247
248
|
|
|
248
249
|
**REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
|
|
249
250
|
**REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
|
|
250
|
-
|
|
251
|
-
|
|
251
|
+
**REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
|
|
252
|
+
**REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
|
|
253
|
+
**REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
|
|
252
254
|
|
|
253
255
|
- **Rule #8 验证先行**:覆盖率声明必须基于当次新鲜执行的完整输出,不可引用缓存结果 `_team-rules/first-principles.md: First Principle #4`
|
|
254
256
|
- **Rule #3 产出必须验证**:测试矩阵中的每个覆盖声明必须有对应的测试运行证据 `_team-rules/first-principles.md: First Principle #4`
|
|
@@ -60,10 +60,9 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
|
|
|
60
60
|
|
|
61
61
|
1. `READ("05-risk.md", "§一验证计划")`
|
|
62
62
|
2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
|
|
63
|
-
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
|
|
64
|
-
4.
|
|
65
|
-
|
|
66
|
-
- *DEFAULT* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
63
|
+
3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
|
|
64
|
+
4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
|
|
65
|
+
5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
|
|
67
66
|
|
|
68
67
|
### Step 2:执行验证
|
|
69
68
|
|
|
@@ -148,7 +147,7 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
|
|
|
148
147
|
| 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
|
|
149
148
|
| Lint 干净 | `errors == 0` + `exit_code == 0` | 只检查部分文件、推测 |
|
|
150
149
|
| 构建成功 | `exit_code == 0` + 无 error | Lint 通过了、日志看起来对 |
|
|
151
|
-
| Bug 已修复 | 原始症状复现测试通过 | 代码改了、假设修好了 |
|
|
150
|
+
| Bug 已修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
|
|
152
151
|
| 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
|
|
153
152
|
| Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
|
|
154
153
|
| 需求满足 | 逐条对照 checklist | 测试通过了 |
|