team-skills 1.5.3 → 1.6.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 CHANGED
@@ -7,6 +7,50 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.6.2] - 2026-06-29
11
+
12
+ ### 变更
13
+
14
+ - team-orchestrator: Step 1.5.2 从自动创建功能分支改为分支策略选择(Fork/不Fork),用户显式选择是否创建新分支
15
+ - team-orchestrator: 移除"当前分支≠基准分支时自动跳过"的隐式规则,仅保留 `--no-branch` 显式跳过
16
+ - team-orchestrator: Mermaid + ASCII 流程图分支步骤标签同步更新
17
+ - team-finish: Step 2 新增当前分支获取 + 基准分支守卫(`branch == base_branch` 时 BLOCKED)
18
+ - team-finish: Step 3 选项模板增加分支信息展示,选项描述使用具名分支变量 `{branch}`
19
+
20
+ ## [1.6.1] - 2026-06-28
21
+
22
+ ### 变更
23
+
24
+ - team-spec: Phase 2.5 用户审阅从 REPEAT MAX=3 改为无限循环——用户未通过则持续迭代,每次修改/追加后主动请求确认
25
+
26
+ ## [1.6.0] - 2026-06-28
27
+
28
+ ### 新增
29
+
30
+ - team-spec: Phase 1.5 显式迭代澄清(REPEAT MAX=5),支持多轮需求修改和追加
31
+ - team-spec: Phase 2.5 用户审阅反馈循环(无次数限制,用户未通过则持续迭代),每次回复后重新请求确认
32
+ - team-spec: Phase 3 多角色轮审(实现者/测试者/攻击者/用户/运维者)+ 自动修复循环(REPEAT MAX=3),每角色有专属 SDD 章节审查焦点
33
+ - team-spec: Phase 3 前置说明——方案执行者是 AI Agent,规格须比人类版本更精确、零歧义
34
+ - team-spec: 反橡皮图章双 TRAP——每角色至少 1 条观察 + 每轮至少 1 个改进项
35
+ - team-spec: ROLE 对抗自检从 3 视角扩展为 5 视角(+用户、+运维者)
36
+ - team-finish: 新增默认 Option 1「合并到主分支并推送」(push 功能分支留档 → merge → push 主分支 → 清理本地功能分支)
37
+ - team-finish: 选项展示增加适用场景说明,帮助用户选择
38
+
39
+ ### 变更
40
+
41
+ - team-finish: 选项从 5 个精简为 4 个,移除「仅本地合并」(团队协作反模式),重新编号
42
+ - team-orchestrator: Mermaid 流程图 Step 7 标签对齐实际标题「分支完成处理」
43
+ - team-orchestrator: Step 7 team-finish 选项描述更新为新选项名称
44
+ - team-orchestrator: NEXT 移除与 Step 7 重复的 team-finish 推荐
45
+ - team-spec: STOP_SIGNALS 从 4 项扩展为 6 项(+跳过 Phase 2.5 用户审阅、+跳过 Phase 3 多角色轮审)
46
+ - team-spec: SELF_CHECK 新增 Phase 2.5 用户审阅确认 + Phase 3 多角色轮审执行验证
47
+ - team-spec: ROLE 系统提示词流程描述补充 Phase 2.5 和 Phase 3
48
+ - team-debug: Rule #7 引用澄清——区分编排器跨 Agent 回退(≤ 2 次)vs Skill 内部修复重试(≤ 3 次)
49
+
50
+ ### 修复
51
+
52
+ - 7 个 reference 模板对齐 SKILL.md 内联骨架:11-review-template(章节顺序+表结构重写)、12-asset-update-template(补充消费方契约列+8 类覆盖度表)、14-team-template(§编号+§四表结构)、15-brief-template(§编号+占位符)、13-retrospective-template(header 元数据)、review-checklist-template(性能+安全检查项)、delivery-checklist-template(章节引用)
53
+
10
54
  ## [1.5.3] - 2026-06-28
11
55
 
12
56
  ### 修复
package/README.md CHANGED
@@ -373,6 +373,34 @@ Team Skills 融合了业界多个 AI 协作框架的精华:
373
373
 
374
374
  ---
375
375
 
376
+ ### 推荐:禁用 EnterPlanMode(Claude Code)
377
+
378
+ Team Skills 的每个 Skill 都定义了完整的结构化工作流(Phase/Step),不需要 Claude Code 的 `EnterPlanMode`。长对话中 LLM 可能自动切入 plan mode,绕过 Skill 流程(跳过 TDD、根因调查、有向图调度等纪律流程)。
379
+
380
+ 在项目的 `.claude/settings.json` 中添加 PreToolUse Hook 可彻底阻止:
381
+
382
+ ```json
383
+ {
384
+ "hooks": {
385
+ "PreToolUse": [
386
+ {
387
+ "matcher": "EnterPlanMode",
388
+ "hooks": [
389
+ {
390
+ "type": "command",
391
+ "command": "echo 'BLOCKED: team-skills STEPS 是完整工作流,不需要 EnterPlanMode。' >&2; exit 2"
392
+ }
393
+ ]
394
+ }
395
+ ]
396
+ }
397
+ }
398
+ ```
399
+
400
+ > `exit 2` 会阻止工具调用并将 stderr 消息反馈给 LLM。此 Hook 仅影响当前项目,不影响其他项目中 EnterPlanMode 的正常使用。
401
+
402
+ ---
403
+
376
404
  ## 🔧 本地开发
377
405
 
378
406
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-skills",
3
- "version": "1.5.3",
3
+ "version": "1.6.2",
4
4
  "description": "AI Agent Skills framework — Spec-Driven development with directed-graph rollback and quality gates",
5
5
  "type": "module",
6
6
  "bin": {
@@ -218,7 +218,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
218
218
 
219
219
  - **Rule #9 TDD 顺序不可逆**:修复 bug 必须先写失败的回归测试再写修复代码 `_team-rules/first-principles.md: First Principle #2`
220
220
  - **Rule #3 产出必须验证**:修复完成后必须执行验证协议 `_team-rules/verification-protocol.md: 验证执行步骤` `_team-rules/first-principles.md: First Principle #4`
221
- - **Rule #7 回退次数上限**:3 次修复失败必须触发 `ASK_HUMAN`,不可无限重试 `_team-rules/first-principles.md: First Principle #1`
221
+ - **Rule #7 回退次数上限**:编排模式下同一 source→target 对回退 ≤ 2 次触发 `ASK_HUMAN`;Skill 内部修复重试 ≤ 3 次后 `BLOCKED` `_team-rules/first-principles.md: First Principle #1`
222
222
  - **Rule #2 有向图回退**:调试发现根源在 spec 歧义/遗漏 → `ROLLBACK` `team-spec` `_team-rules/first-principles.md: First Principle #4`
223
223
 
224
224
  ## SELF_CHECK
@@ -94,10 +94,12 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
94
94
  - **IF** `exit_code == 0` → 逐条排除占位符/测试值/注释 → 真实凭证 → **BLOCKED**,**WRITE**(对话中)凭证位置,要求修复后重新验证
95
95
  - **ELSE** → **GOTO** Step 2
96
96
 
97
- ### Step 2:确定基准分支
97
+ ### Step 2:确定当前分支与基准分支
98
98
 
99
99
  > 精确找到合并目标。基准错误 = 合并到错误分支,后果比不合并更糟。
100
100
 
101
+ **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取 `branch`
102
+
101
103
  **RESOLVE** `base_branch`(首个命中即停):
102
104
 
103
105
  1. `READ("docs/tasks/{slug}/.checkpoint.json").base_branch`
@@ -112,6 +114,8 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
112
114
 
113
115
  - 失败(分支无公共祖先)→ **BLOCKED**,触发 **ASK_HUMAN**
114
116
 
117
+ **IF** `branch == base_branch` → **WRITE**(对话中)"当前已在基准分支 {base_branch} 上,无功能分支需要完成。" → **BLOCKED**
118
+
115
119
  ### Step 3:展示选项
116
120
 
117
121
  > 让用户在完整信息下做选择。选项列表必须覆盖所有合理路径,不替用户预判。
@@ -119,14 +123,26 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
119
123
  **WRITE**(对话中)选项列表:
120
124
 
121
125
  ```
122
- 实现完成。请选择后续操作:
126
+ 当前分支:{branch},基准分支:{base_branch}
127
+ 实现完成,测试已通过。请选择集成方式:
128
+
129
+ 1. [默认] 合并到 {base_branch} 并推送
130
+ → push {branch}(留档) → 切换到 {base_branch} → merge → push → 清理 {branch}
131
+ 适用:有合并权限,可直接集成
132
+
133
+ 2. 创建 Pull Request
134
+ → push {branch} → 创建 PR 等待审查
135
+ 适用:需要 Code Review 或 CI 门禁
136
+
137
+ 3. 保留当前分支
138
+ → 不做任何操作,{branch} 原样保留
139
+ 适用:尚需打磨,或等待外部依赖就绪
123
140
 
124
- 1. 本地合并到 {base_branch}
125
- 2. 推送并创建 Pull Request
126
- 3. 保留当前分支(稍后处理)
127
- 4. 丢弃本次工作
141
+ 4. 丢弃本次工作(需二次确认)
142
+ 切换到 {base_branch} → 强制删除 {branch}
143
+ 适用:实验性工作,确认不再需要
128
144
 
129
- 请选择:
145
+ 请选择 [1]:
130
146
  ```
131
147
 
132
148
  ### Step 4:执行选择
@@ -137,19 +153,25 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
137
153
 
138
154
  **MATCH** `user_choice`:
139
155
 
140
- - `Option 1`(本地合并):
141
- 1. **EXEC** `git checkout {base_branch} && git pull`
156
+ - `Option 1`(合并到 {base_branch} 并推送,默认):
157
+ 1. **EXEC** `git push -u origin {branch}`
158
+ - **ASSERT** `exit_code == 0`
159
+ - 失败(auth 错误、远程未配置)→ **WRITE**(对话中)错误信息给用户,**BLOCKED**
160
+ 2. **EXEC** `git checkout {base_branch} && git pull`
142
161
  - **ASSERT** `exit_code == 0`
143
162
  - 失败 → **WRITE**(对话中)错误信息,**BLOCKED**
144
- 2. **EXEC** `git merge {branch} --no-ff`
163
+ 3. **EXEC** `git merge {branch} --no-ff`
145
164
  - **IF** 合并冲突:
146
165
  - **GOTO** 子步骤 4.1
147
166
  - **ELSE**:
148
167
  - 继续下一步
149
- 3. **EXEC** 项目测试命令 — 声明"通过"前须执行验证协议 `_team-rules/verification-protocol.md: 验证执行步骤`
168
+ 4. **EXEC** 项目测试命令 — 声明"通过"前须执行验证协议 `_team-rules/verification-protocol.md: 验证执行步骤`
150
169
  - **ASSERT** `exit_code == 0` && `failures == 0`
151
170
  - 失败 → 记录回归详情 → **BLOCKED**
152
- 4. **EXEC** `git branch -d {branch}`
171
+ 5. **EXEC** `git push`
172
+ - **ASSERT** `exit_code == 0`
173
+ - 失败 → **WRITE**(对话中)错误信息,**BLOCKED**
174
+ 6. **EXEC** `git branch -d {branch}`
153
175
  - **IF** `exit_code != 0` → **WRITE**(对话中)"分支未完全合并,需 -D 强制删除?",等待用户确认
154
176
 
155
177
  - `Option 2`(创建 PR):
@@ -11,7 +11,7 @@ description: Use when task needs full spec→impl→test→review pipeline with
11
11
 
12
12
  ```mermaid
13
13
  flowchart TD
14
- CONFIRM_GOAL["CONFIRM_GOAL: 人类确认目标"] --> branch["创建功能分支"]
14
+ CONFIRM_GOAL["CONFIRM_GOAL: 人类确认目标"] --> branch["分支策略选择(Fork/不Fork)"]
15
15
  branch --> team-spec["team-spec: 规格制定"]
16
16
  team-spec --> CONFIRM_SPEC["CONFIRM_SPEC: 人类确认规格"]
17
17
  CONFIRM_SPEC --> team-impl["team-impl: TDD 实现"]
@@ -22,7 +22,7 @@ flowchart TD
22
22
  team-review -->|"P0/P1 问题"| team-impl
23
23
  team-review -->|"spec 遗漏"| team-spec
24
24
  team-review -->|"无问题"| teamEvidence["Step 6: 团队证据"]
25
- teamEvidence --> finish["Step 7: finish-review 集成"]
25
+ teamEvidence --> finish["Step 7: 分支完成处理"]
26
26
  finish --> HUMAN_ACCEPT["HUMAN_ACCEPT: 人类验收"]
27
27
  HUMAN_ACCEPT --> archive["Step 7.5: 归档"]
28
28
  archive --> qualityCheck["Step 8: 质量检查"]
@@ -102,8 +102,8 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
102
102
  │ 确认 │ 不确认 → 返回修改
103
103
  ▼ └────────┐
104
104
  ┌──────────────────┐ │
105
- 创建功能分支 │ │
106
- {slug} 分支 │ │
105
+ 分支策略选择 │ │
106
+ Fork / 不Fork │ │
107
107
  └──────┬───────────┘ │
108
108
  │ │
109
109
  ▼ │
@@ -417,14 +417,34 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
417
417
  3. **FOR** `name` **IN** [`main`, `master`, `develop`]:**EXEC** `git show-ref --verify refs/heads/{name}` → **IF** `exit_code == 0` → 首个存在即停
418
418
  4. *NONE* → **ASK_HUMAN**,请求用户指定基准分支
419
419
 
420
- #### 1.5.2 创建功能分支
420
+ #### 1.5.2 分支策略选择
421
421
 
422
- 1. **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取当前分支名
422
+ 1. **EXEC** `git branch --show-current` → **ASSERT** `exit_code == 0` → 获取 `current_branch`
423
423
  2. **EXEC** `git status --porcelain` → **ASSERT** `exit_code == 0`
424
424
  - **IF** `output` NOT_EMPTY → **GOTO** 1.5.2.1
425
- 3. **EXEC** `git checkout -b {slug}`
426
- - **IF** `exit_code != 0`(分支已存在)→ **EXEC** `git checkout {slug}` → **ASSERT** `exit_code == 0`
427
- 4. **WRITE** checkpoint:`current_step=Step 2, branch={slug}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
425
+
426
+ 3. **WRITE**(对话中)分支策略选项:
427
+
428
+ ```
429
+ 当前分支:{current_branch},基准分支:{base_branch}
430
+ 请选择分支策略:
431
+
432
+ 1. [默认] Fork — 从当前位置创建新分支 {slug}
433
+ 适用:功能开发需要隔离,便于回退和 PR
434
+
435
+ 2. 不 Fork — 直接在当前分支 {current_branch} 上工作
436
+ 适用:当前分支已是工作分支,或不需要分支隔离
437
+
438
+ 请选择 [1]:
439
+ ```
440
+
441
+ **MATCH** `user_choice`:
442
+
443
+ - `Option 1`(Fork,默认)→ **EXEC** `git checkout -b {slug}`
444
+ - **IF** `exit_code != 0`(分支已存在)→ **EXEC** `git checkout {slug}` → **ASSERT** `exit_code == 0`
445
+ - **WRITE** checkpoint:`current_step=Step 2, branch={slug}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
446
+ - `Option 2`(不 Fork)→ **WRITE** checkpoint:`current_step=Step 2, branch={current_branch}, base_branch={基准分支名}, completed_steps 追加 Step 1.5`
447
+ - *DEFAULT* → 请求用户从以上选项中选择
428
448
 
429
449
  #### 1.5.2.1:处理未提交变更
430
450
 
@@ -434,16 +454,15 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
434
454
 
435
455
  **MATCH** `user_choice`:
436
456
 
437
- - `stash 后继续` → **EXEC** `git stash` → **ASSERT** `exit_code == 0` → **GOTO** 1.5.2 步骤 3
438
- - `先提交再继续` → 等待用户提交 → **GOTO** 1.5.2 步骤 3
457
+ - `stash 后继续` → **EXEC** `git stash` → **ASSERT** `exit_code == 0` → **GOTO** 1.5.2 步骤 3(展示分支策略选项)
458
+ - `先提交再继续` → 等待用户提交 → **GOTO** 1.5.2 步骤 3(展示分支策略选项)
439
459
  - `取消` → **BLOCKED**
440
460
  - *DEFAULT* → 请求用户从以上选项中选择
441
461
 
442
462
  不自动 stash 或丢弃。
443
463
 
444
- **跳过条件**(不创建分支):
464
+ **跳过条件**(跳过分支策略选择,不展示选项):
445
465
 
446
- - **IF** 当前分支名 ≠ `base_branch` → 使用当前分支,checkpoint 中 `branch` 记录当前分支名
447
466
  - **IF** 用户指定 `--no-branch` → 直接在当前分支上工作
448
467
 
449
468
  **恢复场景**:**IF** 断点续传(checkpoint 已有 `branch` 字段)→ **ASSERT** `当前分支 == checkpoint.branch`。不一致 → 提示用户切换分支,不自动切换。
@@ -821,7 +840,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
821
840
  **ROUTE** `team-finish`:
822
841
 
823
842
  - 传递 checkpoint 中的 `branch` 和 `base_branch` 信息
824
- - `team-finish` 将验证测试 → 展示选项(merge/PR/keep/discard)→ 执行用户选择
843
+ - `team-finish` 将验证测试 → 展示集成选项(合并并推送/创建 PR/保留/丢弃)→ 执行用户选择
825
844
 
826
845
  **IF** `team-finish` 报告测试不通过 → **ROLLBACK** team-impl(附失败详情),修复完成后 **GOTO** Step 7。
827
846
 
@@ -1052,5 +1071,5 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
1052
1071
 
1053
1072
  ## NEXT
1054
1073
 
1055
- - 编排完成 → 使用 `team-finish` 合并分支
1056
1074
  - 需要协作评分 → 使用 `team-score` 获取质量评分
1075
+ - 开始下一个功能 → 使用 `team-brainstorm` 或 `team-spec`
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Team 编排器产出 | {日期}
4
4
 
5
- ## 一、角色分工
5
+ ## §一 角色分工
6
6
 
7
7
  | 角色 | 负责人/Agent | 职责范围 | 产出物 |
8
8
  | ------------- | ------------ | ---------------------------------------- | ----------------------------- |
@@ -12,7 +12,7 @@
12
12
  | Review & 沉淀 | team-review | 代码审查、资产维护、复盘 | 11-13 + task-rules + 资产更新 |
13
13
  | 编排协调 | team-orchestrator | 调度、一致性检查、交付包装 | 14-15 |
14
14
 
15
- ## 二、协作资产一致性检查(自动化验证)
15
+ ## §二 协作资产一致性检查(自动化验证)
16
16
 
17
17
  | 检查项 | 验证方式 | 结果 | 修复说明 |
18
18
  | ----------------------- | -------------------------------------- | ----- | ---------------- |
@@ -25,7 +25,7 @@
25
25
 
26
26
  > commit type 清单:`feat` / `fix` / `test` / `refactor` / `docs` / `chore` / `style` / `perf`
27
27
 
28
- ## 三、个人贡献明细
28
+ ## §三 个人贡献明细
29
29
 
30
30
  | 贡献者 | 角色 | 主要贡献 | 产出物 | 提交数 |
31
31
  | ------------ | ----------- | ------------- | ------ | ------ |
@@ -34,18 +34,13 @@
34
34
  | {人名/Agent} | team-test | 测试补全 | 09-10 | {N} |
35
35
  | {人名/Agent} | team-review | Review + 沉淀 | 11-13 | {N} |
36
36
 
37
- ## 四、交叉 Review 质量统计
37
+ ## §四 质量审查数据
38
38
 
39
- | 指标 | 数值 |
40
- | ----------------------------------- | ---- |
41
- | Review 发现问题总数 | {N} |
42
- | 其中真实问题(P0+P1+P2) | {N} |
43
- | 其中格式/风格建议(P3) | {N} |
44
- | 真实问题占比 | {N}% |
45
- | 已修复问题数 | {N} |
46
- | 剩余风险数 | {N} |
39
+ | 维度 | 真实问题数 | P0 | P1 | P2 |
40
+ | ---- | ---------- | -- | -- | -- |
41
+ | {dimension} | {count} | {n} | {n} | {n} |
47
42
 
48
- ## 五、交付物完整性检查
43
+ ## §五 交付物完整性检查
49
44
 
50
45
  | 文件 | 状态 | 质量维度 |
51
46
  | ------------------- | ---- | ----------------------------- |
@@ -2,13 +2,13 @@
2
2
 
3
3
  > Team 编排器产出
4
4
 
5
- ## 一、30 秒 Elevator Pitch
5
+ ## §一 30 秒 Elevator Pitch
6
6
 
7
7
  > 用 3 句话概述:(1) 解决了什么问题 (2) 怎么做的(核心方案) (3) 效果如何(量化指标或对比)
8
8
 
9
- {填写}
9
+ {3 句话:问题 → 方案 → 结果}
10
10
 
11
- ## 二、关键决策解释
11
+ ## §二 关键决策解释
12
12
 
13
13
  (从 08-ai-decisions.md 中挑选 2-3 个最重要的决策)
14
14
 
@@ -16,13 +16,13 @@
16
16
  | ---- | -------- | ------------ | ------------------ |
17
17
  | ... | ... | ... | ... |
18
18
 
19
- ## 三、AI 协作亮点
19
+ ## §三 AI 协作亮点
20
20
 
21
21
  - 提示词纠偏最有效的一次:{具体描述——原 prompt、偏离现象、修改后效果}
22
22
  - 拒绝 AI 建议最正确的一次:{具体描述——AI 建议什么、为什么拒绝、实际结果}
23
23
  - TDD 帮助发现的真实 bug:{具体描述——测试用例、失败输出、修复内容}
24
24
 
25
- ## 四、测试覆盖概要
25
+ ## §四 测试覆盖概要
26
26
 
27
27
  | 维度 | 用例数 | 覆盖率 | 关键发现 |
28
28
  | ---- | ------ | ------ | -------- |
@@ -33,7 +33,7 @@
33
33
 
34
34
  > 数据来源:09-test-matrix.md + 10-test-report.md
35
35
 
36
- ## 五、遗留风险坦诚说明
36
+ ## §五 遗留风险坦诚说明
37
37
 
38
38
  (从 11-review.md §四 剩余风险中摘录)
39
39
 
@@ -41,7 +41,7 @@
41
41
  | ---- | -------- | -------- | -------- |
42
42
  | ... | P2/P3 | ... | ... |
43
43
 
44
- ## 六、下次改进承诺
44
+ ## §六 下次改进承诺
45
45
 
46
46
  (从 13-retrospective.md §三中摘录)
47
47
 
@@ -1,63 +1,39 @@
1
1
  # 代码审查报告
2
2
 
3
- > team-review 产出
3
+ > team-review 产出 | {slug} | {日期}
4
4
 
5
5
  ## 一、审查范围
6
6
 
7
- | 维度 | 覆盖情况 |
8
- | ---------- | -------- |
9
- | 审查文件数 | {N} |
10
- | 正确性 | ✅/⚠️ |
11
- | 可维护性 | ✅/⚠️ |
12
- | 性能 | ✅/⚠️ |
13
- | 安全 | ✅/⚠️ |
14
- | 测试覆盖 | ✅/⚠️ |
7
+ | | 内容 |
8
+ |----|------|
9
+ | 审查文件数 | {N} |
10
+ | 变更行数 | +{N} / -{N} |
11
+ | 对照规格 | 03-sdd.md §{sections} |
15
12
 
16
- ## 二、Constitutional 合规检查
13
+ ## 二、问题清单
17
14
 
18
- | 规则 | 结果 | 说明 |
19
- | ---------------- | -------- | ---- |
20
- | 人类介入未被跳过 | ✅/⚠️/❌ | ... |
21
- | 有向图回退 | ✅/⚠️/❌ | ... |
22
- | TDD Iron Law | ✅/⚠️/❌ | ... |
23
- | Kill Switch 触发 | ✅/⚠️/❌ | ... |
24
- | 分期交付 | ✅/⚠️/❌ | ... |
25
- | 自我约束预算 | ✅/⚠️/❌ | ... |
26
- | 来源标签 | ✅/⚠️/❌ | ... |
27
- | 产出必须验证 | ✅/⚠️/❌ | ... |
28
- | 回退次数上限 | ✅/⚠️/❌ | ... |
29
- | 验证先行原则 | ✅/⚠️/❌ | ... |
15
+ | ID | 级别 | 维度 | 文件:行号 | 问题描述 | SDD 引用 | 处理方式 |
16
+ |----|------|------|-----------|----------|----------|----------|
17
+ | R1 | P{0-3} | {维度} | {file}:{line} | {具体描述} | §{ref} | 报告/直接修/记录 |
30
18
 
31
- ## 三、发现的问题
19
+ ## 三、修复记录(P2 自修)
32
20
 
33
- ### P0(必须修复)
21
+ | 问题 ID | 修复内容 | 验证结果(exit_code + output 摘要) |
22
+ |---------|----------|--------------------------------------|
23
+ | R{N} | {修改描述} | ✅ `exit_code == 0`,{N} tests passed |
34
24
 
35
- | ID | 文件 | 行号 | 问题描述 | 路由 | 修复方案 |
36
- | --- | ---- | ---- | -------- | ------------------ | -------- |
37
- | ... | ... | ... | ... | → team-impl / → ASK_HUMAN | ... |
25
+ ## 四、Constitutional 合规检查
38
26
 
39
- ### P1(应该修复)
27
+ | Rule | 检查方式 | 证据 | 结果 |
28
+ |------|----------|------|------|
29
+ | {rule_name} | {how_checked} | {evidence} | ✅/❌ P{N} |
40
30
 
41
- | ID | 文件 | 行号 | 问题描述 | 路由 | 修复方案 |
42
- | --- | ---- | ---- | -------- | ------------------ | -------- |
43
- | ... | ... | ... | ... | → team-impl / → ASK_HUMAN | ... |
31
+ ## 五、审查结论
44
32
 
45
- ### P2(建议修复)
33
+ 状态:{DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED}
46
34
 
47
- | ID | 文件 | 行号 | 问题描述 | 修复方式 | 修复内容 |
48
- | --- | ---- | ---- | -------- | -------- | -------- |
49
- | ... | ... | ... | ... | 自行修复 | ... |
35
+ 剩余风险:
50
36
 
51
- ## 四、修复记录
37
+ - {risk_description}
52
38
 
53
- | ID | 修复方式 | 修复内容 | 验证方式 | 状态 |
54
- | --- | ----------- | -------- | ------------ | ---- |
55
- | ... | 自行修复 | ... | 项目测试命令 | ✅ |
56
- | ... | → team-impl | ... | ... | ⏳ |
57
- | ... | → ASK_HUMAN | ... | ... | ⏳ |
58
-
59
- ## 五、剩余风险
60
-
61
- | 风险描述 | 影响 | 接受理由 |
62
- | -------- | ---- | -------- |
63
- | ... | ... | ... |
39
+ 路由决策:{→ team-review 通过 / team-impl 修复 / → team-spec 补全 / → ASK_HUMAN}
@@ -1,45 +1,28 @@
1
1
  # AI 协作资产更新记录
2
2
 
3
- > team-review 产出
3
+ > team-review 产出 | {slug} | {日期}
4
4
 
5
- ## 资产层级概览
5
+ ## 更新清单
6
6
 
7
- | 层级 | 文件 | 更新状态 |
8
- | ------ | ------------------------------- | ---------------- |
9
- | 项目级 | CLAUDE.md / .cursor/rules/ | ✅/未更新 |
10
- | 模块级 | {module}/CLAUDE.md | ✅/未更新/不适用 |
11
- | 任务级 | docs/tasks/{slug}/task-rules.md | ✅ |
7
+ | 序号 | 资产文件 | 更新类型 | 触发条件 | 可执行指令 | 示例(✅/❌) |
8
+ |------|----------|----------|----------|------------|--------------|
9
+ | 1 | {file_path} | 新增/修改 | {when} | {do_what} | ✅ ... / ❌ ... |
12
10
 
13
- ## 更新的资产
11
+ ## 内容覆盖度
14
12
 
15
- | 资产文件 | 更新内容 | 更新理由 |
16
- | -------------------------- | -------- | -------- |
17
- | CLAUDE.md / .cursor/rules/ | ... | ... |
18
- | frontend/CLAUDE.md | ... | ... |
19
- | CHANGELOG.md | ... | ... |
20
- | docs/review-checklist.md | ... | ... |
21
- | docs/delivery-checklist.md | ... | ... |
22
-
23
- ## 新增规则说明
24
-
25
- ### 规则 1:{规则标题}
26
-
27
- - **文件**:{项目 AI 规范 / 模块 AI 规范}
28
- - **规则内容**:{具体规则}
29
- - **触发条件**:{什么情况下触发}
30
- - **可执行指令**:{具体做什么}
31
- - **消费方**:{哪些下游 Skill 会用到这条规则}
32
- - **示例**:
33
- - ✅ 正确:{好的做法}
34
- - ❌ 错误:{坏的做法}
35
- - **创建理由**:{为什么需要这条规则——引用具体事件或发现}
36
-
37
- ### 规则 2:{规则标题}
38
-
39
- ...
13
+ | 类别 | 位置 | 状态 |
14
+ |------|------|------|
15
+ | 业务术语 | {path} | ✅/需补充/N/A |
16
+ | 系统架构 | {path} | ✅/需补充/N/A |
17
+ | 代码结构 | {path} | ✅/需补充/N/A |
18
+ | 接口约定 | {path} | ✅/需补充/N/A |
19
+ | 编码规范 | {path} | ✅/需补充/N/A |
20
+ | 测试要求 | {path} | ✅/需补充/N/A |
21
+ | Review 标准 | {path} | ✅/需补充/N/A |
22
+ | 交付要求 | {path} | ✅/需补充/N/A |
40
23
 
41
24
  ## 版本记录
42
25
 
43
- | 日期 | 更新者 | 更新内容 | 关联任务 |
44
- | ------------ | ----------- | ---------- | -------- |
45
- | {YYYY-MM-DD} | team-review | {更新摘要} | {slug} |
26
+ | 日期 | 更新者 | 更新内容 | 关联任务 |
27
+ |------|--------|----------|----------|
28
+ | {日期} | team-review | {summary} | {slug} |
@@ -1,6 +1,6 @@
1
1
  # 个人复盘
2
2
 
3
- > team-review 产出
3
+ > team-review 产出 | {slug} | {日期}
4
4
 
5
5
  ## 一、本次任务回顾
6
6
 
@@ -24,7 +24,7 @@
24
24
  - [ ] 06-tdd-log.md 每个功能点有完整 RED→GREEN→REFACTOR 记录(RED 含失败输出)
25
25
  - [ ] 09-test-matrix.md 四维覆盖(功能/边界/异常/代码)
26
26
  - [ ] 11-review.md 五维度审查完成
27
- - [ ] 13-retrospective.md §二.5 新规则沉淀已写入目标文件
27
+ - [ ] 13-retrospective.md §三 新规则沉淀已写入目标文件
28
28
 
29
29
  ## 四、项目自定义交付项
30
30
 
@@ -20,12 +20,17 @@
20
20
  - [ ] 无不必要的循环或重复计算
21
21
  - [ ] 无内存泄漏风险(资源已正确释放)
22
22
  - [ ] 数据库/网络调用已优化(无 N+1 查询、无冗余请求)
23
+ - [ ] 并发安全(竞态条件、死锁、资源争用)
24
+ - [ ] 数据量级评估(大表扫描、批量操作)
25
+ - [ ] 成本影响评估(外部 API 调用频次、存储增长)
23
26
 
24
27
  ## 四、安全
25
28
 
26
29
  - [ ] 无注入风险(SQL/XSS/命令注入)
27
30
  - [ ] 无敏感信息泄露(密钥、token、个人数据)
28
31
  - [ ] 权限检查完整(访问控制无遗漏)
32
+ - [ ] 外部 AI 数据脱敏(敏感数据未经脱敏直接传入外部 AI 服务)
33
+ - [ ] 高风险操作人工确认(资金/权限/数据删除/对外发布无 HITL 机制)
29
34
 
30
35
  ## 五、测试覆盖
31
36
 
@@ -14,10 +14,11 @@ description: Use when starting a new feature, need SDD spec, or requirements are
14
14
  ```
15
15
  角色:规格制定专家
16
16
  核心原则:好的规格定义系统不能做什么,而非只描述做什么
17
- 流程:扫描代码库 → 识别承重约束 → 展示方案等待确认 → 产出 SDD
17
+ 流程:扫描代码库 → 识别承重约束 → 展示方案等待确认 → 产出 SDD → 用户审阅反馈迭代 → 多角色轮审自动修复
18
18
  约束:
19
19
  - 关键决策点须展示方案并等待确认
20
20
  - 规格须基于代码库扫描结果,非凭记忆
21
+ - 产出后须经用户审阅(Phase 2.5)和五角色轮审(Phase 3)方可定稿
21
22
  ```
22
23
 
23
24
  ### 推理检查点
@@ -33,11 +34,13 @@ description: Use when starting a new feature, need SDD spec, or requirements are
33
34
  5. **失败模式**:规格有误时代价最高的失败是什么?
34
35
  6. **最小方案**:约束条件下的最小充分方案?
35
36
 
36
- **对抗自检**(三视角,不可跳过):
37
+ **对抗自检**(五视角,不可跳过):
37
38
 
38
39
  - [ ] 攻击者:规格中哪些模糊地带会被错误解读?
39
40
  - [ ] 实现者:拿到规格有足够信息开始编码吗?
40
41
  - [ ] 测试者:每条业务规则都能写出对应测试吗?
42
+ - [ ] 用户:这个设计解决了用户的真实痛点吗?有无遗漏的操作路径?
43
+ - [ ] 运维者:上线后能监控、回滚、定位问题吗?
41
44
 
42
45
  ## IRON_LAW
43
46
 
@@ -137,13 +140,26 @@ NO CODE WITHOUT SPEC FIRST
137
140
 
138
141
  **IF** 3 个问题仍不足以消除歧义 → 说明仍不清楚的部分,询问用户继续澄清还是按当前假设推进。
139
142
 
143
+ **REPEAT** **MAX**=5(需求澄清轮次):
144
+
140
145
  **MATCH** `用户反馈`:
141
146
 
142
- - `确认` → **GOTO** Phase 2
143
- - `要求修改` → 调整后重新展示
147
+ - `确认` → 退出 **REPEAT**,**GOTO** Phase 2
148
+ - `要求修改` →
149
+ 1. 根据用户反馈调整探索结论(重新 **READ** 源码/文档补充信息 **IF** 需要)
150
+ 2. **WRITE**(对话中)更新后的探索结论(仅展示变更部分 + 新问题,不重复已确认内容)
151
+ 3. 继续 **REPEAT**
152
+ - `追加新需求` →
153
+ 1. 评估新需求对影响范围和风险的影响
154
+ 2. **WRITE**(对话中)更新后的影响范围 + 风险预判 + 新问题
155
+ 3. 继续 **REPEAT**
144
156
  - `否决任务` → **DONE**(`结果: 用户主动终止,不进入实现阶段`)
145
157
  - *DEFAULT* → 澄清用户意图后重新匹配
146
158
 
159
+ - *REPEAT_EXHAUSTED* → **WRITE**(对话中)"已进行 5 轮澄清,仍有未解决分歧"→ **ASK_HUMAN**:建议用户选择 (a) 按当前理解推进 (b) 终止任务
160
+
161
+ > TRAP:多轮澄清后你会倾向于"差不多了赶紧开始写"。每轮结束前自问:用户最后一条反馈中的核心关切是否已被吸收到探索结论中?
162
+
147
163
  ### Phase 2:写规格文档
148
164
 
149
165
  > 产出的 SDD 必须让一个完全不了解项目的开发者仅凭 SDD 就能写出实现。每一条业务规则都能直接映射为测试用例——做不到就是规格不够具体。
@@ -254,13 +270,148 @@ NO CODE WITHOUT SPEC FIRST
254
270
  | "按需调整"、"根据实际情况" | 写出决策标准和条件 |
255
271
  | "参考 {其他文件}" 无具体内容 | 写出关键内容 + 引用路径 |
256
272
 
257
- ### Phase 3:自检
273
+ ### Phase 2.5:用户审阅 + 反馈迭代
274
+
275
+ > 写完不等于写对。用户是规格的最终消费方——只有用户确认"我理解了、我同意"才算规格定稿。跳过用户审阅进入实现 = 在未验证的地基上盖楼。
276
+
277
+ > TRAP:你会倾向于"写完了直接进自检,反正后面有 CONFIRM_SPEC"。CONFIRM_SPEC 是编排器层面的确认,Phase 2.5 是 Skill 内部的质量反馈循环——两者不可互相替代。
278
+
279
+ 1. **WRITE**(对话中)规格摘要,展示关键产出供用户审阅:
280
+
281
+ ```
282
+ ## 规格产出摘要
283
+
284
+ ### SDD 核心内容
285
+ - 业务规则:{N} 条(MUST {N} / SHOULD {N} / MAY {N})
286
+ - 关键设计决策:{N} 个(含拒绝方案)
287
+ - 边界条件:{N} 个
288
+ - 异常场景:{N} 个
289
+
290
+ ### 业务规则速览(用户重点审阅)
291
+ | 编号 | 规则 | 强度 | Given → When → Then |
292
+ |------|------|------|---------------------|
293
+ | B1 | {规则} | MUST | {GWT 一句话概述} |
294
+ | ... | ... | ... | ... |
295
+
296
+ ### 关键设计决策速览
297
+ | 编号 | 决策 | 选择 | 拒绝方案 | 需要确认? |
298
+ |------|------|------|---------|-----------|
299
+ | D1 | {决策} | {chosen} | {rejected} | ✅ 是 / — 已定 |
300
+
301
+ ### 修改边界
302
+ - Allow:{文件列表}
303
+ - Deny:{文件列表}
304
+ ```
305
+
306
+ 2. **IF** `mode == full` → 还展示 01-plan 分期策略 + 05-risk Kill Switch 条件
307
+
308
+ 3. **WRITE**(对话中)确认提示:`以上规格是否通过?(通过 / 修改 / 追加 / 否决)`
309
+
310
+ **循环**:用户未确认通过前持续迭代,每次回复后重新请求确认。
311
+
312
+ **MATCH** `用户反馈`:
313
+
314
+ - `确认通过` → **GOTO** Phase 3
315
+ - `修改规格` →
316
+ 1. **READ** 用户反馈 → 定位需修改的章节和条目
317
+ 2. **WRITE** 修改对应文件中的具体章节(不重写整个文件,仅修改用户指出的部分)
318
+ 3. **WRITE**(对话中)修改摘要(变更前 → 变更后对比)
319
+ 4. **WRITE**(对话中)确认提示:`修改已完成,规格是否通过?(通过 / 继续修改 / 追加 / 否决)`
320
+ 5. 继续循环
321
+ - `追加规格` →
322
+ 1. **READ** 用户新增需求 → 评估影响范围变化
323
+ 2. **IF** 新需求导致 04-boundary.md allow/deny 变更 → 同步更新
324
+ 3. **WRITE** 追加内容到对应文件章节
325
+ 4. **WRITE**(对话中)追加内容摘要 + 影响范围变化
326
+ 5. **WRITE**(对话中)确认提示:`追加已完成,规格是否通过?(通过 / 修改 / 继续追加 / 否决)`
327
+ 6. 继续循环
328
+ - `否决方案` →
329
+ 1. **WRITE**(对话中)否决原因记录
330
+ 2. 已产出的规格文件保留在 slug 目录(供 Phase 1.5 重新探索时参考,不删除)
331
+ 3. **GOTO** Phase 1.5(携带否决理由 + 已有规格文件路径,作为反面参考重新探索方案方向)
332
+ - *DEFAULT* → 澄清用户意图后重新匹配
333
+
334
+ ### Phase 3:多角色轮审 + 自动修复循环
335
+
336
+ > **前置说明**:本方案的执行者是 AI Agent(team-impl),不是人类开发者。审查时应以 AI 的能力边界和行为特征为基准:AI 严格遵循字面指令但缺乏常识推断、擅长模式匹配但容易过度泛化、不会主动质疑规格中的矛盾。因此规格必须比给人类的更精确、更显式、零歧义。
337
+
338
+ > 同一个人换五个视角比一个视角看五遍更有效。每个角色有不同的盲区和关注点——实现者关心"能不能写",攻击者关心"怎么搞坏",测试者关心"怎么证伪"。
339
+
340
+ > TRAP:你刚写完 SDD,此刻最不适合评价它的质量——实现偏见会让你觉得"写了就是对的" `_team-rules/first-principles.md: First Principle #2`。切换角色是对抗实现偏见的主要手段。
341
+
342
+ **REPEAT** **MAX**=3(审查-修复循环):
258
343
 
259
- > 切换到"攻击者"视角——假设这份 SDD 有致命遗漏,你的任务是找到它。"看起来完整"不等于"真的完整"。
344
+ #### 3.1 多角色轮审
260
345
 
261
- > TRAP:你刚写完 SDD,此刻最不适合评价它的质量——实现偏见会让你觉得"写了就是对的" `_team-rules/first-principles.md: First Principle #2`。逐条对照检查清单,不要凭感觉。
346
+ > 每个角色独立审视 SDD,产出角色级问题清单。角色之间不共享结论——后一个角色不因前一个角色"没发现问题"就放松审查。
262
347
 
263
- **GATE** 产出前逐条检查(不通过则补全后再输出):
348
+ **FOR** `role` **IN** [`实现者`, `测试者`, `攻击者`, `用户`, `运维者`]:
349
+
350
+ **MATCH** `role`:
351
+
352
+ - `实现者`(能不能照着规格写出代码?):
353
+ - **READ** `03-sdd.md` §四 数据流 + §五 输入规格 + §六 输出规格
354
+ - 审查焦点:
355
+ - [ ] 每个接口的入参类型、约束、默认值是否明确到可直接定义函数签名?
356
+ - [ ] 数据流中的调用链是否有未定义的中间状态或竞态窗口?
357
+ - [ ] 依赖的外部接口/服务是否给出了超时、重试、熔断策略?
358
+ - [ ] 是否有"参考实际情况""按需处理"等无法编码的模糊表述?
359
+
360
+ - `测试者`(每条业务规则能否直接映射为测试用例?):
361
+ - **READ** `03-sdd.md` §二 业务规则 + §七 边界条件 + §八 异常场景
362
+ - 审查焦点:
363
+ - [ ] 每条 GWT 场景中 Given/When/Then 是否包含具体值(数字、字符串、状态码)?
364
+ - [ ] 边界条件是否覆盖极值(0、空、最大值、负数、超长字符串)?
365
+ - [ ] 异常场景是否给出确切错误码和错误消息,而非"返回错误"?
366
+ - [ ] 是否存在 SHOULD/MAY 规则无法确定通过/失败标准的情况?
367
+
368
+ - `攻击者`(如何用合法但恶意的输入搞坏系统?):
369
+ - **READ** `03-sdd.md` §五 输入规格 + §七 边界条件 + §八 异常场景
370
+ - 审查焦点:
371
+ - [ ] 输入参数有无注入点(SQL/命令/XSS/路径穿越)?规格是否要求转义或参数化?
372
+ - [ ] 并发场景:同一资源被多个请求同时修改时行为是否定义?
373
+ - [ ] 重放攻击:同一操作重复提交时是否幂等?规格是否定义了幂等策略?
374
+ - [ ] 权限边界:规格是否定义了越权访问的拒绝行为(非授权用户/跨租户)?
375
+
376
+ - `用户`(从使用者角度,这个设计解决了真实痛点吗?):
377
+ - **READ** `03-sdd.md` §一 背景与动机 + §九 验收 Checklist
378
+ - 审查焦点:
379
+ - [ ] 用户故事(§一)中描述的痛点在业务规则(§二)中是否有对应解决?
380
+ - [ ] 错误消息对终端用户是否可理解、可行动("用户 ID 无效" vs "Error 42")?
381
+ - [ ] 是否存在用户需要但规格未覆盖的操作路径(如撤销、重试、取消)?
382
+ - [ ] 验收 Checklist 是否覆盖了用户关心的核心场景,而非只有技术指标?
383
+
384
+ - `运维者`(上线后能不能监控、能不能回滚、出问题能不能定位?):
385
+ - **READ** `03-sdd.md` §三 关键设计决策 + §八 异常场景
386
+ - 审查焦点:
387
+ - [ ] 关键操作是否有日志/指标/链路追踪点?规格是否定义了可观测性要求?
388
+ - [ ] 数据迁移/Schema 变更是否向后兼容?回滚是否安全?
389
+ - [ ] 外部依赖故障时的降级策略是否定义(超时后返回什么、缓存策略是什么)?
390
+ - [ ] 是否有容量预估(数据量级、QPS、存储增长)?超限时的行为是否定义?
391
+
392
+ - *DEFAULT* → 跳过未知角色
393
+
394
+ > TRAP:你会倾向于让每个角色都给出"无问题"以快速通过。对抗方法:每个角色**必须**至少给出 1 条观察(可以是"已确认 X 合规"的正面观察,但不可为空)。
395
+
396
+ > TRAP:橡皮图章化——5 个角色全部给出"已确认合规"的正面观察,实际未深入审视。对抗方法:每轮至少有 1 个角色发现可改进项(即使是 P3 级建议),否则视为审查深度不足,至少重审实现者和攻击者两个角色。
397
+
398
+ **WRITE**(对话中)多角色审查汇总:
399
+
400
+ ```
401
+ ## 多角色审查结果(第 {N} 轮)
402
+
403
+ | 角色 | 发现问题数 | 关键发现 |
404
+ |------|-----------|---------|
405
+ | 实现者 | {N} | {最重要的 1-2 条} |
406
+ | 测试者 | {N} | {最重要的 1-2 条} |
407
+ | 攻击者 | {N} | {最重要的 1-2 条} |
408
+ | 用户 | {N} | {最重要的 1-2 条} |
409
+ | 运维者 | {N} | {最重要的 1-2 条} |
410
+ ```
411
+
412
+ #### 3.2 GATE 检查
413
+
414
+ **GATE** 产出逐条检查:
264
415
 
265
416
  **通用项**(完整 + 精简模式均检查):
266
417
 
@@ -289,9 +440,37 @@ NO CODE WITHOUT SPEC FIRST
289
440
  | 架构 | SDD 含 ASCII 数据流图 |
290
441
  | 工具 | prompt-template.md 独立产出(五要素)、pm-truth-ledger 已追加(`IF` EXISTS) |
291
442
 
443
+ #### 3.3 自动修复
444
+
445
+ **IF** GATE 全部通过 && 多角色审查问题数 == 0 → 退出 **REPEAT**,规格定稿
446
+
447
+ **ELSE**(存在未通过项或角色发现的问题):
448
+
449
+ 1. **FOR** `issue` **IN** `GATE 未通过项 + 多角色发现的问题`:
450
+ - **MATCH** `issue`:
451
+ - 章节缺失 → **READ** 对应模板 → **WRITE** 补全章节到目标文件
452
+ - GWT 格式不合规 → **READ** `03-sdd.md` §二 → 逐条重写为 Given/When/Then + 具体值
453
+ - 占位符残留 → **READ** 上下文 → **WRITE** 替换为具体内容
454
+ - 来源标签缺失 → **READ** 对应结论 → 追加 `{extracted}`/`{inferred}`/`{ambiguous}` 标签
455
+ - 决策表缺少拒绝方案 → **READ** `03-sdd.md` §三 → 补充拒绝方案和理由
456
+ - 接口定义模糊(实现者发现)→ **READ** 源码相关文件 → 补充入参类型/约束/默认值
457
+ - 边界值缺失(测试者发现)→ 补充具体极值、空值、格式异常到 §七
458
+ - 安全场景遗漏(攻击者发现)→ 追加安全相关业务规则到 §二 或异常场景到 §八
459
+ - 用户路径缺失(用户角色发现)→ 补充操作路径到 §二 或验收条件到 §九
460
+ - 运维要求缺失(运维者发现)→ 补充可观测性/降级/容量到 §三 或 §八
461
+ - *DEFAULT* → 记录问题,按最佳判断补全
462
+ 2. **WRITE**(对话中)本轮修复摘要:`修复 {N} 个问题:{问题列表简述}`
463
+ 3. 继续 **REPEAT**(重新执行 GATE 检查)
464
+
465
+ - *REPEAT_EXHAUSTED* → **WRITE**(对话中)"3 轮自修后仍有 {N} 项未通过" → 列出未解决项 → **ASK_HUMAN**:建议用户 (a) 按当前状态推进并在 review 阶段补全 (b) 手动介入修复
466
+
467
+ > SIGNAL:同一检查项连续 2 轮未能修复 → 可能是信息不足而非执行错误,考虑是否需要 **GOTO** Phase 1.5 向用户补充澄清。
468
+
292
469
  ## STOP_SIGNALS
293
470
 
294
471
  - **跳过**用户确认直接写文件,或一次抛出所有问题不等回复
472
+ - **跳过** Phase 2.5 用户审阅,写完规格直接进入自检或交付
473
+ - **跳过** Phase 3 多角色轮审,或以全部"已确认合规"的正面观察橡皮图章通过
295
474
  - **列出**文件名却不列依赖关系
296
475
  - **声明**"无风险",或产出后发现遗漏不补全
297
476
  - **凭空**推断而非扫描源码
@@ -314,7 +493,9 @@ NO CODE WITHOUT SPEC FIRST
314
493
  **GATE** Skill 完成前自检(全部通过才声明完成):
315
494
 
316
495
  - [ ] **ASSERT** `完整模式产出文件数 == 6` || `精简模式产出文件数 == 2`
317
- - [ ] **ASSERT** `Phase 3 检查全部通过(通用项 + 适用的附加项)`
496
+ - [ ] **ASSERT** `Phase 3 多角色轮审 + GATE 检查全部通过(通用项 + 适用的附加项)`
497
+ - [ ] **ASSERT** `Phase 3 每个角色至少 1 条观察(非全空)`
498
+ - [ ] **ASSERT** `Phase 2.5 用户审阅确认 == true`
318
499
  - [ ] **ASSERT** `Phase 1.5 用户确认 == true`
319
500
  - [ ] **ASSERT** `"TBD"/"TODO"/"待补充" 匹配数 == 0`
320
501
  - [ ] **ASSERT** `来源标签使用数 >= 1`