@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,17 @@
1
- export type WorkflowEntry = {
2
- category: string;
1
+ export type WorkflowPackage = {
2
+ id: string;
3
3
  name: string;
4
4
  displayName: string;
5
5
  description: string;
6
6
  };
7
- /** Map from category name (dev/doc/person) to its workflows. */
8
- export type WorkflowCatalog = Map<string, WorkflowEntry[]>;
7
+ export type WorkflowCatalog = Map<string, WorkflowPackage>;
9
8
  export type WorkflowSelection = {
10
- workflows: {
11
- category: string;
12
- name: string;
13
- }[];
14
- categories: Set<string>;
9
+ workflowIds: string[];
15
10
  };
16
- /**
17
- * Scan template/workflows/ to discover all available workflows grouped by category.
18
- * Skips non-directory entries and the _templates/ directory within each category.
19
- */
20
11
  export declare function discoverWorkflowCatalog(packageRoot: string): Promise<WorkflowCatalog>;
21
- /**
22
- * Scan a target speculo/workflows/ directory to discover which workflows
23
- * are already installed.
24
- */
25
- export declare function scanInstalledWorkflows(installRoot: string): Promise<{
26
- category: string;
27
- name: string;
28
- }[]>;
29
- /** Returns true when stdin is a TTY (interactive terminal). */
12
+ export declare function scanInstalledWorkflows(installRoot: string): Promise<string[]>;
30
13
  export declare function isInteractive(): boolean;
31
- /**
32
- * Interactive category-level workflow selection using @inquirer checkbox.
33
- *
34
- * In init mode, no categories are pre-selected — the user picks what they want.
35
- * In update mode, categories already installed are pre-selected (checked by default).
36
- *
37
- * Returns a WorkflowSelection containing every workflow in the selected categories.
38
- * If no categories are selected, returns an empty selection (only .speculo, commands,
39
- * and skills are installed).
40
- *
41
- * When stdin is not a TTY (pipe, redirect), falls back to selecting all categories.
42
- */
43
- export declare function promptCategorySelection(catalog: WorkflowCatalog, options?: {
44
- preSelectedCategories?: Set<string>;
14
+ export declare function promptWorkflowSelection(catalog: WorkflowCatalog, options?: {
15
+ preSelectedWorkflowIds?: Set<string>;
45
16
  }): Promise<WorkflowSelection>;
46
- /** Build a WorkflowSelection that selects every workflow in the catalog. */
47
17
  export declare function selectAllFromCatalog(catalog: WorkflowCatalog): WorkflowSelection;
@@ -1,174 +1,100 @@
1
1
  import { readdir, readFile } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
3
  import { checkbox } from "@inquirer/prompts";
4
- // ---- Discovery ----
5
4
  const FRONTMATTER_RE = /^---\s*\n([\s\S]*?)\n---/;
6
5
  const FIELD_RE = /^(\w+):\s*(.+)$/;
6
+ const WORKFLOW_ENTRY = "WORKFLOW.md";
7
7
  function parseFrontmatter(content) {
8
8
  const match = content.match(FRONTMATTER_RE);
9
9
  if (!match)
10
10
  return {};
11
11
  const fields = {};
12
12
  for (const line of match[1].split("\n")) {
13
- const fm = line.match(FIELD_RE);
14
- if (fm)
15
- fields[fm[1]] = fm[2].trim();
13
+ const field = line.match(FIELD_RE);
14
+ if (field)
15
+ fields[field[1]] = field[2].trim();
16
16
  }
17
17
  return fields;
18
18
  }
19
- /**
20
- * Scan template/workflows/ to discover all available workflows grouped by category.
21
- * Skips non-directory entries and the _templates/ directory within each category.
22
- */
23
19
  export async function discoverWorkflowCatalog(packageRoot) {
24
20
  const catalog = new Map();
25
21
  const workflowsRoot = join(packageRoot, "template", "workflows");
26
- const categoryEntries = await readdir(workflowsRoot, { withFileTypes: true });
27
- for (const catDir of categoryEntries) {
28
- if (!catDir.isDirectory() || catDir.name.startsWith("_"))
22
+ const entries = await readdir(workflowsRoot, { withFileTypes: true });
23
+ for (const entry of entries) {
24
+ if (!entry.isDirectory() || entry.name.startsWith("_"))
29
25
  continue;
30
- const catPath = join(workflowsRoot, catDir.name);
31
- const wfEntries = await readdir(catPath, { withFileTypes: true });
32
- const workflows = [];
33
- for (const wfDir of wfEntries) {
34
- if (!wfDir.isDirectory() || wfDir.name.startsWith("_"))
35
- continue;
36
- // The workflow entry file is <name>/<name>.md (e.g., H-diagnose/H-diagnose.md)
37
- const entryFile = join(catPath, wfDir.name, `${wfDir.name}.md`);
38
- let displayName = wfDir.name;
39
- let description = "";
40
- try {
41
- const content = await readFile(entryFile, "utf-8");
42
- const fm = parseFrontmatter(content);
43
- displayName = fm.name ?? wfDir.name;
44
- description = fm.description ?? "";
45
- }
46
- catch {
47
- // Entry file missing or unreadable — use directory name as fallback
26
+ const entryPath = join(workflowsRoot, entry.name, WORKFLOW_ENTRY);
27
+ try {
28
+ const content = await readFile(entryPath, "utf8");
29
+ const frontmatter = parseFrontmatter(content);
30
+ const id = frontmatter.workflow ?? frontmatter.id ?? entry.name;
31
+ if (id !== entry.name) {
32
+ throw new Error("Workflow directory " + entry.name + " declares workflow id " + id +
33
+ "; ids must match directory names");
48
34
  }
49
- workflows.push({
50
- category: catDir.name,
51
- name: wfDir.name,
52
- displayName,
53
- description,
35
+ catalog.set(id, {
36
+ id,
37
+ name: entry.name,
38
+ displayName: frontmatter.name ?? entry.name,
39
+ description: frontmatter.description ?? "",
54
40
  });
55
41
  }
56
- if (workflows.length > 0) {
57
- catalog.set(catDir.name, workflows);
42
+ catch (error) {
43
+ if (error instanceof Error && error.message.includes("ids must match")) {
44
+ throw error;
45
+ }
46
+ // A directory without WORKFLOW.md is not an installable workflow package.
58
47
  }
59
48
  }
60
49
  return catalog;
61
50
  }
62
- /**
63
- * Scan a target speculo/workflows/ directory to discover which workflows
64
- * are already installed.
65
- */
66
51
  export async function scanInstalledWorkflows(installRoot) {
67
52
  const installed = [];
68
53
  const workflowsRoot = join(installRoot, "workflows");
69
54
  try {
70
- const catEntries = await readdir(workflowsRoot, { withFileTypes: true });
71
- for (const catDir of catEntries) {
72
- if (!catDir.isDirectory() || catDir.name.startsWith("_"))
55
+ const entries = await readdir(workflowsRoot, { withFileTypes: true });
56
+ for (const entry of entries) {
57
+ if (!entry.isDirectory() || entry.name.startsWith("_"))
73
58
  continue;
74
- const catPath = join(workflowsRoot, catDir.name);
75
59
  try {
76
- const wfEntries = await readdir(catPath, { withFileTypes: true });
77
- for (const wfDir of wfEntries) {
78
- if (!wfDir.isDirectory() || wfDir.name.startsWith("_"))
79
- continue;
80
- // Verify it's a workflow by checking for the entry .md file
81
- const entryFile = join(catPath, wfDir.name, `${wfDir.name}.md`);
82
- try {
83
- await readFile(entryFile, "utf-8");
84
- installed.push({ category: catDir.name, name: wfDir.name });
85
- }
86
- catch {
87
- // No entry file → skip
88
- }
89
- }
60
+ await readFile(join(workflowsRoot, entry.name, WORKFLOW_ENTRY), "utf8");
61
+ installed.push(entry.name);
90
62
  }
91
63
  catch {
92
- // Category dir unreadable skip
64
+ // Ignore legacy or local directories that are not v3 workflow packages.
93
65
  }
94
66
  }
95
67
  }
96
68
  catch {
97
- // workflows/ doesn't exist yet → empty
69
+ return [];
98
70
  }
99
- return installed;
71
+ return installed.sort();
100
72
  }
101
- // ---- Interaction ----
102
- /** Returns true when stdin is a TTY (interactive terminal). */
103
73
  export function isInteractive() {
104
74
  return process.stdin.isTTY === true;
105
75
  }
106
- /**
107
- * Build the choices array for the @inquirer/checkbox prompt.
108
- * Each category becomes one checkbox option showing its name and workflow count.
109
- */
110
- function buildCategoryChoices(catalog, preSelected) {
111
- const sortedCategories = [...catalog.keys()].sort();
112
- return sortedCategories.map((cat) => {
113
- const wfs = catalog.get(cat);
114
- const count = wfs.length;
115
- const description = `${count} workflow${count > 1 ? "s" : ""}`;
116
- return {
117
- name: cat,
118
- value: cat,
119
- description,
120
- checked: preSelected?.has(cat) ?? false,
121
- };
122
- });
123
- }
124
- /**
125
- * Interactive category-level workflow selection using @inquirer checkbox.
126
- *
127
- * In init mode, no categories are pre-selected — the user picks what they want.
128
- * In update mode, categories already installed are pre-selected (checked by default).
129
- *
130
- * Returns a WorkflowSelection containing every workflow in the selected categories.
131
- * If no categories are selected, returns an empty selection (only .speculo, commands,
132
- * and skills are installed).
133
- *
134
- * When stdin is not a TTY (pipe, redirect), falls back to selecting all categories.
135
- */
136
- export async function promptCategorySelection(catalog, options) {
137
- // Non-interactive → select all
138
- if (!isInteractive()) {
76
+ export async function promptWorkflowSelection(catalog, options) {
77
+ if (!isInteractive())
139
78
  return selectAllFromCatalog(catalog);
140
- }
141
- const choices = buildCategoryChoices(catalog, options?.preSelectedCategories);
142
- const selectedCategories = await checkbox({
143
- message: "Select workflow categories to install (space to toggle, enter to confirm):",
79
+ const choices = [...catalog.values()]
80
+ .sort((left, right) => left.id.localeCompare(right.id))
81
+ .map((workflow) => ({
82
+ name: workflow.displayName,
83
+ value: workflow.id,
84
+ description: workflow.description,
85
+ checked: options?.preSelectedWorkflowIds?.has(workflow.id) ?? false,
86
+ }));
87
+ const workflowIds = await checkbox({
88
+ message: "Select workflow packages to install (space to toggle, enter to confirm):",
144
89
  choices,
145
90
  pageSize: 10,
146
91
  });
147
- if (selectedCategories.length === 0) {
148
- console.log("No categories selected. No workflows will be installed.\n");
149
- }
150
- // Build WorkflowSelection from selected categories
151
- const workflows = [];
152
- const categories = new Set();
153
- for (const cat of selectedCategories) {
154
- categories.add(cat);
155
- const wfs = catalog.get(cat) ?? [];
156
- for (const wf of wfs) {
157
- workflows.push({ category: wf.category, name: wf.name });
158
- }
92
+ if (workflowIds.length === 0) {
93
+ console.log("No workflows selected. Only core commands and skills will be installed.\n");
159
94
  }
160
- return { workflows, categories };
95
+ return { workflowIds };
161
96
  }
162
- /** Build a WorkflowSelection that selects every workflow in the catalog. */
163
97
  export function selectAllFromCatalog(catalog) {
164
- const workflows = [];
165
- const categories = new Set();
166
- for (const [cat, wfs] of catalog) {
167
- categories.add(cat);
168
- for (const wf of wfs) {
169
- workflows.push({ category: wf.category, name: wf.name });
170
- }
171
- }
172
- return { workflows, categories };
98
+ return { workflowIds: [...catalog.keys()].sort() };
173
99
  }
174
100
  //# sourceMappingURL=workflows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/workflows.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@namewta/speculo",
3
- "version": "0.1.21",
4
- "description": "Speculo specification-driven development framework assets, with a CLI to install and update them across AI coding tools.",
3
+ "version": "0.2.0",
4
+ "description": "Workflow-packaged specification-driven development assets with install, update, and migration tooling.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "speculo": "./dist/src/cli.js"
@@ -10,10 +10,11 @@
10
10
  "build": "tsc -p tsconfig.json",
11
11
  "test": "node --test dist/test/*.test.js",
12
12
  "pretest": "pnpm build",
13
- "check": "pnpm build && pnpm test",
13
+ "validate-assets": "node scripts/validate-framework-assets.mjs && node scripts/check-template-links.mjs",
14
+ "check": "pnpm test && pnpm validate-assets",
14
15
  "verify-bin": "node scripts/verify-bin.mjs",
15
16
  "prepack": "pnpm build",
16
- "prepublishOnly": "pnpm build && pnpm test"
17
+ "prepublishOnly": "pnpm test && pnpm validate-assets"
17
18
  },
18
19
  "files": [
19
20
  "dist/src",
@@ -49,6 +50,7 @@
49
50
  },
50
51
  "devDependencies": {
51
52
  "@types/node": "^26.0.0",
53
+ "fast-xml-parser": "^5.9.3",
52
54
  "typescript": "^5.8.3"
53
55
  },
54
56
  "dependencies": {
@@ -0,0 +1,20 @@
1
+ # Speculo Runtime State
2
+
3
+ 本目录是 Speculo 运行时状态的唯一持久化根。
4
+
5
+ ## 读取顺序
6
+
7
+ 1. 读取 `workspace.json`,以当前打开项目为 `project_root` 解析公共 roots。
8
+ 2. 读取 `../workflows/<workflow>/WORKFLOW.md` 的 `<runtime-context>` 与 `<persistence>`。
9
+ 3. 读取 `<workflow>/status.json`,再读取 `changes/<change>/.status.json` 和当前 route 产物。
10
+ 4. 历史 change 只从 `<workflow>/archive/YYYY-MM/<change>/` 读取。
11
+ 5. Command 报告位于 `commands/<command>/*.md`,command state 位于 `commands/<command>/state.json`。
12
+ 6. 首次 docs-sync 确认后读取 `<workflow>/docs-sync.json`;它分列该 workflow 的项目文档和私有 state 更新范围。
13
+
14
+ ## 写入边界
15
+
16
+ - 每个 workflow 只写自己的 `status.json/changes/archive` 和已声明 namespace。
17
+ - `docs-sync.json` 是 docs-sync command 拥有的延迟 sidecar,不进入 `_state`,也不授予越过 workflow 确认规则的权限。
18
+ - `.config` 不是标准目录;只有 workflow 声明时才可使用。
19
+ - Command 报告命名为 `<YYYY-MM-DD>-<scope>-<topic>[-NN].md`,禁止覆盖。
20
+ - Skill 只使用调用方提供并完成边界校验的路径。
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema_version": 1,
3
+ "path_base": "project-root",
4
+ "roots": {
5
+ "speculo": "speculo",
6
+ "state": "speculo/.speculo",
7
+ "commands": "speculo/commands",
8
+ "skills": "speculo/skills",
9
+ "workflows": "speculo/workflows",
10
+ "vendor": "speculo/vendor"
11
+ }
12
+ }
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: docs-sync
3
+ type: command
4
+ name: Docs Sync
5
+ description: 清洁并提交工作区,以可复现 Git 区间和确认范围同步项目文档与 workflow 知识
6
+ keywords: [docs-sync, readme, changelog, agents, documentation]
7
+ ---
8
+
9
+ # Docs Sync 命令
10
+
11
+ ## 产物
12
+
13
+ - 报告:`speculo/.speculo/commands/docs-sync/<YYYY-MM-DD>-<scope>-<topic>[-NN].md`
14
+ - 全局 state:`speculo/.speculo/commands/docs-sync/state.json`
15
+ - Workflow 范围:`speculo/.speculo/<workflow>/docs-sync.json`
16
+
17
+ 调用本命令即授权它在校验通过后创建本地 checkpoint 与文档同步 commit;不授权 push、tag、stash、历史改写或丢弃文件。
18
+
19
+ ## 执行
20
+
21
+ 1. 读取 `../skills/runtime-context/SKILL.md` 与 `../skills/docs-sync/SKILL.md`,解析 command 路径和全部已安装 workflow/state 根。
22
+ 2. 按 skill 的 Git 契约检查 tracked、staged、unstaged 与 untracked 内容;安全且校验通过时显式暂存并创建 checkpoint,异常时无损阻塞。
23
+ 3. 读取全局 state、各 `WORKFLOW.md` 和 sidecar。首次运行统一展示全局与每个 workflow 的候选范围;用户确认后为所有已安装 workflow 创建 sidecar,空范围也保留。
24
+ 4. 由 skill 收集精确 commit 区间、archive 与声明 store 证据,整份审计命中文档并执行新增、更新、删除段落、合并或保留。整文件/目录删除和受保护知识仍逐次确认。
25
+ 5. 运行项目与文档校验,原子写入报告、state 和 sidecar,再显式暂存本次产物并创建同步或 no-op commit。
26
+ 6. 重新读取 Git、state、报告与 sidecar;只有工作区干净、节点可复现且所有文件已提交时完成。
27
+
28
+ 完成标准:报告含输入节点、checkpoint、确认范围、生命周期动作和验证;全局 state 与每个 workflow sidecar 有效;`git status --short` 为空。
@@ -0,0 +1,37 @@
1
+ ---
2
+ id: finalize
3
+ type: command
4
+ name: Finalize
5
+ description: 对任意 workflow change 执行完成门禁、状态收尾与安全归档,也可批量归档已完成 change
6
+ keywords: [finalize, verify, complete, archive, 收尾]
7
+ ---
8
+
9
+ # Finalize 命令
10
+
11
+ ## 报告
12
+
13
+ 统一写入:`speculo/.speculo/commands/finalize/<YYYY-MM-DD>-<scope>-<topic>[-NN].md`。
14
+
15
+ 报告必须记录 `mode`、选中的 workflow/change、验证证据、状态变化、源路径、目标路径、用户确认和最终结果。
16
+
17
+ ## 模式
18
+
19
+ ### finalize-active
20
+
21
+ 1. 读取 `../skills/runtime-context/SKILL.md` 和 `../skills/change-lifecycle/SKILL.md`,解析 workflow 的固定 `changes/archive` 根。
22
+ 2. 选择一个 active change,执行新鲜验证、需求核对和 worktree 预检;缺证据即 blocked。
23
+ 3. 展示验证证据、状态变化、归档目标和报告路径,等待用户明确确认。
24
+ 4. 确认后将 change 置为 completed,再移动到 archive,更新 `status.json#active`,复查目标和索引。
25
+
26
+ ### archive-completed
27
+
28
+ 1. 选择 workflow 或 `multi-workflow` 范围,扫描所有 completed change;不重新验证,也不接受 active/broken change。
29
+ 2. 读取 `change-lifecycle` 的归档安全规则,生成逐项源/目标/冲突清单。
30
+ 3. 先展示批量计划并等待用户确认;冲突、malformed 或缺状态任一存在即停止整批动作。
31
+ 4. 确认后逐项移动、更新 `change_status: archived` 和各 workflow 索引;失败时报告已完成/未完成清单。
32
+
33
+ ## 完成标准
34
+
35
+ - 报告文件位于 command 专属目录且 scope 可从文件名判断。
36
+ - 所有状态、目录和索引变更均已重新读取验证。
37
+ - 未确认或 blocked 时没有移动、删除或宣称完成。
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: knowledge-prune
3
+ type: command
4
+ name: Knowledge Prune
5
+ description: dry-run 审计指定 workflow 声明的知识 namespace,生成可删除、合并或改写的候选清单
6
+ keywords: [knowledge, prune, rules, lessons, context, adr]
7
+ ---
8
+
9
+ # Knowledge Prune 命令
10
+
11
+ ## 报告
12
+
13
+ 写入 `speculo/.speculo/commands/knowledge-prune/<YYYY-MM-DD>-<workflow>-<topic>[-NN].md`。报告记录扫描 namespace、证据、候选分组、风险和确认结果。
14
+
15
+ ## 执行
16
+
17
+ 1. 读取 `../skills/runtime-context/SKILL.md`,选择 workflow 并解析其 `<persistence>` 声明的 knowledge/policy namespace。
18
+ 2. 读取 `../skills/knowledge-prune/SKILL.md`,默认执行 dry-run,生成 `delete | merge | rewrite | keep | needs-confirmation` 清单。
19
+ 3. 将报告写入 command 专属目录;无用户确认时不删除、重命名或改写任何 namespace。
20
+ 4. 用户确认后再次执行路径包含检查,逐项操作并复查 git、引用和报告结果。
@@ -12,9 +12,7 @@ keywords: [retro, 复盘, 痛点, feedback, issue, 优化, 反馈]
12
12
 
13
13
  ## 归档路径模式
14
14
 
15
- 产物目录:`speculo/.speculo/commands/<YYYY-MM-DD>-retro-<topic>/`
16
-
17
- 报告文件:`speculo/.speculo/commands/<YYYY-MM-DD>-retro-<topic>/report.md`
15
+ 报告文件:`speculo/.speculo/commands/retro/<YYYY-MM-DD>-<scope>-<topic>[-NN].md`
18
16
 
19
17
  - `<YYYY-MM-DD>` 使用当前日期。
20
18
  - `<topic>` 从复盘范围或用户主题提取,使用小写 kebab-case;无法判断时使用 `speculo`。
@@ -27,21 +25,30 @@ keywords: [retro, 复盘, 痛点, feedback, issue, 优化, 反馈]
27
25
 
28
26
  ## 执行步骤
29
27
 
30
- 1. 读取 `../skills/speculo-retro/SKILL.md`,按其规范采集信号(对话上下文、`speculo/.speculo/commands/`、`speculo/.speculo/<cat>/<change>/.status.json`、`speculo/.speculo/.config/LESSONS.md`)并深度分析。
28
+ 1. 读取 `../skills/runtime-context/SKILL.md` 与 `../skills/speculo-retro/SKILL.md`,采集对话、command 报告、change 状态以及 workflow 声明的 lessons/knowledge store。
31
29
  2. 用该 skill 产出规范化复盘结论:去重、分级、根因化的 issue-ready 提案清单,附丢弃/合并说明与每条处置建议。
32
- 3. 创建规范命令产物目录 `speculo/.speculo/commands/<YYYY-MM-DD>-retro-<topic>/`,把复盘结论写入 `report.md`。
30
+ 3. 创建 command 专属目录 `speculo/.speculo/commands/retro/`,把复盘结论写入带 scope 的 Markdown 报告。
33
31
  4. **解析目标仓库**:默认框架反馈上游 `NAMEWTA/Speculo`;用户在请求中显式指定其他 `owner/repo` 时覆盖默认。无论如何,在调用 `gh` 前回显解析到的 `owner/repo`,让用户确认或改正。
34
32
  5. **去重**:读取 `../skills/github-npm-ops/SKILL.md` 的 `references/issue-pr-triage.md`,对每条 `disposition: file-issue` 的提案用 `gh issue list --repo <owner/repo> --search "<关键词>" --state all --limit 20` 检索;命中语义重复的默认跳过并记录 `dup_of`,仅当用户明确要求才补提。
35
33
  6. **外部写操作边界**:向用户展示将要创建的 issue 清单(标题、类型/优先级标签、正文摘要、目标 `owner/repo`)与去重结果,等待用户明确确认。没有确认时只输出计划,不调用 `gh`。
36
34
  7. 用户确认后,按优先级倒序逐条执行 `gh issue create --repo <owner/repo> --title "<title>" --body "<body>" --label "<type>,<priority>[,<area>]"`(多行正文可用 `--body-file` 指向不保留的临时文件)。任一条失败时停止后续创建,报告已建/未建清单,不重复创建同一条。
37
- 8. 把每条提案的最终 issue 编号/URL 回写进 `report.md` 的「提交结果」小节;返回 `report.md` 路径、3-5 条复盘摘要和已创建 issue 链接清单。
35
+ 8. 把每条提案的最终 issue 编号/URL 回写进本次报告的「提交结果」小节;返回报告路径、3-5 条复盘摘要和已创建 issue 链接清单。
38
36
 
39
- ## 产物模板(report.md)
37
+ ## 产物模板
40
38
 
41
39
  > **服务命令:** `retro.md`
42
- > **产物文件名:** `report.md`
40
+ > **产物文件名:** `<YYYY-MM-DD>-<scope>-<topic>[-NN].md`
43
41
 
44
42
  ```markdown
43
+ ---
44
+ command: retro
45
+ mode: issue-retro
46
+ scope: [TODO: workspace | multi-workflow | <workflow> | <workflow>-<change>]
47
+ workflows: [TODO: workflow ids]
48
+ changes: [TODO: full change names]
49
+ generated_at: [TODO: ISO-8601]
50
+ ---
51
+
45
52
  # Speculo Retro Report
46
53
 
47
54
  ## 复盘范围