specops 0.2.5 → 0.3.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.
Files changed (201) 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 +475 -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 +581 -0
  8. package/.opencode/agent/specops-project-researcher.md +354 -0
  9. package/.opencode/agent/specops-research-synthesizer.md +242 -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/templates/DEBUG.md +164 -0
  26. package/.opencode/templates/UAT.md +180 -0
  27. package/.opencode/templates/VALIDATION.md +76 -0
  28. package/.opencode/templates/codebase/architecture.md +255 -0
  29. package/.opencode/templates/codebase/concerns.md +310 -0
  30. package/.opencode/templates/codebase/conventions.md +307 -0
  31. package/.opencode/templates/codebase/integrations.md +280 -0
  32. package/.opencode/templates/codebase/stack.md +186 -0
  33. package/.opencode/templates/codebase/structure.md +285 -0
  34. package/.opencode/templates/codebase/testing.md +480 -0
  35. package/.opencode/templates/context.md +221 -0
  36. package/.opencode/templates/continue-here.md +78 -0
  37. package/.opencode/templates/debug-subagent-prompt.md +91 -0
  38. package/.opencode/templates/discovery.md +147 -0
  39. package/.opencode/templates/milestone-archive.md +123 -0
  40. package/.opencode/templates/milestone.md +115 -0
  41. package/.opencode/templates/phase-prompt.md +333 -0
  42. package/.opencode/templates/planner-subagent-prompt.md +117 -0
  43. package/.opencode/templates/project.md +184 -0
  44. package/.opencode/templates/requirements.md +130 -0
  45. package/.opencode/templates/research-project/ARCHITECTURE.md +204 -0
  46. package/.opencode/templates/research-project/FEATURES.md +147 -0
  47. package/.opencode/templates/research-project/PITFALLS.md +200 -0
  48. package/.opencode/templates/research-project/STACK.md +120 -0
  49. package/.opencode/templates/research-project/SUMMARY.md +170 -0
  50. package/.opencode/templates/research.md +278 -0
  51. package/.opencode/templates/retrospective.md +54 -0
  52. package/.opencode/templates/roadmap.md +202 -0
  53. package/.opencode/templates/state.md +176 -0
  54. package/.opencode/templates/summary-complex.md +59 -0
  55. package/.opencode/templates/summary-minimal.md +41 -0
  56. package/.opencode/templates/summary-standard.md +48 -0
  57. package/.opencode/templates/summary.md +248 -0
  58. package/.opencode/templates/user-setup.md +311 -0
  59. package/.opencode/templates/verification-report.md +322 -0
  60. package/.opencode/workflows/add-phase.md +111 -0
  61. package/.opencode/workflows/add-tests.md +350 -0
  62. package/.opencode/workflows/add-todo.md +157 -0
  63. package/.opencode/workflows/audit-milestone.md +297 -0
  64. package/.opencode/workflows/check-todos.md +176 -0
  65. package/.opencode/workflows/cleanup.md +152 -0
  66. package/.opencode/workflows/complete-milestone.md +763 -0
  67. package/.opencode/workflows/diagnose-issues.md +219 -0
  68. package/.opencode/workflows/discovery-phase.md +288 -0
  69. package/.opencode/workflows/discuss-phase.md +542 -0
  70. package/.opencode/workflows/execute-phase.md +449 -0
  71. package/.opencode/workflows/execute-plan.md +447 -0
  72. package/.opencode/workflows/health.md +156 -0
  73. package/.opencode/workflows/help.md +489 -0
  74. package/.opencode/workflows/insert-phase.md +129 -0
  75. package/.opencode/workflows/list-phase-assumptions.md +178 -0
  76. package/.opencode/workflows/map-codebase.md +315 -0
  77. package/.opencode/workflows/new-milestone.md +382 -0
  78. package/.opencode/workflows/new-project.md +1116 -0
  79. package/.opencode/workflows/pause-work.md +122 -0
  80. package/.opencode/workflows/plan-milestone-gaps.md +274 -0
  81. package/.opencode/workflows/plan-phase.md +569 -0
  82. package/.opencode/workflows/progress.md +381 -0
  83. package/.opencode/workflows/quick.md +453 -0
  84. package/.opencode/workflows/remove-phase.md +154 -0
  85. package/.opencode/workflows/research-phase.md +73 -0
  86. package/.opencode/workflows/resume-project.md +304 -0
  87. package/.opencode/workflows/set-profile.md +80 -0
  88. package/.opencode/workflows/settings.md +213 -0
  89. package/.opencode/workflows/transition.md +544 -0
  90. package/.opencode/workflows/update.md +219 -0
  91. package/.opencode/workflows/verify-phase.md +242 -0
  92. package/.opencode/workflows/verify-work.md +569 -0
  93. package/commands/specops/add-phase.md +43 -0
  94. package/commands/specops/add-tests.md +41 -0
  95. package/commands/specops/add-todo.md +47 -0
  96. package/commands/specops/audit-milestone.md +36 -0
  97. package/commands/specops/check-todos.md +45 -0
  98. package/commands/specops/cleanup.md +18 -0
  99. package/commands/specops/complete-milestone.md +136 -0
  100. package/commands/specops/debug.md +167 -0
  101. package/commands/specops/discuss-phase.md +83 -0
  102. package/commands/specops/execute-phase.md +41 -0
  103. package/commands/specops/health.md +22 -0
  104. package/commands/specops/help.md +22 -0
  105. package/commands/specops/insert-phase.md +32 -0
  106. package/commands/specops/join-discord.md +18 -0
  107. package/commands/specops/list-phase-assumptions.md +46 -0
  108. package/commands/specops/map-codebase.md +71 -0
  109. package/commands/specops/new-milestone.md +44 -0
  110. package/commands/specops/new-project.md +42 -0
  111. package/commands/specops/pause-work.md +38 -0
  112. package/commands/specops/plan-milestone-gaps.md +34 -0
  113. package/commands/specops/plan-phase.md +45 -0
  114. package/commands/specops/progress.md +24 -0
  115. package/commands/specops/quick.md +41 -0
  116. package/commands/specops/reapply-patches.md +111 -0
  117. package/commands/specops/remove-phase.md +31 -0
  118. package/commands/specops/research-phase.md +189 -0
  119. package/commands/specops/resume-work.md +40 -0
  120. package/commands/specops/set-profile.md +34 -0
  121. package/commands/specops/settings.md +36 -0
  122. package/commands/specops/update.md +37 -0
  123. package/commands/specops/verify-work.md +38 -0
  124. package/dist/__integration__/fixtures/generator.d.ts +4 -0
  125. package/dist/__integration__/fixtures/generator.js +1 -0
  126. package/dist/__integration__/mocks/server.d.ts +7 -0
  127. package/dist/__integration__/mocks/server.js +1 -0
  128. package/dist/__integration__/setup.d.ts +6 -0
  129. package/dist/__integration__/setup.js +1 -0
  130. package/dist/acceptance/lazyDetector.js +1 -1
  131. package/dist/acceptance/reporter.js +1 -1
  132. package/dist/acceptance/runner.js +1 -1
  133. package/dist/cli.js +1 -1
  134. package/dist/context/index.js +1 -1
  135. package/dist/context/promptTemplate.js +1 -1
  136. package/dist/context/techContextLoader.js +1 -1
  137. package/dist/engine.d.ts +1 -0
  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/supervisorMachine.js +1 -1
  151. package/dist/persistence/schema.js +1 -1
  152. package/dist/persistence/stateFile.js +1 -1
  153. package/dist/plugin-engine.js +1 -1
  154. package/dist/plugin.js +1 -1
  155. package/dist/requirement-analysis/analyzers/repository-parser.d.ts +121 -0
  156. package/dist/requirement-analysis/analyzers/repository-parser.js +1 -0
  157. package/dist/requirement-analysis/generators/prd-generator.d.ts +90 -0
  158. package/dist/requirement-analysis/generators/prd-generator.js +1 -0
  159. package/dist/requirement-analysis/integrations/v1-integration.d.ts +73 -0
  160. package/dist/requirement-analysis/integrations/v1-integration.js +1 -0
  161. package/dist/requirement-analysis/tools/analyze-requirements.js +1 -0
  162. package/dist/requirement-analysis/types/analysis-result.d.ts +326 -0
  163. package/dist/requirement-analysis/types/analysis-result.js +1 -0
  164. package/dist/requirement-analysis/types/feature-mapping.d.ts +294 -0
  165. package/dist/requirement-analysis/types/feature-mapping.js +1 -0
  166. package/dist/requirement-analysis/types/index.d.ts +171 -0
  167. package/dist/requirement-analysis/types/index.js +1 -0
  168. package/dist/requirement-analysis/types/tech-stack.d.ts +213 -0
  169. package/dist/requirement-analysis/types/tech-stack.js +1 -0
  170. package/dist/requirement-analysis/utils/error-handler.d.ts +112 -0
  171. package/dist/requirement-analysis/utils/error-handler.js +1 -0
  172. package/dist/types/index.d.ts +4 -2
  173. package/dist/types/index.js +1 -1
  174. package/dist/utils/id.js +1 -1
  175. package/package.json +4 -2
  176. package/skills/competitor-search/SKILL.md +169 -0
  177. package/skills/demand-analysis/SKILL.md +307 -0
  178. package/skills/feature-search/SKILL.md +182 -0
  179. package/skills/requirement-analysis/README.md +464 -0
  180. package/skills/requirement-analysis/SKILL.md +224 -0
  181. package/skills/requirement-analysis/templates/feature-mapping-template.json +210 -0
  182. package/skills/requirement-analysis/templates/prd-template.md +104 -0
  183. package/skills/tech-selection/SKILL.md +198 -0
  184. package/dist/__e2e__/01-state-engine.e2e.test.d.ts +0 -10
  185. package/dist/__e2e__/01-state-engine.e2e.test.js +0 -1
  186. package/dist/acceptance/lazyDetector.test.d.ts +0 -1
  187. package/dist/acceptance/lazyDetector.test.js +0 -1
  188. package/dist/acceptance/reporter.test.d.ts +0 -1
  189. package/dist/acceptance/reporter.test.js +0 -1
  190. package/dist/acceptance/runner.test.d.ts +0 -1
  191. package/dist/acceptance/runner.test.js +0 -1
  192. package/dist/context/promptTemplate.test.d.ts +0 -1
  193. package/dist/context/promptTemplate.test.js +0 -1
  194. package/dist/context/techContextLoader.test.d.ts +0 -1
  195. package/dist/context/techContextLoader.test.js +0 -1
  196. package/dist/machines/agentMachine.test.d.ts +0 -1
  197. package/dist/machines/agentMachine.test.js +0 -1
  198. package/dist/machines/supervisorMachine.test.d.ts +0 -1
  199. package/dist/machines/supervisorMachine.test.js +0 -1
  200. package/dist/persistence/stateFile.test.d.ts +0 -1
  201. package/dist/persistence/stateFile.test.js +0 -1
@@ -0,0 +1,333 @@
1
+ # 阶段提示模板
2
+
3
+ > **注意:** 规划方法论在 `agents/specops-planner.md` 中。
4
+ > 此模板定义代理生成的 PLAN.md 输出格式。
5
+
6
+ `.planning/phases/XX-name/{phase}-{plan}-PLAN.md` 的模板,为并行执行优化的可执行阶段计划。
7
+
8
+ **命名:** 使用 `{phase}-{plan}-PLAN.md` 格式 (如 `01-02-PLAN.md` 表示阶段 1, 计划 2)
9
+
10
+ ---
11
+
12
+ ## 文件模板
13
+
14
+ ```markdown
15
+ ---
16
+ phase: XX-name
17
+ plan: NN
18
+ type: execute
19
+ wave: N # 执行波次 (1, 2, 3...)。规划时预计算。
20
+ depends_on: [] # 此计划依赖的计划 ID (如 ["01-01"])。
21
+ files_modified: [] # 此计划修改的文件。
22
+ autonomous: true # 如果计划有需要用户交互的检查点则为 false
23
+ requirements: [] # 必填 — 此计划对应的 ROADMAP 需求 ID。不能为空。
24
+ user_setup: [] # Claude 无法自动化的人工设置 (见下文)
25
+
26
+ # 目标反推验证 (规划时推导,执行后验证)
27
+ must_haves:
28
+ truths: [] # 目标达成必须为真的可观测行为
29
+ artifacts: [] # 必须存在且有真实实现的文件
30
+ key_links: [] # 产物间的关键连接
31
+ ---
32
+
33
+ <objective>
34
+ [此计划完成什么]
35
+
36
+ 目的: [为什么这对项目重要]
37
+ 输出: [将创建什么产物]
38
+ </objective>
39
+
40
+ <execution_context>
41
+ @.opencode/workflows/execute-plan.md
42
+ @.opencode/templates/summary.md
43
+ [如果计划包含检查点任务 (type="checkpoint:*"),添加:]
44
+ @.opencode/references/checkpoints.md
45
+ </execution_context>
46
+
47
+ <context>
48
+ @.planning/PROJECT.md
49
+ @.planning/ROADMAP.md
50
+ @.planning/STATE.md
51
+
52
+ # 仅在确实需要时引用前置计划的 SUMMARY:
53
+ # - 此计划使用前置计划的类型/导出
54
+ # - 前置计划做了影响此计划的决策
55
+ # 不要条件反射式地链接: 计划 02 引用 01, 计划 03 引用 02...
56
+
57
+ [相关源文件:]
58
+ @src/path/to/relevant.ts
59
+ </context>
60
+
61
+ <tasks>
62
+
63
+ <task type="auto">
64
+ <name>任务 1: [面向操作的名称]</name>
65
+ <files>path/to/file.ext, another/file.ext</files>
66
+ <action>[具体实现 — 做什么、怎么做、避免什么以及为什么]</action>
67
+ <verify>[证明它工作的命令或检查]</verify>
68
+ <done>[可衡量的验收标准]</done>
69
+ </task>
70
+
71
+ <task type="auto">
72
+ <name>任务 2: [面向操作的名称]</name>
73
+ <files>path/to/file.ext</files>
74
+ <action>[具体实现]</action>
75
+ <verify>[命令或检查]</verify>
76
+ <done>[验收标准]</done>
77
+ </task>
78
+
79
+ <!-- 检查点任务示例和模式,参见 @.opencode/references/checkpoints.md -->
80
+ <!-- 关键规则: Claude 在 human-verify 检查点之前启动开发服务器。用户只需访问 URL。 -->
81
+
82
+ <task type="checkpoint:decision" gate="blocking">
83
+ <decision>[需要决定什么]</decision>
84
+ <context>[为什么这个决策重要]</context>
85
+ <options>
86
+ <option id="option-a"><name>[名称]</name><pros>[优点]</pros><cons>[权衡]</cons></option>
87
+ <option id="option-b"><name>[名称]</name><pros>[优点]</pros><cons>[权衡]</cons></option>
88
+ </options>
89
+ <resume-signal>选择: option-a 或 option-b</resume-signal>
90
+ </task>
91
+
92
+ <task type="checkpoint:human-verify" gate="blocking">
93
+ <what-built>[Claude 构建了什么] - 服务运行在 [URL]</what-built>
94
+ <how-to-verify>访问 [URL] 并验证: [仅视觉检查,不要 CLI 命令]</how-to-verify>
95
+ <resume-signal>输入 "approved" 或描述问题</resume-signal>
96
+ </task>
97
+
98
+ </tasks>
99
+
100
+ <verification>
101
+ 声明计划完成前:
102
+ - [ ] [具体测试命令]
103
+ - [ ] [构建/类型检查通过]
104
+ - [ ] [行为验证]
105
+ </verification>
106
+
107
+ <success_criteria>
108
+
109
+ - 所有任务完成
110
+ - 所有验证检查通过
111
+ - 未引入错误或警告
112
+ - [计划特定标准]
113
+ </success_criteria>
114
+
115
+ <output>
116
+ 完成后,创建 `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
117
+ </output>
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Frontmatter 字段
123
+
124
+ | 字段 | 必填 | 用途 |
125
+ |------|------|------|
126
+ | `phase` | 是 | 阶段标识 (如 `01-foundation`) |
127
+ | `plan` | 是 | 阶段内的计划编号 (如 `01`, `02`) |
128
+ | `type` | 是 | 标准计划始终为 `execute`,TDD 计划为 `tdd` |
129
+ | `wave` | 是 | 执行波次编号 (1, 2, 3...)。规划时预计算。 |
130
+ | `depends_on` | 是 | 此计划依赖的计划 ID 数组。 |
131
+ | `files_modified` | 是 | 此计划涉及的文件。 |
132
+ | `autonomous` | 是 | 无检查点为 `true`,有检查点为 `false` |
133
+ | `requirements` | 是 | **必须**列出 ROADMAP 中的需求 ID。每个路线图需求必须出现在至少一个计划中。 |
134
+ | `user_setup` | 否 | 人工设置项数组 (外部服务) |
135
+ | `must_haves` | 是 | 目标反推验证标准 (见下文) |
136
+
137
+ **波次是预计算的:** 波次编号在 `/specops:plan-phase` 期间分配。Execute-phase 直接从 frontmatter 读取 `wave` 并按波次编号分组计划。无需运行时依赖分析。
138
+
139
+ **Must-haves 支持验证:** `must_haves` 字段将目标反推需求从规划传递到执行。所有计划完成后,execute-phase 生成验证子代理,根据实际代码库检查这些标准。
140
+
141
+ ---
142
+
143
+ ## 并行 vs 顺序
144
+
145
+ <parallel_examples>
146
+
147
+ **波次 1 候选 (并行):**
148
+
149
+ ```yaml
150
+ # 计划 01 - 用户功能
151
+ wave: 1
152
+ depends_on: []
153
+ files_modified: [src/models/user.ts, src/api/users.ts]
154
+ autonomous: true
155
+
156
+ # 计划 02 - 产品功能 (与计划 01 无重叠)
157
+ wave: 1
158
+ depends_on: []
159
+ files_modified: [src/models/product.ts, src/api/products.ts]
160
+ autonomous: true
161
+
162
+ # 计划 03 - 订单功能 (无重叠)
163
+ wave: 1
164
+ depends_on: []
165
+ files_modified: [src/models/order.ts, src/api/orders.ts]
166
+ autonomous: true
167
+ ```
168
+
169
+ 三个都在波次 1 并行运行,无依赖,无文件冲突。
170
+
171
+ **顺序 (真正的依赖):**
172
+
173
+ ```yaml
174
+ # 计划 01 - 认证基础
175
+ wave: 1
176
+ depends_on: []
177
+ files_modified: [src/lib/auth.ts, src/middleware/auth.ts]
178
+ autonomous: true
179
+
180
+ # 计划 02 - 受保护功能 (需要认证)
181
+ wave: 2
182
+ depends_on: ["01"]
183
+ files_modified: [src/features/dashboard.ts]
184
+ autonomous: true
185
+ ```
186
+
187
+ 计划 02 在波次 2 等待波次 1 的计划 01 完成,因为真正依赖认证类型/中间件。
188
+
189
+ **检查点计划:**
190
+
191
+ ```yaml
192
+ # 计划 03 - 带验证的 UI
193
+ wave: 3
194
+ depends_on: ["01", "02"]
195
+ files_modified: [src/components/Dashboard.tsx]
196
+ autonomous: false # 有 checkpoint:human-verify
197
+ ```
198
+
199
+ 波次 3 在波次 1 和 2 之后运行。在检查点暂停,编排器呈现给用户,用户批准后恢复。
200
+
201
+ </parallel_examples>
202
+
203
+ ---
204
+
205
+ ## 范围指导
206
+
207
+ **计划大小:**
208
+
209
+ - 每个计划 2-3 个任务
210
+ - 最多 ~50% 上下文使用量
211
+ - 复杂阶段: 多个聚焦的计划,而非一个大计划
212
+
213
+ **何时拆分:**
214
+
215
+ - 不同子系统 (认证 vs API vs UI)
216
+ - >3 个任务
217
+ - 上下文溢出风险
218
+ - TDD 候选,单独计划
219
+
220
+ **优先垂直切片:**
221
+
222
+ ```
223
+ 推荐: 计划 01 = 用户 (模型 + API + UI)
224
+ 计划 02 = 产品 (模型 + API + UI)
225
+
226
+ 避免: 计划 01 = 所有模型
227
+ 计划 02 = 所有 API
228
+ 计划 03 = 所有 UI
229
+ ```
230
+
231
+ ---
232
+
233
+ ## 任务类型
234
+
235
+ | 类型 | 用途 | 自主性 |
236
+ |------|------|--------|
237
+ | `auto` | Claude 能独立完成的一切 | 完全自主 |
238
+ | `checkpoint:human-verify` | 视觉/功能验证 | 暂停,返回编排器 |
239
+ | `checkpoint:decision` | 实现选择 | 暂停,返回编排器 |
240
+ | `checkpoint:human-action` | 真正不可避免的手动步骤 (罕见) | 暂停,返回编排器 |
241
+
242
+ ---
243
+
244
+ ## 指南
245
+
246
+ - 始终使用 XML 结构便于 Claude 解析
247
+ - 每个计划都包含 `wave`, `depends_on`, `files_modified`, `autonomous`
248
+ - 优先垂直切片而非水平分层
249
+ - 仅在确实需要时引用前置 SUMMARY
250
+ - 将检查点与相关自动任务放在同一计划中
251
+ - 每个计划 2-3 个任务,最多 ~50% 上下文
252
+
253
+ ---
254
+
255
+ ## 用户设置 (外部服务)
256
+
257
+ 当计划引入需要人工配置的外部服务时,在 frontmatter 中声明:
258
+
259
+ ```yaml
260
+ user_setup:
261
+ - service: stripe
262
+ why: "支付处理需要 API 密钥"
263
+ env_vars:
264
+ - name: STRIPE_SECRET_KEY
265
+ source: "Stripe 控制台 → Developers → API keys → Secret key"
266
+ - name: STRIPE_WEBHOOK_SECRET
267
+ source: "Stripe 控制台 → Developers → Webhooks → Signing secret"
268
+ dashboard_config:
269
+ - task: "创建 webhook 端点"
270
+ location: "Stripe 控制台 → Developers → Webhooks → Add endpoint"
271
+ details: "URL: https://[your-domain]/api/webhooks/stripe"
272
+ local_dev:
273
+ - "stripe listen --forward-to localhost:3000/api/webhooks/stripe"
274
+ ```
275
+
276
+ **自动化优先原则:** `user_setup` 只包含 Claude 确实无法完成的操作:
277
+ - 账户创建 (需要人工注册)
278
+ - 密钥获取 (需要控制台访问)
279
+ - 控制台配置 (需要人工在浏览器中操作)
280
+
281
+ **不包含:** 包安装、代码修改、文件创建、Claude 能运行的 CLI 命令。
282
+
283
+ **结果:** Execute-plan 生成 `{phase}-USER-SETUP.md` 作为用户的检查清单。
284
+
285
+ 参见 `.opencode/templates/user-setup.md` 获取完整结构和示例
286
+
287
+ ---
288
+
289
+ ## Must-Haves (目标反推验证)
290
+
291
+ `must_haves` 字段定义阶段目标达成必须为真的条件。规划时推导,执行后验证。
292
+
293
+ **结构:**
294
+
295
+ ```yaml
296
+ must_haves:
297
+ truths:
298
+ - "用户可以看到已有消息"
299
+ - "用户可以发送消息"
300
+ - "消息在刷新后持久化"
301
+ artifacts:
302
+ - path: "src/components/Chat.tsx"
303
+ provides: "消息列表渲染"
304
+ min_lines: 30
305
+ - path: "src/app/api/chat/route.ts"
306
+ provides: "消息 CRUD 操作"
307
+ exports: ["GET", "POST"]
308
+ - path: "prisma/schema.prisma"
309
+ provides: "Message 模型"
310
+ contains: "model Message"
311
+ key_links:
312
+ - from: "src/components/Chat.tsx"
313
+ to: "/api/chat"
314
+ via: "useEffect 中的 fetch"
315
+ pattern: "fetch.*api/chat"
316
+ - from: "src/app/api/chat/route.ts"
317
+ to: "prisma.message"
318
+ via: "数据库查询"
319
+ pattern: "prisma\\.message\\.(find|create)"
320
+ ```
321
+
322
+ **为什么重要:**
323
+
324
+ 任务完成 ≠ 目标达成。一个 "创建聊天组件" 的任务可以通过创建占位内容来完成。`must_haves` 字段捕获必须实际工作的内容,使验证能在缺口累积之前发现它们。
325
+
326
+ **验证流程:**
327
+
328
+ 1. Plan-phase 从阶段目标推导 must_haves (目标反推)
329
+ 2. Must_haves 写入 PLAN.md frontmatter
330
+ 3. Execute-phase 运行所有计划
331
+ 4. 验证子代理根据代码库检查 must_haves
332
+ 5. 发现缺口 → 创建修复计划 → 执行 → 重新验证
333
+ 6. 所有 must_haves 通过 → 阶段完成
@@ -0,0 +1,117 @@
1
+ # 规划子代理提示模板
2
+
3
+ 用于生成 specops-planner 代理的模板。代理包含所有规划专业知识,此模板仅提供规划上下文。
4
+
5
+ ---
6
+
7
+ ## 模板
8
+
9
+ ```markdown
10
+ <planning_context>
11
+
12
+ **阶段:** {phase_number}
13
+ **模式:** {standard | gap_closure}
14
+
15
+ **项目状态:**
16
+ @.planning/STATE.md
17
+
18
+ **路线图:**
19
+ @.planning/ROADMAP.md
20
+
21
+ **需求 (如存在):**
22
+ @.planning/REQUIREMENTS.md
23
+
24
+ **阶段上下文 (如存在):**
25
+ @.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
26
+
27
+ **研究 (如存在):**
28
+ @.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
29
+
30
+ **缺口修复 (如 --gaps 模式):**
31
+ @.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md
32
+ @.planning/phases/{phase_dir}/{phase_num}-UAT.md
33
+
34
+ </planning_context>
35
+
36
+ <downstream_consumer>
37
+ 输出由 /specops:execute-phase 消费
38
+ 计划必须是可执行的提示,包含:
39
+ - Frontmatter (wave, depends_on, files_modified, autonomous)
40
+ - XML 格式的任务
41
+ - 验证标准
42
+ - 用于目标反推验证的 must_haves
43
+ </downstream_consumer>
44
+
45
+ <quality_gate>
46
+ 返回 PLANNING COMPLETE 之前:
47
+ - [ ] PLAN.md 文件已在阶段目录中创建
48
+ - [ ] 每个计划有有效的 frontmatter
49
+ - [ ] 任务具体且可操作
50
+ - [ ] 依赖关系正确识别
51
+ - [ ] 已分配波次用于并行执行
52
+ - [ ] must_haves 从阶段目标推导
53
+ </quality_gate>
54
+ ```
55
+
56
+ ---
57
+
58
+ ## 占位符
59
+
60
+ | 占位符 | 来源 | 示例 |
61
+ |--------|------|------|
62
+ | `{phase_number}` | 来自路线图/参数 | `5` 或 `2.1` |
63
+ | `{phase_dir}` | 阶段目录名 | `05-user-profiles` |
64
+ | `{phase}` | 阶段前缀 | `05` |
65
+ | `{standard \| gap_closure}` | 模式标志 | `standard` |
66
+
67
+ ---
68
+
69
+ ## 用法
70
+
71
+ **从 /specops:plan-phase (标准模式):**
72
+ ```python
73
+ Task(
74
+ prompt=filled_template,
75
+ subagent_type="specops-planner",
76
+ description="规划阶段 {phase}"
77
+ )
78
+ ```
79
+
80
+ **从 /specops:plan-phase --gaps (缺口修复模式):**
81
+ ```python
82
+ Task(
83
+ prompt=filled_template, # mode: gap_closure
84
+ subagent_type="specops-planner",
85
+ description="规划阶段 {phase} 的缺口修复"
86
+ )
87
+ ```
88
+
89
+ ---
90
+
91
+ ## 续接
92
+
93
+ 对于检查点,用以下内容生成新代理:
94
+
95
+ ```markdown
96
+ <objective>
97
+ 继续阶段 {phase_number}: {phase_name} 的规划
98
+ </objective>
99
+
100
+ <prior_state>
101
+ 阶段目录: @.planning/phases/{phase_dir}/
102
+ 已有计划: @.planning/phases/{phase_dir}/*-PLAN.md
103
+ </prior_state>
104
+
105
+ <checkpoint_response>
106
+ **类型:** {checkpoint_type}
107
+ **响应:** {user_response}
108
+ </checkpoint_response>
109
+
110
+ <mode>
111
+ 继续: {standard | gap_closure}
112
+ </mode>
113
+ ```
114
+
115
+ ---
116
+
117
+ **注意:** 规划方法论、任务分解、依赖分析、波次分配、TDD 检测和目标反推推导都内置在 specops-planner 代理中。此模板仅传递上下文。
@@ -0,0 +1,184 @@
1
+ # PROJECT.md 模板
2
+
3
+ `.planning/PROJECT.md` 的模板,项目的活上下文文档。
4
+
5
+ <template>
6
+
7
+ ```markdown
8
+ # [项目名称]
9
+
10
+ ## 这是什么
11
+
12
+ [当前准确的描述 — 2-3 句话。这个产品做什么,面向谁?
13
+ 使用用户的语言和表述方式。当现实偏离此描述时更新。]
14
+
15
+ ## 核心价值
16
+
17
+ [最重要的一件事。如果其他一切都失败了,这个必须能用。
18
+ 一句话,在需要权衡时驱动优先级决策。]
19
+
20
+ ## 需求
21
+
22
+ ### 已验证
23
+
24
+ <!-- 已发布并确认有价值的。 -->
25
+
26
+ (暂无 — 发布后验证)
27
+
28
+ ### 活跃
29
+
30
+ <!-- 当前范围。正在朝这些目标构建。 -->
31
+
32
+ - [ ] [需求 1]
33
+ - [ ] [需求 2]
34
+ - [ ] [需求 3]
35
+
36
+ ### 超出范围
37
+
38
+ <!-- 明确的边界。包含理由以防止重新添加。 -->
39
+
40
+ - [排除 1] — [原因]
41
+ - [排除 2] — [原因]
42
+
43
+ ## 背景
44
+
45
+ [影响实现的背景信息:
46
+ - 技术环境或生态系统
47
+ - 相关的前期工作或经验
48
+ - 用户研究或反馈主题
49
+ - 需要解决的已知问题]
50
+
51
+ ## 约束
52
+
53
+ - **[类型]**: [什么] — [为什么]
54
+ - **[类型]**: [什么] — [为什么]
55
+
56
+ 常见类型: 技术栈, 时间线, 预算, 依赖, 兼容性, 性能, 安全
57
+
58
+ ## 关键决策
59
+
60
+ <!-- 约束未来工作的决策。在项目生命周期中持续添加。 -->
61
+
62
+ | 决策 | 理由 | 结果 |
63
+ |------|------|------|
64
+ | [选择] | [为什么] | [✓ 正确 / ⚠️ 需重新考虑 / — 待定] |
65
+
66
+ ---
67
+ *最后更新: [日期] 在 [触发事件] 之后*
68
+ ```
69
+
70
+ </template>
71
+
72
+ <guidelines>
73
+
74
+ **这是什么:**
75
+ - 产品的当前准确描述
76
+ - 2-3 句话说明它做什么、面向谁
77
+ - 使用用户的语言和表述
78
+ - 产品演进超出此描述时更新
79
+
80
+ **核心价值:**
81
+ - 最重要的一件事
82
+ - 其他一切可以失败;这个不行
83
+ - 需要权衡时驱动优先级
84
+ - 很少变化;如果变了,说明是重大转向
85
+
86
+ **需求 — 已验证:**
87
+ - 已发布并证明有价值的需求
88
+ - 格式: `- ✓ [需求] — [版本/阶段]`
89
+ - 这些是锁定的,修改需要明确讨论
90
+
91
+ **需求 — 活跃:**
92
+ - 当前正在构建的范围
93
+ - 这些是假设,直到发布并验证
94
+ - 发布后移到已验证,失效后移到超出范围
95
+
96
+ **需求 — 超出范围:**
97
+ - 明确的边界,说明我们不构建什么
98
+ - 始终包含理由 (防止以后重新添加)
99
+ - 包括: 考虑后拒绝的、延后到未来的、明确排除的
100
+
101
+ **背景:**
102
+ - 影响实现决策的背景信息
103
+ - 技术环境、前期工作、用户反馈
104
+ - 需要解决的已知问题或技术债务
105
+ - 新上下文出现时更新
106
+
107
+ **约束:**
108
+ - 实现选择的硬性限制
109
+ - 技术栈、时间线、预算、兼容性、依赖
110
+ - 包含 "为什么" — 没有理由的约束会被质疑
111
+
112
+ **关键决策:**
113
+ - 影响未来工作的重要选择
114
+ - 在项目过程中做出决策时添加
115
+ - 已知结果时追踪:
116
+ - ✓ 正确 — 决策被证明正确
117
+ - ⚠️ 需重新考虑 — 决策可能需要重新评估
118
+ - — 待定 — 还太早无法评估
119
+
120
+ **最后更新:**
121
+ - 始终记录何时以及为什么更新了文档
122
+ - 格式: `在阶段 2 之后` 或 `在 v1.0 里程碑之后`
123
+ - 触发审查内容是否仍然准确
124
+
125
+ </guidelines>
126
+
127
+ <evolution>
128
+
129
+ PROJECT.md 在项目生命周期中持续演进。
130
+
131
+ **每次阶段转换后:**
132
+ 1. 需求失效了?→ 移到超出范围并附原因
133
+ 2. 需求验证了?→ 移到已验证并附阶段引用
134
+ 3. 出现新需求?→ 添加到活跃
135
+ 4. 需要记录决策?→ 添加到关键决策
136
+ 5. "这是什么" 还准确吗?→ 如有偏差则更新
137
+
138
+ **每个里程碑后:**
139
+ 1. 全面审查所有部分
140
+ 2. 核心价值检查 — 还是正确的优先级吗?
141
+ 3. 审计超出范围 — 理由还成立吗?
142
+ 4. 用当前状态更新背景 (用户、反馈、指标)
143
+
144
+ </evolution>
145
+
146
+ <brownfield>
147
+
148
+ 对于已有代码库:
149
+
150
+ 1. **先映射代码库** 通过 `/specops:map-codebase`
151
+
152
+ 2. **从现有代码推断已验证需求:**
153
+ - 代码库实际做了什么?
154
+ - 建立了什么模式?
155
+ - 什么明显在工作且被依赖?
156
+
157
+ 3. **从用户收集活跃需求:**
158
+ - 展示推断的当前状态
159
+ - 询问他们接下来想构建什么
160
+
161
+ 4. **初始化:**
162
+ - 已验证 = 从现有代码推断
163
+ - 活跃 = 用户本次工作的目标
164
+ - 超出范围 = 用户指定的边界
165
+ - 背景 = 包含当前代码库状态
166
+
167
+ </brownfield>
168
+
169
+ <state_reference>
170
+
171
+ STATE.md 引用 PROJECT.md:
172
+
173
+ ```markdown
174
+ ## 项目引用
175
+
176
+ 参见: .planning/PROJECT.md (更新于 [日期])
177
+
178
+ **核心价值:** [核心价值部分的一句话]
179
+ **当前焦点:** [当前阶段名称]
180
+ ```
181
+
182
+ 这确保 Claude 读取当前的 PROJECT.md 上下文。
183
+
184
+ </state_reference>