@boyingliu01/xp-gate 0.19.2 → 0.19.3

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.
Files changed (78) hide show
  1. package/hooks/pre-commit +24 -5
  2. package/lib/mattpocock-license-verdict.json +1 -1
  3. package/mock-policy/AGENTS.md +3 -3
  4. package/mutation/AGENTS.md +3 -3
  5. package/package.json +1 -1
  6. package/plugins/claude-code/.claude-plugin/plugin.json +2 -2
  7. package/plugins/claude-code/skills/delphi-review/AGENTS.md +3 -3
  8. package/plugins/claude-code/skills/sprint-flow/AGENTS.md +3 -3
  9. package/plugins/claude-code/skills/test-specification-alignment/AGENTS.md +3 -3
  10. package/plugins/dsh/package.json +1 -1
  11. package/plugins/dsh/skills/delphi-review/AGENTS.md +3 -3
  12. package/plugins/dsh/skills/sprint-flow/AGENTS.md +3 -3
  13. package/plugins/dsh/skills/test-specification-alignment/AGENTS.md +3 -3
  14. package/plugins/opencode/package.json +1 -1
  15. package/plugins/opencode/skills/delphi-review/AGENTS.md +3 -3
  16. package/plugins/opencode/skills/sprint-flow/AGENTS.md +3 -3
  17. package/plugins/opencode/skills/test-specification-alignment/AGENTS.md +3 -3
  18. package/plugins/qoder/plugin.json +2 -2
  19. package/plugins/qoder/skills/admin-template-guidelines/SKILL.md +6 -797
  20. package/plugins/qoder/skills/admin-template-guidelines/references/rule-1.md +91 -0
  21. package/plugins/qoder/skills/admin-template-guidelines/references/rule-2.md +155 -0
  22. package/plugins/qoder/skills/admin-template-guidelines/references/rule-3.md +70 -0
  23. package/plugins/qoder/skills/admin-template-guidelines/references/rule-4.md +154 -0
  24. package/plugins/qoder/skills/admin-template-guidelines/references/rule-5.md +126 -0
  25. package/plugins/qoder/skills/admin-template-guidelines/references/rule-6.md +180 -0
  26. package/plugins/qoder/skills/batch-grill-me/SKILL.md +15 -0
  27. package/plugins/qoder/skills/clipboard-vision/describe-clipboard.ps1 +115 -0
  28. package/plugins/qoder/skills/clipboard-vision/describe-clipboard.sh +161 -0
  29. package/plugins/qoder/skills/delphi-review/.delphi-config.json.example +61 -28
  30. package/plugins/qoder/skills/delphi-review/AGENTS.md +3 -3
  31. package/plugins/qoder/skills/delphi-review/INSTALL.md +97 -98
  32. package/plugins/qoder/skills/delphi-review/SKILL.md +77 -54
  33. package/plugins/qoder/skills/delphi-review/hooks.md +19 -0
  34. package/plugins/qoder/skills/delphi-review/opencode.json.delphi.example +6 -10
  35. package/plugins/qoder/skills/delphi-review/references/orchestrator-dispatch.md +64 -0
  36. package/plugins/qoder/skills/delphi-review/references/requirements.md +402 -0
  37. package/plugins/qoder/skills/delphi-review/references/round-templates.md +134 -0
  38. package/plugins/qoder/skills/delphi-review/scripts/verify-consensus.sh +43 -0
  39. package/plugins/qoder/skills/delphi-review/tools.md +29 -0
  40. package/plugins/qoder/skills/domain-modeling/ADR-FORMAT.md +64 -0
  41. package/plugins/qoder/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  42. package/plugins/qoder/skills/domain-modeling/SKILL.md +74 -0
  43. package/plugins/qoder/skills/grill-with-docs/SKILL.md +7 -0
  44. package/plugins/qoder/skills/grilling/SKILL.md +12 -0
  45. package/plugins/qoder/skills/ralph-loop/SKILL.md +87 -428
  46. package/plugins/qoder/skills/ralph-loop/references/components.md +113 -0
  47. package/plugins/qoder/skills/ralph-loop/references/workflow-details.md +99 -0
  48. package/plugins/qoder/skills/sprint-flow/AGENTS.md +4 -4
  49. package/plugins/qoder/skills/sprint-flow/SKILL.md +255 -454
  50. package/plugins/qoder/skills/sprint-flow/__tests__/sprint-flow.test.cjs +457 -0
  51. package/plugins/qoder/skills/sprint-flow/hooks.md +18 -0
  52. package/plugins/qoder/skills/sprint-flow/references/components/memory.md +1 -1
  53. package/plugins/qoder/skills/sprint-flow/references/components/middleware.md +1 -1
  54. package/plugins/qoder/skills/sprint-flow/references/components/skill-invocations.md +21 -20
  55. package/plugins/qoder/skills/sprint-flow/references/components/tool-descriptions.md +22 -23
  56. package/plugins/qoder/skills/sprint-flow/references/force-levels.md +0 -1
  57. package/plugins/qoder/skills/sprint-flow/references/orchestration-rules.md +34 -27
  58. package/plugins/qoder/skills/sprint-flow/references/phase-1-prep.md +1 -1
  59. package/plugins/qoder/skills/sprint-flow/references/phase-2-design.md +157 -120
  60. package/plugins/qoder/skills/sprint-flow/references/phase-3-build.md +203 -2
  61. package/plugins/qoder/skills/sprint-flow/references/phase-4-verify.md +107 -34
  62. package/plugins/qoder/skills/sprint-flow/references/phase-5-ship.md +194 -12
  63. package/plugins/qoder/skills/sprint-flow/references/phase-6-close.md +139 -7
  64. package/plugins/qoder/skills/sprint-flow/references/phase-overview.md +486 -0
  65. package/plugins/qoder/skills/sprint-flow/scripts/verify-sprint-state.sh +38 -0
  66. package/plugins/qoder/skills/sprint-flow/tools.md +29 -0
  67. package/plugins/qoder/skills/test-specification-alignment/AGENTS.md +3 -3
  68. package/plugins/qoder/skills/test-specification-alignment/SKILL.md +104 -601
  69. package/plugins/qoder/skills/to-issues/SKILL.md +1 -1
  70. package/principles/AGENTS.md +3 -3
  71. package/skills/delphi-review/AGENTS.md +3 -3
  72. package/skills/sprint-flow/AGENTS.md +3 -3
  73. package/skills/test-specification-alignment/AGENTS.md +3 -3
  74. package/plugins/qoder/skills/ralph-loop/references/components/memory.md +0 -55
  75. package/plugins/qoder/skills/ralph-loop/references/components/middleware.md +0 -54
  76. package/plugins/qoder/skills/ralph-loop/references/components/skill-invocations.md +0 -39
  77. package/plugins/qoder/skills/ralph-loop/references/components/system-prompt.md +0 -24
  78. package/plugins/qoder/skills/ralph-loop/references/components/tool-descriptions.md +0 -32
@@ -29,30 +29,32 @@
29
29
  | Phase | 名称 | Subagent? | Category | load_skills | 执行者 |
30
30
  |-------|------|:---------:|----------|-------------|--------|
31
31
  | 1/6 | PREP | ❌ | Bash(直接执行) | 无 | orchestrator |
32
- | 2/6 | DESIGN | ❌ | orchestrator(直接执行) | `["brainstorming", "autoplan", "delphi-review", "to-issues"]` | orchestrator |
32
+ | 2/6 | DESIGN | ❌ | orchestrator(直接执行) | `["grill-with-docs", "batch-grill-me", "delphi-review", "to-issues"]` | orchestrator |
33
33
  | 3/6 | BUILD | ✅ | ralph-loop | `["test-driven-development"]` | subagent |
34
- | 4/6 | VERIFY | ❌ | orchestrator(直接执行) | `["delphi-review", "test-specification-alignment", "learn", "retro", "systematic-debugging"]` | orchestrator |
35
- | 5/6 | SHIP | ❌ | orchestrator(直接执行) | `["finishing-a-development-branch", "ship", "land-and-deploy"]` | orchestrator |
34
+ | 4/6 | VERIFY | ❌ | orchestrator(直接执行) | `["delphi-review", "test-specification-alignment"]` | orchestrator |
35
+ | 5/6 | SHIP | ❌ | orchestrator(直接执行) | 无(原生步骤) | orchestrator |
36
36
  | 6/6 | CLOSE | ❌ | **强制人工 (UAT)** + Bash (CLEANUP) | 无 | 用户 + orchestrator |
37
37
 
38
38
  **⚠️ 交互式 skill 必须由 orchestrator 直接执行(不可 dispatch 到 subagent)**:
39
39
 
40
40
  | Phase | Skill | 为什么不能在 subagent 中执行 |
41
41
  |-------|-------|---------------------------|
42
- | 2/6 | `brainstorming` | 需要与用户对话确认需求、提出澄清问题。Subagent 是 fire-and-forget 模式,无法暂停等待用户输入(Issue #217) |
43
- | 2/6 | `autoplan` | taste_decisions 节点暂停等待用户确认。必须由 orchestrator 直接执行(Issue #225) |
42
+ | 2/6 | `grill-with-docs` | 需要与用户对话确认需求、提出澄清问题。Subagent 是 fire-and-forget 模式,无法暂停等待用户输入(Issue #217) |
43
+ | 2/6 | `batch-grill-me` | 批量决策节点暂停等待用户确认。必须由 orchestrator 直接执行 |
44
44
  | 2/6 | `delphi-review` | design 模式需等待 verdict APPROVED;非 APPROVED 时需用户确认是否接受分歧方案(Issue #249) |
45
45
  | 2/6 | `to-issues` | Step 6 "向用户确认" — 展示拆分结果,等待用户批准后才生成 slices-manifest.json |
46
46
  | 4/6 | `delphi-review --mode code-walkthrough` | Code walkthrough 非 APPROVED 时需暂停等待用户处理 Critical Issues(Issue #249) |
47
- | 5/6 | `finishing-a-development-branch` | 4 选项菜单 (merge/PR/keep/discard) 需要用户选择;Option 4 (discard) 要求 typed confirmation |
48
- | 5/6 | `ship` | PR 创建前需要用户确认;包含 AskUserQuestion STOP 点 |
49
- | 5/6 | `land-and-deploy` | Merge 确认、rollback 决策 — 均为用户交互点 |
47
+ | 5/6 | 分支完成决策 | 4 选项菜单 (merge/PR/keep/discard) 需要用户选择;Option 4 (discard) 要求 typed confirmation |
48
+ | 5/6 | native ship | PR 创建前需要用户确认 |
49
+ | 5/6 | native land | Merge 确认、rollback 决策 — 均为用户交互点 |
50
50
 
51
51
  **Phase 2/6 DESIGN 执行模式(全部 orchestrator 直接执行)**:
52
- 1. **Orchestrator 直接执行 brainstorming**:`skill(name="brainstorming")` → 等待 APPROVED
53
- 2. **Orchestrator 直接执行 autoplan**:`skill(name="autoplan")` → 等待用户确认 taste_decisions
54
- 3. **Orchestrator 直接执行 delphi-review**:`skill(name="delphi-review")` → 等待 APPROVED
55
- 4. **Orchestrator 直接执行 to-issues**:`skill(name="to-issues")` → 等待用户确认 Issue 拆分
52
+ 1. **Orchestrator 直接执行 grill-with-docs**:`skill(name="grill-with-docs")` → 访谈 + CONTEXT.md/ADR
53
+ 2. **Orchestrator 调用 R1 Agent skill**:`/delphi-review --mode requirements`,分别执行 architecture、technical、feasibility 三个 per-expert runner → requirements-reviewed.json
54
+ 3. **Orchestrator 生成设计文档** → 等待用户 APPROVED
55
+ 4. **Orchestrator 直接执行 batch-grill-me**:`skill(name="batch-grill-me")` → 批量决策确认
56
+ 5. **Orchestrator 直接执行 R2 delphi-review**:`skill(name="delphi-review")` → 等待 APPROVED
57
+ 6. **Orchestrator 直接执行 to-issues**:`skill(name="to-issues")` → 等待用户确认 Issue 拆分
56
58
 
57
59
  **上下文隔离原则**:
58
60
  - 每个 Subagent 在**独立 session** 中启动,不继承 orchestrator 的对话历史
@@ -89,24 +91,29 @@
89
91
  - 格式:YAML frontmatter + Markdown body(body ≤ 50 行)
90
92
  - 大小限制:≤ 40,000 字符(≈ 10,000 tokens)
91
93
 
92
- 2. **更新 sprint-state.json**:
93
- - `phase`: 当前阶段编号 (1-6)
94
- - `outputs`: 新增当前阶段输出文件路径
95
- - `phase_history`: 追加或更新当前阶段的记录
96
- - Phase 开始时:追加 `{ "phase": N, "phase_name": "NAME", "status": "running", "started_at": "<ISO 8601>", "completed_at": null, "duration_seconds": null }`
97
- - Phase 完成时:更新对应条目,填充 `completed_at`(ISO 8601)和 `duration_seconds`
98
- - Phase 跳过时:设置 `status: "skipped"`
94
+ 2. **调用 phase-transition CLI**(替代手动更新 sprint-state.json + 手动渲染看板):
95
+ ```
96
+ npx xp-gate phase-transition <phase> <status> --render [--outputs '<json>']
97
+ ```
98
+ - Phase 开始时:`npx xp-gate phase-transition <N> in_progress --render`
99
+ - Phase 完成时:`npx xp-gate phase-transition <N> completed --render --outputs '{"key":"value"}'`
100
+ - Phase 跳过时:`npx xp-gate phase-transition <N> skipped --render`
101
+ - CLI 自动完成:更新 `sprint-state.json`(phase, phase_history, outputs)+ 渲染 ASCII 看板
102
+ - 看板规则:已完成 ✅ + 耗时,当前 🔄,待做 ⬜,跳过 ⏭️,失败 ❌
103
+ - 进度条:`[████▓░░░░░░] {pct}%`
104
+ - **禁止**手动写入 `sprint-state.json` 或手动调用 `render-sprint-progress.cjs`(已废弃)
99
105
 
100
106
  3. **等待用户确认 checkpoint**(如适用)
101
107
 
102
- 4. **展示进度看板**:执行 `node scripts/render-sprint-progress.cjs` 渲染进度看板
103
- - 脚本自动读取 `.sprint-state/sprint-state.json` 并输出 ASCII 进度看板
104
- - 渲染规则:已完成阶段显示 ✅ + 耗时,当前阶段 🔄,待做 ⬜,跳过 ⏭️,失败 ❌
105
- - 进度条:`[████▓░░░░░░] {pct}%`(已完成数/总阶段数 6)
106
- - 下一步行动:根据当前阶段 + 状态,自动查找对应提示
107
- - 输出物路径:列出 `outputs` 中已有的文件路径
108
- - 时机:每个 Phase 完成后的 transition 阶段自动展示
109
- - 向后兼容:旧版 `sprint-state.json` 缺少 `phase_history` 时,从 `phase` 字段推断状态
108
+ 4. **Phase 6 CLOSE 完成后运行 sprint-audit**(自动提醒,Layer 1.5 触发):
109
+ ```
110
+ npx xp-gate sprint-audit
111
+ ```
112
+ - 检查 phase 覆盖度、时间记录、输出物记录、状态一致性
113
+ - 输出人类可读报告或 JSON(`--json`)
114
+ - 报告写入 `.sprint-state/audit-report.json`(最新覆盖)
115
+ - Verdict: PASS / PASS_WITH_WARNINGS / FAIL / SKIP
116
+ - `phase-transition` CLI 在 Phase 6 completed 时自动输出提醒,无需额外指令
110
117
 
111
118
  ### Background Task Resume Protocol (MANDATORY — Issue #248)
112
119
 
@@ -216,7 +216,7 @@ find . -name "*{target}*.test.*" -o -name "*{target}*.spec.*" | grep -v node_mod
216
216
 
217
217
  **DELPHI-GATE invariant**: 所有流程级别(轻量/标准/复杂)的 Phase 3/6 BUILD 启动前,**必须**检查 `.sprint-state/delphi-reviewed.json` 的 verdict 为 `APPROVED`。未通过 delphi-review 直接路由到 BUILD 属于严重违规。
218
218
 
219
- **轻量级的正确理解**: 轻量级意味着较短上下文与较低迭代预算,仍由 architecture、technical、feasibility 三个 Custom Agent 独立执行并聚合 ≥90% 共识。它不跳过 delphi-review,也不减少专家数。见 references/force-levels.md。
219
+ **轻量级的正确理解**: 轻量级意味着 reduced-intensity 的 delphi-review(**3 专家、最多 5 轮、≥90% 聚合共识、较短上下文**),**不是**跳过 delphi-review,**不是**减少专家或模型执行。见 references/force-levels.md 的轻量级流程定义。
220
220
 
221
221
  **自动 escalation 规则**(检测到以下情况时,自动提升流程级别):
222
222
 
@@ -1,197 +1,222 @@
1
- # Phase 2/6: DESIGN(设计 — 需求探索 + 共识评审)
1
+ # Phase 2/6: DESIGN(设计 — 需求探索 + 双点评审)
2
2
 
3
3
  **执行时机**: Phase 1/6 PREP 完成后、Phase 3/6 BUILD 之前。
4
4
  **对应旧模型**: Phase 0 THINK + Phase 1 PLAN
5
5
 
6
6
  ## 目标
7
7
 
8
- 使用 brainstorming skill 进行结构化需求探索,在设计审批前通过 Qoder 三个 Custom Agent 执行 R1 requirements review,输出经用户批准的设计文档。然后通过 autoplan + R2 delphi-review 达成 ≥90% 共识,生成 specification.yaml。
8
+ 使用 grill-with-docs 进行结构化需求探索(含 CONTEXT.md/ADR 沉淀),经 R1 需求评审验证需求完整性,输出经用户批准的设计文档。然后通过 batch-grill-me 批量前置决策 + R2 delphi-review 达成 ≥90% 共识,生成 specification.yaml。
9
9
 
10
+ **新链(v0.18.0+,零外部依赖,双点评审)**:
10
11
  ```
11
- brainstorming → R1 requirements (3 Custom Agents) → 用户审批 → autoplan → R2 delphi-review → to-issues
12
- ↓ HARD-GATE ↓ HARD-GATE
13
- requirements-reviewed.json ≥90% design consensus
12
+ grill-with-docs → R1 需求评审(轻量) → 原生设计文档+APPROVAL门 → batch-grill-me → R2 delphi-review(设计维度) → to-issues
13
+ ↓ ↓ #368 ↓ HARD-GATE ↓ ↓ HARD-GATE
14
+ CONTEXT.md+ADR 需求完整性/AC覆盖 用户审批设计文档 批量前置决策 ≥90% 共识
14
15
  ```
15
16
 
16
17
  ---
17
18
 
18
- ## Part A: THINK(需求探索与设计)
19
+ ## Part A: THINK(需求探索 + 需求评审)
19
20
 
20
- ### 调用 Skills
21
+ ### Step 0: CONTEXT.md 预检(v0.14.9+ — Issue #322)
21
22
 
22
- - `brainstorming` (superpowers) — **HARD-GATE**: 设计未批准 → 不可进入实现
23
- - 可选补充:`office-hours` (gstack) — 当用户需求非常模糊、需要先验证产品方向时
24
-
25
- **关键变更(ISSUE30)**: 从 `office-hours` 切换到 `brainstorming`,原因:
26
- - brainstorming 有 **HARD-GATE**(设计未批准 → 不可进入实现),防止 "觉得已经理解了就直接开始写代码"
27
- - brainstorming 输出结构化设计文档,可直接作为 Phase 2/6 Part B PLAN 的输入
28
- - office-hours 的 YC 六问适合新产品方向验证,brainstorming 更适合"具体功能实现前设计"的场景
29
-
30
- ### HARD-GATE 机制
23
+ 在进入 grill 访谈前,检查 `CONTEXT.md` 是否已存在:
31
24
 
32
25
  ```
33
- DO NOT enter Part B (PLAN) or do any implementation
34
- until the brainstorming design has been APPROVED by the user.
26
+ IF CONTEXT.md 存在于项目根目录:
27
+ → 读取已有设计上下文
28
+ → SKIP grill-with-docs 访谈(设计上下文已存在,避免重复探索)
29
+ → ⚠️ R1 需求评审仍执行(Round 1 修订:CONTEXT.md 可能陈旧,快速路径同样需要需求评审)
30
+ → 评审对象为 CONTEXT.md + 本次需求陈述
31
+ → 输出: "[sprint-flow] CONTEXT.md 已存在,跳过需求访谈,进入 R1 需求评审"
32
+ ELSE:
33
+ → 继续执行 Step 1(结构化需求探索)
35
34
  ```
36
35
 
37
- brainstorming skill 内部会执行:
38
-
39
- 1. **Explore project context** — 检查文件、文档、最近 commits
40
- 2. **Ask clarifying questions** — 一次一个,理解目的/约束/成功标准
41
- 3. **Propose approaches** — 2-3 个方案,含 trade-offs 和建议
42
- 4. **Present design** — 分节展示,每节获得用户批准
43
- 5. **Write design doc** — 保存到 `docs/plans/YYYY-MM-DD-<topic>-design.md`
44
- 6. **Transition to R1** — brainstorming 完成后先执行 requirements mode,不直接进入实现
36
+ **CONTEXT.md 预检路由表**:
45
37
 
46
- **sprint-flow 编排层行为**:
47
- - 收到 brainstorming 设计文档后,先执行 R1;R1 与用户审批都通过后自动进入 Part B
48
- - 如果 brainstorming 未完成(用户未 APPROVED),BLOCK 并等待
38
+ | CONTEXT.md 状态 | grill-with-docs | R1 需求评审 | 输入到 Part B | 说明 |
39
+ |----------------|-----------------|-------------|---------------|------|
40
+ | 不存在 | ✅ 执行 | ✅ 执行 | grill 输出 + R1 结论 | 标准路径 |
41
+ | 存在 | ❌ SKIP | ✅ 执行 | 已有 CONTEXT.md + R1 结论 | 快速路径 (Issue #322) |
49
42
 
50
- ### 执行步骤
43
+ ### Step 1: 调用 grill-with-docs(需求访谈)
51
44
 
52
- #### Step 1: 调用 brainstorming skill
45
+ **仅当 CONTEXT.md 不存在时执行。**
53
46
 
54
47
  ```
55
- skill(name="brainstorming", user_message="[需求描述]")
48
+ skill(name="grill-with-docs", user_message="[需求描述]")
56
49
  ```
57
50
 
58
- #### Step 2: 等待 HARD-GATE APPROVED
51
+ grill-with-docs 执行:
52
+ 1. **逐个追问决策树** — 每题附推荐答案;事实自行探查,决策留给用户
53
+ 2. **同步维护 CONTEXT.md** — 项目上下文沉淀(`domain-modeling` 内置)
54
+ 3. **同步维护 ADR** — `docs/adr/ADR-NNNN-*.md` 架构决策记录
55
+ 4. **达成共享理解** — 需求边界、用户场景、验收标准清晰化
59
56
 
60
- ```
61
- ⚠️ HARD-GATE: 设计未 APPROVED → 不可进入 Part B
57
+ ### Step 2: R1 需求评审(#368 恢复的第一点评审)
62
58
 
63
- 等待用户审批 brainstorming 输出的设计文档。
59
+ grill 访谈达成共享理解后(或 CONTEXT.md 快速路径下读取已有上下文后)、设计文档生成前,调用需求评审:
60
+
61
+ ```
62
+ /delphi-review --mode requirements
64
63
  ```
65
64
 
66
- #### Step 3: 保存设计文档路径
65
+ 这是 Agent skill 调用,不是 `xp-gate` npm CLI 子命令。Skill orchestrator 必须分别调用 per-expert runner 三次,每次保留 `--expert <architecture|technical|feasibility> --mode requirements`,再聚合三份结果;禁止用一个 runner 进程执行全部模型。
67
66
 
68
- 保存到 `<project-root>/.sprint-state/phase-outputs/design-doc.md`
67
+ **评审配置**:
68
+ - 复用现有 3 专家(architecture/feasibility/technical),`--mode requirements` 切换评审焦点提示词
69
+ - 所有路径固定使用 3 专家,Round 1 独立执行并验证 distinct model IDs,最多 5 轮
70
+ - force level 只调整上下文深度与迭代预算;所有路径都执行 R1,不减少专家数
69
71
 
70
- #### Step 4: R1 requirements review(强制)
72
+ **评审焦点**:
73
+ - 用户场景遗漏
74
+ - 验收标准覆盖度与可测试性
75
+ - 用户画像清晰度
76
+ - 需求边界
71
77
 
72
- ```
73
- skill(name="delphi-review", user_message="--mode requirements [需求陈述 + brainstorming 设计上下文]")
74
- ```
78
+ **阻塞语义(程序化)**:
75
79
 
76
- - 并行执行 Qoder architecture、technical、feasibility 三个 Custom Agent
77
- - 每个 Custom Agent 调用都使用 requirements mode;三次独立执行后由 skill orchestrator 聚合,禁止单进程执行全部模型
78
- - 每份成功结果必须包含 `role`、`verdict: APPROVED`、`result_type: delphi_expert_result` 和非空 trimmed `requested_model`
79
- - 三个角色必须恰好各出现一次,三个 trimmed `requested_model` 必须 distinct
80
- - 聚合 `consensus_ratio` 必须是 `0.90..1`;任一条件失败则 BLOCK 并继续需求澄清
81
- - APPROVED evidence 写入 `.sprint-state/phase-outputs/requirements-reviewed.json`,包含非空 `requirements_hash` 与精确 `git rev-parse HEAD`
82
- - 无法解析 HEAD 时 BLOCK;不得使用 `unknown` 作为可验证身份
80
+ 输出 `.sprint-state/phase-outputs/requirements-reviewed.json`:
83
81
 
84
82
  ```json
85
83
  {
86
- "verdict": "APPROVED",
87
- "timestamp": "2026-08-20T10:30:00Z",
84
+ "verdict": "APPROVED | GAPS_FOUND",
85
+ "timestamp": "<ISO 8601>",
88
86
  "requirements_statement": "<被评审的原始需求陈述>",
89
87
  "context_file_used": "CONTEXT.md | null",
90
- "requirements_hash": "<SHA-256 of requirements_statement + context exact UTF-8 content if used + timestamp YYYY-MM-DD>",
91
- "head_commit": "<exact git rev-parse HEAD>",
92
- "consensus_ratio": 0.90,
88
+ "requirements_hash": "<SHA-256 of requirements_statement + context file exact UTF-8 content if used + timestamp YYYY-MM-DD>",
89
+ "head_commit": "<git rev-parse HEAD>",
90
+ "consensus_ratio": 1.0,
93
91
  "expert_verdicts": [
94
92
  { "role": "architecture", "verdict": "APPROVED", "result_type": "delphi_expert_result", "requested_model": "provider/model-a" },
95
93
  { "role": "technical", "verdict": "APPROVED", "result_type": "delphi_expert_result", "requested_model": "provider/model-b" },
96
94
  { "role": "feasibility", "verdict": "APPROVED", "result_type": "delphi_expert_result", "requested_model": "provider/model-c" }
97
- ]
95
+ ],
96
+ "rounds": 1,
97
+ "gaps": []
98
98
  }
99
99
  ```
100
100
 
101
- Phase 2 的 R2 与产出步骤全部完成后、进入 Phase 3 前运行 `npx xp-gate phase-transition 2 completed`。schema-v2 Sprint 未通过该程序化验证不得进入 Phase 3。
101
+ **GAPS_FOUND 处理**:
102
+ - 回到 Step 1 补充访谈(或补充 CONTEXT.md 内容)
103
+ - 最多 5 轮循环后升级给用户决策
104
+
105
+ **程序化校验**:
106
+ - `phase-transition 2 completed` 校验 schema-v2 必填字段、`verdict=APPROVED`、三份专家证据、`consensus_ratio`、当前 HEAD,并从需求陈述、可选 context 文件和 timestamp 日期重新计算 `requirements_hash`
107
+ - 不匹配 → BLOCK(防陈旧绑定)
108
+
109
+ ### Step 3: 原生设计文档生成
102
110
 
103
- ### 可选补充: office-hours(方向验证)
111
+ orchestrator 基于访谈记录 + CONTEXT.md + R1 评审结论生成设计文档:
104
112
 
105
- 当用户输入非常模糊时(如 "我想做一个 AI 工具" 而不是 "开发用户登录功能"),可以先调用 `office-hours` 验证产品方向,再进入 brainstorming 详细设计。
113
+ **路径**: `docs/plans/YYYY-MM-DD-<topic>-design.md`
114
+
115
+ **内容结构**:
116
+ 1. 需求摘要(来自 grill 访谈 + R1 评审结论)
117
+ 2. 2–3 候选方案与 trade-offs
118
+ 3. 推荐方案
119
+ 4. 成功标准
120
+
121
+ ### Step 4: HARD-GATE — 用户审批设计文档
122
+
123
+ ```
124
+ ⚠️ HARD-GATE: 设计未 APPROVED → 不可进入 Part B
125
+
126
+ 等待用户审批设计文档。
127
+ 用户 APPROVE 前,禁止进入 Part B (PLAN) 或任何实现。
128
+ ```
129
+
130
+ **sprint-flow 编排层行为**:
131
+ - 收到用户 APPROVED 后,自动进入 Part B
132
+ - 如果用户未 APPROVED,BLOCK 并等待
106
133
 
107
134
  ### 暂停点
108
135
 
109
136
  | 暂停点 | 触发条件 | 用户操作 | 自动恢复条件 |
110
137
  |--------|---------|---------|-------------|
111
- | **HARD-GATE** | brainstorming 设计未 APPROVED | 用户审批设计文档 | 设计 APPROVED 后自动进入 Part B |
112
- | **R1 HARD-GATE** | requirements evidence 缺失、陈旧或专家合同无效 | 补充需求并重新执行三专家 R1 | evidence 通过 `phase-transition 2 completed` |
138
+ | R1 GAPS_FOUND | 需求评审发现缺口 | 补充访谈/上下文 | 重新 R1 评审(最多 5 轮) |
139
+ | **HARD-GATE** | 设计文档未 APPROVED | 用户审批设计文档 | 设计 APPROVED 后自动进入 Part B |
113
140
 
114
141
  ### 输出
115
142
 
116
- - Design Document (`docs/plans/YYYY-MM-DD-<topic>-design.md`)
117
- - Implementation Plan(brainstorming 内部 writing-plans 输出)
118
- - requirements-reviewed.json(Qoder 三 Custom Agent R1 evidence)
143
+ - CONTEXT.md(项目上下文沉淀)
144
+ - ADR 文件(`docs/adr/ADR-NNNN-*.md`)
145
+ - requirements-reviewed.json(`.sprint-state/phase-outputs/`)
146
+ - Design Document(`docs/plans/YYYY-MM-DD-<topic>-design.md`)
119
147
  - 进入 Part B 自动执行(使用设计文档作为输入)
120
148
 
121
149
  ---
122
150
 
123
151
  ## Part B: PLAN(共识评审)
124
152
 
125
- ### 调用 Skills
153
+ ### Step 5: 路由分叉(v0.14.0+ — Issue #306, #322)
126
154
 
127
- - `autoplan` (gstack) — CEO → Design → Eng 自动流水线
128
- - `delphi-review` — 多轮匿名评审直到共识
129
- - specification.yaml 从 APPROVED 设计文档自动生成(无需独立 skill)
155
+ 根据 Phase 1/6 PREP (AUTO-ESTIMATE) 的 `change_type` 决定路径:
156
+
157
+ ```
158
+ 读取 .sprint-state/sprint-state.json → auto_estimate.change_type
130
159
 
131
- **Web 前端项目额外注入**:
132
- - `design-shotgun` (gstack) — 生成多版 UI 设计变体
160
+ IF change_type == "修改已存在代码":
161
+ → 增量优化路径: SKIP batch-grill-me
162
+ → 直接进入 Step 7: R2 delphi-review(3 专家,最多 5 轮)
163
+ ELSE (change_type == "新增功能" 或 未定义):
164
+ → 标准路径: 继续 Step 6 (batch-grill-me) → Step 7
165
+ ```
133
166
 
134
- **Mobile 项目额外注入** (`--type mobile-flutter` / `mobile-react-native`):
135
- - `design-shotgun` (gstack) — 移动端 UI 设计探索
167
+ **路由决策表**:
136
168
 
137
- ### 执行步骤
169
+ | change_type | batch-grill-me | R2 delphi-review |
170
+ |------------|----------------|------------------|
171
+ | `修改已存在代码` | ❌ SKIP | 3 专家,最多 5 轮 |
172
+ | `新增功能` | ✅ 执行 | 标准 (3 专家) |
173
+ | `undefined` / 缺失 | ✅ 执行 | 标准 (3 专家) |
138
174
 
139
- #### Step 0: Web 前端项目 — 调用 design-shotgun(如适用)
175
+ **HARD-GATE 不变**: 两条路径最终都必须产出 APPROVED 的 delphi-reviewed.json。
140
176
 
141
- **IF project_type is web-nextjs / web-react / web-vue / mobile-flutter / mobile-react-native:**
142
- ```
143
- skill(name="design-shotgun", user_message="[Pain Document 内容 + 需求描述]")
144
- ```
177
+ ### Step 6: 调用 batch-grill-me(仅标准路径)
145
178
 
146
- #### Step 1: 调用 autoplan skill
179
+ **仅当 change_type != "修改已存在代码" 时执行。**
147
180
 
148
181
  ```
149
- skill(name="autoplan", user_message="[Pain Document 内容]")
182
+ skill(name="batch-grill-me", user_message="[设计文档 + 待确认决策列表]")
150
183
  ```
151
184
 
152
- autoplan 自动执行 `plan-ceo-review` → `plan-design-review` → `plan-eng-review`,使用 6 个决策原则自动决策:
153
-
154
- ```yaml
155
- autoplan_result:
156
- taste_decisions: [] | [decision1, decision2, ...]
157
- verdict: "AUTO_APPROVED" | "NEEDS_REVIEW"
158
- ```
185
+ batch-grill-me 替代 autoplan 的 taste_decisions 功能:
186
+ - 前置已确定决策整批提出
187
+ - 用户一轮确认
188
+ - 输出批量决策结果
159
189
 
160
- #### Step 2: 条件分支
190
+ ### Step 7: R2 设计评审(delphi-review,原生 HARD-GATE)
161
191
 
162
192
  ```
163
- ┌───────────────────────────────────────────────────────────────────┐
164
- │ Phase 2/6: 条件分支逻辑 │
165
- ├───────────────────────────────────────────────────────────────────┤
166
- │ IF autoplan_result.verdict == "AUTO_APPROVED" │
167
- │ AND autoplan_result.taste_decisions == [] │
168
- │ → 调用轻量上下文 delphi-review(三个 Custom Agent,最多 5 轮) │
169
- │ │
170
- │ IF autoplan_result.verdict == "NEEDS_REVIEW" │
171
- │ OR autoplan_result.taste_decisions.length > 0 │
172
- │ → ⚠️ 暂停等待用户确认 taste_decisions │
173
- │ → 用户确认后,调用标准 delphi-review(3 专家) │
174
- └───────────────────────────────────────────────────────────────────┘
193
+ # 标准路径(3 专家)
194
+ skill(name="delphi-review", user_message="[设计文档 + batch-grill-me 决策结果]")
195
+
196
+ # 增量优化路径(3 专家,最多 5 轮)
197
+ skill(name="delphi-review", user_message="[设计文档]", experts=3, max_rounds=5)
175
198
  ```
176
199
 
177
- #### Step 2a: 如果需要用户确认 taste_decisions
200
+ - **标准路径**: Round 1: 3 专家匿名独立评审 → Round 2+: 交换意见直到共识
201
+ - **增量优化路径**: 3 专家,最多 5 轮
202
+ - ≥90% 共识 + APPROVED 才通过
203
+ - 输出: APPROVED / REQUEST_CHANGES
178
204
 
179
- 暂停并提示用户决策选项。
205
+ **如果 REQUEST_CHANGES**: 暂停等待用户处理 → 修复后重新评审 → 直到 APPROVED
180
206
 
181
- #### Step 2b: 调用 delphi-review(强制,orchestrator 直接执行)
207
+ ### Step 8: 调用 to-issues(原生保留)
182
208
 
183
209
  ```
184
- skill(name="delphi-review", user_message="[设计文档 + taste_decisions 确认结果]")
210
+ skill(name="to-issues")
185
211
  ```
186
212
 
187
- - Round 1: architecture、technical、feasibility 三个 Custom Agent 匿名独立评审
188
- - 验证三份成功结果与三个 distinct trimmed `requested_model`
189
- - Round 2+: 三个 Agent 交换意见直到共识,最多 5 轮
190
- - 输出: APPROVED / REQUEST_CHANGES
213
+ 垂直切片 Issue 拆分 → `slices-manifest.json`(格式不变,ralph-loop 零改动)
191
214
 
192
- **如果 REQUEST_CHANGES**: 暂停等待用户处理 → 修复后重新评审 → 直到 APPROVED
215
+ to-issues 原生能力:blocked_by/dependency_graph/DAG 循环检测/拓扑排序 → Phase 3/6 BUILD 按 execution_order 执行
216
+
217
+ ### Step 9: 生成 specification.yaml
193
218
 
194
- #### Step 3: 从 APPROVED 设计文档提取 specification.yaml
219
+ 从 APPROVED 设计文档提取:
195
220
 
196
221
  ```yaml
197
222
  specification:
@@ -202,7 +227,7 @@ specification:
202
227
  acceptance_criteria:
203
228
  - id: AC-001
204
229
  requirement: REQ-001
205
- criteria: [验收标准]
230
+ criteria: [验收标准] # #368: 每个 REQ 必须含清晰验收标准
206
231
  test_type: [unit/integration/e2e]
207
232
  design_decisions:
208
233
  - id: DD-001
@@ -211,26 +236,38 @@ specification:
211
236
  alternatives_considered: [备选方案]
212
237
  ```
213
238
 
214
- #### Step 4: 调用 to-issues
239
+ ### Step 10: 保存产出物
215
240
 
216
- ```
217
- skill(name="to-issues")
218
- ```
219
- 垂直切片 Issue 拆分 → `slices-manifest.json` → Phase 3/6 BUILD 按 execution_order 执行
241
+ 保存到 `<project-root>/.sprint-state/phase-outputs/`:
242
+ - `specification.yaml`
243
+ - `slices-manifest.json`(to-issues 输出)
220
244
 
221
- #### Step 5: 保存 specification.yaml
245
+ ### Web 前端项目额外注入
222
246
 
223
- 保存到 `<project-root>/.sprint-state/phase-outputs/specification.yaml`
247
+ **IF project_type is web-nextjs / web-react / web-vue / mobile-flutter / mobile-react-native:**
248
+
249
+ OPTIONAL: 若检测到 `design-shotgun` skill 已安装,可生成多版 UI 设计变体辅助设计评审。未安装则 SKIP。
224
250
 
225
251
  ### 暂停点
226
252
 
227
253
  | 暂停点 | 触发条件 | 用户操作 |
228
254
  |--------|---------|---------|
229
- | taste_decisions 确认 | autoplan 无法自动决策 | 用户确认每个决策 |
230
- | delphi-review APPROVED | Round 结果 REQUEST_CHANGES | 用户修复并重新评审 |
255
+ | batch-grill-me 决策确认 | 批量决策需要用户确认 | 用户一轮确认所有决策 |
256
+ | R2 delphi-review APPROVED | Round 结果 REQUEST_CHANGES | 用户修复并重新评审 |
231
257
 
232
258
  ### 输出
233
259
 
234
- - specification.yaml
260
+ - specification.yaml(每 REQ 含验收标准 — #368)
235
261
  - slices-manifest.json
236
262
  - 进入 Phase 3/6 BUILD(除非 `--stop-at design`)
263
+
264
+ ---
265
+
266
+ ## 证据文件汇总
267
+
268
+ | 证据文件 | 路径 | 校验时机 | 防陈旧绑定 |
269
+ |----------|------|----------|-----------|
270
+ | requirements-reviewed.json | `.sprint-state/phase-outputs/` | `phase-transition 2 completed` | `requirements_hash`(SHA-256) |
271
+ | delphi-reviewed.json | `.sprint-state/` | DELPHI-GATE (Phase 2→3) | verdict + timestamp |
272
+ | specification.yaml | `.sprint-state/phase-outputs/` | `phase-transition 3 in_progress` | slice↔REQ 一致性 |
273
+ | slices-manifest.json | `.sprint-state/phase-outputs/` | `phase-transition 3 in_progress` | schema + REQ 引用校验 |