@namewta/speculo 0.1.21 → 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 (288) 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 +1 -1
  39. package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
  40. package/template/skills/github-npm-ops/references/release-notes-injection.md +1 -1
  41. package/template/skills/github-npm-ops/references/release-pipeline.md +13 -13
  42. package/template/skills/github-npm-ops/references/version-bump-flow.md +3 -3
  43. package/template/skills/knowledge-prune/SKILL.md +29 -0
  44. package/template/skills/knowledge-prune/references/audit-rules.md +24 -0
  45. package/template/skills/runtime-context/SKILL.md +43 -0
  46. package/template/skills/runtime-context/references/path-resolution.md +32 -0
  47. package/template/skills/speculo-retro/SKILL.md +13 -37
  48. package/template/skills/speculo-retro/references/friction-taxonomy.md +3 -3
  49. package/template/skills/speculo-retro/references/issue-drafting-sop.md +3 -3
  50. package/template/skills/worktree-isolation/SKILL.md +10 -46
  51. package/template/skills/worktree-isolation/references/audit-branch-tree.md +2 -2
  52. package/template/skills/worktree-isolation/references/create-worktree.md +6 -6
  53. package/template/skills/worktree-isolation/references/merge-and-cleanup.md +5 -5
  54. package/template/vendor/README.md +11 -10
  55. package/template/vendor/matt-pocock/README.md +41 -0
  56. package/template/vendor/matt-pocock/engineering/README.md +28 -0
  57. package/template/vendor/matt-pocock/engineering/ask-matt/SKILL.md +76 -0
  58. package/template/vendor/matt-pocock/engineering/code-review/SKILL.md +89 -0
  59. package/template/vendor/matt-pocock/engineering/codebase-design/DEEPENING.md +37 -0
  60. package/template/vendor/matt-pocock/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
  61. package/template/vendor/matt-pocock/engineering/codebase-design/SKILL.md +114 -0
  62. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/SKILL.md +134 -0
  63. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  64. package/template/vendor/matt-pocock/engineering/domain-modeling/ADR-FORMAT.md +47 -0
  65. package/template/vendor/matt-pocock/engineering/domain-modeling/CONTEXT-FORMAT.md +60 -0
  66. package/template/vendor/matt-pocock/engineering/domain-modeling/SKILL.md +74 -0
  67. package/template/vendor/matt-pocock/engineering/grill-with-docs/SKILL.md +7 -0
  68. package/template/vendor/matt-pocock/engineering/implement/SKILL.md +15 -0
  69. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
  70. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/SKILL.md +66 -0
  71. package/template/vendor/matt-pocock/engineering/prototype/LOGIC.md +79 -0
  72. package/template/vendor/matt-pocock/engineering/prototype/SKILL.md +30 -0
  73. package/template/vendor/matt-pocock/engineering/prototype/UI.md +112 -0
  74. package/template/vendor/matt-pocock/engineering/research/SKILL.md +12 -0
  75. package/template/vendor/matt-pocock/engineering/resolving-merge-conflicts/SKILL.md +14 -0
  76. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/SKILL.md +127 -0
  77. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/domain.md +51 -0
  78. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  79. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  80. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  81. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
  82. package/template/vendor/matt-pocock/engineering/tdd/SKILL.md +36 -0
  83. package/template/vendor/matt-pocock/engineering/tdd/mocking.md +59 -0
  84. package/template/vendor/matt-pocock/engineering/tdd/tests.md +77 -0
  85. package/template/vendor/matt-pocock/engineering/to-spec/SKILL.md +75 -0
  86. package/template/vendor/matt-pocock/engineering/to-tickets/SKILL.md +113 -0
  87. package/template/vendor/matt-pocock/engineering/triage/AGENT-BRIEF.md +204 -0
  88. package/template/vendor/matt-pocock/engineering/triage/OUT-OF-SCOPE.md +104 -0
  89. package/template/vendor/matt-pocock/engineering/triage/SKILL.md +112 -0
  90. package/template/vendor/matt-pocock/engineering/wayfinder/SKILL.md +127 -0
  91. package/template/vendor/matt-pocock/in-progress/README.md +10 -0
  92. package/template/vendor/matt-pocock/in-progress/claude-handoff/SKILL.md +18 -0
  93. package/template/vendor/matt-pocock/in-progress/loop-me/SKILL.md +32 -0
  94. package/template/vendor/matt-pocock/in-progress/wizard/SKILL.md +45 -0
  95. package/template/vendor/matt-pocock/in-progress/wizard/template.sh +211 -0
  96. package/template/vendor/matt-pocock/in-progress/writing-beats/SKILL.md +67 -0
  97. package/template/vendor/matt-pocock/in-progress/writing-fragments/SKILL.md +78 -0
  98. package/template/vendor/matt-pocock/in-progress/writing-shape/SKILL.md +79 -0
  99. package/template/vendor/matt-pocock/productivity/README.md +18 -0
  100. package/template/vendor/matt-pocock/productivity/grill-me/SKILL.md +7 -0
  101. package/template/vendor/matt-pocock/productivity/grilling/SKILL.md +12 -0
  102. package/template/vendor/matt-pocock/productivity/handoff/SKILL.md +16 -0
  103. package/template/vendor/matt-pocock/productivity/teach/GLOSSARY-FORMAT.md +35 -0
  104. package/template/vendor/matt-pocock/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
  105. package/template/vendor/matt-pocock/productivity/teach/MISSION-FORMAT.md +31 -0
  106. package/template/vendor/matt-pocock/productivity/teach/RESOURCES-FORMAT.md +32 -0
  107. package/template/vendor/matt-pocock/productivity/teach/SKILL.md +140 -0
  108. package/template/vendor/matt-pocock/productivity/writing-great-skills/GLOSSARY.md +201 -0
  109. package/template/vendor/matt-pocock/productivity/writing-great-skills/SKILL.md +83 -0
  110. package/template/workflows/matt-pocock/WORKFLOW.md +145 -0
  111. package/template/workflows/matt-pocock/_state/status.json +5 -0
  112. package/template/workflows/matt-pocock/routes/architecture.md +24 -0
  113. package/template/workflows/matt-pocock/routes/diagnose.md +22 -0
  114. package/template/workflows/matt-pocock/routes/experimental.md +18 -0
  115. package/template/workflows/matt-pocock/routes/idea-to-delivery.md +63 -0
  116. package/template/workflows/matt-pocock/routes/merge-conflicts.md +19 -0
  117. package/template/workflows/matt-pocock/routes/productivity.md +25 -0
  118. package/template/workflows/matt-pocock/routes/research-prototype.md +20 -0
  119. package/template/workflows/matt-pocock/routes/review.md +19 -0
  120. package/template/workflows/matt-pocock/routes/setup.md +42 -0
  121. package/template/workflows/matt-pocock/routes/triage.md +25 -0
  122. package/template/workflows/matt-pocock/routes/wayfinder.md +27 -0
  123. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +74 -59
  124. package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -2
  125. package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +5 -5
  126. package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +2 -2
  127. package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +4 -4
  128. package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -3
  129. package/template/workflows/person/WORKFLOW.md +68 -0
  130. package/template/workflows/person/_state/.config/LESSONS.md +3 -0
  131. package/template/workflows/person/_state/.config/RULES.md +3 -0
  132. package/template/workflows/person/_state/changes/.gitkeep +1 -0
  133. package/template/workflows/person/_state/status.json +5 -0
  134. package/template/.speculo/.config/LESSONS.md +0 -9
  135. package/template/.speculo/.config/RULES.md +0 -11
  136. package/template/.speculo/AGENTS.md +0 -30
  137. package/template/.speculo/archive/AGENTS.md +0 -28
  138. package/template/.speculo/archive/dev/.gitkeep +0 -0
  139. package/template/.speculo/archive/person/.gitkeep +0 -0
  140. package/template/.speculo/dev/.gitkeep +0 -0
  141. package/template/.speculo/dev/docs-sync-state.json +0 -14
  142. package/template/.speculo/dev-status.json +0 -3
  143. package/template/.speculo/doc-status.json +0 -3
  144. package/template/.speculo/person/.gitkeep +0 -0
  145. package/template/.speculo/person-status.json +0 -1
  146. package/template/commands/archive.md +0 -68
  147. package/template/commands/caveman.md +0 -50
  148. package/template/commands/config-prune.md +0 -59
  149. package/template/commands/grill-me.md +0 -48
  150. package/template/commands/handoff.md +0 -59
  151. package/template/commands/scaffold-exercises.md +0 -56
  152. package/template/commands/write-a-skill.md +0 -52
  153. package/template/skills/caveman/SKILL.md +0 -38
  154. package/template/skills/caveman/references/compression-rules.md +0 -102
  155. package/template/skills/config-prune/SKILL.md +0 -44
  156. package/template/skills/config-prune/references/audit-rules.md +0 -38
  157. package/template/skills/grill-me/SKILL.md +0 -40
  158. package/template/skills/handoff/SKILL.md +0 -73
  159. package/template/skills/scaffold-exercises/SKILL.md +0 -41
  160. package/template/skills/scaffold-exercises/references/exercise-structure.md +0 -85
  161. package/template/skills/scaffold-exercises/references/lint-and-git.md +0 -54
  162. package/template/skills/speculo-write/SKILL.md +0 -56
  163. package/template/skills/speculo-write/references/asset-selection-sop.md +0 -67
  164. package/template/skills/speculo-write/references/authoring-quality-levers.md +0 -61
  165. package/template/skills/speculo-write/references/command-authoring-sop.md +0 -98
  166. package/template/skills/speculo-write/references/migration-sop.md +0 -101
  167. package/template/skills/speculo-write/references/persistence-contract-sop.md +0 -271
  168. package/template/skills/speculo-write/references/skill-authoring-sop.md +0 -212
  169. package/template/skills/speculo-write/references/validation-checklist.md +0 -85
  170. package/template/skills/speculo-write/references/workflow-authoring-sop.md +0 -165
  171. package/template/vendor/codebase-design/DEEPENING.md +0 -37
  172. package/template/vendor/codebase-design/DESIGN-IT-TWICE.md +0 -44
  173. package/template/vendor/codebase-design/SKILL.md +0 -114
  174. package/template/vendor/officecli/SKILL.md +0 -415
  175. package/template/vendor/resolving-merge-conflicts/SKILL.md +0 -14
  176. package/template/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +0 -107
  177. package/template/workflows/dev/01-grill-with-docs/grill-context-scan.md +0 -30
  178. package/template/workflows/dev/01-grill-with-docs/grill-decision.md +0 -38
  179. package/template/workflows/dev/02-prd/02-prd.md +0 -70
  180. package/template/workflows/dev/02-prd/prd-synthesis.md +0 -30
  181. package/template/workflows/dev/02-prd/prd-zoom-out.md +0 -29
  182. package/template/workflows/dev/03-tdd/03-tdd.md +0 -55
  183. package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +0 -34
  184. package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +0 -34
  185. package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +0 -34
  186. package/template/workflows/dev/03-tdd/mocking.md +0 -43
  187. package/template/workflows/dev/03-tdd/refactoring.md +0 -10
  188. package/template/workflows/dev/03-tdd/tdd-finish.md +0 -34
  189. package/template/workflows/dev/03-tdd/tdd-loop.md +0 -36
  190. package/template/workflows/dev/03-tdd/tdd-plan.md +0 -37
  191. package/template/workflows/dev/03-tdd/tests.md +0 -61
  192. package/template/workflows/dev/04-finalize/04-finalize.md +0 -57
  193. package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +0 -35
  194. package/template/workflows/dev/04-finalize/completion-gate.md +0 -41
  195. package/template/workflows/dev/04-finalize/finalize-archive.md +0 -55
  196. package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +0 -60
  197. package/template/workflows/dev/A-improve-architecture/HTML-REPORT.md +0 -123
  198. package/template/workflows/dev/A-improve-architecture/architecture-grill.md +0 -30
  199. package/template/workflows/dev/A-improve-architecture/architecture-review.md +0 -29
  200. package/template/workflows/dev/A-improve-architecture/architecture-scan.md +0 -37
  201. package/template/workflows/dev/AGENTS.md +0 -95
  202. package/template/workflows/dev/D-docs-sync/D-docs-sync.md +0 -140
  203. package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +0 -34
  204. package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +0 -34
  205. package/template/workflows/dev/D-docs-sync/agents-contract.md +0 -95
  206. package/template/workflows/dev/D-docs-sync/changelog-contract.md +0 -155
  207. package/template/workflows/dev/D-docs-sync/config-contract.md +0 -75
  208. package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +0 -86
  209. package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +0 -37
  210. package/template/workflows/dev/D-docs-sync/docs-sync-state.md +0 -47
  211. package/template/workflows/dev/D-docs-sync/docs-sync-update.md +0 -44
  212. package/template/workflows/dev/D-docs-sync/knowledge-extract.md +0 -66
  213. package/template/workflows/dev/D-docs-sync/readme-contract.md +0 -124
  214. package/template/workflows/dev/D-docs-sync/state-json-schema.md +0 -172
  215. package/template/workflows/dev/H-diagnose/H-diagnose.md +0 -108
  216. package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +0 -33
  217. package/template/workflows/dev/H-diagnose/agents/fix-agent.md +0 -34
  218. package/template/workflows/dev/H-diagnose/diagnose-fix.md +0 -34
  219. package/template/workflows/dev/H-diagnose/diagnose-guide.md +0 -144
  220. package/template/workflows/dev/H-diagnose/diagnose-loop.md +0 -41
  221. package/template/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +0 -41
  222. package/template/workflows/dev/I-to-issues/I-to-issues.md +0 -79
  223. package/template/workflows/dev/I-to-issues/issues-slices.md +0 -211
  224. package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +0 -74
  225. package/template/workflows/dev/M-domain-modeling/CONTEXT-FORMAT.md +0 -67
  226. package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +0 -102
  227. package/template/workflows/dev/R-review/R-review.md +0 -75
  228. package/template/workflows/dev/R-review/agents/engineering-review-agent.md +0 -33
  229. package/template/workflows/dev/R-review/agents/spec-review-agent.md +0 -34
  230. package/template/workflows/dev/R-review/agents/standards-review-agent.md +0 -34
  231. package/template/workflows/dev/R-review/code-quality-checklist.md +0 -118
  232. package/template/workflows/dev/R-review/removal-checklist.md +0 -53
  233. package/template/workflows/dev/R-review/review-axes.md +0 -61
  234. package/template/workflows/dev/R-review/review-setup.md +0 -111
  235. package/template/workflows/dev/R-review/review-verdict.md +0 -43
  236. package/template/workflows/dev/R-review/security-checklist.md +0 -126
  237. package/template/workflows/dev/R-review/solid-checklist.md +0 -73
  238. package/template/workflows/dev/_templates/diagnosis-template.md +0 -20
  239. package/template/workflows/dev/_templates/docs-sync-report-template.md +0 -45
  240. package/template/workflows/dev/_templates/docs-sync-state-template.json +0 -14
  241. package/template/workflows/dev/_templates/domain-model-log-template.md +0 -20
  242. package/template/workflows/dev/_templates/grill-context-map-template.md +0 -20
  243. package/template/workflows/dev/_templates/grill-decision-log-template.md +0 -20
  244. package/template/workflows/dev/_templates/issues-slices-template.md +0 -106
  245. package/template/workflows/dev/_templates/overview-template.md +0 -19
  246. package/template/workflows/dev/_templates/prd-template.md +0 -26
  247. package/template/workflows/dev/_templates/regression-template.md +0 -20
  248. package/template/workflows/dev/_templates/review-report-template.md +0 -30
  249. package/template/workflows/dev/_templates/review-sources-template.md +0 -33
  250. package/template/workflows/dev/_templates/review-verdict-template.md +0 -33
  251. package/template/workflows/dev/_templates/tdd-log-template.md +0 -23
  252. package/template/workflows/dev/_templates/tdd-plan-template.md +0 -35
  253. package/template/workflows/dev/_templates/tdd-verification-template.md +0 -26
  254. package/template/workflows/doc/AGENTS.md +0 -80
  255. package/template/workflows/doc/B-writing-beats/B-writing-beats.md +0 -79
  256. package/template/workflows/doc/B-writing-beats/writing-beats-append.md +0 -31
  257. package/template/workflows/doc/B-writing-beats/writing-beats-options.md +0 -29
  258. package/template/workflows/doc/E-edit-article/E-edit-article.md +0 -79
  259. package/template/workflows/doc/E-edit-article/edit-article-plan.md +0 -30
  260. package/template/workflows/doc/E-edit-article/edit-article-rewrite.md +0 -31
  261. package/template/workflows/doc/F-writing-fragments/F-writing-fragments.md +0 -80
  262. package/template/workflows/doc/F-writing-fragments/writing-fragments-interview.md +0 -32
  263. package/template/workflows/doc/F-writing-fragments/writing-fragments-log.md +0 -29
  264. package/template/workflows/doc/S-writing-shape/S-writing-shape.md +0 -81
  265. package/template/workflows/doc/S-writing-shape/writing-shape-block.md +0 -32
  266. package/template/workflows/doc/S-writing-shape/writing-shape-opening.md +0 -27
  267. package/template/workflows/doc/T-teach/T-teach.md +0 -64
  268. package/template/workflows/doc/T-teach/teach-lesson-wrap.md +0 -63
  269. package/template/workflows/doc/T-teach/teach-lesson.md +0 -53
  270. package/template/workflows/doc/T-teach/teach-mission.md +0 -33
  271. package/template/workflows/doc/T-teach/teach-resources.md +0 -36
  272. package/template/workflows/doc/_templates/edit-article-plan-template.md +0 -25
  273. package/template/workflows/doc/_templates/edit-article-template.md +0 -7
  274. package/template/workflows/doc/_templates/teach-glossary-template.md +0 -26
  275. package/template/workflows/doc/_templates/teach-learning-record-template.md +0 -38
  276. package/template/workflows/doc/_templates/teach-lesson-html-template.md +0 -24
  277. package/template/workflows/doc/_templates/teach-mission-template.md +0 -19
  278. package/template/workflows/doc/_templates/teach-resources-template.md +0 -18
  279. package/template/workflows/doc/_templates/writing-article-template.md +0 -7
  280. package/template/workflows/doc/_templates/writing-beat-options-template.md +0 -21
  281. package/template/workflows/doc/_templates/writing-fragments-template.md +0 -7
  282. package/template/workflows/doc/_templates/writing-interview-log-template.md +0 -21
  283. package/template/workflows/doc/_templates/writing-shape-log-template.md +0 -25
  284. package/template/workflows/person/AGENTS.md +0 -72
  285. /package/template/{.speculo/.config/adr → workflows/matt-pocock/_state/archive}/.gitkeep +0 -0
  286. /package/template/{.speculo/.config/context → workflows/matt-pocock/_state/changes}/.gitkeep +0 -0
  287. /package/template/{.speculo/archive/doc → workflows/person/_state/.config/context}/.gitkeep +0 -0
  288. /package/template/{.speculo/doc → workflows/person/_state/archive}/.gitkeep +0 -0
@@ -1,41 +0,0 @@
1
- # Diagnose Loop Phase
2
-
3
- ## 输入
4
-
5
- - 用户描述的失败现象、日志、trace、性能症状或失败测试
6
- - 可运行的测试、脚本、服务、CLI 或浏览器自动化
7
- - `H-diagnose.md` 中的内置诊断指引(含独立使用协议与自初始化步骤)
8
- - 同目录 `diagnose-guide.md`(含独立诊断时的信息采集协议)
9
-
10
- ### 独立进入时的上下文自采集
11
-
12
- 若无上游工作流产物(PRD、decision-log 等),在进入反馈循环构建前,按 `diagnose-guide.md` 的「独立诊断时的信息采集」执行以下快速自采集,**不要求用户先执行其他工作流**:
13
-
14
- 1. `git log --oneline -30` + 搜索错误关键符号 → 定位相关代码区域
15
- 2. 读取问题模块及其测试 → 理解预期行为
16
- 3. 检查 `speculo/.speculo/.config/` 下的项目规则与 ADR → 了解约束
17
- 4. 仅在代码库探索穷尽后,使用 `AskUserQuestion` 向用户索取无法从仓库获取的信息(复现环境、日志文件等)
18
-
19
- ## 产物
20
-
21
- - `speculo/.speculo/dev/<change>/diagnosis.md`,由 `../_templates/diagnosis-template.md` 填写
22
-
23
- ## 填写引导
24
-
25
- 1. 遵循 `H-diagnose.md` 的内置诊断指引,并按需读取 `diagnose-guide.md`。
26
- 2. 先建立快速、确定、可信的反馈循环。
27
- 3. 没有反馈循环时停止假设阶段,记录已尝试方法和需要用户提供的材料。
28
- 4. 复现后提出 3-5 个排序假设,并把每个假设写成可证伪预测。
29
- 5. 插桩必须映射到具体预测,并使用可清理的唯一调试标记。
30
- 6. 性能回退先建立基线测量,再二分或假设检验;先测量,后修复。
31
-
32
- ## 边界
33
-
34
- - 不在未复现或无可信反馈循环时进入修复。
35
- - 不把无关日志批量加入代码。
36
- - 不默认保留一次性调试脚本。
37
-
38
- ## 完成准则
39
-
40
- - `diagnosis.md` 无残留 `[TODO:]`
41
- - `.status.json` 已记录 `feedback_loop` 和 `hypothesis_status`
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env bash
2
- # 人在环路的复现循环。
3
- # 复制此文件,编辑下方步骤,然后运行。
4
- # agent 运行脚本;用户在终端中跟随提示操作。
5
- #
6
- # 用法:
7
- # bash hitl-loop.template.sh
8
- #
9
- # 两个辅助函数:
10
- # step "<指令>" → 显示指令,等待 Enter
11
- # capture VAR "<问题>" → 显示问题,将回答读入 VAR
12
- #
13
- # 结束时,捕获的值以 KEY=VALUE 格式打印供 agent 解析。
14
-
15
- set -euo pipefail
16
-
17
- step() {
18
- printf '\n>>> %s\n' "$1"
19
- read -r -p " [完成后按 Enter] " _
20
- }
21
-
22
- capture() {
23
- local var="$1" question="$2" answer
24
- printf '\n>>> %s\n' "$question"
25
- read -r -p " > " answer
26
- printf -v "$var" '%s' "$answer"
27
- }
28
-
29
- # --- edit below ---------------------------------------------------------
30
-
31
- step "在浏览器中打开 http://localhost:3000 并登录。"
32
-
33
- capture ERRORED "点击「导出」按钮。是否报错了?(y/n)"
34
-
35
- capture ERROR_MSG "粘贴错误信息(或输入 'none'):"
36
-
37
- # --- edit above ---------------------------------------------------------
38
-
39
- printf '\n--- 已捕获 ---\n'
40
- printf 'ERRORED=%s\n' "$ERRORED"
41
- printf 'ERROR_MSG=%s\n' "$ERROR_MSG"
@@ -1,79 +0,0 @@
1
- ---
2
- id: dev/I-to-issues
3
- category: dev
4
- name: To Issues
5
- description: 将 PRD、计划或诊断结论拆成可独立接手的垂直切片 issue
6
- keywords: [issues, slices, vertical, AFK, HITL, 切片]
7
- ---
8
-
9
- # To Issues 工作流执行指引
10
-
11
- 本工作流是 `dev/I` 入口。它既可独立执行,也可嵌入 `dev/01`、`dev/02`、`dev/03` 或 `dev/H`,用于生成垂直切片。
12
-
13
- ## 铁律
14
-
15
- ```
16
- 没有精确到文件路径的改动清单,不算垂直切片
17
- ```
18
-
19
- ## 内置文档
20
-
21
- - `issues-slices.md` — 切片分解规范、深度搜索协议、质量准则与提问协议
22
- - `../_templates/issues-slices-template.md` — `slices.md` 骨架
23
- - `../../../vendor/codebase-design/SKILL.md` — 设计词汇单一事实源(模块 / 接口 / 接缝 / 适配器 / 深度 / 杠杆 / 局部性)
24
-
25
- ## 输入与输出
26
-
27
- - **输入**:PRD、计划、诊断结论或当前对话;当前 change 目录 `speculo/.speculo/dev/<change>/`
28
- - **输出**:`slices.md`(垂直切片清单、依赖、HITL/AFK 标记、验收标准);可选外部 issue 引用
29
-
30
- ## 垂直切片规则
31
-
32
- - 每个切片交付一条贯穿所有层的窄但完整路径;优先多个薄切片而非少数厚切片
33
- - 切片标记 `HITL` 或 `AFK`;尽可能优先 AFK
34
- - 默认只生成本地切片计划;仅 tracker 已配置且用户明确要求时才发布外部 issue
35
-
36
- ## 独立使用
37
-
38
- 本工作流**零硬依赖**。只需用户描述任务意图 + 当前 git 仓库即可启动。
39
-
40
- 1. **change 目录**:若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
41
- 2. **信息自采集**:无上游产物时,按 `issues-slices.md`「独立进入时的深度搜索协议」自行采集。
42
- 3. **存疑即问**:仅在代码库探索无法确定的决策分支上,按 `issues-slices.md`「存疑时的提问协议」使用 `AskUserQuestion`。
43
-
44
- ### 缺少 change 目录时
45
-
46
- 若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
47
-
48
- ## 阶段
49
-
50
- ### 1. Slice Issues — 垂直切片分解
51
- - id:`slice-issues`
52
- - 规范:`issues-slices.md`
53
- - 模板:`../_templates/issues-slices-template.md`
54
- - 产物:`slices.md`
55
- - 完成准则:
56
- - §0 含已确认决策、当前现状与关键核实结论
57
- - 每个切片有文件表、实现要点、验收切片;删除型切片标注保留/不动
58
- - 涉及 schema 变更时 §2.5 已填写;§5.5 关键决策已汇总;§8 验证总览存在
59
- - `slices.md` 无残留 `[TODO:]`
60
-
61
- ## 依赖
62
-
63
- - 硬依赖:无
64
- - 软依赖:同 change 下若有 `prd.md`、`diagnosis.md` 等可继承加速;完成后通常移交 `../03-tdd/03-tdd.md`
65
-
66
- ## 状态扩展字段
67
-
68
- - `dev_entry` (string) — 固定为 `dev/I`
69
- - `embedded_guides` (array) — 包含 `to-issues`
70
- - `slice_count` (number)
71
- - `hitl_slice_count` (number)
72
- - `published_issue_refs` (array)
73
- - `issue_tracker_mode` (disabled | local-only | publish-requested | published)
74
-
75
- ## 完成与状态更新
76
-
77
- - 默认只生成本地 `slices.md`。
78
- - 只有 tracker 已配置且用户明确要求时才发布外部 issue。
79
- - 完成后不自动完成 change;通常移交 `../03-tdd/03-tdd.md`。
@@ -1,211 +0,0 @@
1
- # Slice Issues Phase
2
-
3
- > 本阶段将 PRD、计划或诊断结论拆为**可独立验证的垂直切片**(tracing bullet),产出一份可被下游直接接手的**切片计划** `slices.md`。
4
- > `slices.md` 借鉴高质量 plan 的纪律——以厚 Context(已确认决策 + 关键核实结论)开篇,按依赖排序的切片展开,
5
- > 每切片标注保留/不动,并以分层验证收口;同时保留 HITL/AFK 标记、用户确认与 issue 发布流程。
6
-
7
- ## 独立进入时的深度搜索协议
8
-
9
- 当本工作流独立进入(无上游 PRD、decision-log、diagnosis 等产物)时,在执行切片分解前先按以下步骤自行采集上下文。**不要求用户先执行 dev/01、dev/02 或其他工作流。**
10
-
11
- ### 第一轮:项目全景扫描
12
-
13
- 1. **目录结构探索**:遍历项目顶层目录(`src/`、`core/`、`tests/`、`docs/` 等),建立模块边界心智模型
14
- 2. **项目规范读取**:读取 `AGENTS.md`、`README.md`、`CONTRIBUTING.md`,提取架构约定、命名规范、测试策略
15
- 3. **配置与依赖**:读取 `package.json`(或等效构建文件),了解技术栈、依赖和脚本入口
16
- 4. **Speculo 状态读取**:读取 `speculo/.speculo/.config/RULES.md`、`speculo/.speculo/.config/adr/`、`speculo/.speculo/dev-status.json`,了解项目决策与当前活跃 change
17
- 5. **近期变更趋势**:`git log --oneline -30` 了解近期工作方向
18
-
19
- ### 第二轮:领域上下文采集
20
-
21
- 6. **搜索相关代码**:按用户意图关键词在项目中 `grep -rn`,定位所有相关代码路径、注释、TODO
22
- 7. **文档检索**:搜索 `speculo/.speculo/doc/` 和 `speculo/.speculo/archive/` 中已有的领域分析、设计文档
23
- 8. **测试即规格**:阅读相关模块的现有测试文件——测试描述了系统契约和边界行为
24
- 9. **git 考古**:对关键路径执行 `git log -p -- <path>` 理解模块的演进动机
25
-
26
- ### 第三轮:锁定未决分支
27
-
28
- 10. **已确认决策的底线**:从以上探索中能确定的事实写入 §0「已确认决策」;无法从代码/文档确定的分支标记为 `[待确认]`
29
- 11. **提问收敛**:对标记 `[待确认]` 的决策分支,按「存疑时的提问协议」逐一锁定——但仅在代码库探索穷尽后
30
-
31
- ### 采集成果写入
32
-
33
- - 探索确认的事实 → §0「关键核实结论」(注明行号近似)
34
- - 从代码/文档提取的约束 → §1 IN/REUSE/OUT、§2 架构约束
35
- - 无法从代码库确定的 → `[待确认]` 标记,按提问协议处理
36
- - 从 `overview.md` 或现有文档继承的风险 → §6 风险与回滚
37
-
38
- ## 输入
39
-
40
- - `prd.md`、`decision-log.md`、`diagnosis.md`、现有 issue 或用户计划(均为可选;缺失时按「独立进入时的深度搜索协议」自行采集)
41
- - 可选 issue tracker 配置和标签词汇表
42
- - `I-to-issues.md` 中的内置切片指引、「切片计划质量准则」与「独立使用」协议
43
- - 同级 change 目录下已有的 `context-map.md`、`decision-log.md`、`overview.md`(若存在,用于继承领域术语、已确认决策、风险与 ADR 引用;不存在则按深度搜索协议自采集)
44
-
45
- ## 产物
46
-
47
- - `speculo/.speculo/dev/<change>/slices.md`,由 `../_templates/issues-slices-template.md` 填写
48
-
49
- ## `slices.md` 结构规范
50
-
51
- `issues-slices-template.md` 提供模板骨架;AI 填写时按下述结构展开。`[必填]` 段每份都要,`[条件]` 段有则填、单文件小改可省。
52
- > 最小形态(单文件小改):§0(简) + §1 + §3(单切片) + §5 + §8。复杂 change:全段铺开(含 §2.5 数据库表、§5.5 关键决策、切片内文件表和实现要点)。
53
-
54
- ### 0. 战略与背景(Context)—— [必填]
55
-
56
- 本段是整份切片计划的决策锚点,含五块:
57
-
58
- - **一句话战略**:单句概括「做什么 + 为什么 + 怎么做到(以现有系统为基底 / 新建 / 复用)」。
59
- - **已确认决策**:逐条列出与用户拍板的范围/取舍决策,防止下游重新扯皮。**有 `decision-log.md` 则继承其「已确认决策」段;独立进入(无上游)时在此自采集**。
60
- - **当前现状**:逐条列出与需求不符的现有实现、缺失的能力或待修复的问题。每条含:`文件路径:行号范围` + 当前值/行为 + 为什么不满足需求。独立进入时从代码库探索采集;有上游 PRD 或 diagnosis 则继承其发现。格式示例:`RegexConstants.PASSWORD` 为正则 `^(?=.*[a-z])...`(要求四类全含)——与需求「至少三类」不符。
61
- - **关键核实结论**:探索阶段确认的事实(依赖关系、唯一调用点、可删/须留边界等)。**必须显式写明「行号为近似、实施时以现场代码为准」**,避免下游照搬过期行号。
62
- - **预期产出**:1–2 句描述本 change 完成后的可观察结果。
63
-
64
- ### 1. 范围边界(IN / REUSE / OUT)—— [必填]
65
-
66
- 三列表格,逐条列出:
67
- - **IN** —— 本次必造的新能力(每项可对应后续一个或多个切片)
68
- - **REUSE** —— 复用现有系统的能力(不改动,只收编进新地基)
69
- - **OUT** —— 本期不做、留给后续迭代的内容(吸收「明确不做」边界)
70
-
71
- 表格来源优先从 PRD 或用户指令提取;若来源未明确,用 `[待确认]` 标记并提请用户补充。
72
-
73
- ### 2. 架构上下文 —— [条件]
74
-
75
- 若 change 涉及多模块或改动既有架构,本节记录:
76
- - 涉及的 `core/` / `src/` / `src-tauri/`(或本项目对应分层)模块及其职责分工
77
- - 新增模块的定位(一句话职责 + 落点目录)
78
- - 不可逾越约束(来自 `AGENTS.md` 或 PRD 的硬性规则)
79
- - 可选 ASCII 分层图,标出依赖方向(如 `src → core → src-tauri`)
80
-
81
- > **设计词汇**:描述模块、接口与接缝时统一使用 `../../../vendor/codebase-design/SKILL.md` 的词汇(模块 / 接口 / 接缝 / 适配器 / 深度),不要散用「组件 / 服务 / 边界」。某切片是否值得切出新接缝,按「一个适配器 = 假设接缝,两个适配器 = 真实接缝」判定。
82
-
83
- 单文件修复或热点 patch 可省略本节。
84
-
85
- ### 2.5. 涉及的数据库表 —— [条件]
86
-
87
- 若 change 涉及数据库 schema 变更(新建表、新增字段、字段语义调整),用三列表格记录:
88
-
89
- | 表 | 变更 |
90
- |----|------|
91
-
92
- 变更描述规则:
93
- - **新建**表:列出全部字段名 + 类型 + PRIMARY KEY + UNIQUE KEY + INDEX,注明建表 DDL 追加到哪个 sql 文件末尾
94
- - **新增**字段:`字段名 类型 DEFAULT 默认值 COMMENT '注释'`,注明 ALTER TABLE 追加到哪个 sql 文件末尾
95
- - **字段语义调整**:`旧字段名 → 新语义`(不变更数据库结构,仅改代码层注释/映射)
96
- - **无结构变更**:纯逻辑变更(如增加唯一性校验)不产生 DDL,在此注明即可
97
-
98
- > SQL 追加原则:所有 DDL 变更追加到对应 sql 文件末尾,遵循只追加不修改原则。
99
-
100
- ### 3. 切片(slices)—— [必填]
101
-
102
- 每个切片是**一个从数据到 UI 的端到端闭环**(窄而完整)。切片按依赖顺序排列;每个切片包含:
103
-
104
- ```markdown
105
- ### 切片 N · 切片名称
106
- <phase id="<phase-id>" status="未开始"><!-- 未开始 → 已实现(dev/03) → 已验证(dev/04) --></phase>
107
-
108
- - **类型:** `AFK` | `HITL`
109
- - **阻塞于:** 切片 M(或「无」)
110
- - **覆盖:** PRD 章节 / US 编号 / 用户故事简述
111
- - **需阅读的文件:** 实现本切片前需理解的现有代码(| 文件 | 目的 | 表);单文件小改可省略
112
- - **交付物:** 该切片产出的具体文件/模块/功能清单
113
- - **需修改的文件:** 本切片要改动的文件(| 文件 | 改动内容 | 表);新增文件标 **新增**,重度重构标 **重度重构**
114
- - **保留/不动:** 本切片**不能碰**的代码/契约/数据(如冻结常量、共享依赖、邻近功能);无则写「无」
115
- - **复用:** 复用哪些现有能力(模块/文件/命令)
116
- - **实现要点:** 关键技术决策、算法细节、并发控制、兜底策略(编号列表);单文件小改可省略
117
- - **验收切片:** 一个可独立执行的验证命令或手动检查步骤,证明本切片完成;**删除型切片须含残留扫描**(如 `grep -rn "<符号>" <范围>` 应 0 命中)
118
- - **对齐:** PRD FR-xxx 或 issue 引用
119
- - **ADR 引用:** (可选)关联的工程层 ADR 编号
120
- ```
121
-
122
- - `<phase id="...">` 是稳定的阶段标识(如 `phase0-node-base`、`phase1-templates`),供 `dev/03` TDD 工作流引用。单阶段 change 用 `phase0-<slug>`。
123
- - `status` 枚举:`未开始`(切片创建时) → `已实现`(TDD finish 置入) → `已验证`(finalize 置入)。状态只前进不回退。
124
- - **需阅读/需修改的文件表**:借鉴高质量 plan 的双表模式——读文件表让执行者知道上下文边界,改文件表让执行者知道改动面和操作类型(新增/修改/重构)。单文件小改的切片可省略读文件表。
125
- - **实现要点**:每个切片列出 3-7 条关键技术点,让执行者拿到切片就知道怎么下手。包含算法细节、并发控制、兼容/兜底策略等。
126
-
127
- ### 4. 横切关注点与铁律(贯穿所有切片)—— [必填]
128
-
129
- 列出跨切片一致的规则、约束与不可违反的铁律,如:
130
- - **数据安全铁律**:必须冻结的常量 / wire-format / 密文格式(改了即用户数据损坏)——显式列出,标「不动」。
131
- - **契约先行**:磁盘契约先改 zod + fixtures 再改解析。
132
- - **删缓存可重建**铁律。
133
- - 范围隔离规则(不 import 旧子系统等)、命名消歧规则。
134
- - **行号现场核对纪律**:本计划内所有行号为近似,实施时以现场代码为准。
135
-
136
- ### 5. 依赖顺序速查 —— [必填]
137
-
138
- ASCII 依赖链,展示切片先后顺序:
139
-
140
- ```
141
- P0 切片0 名称 ← 不可回退,最先
142
- P1 切片1 名称
143
- P2 切片2 名称 依赖 P0+P1
144
- ...
145
- ```
146
-
147
- ### 6. 风险与回滚 —— [条件]
148
-
149
- 本期涉及删除、数据迁移、外部副作用或高耦合改动时填写;纯增量的单文件小改可省。逐条列出风险、触发条件、缓解与回滚手段(表格形式)。**有 `overview.md` 的「风险与未知点」则继承并细化**。
150
-
151
- ### 7. 退役清单 —— [条件]
152
-
153
- 仅当本 change **删除既有能力**时填写:用「项 / 处置 / 验证」表逐条记录被删/被迁的内容及其去向,作为兜底核对。
154
-
155
- ### 8. 验证总览 —— [必填(轻)]
156
-
157
- change 级验证 roll-up,补足每切片「验收切片」的整体闭环(按适用项填,不适用标「N/A」):
158
- - **静态检查**:构建 / 类型 / lint。
159
- - **测试**:单测 / 契约校验。
160
- - **残留扫描**:对删除项 grep,应 0 命中。
161
- - **E2E 冒烟**:真实运行应用走查关键路径。
162
- - **迁移测试**:若涉及持久化 / 格式 / 键名迁移,预置旧数据验证向后兼容。
163
-
164
- > **判据:** 每个切片的「验收切片」全部通过即该切片完成;§8 验证总览整体通过 = change 可进入 `dev/04` 收尾。
165
-
166
- ## 存疑时的提问协议(决策树)
167
-
168
- 切分切片或填 §0「已确认决策」时若有未决分支,**不要臆测**——先用代码库探索尝试确定,无法确定时再用 `AskUserQuestion` 按决策树逐一锁定;本协议产出的共识即写入 §0:
169
-
170
- 1. **定位关键问题**:识别当前最影响方案正确性的那一个未决问题。
171
- 2. **先查后问**:若答案能用本地代码 / 文档 / 配置确认,先读相关材料;搜索 `grep -rn`、`git log`、读取测试文件。能从仓库确定则不问。
172
- 3. **一次一问**:每次只问一个问题,不打包问题组。
173
- 4. **带推荐**:每个问题给出推荐答案并说明理由(基于已探索的代码库上下文)。
174
- 5. **回答后收敛**:用户回答后,更新 §0「已确认决策」与剩余分支。
175
- 6. **遍历至共识**:沿决策树继续,直到核心分支达成共识或用户叫停。
176
-
177
- ## 填写引导
178
-
179
- 1. 遵循 `I-to-issues.md` 的内置切片指引与「切片计划质量准则」,以及本文件的结构规范。
180
- 2. **写 Context(§0)**:提炼一句话战略;**采集或继承已确认决策**(有 `decision-log.md` 则继承);**梳理当前现状**(逐条记录与需求不符的现有实现,精确到文件路径+行号);**记录关键核实结论**(写明行号为近似、现场核对);点明预期产出。未决分支按「存疑时的提问协议」逐一锁定。
181
- 3. **采集范围**:从 PRD / decision-log / diagnosis / 用户指令中提取 IN/REUSE/OUT 三列、架构上下文和 ADR 引用;不确定的标记 `[待确认]`。
182
- 4. **记录数据库变更(§2.5)**:涉及 schema 变更时,用「涉及的数据库表」表记录每张表的变更(新建/新增字段/语义调整),DDL 注明 sql 文件和追加位置。
183
- 5. **切分垂直切片(§3)**:优先窄而完整、优先 AFK;每个切片必须写明**需阅读的文件**(\| 文件 \| 目的 \|)、**需修改的文件**(\| 文件 \| 改动内容 \|,新增标 **新增**,重构标 **重度重构**)、**实现要点**(编号列表)、用户可独立验证的「验收切片」,并标注**保留/不动**;删除型切片在验收里配残留扫描。
184
- 6. **标注 phase id**:为每个切片生成稳定的 `<phase id="...">` 标识(kebab-case),供 TDD 阶段直接引用。
185
- 7. **填条件段**:涉及删除 / 迁移 / 外部副作用时补 §6 风险与回滚、§7 退役清单;多模块时补 §2 架构上下文。
186
- 8. **汇总关键决策(§5.5)**:将跨切片的技术选型与取舍写入「关键决策」段(方案选择、字段复用/新建决策、SQL 追加规则等),防止下游反复争论。
187
- 9. **收口验证(§8)**:列出静态 / 测试 / 残留扫描 / E2E / 迁移的整体验证项。
188
- 10. 用编号列表向用户确认粒度、依赖、HITL/AFK 标记、phase id 和是否需要发布外部 issue。
189
- 11. 按依赖顺序记录切片;发布外部 issue 时也按依赖顺序发布。
190
- 12. 迭代直到用户批准分解;未批准前不发布外部 issue。
191
-
192
- ## 边界
193
-
194
- - 不关闭或修改父级 issue。
195
- - 不默认发布到外部 tracker。
196
- - 不写实现代码。
197
- - 不编造来源;PRD/ADR/issue 引用必须真实存在。
198
- - 不照搬过期行号:所有行号为近似,实施期以现场代码为准。
199
-
200
- ## 完成准则
201
-
202
- - `slices.md` 无残留 `[TODO:]`
203
- - §0 战略与背景含已确认决策、**当前现状**与关键核实结论(独立进入时自采集,有上游则继承)
204
- - 存疑点已按「存疑时的提问协议」逐一与用户锁定,或显式标记 `[待确认]`
205
- - 每个切片都有 `<phase id="...">` 标识、类型、依赖、覆盖来源、**需阅读/需修改文件表**、**实现要点**、验收切片;删除型切片标注保留/不动且验收含残留扫描
206
- - IN/REUSE/OUT 表格完整(无法确定时标 `[待确认]` 并已获用户补充)
207
- - 涉及 schema 变更时 §2.5 数据库表已填写(表名、变更类型、DDL 位置)
208
- - §5.5 关键决策已汇总跨切片技术选型与取舍
209
- - §8 验证总览存在(静态 / 残留扫描 / 冒烟按适用项填)
210
- - 适用时已填条件段(§2 架构 / §2.5 数据库表 / §5.5 关键决策 / §6 风险 / §7 退役)
211
- - `.status.json` 已记录 `slice_count`、`hitl_slice_count` 和 `issue_tracker_mode`
@@ -1,74 +0,0 @@
1
- # ADR 格式
2
-
3
- 本文是项目架构决策记录(ADR)格式与判据的**单一事实源**,由 `dev/M-domain-modeling` 拥有,`dev/01`、`dev/04`、`dev/A` 等工作流按需引用。
4
-
5
- 默认产物写入调用方工作流的会话产物(如 `decision-log.md`、`domain-model-log.md`);只有用户明确确认时,才按本格式创建项目 ADR。
6
-
7
- ADR 存放在 `speculo/.speculo/.config/adr/` 目录下,使用顺序编号:`0001-slug.md`、`0002-slug.md`,以此类推。`speculo/.speculo/.config/adr/` 目录由 Speculo 初始化提供;如果目标项目缺失该目录,按需创建。
8
-
9
- ## 模板
10
-
11
- ```md
12
- # {决策的简短标题}
13
-
14
- {1-3 句话:背景是什么、我们决定了什么、为什么这样决定。}
15
- ```
16
-
17
- 就这些。一个 ADR 可以只是一段话。价值在于记录「做出了某个决策」以及「为什么」——而不是填满各个章节。
18
-
19
- ## 生命周期元数据
20
-
21
- 默认 ADR 不需要元数据。只有当决策需要生命周期联动时,在标题下方放极简字段:
22
-
23
- ```md
24
- # {决策的简短标题}
25
-
26
- Status: accepted
27
- superseded_by: null
28
-
29
- {1-3 句话:背景是什么、我们决定了什么、为什么这样决定。}
30
- ```
31
-
32
- 允许值:
33
-
34
- - `Status: proposed | accepted | deprecated | superseded`
35
- - `superseded_by: ADR-NNNN | null`
36
-
37
- 当新 ADR 取代旧 ADR 时:
38
-
39
- - 新 ADR 正文说明取代了哪个 ADR 以及原因。
40
- - 旧 ADR 顶部更新为 `Status: superseded` 和 `superseded_by: ADR-NNNN`。
41
- - 若项目有 ADR 索引或 README,同步状态和取代链。
42
- - 任何 CONTEXT、AGENTS、README 或 docs 中的旧 ADR 引用都必须改为新 ADR、删除,或标记为待确认。
43
-
44
- ## 可选章节
45
-
46
- 只有确实能增加价值时才包含以下章节。大多数 ADR 不需要它们。
47
-
48
- - **Status** 前置元数据(见「生命周期元数据」)—— 当决策被重新审视时很有用
49
- - **Considered Options** —— 只有被拒绝的替代方案值得记住时才写
50
- - **Consequences** —— 只有非显而易见的下游影响需要指出时才写
51
-
52
- ## 编号
53
-
54
- 扫描 `speculo/.speculo/.config/adr/` 找到已有的最大编号,然后加一。
55
-
56
- ## 何时提议创建 ADR
57
-
58
- 以下三个条件必须同时满足:
59
-
60
- 1. **难以逆转** —— 日后改变主意的代价不可忽略
61
- 2. **缺少上下文会令人意外** —— 未来的读者看到代码会疑惑「他们到底为什么要这样做?」
62
- 3. **真实权衡的结果** —— 确实存在替代方案,而你基于特定原因选择了其中一个
63
-
64
- 如果一个决策很容易逆转,就跳过它——你反正会逆转它。如果它不令人意外,没人会疑惑为什么。如果没有真正的替代方案,除了「我们做了显而易见的事」之外没有什么可记录的。
65
-
66
- ### 哪些情况应该写 ADR
67
-
68
- - **架构形态。** 「我们使用 monorepo。」「写模型采用事件溯源,读模型投射到 Postgres。」
69
- - **上下文之间的集成模式。** 「Ordering 和 Billing 通过领域事件通信,而非同步 HTTP。」
70
- - **带有锁定效应的技术选型。** 数据库、消息总线、认证提供商、部署目标。不是每个库——只是那些换掉需要花一个季度的。
71
- - **边界和范围决策。** 「客户数据由 Customer 上下文拥有,其他上下文只通过 ID 引用。」明确的「不做」和「要做」同样有价值。
72
- - **刻意偏离显而易见的路径。** 「我们用原生 SQL 而非 ORM,因为 X。」任何理性读者会假设相反做法的地方。这能防止下一个工程师去「修复」某个刻意为之的设计。
73
- - **代码中看不见的约束。** 「因为合规要求,我们不能用 AWS。」「因为合作方 API 合约,响应时间必须在 200 ms 以内。」
74
- - **拒绝理由不明显的替代方案。** 如果你考虑过 GraphQL 但因为某些微妙原因选了 REST,记录下来——否则六个月后会有人再次提议 GraphQL。
@@ -1,67 +0,0 @@
1
- # CONTEXT.md 格式
2
-
3
- 本文是项目术语表(通用语言)写法的**单一事实源**,由 `dev/M-domain-modeling` 拥有,`dev/01`、`dev/02`、`dev/04`、`dev/D`、`dev/A` 等工作流按需引用。
4
-
5
- 只有用户明确确认时,才按本格式创建或更新 `speculo/.speculo/.config/context/CONTEXT.md` / `speculo/.speculo/.config/context/CONTEXT-MAP.md`;未确认的术语只记录到调用方工作流的会话产物(如 `decision-log.md`、`domain-model-log.md`)。
6
-
7
- ## 结构
8
-
9
- ```md
10
- # {上下文名称}
11
-
12
- {一到两句话描述这个上下文是什么、为什么存在。}
13
-
14
- ## 术语
15
-
16
- **订单(Order)**:
17
- {一到两句话描述该术语}
18
- _避免使用_:Purchase、transaction
19
-
20
- **发票(Invoice)**:
21
- 交付后向客户发送的付款请求。
22
- _避免使用_:Bill、payment request
23
-
24
- **客户(Customer)**:
25
- 下单的个人或组织。
26
- _避免使用_:Client、buyer、account
27
- ```
28
-
29
- ## 规则
30
-
31
- - **要有主见。** 当同一个概念有多个词汇时,选择最好的一个,将其他词列为「避免使用」的别名。
32
- - **显式标记冲突。** 如果某个术语被合混地使用,在「已标记的合混」中明确指出并给出解决方案。
33
- - **保持定义简洁。** 最多一到两句话。定义它「是什么」,而不是「做什么」。
34
- - **展示关系。** 使用粗体术语名称,在明显的地方表达基数关系。
35
- - **只包含本项目的上下文特有的术语。** 通用编程概念(超时、错误类型、工具模式)即使项目大量使用也不应该包含。添加术语前问自己:这是本项目上下文特有的概念,还是通用编程概念?只有前者才应该包含。
36
- - **当自然分组出现时,用子标题分组术语。** 如果所有术语属于一个紧密相关的领域,平铺列表即可。
37
- - **写一段示例对话。** 一段开发者与领域专家之间的对话,展示术语如何自然交互,并澄清相关概念之间的边界。
38
-
39
- ## 单上下文与多上下文仓库
40
-
41
- **单上下文(大多数仓库):** `speculo/.speculo/.config/context/CONTEXT.md` 记录项目级术语表。
42
-
43
- **多上下文:** `speculo/.speculo/.config/context/CONTEXT-MAP.md` 列出所有上下文、它们的位置以及它们之间的关系:
44
-
45
- ```md
46
- # 上下文映射
47
-
48
- ## 上下文
49
-
50
- - [Ordering](./ordering.md) —— 接收并跟踪客户订单
51
- - [Billing](./billing.md) —— 生成发票并处理付款
52
- - [Fulfillment](./fulfillment.md) —— 管理仓库拣货和发货
53
-
54
- ## 关系
55
-
56
- - **Ordering → Fulfillment**:Ordering 发出 `OrderPlaced` 事件;Fulfillment 消费这些事件开始拣货
57
- - **Fulfillment → Billing**:Fulfillment 发出 `ShipmentDispatched` 事件;Billing 消费这些事件生成发票
58
- - **Ordering ↔ Billing**:共享 `CustomerId` 和 `Money` 类型
59
- ```
60
-
61
- 本工作流自动推断适用哪种结构:
62
-
63
- - 如果 `speculo/.speculo/.config/context/CONTEXT-MAP.md` 存在,读取它以查找上下文
64
- - 如果只有 `speculo/.speculo/.config/context/CONTEXT.md`,则为单上下文
65
- - 如果都不存在,在第一个术语确定时按需创建 `speculo/.speculo/.config/context/CONTEXT.md`
66
-
67
- 当存在多个上下文时,推断当前主题与哪个上下文相关。如果不确定,就问。
@@ -1,102 +0,0 @@
1
- ---
2
- id: dev/M-domain-modeling
3
- category: dev
4
- name: Domain Modeling
5
- description: 主动构建与精炼项目领域模型——挑战术语、压测边界,并在决策结晶当下沉淀通用语言(CONTEXT)与架构决策(ADR)
6
- keywords: [domain-modeling, context, adr, ubiquitous-language, 领域建模, 术语, 通用语言]
7
- ---
8
-
9
- # Domain Modeling 工作流执行指引
10
-
11
- 本工作流是 `dev/M` 入口,也是 dev 分类**领域模型的横向纪律与格式单一事实源**:在设计与讨论中*主动*构建、精炼项目领域模型,并在术语和决策结晶的当下立即沉淀。它既可独立进入(`dev/M`),也被 `dev/01`、`dev/02`、`dev/04`、`dev/D` 与 `dev/A` 在各自阶段中引用。
12
-
13
- > **主动 vs 消费**:仅仅*读取* CONTEXT 取词汇**不是**本工作流——那是任何工作流都该有的一行习惯。本工作流用于你正在*改变*模型,而不仅是消费它时。
14
-
15
- ## 内置指引
16
-
17
- ### 何时使用
18
-
19
- 当 dev 工作流需要*改变*领域模型时使用——挑战或锐化术语、消解一词多义、记录难以逆转的架构决策、维护通用语言。典型触发:
20
-
21
- - 用户用词与现有 CONTEXT 冲突,或同一概念出现多个词
22
- - 讨论领域关系,需要用具体场景压测边界
23
- - 出现「难以逆转 + 缺上下文会令人意外 + 真实权衡」的决策,值得记成 ADR
24
- - 实现 / 重构 / PRD 中引入了 CONTEXT 里尚不存在的概念
25
-
26
- ### 输入
27
-
28
- - 用户的计划、设计或当前讨论
29
- - `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md`、`speculo/.speculo/.config/adr/` 与相关代码
30
- - 当前 change 目录:`speculo/.speculo/dev/<change>/`(`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`,例:`2026-06-12-model-ordering`)
31
-
32
- ### 输出
33
-
34
- - 会话沉淀记录:`speculo/.speculo/dev/<change>/domain-model-log.md`
35
- - 经用户确认后更新 `speculo/.speculo/.config/context/CONTEXT.md`(或 `CONTEXT-MAP.md`)
36
- - 经用户确认后在 `speculo/.speculo/.config/adr/` 新建 ADR
37
- - 需要用户决策的术语 / 边界问题,每次只问一个
38
-
39
- (`<change>` 格式:`YYYY-MM-DD-<kebab-name>`)
40
-
41
- ### 会话期间(主动纪律)
42
-
43
- 在讨论进行中持续执行,**不要批量**——在发生的当下捕获:
44
-
45
- - **对照词汇表挑战**:用户用词与 CONTEXT 现有语言冲突时立即指出。「你的词汇表把『取消』定义为 X,但你似乎指 Y——到底是哪个?」
46
- - **锐化模糊语言**:用户用含混或一词多义术语时,提出一个精确的规范术语。「你说『账户』——是指 Customer 还是 User?它们是不同的东西。」
47
- - **用具体场景压测**:讨论领域关系时,发明探测边界的场景,迫使精确界定概念之间的边界。
48
- - **与代码交叉引用**:用户陈述某事如何运作时,核对代码是否一致;矛盾即指出。「你的代码取消整个 Order,但你刚说支持部分取消——哪个对?」
49
- - **内联沉淀**:术语一旦解决,立即按 `CONTEXT-FORMAT.md` 更新(用户确认后写 `.config/context/`);未确认的只记到 `domain-model-log.md`。
50
- - **有节制地提供 ADR**:仅当「难以逆转 + 缺上下文会令人意外 + 真实权衡的结果」三条全部满足时,才按 `ADR-FORMAT.md` 提议创建 ADR;任一不满足则跳过。
51
-
52
- > `CONTEXT.md` 必须完全不含实现细节——它是词汇表,不是 spec、草稿本或实现决策仓库。
53
-
54
- ### 渐进披露
55
-
56
- - `CONTEXT-FORMAT.md`:撰写或更新项目术语表(CONTEXT / CONTEXT-MAP)时读取——**通用语言格式的单一事实源**。
57
- - `ADR-FORMAT.md`:判断是否该写 ADR、以何种格式写时读取——**ADR 格式与判据的单一事实源**。
58
-
59
- ### 独立使用
60
-
61
- 本工作流**零硬依赖**,无需预先执行其他工作流即可独立进入(`dev/M`)。只需用户的领域讨论 + 当前 git 仓库即可启动。
62
-
63
- ### 缺少 change 目录时
64
-
65
- 若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
66
-
67
- ## 阶段
68
-
69
- > **惰性创建文件**——只在需要写入时才创建。`.config/context/CONTEXT.md` 与 `.config/adr/` 由 Speculo 初始化提供;若目标项目缺失,在第一个术语 / ADR 解决时按需创建。
70
-
71
- ### 1. Model Session — 词汇与决策沉淀
72
- - id:`model-session`
73
- - 规范:本入口「会话期间(主动纪律)」+ 同目录 `CONTEXT-FORMAT.md`、`ADR-FORMAT.md`
74
- - 模板:`../_templates/domain-model-log-template.md`
75
- - 产物:`domain-model-log.md`;经用户确认后更新 `.config/context/` 与 `.config/adr/`
76
- - 完成准则:
77
- - 每个被挑战 / 锐化的术语都有结论(已写入 CONTEXT 或记为 `[待确认]`)
78
- - 每个 ADR 候选都已按三条判据裁决(提议创建,或显式跳过并记原因)
79
- - 写入 `.config/context/` 或 `.config/adr/` 的内容均经用户确认
80
- - `domain-model-log.md` 无残留 `[TODO:]`
81
-
82
- ## 依赖
83
-
84
- - 硬依赖:无
85
- - 软依赖:无。可独立进入;也被 `../01-grill-with-docs/01-grill-with-docs.md`、`../02-prd/02-prd.md`、`../04-finalize/04-finalize.md`、`../D-docs-sync/D-docs-sync.md`、`../A-improve-architecture/A-improve-architecture.md` 在其阶段中引用。
86
-
87
- ## 状态扩展字段
88
-
89
- 本工作流需在同 change 的 `.status.json` 追加:
90
-
91
- - `dev_entry` (string) — 固定为 `dev/M`
92
- - `embedded_guides` (array) — 包含 `domain-modeling`
93
- - `terms_resolved` (array) — 本会话解决的术语及结论
94
- - `adr_candidates` (array) — ADR 候选及裁决(`created` | `skipped` + 原因)
95
- - `context_write_status` (none | logged | context-updated | adr-created) — 领域模型沉淀状态
96
-
97
- ## 完成与状态更新
98
-
99
- - 进入 phase 时更新 `current_phase` 和 `phase_history`。
100
- - 术语 / 决策沉淀后更新 `terms_resolved`、`adr_candidates`、`context_write_status`。
101
- - 写 `.config/context/` 或 `.config/adr/` **前必须经用户确认**(持久化写入责任表中,这两处 AI 仅在用户确认后写入)。
102
- - 本工作流不自动完成 change;嵌入其他工作流时随宿主流程推进。