team-skills 1.5.0 → 1.5.1

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 CHANGED
@@ -7,6 +7,21 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.5.1] - 2026-06-28
11
+
12
+ ### 修复
13
+
14
+ - team-orchestrator: slug RESOLVE 链修复——READ 动作从 RESOLVE 中独立,消除 LLM"首个命中即停"导致的重复序号 bug
15
+ - team-orchestrator: Step 7.3.1 分期任务去掉独立 slug 解析,统一由 Step 1 处理(消除双重解析冲突)
16
+ - team-orchestrator: Step 1 步骤编号连续性修复(5,6 重复→7,8)
17
+
18
+ ### 变更
19
+
20
+ - 共享内容一致性同步:verify_cmd RESOLVE 5 步链(5 个 skill)、slug 解析流程(3 个 skill)、回退四要素(2 个 skill)、失败模式表 4→10 行(verification-protocol + team-verify)——全部与 canonical source 完全一致
21
+ - CLAUDE.md §2.2:明确 REF 仅用于声明性章节(CONSTITUTIONAL_RULES/COMPLETION),STEPS 中操作性内容必须内联
22
+ - 5 个 skill 补充 spec-driven-workflow.md 声明性 REF(team-test/review/orchestrator/debug/feedback)
23
+ - 4 个 skill 补充 verification-protocol.md / task-lifecycle.md / ai-collaboration-standards.md 声明性 REF
24
+
10
25
  ## [1.5.0] - 2026-06-28
11
26
 
12
27
  ### 新增
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-skills",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "AI Agent Skills framework — Spec-Driven development with directed-graph rollback and quality gates",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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
- - 分期继承任务:在上期关键词后追加 `-p{N}`(N 从 2 起),使用新序号。如 `0001-add-tooltip`(P1)→ `0002-add-tooltip-p2`(P2)→ `0005-add-tooltip-p3`(P3)
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 failures + 退出码 0 | 上一轮运行、"应该能过" |
55
- | Lint 干净 | 0 errors + 退出码 0 | 部分检查、推测 |
56
- | 构建成功 | exit 0 + 无 error | Lint 通过、日志看起来对 |
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/ NOT_EXISTS`创建 `docs/tasks/`
85
- 7. **READ** `docs/tasks/` 已有目录列表取最大序号 +1(从 `0001` 起)→ 拼接 `slug` = `{序号}-{keyword}`(整体 ≤ 50 字符)
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. *NONE* **NEEDS_CONTEXT**:请用户提供验证命令
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
- **EXEC** 项目测试命令 — 声明"通过"前须执行验证协议 `_team-rules/verification-protocol.md: 验证执行步骤`
69
+ **RESOLVE** `verify_cmd`(首个命中即停):
70
70
 
71
- **ASSERT** `exit_code == 0` && `failures == 0`
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. *NONE* **NEEDS_CONTEXT**:请用户提供验证命令,记录到 `06-tdd-log.md`
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. **RESOLVE** `slug`(首个命中即停):
374
- 1. **READ** `docs/tasks/` 已有目录(**IF** NOT_EXISTS创建)
375
- 2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/00-design-brief.md EXISTS` → 复用该 slug
376
- 3. **IF** 分期任务(HUMAN_ACCEPT 后续分期触发)→ slug 包含 `-p{N}` 后缀,checkpoint 记录 `parent_slug`
377
- 4. *DEFAULT* 取最大序号 +1(从 `0001` 起),拼接 `{NNNN}-{关键词}`(kebab-case,≤ 50 字符)
378
- 3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 跳过)→ **ASSERT** `exit_code == 0`
379
- 4. **WRITE** checkpoint:`current_step=Step 1, next_step=CONFIRM_GOAL, phase=init, status=IN_PROGRESS`
380
- 5. **READ** `docs/tasks/progress.md`(**IF** NOT_EXISTS 创建含表头)→ **ASSERT** `{slug} 不在 progress.md 已完成列表中`
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
- 6. **WRITE** checkpoint:`current_step=CONFIRM_GOAL, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
386
- 7. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
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`:
@@ -854,10 +858,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
854
858
 
855
859
  1. **WRITE**(对话中)候选项 + 触发条件给用户
856
860
  2. **IF** 用户批准:
857
- - **RESOLVE** slug:取最大序号 +1,关键词追加 `-p{N}`
858
- - **EXEC** 创建新目录 `docs/tasks/{新slug}/` **ASSERT** `exit_code == 0`
859
- - **WRITE** 新 `.checkpoint.json`,含 `parent_slug` 指向上期
860
- - **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认)
861
+ - **WRITE** checkpoint:`phase=phasing, parent_slug={当前slug}, next_phase_n={N}`
862
+ - **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认;Step 1 的 RESOLVE `slug` 将检测 checkpoint `parent_slug` 触发分期任务分支,自动扫描目录生成新序号)
861
863
  - team-spec 调度时额外传递上期 `01-plan.md` 候选表和 `03-sdd.md` 路径
862
864
 
863
865
  **ELSE** → 记录用户决策,流程结束
@@ -982,6 +984,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
982
984
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
983
985
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
984
986
  **REF** `_team-rules/ai-collaboration-standards.md` — AI 协作资产与 Prompt 工程规范
987
+ **REF** `_team-rules/spec-driven-workflow.md` — 有向图回退规则与回退次数上限
985
988
 
986
989
  编排阶段尤其注意:
987
990
 
@@ -192,7 +192,7 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
192
192
 
193
193
  - 问题 ID 和严重级别
194
194
  - 具体位置(文件 + 行号)
195
- - 问题描述
195
+ - 问题描述(不是"有 bug",而是"第 42 行空指针")
196
196
  - 建议的修复方案
197
197
  - **IF** 回退到 team-impl → 提供修复后的期望测试用例
198
198
 
@@ -459,6 +459,9 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
459
459
 
460
460
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
461
461
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
462
+ **REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
463
+ **REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
464
+ **REF** `_team-rules/ai-collaboration-standards.md` — 消费方契约原则(§1.2)与资产维护机制(§1.3)
462
465
 
463
466
  审查阶段尤其注意:
464
467
 
@@ -67,8 +67,13 @@ NO CODE WITHOUT SPEC FIRST
67
67
 
68
68
  **RESOLVE** `slug`(首个命中即停):
69
69
 
70
- 1. 扫描 `docs/tasks/` 取最大序号 +1(从 `0001` 起),拼接 kebab-case 关键词,整体 ≤ 50 字符
71
- 2. *NONE*(`docs/tasks/` 不存在)→ 创建目录,序号从 `0001`
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. *NONE* **NEEDS_CONTEXT**:请用户提供测试命令
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
- - 期望行为(引用 03-sdd.md 中的规格)
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. *NONE*:
65
- - 手动验证可行(`截图` / `curl` / `日志对比`)→ 标注验证方式
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 | 测试通过了 |