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,297 @@
1
+ <purpose>
2
+ 通过汇总阶段验证、检查跨阶段集成和评估需求覆盖率来验证里程碑是否达成其完成定义。读取现有的 VERIFICATION.md 文件(阶段在 execute-phase 期间已验证),汇总技术债务和推迟的缺口,然后生成集成检查器进行跨阶段接线检查。
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ 在开始之前,阅读调用提示的 execution_context 中引用的所有文件。
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ ## 0. 初始化里程碑上下文
12
+
13
+ ```bash
14
+ INIT=$(node .opencode/bin/specops-tools.cjs init milestone-op)
15
+ ```
16
+
17
+ 从初始化 JSON 中提取:`milestone_version`、`milestone_name`、`phase_count`、`completed_phases`、`commit_docs`。
18
+
19
+ 解析集成检查器模型:
20
+ ```bash
21
+ CHECKER_MODEL=$(node .opencode/bin/specops-tools.cjs resolve-model specops-integration-checker --raw)
22
+ ```
23
+
24
+ ## 1. 确定里程碑范围
25
+
26
+ ```bash
27
+ # 获取里程碑中的阶段(按数字排序,处理小数)
28
+ node .opencode/bin/specops-tools.cjs phases list
29
+ ```
30
+
31
+ - 从参数解析版本或从 ROADMAP.md 检测当前版本
32
+ - 识别范围内的所有阶段目录
33
+ - 从 ROADMAP.md 提取里程碑完成定义
34
+ - 从 REQUIREMENTS.md 提取映射到此里程碑的需求
35
+
36
+ ## 2. 读取所有阶段验证
37
+
38
+ 对于每个阶段目录,读取 VERIFICATION.md:
39
+
40
+ ```bash
41
+ # 对于每个阶段,使用 find-phase 解析目录(处理已归档的阶段)
42
+ PHASE_INFO=$(node .opencode/bin/specops-tools.cjs find-phase 01 --raw)
43
+ # 从 JSON 中提取目录,然后从该目录读取 VERIFICATION.md
44
+ # 对 ROADMAP.md 中的每个阶段编号重复此操作
45
+ ```
46
+
47
+ 从每个 VERIFICATION.md 中提取:
48
+ - **状态:** passed | gaps_found
49
+ - **关键缺口:**(如有——这些是阻塞项)
50
+ - **非关键缺口:** 技术债务、推迟项、警告
51
+ - **发现的反模式:** TODO、桩代码、占位符
52
+ - **需求覆盖:** 哪些需求已满足/被阻塞
53
+
54
+ 如果某个阶段缺少 VERIFICATION.md,将其标记为"未验证阶段"——这是阻塞项。
55
+
56
+ ## 3. 生成集成检查器
57
+
58
+ 收集阶段上下文后:
59
+
60
+ 从 REQUIREMENTS.md 追溯表中提取 `MILESTONE_REQ_IDS`——分配给此里程碑各阶段的所有 REQ-ID。
61
+
62
+ ```
63
+ Task(
64
+ prompt="Check cross-phase integration and E2E flows.
65
+
66
+ Phases: {phase_dirs}
67
+ Phase exports: {from SUMMARYs}
68
+ API routes: {routes created}
69
+
70
+ Milestone Requirements:
71
+ {MILESTONE_REQ_IDS — list each REQ-ID with description and assigned phase}
72
+
73
+ MUST map each integration finding to affected requirement IDs where applicable.
74
+
75
+ Verify cross-phase wiring and E2E user flows.",
76
+ subagent_type="specops-integration-checker",
77
+ model="{integration_checker_model}"
78
+ )
79
+ ```
80
+
81
+ ## 4. 收集结果
82
+
83
+ 合并:
84
+ - 阶段级缺口和技术债务(来自步骤 2)
85
+ - 集成检查器的报告(接线缺口、中断的流程)
86
+
87
+ ## 5. 检查需求覆盖(3 源交叉引用)
88
+
89
+ 必须对每个需求交叉引用三个独立来源:
90
+
91
+ ### 5a. 解析 REQUIREMENTS.md 追溯表
92
+
93
+ 从追溯表中提取映射到里程碑阶段的所有 REQ-ID:
94
+ - 需求 ID、描述、分配阶段、当前状态、勾选状态(`[x]` vs `[ ]`)
95
+
96
+ ### 5b. 解析阶段 VERIFICATION.md 需求表
97
+
98
+ 对于每个阶段的 VERIFICATION.md,提取展开的需求表:
99
+ - 需求 | 来源计划 | 描述 | 状态 | 证据
100
+ - 将每个条目映射回其 REQ-ID
101
+
102
+ ### 5c. 提取 SUMMARY.md Frontmatter 交叉检查
103
+
104
+ 对于每个阶段的 SUMMARY.md,从 YAML frontmatter 中提取 `requirements-completed`:
105
+ ```bash
106
+ for summary in .planning/phases/*-*/*-SUMMARY.md; do
107
+ node .opencode/bin/specops-tools.cjs summary-extract "$summary" --fields requirements_completed | jq -r '.requirements_completed'
108
+ done
109
+ ```
110
+
111
+ ### 5d. 状态判定矩阵
112
+
113
+ 对于每个 REQ-ID,使用所有三个来源确定状态:
114
+
115
+ | VERIFICATION.md 状态 | SUMMARY Frontmatter | REQUIREMENTS.md | → 最终状态 |
116
+ |---------------------|---------------------|-----------------|-----------|
117
+ | passed | 已列出 | `[x]` | **已满足** |
118
+ | passed | 已列出 | `[ ]` | **已满足**(更新复选框)|
119
+ | passed | 缺失 | 任意 | **部分**(手动验证)|
120
+ | gaps_found | 任意 | 任意 | **未满足** |
121
+ | 缺失 | 已列出 | 任意 | **部分**(验证缺口)|
122
+ | 缺失 | 缺失 | 任意 | **未满足** |
123
+
124
+ ### 5e. 失败门控和孤立检测
125
+
126
+ **必需:** 任何 `未满足` 的需求必须强制里程碑审计状态为 `gaps_found`。
127
+
128
+ **孤立检测:** 存在于 REQUIREMENTS.md 追溯表中但在所有阶段 VERIFICATION.md 文件中都不存在的需求必须标记为孤立。孤立需求视为 `未满足`——它们被分配了但从未被任何阶段验证。
129
+
130
+ ## 6. 汇总到 v{version}-MILESTONE-AUDIT.md
131
+
132
+ 创建 `.planning/v{version}-v{version}-MILESTONE-AUDIT.md`:
133
+
134
+ ```yaml
135
+ ---
136
+ milestone: {version}
137
+ audited: {timestamp}
138
+ status: passed | gaps_found | tech_debt
139
+ scores:
140
+ requirements: N/M
141
+ phases: N/M
142
+ integration: N/M
143
+ flows: N/M
144
+ gaps: # 关键阻塞项
145
+ requirements:
146
+ - id: "{REQ-ID}"
147
+ status: "unsatisfied | partial | orphaned"
148
+ phase: "{assigned phase}"
149
+ claimed_by_plans: ["{引用此需求的计划文件}"]
150
+ completed_by_plans: ["{SUMMARY 标记为完成的计划文件}"]
151
+ verification_status: "passed | gaps_found | missing | orphaned"
152
+ evidence: "{具体证据或缺乏证据}"
153
+ integration: [...]
154
+ flows: [...]
155
+ tech_debt: # 非关键,已推迟
156
+ - phase: 01-auth
157
+ items:
158
+ - "TODO: add rate limiting"
159
+ - "Warning: no password strength validation"
160
+ - phase: 03-dashboard
161
+ items:
162
+ - "Deferred: mobile responsive layout"
163
+ ---
164
+ ```
165
+
166
+ 加上完整的 markdown 报告,包含需求、阶段、集成、技术债务的表格。
167
+
168
+ **状态值:**
169
+ - `passed` — 所有需求已满足,无关键缺口,技术债务最少
170
+ - `gaps_found` — 存在关键阻塞项
171
+ - `tech_debt` — 无阻塞项但有累积的推迟项需要审查
172
+
173
+ ## 7. 展示结果
174
+
175
+ 根据状态路由(参见 `<offer_next>`)。
176
+
177
+ </process>
178
+
179
+ <offer_next>
180
+ 直接输出此 markdown(不作为代码块)。根据状态路由:
181
+
182
+ ---
183
+
184
+ **如果 passed:**
185
+
186
+ ## ✓ 里程碑 {version} — 审计通过
187
+
188
+ **评分:** {N}/{M} 需求已满足
189
+ **报告:** .planning/v{version}-MILESTONE-AUDIT.md
190
+
191
+ 所有需求已覆盖。跨阶段集成已验证。端到端流程完整。
192
+
193
+ ───────────────────────────────────────────────────────────────
194
+
195
+ ## ▶ 下一步
196
+
197
+ **完成里程碑** — 归档并打标签
198
+
199
+ /specops:complete-milestone {version}
200
+
201
+ <sub>先 /clear → 全新上下文窗口</sub>
202
+
203
+ ───────────────────────────────────────────────────────────────
204
+
205
+ ---
206
+
207
+ **如果 gaps_found:**
208
+
209
+ ## ⚠ 里程碑 {version} — 发现缺口
210
+
211
+ **评分:** {N}/{M} 需求已满足
212
+ **报告:** .planning/v{version}-MILESTONE-AUDIT.md
213
+
214
+ ### 未满足的需求
215
+
216
+ {对于每个未满足的需求:}
217
+ - **{REQ-ID}:{描述}**(阶段 {X})
218
+ - {原因}
219
+
220
+ ### 跨阶段问题
221
+
222
+ {对于每个集成缺口:}
223
+ - **{from} → {to}:** {问题}
224
+
225
+ ### 中断的流程
226
+
227
+ {对于每个流程缺口:}
228
+ - **{流程名称}:** 在 {步骤} 处中断
229
+
230
+ ───────────────────────────────────────────────────────────────
231
+
232
+ ## ▶ 下一步
233
+
234
+ **规划缺口修复** — 创建阶段以完成里程碑
235
+
236
+ /specops:plan-milestone-gaps
237
+
238
+ <sub>先 /clear → 全新上下文窗口</sub>
239
+
240
+ ───────────────────────────────────────────────────────────────
241
+
242
+ **其他可用操作:**
243
+ - cat .planning/v{version}-MILESTONE-AUDIT.md — 查看完整报告
244
+ - /specops:complete-milestone {version} — 仍然继续(接受技术债务)
245
+
246
+ ───────────────────────────────────────────────────────────────
247
+
248
+ ---
249
+
250
+ **如果 tech_debt(无阻塞项但有累积债务):**
251
+
252
+ ## ⚡ 里程碑 {version} — 技术债务审查
253
+
254
+ **评分:** {N}/{M} 需求已满足
255
+ **报告:** .planning/v{version}-MILESTONE-AUDIT.md
256
+
257
+ 所有需求已满足。无关键阻塞项。累积的技术债务需要审查。
258
+
259
+ ### 按阶段的技术债务
260
+
261
+ {对于每个有债务的阶段:}
262
+ **阶段 {X}:{名称}**
263
+ - {项目 1}
264
+ - {项目 2}
265
+
266
+ ### 总计:{N} 项,跨 {M} 个阶段
267
+
268
+ ───────────────────────────────────────────────────────────────
269
+
270
+ ## ▶ 选项
271
+
272
+ **A. 完成里程碑** — 接受债务,记入待办
273
+
274
+ /specops:complete-milestone {version}
275
+
276
+ **B. 规划清理阶段** — 在完成前处理债务
277
+
278
+ /specops:plan-milestone-gaps
279
+
280
+ <sub>先 /clear → 全新上下文窗口</sub>
281
+
282
+ ───────────────────────────────────────────────────────────────
283
+ </offer_next>
284
+
285
+ <success_criteria>
286
+ - [ ] 已识别里程碑范围
287
+ - [ ] 已读取所有阶段 VERIFICATION.md 文件
288
+ - [ ] 已提取每个阶段 SUMMARY.md 的 `requirements-completed` frontmatter
289
+ - [ ] 已解析 REQUIREMENTS.md 追溯表中所有里程碑 REQ-ID
290
+ - [ ] 已完成 3 源交叉引用(VERIFICATION + SUMMARY + 追溯表)
291
+ - [ ] 已检测孤立需求(在追溯表中但在所有 VERIFICATION 中都不存在)
292
+ - [ ] 已汇总技术债务和推迟的缺口
293
+ - [ ] 已生成带里程碑需求 ID 的集成检查器
294
+ - [ ] 已创建包含结构化需求缺口对象的 v{version}-MILESTONE-AUDIT.md
295
+ - [ ] 已执行失败门控——任何未满足的需求强制 gaps_found 状态
296
+ - [ ] 已展示带可操作后续步骤的结果
297
+ </success_criteria>
@@ -0,0 +1,176 @@
1
+ <purpose>
2
+ 列出所有待处理的待办事项,允许选择,加载所选待办事项的完整上下文,并路由到适当的操作。
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ 在开始之前,阅读调用提示的 execution_context 中引用的所有文件。
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="init_context">
12
+ 加载待办事项上下文:
13
+
14
+ ```bash
15
+ INIT=$(node .opencode/bin/specops-tools.cjs init todos)
16
+ ```
17
+
18
+ 从 init JSON 中提取:`todo_count`、`todos`、`pending_dir`。
19
+
20
+ 如果 `todo_count` 为 0:
21
+ ```
22
+ No pending todos.
23
+
24
+ Todos are captured during work sessions with /specops:add-todo.
25
+
26
+ ---
27
+
28
+ Would you like to:
29
+
30
+ 1. Continue with current phase (/specops:progress)
31
+ 2. Add a todo now (/specops:add-todo)
32
+ ```
33
+
34
+ 退出。
35
+ </step>
36
+
37
+ <step name="parse_filter">
38
+ 检查参数中的领域过滤器:
39
+ - `/specops:check-todos` → 显示全部
40
+ - `/specops:check-todos api` → 仅过滤 area:api
41
+ </step>
42
+
43
+ <step name="list_todos">
44
+ 使用 init 上下文中的 `todos` 数组(如果指定了领域则已过滤)。
45
+
46
+ 解析并显示为编号列表:
47
+
48
+ ```
49
+ Pending Todos:
50
+
51
+ 1. Add auth token refresh (api, 2d ago)
52
+ 2. Fix modal z-index issue (ui, 1d ago)
53
+ 3. Refactor database connection pool (database, 5h ago)
54
+
55
+ ---
56
+
57
+ Reply with a number to view details, or:
58
+ - `/specops:check-todos [area]` to filter by area
59
+ - `q` to exit
60
+ ```
61
+
62
+ 将创建时间戳格式化为相对时间。
63
+ </step>
64
+
65
+ <step name="handle_selection">
66
+ 等待用户回复编号。
67
+
68
+ 如果有效:加载所选待办事项,继续。
69
+ 如果无效:"Invalid selection. Reply with a number (1-[N]) or `q` to exit."
70
+ </step>
71
+
72
+ <step name="load_context">
73
+ 完整读取待办事项文件。显示:
74
+
75
+ ```
76
+ ## [title]
77
+
78
+ **Area:** [area]
79
+ **Created:** [date] ([relative time] ago)
80
+ **Files:** [list or "None"]
81
+
82
+ ### Problem
83
+ [problem section content]
84
+
85
+ ### Solution
86
+ [solution section content]
87
+ ```
88
+
89
+ 如果 `files` 字段有条目,读取并简要总结每个文件。
90
+ </step>
91
+
92
+ <step name="check_roadmap">
93
+ 检查路线图(可使用 init progress 或直接检查文件是否存在):
94
+
95
+ 如果 `.planning/ROADMAP.md` 存在:
96
+ 1. 检查待办事项的领域是否匹配即将到来的阶段
97
+ 2. 检查待办事项的文件是否与某个阶段的范围重叠
98
+ 3. 记录任何匹配以用于操作选项
99
+ </step>
100
+
101
+ <step name="offer_actions">
102
+ **如果待办事项映射到路线图阶段:**
103
+
104
+ 使用 AskUserQuestion:
105
+ - header:"Action"
106
+ - question:"此待办事项与 Phase [N]: [name] 相关。你想怎么做?"
107
+ - options:
108
+ - "Work on it now" — 移至已完成,开始工作
109
+ - "Add to phase plan" — 在规划 Phase [N] 时包含
110
+ - "Brainstorm approach" — 在决定前先思考方案
111
+ - "Put it back" — 返回列表
112
+
113
+ **如果没有路线图匹配:**
114
+
115
+ 使用 AskUserQuestion:
116
+ - header:"Action"
117
+ - question:"你想对这个待办事项做什么?"
118
+ - options:
119
+ - "Work on it now" — 移至已完成,开始工作
120
+ - "Create a phase" — 使用此范围执行 /specops:add-phase
121
+ - "Brainstorm approach" — 在决定前先思考方案
122
+ - "Put it back" — 返回列表
123
+ </step>
124
+
125
+ <step name="execute_action">
126
+ **Work on it now:**
127
+ ```bash
128
+ mv ".planning/todos/pending/[filename]" ".planning/todos/done/"
129
+ ```
130
+ 更新 STATE.md 待办事项计数。展示问题/解决方案上下文。开始工作或询问如何继续。
131
+
132
+ **Add to phase plan:**
133
+ 在阶段规划备注中记录待办事项引用。保持在 pending 中。返回列表或退出。
134
+
135
+ **Create a phase:**
136
+ 显示:`/specops:add-phase [description from todo]`
137
+ 保持在 pending 中。用户在新的上下文中运行命令。
138
+
139
+ **Brainstorm approach:**
140
+ 保持在 pending 中。开始讨论问题和方案。
141
+
142
+ **Put it back:**
143
+ 返回 list_todos 步骤。
144
+ </step>
145
+
146
+ <step name="update_state">
147
+ 在任何改变待办事项计数的操作之后:
148
+
149
+ 重新运行 `init todos` 获取更新后的计数,然后更新 STATE.md 中的 "### Pending Todos" 部分(如果存在)。
150
+ </step>
151
+
152
+ <step name="git_commit">
153
+ 如果待办事项被移至 done/,提交更改:
154
+
155
+ ```bash
156
+ git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
157
+ node .opencode/bin/specops-tools.cjs commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
158
+ ```
159
+
160
+ 工具会自动遵循 `commit_docs` 配置和 gitignore。
161
+
162
+ 确认:"Committed: docs: start work on todo - [title]"
163
+ </step>
164
+
165
+ </process>
166
+
167
+ <success_criteria>
168
+ - [ ] 所有待处理的待办事项已列出,包含标题、领域、时间
169
+ - [ ] 已应用领域过滤器(如果指定)
170
+ - [ ] 所选待办事项的完整上下文已加载
171
+ - [ ] 已检查路线图上下文以匹配阶段
172
+ - [ ] 已提供适当的操作选项
173
+ - [ ] 所选操作已执行
174
+ - [ ] STATE.md 已更新(如果待办事项计数变化)
175
+ - [ ] 更改已提交到 git(如果待办事项移至 done/)
176
+ </success_criteria>
@@ -0,0 +1,152 @@
1
+ <purpose>
2
+
3
+ 将已完成里程碑的阶段目录归档到 `.planning/milestones/v{X.Y}-phases/`。识别哪些阶段属于每个已完成的里程碑,显示预览摘要,确认后移动目录。
4
+
5
+ </purpose>
6
+
7
+ <required_reading>
8
+
9
+ 1. `.planning/MILESTONES.md`
10
+ 2. `.planning/milestones/` 目录列表
11
+ 3. `.planning/phases/` 目录列表
12
+
13
+ </required_reading>
14
+
15
+ <process>
16
+
17
+ <step name="identify_completed_milestones">
18
+
19
+ 读取 `.planning/MILESTONES.md` 以识别已完成的里程碑及其版本。
20
+
21
+ ```bash
22
+ cat .planning/MILESTONES.md
23
+ ```
24
+
25
+ 提取每个里程碑版本(例如 v1.0、v1.1、v2.0)。
26
+
27
+ 检查哪些里程碑归档目录已存在:
28
+
29
+ ```bash
30
+ ls -d .planning/milestones/v*-phases 2>/dev/null
31
+ ```
32
+
33
+ 过滤出尚未拥有 `-phases` 归档目录的里程碑。
34
+
35
+ 如果所有里程碑都已有阶段归档:
36
+
37
+ ```
38
+ 所有已完成的里程碑都已归档阶段目录。无需清理。
39
+ ```
40
+
41
+ 在此停止。
42
+
43
+ </step>
44
+
45
+ <step name="determine_phase_membership">
46
+
47
+ 对于每个没有 `-phases` 归档的已完成里程碑,读取归档的 ROADMAP 快照以确定哪些阶段属于它:
48
+
49
+ ```bash
50
+ cat .planning/milestones/v{X.Y}-ROADMAP.md
51
+ ```
52
+
53
+ 从归档路线图中提取阶段编号和名称(例如 Phase 1: Foundation, Phase 2: Auth)。
54
+
55
+ 检查这些阶段目录中哪些仍存在于 `.planning/phases/` 中:
56
+
57
+ ```bash
58
+ ls -d .planning/phases/*/ 2>/dev/null
59
+ ```
60
+
61
+ 将阶段目录与里程碑归属进行匹配。仅包含仍存在于 `.planning/phases/` 中的目录。
62
+
63
+ </step>
64
+
65
+ <step name="show_dry_run">
66
+
67
+ 为每个里程碑展示预览摘要:
68
+
69
+ ```
70
+ ## 清理摘要
71
+
72
+ ### v{X.Y} — {Milestone Name}
73
+ 以下阶段目录将被归档:
74
+ - 01-foundation/
75
+ - 02-auth/
76
+ - 03-core-features/
77
+
78
+ 目标位置:.planning/milestones/v{X.Y}-phases/
79
+
80
+ ### v{X.Z} — {Milestone Name}
81
+ 以下阶段目录将被归档:
82
+ - 04-security/
83
+ - 05-hardening/
84
+
85
+ 目标位置:.planning/milestones/v{X.Z}-phases/
86
+ ```
87
+
88
+ 如果没有剩余的阶段目录需要归档(全部已移动或删除):
89
+
90
+ ```
91
+ 未找到需要归档的阶段目录。阶段可能已被移除或先前已归档。
92
+ ```
93
+
94
+ 在此停止。
95
+
96
+ AskUserQuestion:"是否继续归档?"选项:"是 — 归档列出的阶段" | "取消"
97
+
98
+ 如果选择"取消":停止。
99
+
100
+ </step>
101
+
102
+ <step name="archive_phases">
103
+
104
+ 对于每个里程碑,移动阶段目录:
105
+
106
+ ```bash
107
+ mkdir -p .planning/milestones/v{X.Y}-phases
108
+ ```
109
+
110
+ 对于属于该里程碑的每个阶段目录:
111
+
112
+ ```bash
113
+ mv .planning/phases/{dir} .planning/milestones/v{X.Y}-phases/
114
+ ```
115
+
116
+ 对清理集中的所有里程碑重复此操作。
117
+
118
+ </step>
119
+
120
+ <step name="commit">
121
+
122
+ 提交更改:
123
+
124
+ ```bash
125
+ node .opencode/bin/specops-tools.cjs commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
126
+ ```
127
+
128
+ </step>
129
+
130
+ <step name="report">
131
+
132
+ ```
133
+ 已归档:
134
+ {对于每个里程碑}
135
+ - v{X.Y}: {N} phase directories → .planning/milestones/v{X.Y}-phases/
136
+
137
+ .planning/phases/ 已清理。
138
+ ```
139
+
140
+ </step>
141
+
142
+ </process>
143
+
144
+ <success_criteria>
145
+
146
+ - [ ] 已识别所有没有现有阶段归档的已完成里程碑
147
+ - [ ] 已从归档的 ROADMAP 快照确定阶段归属
148
+ - [ ] 已显示预览摘要并获得用户确认
149
+ - [ ] 阶段目录已移动到 `.planning/milestones/v{X.Y}-phases/`
150
+ - [ ] 更改已提交
151
+
152
+ </success_criteria>