@namewta/speculo 0.1.20 → 0.2.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 (275) hide show
  1. package/README.md +68 -78
  2. package/dist/src/cli.js +57 -34
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.d.ts +1 -3
  5. package/dist/src/index.js +128 -168
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/migrate.d.ts +38 -0
  8. package/dist/src/migrate.js +646 -0
  9. package/dist/src/migrate.js.map +1 -0
  10. package/dist/src/workflows.d.ts +7 -37
  11. package/dist/src/workflows.js +49 -123
  12. package/dist/src/workflows.js.map +1 -1
  13. package/package.json +6 -4
  14. package/template/.speculo/README.md +20 -0
  15. package/template/.speculo/workspace.json +12 -0
  16. package/template/commands/docs-sync.md +28 -0
  17. package/template/commands/finalize.md +37 -0
  18. package/template/commands/knowledge-prune.md +20 -0
  19. package/template/commands/retro.md +15 -8
  20. package/template/commands/status.md +8 -51
  21. package/template/skills/agents-md-builder/SKILL.md +14 -101
  22. package/template/skills/change-lifecycle/SKILL.md +25 -0
  23. package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-summary-template.md +2 -2
  24. package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-verification-template.md +1 -1
  25. package/template/skills/change-lifecycle/references/completion-gate.md +19 -0
  26. package/template/skills/change-lifecycle/references/finalize-archive.md +32 -0
  27. package/template/skills/docs-sync/SKILL.md +22 -0
  28. package/template/skills/docs-sync/assets/report-template.md +45 -0
  29. package/template/skills/docs-sync/assets/state-template.json +20 -0
  30. package/template/skills/docs-sync/assets/workflow-scope-template.json +9 -0
  31. package/template/skills/docs-sync/references/agents-contract.md +43 -0
  32. package/template/skills/docs-sync/references/changelog-contract.md +39 -0
  33. package/template/skills/docs-sync/references/document-lifecycle-contract.md +38 -0
  34. package/template/skills/docs-sync/references/git-state-contract.md +67 -0
  35. package/template/skills/docs-sync/references/readme-contract.md +44 -0
  36. package/template/skills/docs-sync/references/workflow-scope-contract.md +50 -0
  37. package/template/skills/github-npm-ops/SKILL.md +14 -39
  38. package/template/skills/github-npm-ops/references/failure-recovery.md +3 -3
  39. package/template/skills/github-npm-ops/references/issue-pr-triage.md +1 -1
  40. package/template/skills/github-npm-ops/references/preflight-checklist.md +4 -4
  41. package/template/skills/github-npm-ops/references/release-notes-injection.md +1 -1
  42. package/template/skills/github-npm-ops/references/release-pipeline.md +13 -13
  43. package/template/skills/github-npm-ops/references/version-bump-flow.md +3 -3
  44. package/template/skills/knowledge-prune/SKILL.md +29 -0
  45. package/template/skills/knowledge-prune/references/audit-rules.md +24 -0
  46. package/template/skills/runtime-context/SKILL.md +43 -0
  47. package/template/skills/runtime-context/references/path-resolution.md +32 -0
  48. package/template/skills/speculo-retro/SKILL.md +13 -37
  49. package/template/skills/speculo-retro/references/friction-taxonomy.md +3 -3
  50. package/template/skills/speculo-retro/references/issue-drafting-sop.md +3 -3
  51. package/template/skills/worktree-isolation/SKILL.md +10 -46
  52. package/template/skills/worktree-isolation/references/audit-branch-tree.md +2 -2
  53. package/template/skills/worktree-isolation/references/create-worktree.md +6 -6
  54. package/template/skills/worktree-isolation/references/merge-and-cleanup.md +5 -5
  55. package/template/vendor/README.md +11 -10
  56. package/template/vendor/matt-pocock/README.md +41 -0
  57. package/template/vendor/matt-pocock/engineering/README.md +28 -0
  58. package/template/vendor/matt-pocock/engineering/ask-matt/SKILL.md +76 -0
  59. package/template/vendor/matt-pocock/engineering/code-review/SKILL.md +89 -0
  60. package/template/vendor/matt-pocock/engineering/codebase-design/DEEPENING.md +37 -0
  61. package/template/vendor/matt-pocock/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
  62. package/template/vendor/matt-pocock/engineering/codebase-design/SKILL.md +114 -0
  63. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/SKILL.md +134 -0
  64. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  65. package/template/vendor/matt-pocock/engineering/domain-modeling/ADR-FORMAT.md +47 -0
  66. package/template/vendor/matt-pocock/engineering/domain-modeling/CONTEXT-FORMAT.md +60 -0
  67. package/template/vendor/matt-pocock/engineering/domain-modeling/SKILL.md +74 -0
  68. package/template/vendor/matt-pocock/engineering/grill-with-docs/SKILL.md +7 -0
  69. package/template/vendor/matt-pocock/engineering/implement/SKILL.md +15 -0
  70. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
  71. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/SKILL.md +66 -0
  72. package/template/vendor/matt-pocock/engineering/prototype/LOGIC.md +79 -0
  73. package/template/vendor/matt-pocock/engineering/prototype/SKILL.md +30 -0
  74. package/template/vendor/matt-pocock/engineering/prototype/UI.md +112 -0
  75. package/template/vendor/matt-pocock/engineering/research/SKILL.md +12 -0
  76. package/template/vendor/matt-pocock/engineering/resolving-merge-conflicts/SKILL.md +14 -0
  77. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/SKILL.md +127 -0
  78. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/domain.md +51 -0
  79. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  80. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  81. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  82. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
  83. package/template/vendor/matt-pocock/engineering/tdd/SKILL.md +36 -0
  84. package/template/vendor/matt-pocock/engineering/tdd/mocking.md +59 -0
  85. package/template/vendor/matt-pocock/engineering/tdd/tests.md +77 -0
  86. package/template/vendor/matt-pocock/engineering/to-spec/SKILL.md +75 -0
  87. package/template/vendor/matt-pocock/engineering/to-tickets/SKILL.md +113 -0
  88. package/template/vendor/matt-pocock/engineering/triage/AGENT-BRIEF.md +204 -0
  89. package/template/vendor/matt-pocock/engineering/triage/OUT-OF-SCOPE.md +104 -0
  90. package/template/vendor/matt-pocock/engineering/triage/SKILL.md +112 -0
  91. package/template/vendor/matt-pocock/engineering/wayfinder/SKILL.md +127 -0
  92. package/template/vendor/matt-pocock/in-progress/README.md +10 -0
  93. package/template/vendor/matt-pocock/in-progress/claude-handoff/SKILL.md +18 -0
  94. package/template/vendor/matt-pocock/in-progress/loop-me/SKILL.md +32 -0
  95. package/template/vendor/matt-pocock/in-progress/wizard/SKILL.md +45 -0
  96. package/template/vendor/matt-pocock/in-progress/wizard/template.sh +211 -0
  97. package/template/vendor/matt-pocock/in-progress/writing-beats/SKILL.md +67 -0
  98. package/template/vendor/matt-pocock/in-progress/writing-fragments/SKILL.md +78 -0
  99. package/template/vendor/matt-pocock/in-progress/writing-shape/SKILL.md +79 -0
  100. package/template/vendor/matt-pocock/productivity/README.md +18 -0
  101. package/template/vendor/matt-pocock/productivity/grill-me/SKILL.md +7 -0
  102. package/template/vendor/matt-pocock/productivity/grilling/SKILL.md +12 -0
  103. package/template/vendor/matt-pocock/productivity/handoff/SKILL.md +16 -0
  104. package/template/vendor/matt-pocock/productivity/teach/GLOSSARY-FORMAT.md +35 -0
  105. package/template/vendor/matt-pocock/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
  106. package/template/vendor/matt-pocock/productivity/teach/MISSION-FORMAT.md +31 -0
  107. package/template/vendor/matt-pocock/productivity/teach/RESOURCES-FORMAT.md +32 -0
  108. package/template/vendor/matt-pocock/productivity/teach/SKILL.md +140 -0
  109. package/template/vendor/matt-pocock/productivity/writing-great-skills/GLOSSARY.md +201 -0
  110. package/template/vendor/matt-pocock/productivity/writing-great-skills/SKILL.md +83 -0
  111. package/template/workflows/matt-pocock/WORKFLOW.md +145 -0
  112. package/template/workflows/matt-pocock/_state/status.json +5 -0
  113. package/template/workflows/matt-pocock/routes/architecture.md +24 -0
  114. package/template/workflows/matt-pocock/routes/diagnose.md +22 -0
  115. package/template/workflows/matt-pocock/routes/experimental.md +18 -0
  116. package/template/workflows/matt-pocock/routes/idea-to-delivery.md +63 -0
  117. package/template/workflows/matt-pocock/routes/merge-conflicts.md +19 -0
  118. package/template/workflows/matt-pocock/routes/productivity.md +25 -0
  119. package/template/workflows/matt-pocock/routes/research-prototype.md +20 -0
  120. package/template/workflows/matt-pocock/routes/review.md +19 -0
  121. package/template/workflows/matt-pocock/routes/setup.md +42 -0
  122. package/template/workflows/matt-pocock/routes/triage.md +25 -0
  123. package/template/workflows/matt-pocock/routes/wayfinder.md +27 -0
  124. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +74 -185
  125. package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +3 -2
  126. package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +12 -238
  127. package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +6 -5
  128. package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +5 -63
  129. package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +7 -54
  130. package/template/workflows/person/M-mao-zedong-cognitive-os/references/research/15-quote-bank.md +10 -10
  131. package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +6 -72
  132. package/template/workflows/person/WORKFLOW.md +68 -0
  133. package/template/workflows/person/_state/.config/LESSONS.md +3 -0
  134. package/template/workflows/person/_state/.config/RULES.md +3 -0
  135. package/template/workflows/person/_state/changes/.gitkeep +1 -0
  136. package/template/workflows/person/_state/status.json +5 -0
  137. package/template/.speculo/.config/LESSONS.md +0 -9
  138. package/template/.speculo/.config/RULES.md +0 -11
  139. package/template/.speculo/AGENTS.md +0 -30
  140. package/template/.speculo/archive/AGENTS.md +0 -28
  141. package/template/.speculo/archive/dev/.gitkeep +0 -0
  142. package/template/.speculo/archive/person/.gitkeep +0 -0
  143. package/template/.speculo/dev/.gitkeep +0 -0
  144. package/template/.speculo/dev/docs-sync-state.json +0 -14
  145. package/template/.speculo/dev-status.json +0 -3
  146. package/template/.speculo/doc-status.json +0 -3
  147. package/template/.speculo/person/.gitkeep +0 -0
  148. package/template/.speculo/person-status.json +0 -1
  149. package/template/commands/archive.md +0 -68
  150. package/template/commands/caveman.md +0 -50
  151. package/template/commands/config-prune.md +0 -59
  152. package/template/commands/grill-me.md +0 -48
  153. package/template/commands/handoff.md +0 -59
  154. package/template/commands/scaffold-exercises.md +0 -56
  155. package/template/commands/write-a-skill.md +0 -52
  156. package/template/skills/caveman/SKILL.md +0 -38
  157. package/template/skills/caveman/references/compression-rules.md +0 -102
  158. package/template/skills/config-prune/SKILL.md +0 -66
  159. package/template/skills/grill-me/SKILL.md +0 -40
  160. package/template/skills/handoff/SKILL.md +0 -50
  161. package/template/skills/scaffold-exercises/SKILL.md +0 -41
  162. package/template/skills/scaffold-exercises/references/exercise-structure.md +0 -85
  163. package/template/skills/scaffold-exercises/references/lint-and-git.md +0 -54
  164. package/template/skills/speculo-write/SKILL.md +0 -56
  165. package/template/skills/speculo-write/references/asset-selection-sop.md +0 -67
  166. package/template/skills/speculo-write/references/authoring-quality-levers.md +0 -61
  167. package/template/skills/speculo-write/references/command-authoring-sop.md +0 -98
  168. package/template/skills/speculo-write/references/migration-sop.md +0 -101
  169. package/template/skills/speculo-write/references/persistence-contract-sop.md +0 -192
  170. package/template/skills/speculo-write/references/skill-authoring-sop.md +0 -212
  171. package/template/skills/speculo-write/references/validation-checklist.md +0 -85
  172. package/template/skills/speculo-write/references/workflow-authoring-sop.md +0 -132
  173. package/template/vendor/codebase-design/DEEPENING.md +0 -37
  174. package/template/vendor/codebase-design/DESIGN-IT-TWICE.md +0 -44
  175. package/template/vendor/codebase-design/SKILL.md +0 -114
  176. package/template/vendor/officecli/SKILL.md +0 -415
  177. package/template/vendor/resolving-merge-conflicts/SKILL.md +0 -14
  178. package/template/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +0 -107
  179. package/template/workflows/dev/01-grill-with-docs/grill-context-scan.md +0 -30
  180. package/template/workflows/dev/01-grill-with-docs/grill-decision.md +0 -38
  181. package/template/workflows/dev/02-prd/02-prd.md +0 -70
  182. package/template/workflows/dev/02-prd/prd-synthesis.md +0 -30
  183. package/template/workflows/dev/02-prd/prd-zoom-out.md +0 -29
  184. package/template/workflows/dev/03-tdd/03-tdd.md +0 -158
  185. package/template/workflows/dev/03-tdd/mocking.md +0 -43
  186. package/template/workflows/dev/03-tdd/refactoring.md +0 -10
  187. package/template/workflows/dev/03-tdd/tdd-finish.md +0 -34
  188. package/template/workflows/dev/03-tdd/tdd-loop.md +0 -36
  189. package/template/workflows/dev/03-tdd/tdd-plan.md +0 -37
  190. package/template/workflows/dev/03-tdd/tests.md +0 -61
  191. package/template/workflows/dev/04-finalize/04-finalize.md +0 -137
  192. package/template/workflows/dev/04-finalize/completion-gate.md +0 -41
  193. package/template/workflows/dev/04-finalize/finalize-archive.md +0 -55
  194. package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +0 -143
  195. package/template/workflows/dev/A-improve-architecture/HTML-REPORT.md +0 -123
  196. package/template/workflows/dev/AGENTS.md +0 -87
  197. package/template/workflows/dev/D-docs-sync/D-docs-sync.md +0 -127
  198. package/template/workflows/dev/D-docs-sync/agents-contract.md +0 -95
  199. package/template/workflows/dev/D-docs-sync/changelog-contract.md +0 -155
  200. package/template/workflows/dev/D-docs-sync/config-contract.md +0 -75
  201. package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +0 -86
  202. package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +0 -37
  203. package/template/workflows/dev/D-docs-sync/docs-sync-state.md +0 -47
  204. package/template/workflows/dev/D-docs-sync/docs-sync-update.md +0 -44
  205. package/template/workflows/dev/D-docs-sync/knowledge-extract.md +0 -66
  206. package/template/workflows/dev/D-docs-sync/readme-contract.md +0 -124
  207. package/template/workflows/dev/D-docs-sync/state-json-schema.md +0 -172
  208. package/template/workflows/dev/H-diagnose/H-diagnose.md +0 -119
  209. package/template/workflows/dev/H-diagnose/diagnose-fix.md +0 -34
  210. package/template/workflows/dev/H-diagnose/diagnose-guide.md +0 -144
  211. package/template/workflows/dev/H-diagnose/diagnose-loop.md +0 -41
  212. package/template/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +0 -41
  213. package/template/workflows/dev/I-to-issues/I-to-issues.md +0 -140
  214. package/template/workflows/dev/I-to-issues/issues-slices.md +0 -211
  215. package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +0 -74
  216. package/template/workflows/dev/M-domain-modeling/CONTEXT-FORMAT.md +0 -67
  217. package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +0 -118
  218. package/template/workflows/dev/R-review/R-review.md +0 -163
  219. package/template/workflows/dev/R-review/code-quality-checklist.md +0 -118
  220. package/template/workflows/dev/R-review/removal-checklist.md +0 -53
  221. package/template/workflows/dev/R-review/review-axes.md +0 -61
  222. package/template/workflows/dev/R-review/review-setup.md +0 -73
  223. package/template/workflows/dev/R-review/review-verdict.md +0 -43
  224. package/template/workflows/dev/R-review/security-checklist.md +0 -126
  225. package/template/workflows/dev/R-review/solid-checklist.md +0 -73
  226. package/template/workflows/dev/_templates/diagnosis-template.md +0 -20
  227. package/template/workflows/dev/_templates/docs-sync-report-template.md +0 -45
  228. package/template/workflows/dev/_templates/docs-sync-state-template.json +0 -14
  229. package/template/workflows/dev/_templates/domain-model-log-template.md +0 -20
  230. package/template/workflows/dev/_templates/grill-context-map-template.md +0 -20
  231. package/template/workflows/dev/_templates/grill-decision-log-template.md +0 -20
  232. package/template/workflows/dev/_templates/issues-slices-template.md +0 -106
  233. package/template/workflows/dev/_templates/prd-overview-template.md +0 -20
  234. package/template/workflows/dev/_templates/prd-template.md +0 -26
  235. package/template/workflows/dev/_templates/regression-template.md +0 -20
  236. package/template/workflows/dev/_templates/review-report-template.md +0 -30
  237. package/template/workflows/dev/_templates/review-sources-template.md +0 -33
  238. package/template/workflows/dev/_templates/review-verdict-template.md +0 -33
  239. package/template/workflows/dev/_templates/tdd-log-template.md +0 -23
  240. package/template/workflows/dev/_templates/tdd-plan-template.md +0 -35
  241. package/template/workflows/dev/_templates/tdd-verification-template.md +0 -26
  242. package/template/workflows/doc/AGENTS.md +0 -72
  243. package/template/workflows/doc/B-writing-beats/B-writing-beats.md +0 -79
  244. package/template/workflows/doc/B-writing-beats/writing-beats-append.md +0 -31
  245. package/template/workflows/doc/B-writing-beats/writing-beats-options.md +0 -29
  246. package/template/workflows/doc/E-edit-article/E-edit-article.md +0 -79
  247. package/template/workflows/doc/E-edit-article/edit-article-plan.md +0 -30
  248. package/template/workflows/doc/E-edit-article/edit-article-rewrite.md +0 -31
  249. package/template/workflows/doc/F-writing-fragments/F-writing-fragments.md +0 -80
  250. package/template/workflows/doc/F-writing-fragments/writing-fragments-interview.md +0 -32
  251. package/template/workflows/doc/F-writing-fragments/writing-fragments-log.md +0 -29
  252. package/template/workflows/doc/S-writing-shape/S-writing-shape.md +0 -81
  253. package/template/workflows/doc/S-writing-shape/writing-shape-block.md +0 -32
  254. package/template/workflows/doc/S-writing-shape/writing-shape-opening.md +0 -27
  255. package/template/workflows/doc/T-teach/T-teach.md +0 -147
  256. package/template/workflows/doc/T-teach/teach-lesson-wrap.md +0 -63
  257. package/template/workflows/doc/T-teach/teach-lesson.md +0 -53
  258. package/template/workflows/doc/T-teach/teach-mission.md +0 -33
  259. package/template/workflows/doc/T-teach/teach-resources.md +0 -36
  260. package/template/workflows/doc/_templates/edit-article-plan-template.md +0 -25
  261. package/template/workflows/doc/_templates/edit-article-template.md +0 -7
  262. package/template/workflows/doc/_templates/teach-glossary-template.md +0 -26
  263. package/template/workflows/doc/_templates/teach-learning-record-template.md +0 -38
  264. package/template/workflows/doc/_templates/teach-mission-template.md +0 -19
  265. package/template/workflows/doc/_templates/teach-resources-template.md +0 -18
  266. package/template/workflows/doc/_templates/writing-article-template.md +0 -7
  267. package/template/workflows/doc/_templates/writing-beat-options-template.md +0 -21
  268. package/template/workflows/doc/_templates/writing-fragments-template.md +0 -7
  269. package/template/workflows/doc/_templates/writing-interview-log-template.md +0 -21
  270. package/template/workflows/doc/_templates/writing-shape-log-template.md +0 -25
  271. package/template/workflows/person/AGENTS.md +0 -60
  272. /package/template/{.speculo/.config/adr → workflows/matt-pocock/_state/archive}/.gitkeep +0 -0
  273. /package/template/{.speculo/.config/context → workflows/matt-pocock/_state/changes}/.gitkeep +0 -0
  274. /package/template/{.speculo/archive/doc → workflows/person/_state/.config/context}/.gitkeep +0 -0
  275. /package/template/{.speculo/doc → workflows/person/_state/archive}/.gitkeep +0 -0
@@ -1,107 +0,0 @@
1
- ---
2
- id: dev/grill-with-docs
3
- category: dev
4
- name: Grill With Docs
5
- description: 结合项目术语、CONTEXT 与 ADR 对方案进行领域澄清和决策压力测试
6
- keywords: [grill, context, adr, 术语, 决策]
7
- ---
8
-
9
- # Grill With Docs 工作流执行指引
10
-
11
- 本工作流用于在 PRD 或实现前澄清领域语言、识别决策分支,并把已确认的上下文沉淀为当前 change 的可追踪产物。**领域建模的主动纪律(挑战术语、锐化语言、压测边界)与 CONTEXT / ADR 格式由横向工作流 `../M-domain-modeling/M-domain-modeling.md` 拥有**,本工作流引用之,专注把拷问结论落到当前 change 的 `context-map.md` 与 `decision-log.md`。
12
-
13
- ## 内置指引
14
-
15
- ### 何时使用
16
-
17
- 当 dev workflow 需要把用户方案与现有领域模型、术语表、ADR 或代码现实交叉验证时使用。
18
-
19
- ### 输入
20
-
21
- - 用户提出的计划、需求、设计或变更意图
22
- - `speculo/.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
23
- - `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md`、`speculo/.speculo/.config/adr/` 和相关代码
24
- - 当前 change 目录:`speculo/.speculo/dev/<change>/`(`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`,例:`2026-06-12-user-auth`)
25
-
26
- ### 输出
27
-
28
- - `speculo/.speculo/dev/<change>/context-map.md`
29
- - `speculo/.speculo/dev/<change>/decision-log.md`
30
- - 已确认的术语、决策、开放问题和 ADR 候选
31
- - 需要用户进一步决策的问题,每次只问一个
32
-
33
- (`<change>` 为当前 change 目录名,格式 `YYYY-MM-DD-<kebab-name>`)
34
-
35
- ### 执行原则
36
-
37
- 针对计划的每个方面不断向用户提问,直到达成共识。沿着设计树的每条分支逐一展开,逐个解决决策之间的依赖关系。对于每个问题,给出推荐答案。
38
-
39
- 每次只问一个问题,等待用户对当前问题的反馈后再继续。如果某个问题可以通过探索代码库来回答,就直接探索代码库。
40
-
41
- 需要格式约定时读取 `../M-domain-modeling/CONTEXT-FORMAT.md` 或 `../M-domain-modeling/ADR-FORMAT.md`(格式单一事实源);主动拷问的具体手法见 `../M-domain-modeling/M-domain-modeling.md`「会话期间(主动纪律)」。项目 CONTEXT 或 ADR 的创建、修改必须写入 `speculo/.speculo/.config/` 下,并符合本 workflow 的用户确认策略;未确认内容只记录到当前 change 的 `decision-log.md`。
42
-
43
- ### Worktree 隔离(条件)
44
-
45
- **默认不启用。** 仅当用户**显式请求**把本 change 隔离推进(“用 worktree / 隔离这个 change / 不污染当前分支”)时,才进入下方 Phase 0,并读取 `../../../skills/worktree-isolation/SKILL.md` 的「创建」渐进披露执行隔离。
46
-
47
- - 用户未请求隔离时,**不读取**该 skill,跳过 Phase 0,按既有流程在当前分支推进,行为零变化。
48
- - 启用后,本 change 的代码与全部 Speculo 产物都落在隔离分支 `speculo/dev/<change>` 与 `.worktree/<change>/` 工作树内,原分支不被污染;状态里记录 `base_branch` 与 `change_branch`,供 review、finalize 跨阶段跟进。
49
- - 隔离前置不满足(非 git 仓库 / 工作区不净 / `speculo/.speculo/` 未被 git 跟踪)时由该 skill 降级为非 worktree 模式并报告,不强行创建。
50
-
51
- ## 阶段
52
-
53
- ### 0. Worktree Setup — 隔离环境建立(条件,仅 worktree 模式)
54
- - 规范:`../../../skills/worktree-isolation/SKILL.md`(读其 `references/create-worktree.md`)
55
- - 模板:无
56
- - 产物:隔离分支 `speculo/dev/<change>`、`.worktree/<change>/` 工作树,以及 `.status.json` 的 worktree 字段
57
- - 完成准则:
58
- - 用户未请求隔离时本 phase 标记 `skipped`,不读取该 skill
59
- - 启用时分支与工作树已创建,且后续工作均切入 `.worktree/<change>/`
60
- - `.status.json` 写入 `worktree_enabled`、`base_branch`、`change_branch`、`worktree_path`,`worktree_status: active`
61
-
62
- ### 1. Context Scan — 上下文扫描
63
- - 规范:`grill-context-scan.md`
64
- - 模板:`../_templates/grill-context-map-template.md`
65
- - 产物:`context-map.md`
66
- - 完成准则:
67
- - 已记录相关术语表、ADR、代码区域和缺口
68
- - `context-map.md` 无残留 `[TODO:]`
69
-
70
- ### 2. Decision Grill — 决策拷问
71
- - 规范:`grill-decision.md`
72
- - 模板:`../_templates/grill-decision-log-template.md`
73
- - 产物:`decision-log.md`
74
- - 完成准则:
75
- - 关键决策均有结论、推荐答案或开放问题
76
- - 需要写入 `speculo/.speculo/.config/context/` 或 `speculo/.speculo/.config/adr/` 的内容已获用户确认,或记录为候选
77
- - `decision-log.md` 无残留 `[TODO:]`
78
-
79
- ## 依赖
80
-
81
- - 软依赖:无
82
- - 硬依赖:无
83
-
84
- ## 状态扩展字段
85
-
86
- 本工作流需在同 change 的 `.status.json` 追加:
87
-
88
- - `dev_entry` (string) — 固定为 `dev/01`
89
- - `embedded_guides` (array) — 包含 `grill-with-docs`
90
- - `context_paths` (array) — 已读取的 CONTEXT、ADR、代码或配置路径
91
- - `decision_status` (open | resolved | blocked) — 决策澄清状态
92
- - `adr_candidates` (array) — ADR 候选清单
93
-
94
- 仅当用户请求 worktree 隔离(Phase 0)时追加,字段定义见 `../../../skills/worktree-isolation/SKILL.md` 的输出契约:
95
-
96
- - `worktree_enabled` (bool) — 是否启用隔离
97
- - `base_branch` (string) — 原分支
98
- - `change_branch` (string) — 隔离分支 `speculo/dev/<change>`
99
- - `worktree_path` (string) — `.worktree/<change>`
100
- - `worktree_status` (created | active | merged | removed) — 隔离生命周期状态,本 workflow 写到 `active`
101
-
102
- ## 完成与状态更新
103
-
104
- - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
105
- - phase 完成后更新 `updated_at`、产物路径和扩展字段。
106
- - 启用 worktree 隔离时,Phase 0 完成后写入 worktree 字段并置 `worktree_status: active`;未启用时 Phase 0 记 `skipped`,不写 worktree 字段。
107
- - 本 workflow 完成后不自动完成 change;默认移交 `../02-prd/02-prd.md` 或按用户要求停止。
@@ -1,30 +0,0 @@
1
- # Context Scan Phase
2
-
3
- ## 输入
4
-
5
- - 用户提出的计划、需求、设计或问题
6
- - `speculo/.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
7
- - `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md`、`speculo/.speculo/.config/adr/` 和相关代码
8
- - 本 workflow 入口文件中的内置领域拷问指引
9
-
10
- ## 产物
11
-
12
- - `speculo/.speculo/dev/<change>/context-map.md`,由 `../_templates/grill-context-map-template.md` 填写
13
-
14
- ## 填写引导
15
-
16
- 1. 先探索仓库事实,不向用户询问可从文件中确认的问题。
17
- 2. 记录存在的领域术语来源、ADR 来源、关键模块和调用者。
18
- 3. 标出缺失的术语表、缺失 ADR 或与用户描述冲突的代码事实。
19
- 4. 只记录事实和待确认项,不在本阶段做方案裁决。
20
- 5. 若 `speculo/.speculo/.config/context/CONTEXT-MAP.md` 存在,先读取它以判断涉及哪个上下文;若只有 `speculo/.speculo/.config/context/CONTEXT.md`,按单上下文处理;若都不存在,只记录“缺少术语表”,不在本阶段创建。
21
-
22
- ## 边界
23
-
24
- - 不直接修改 `speculo/.speculo/.config/context/` 或 `speculo/.speculo/.config/adr/`;修改动作留到 Decision Grill 阶段确认后执行。
25
- - 不创建实现计划或 PRD。
26
-
27
- ## 完成准则
28
-
29
- - `context-map.md` 无残留 `[TODO:]`
30
- - 已列出下一阶段必须追问的最高优先级问题
@@ -1,38 +0,0 @@
1
- # Decision Grill Phase
2
-
3
- ## 输入
4
-
5
- - `speculo/.speculo/dev/<change>/context-map.md`
6
- - 用户当前方案或目标
7
- - 本 workflow 入口文件中的内置领域拷问指引
8
- - `../M-domain-modeling/CONTEXT-FORMAT.md`、`../M-domain-modeling/ADR-FORMAT.md`(格式单一事实源);主动拷问手法见 `../M-domain-modeling/M-domain-modeling.md`
9
-
10
- ## 产物
11
-
12
- - `speculo/.speculo/dev/<change>/decision-log.md`,由 `../_templates/grill-decision-log-template.md` 填写
13
- - 可选:经用户确认后更新 `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md` 或 `speculo/.speculo/.config/adr/*.md`
14
-
15
- ## 填写引导
16
-
17
- 1. 遵循 `01-grill-with-docs.md` 的内置指引,再按需读取 `../M-domain-modeling/` 的格式文档与主动拷问纪律。
18
- 2. 每次只问一个会改变决策树的问题,并给出推荐答案。
19
- 3. 对术语冲突、代码现实冲突和 ADR 候选直接指出。
20
- 4. 用户确认后,把决策写入 `decision-log.md`。
21
- 5. 只有用户明确同意时,才把术语写入 `speculo/.speculo/.config/context/` 或创建 `speculo/.speculo/.config/adr/` 下的 ADR。
22
- 6. 当用户使用的术语与 `speculo/.speculo/.config/context/` 中已有定义冲突时,立即指出冲突并要求在当前问题中消解。
23
- 7. 当用户使用含混或一词多义的术语时,提议一个精确的规范术语。
24
- 8. 当讨论领域关系时,用具体场景压力测试边界情况。
25
- 9. 当用户描述某个东西如何运作时,检查代码是否一致;若矛盾,直接指出。
26
- 10. 只有同时满足“难以逆转”“缺少上下文会令人意外”“真实权衡的结果”三个条件时,才提议 ADR。
27
-
28
- ## 边界
29
-
30
- - 不输出 PRD;PRD 由 `../02-prd/02-prd.md` 负责。
31
- - 不把未确认的 ADR 候选写成正式 ADR。
32
- - 不修改 `speculo/.speculo/.config/RULES.md` 或用户未明确授权的项目规则文档。
33
-
34
- ## 完成准则
35
-
36
- - 每个关键问题都有结论、推荐答案或 blocked 原因
37
- - `.status.json` 的 `decision_status` 已更新
38
- - `decision-log.md` 无残留 `[TODO:]`
@@ -1,70 +0,0 @@
1
- ---
2
- id: dev/prd
3
- category: dev
4
- name: PRD
5
- description: 通过 zoom-out 全景理解与 to-prd 综合产出开发 PRD
6
- keywords: [prd, zoom-out, 需求, 计划]
7
- ---
8
-
9
- # PRD 工作流执行指引
10
-
11
- 本工作流用于把已知上下文综合为当前 Speculo change 内的 overview 和 PRD。zoom-out 全景理解与 PRD 综合能力已内置在本 workflow 目录中。
12
-
13
- > **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-user-auth`)。产物写入 `speculo/.speculo/dev/<change>/`。
14
-
15
- ## 内置指引
16
-
17
- ### Zoom Out
18
-
19
- 当 agent 对某段代码或业务区域不熟悉,需要先建立全局视角再继续 PRD、设计、诊断或实现时使用。用项目领域术语表给出相关模块、调用者、关键边界、上下游依赖和需要进一步确认的问题。
20
-
21
- ### PRD Synthesis
22
-
23
- 当 dev workflow 已完成足够上下文探索,需要把当前对话和代码理解沉淀成 PRD 时使用。不要重复访谈已明确的信息;综合当前对话、代码库事实、领域术语、ADR、模块候选和测试目标。
24
-
25
- PRD 综合统一使用 `speculo/.speculo/.config/context/CONTEXT.md` 的通用语言;若 PRD 引入或锐化了 CONTEXT 中尚不存在的领域术语,按横向工作流 `../M-domain-modeling/M-domain-modeling.md` 主动沉淀(用户确认后写入 `.config/context/`),不要让术语只活在 PRD 里。
26
-
27
- PRD 只写入 `speculo/.speculo/dev/<change>/prd.md`,overview 只写入 `speculo/.speculo/dev/<change>/overview.md`。不写项目根下的任意规划文档,不默认发布外部 issue。只有 tracker 已配置且用户明确要求时,才进入外部发布动作。
28
-
29
- (`<change>` 格式:`YYYY-MM-DD-<kebab-name>`)
30
-
31
- ## 阶段
32
-
33
- ### 1. Zoom Out — 全景理解
34
- - 规范:`prd-zoom-out.md`
35
- - 模板:`../_templates/prd-overview-template.md`
36
- - 产物:`overview.md`
37
- - 完成准则:
38
- - 已说明相关模块、调用者、边界和未知点
39
- - `overview.md` 无残留 `[TODO:]`
40
-
41
- ### 2. PRD Synthesis — PRD 综合
42
- - 规范:`prd-synthesis.md`
43
- - 模板:`../_templates/prd-template.md`
44
- - 产物:`prd.md`
45
- - 完成准则:
46
- - PRD 包含问题、方案、用户故事、实现决策、测试决策、范围边界
47
- - 已确认模块候选和测试目标
48
- - `prd.md` 无残留 `[TODO:]`
49
-
50
- ## 依赖
51
-
52
- - 软依赖:`../01-grill-with-docs/01-grill-with-docs.md`,scope: same-change
53
- - 硬依赖:无
54
-
55
- ## 状态扩展字段
56
-
57
- 本工作流需在同 change 的 `.status.json` 追加:
58
-
59
- - `dev_entry` (string) — 固定为 `dev/02`
60
- - `embedded_guides` (array) — 包含 `zoom-out`、`to-prd`
61
- - `prd_slug` (string) — PRD 短 slug
62
- - `module_candidates` (array) — 候选模块或边界
63
- - `test_targets` (array) — 用户确认的测试目标
64
- - `issue_tracker_mode` (disabled | local-only | publish-requested | published) — issue tracker 使用状态
65
-
66
- ## 完成与状态更新
67
-
68
- - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
69
- - 默认把 PRD 写入当前 change 的 `prd.md`;不默认写项目根下的任意规划文档。
70
- - 本 workflow 完成后不自动完成 change;默认移交 `../I-to-issues/I-to-issues.md` 或 `../03-tdd/03-tdd.md`。
@@ -1,30 +0,0 @@
1
- # PRD Synthesis Phase
2
-
3
- ## 输入
4
-
5
- - `speculo/.speculo/dev/<change>/overview.md`
6
- - 可选的 `context-map.md`、`decision-log.md`、用户故事或 issue
7
- - `02-prd.md` 中的 PRD Synthesis 内置指引
8
-
9
- ## 产物
10
-
11
- - `speculo/.speculo/dev/<change>/prd.md`,由 `../_templates/prd-template.md` 填写
12
-
13
- ## 填写引导
14
-
15
- 1. 遵循 `02-prd.md` 的 PRD Synthesis 内置指引。
16
- 2. 综合已有上下文,不重复访谈已明确的信息。
17
- 3. 与用户确认模块候选和需要测试的行为。
18
- 4. 默认只生成本地 `prd.md`;只有 tracker 已配置且用户明确要求时才发布 issue。
19
- 5. PRD 中避免易过时的具体文件路径和代码片段,除非它们表达不可替代的决策。
20
-
21
- ## 边界
22
-
23
- - 不进行 issue 切片;切片由 `../I-to-issues/I-to-issues.md` 负责。
24
- - 不修改业务代码。
25
- - 不把 change 标记为 completed。
26
-
27
- ## 完成准则
28
-
29
- - `prd.md` 无残留 `[TODO:]`
30
- - `test_targets`、`prd_slug`、`issue_tracker_mode` 已写入 `.status.json`
@@ -1,29 +0,0 @@
1
- # Zoom Out Phase
2
-
3
- ## 输入
4
-
5
- - 用户目标、已有 `context-map.md` 或 `decision-log.md`
6
- - 相关代码区域、架构文档、ADR 和配置
7
- - `02-prd.md` 中的 Zoom Out 内置指引
8
-
9
- ## 产物
10
-
11
- - `speculo/.speculo/dev/<change>/overview.md`,由 `../_templates/prd-overview-template.md` 填写
12
-
13
- ## 填写引导
14
-
15
- 1. 遵循 `02-prd.md` 的 Zoom Out 内置指引。
16
- 2. 用项目领域术语说明相关模块和调用者。
17
- 3. 标明现有行为、缺失能力、接口边界、上下游依赖和风险。
18
- 4. 输出服务于 PRD 综合的事实,不提前写实现步骤。
19
-
20
- ## 边界
21
-
22
- - 不发布 issue。
23
- - 不修改代码。
24
- - 不创建 PRD;PRD 留到下一阶段。
25
-
26
- ## 完成准则
27
-
28
- - `overview.md` 无残留 `[TODO:]`
29
- - `.status.json` 已记录 `module_candidates`
@@ -1,158 +0,0 @@
1
- ---
2
- id: dev/tdd
3
- category: dev
4
- name: TDD Implementation
5
- description: 按垂直切片执行红绿重构,实现功能或回归修复
6
- keywords: [tdd, implement, red-green-refactor, 实现, 测试]
7
- ---
8
-
9
- # TDD Implementation 工作流执行指引
10
-
11
- 本工作流用于把 PRD、issue、诊断结论或用户明确任务实现为经过验证的代码变更。TDD 红绿重构、测试、mock 与重构指引内置在本 workflow 目录中;**深模块、接口、接缝、适配器的设计词汇与原则统一引用 `vendor/codebase-design`,本工作流不再复制**(见下「渐进披露」)。
12
-
13
- ## 执行前 Git 基线
14
-
15
- 开始 TDD 计划或写代码前,必须先查看当前目录所在仓库和分支的 git 情况:
16
-
17
- ```bash
18
- git branch --show-current
19
- git status --short --branch
20
- git diff --stat
21
- git diff --cached --stat
22
- ```
23
-
24
- - 把当前分支、dirty/staged/untracked 摘要记录到 `tdd/<phase-id>/tdd-plan.md`;进入实现循环后如状态变化,记录到 `implementation-log.md`。
25
- - 默认把已有改动视为用户或上一阶段留下的工作,不回退、不覆盖、不格式化无关文件。
26
- - 如果本阶段需要修改的文件已存在未知改动,先核对 diff;无法判断归属或改动会重叠时,停止并询问用户。
27
- - 若仓库不是 git 仓库或命令无法运行,记录失败原因和可见文件状态,再继续后续判断。
28
-
29
- ## 内置指引
30
-
31
- ### 核心原则
32
-
33
- 测试应通过公共接口验证行为,而不是实现细节。代码可以完全重写;测试不应该。
34
-
35
- 好的测试是集成式的:它们通过公共 API 运行真实的代码路径,描述系统“做什么”,不描述“怎么做”。坏的测试与实现耦合:mock 内部协作者、测试私有方法,或通过外部手段验证内部状态。
36
-
37
- ### 反模式:水平切片
38
-
39
- 不要先写全部测试,再写全部实现。正确做法是追踪弹式垂直切片:一个测试 -> 一个实现 -> 重复。每个测试都基于上一轮学到的东西做出响应。
40
-
41
- ### 渐进披露
42
-
43
- 测试与重构相关指引内置在同目录:
44
-
45
- - `tests.md`:设计测试方式(好测试 vs 坏测试)时读取。
46
- - `mocking.md`:考虑 mock 边界、为可 mock 性设计接口时读取。
47
- - `refactoring.md`:进入重构阶段、识别重构候选时读取。
48
-
49
- 深模块 / 接口 / 接缝 / 适配器 / 杠杆 / 局部性的设计词汇与原则统一由 `vendor/codebase-design` 承载(**单一事实源,本工作流不复制**),按需直接引用:
50
-
51
- - `../../../vendor/codebase-design/SKILL.md`:设计深模块、判断深 vs 浅、为可测试性设计接口(接受依赖而非创建、返回结果而非副作用、小表面积)时读取——deep module 与可测试接口设计的权威来源。
52
- - `../../../vendor/codebase-design/DEEPENING.md`:判定依赖类别(进程内 / 本地可替换 / 端口与适配器 / mock)与「替换而非叠加」的测试策略时读取。
53
- - `../../../vendor/codebase-design/DESIGN-IT-TWICE.md`:需要为深化候选并行探索多个备选接口时读取。
54
-
55
- ### 消费 slices 切片契约
56
-
57
- 多阶段 change 从 `slices.md` 接手时,每个 TDD 阶段对应一个切片,须读取并守护该切片契约(见 `../I-to-issues/issues-slices.md`):
58
-
59
- - **保留/不动**:把切片的「保留/不动」清单当作实现硬约束——冻结常量 / 共享依赖 / 邻近功能一律不碰。
60
- - **关键核实结论与行号现场核对**:切片记录的行号为*近似*,实现时一律以现场代码为准、不照搬。
61
- - **验收切片**:Finish 阶段运行切片的「验收切片」;删除型切片须含残留扫描(`grep` 0 命中)并留证。
62
- - **横切铁律**:遵守 §4 横切关注点(契约先行、删缓存可重建、数据安全冻结等)。
63
- - **存疑即问**:计划阶段遇未决分支,按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
64
-
65
- ## 阶段
66
-
67
- > **产物目录:** 本工作流所有产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/`(见下「TDD 产物目录与阶段标识」)。下文产物路径均相对该 change 目录。**`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`**(例:`2026-06-12-user-auth`)。
68
-
69
- ### 1. TDD Plan — 行为与接口计划
70
- - 规范:`tdd-plan.md`
71
- - 模板:`../_templates/tdd-plan-template.md`
72
- - 产物:`tdd/<phase-id>/tdd-plan.md`
73
- - 完成准则:
74
- - 已确认公共接口、关键行为和测试优先级
75
- - 已在产物顶部「阶段标识」段填写 `<phase-id>`
76
- - `tdd-plan.md` 无残留 `[TODO:]`
77
-
78
- ### 2. Slice Loop — 红绿重构循环
79
- - 规范:`tdd-loop.md`
80
- - 模板:`../_templates/tdd-log-template.md`
81
- - 产物:`tdd/<phase-id>/implementation-log.md`
82
- - 完成准则:
83
- - 每个切片都有 RED、GREEN、REFACTOR 和验证记录
84
- - `implementation-log.md` 无残留 `[TODO:]`
85
-
86
- ### 3. Finish — 验证与收尾
87
- - 规范:`tdd-finish.md`
88
- - 模板:`../_templates/tdd-verification-template.md`
89
- - 产物:`tdd/<phase-id>/verification.md`
90
- - 完成准则:
91
- - 已运行相关测试或明确记录无法运行原因
92
- - 无调试残留和推测性功能
93
- - 已把 slices 中该阶段 `<phase>` 状态由 `未开始` 置为 `已实现`(无 slices 则跳过,见「phase 阶段状态(XML 契约)」)
94
- - `verification.md` 无残留 `[TODO:]`
95
-
96
- ## TDD 产物目录与阶段标识
97
-
98
- - 本工作流所有产物集中在 `speculo/.speculo/dev/<change>/tdd/<phase-id>/`,与 change 根目录的 PRD / slices 等产物分离,便于多阶段并行与回溯。
99
- - `<change>` 为当前 change 目录名(`YYYY-MM-DD-<kebab-name>`)。
100
- - `<phase-id>` 标识:
101
- - change 来自**多阶段 slices** 时,用 slices 阶段标识(与 slices `<phase id="...">` 的 `id` 严格一致),如 `phase0-node-base`、`phase1-templates`。
102
- - change 为**单阶段**(无 slices 分期)时,用一个描述性切片 slug,如 `phase0-<slug>`。
103
- - 每个阶段独立一套 `tdd-plan.md` / `implementation-log.md` / `verification.md`,互不覆盖;模板顶部「阶段标识」段记录该 `<phase-id>`。
104
- - 目录形如:
105
-
106
- ```text
107
- speculo/.speculo/dev/<change>/tdd/
108
- ├── phase0-node-base/
109
- │ ├── tdd-plan.md
110
- │ ├── implementation-log.md
111
- │ └── verification.md
112
- └── phase1-templates/
113
- ├── tdd-plan.md
114
- ├── implementation-log.md
115
- └── verification.md
116
- ```
117
-
118
- ## phase 阶段状态(XML 契约)
119
-
120
- 多阶段 change(`speculo/.speculo/dev/<change>/slices.md`)中,每个阶段标题下紧跟一个状态标记,作为该阶段在三段生命周期中的单一事实源:
121
-
122
- ```xml
123
- <phase id="phase0-node-base" status="未开始"><!-- 未开始 → 已实现(dev/03) → 已验证(dev/04) --></phase>
124
- ```
125
-
126
- - `id`:阶段稳定标识,与 TDD 产物目录 `tdd/<phase-id>/` 同名。
127
- - `status` 枚举与责任方:
128
- - `未开始` —— 创建 slices 文档时由作者初始化(所有阶段默认 `未开始`)。
129
- - `已实现` —— 本工作流(`dev/03`)该阶段 Finish 验证通过后置入。
130
- - `已验证` —— `dev/04`(`../04-finalize/04-finalize.md`)完成前验证通过后置入。
131
- - 本工作流只负责 `未开始 → 已实现` 这一跳;`dev/04` 负责 `已实现 → 已验证`。状态只前进不回退,除非该阶段被显式重做。
132
- - change 无 slices(单阶段直接任务)时本契约不适用,跳过状态翻转。
133
-
134
- ## 依赖
135
-
136
- - 软依赖:`../02-prd/02-prd.md` 或 `../I-to-issues/I-to-issues.md`,scope: same-change
137
- - 硬依赖:无;若用户提供明确修复或实现任务,可直接进入
138
-
139
- ## 状态扩展字段
140
-
141
- 本工作流需在同 change 的 `.status.json` 追加:
142
-
143
- - `dev_entry` (string) — 固定为 `dev/03`
144
- - `embedded_guides` (array) — 包含 `tdd`
145
- - `tdd_phase_id` (string) — 当前 TDD 阶段标识,与产物目录 `tdd/<phase-id>/` 及 slices `<phase>` 的 `id` 一致
146
- - `slice_source` (prd | issues | diagnosis | user-request) — 切片来源
147
- - `red_green_refactor_cycles` (array) — 每轮 TDD 循环摘要
148
- - `verification_commands` (array) — 已运行或应运行的验证命令
149
- - `implementation_status` (planned | in-progress | verified | blocked) — 实现状态
150
-
151
- > 多阶段 change:上述自治字段按阶段命名空间记录在 `tdd_runs[<phase-id>]` 下(各含 `scope` / `artifacts`(指向 `tdd/<phase-id>/*.md`) / `red_green_refactor_cycles` / `verification_commands` / `implementation_status`),避免跨阶段互相覆盖。单阶段 change 可直接用平铺字段。
152
-
153
- ## 完成与状态更新
154
-
155
- - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
156
- - 每完成一个切片,追加 `red_green_refactor_cycles`(多阶段时写入 `tdd_runs[<phase-id>]`)。
157
- - Finish 验证通过后,把 slices 中该阶段 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
158
- - 全部用户要求的实现边界完成并验证后,可把 `change_status` 置为 `completed`,或移交 review/handoff command。
@@ -1,43 +0,0 @@
1
- # Mock 边界与可 Mock 性
2
-
3
- > **依赖类别**(进程内 / 本地可替换 / 端口与适配器 / 真正外部)与「在接缝处注入端口、生产用真实适配器、测试用内存或 mock 适配器」的判定,是设计词汇的一部分,见单一事实源 `../../../vendor/codebase-design/DEEPENING.md`。本文只覆盖**写测试时**的 mock 取舍与 SDK 风格接口。
4
-
5
- ## 只在系统边界处 mock
6
-
7
- - 外部 API(支付、邮件等)
8
- - 数据库(有时——优先考虑测试数据库 / 本地可替换实现)
9
- - 时间 / 随机性
10
- - 文件系统(有时)
11
-
12
- 不要 mock:
13
-
14
- - 你自己的类 / 模块
15
- - 内部协作者
16
- - 任何你能控制的东西
17
-
18
- > 依赖注入(接受依赖而非内部创建)是让边界可 mock 的前提;该原则见 `../../../vendor/codebase-design/SKILL.md`「为可测试性设计」,本文不复制。
19
-
20
- ## 优先 SDK 风格接口,而非通用 fetcher
21
-
22
- 为每个外部操作创建专用函数,而不是一个带条件逻辑的通用函数:
23
-
24
- ```typescript
25
- // 好:每个函数都可以独立 mock
26
- const api = {
27
- getUser: (id) => fetch(`/users/${id}`),
28
- getOrders: (userId) => fetch(`/users/${userId}/orders`),
29
- createOrder: (data) => fetch('/orders', { method: 'POST', body: data }),
30
- };
31
-
32
- // 坏:mock 时需要在内部写条件逻辑
33
- const api = {
34
- fetch: (endpoint, options) => fetch(endpoint, options),
35
- };
36
- ```
37
-
38
- SDK 方式意味着:
39
-
40
- - 每个 mock 返回一种特定的数据结构
41
- - 测试准备中不需要条件逻辑
42
- - 更容易看出测试覆盖了哪些端点
43
- - 每个端点都有类型安全
@@ -1,10 +0,0 @@
1
- # 重构候选
2
-
3
- TDD 循环后,寻找以下问题:
4
-
5
- - **重复** → 提取函数/类
6
- - **长方法** → 拆分为私有辅助方法(保持测试只测公共接口)
7
- - **浅模块** → 合并或加深
8
- - **特性嫉妒(Feature Envy)** → 把逻辑移到数据所在的地方
9
- - **基本类型偏执** → 引入值对象
10
- - **现有代码**被新代码揭示出问题
@@ -1,34 +0,0 @@
1
- # Finish Phase
2
-
3
- ## 输入
4
-
5
- - `implementation-log.md`
6
- - 项目验证命令和变更 diff
7
- - `03-tdd.md` 中的内置 TDD 指引和同目录 `refactoring.md`
8
-
9
- ## 产物
10
-
11
- - `speculo/.speculo/dev/<change>/tdd/<phase-id>/verification.md`,由 `../_templates/tdd-verification-template.md` 填写
12
-
13
- ## 填写引导
14
-
15
- 1. 运行与变更相关的测试、类型检查、lint 或构建命令。
16
- 2. **运行本切片「验收切片」**:执行切片记录的验收命令/步骤;**删除型切片须做残留扫描**(`grep -rn "<符号>" <范围>` 应 0 命中),记录证据。
17
- 3. **核对「保留/不动」未被破坏**:确认实现未触碰切片冻结的常量 / 共享依赖 / 邻近功能。
18
- 4. 记录无法运行的命令和阻塞原因。
19
- 5. 搜索临时调试标记、一次性脚本和推测性实现。
20
- 6. 验证通过后,把 slices 中该阶段 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(契约见 `03-tdd.md`「phase 阶段状态(XML 契约)」;本工作流只做这一跳,`已验证` 由 `dev/04` 置入;无 slices 则跳过)。
21
- 7. 如有可沉淀经验,记录在 `verification.md` 的后续建议中;在用户允许或项目规则允许时追加到 `speculo/.speculo/.config/LESSONS.md`。
22
-
23
- ## 边界
24
-
25
- - 不自动归档 change;归档由 `commands/archive.md` 负责。
26
- - 不修改 `speculo/.speculo/.config/RULES.md` 或用户未明确授权的项目规则文档。
27
-
28
- ## 完成准则
29
-
30
- - 本切片「验收切片」已运行通过(删除型切片含残留扫描 `grep` 0 命中),并在 `verification.md` 留证
31
- - 「保留/不动」清单经核对未被破坏
32
- - 多阶段 slices:该阶段 `<phase>` 的 `status` 已由 `未开始` 置为 `已实现`(无 slices 则不适用)
33
- - `verification.md` 无残留 `[TODO:]`
34
- - `.status.json` 的 `implementation_status` 为 `verified` 或 `blocked`
@@ -1,36 +0,0 @@
1
- # Slice Loop Phase
2
-
3
- ## 输入
4
-
5
- - `tdd-plan.md`
6
- - `slices.md` 或用户确认的切片顺序
7
- - `tdd-plan.md` 中记录的执行前 git 基线;每轮开始前核对本轮触及文件是否存在未知改动
8
- - `03-tdd.md` 中的内置 TDD 指引和同目录辅助文档
9
-
10
- ## 产物
11
-
12
- - `speculo/.speculo/dev/<change>/tdd/<phase-id>/implementation-log.md`,由 `../_templates/tdd-log-template.md` 填写
13
- - 可选:`tdd/<phase-id>/tasks/00-INDEX.md` 与 `tdd/<phase-id>/tasks/TNN.md`,由 workflow 自治创建
14
-
15
- ## 填写引导
16
-
17
- 1. 每次只选择一个切片和一个行为。
18
- 2. RED:写一个通过公共接口验证行为的失败测试。
19
- 3. GREEN:写最少实现使当前测试通过。
20
- 4. REFACTOR:只在绿色状态下整理设计。
21
- 5. 每轮记录测试名、失败信号、实现摘要、重构摘要、验证命令和 git 状态变化摘要。
22
- 6. 每轮检查:测试描述行为而非实现;测试只使用公共接口;测试能经受内部重构;代码是当前测试的最少实现;没有添加推测性功能;**未触碰本切片「保留/不动」清单**;引用代码以现场为准(不照搬切片行号);未覆盖未知 dirty/staged 改动。
23
-
24
- ## 边界
25
-
26
- - 不预实现未来切片。
27
- - 不使用内部实现细节作为主要断言。
28
- - 不在 RED 状态下重构。
29
- - 不触碰本切片「保留/不动」清单(冻结常量 / 共享依赖 / 邻近功能)。
30
- - 不回退、覆盖或格式化与本切片无关的已有改动。
31
-
32
- ## 完成准则
33
-
34
- - 每个完成切片都有 RED/GREEN/REFACTOR 记录
35
- - `implementation-log.md` 无残留 `[TODO:]`
36
- - `.status.json` 已追加 `red_green_refactor_cycles`
@@ -1,37 +0,0 @@
1
- # TDD Plan Phase
2
-
3
- ## 输入
4
-
5
- - `prd.md`、`slices.md`、`diagnosis.md` 或用户明确任务
6
- - 多阶段:本阶段对应切片的 **保留/不动**、**关键核实结论**、**验收切片** 与 §4 横切铁律(`slices.md`)
7
- - 项目测试命令、现有测试样式和公共接口
8
- - 当前仓库 git 基线:分支、`git status --short --branch`、`git diff --stat`、`git diff --cached --stat`
9
- - `03-tdd.md` 中的内置 TDD 指引(含「消费 slices 切片契约」)和同目录辅助文档
10
-
11
- ## 产物
12
-
13
- - `speculo/.speculo/dev/<change>/tdd/<phase-id>/tdd-plan.md`,由 `../_templates/tdd-plan-template.md` 填写(`<phase-id>` 见 `03-tdd.md`「TDD 产物目录与阶段标识」)
14
-
15
- ## 填写引导
16
-
17
- 1. 遵循 `03-tdd.md` 的内置 TDD 指引,并先完成「执行前 Git 基线」检查。
18
- 2. 在计划中记录当前分支、dirty/staged/untracked 摘要和 diff stat;已有改动默认视为用户工作,不能回退或覆盖。
19
- 3. 按需读取同目录 `tests.md` / `mocking.md`,以及设计词汇单一事实源 `../../../vendor/codebase-design/`(`SKILL.md` 深模块与可测试接口设计、`DEEPENING.md` 依赖类别与接缝、`DESIGN-IT-TWICE.md` 备选接口)。
20
- 4. 与用户确认公共接口、最重要的行为和测试覆盖优先级。
21
- 5. 拆出第一个 tracing slice,避免水平切片。
22
- 6. 探索代码库时使用项目领域术语表,确保测试名称和接口词汇与项目语言一致,并尊重触及区域的 ADR。
23
- 7. 写任何代码前确认接口变更、优先测试的行为、deep module 机会、可测试接口设计和行为列表。
24
- 8. **承载切片契约**:把本阶段对应切片的 **保留/不动** 与 **关键核实结论** 记入计划作为实现约束;切片行号为近似、以现场代码为准(现场核对);存疑分支按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
25
-
26
- ## 边界
27
-
28
- - 本阶段不写代码。
29
- - 不批量预写所有测试。
30
-
31
- ## 完成准则
32
-
33
- - 产物顶部「阶段标识」段已填写 `<phase-id>`(多阶段 slices 须与 `<phase>` 的 `id` 一致)
34
- - 已记录执行前 git 基线和未知/重叠改动处理结论
35
- - 多阶段:已记录本切片 **保留/不动** 约束与 **现场核对** 结论
36
- - `tdd-plan.md` 无残留 `[TODO:]`
37
- - `.status.json` 的 `implementation_status` 为 `planned`