specops 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.opencode/agent/specops-codebase-mapper.md +764 -0
  2. package/.opencode/agent/specops-debugger.md +1246 -0
  3. package/.opencode/agent/specops-executor.md +469 -0
  4. package/.opencode/agent/specops-integration-checker.md +443 -0
  5. package/.opencode/agent/specops-phase-researcher.md +547 -0
  6. package/.opencode/agent/specops-plan-checker.md +690 -0
  7. package/.opencode/agent/specops-planner.md +575 -0
  8. package/.opencode/agent/specops-project-researcher.md +354 -0
  9. package/.opencode/agent/specops-research-synthesizer.md +239 -0
  10. package/.opencode/agent/specops-roadmapper.md +642 -0
  11. package/.opencode/agent/specops-work-verifier.md +573 -0
  12. package/.opencode/references/checkpoints.md +776 -0
  13. package/.opencode/references/continuation-format.md +249 -0
  14. package/.opencode/references/decimal-phase-calculation.md +65 -0
  15. package/.opencode/references/git-integration.md +248 -0
  16. package/.opencode/references/git-planning-commit.md +38 -0
  17. package/.opencode/references/model-profile-resolution.md +34 -0
  18. package/.opencode/references/model-profiles.md +92 -0
  19. package/.opencode/references/phase-argument-parsing.md +61 -0
  20. package/.opencode/references/planning-config.md +196 -0
  21. package/.opencode/references/questioning.md +145 -0
  22. package/.opencode/references/tdd.md +263 -0
  23. package/.opencode/references/ui-brand.md +160 -0
  24. package/.opencode/references/verification-patterns.md +612 -0
  25. package/.opencode/skills/demand-analysis/SKILL.md +142 -10
  26. package/.opencode/templates/DEBUG.md +164 -0
  27. package/.opencode/templates/UAT.md +180 -0
  28. package/.opencode/templates/VALIDATION.md +76 -0
  29. package/.opencode/templates/codebase/architecture.md +255 -0
  30. package/.opencode/templates/codebase/concerns.md +310 -0
  31. package/.opencode/templates/codebase/conventions.md +307 -0
  32. package/.opencode/templates/codebase/integrations.md +280 -0
  33. package/.opencode/templates/codebase/stack.md +186 -0
  34. package/.opencode/templates/codebase/structure.md +285 -0
  35. package/.opencode/templates/codebase/testing.md +480 -0
  36. package/.opencode/templates/context.md +221 -0
  37. package/.opencode/templates/continue-here.md +78 -0
  38. package/.opencode/templates/debug-subagent-prompt.md +91 -0
  39. package/.opencode/templates/discovery.md +147 -0
  40. package/.opencode/templates/milestone-archive.md +123 -0
  41. package/.opencode/templates/milestone.md +115 -0
  42. package/.opencode/templates/phase-prompt.md +333 -0
  43. package/.opencode/templates/planner-subagent-prompt.md +117 -0
  44. package/.opencode/templates/project.md +184 -0
  45. package/.opencode/templates/requirements.md +130 -0
  46. package/.opencode/templates/research-project/ARCHITECTURE.md +204 -0
  47. package/.opencode/templates/research-project/FEATURES.md +147 -0
  48. package/.opencode/templates/research-project/PITFALLS.md +200 -0
  49. package/.opencode/templates/research-project/STACK.md +120 -0
  50. package/.opencode/templates/research-project/SUMMARY.md +170 -0
  51. package/.opencode/templates/research.md +278 -0
  52. package/.opencode/templates/retrospective.md +54 -0
  53. package/.opencode/templates/roadmap.md +202 -0
  54. package/.opencode/templates/state.md +176 -0
  55. package/.opencode/templates/summary-complex.md +59 -0
  56. package/.opencode/templates/summary-minimal.md +41 -0
  57. package/.opencode/templates/summary-standard.md +48 -0
  58. package/.opencode/templates/summary.md +248 -0
  59. package/.opencode/templates/user-setup.md +311 -0
  60. package/.opencode/templates/verification-report.md +322 -0
  61. package/.opencode/workflows/add-phase.md +111 -0
  62. package/.opencode/workflows/add-tests.md +350 -0
  63. package/.opencode/workflows/add-todo.md +157 -0
  64. package/.opencode/workflows/audit-milestone.md +297 -0
  65. package/.opencode/workflows/check-todos.md +176 -0
  66. package/.opencode/workflows/cleanup.md +152 -0
  67. package/.opencode/workflows/complete-milestone.md +763 -0
  68. package/.opencode/workflows/diagnose-issues.md +219 -0
  69. package/.opencode/workflows/discovery-phase.md +288 -0
  70. package/.opencode/workflows/discuss-phase.md +542 -0
  71. package/.opencode/workflows/execute-phase.md +449 -0
  72. package/.opencode/workflows/execute-plan.md +447 -0
  73. package/.opencode/workflows/health.md +156 -0
  74. package/.opencode/workflows/help.md +489 -0
  75. package/.opencode/workflows/insert-phase.md +129 -0
  76. package/.opencode/workflows/list-phase-assumptions.md +178 -0
  77. package/.opencode/workflows/map-codebase.md +315 -0
  78. package/.opencode/workflows/new-milestone.md +382 -0
  79. package/.opencode/workflows/new-project.md +1116 -0
  80. package/.opencode/workflows/pause-work.md +122 -0
  81. package/.opencode/workflows/plan-milestone-gaps.md +274 -0
  82. package/.opencode/workflows/plan-phase.md +569 -0
  83. package/.opencode/workflows/progress.md +381 -0
  84. package/.opencode/workflows/quick.md +453 -0
  85. package/.opencode/workflows/remove-phase.md +154 -0
  86. package/.opencode/workflows/research-phase.md +73 -0
  87. package/.opencode/workflows/resume-project.md +304 -0
  88. package/.opencode/workflows/set-profile.md +80 -0
  89. package/.opencode/workflows/settings.md +213 -0
  90. package/.opencode/workflows/transition.md +544 -0
  91. package/.opencode/workflows/update.md +219 -0
  92. package/.opencode/workflows/verify-phase.md +242 -0
  93. package/.opencode/workflows/verify-work.md +569 -0
  94. package/commands/specops/add-phase.md +43 -0
  95. package/commands/specops/add-tests.md +41 -0
  96. package/commands/specops/add-todo.md +47 -0
  97. package/commands/specops/audit-milestone.md +36 -0
  98. package/commands/specops/check-todos.md +45 -0
  99. package/commands/specops/cleanup.md +18 -0
  100. package/commands/specops/complete-milestone.md +136 -0
  101. package/commands/specops/debug.md +167 -0
  102. package/commands/specops/discuss-phase.md +83 -0
  103. package/commands/specops/execute-phase.md +41 -0
  104. package/commands/specops/health.md +22 -0
  105. package/commands/specops/help.md +22 -0
  106. package/commands/specops/insert-phase.md +32 -0
  107. package/commands/specops/join-discord.md +18 -0
  108. package/commands/specops/list-phase-assumptions.md +46 -0
  109. package/commands/specops/map-codebase.md +71 -0
  110. package/commands/specops/new-milestone.md +44 -0
  111. package/commands/specops/new-project.md +42 -0
  112. package/commands/specops/pause-work.md +38 -0
  113. package/commands/specops/plan-milestone-gaps.md +34 -0
  114. package/commands/specops/plan-phase.md +45 -0
  115. package/commands/specops/progress.md +24 -0
  116. package/commands/specops/quick.md +41 -0
  117. package/commands/specops/reapply-patches.md +111 -0
  118. package/commands/specops/remove-phase.md +31 -0
  119. package/commands/specops/research-phase.md +189 -0
  120. package/commands/specops/resume-work.md +40 -0
  121. package/commands/specops/set-profile.md +34 -0
  122. package/commands/specops/settings.md +36 -0
  123. package/commands/specops/update.md +37 -0
  124. package/commands/specops/verify-work.md +38 -0
  125. package/dist/__e2e__/01-state-engine.e2e.test.js +1 -1
  126. package/dist/acceptance/lazyDetector.js +1 -1
  127. package/dist/acceptance/lazyDetector.test.js +1 -1
  128. package/dist/acceptance/reporter.js +1 -1
  129. package/dist/acceptance/reporter.test.js +1 -1
  130. package/dist/acceptance/runner.js +1 -1
  131. package/dist/acceptance/runner.test.js +1 -1
  132. package/dist/cli.js +1 -1
  133. package/dist/context/index.js +1 -1
  134. package/dist/context/promptTemplate.js +1 -1
  135. package/dist/context/promptTemplate.test.js +1 -1
  136. package/dist/context/techContextLoader.js +1 -1
  137. package/dist/context/techContextLoader.test.js +1 -1
  138. package/dist/engine.js +1 -1
  139. package/dist/evolution/distiller.js +1 -1
  140. package/dist/evolution/index.js +1 -1
  141. package/dist/evolution/memoryGraph.js +1 -1
  142. package/dist/evolution/selector.js +1 -1
  143. package/dist/evolution/signals.js +1 -1
  144. package/dist/evolution/solidify.js +1 -1
  145. package/dist/evolution/store.js +1 -1
  146. package/dist/evolution/types.js +1 -1
  147. package/dist/init.d.ts +4 -3
  148. package/dist/init.js +1 -1
  149. package/dist/machines/agentMachine.js +1 -1
  150. package/dist/machines/agentMachine.test.js +1 -1
  151. package/dist/machines/supervisorMachine.js +1 -1
  152. package/dist/machines/supervisorMachine.test.js +1 -1
  153. package/dist/persistence/schema.js +1 -1
  154. package/dist/persistence/stateFile.js +1 -1
  155. package/dist/persistence/stateFile.test.js +1 -1
  156. package/dist/plugin-engine.js +1 -1
  157. package/dist/plugin.js +1 -1
  158. package/dist/types/index.js +1 -1
  159. package/dist/utils/id.js +1 -1
  160. package/package.json +2 -1
@@ -0,0 +1,569 @@
1
+ <purpose>
2
+ 为路线图阶段创建可执行的阶段提示(PLAN.md 文件),集成研究和验证。默认流程:研究(如需要)→ 规划 → 验证 → 完成。编排 specops-phase-researcher、specops-planner 和 specops-plan-checker Agent,带有修订循环(最多 3 次迭代)。
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ 在开始之前,阅读调用提示的 execution_context 中引用的所有文件。
7
+
8
+ @.opencode/references/ui-brand.md
9
+ </required_reading>
10
+
11
+ <process>
12
+
13
+ ## 1. 初始化
14
+
15
+ 一次调用加载所有上下文(仅路径以最小化编排器上下文):
16
+
17
+ ```bash
18
+ INIT=$(node .opencode/bin/specops-tools.cjs init plan-phase "$PHASE")
19
+ ```
20
+
21
+ 解析 JSON 获取:`researcher_model`、`planner_model`、`checker_model`、`research_enabled`、`plan_checker_enabled`、`nyquist_validation_enabled`、`commit_docs`、`phase_found`、`phase_dir`、`phase_number`、`phase_name`、`phase_slug`、`padded_phase`、`has_research`、`has_context`、`has_plans`、`plan_count`、`planning_exists`、`roadmap_exists`、`phase_req_ids`。
22
+
23
+ **文件路径(用于 <files_to_read> 块):** `state_path`、`roadmap_path`、`requirements_path`、`context_path`、`research_path`、`verification_path`、`uat_path`。如果文件不存在则为 null。
24
+
25
+ **如果 `planning_exists` 为 false:** 报错——先运行 `/specops:new-project`。
26
+
27
+ ## 2. 解析和规范化参数
28
+
29
+ 从 $ARGUMENTS 提取:阶段编号(整数或小数如 `2.1`)、标志(`--research`、`--skip-research`、`--gaps`、`--skip-verify`、`--prd <filepath>`)。
30
+
31
+ 从 $ARGUMENTS 提取 `--prd <filepath>`。如果存在,将 PRD_FILE 设为该文件路径。
32
+
33
+ **如果没有阶段编号:** 从路线图检测下一个未规划的阶段。
34
+
35
+ **如果 `phase_found` 为 false:** 验证阶段是否存在于 ROADMAP.md 中。如果有效,使用 init 返回的 `phase_slug` 和 `padded_phase` 创建目录:
36
+ ```bash
37
+ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
38
+ ```
39
+
40
+ **来自 init 的现有产物:** `has_research`、`has_plans`、`plan_count`。
41
+
42
+ ## 3. 验证阶段
43
+
44
+ ```bash
45
+ PHASE_INFO=$(node .opencode/bin/specops-tools.cjs roadmap get-phase "${PHASE}")
46
+ ```
47
+
48
+ **如果 `found` 为 false:** 报错并显示可用阶段。**如果 `found` 为 true:** 从 JSON 提取 `phase_number`、`phase_name`、`goal`。
49
+
50
+ ## 3.5. 处理 PRD 快速路径
51
+
52
+ **跳过条件:** 参数中没有 `--prd` 标志。
53
+
54
+ **如果提供了 `--prd <filepath>`:**
55
+
56
+ 1. 读取 PRD 文件:
57
+ ```bash
58
+ PRD_CONTENT=$(cat "$PRD_FILE" 2>/dev/null)
59
+ if [ -z "$PRD_CONTENT" ]; then
60
+ echo "Error: PRD file not found: $PRD_FILE"
61
+ exit 1
62
+ fi
63
+ ```
64
+
65
+ 2. 显示横幅:
66
+ ```
67
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
68
+ SpecOps ► PRD 快速路径
69
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
70
+
71
+ 使用 PRD:{PRD_FILE}
72
+ 正在从需求生成 CONTEXT.md...
73
+ ```
74
+
75
+ 3. 解析 PRD 内容并生成 CONTEXT.md。编排器应该:
76
+ - 从 PRD 中提取所有需求、用户故事、验收标准和约束
77
+ - 将每个映射为锁定决策(PRD 中的所有内容都视为锁定决策)
78
+ - 识别 PRD 未覆盖的领域并标记为"Claude's Discretion"
79
+ - 在阶段目录中创建 CONTEXT.md
80
+
81
+ 4. 写入 CONTEXT.md:
82
+ ```markdown
83
+ # Phase [X]: [Name] - Context
84
+
85
+ **Gathered:** [date]
86
+ **Status:** Ready for planning
87
+ **Source:** PRD Express Path ({PRD_FILE})
88
+
89
+ <domain>
90
+ ## Phase Boundary
91
+
92
+ [从 PRD 提取——此阶段交付什么]
93
+
94
+ </domain>
95
+
96
+ <decisions>
97
+ ## Implementation Decisions
98
+
99
+ {对于 PRD 中的每个需求/故事/标准:}
100
+ ### [从内容推导的类别]
101
+ - [作为锁定决策的需求]
102
+
103
+ ### Claude's Discretion
104
+ [PRD 未覆盖的领域——实现细节、技术选择]
105
+
106
+ </decisions>
107
+
108
+ <specifics>
109
+ ## Specific Ideas
110
+
111
+ [PRD 中的任何具体参考、示例或具体需求]
112
+
113
+ </specifics>
114
+
115
+ <deferred>
116
+ ## Deferred Ideas
117
+
118
+ [PRD 中明确标记为未来/v2/范围外的项目]
119
+ [如果没有:"无——PRD 覆盖了阶段范围"]
120
+
121
+ </deferred>
122
+
123
+ ---
124
+
125
+ *Phase: XX-name*
126
+ *Context gathered: [date] via PRD Express Path*
127
+ ```
128
+
129
+ 5. 提交:
130
+ ```bash
131
+ node .opencode/bin/specops-tools.cjs commit "docs(${padded_phase}): generate context from PRD" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
132
+ ```
133
+
134
+ 6. 将 `context_content` 设为生成的 CONTEXT.md 内容,继续到步骤 5(处理研究)。
135
+
136
+ **效果:** 这完全绕过了步骤 4(加载 CONTEXT.md),因为我们刚刚创建了它。工作流的其余部分(研究、规划、验证)使用 PRD 派生的上下文正常进行。
137
+
138
+ ## 4. 加载 CONTEXT.md
139
+
140
+ **跳过条件:** 使用了 PRD 快速路径(CONTEXT.md 已在步骤 3.5 中创建)。
141
+
142
+ 检查 init JSON 中的 `context_path`。
143
+
144
+ 如果 `context_path` 不为 null,显示:`使用阶段上下文:${context_path}`
145
+
146
+ **如果 `context_path` 为 null(没有 CONTEXT.md):**
147
+
148
+ 使用 AskUserQuestion:
149
+ - header: "无上下文"
150
+ - question: "Phase {X} 没有找到 CONTEXT.md。计划将仅使用研究和需求——你的设计偏好不会被包含。继续还是先捕获上下文?"
151
+ - options:
152
+ - "不使用上下文继续" — 仅使用研究 + 需求进行规划
153
+ - "先运行 discuss-phase" — 在规划前捕获设计决策
154
+
155
+ 如果"不使用上下文继续":继续到步骤 5。
156
+ 如果"先运行 discuss-phase":显示 `/specops:discuss-phase {X}` 并退出工作流。
157
+
158
+ ## 5. 处理研究
159
+
160
+ **跳过条件:** `--gaps` 标志、`--skip-research` 标志,或 `research_enabled` 为 false(来自 init)且没有 `--research` 覆盖。
161
+
162
+ **如果 `has_research` 为 true(来自 init)且没有 `--research` 标志:** 使用现有研究,跳到步骤 6。
163
+
164
+ **如果 RESEARCH.md 缺失或有 `--research` 标志:**
165
+
166
+ 显示横幅:
167
+ ```
168
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
169
+ SpecOps ► 研究 PHASE {X}
170
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
171
+
172
+ ◆ 正在生成研究员...
173
+ ```
174
+
175
+ ### 生成 specops-phase-researcher
176
+
177
+ ```bash
178
+ PHASE_DESC=$(node .opencode/bin/specops-tools.cjs roadmap get-phase "${PHASE}" | jq -r '.section')
179
+ ```
180
+
181
+ 研究提示:
182
+
183
+ ```markdown
184
+ <objective>
185
+ Research how to implement Phase {phase_number}: {phase_name}
186
+ Answer: "What do I need to know to PLAN this phase well?"
187
+ </objective>
188
+
189
+ <files_to_read>
190
+ - {context_path} (USER DECISIONS from /specops:discuss-phase)
191
+ - {requirements_path} (Project requirements)
192
+ - {state_path} (Project decisions and history)
193
+ </files_to_read>
194
+
195
+ <additional_context>
196
+ **Phase description:** {phase_description}
197
+ **Phase requirement IDs (MUST address):** {phase_req_ids}
198
+
199
+ **Project instructions:** Read ./CLAUDE.md if exists — follow project-specific guidelines
200
+ **Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, research should account for project skill patterns
201
+ </additional_context>
202
+
203
+ <output>
204
+ Write to: {phase_dir}/{phase_num}-RESEARCH.md
205
+ </output>
206
+ ```
207
+
208
+ ```
209
+ Task(
210
+ prompt="First, read .opencode/agent/specops-phase-researcher.md for your role and instructions.\n\n" + research_prompt,
211
+ subagent_type="general-purpose",
212
+ model="{researcher_model}",
213
+ description="Research Phase {phase}"
214
+ )
215
+ ```
216
+
217
+ ### 处理研究员返回
218
+
219
+ - **`## RESEARCH COMPLETE`:** 显示确认,继续到步骤 6
220
+ - **`## RESEARCH BLOCKED`:** 显示阻塞信息,提供选项:1) 提供上下文,2) 跳过研究,3) 中止
221
+
222
+ ## 5.5. 创建验证策略(如果 Nyquist 启用)
223
+
224
+ **跳过条件:** INIT JSON 中 `nyquist_validation_enabled` 为 false。
225
+
226
+ 研究员完成后,检查 RESEARCH.md 是否包含 Validation Architecture 部分:
227
+
228
+ ```bash
229
+ grep -l "## Validation Architecture" "${PHASE_DIR}"/*-RESEARCH.md 2>/dev/null
230
+ ```
231
+
232
+ **如果找到:**
233
+ 1. 从 `.opencode/templates/VALIDATION.md` 读取验证模板
234
+ 2. 写入 `${PHASE_DIR}/${PADDED_PHASE}-VALIDATION.md`
235
+ 3. 填充前置信息:将 `{N}` 替换为阶段编号,`{phase-slug}` 替换为阶段 slug,`{date}` 替换为当前日期
236
+ 4. 如果 `commit_docs` 为 true:
237
+ ```bash
238
+ node .opencode/bin/specops-tools.cjs commit-docs "docs(phase-${PHASE}): add validation strategy"
239
+ ```
240
+
241
+ **如果未找到(但 nyquist 已启用):** 显示警告:
242
+ ```
243
+ ⚠ Nyquist 验证已启用但研究员未生成 Validation Architecture 部分。
244
+ 继续但没有验证策略。计划可能无法通过 Dimension 8 检查。
245
+ ```
246
+
247
+ ## 6. 检查现有计划
248
+
249
+ ```bash
250
+ ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null
251
+ ```
252
+
253
+ **如果存在:** 提供选项:1) 添加更多计划,2) 查看现有计划,3) 从头重新规划。
254
+
255
+ ## 7. 使用 INIT 中的上下文路径
256
+
257
+ 从 INIT JSON 提取:
258
+
259
+ ```bash
260
+ STATE_PATH=$(echo "$INIT" | jq -r '.state_path // empty')
261
+ ROADMAP_PATH=$(echo "$INIT" | jq -r '.roadmap_path // empty')
262
+ REQUIREMENTS_PATH=$(echo "$INIT" | jq -r '.requirements_path // empty')
263
+ RESEARCH_PATH=$(echo "$INIT" | jq -r '.research_path // empty')
264
+ VERIFICATION_PATH=$(echo "$INIT" | jq -r '.verification_path // empty')
265
+ UAT_PATH=$(echo "$INIT" | jq -r '.uat_path // empty')
266
+ CONTEXT_PATH=$(echo "$INIT" | jq -r '.context_path // empty')
267
+ ```
268
+
269
+ ## 8. 生成 specops-planner Agent
270
+
271
+ 显示横幅:
272
+ ```
273
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
274
+ SpecOps ► 规划 PHASE {X}
275
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
276
+
277
+ ◆ 正在生成规划器...
278
+ ```
279
+
280
+ 规划器提示:
281
+
282
+ ```markdown
283
+ <planning_context>
284
+ **Phase:** {phase_number}
285
+ **Mode:** {standard | gap_closure}
286
+
287
+ <files_to_read>
288
+ - {state_path} (Project State)
289
+ - {roadmap_path} (Roadmap)
290
+ - {requirements_path} (Requirements)
291
+ - {context_path} (USER DECISIONS from /specops:discuss-phase)
292
+ - {research_path} (Technical Research)
293
+ - {verification_path} (Verification Gaps - if --gaps)
294
+ - {uat_path} (UAT Gaps - if --gaps)
295
+ </files_to_read>
296
+
297
+ **Phase requirement IDs (every ID MUST appear in a plan's `requirements` field):** {phase_req_ids}
298
+
299
+ **Project instructions:** Read ./CLAUDE.md if exists — follow project-specific guidelines
300
+ **Project skills:** Check .agents/skills/ directory (if exists) — read SKILL.md files, plans should account for project skill rules
301
+ </planning_context>
302
+
303
+ <downstream_consumer>
304
+ Output consumed by /specops:execute-phase. Plans need:
305
+ - Frontmatter (wave, depends_on, files_modified, autonomous)
306
+ - Tasks in XML format
307
+ - Verification criteria
308
+ - must_haves for goal-backward verification
309
+ </downstream_consumer>
310
+
311
+ <quality_gate>
312
+ - [ ] PLAN.md files created in phase directory
313
+ - [ ] Each plan has valid frontmatter
314
+ - [ ] Tasks are specific and actionable
315
+ - [ ] Dependencies correctly identified
316
+ - [ ] Waves assigned for parallel execution
317
+ - [ ] must_haves derived from phase goal
318
+ </quality_gate>
319
+ ```
320
+
321
+ ```
322
+ Task(
323
+ prompt="First, read .opencode/agent/specops-planner.md for your role and instructions.\n\n" + filled_prompt,
324
+ subagent_type="general-purpose",
325
+ model="{planner_model}",
326
+ description="Plan Phase {phase}"
327
+ )
328
+ ```
329
+
330
+ ## 9. 处理规划器返回
331
+
332
+ - **`## PLANNING COMPLETE`:** 显示计划数量。如果 `--skip-verify` 或 `plan_checker_enabled` 为 false(来自 init):跳到步骤 13。否则:步骤 10。
333
+ - **`## CHECKPOINT REACHED`:** 展示给用户,获取回复,生成继续任务(步骤 12)
334
+ - **`## PLANNING INCONCLUSIVE`:** 显示尝试次数,提供选项:添加上下文 / 重试 / 手动
335
+
336
+ ## 10. 生成 specops-plan-checker Agent
337
+
338
+ 显示横幅:
339
+ ```
340
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
341
+ SpecOps ► 验证计划
342
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
343
+
344
+ ◆ 正在生成计划检查器...
345
+ ```
346
+
347
+ 检查器提示:
348
+
349
+ ```markdown
350
+ <verification_context>
351
+ **Phase:** {phase_number}
352
+ **Phase Goal:** {goal from ROADMAP}
353
+
354
+ <files_to_read>
355
+ - {PHASE_DIR}/*-PLAN.md (Plans to verify)
356
+ - {roadmap_path} (Roadmap)
357
+ - {requirements_path} (Requirements)
358
+ - {context_path} (USER DECISIONS from /specops:discuss-phase)
359
+ - {research_path} (Technical Research — includes Validation Architecture)
360
+ </files_to_read>
361
+
362
+ **Phase requirement IDs (MUST ALL be covered):** {phase_req_ids}
363
+
364
+ **Project instructions:** Read ./CLAUDE.md if exists — verify plans honor project guidelines
365
+ **Project skills:** Check .agents/skills/ directory (if exists) — verify plans account for project skill rules
366
+ </verification_context>
367
+
368
+ <expected_output>
369
+ - ## VERIFICATION PASSED — all checks pass
370
+ - ## ISSUES FOUND — structured issue list
371
+ </expected_output>
372
+ ```
373
+
374
+ ```
375
+ Task(
376
+ prompt=checker_prompt,
377
+ subagent_type="specops-plan-checker",
378
+ model="{checker_model}",
379
+ description="Verify Phase {phase} plans"
380
+ )
381
+ ```
382
+
383
+ ## 11. 处理检查器返回
384
+
385
+ - **`## VERIFICATION PASSED`:** 显示确认,继续到步骤 13。
386
+ - **`## ISSUES FOUND`:** 显示问题,检查迭代次数,继续到步骤 12。
387
+
388
+ ## 12. 修订循环(最多 3 次迭代)
389
+
390
+ 跟踪 `iteration_count`(初始规划 + 检查后从 1 开始)。
391
+
392
+ **如果 iteration_count < 3:**
393
+
394
+ 显示:`正在发回规划器修订...(迭代 {N}/3)`
395
+
396
+ 修订提示:
397
+
398
+ ```markdown
399
+ <revision_context>
400
+ **Phase:** {phase_number}
401
+ **Mode:** revision
402
+
403
+ <files_to_read>
404
+ - {PHASE_DIR}/*-PLAN.md (Existing plans)
405
+ - {context_path} (USER DECISIONS from /specops:discuss-phase)
406
+ </files_to_read>
407
+
408
+ **Checker issues:** {structured_issues_from_checker}
409
+ </revision_context>
410
+
411
+ <instructions>
412
+ Make targeted updates to address checker issues.
413
+ Do NOT replan from scratch unless issues are fundamental.
414
+ Return what changed.
415
+ </instructions>
416
+ ```
417
+
418
+ ```
419
+ Task(
420
+ prompt="First, read .opencode/agent/specops-planner.md for your role and instructions.\n\n" + revision_prompt,
421
+ subagent_type="general-purpose",
422
+ model="{planner_model}",
423
+ description="Revise Phase {phase} plans"
424
+ )
425
+ ```
426
+
427
+ 规划器返回后 → 再次生成检查器(步骤 10),递增 iteration_count。
428
+
429
+ **如果 iteration_count >= 3:**
430
+
431
+ 显示:`已达最大迭代次数。{N} 个问题仍然存在:` + 问题列表
432
+
433
+ 提供选项:1) 强制继续,2) 提供指导并重试,3) 放弃
434
+
435
+ ## 13. 展示最终状态
436
+
437
+ 根据标志/配置路由到 `<offer_next>` 或 `auto_advance`。
438
+
439
+ ## 14. 自动推进检查
440
+
441
+ 检查自动推进触发条件:
442
+
443
+ 1. 从 $ARGUMENTS 解析 `--auto` 标志
444
+ 2. 从配置读取 `workflow.auto_advance`:
445
+ ```bash
446
+ AUTO_CFG=$(node .opencode/bin/specops-tools.cjs config-get workflow.auto_advance 2>/dev/null || echo "false")
447
+ ```
448
+
449
+ **如果存在 `--auto` 标志或 `AUTO_CFG` 为 true:**
450
+
451
+ 显示横幅:
452
+ ```
453
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
454
+ SpecOps ► 自动推进到执行
455
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
456
+
457
+ 计划就绪。正在生成 execute-phase...
458
+ ```
459
+
460
+ 将 execute-phase 作为 Task 生成,使用直接工作流文件引用(不要使用 Skill 工具——Skill 在 Task 子 Agent 中无法解析):
461
+ ```
462
+ Task(
463
+ prompt="
464
+ <objective>
465
+ 你是 execute-phase 编排器。执行 Phase ${PHASE}: ${PHASE_NAME} 的所有计划。
466
+ </objective>
467
+
468
+ <execution_context>
469
+ @.opencode/workflows/execute-phase.md
470
+ @.opencode/references/checkpoints.md
471
+ @.opencode/references/tdd.md
472
+ @.opencode/references/model-profile-resolution.md
473
+ </execution_context>
474
+
475
+ <arguments>
476
+ PHASE=${PHASE}
477
+ ARGUMENTS='${PHASE} --auto --no-transition'
478
+ </arguments>
479
+
480
+ <instructions>
481
+ 1. 从 execution_context 读取 execute-phase.md 获取完整工作流
482
+ 2. 遵循所有步骤:initialize、handle_branching、validate_phase、discover_and_group_plans、execute_waves、aggregate_results、close_parent_artifacts、verify_phase_goal、update_roadmap
483
+ 3. --no-transition 标志意味着:验证 + 路线图更新后,停止并返回状态。不要运行 transition.md。
484
+ 4. 生成执行器 Agent 时,使用 subagent_type='specops-executor' 并使用工作流中现有的 @file 模式
485
+ 5. 生成验证器 Agent 时,使用 subagent_type='specops-verifier'
486
+ 6. 保留 classifyHandoffIfNeeded 变通方案(针对该特定错误的抽查)
487
+ 7. 不要使用 Skill 工具或 /specops: 命令
488
+ </instructions>
489
+ ",
490
+ subagent_type="general-purpose",
491
+ description="Execute Phase ${PHASE}"
492
+ )
493
+ ```
494
+
495
+ **处理 execute-phase 返回:**
496
+ - **PHASE COMPLETE** → 显示最终摘要:
497
+ ```
498
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
499
+ SpecOps ► PHASE ${PHASE} 完成 ✓
500
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
501
+
502
+ 自动推进流水线完成。
503
+
504
+ 下一步:/specops:discuss-phase ${NEXT_PHASE} --auto
505
+ ```
506
+ - **GAPS FOUND / VERIFICATION FAILED** → 显示结果,停止链:
507
+ ```
508
+ 自动推进已停止:执行需要审查。
509
+
510
+ 审查上面的输出并手动继续:
511
+ /specops:execute-phase ${PHASE}
512
+ ```
513
+
514
+ **如果既没有 `--auto` 也没有配置启用:**
515
+ 路由到 `<offer_next>`(现有行为)。
516
+
517
+ </process>
518
+
519
+ <offer_next>
520
+ 直接输出此 markdown(不作为代码块):
521
+
522
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
523
+ SpecOps ► PHASE {X} 规划完成 ✓
524
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
525
+
526
+ **Phase {X}: {名称}** — {N} 个计划,{M} 个波次
527
+
528
+ | 波次 | 计划 | 构建内容 |
529
+ |------|------|----------|
530
+ | 1 | 01, 02 | [目标] |
531
+ | 2 | 03 | [目标] |
532
+
533
+ 研究:{已完成 | 使用现有 | 已跳过}
534
+ 验证:{通过 | 覆盖后通过 | 已跳过}
535
+
536
+ ───────────────────────────────────────────────────────────────
537
+
538
+ ## ▶ 下一步
539
+
540
+ **执行 Phase {X}** — 运行所有 {N} 个计划
541
+
542
+ /specops:execute-phase {X}
543
+
544
+ <sub>/clear 先清理 → 全新上下文窗口</sub>
545
+
546
+ ───────────────────────────────────────────────────────────────
547
+
548
+ **其他可用操作:**
549
+ - cat .planning/phases/{phase-dir}/*-PLAN.md — 审查计划
550
+ - /specops:plan-phase {X} --research — 先重新研究
551
+
552
+ ───────────────────────────────────────────────────────────────
553
+ </offer_next>
554
+
555
+ <success_criteria>
556
+ - [ ] .planning/ 目录已验证
557
+ - [ ] 阶段已根据路线图验证
558
+ - [ ] 阶段目录已创建(如需要)
559
+ - [ ] CONTEXT.md 在步骤 4 中提前加载并传递给所有 Agent
560
+ - [ ] 研究已完成(除非 --skip-research 或 --gaps 或已存在)
561
+ - [ ] specops-phase-researcher 已生成并附带 CONTEXT.md
562
+ - [ ] 现有计划已检查
563
+ - [ ] specops-planner 已生成并附带 CONTEXT.md + RESEARCH.md
564
+ - [ ] 计划已创建(PLANNING COMPLETE 或 CHECKPOINT 已处理)
565
+ - [ ] specops-plan-checker 已生成并附带 CONTEXT.md
566
+ - [ ] 验证通过或用户覆盖或达到最大迭代次数后用户决定
567
+ - [ ] Agent 生成之间用户可以看到状态
568
+ - [ ] 用户知道后续步骤
569
+ </success_criteria>