maestro-flow 0.3.14 → 0.3.16

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 (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
package/workflows/fork.md CHANGED
@@ -8,25 +8,13 @@ Worktrees operate at the **milestone level** — all phases within a milestone a
8
8
 
9
9
  ## Step 1: Parse Arguments and Flags
10
10
 
11
- ```javascript
12
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
13
-
14
- // Parse flags
15
- const syncMode = $ARGUMENTS.includes('--sync')
16
- const baseMatch = $ARGUMENTS.match(/--base\s+(\S+)/)
17
- const baseBranch = baseMatch ? baseMatch[1] : 'HEAD'
18
-
19
- // Parse milestone number: -m <N> or bare <N>
20
- const mFlagMatch = $ARGUMENTS.match(/-m\s+(\d+)/)
21
- const cleaned = $ARGUMENTS
22
- .replace(/--sync|--base\s+\S+|-m\s+\d+/g, '')
23
- .trim()
24
- const bareNumMatch = cleaned.match(/^(\d+)$/)
25
- const milestoneNum = mFlagMatch
26
- ? parseInt(mFlagMatch[1])
27
- : bareNumMatch
28
- ? parseInt(bareNumMatch[1])
29
- : null
11
+ ```
12
+ Timestamps use UTC+8 ISO format throughout.
13
+
14
+ Parse from $ARGUMENTS:
15
+ --sync → syncMode (sync existing worktree instead of forking)
16
+ --base <ref> → baseBranch (default: HEAD)
17
+ -m <N> or bare <N> milestoneNum (1-based)
30
18
  ```
31
19
 
32
20
  ---
@@ -34,25 +22,10 @@ const milestoneNum = mFlagMatch
34
22
  ## Step 2: Validate Prerequisites
35
23
 
36
24
  ```
37
- IF NOT file_exists(".workflow/state.json"):
38
- ERROR E001: "Project not initialized. Run maestro-init first."
39
- EXIT
40
-
41
- IF NOT file_exists(".workflow/roadmap.md"):
42
- ERROR E002: "No roadmap found. Run maestro-roadmap first."
43
- EXIT
44
-
45
- IF file_exists(".workflow/worktree-scope.json"):
46
- ERROR E003: "Cannot fork from inside a worktree. Run from the main worktree."
47
- EXIT
48
-
49
- IF milestoneNum === null:
50
- ERROR E004: "Milestone number required. Usage: maestro-fork -m <number>"
51
- EXIT
52
-
53
- Read .workflow/state.json → projectState
54
- Read .workflow/config.json → config (if exists, else use defaults)
25
+ Require: .workflow/state.json (E001), .workflow/roadmap.md (E002), milestoneNum (E004).
26
+ Reject: .workflow/worktree-scope.json present (E003 cannot fork from inside a worktree).
55
27
 
28
+ Read projectState from state.json, config from config.json (defaults if missing).
56
29
  worktreeRoot = config.worktree?.root ?? ".worktrees"
57
30
  branchPrefix = config.worktree?.branch_prefix ?? "milestone/"
58
31
  ```
@@ -62,25 +35,11 @@ branchPrefix = config.worktree?.branch_prefix ?? "milestone/"
62
35
  ## Step 3: Resolve Milestone
63
36
 
64
37
  ```
65
- // Lookup milestone by number from state.json.milestones[]
66
- IF NOT projectState.milestones || NOT Array.isArray(projectState.milestones):
67
- ERROR E005: "No milestones defined in state.json."
68
- EXIT
69
-
70
- // milestones[] is 0-indexed, milestoneNum is 1-based
71
- milestoneEntry = projectState.milestones[milestoneNum - 1]
72
-
73
- IF NOT milestoneEntry:
74
- availableList = projectState.milestones
75
- .map((m, i) => " M" + (i + 1) + ": " + m.name + " (" + m.title + ")")
76
- .join("\n")
77
- ERROR E006: "Milestone {milestoneNum} not found.\nAvailable:\n{availableList}"
78
- EXIT
79
-
80
- milestoneName = milestoneEntry.name // e.g. "Production"
81
- milestoneTitle = milestoneEntry.title // e.g. "生产就绪"
82
- milestonePhases = milestoneEntry.phases // e.g. [3, 4]
83
- milestoneSlug = milestoneName.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
38
+ Lookup milestoneEntry from projectState.milestones[milestoneNum - 1] (1-based).
39
+ E005 if no milestones array; E006 if index out of range (list available milestones).
40
+
41
+ Extract: milestoneName (.name), milestoneTitle (.title), milestonePhases (.phases).
42
+ milestoneSlug = kebab-case of milestoneName, max 40 chars.
84
43
  ```
85
44
 
86
45
  ---
@@ -91,29 +50,10 @@ If `syncMode` is true, this is a sync operation on an existing worktree, not a f
91
50
 
92
51
  ```
93
52
  IF syncMode:
94
- Read .workflow/worktrees.json → registry
95
- entry = registry.worktrees.find(w =>
96
- w.milestone_num === milestoneNum && w.status === "active"
97
- )
98
-
99
- IF NOT entry:
100
- ERROR E007: "No active worktree for milestone {milestoneNum} ({milestoneName})"
101
- EXIT
102
-
103
- // Step 4a: Pull source code
104
- Bash("cd {entry.path} && git merge main")
105
- IF conflict:
106
- WARN "Merge conflict in worktree. Resolve in {entry.path} before continuing."
107
- EXIT
108
-
109
- // Step 4b: Re-copy shared context
110
- Copy .workflow/project.md → {entry.path}/.workflow/project.md
111
- Copy .workflow/roadmap.md → {entry.path}/.workflow/roadmap.md
112
- Copy .workflow/config.json → {entry.path}/.workflow/config.json (if exists)
113
- Copy .workflow/specs/ → {entry.path}/.workflow/specs/ (if exists)
114
-
115
- Display "Worktree for M{milestoneNum} ({milestoneName}) synced with main."
116
- EXIT (sync complete)
53
+ Find active worktree entry for milestoneNum in worktrees.json → E007 if not found.
54
+ Git merge main into worktree → warn and exit on conflict.
55
+ Re-copy shared context: project.md, roadmap.md, config.json (if exists), specs/ (if exists).
56
+ Display sync confirmation. EXIT.
117
57
  ```
118
58
 
119
59
  ---
@@ -121,41 +61,12 @@ IF syncMode:
121
61
  ## Step 5: Validate & Confirm
122
62
 
123
63
  ```
124
- // Load phase status from artifact registry
125
- phaseList = []
126
- artifacts = projectState.artifacts ?? []
127
-
128
- // Derive phase status from artifact registry
129
- for (phaseNum of milestonePhases):
130
- execArtifacts = artifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
131
- status = execArtifacts.some(a => a.status === 'completed') ? 'completed'
132
- : execArtifacts.length > 0 ? 'in_progress'
133
- : 'pending'
134
- phaseList.push({ phase: phaseNum, title: "Phase " + phaseNum, status })
135
-
136
- // Validate: milestone should have at least one non-completed phase
137
- nonCompleted = phaseList.filter(p => p.status !== "completed")
138
- IF nonCompleted.length === 0:
139
- Display "All phases in M{milestoneNum} ({milestoneName}) are already completed. Nothing to fork."
140
- EXIT
141
-
142
- // Check for already-forked milestone
143
- IF file_exists(".workflow/worktrees.json"):
144
- Read .workflow/worktrees.json → existingRegistry
145
- alreadyForked = existingRegistry.worktrees.find(w =>
146
- w.milestone_num === milestoneNum && w.status === "active"
147
- )
148
- IF alreadyForked:
149
- ERROR E008: "M{milestoneNum} already has an active worktree at {alreadyForked.path}. Merge or cleanup first."
150
- EXIT
151
-
152
- Display "Fork Milestone {milestoneNum}: {milestoneName} ({milestoneTitle})"
153
- Display "Phases ({phaseList.length}):"
154
- for (p of phaseList):
155
- Display " Phase {p.phase}: {p.title} [{p.status}]"
156
-
157
- AskUserQuestion: "Create worktree for this milestone? (y/n)"
158
- IF response !== 'y': EXIT
64
+ Derive phase statuses from artifact registry (execute artifacts → completed/in_progress/pending).
65
+ Reject if all phases completed (nothing to fork).
66
+ Reject if milestone already has active worktree (E008).
67
+
68
+ Display milestone info and phase list with statuses.
69
+ Confirm with user → exit if declined.
159
70
  ```
160
71
 
161
72
  ---
@@ -163,87 +74,43 @@ IF response !== 'y': EXIT
163
74
  ## Step 6: Create Worktree
164
75
 
165
76
  ```
166
- const forkSessionId = "fork-" + getUtc8ISOString().substring(0, 19).replace(/[-:T]/g, '')
167
- const baseCommit = Bash("git rev-parse HEAD").trim()
168
- const branch = branchPrefix + milestoneSlug
169
- const wtPath = worktreeRoot + "/m" + milestoneNum + "-" + milestoneSlug
170
-
171
- // 6a: Clean up stale worktree/branch if exists
172
- IF directory_exists(wtPath):
173
- Bash("git worktree remove --force {wtPath}") // ignore errors
174
- Bash("git branch -D {branch}") // ignore errors (may not exist)
175
-
176
- // 6b: Create worktree
177
- Bash("git worktree add -b {branch} {wtPath} {baseBranch}")
178
-
179
- // 6c: Create .workflow/ structure in worktree
180
- Bash("mkdir -p {wtPath}/.workflow/scratch")
181
-
182
- // 6d: Copy shared context (read-only)
183
- Copy .workflow/project.md → {wtPath}/.workflow/project.md
184
- Copy .workflow/roadmap.md → {wtPath}/.workflow/roadmap.md
185
- IF file_exists(".workflow/config.json"):
186
- Copy .workflow/config.json → {wtPath}/.workflow/config.json
187
- IF directory_exists(".workflow/specs"):
188
- Copy .workflow/specs/ → {wtPath}/.workflow/specs/
189
-
190
- // 6e: Copy milestone artifacts to worktree
191
- ownedPhaseNumbers = milestonePhases.slice() // all phases in this milestone
192
-
193
- // Copy scratch dirs for this milestone's artifacts
194
- milestoneArtifacts = artifacts.filter(a =>
195
- a.milestone === milestoneName && a.path
196
- )
197
- for (art of milestoneArtifacts):
198
- IF directory_exists(".workflow/" + art.path):
199
- Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
200
-
201
- // 6f: Copy dependency artifacts (phases outside this milestone)
202
- // Collect dependency phases from roadmap milestone entry
203
- // (cross-milestone dependencies are defined in milestoneEntry.depends_on or roadmap)
204
- depPhases = new Set()
205
- IF milestoneEntry.depends_on:
206
- for (dep of milestoneEntry.depends_on):
207
- IF NOT ownedPhaseNumbers.includes(dep):
208
- depPhases.add(dep)
209
- // Copy dependency artifacts from main
210
- for (dep of depPhases):
211
- depArtifacts = artifacts.filter(a => a.phase === dep && a.path)
212
- for (art of depArtifacts):
213
- IF directory_exists(".workflow/" + art.path):
214
- Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
215
-
216
- // 6g: Build phase_dependencies map for worktree-scope
217
- phaseDeps = {}
218
- IF milestoneEntry.depends_on:
219
- for (phaseNum of ownedPhaseNumbers):
220
- phaseDeps[String(phaseNum)] = milestoneEntry.depends_on
221
- .filter(d => !ownedPhaseNumbers.includes(d))
222
-
223
- // 6h: Write worktree-scope.json
224
- Write {wtPath}/.workflow/worktree-scope.json:
225
- {
226
- "worktree": true,
227
- "milestone_num": milestoneNum,
228
- "milestone": milestoneName,
229
- "owned_phases": ownedPhaseNumbers,
230
- "phase_dependencies": phaseDeps,
231
- "main_worktree": resolve(cwd),
232
- "branch": branch,
233
- "base_commit": baseCommit,
234
- "created_at": getUtc8ISOString()
235
- }
236
-
237
- // 6i: Write scoped state.json
238
- Read .workflow/state.json → mainState
239
- firstPending = phaseList.find(p => p.status !== "completed")
240
- scopedState = {
241
- ...mainState,
242
- current_milestone: milestoneName,
243
- // Carry over milestone-scoped artifacts to worktree
244
- artifacts: artifacts.filter(a => a.milestone === milestoneName || ownedPhaseNumbers.includes(a.phase))
77
+ forkSessionId = "fork-{UTC8_compact_timestamp}"
78
+ baseCommit = git rev-parse HEAD
79
+ branch = {branchPrefix}{milestoneSlug}
80
+ wtPath = {worktreeRoot}/m{milestoneNum}-{milestoneSlug}
81
+
82
+ 6a: Clean up stale worktree/branch at wtPath if exists (ignore errors).
83
+ 6b: git worktree add -b {branch} {wtPath} {baseBranch}
84
+ 6c: mkdir -p {wtPath}/.workflow/scratch
85
+
86
+ 6d: Copy shared context → wtPath/.workflow/:
87
+ project.md, roadmap.md, config.json (if exists), specs/ (if exists)
88
+
89
+ 6e: Copy milestone artifacts — all artifacts matching milestoneName.
90
+ 6f: Copy dependency artifacts — phases from milestoneEntry.depends_on not in owned phases.
91
+
92
+ 6g: Build phase_dependencies map (external deps per owned phase).
93
+ ```
94
+
95
+ Write `{wtPath}/.workflow/worktree-scope.json`:
96
+
97
+ ```json
98
+ {
99
+ "worktree": true,
100
+ "milestone_num": "{milestoneNum}",
101
+ "milestone": "{milestoneName}",
102
+ "owned_phases": ["{ownedPhaseNumbers}"],
103
+ "phase_dependencies": "{phaseDeps}",
104
+ "main_worktree": "{resolve(cwd)}",
105
+ "branch": "{branch}",
106
+ "base_commit": "{baseCommit}",
107
+ "created_at": "{UTC8_ISO}"
245
108
  }
246
- Write {wtPath}/.workflow/state.json: scopedState
109
+ ```
110
+
111
+ ```
112
+ 6i: Write scoped state.json — clone mainState with current_milestone set,
113
+ artifacts filtered to milestone-owned phases only.
247
114
  ```
248
115
 
249
116
  ---
@@ -251,42 +118,17 @@ Write {wtPath}/.workflow/state.json: scopedState
251
118
  ## Step 7: Update Main Registry
252
119
 
253
120
  ```
254
- IF file_exists(".workflow/worktrees.json"):
255
- Read .workflow/worktrees.json → registry
256
- ELSE:
257
- registry = { version: "1.0", worktrees: [], fork_sessions: [] }
258
-
259
- registry.worktrees.push({
260
- milestone_num: milestoneNum,
261
- milestone: milestoneName,
262
- slug: milestoneSlug,
263
- branch: branch,
264
- path: wtPath,
265
- base_commit: baseCommit,
266
- status: "active",
267
- created_at: getUtc8ISOString(),
268
- owned_phases: ownedPhaseNumbers,
269
- fork_session: forkSessionId
270
- })
271
-
272
- registry.fork_sessions.push({
273
- session_id: forkSessionId,
274
- created_at: getUtc8ISOString(),
275
- milestone_num: milestoneNum,
276
- milestone: milestoneName,
277
- base_branch: baseBranch,
278
- base_commit: baseCommit
279
- })
280
-
281
- Write .workflow/worktrees.json: registry
282
-
283
- // Mark milestone phases as "forked"
284
- // In artifact registry model, worktrees.json tracks forked state.
285
- // No per-phase marking needed — the registry entry signals ownership.
286
- // (worktrees.json already updated above with owned_phases)
287
-
288
- mainState.last_updated = getUtc8ISOString()
289
- Write .workflow/state.json: mainState
121
+ Load or initialize .workflow/worktrees.json (default: { version:"1.0", worktrees:[], fork_sessions:[] }).
122
+
123
+ Append to worktrees[]:
124
+ { milestone_num, milestone, slug, branch, path:wtPath, base_commit, status:"active",
125
+ created_at, owned_phases, fork_session:forkSessionId }
126
+
127
+ Append to fork_sessions[]:
128
+ { session_id:forkSessionId, created_at, milestone_num, milestone, base_branch, base_commit }
129
+
130
+ Write worktrees.json. Update mainState.last_updated, write state.json.
131
+ Note: worktrees.json owned_phases tracks forked state — no per-phase marking needed.
290
132
  ```
291
133
 
292
134
  ---
@@ -43,20 +43,11 @@ Unlike `retrospective.md` which is phase-scoped and post-execution, harvest oper
43
43
  ## Stage 1: parse_input
44
44
 
45
45
  ```
46
- 1. Verify .workflow/ exists; else error E001.
47
- 2. Tokenize $ARGUMENTS:
48
- - First non-flag token: session ID, path, or empty (scan mode)
49
- - Flags: --to, --source, --recent, --dry-run, -y, --min-confidence
50
- 3. Build:
51
- mode = "scan" | "session" | "path"
52
- target_filter = "auto" | "wiki" | "spec" | "issue"
53
- source_filter = "all" | specific source type
54
- recent_days = 30 (or --recent value)
55
- dry_run = false
56
- auto_yes = false
57
- min_confidence = 0.5
58
- 4. Validate --to value. Unknown target → error E002.
59
- 5. Validate --source value. Unknown source → error E003.
46
+ Verify .workflow/ exists (else E001). Parse flags and first non-flag token:
47
+ mode: "scan" (no target) | "session" (ID match) | "path" (explicit path)
48
+ Defaults: target_filter=auto, source_filter=all, recent_days=30,
49
+ dry_run=false, auto_yes=false, min_confidence=0.5
50
+ Invalid --to → E002. Invalid --source → E003.
60
51
  ```
61
52
 
62
53
  ---
@@ -78,22 +69,7 @@ Scan `.workflow/` for harvestable artifacts. Each source type has a known struct
78
69
  | `session` | `.workflow/active/WFS-*/` | `workflow-session.json` | `WFS-*` |
79
70
  | `learning` | `.workflow/learning/` | `lessons.jsonl`, `digest-*.md`, `*.md` | filename |
80
71
 
81
- ```
82
- candidates = []
83
- FOR each source_type in source_registry:
84
- IF source_filter != "all" AND source_filter != source_type: SKIP
85
- Glob for directories/files matching scan_path
86
- FOR each match:
87
- stat = file modification time
88
- IF stat.mtime < (now - recent_days): SKIP
89
- Read key files, extract:
90
- - session_id or directory name
91
- - title (from JSON title field or markdown H1)
92
- - created_at / updated_at
93
- - summary (first paragraph or JSON summary field)
94
- - file_count (number of artifact files)
95
- candidates.push({ source_type, id, path, title, updated_at, summary, file_count })
96
- ```
72
+ Scan each source type (filtered by `--source`). For each matching directory/file within `--recent` window, extract: `source_type`, `id`, `path`, `title` (from JSON or H1), `updated_at`, `summary`, `file_count`.
97
73
 
98
74
  ### Display candidates
99
75
 
@@ -219,20 +195,11 @@ For each fragment, determine the best routing target (unless `--to` forces a spe
219
195
 
220
196
  ### Override with `--to`
221
197
 
222
- If `--to wiki`: all fragments wiki entries
223
- If `--to spec`: all fragments → spec entries
224
- If `--to issue`: all fragments → issue entries
225
- If `--to auto`: use classification rules above
198
+ `--to wiki|spec|issue` forces all fragments to that target. `--to auto` (default) uses classification rules above.
226
199
 
227
200
  ### Build routing plan
228
201
 
229
- ```
230
- routing_plan = {
231
- wiki: [{ fragment, wiki_type, slug, title, tags, body }],
232
- spec: [{ fragment, spec_type, content }],
233
- issue: [{ fragment, title, severity, description }]
234
- }
235
- ```
202
+ Group fragments into three buckets: `wiki` (fragment, wiki_type, slug, title, tags, body), `spec` (fragment, spec_type, content), `issue` (fragment, title, severity, description).
236
203
 
237
204
  ---
238
205
 
@@ -262,11 +229,7 @@ Fragments extracted: 8 (filtered from 12 by confidence ≥ 0.5)
262
229
  Total: 3 wiki + 2 spec + 3 issue = 8 routed items
263
230
  ```
264
231
 
265
- If `--dry-run`: display and exit.
266
- If NOT `--dry-run` AND NOT `-y`:
267
- AskUserQuestion: "Apply this routing plan? (yes/edit/skip)" with options.
268
- - `edit`: re-display with per-item accept/reject
269
- - `skip`: exit without writing
232
+ `--dry-run` display and exit. Otherwise (unless `-y`), AskUserQuestion: "yes" (apply), "edit" (per-item accept/reject), "skip" (abort).
270
233
 
271
234
  ---
272
235
 
@@ -276,32 +239,11 @@ Execute the routing plan. Each target uses existing infrastructure:
276
239
 
277
240
  ### 6a. Wiki routing
278
241
 
279
- For each wiki item:
280
- ```bash
281
- maestro wiki create --type <wiki_type> --slug harvest-<source_type>-<short_id> \
282
- --title "<title>" --tags "<tags>" --body "<body>"
283
- ```
284
-
285
- Wiki types mapping:
286
- - `note` → `--type note`
287
- - `lesson` → `--type lesson`
288
- - `spec` → `--type spec`
289
-
290
- If `maestro wiki create` fails, fall back to writing `.workflow/harvest/wiki-pending-{id}.md` with frontmatter.
242
+ Create via `maestro wiki create --type <wiki_type> --slug harvest-<source_type>-<short_id> --title --tags --body`. Types: note/lesson/spec. Fallback on failure: write `.workflow/harvest/wiki-pending-{id}.md` with frontmatter.
291
243
 
292
244
  ### 6b. Spec routing
293
245
 
294
- For each spec item, use the same mechanism as `quality-retrospective` Stage 6:
295
-
296
- ```
297
- Skill({ skill: "spec-add", args: "<spec_type> <content>" })
298
- ```
299
-
300
- Where `spec_type` maps from fragment category:
301
- - `pattern` → `pattern`
302
- - `decision` → `decision`
303
- - `bug` → `bug`
304
- - `lesson` → `rule` (if it prescribes a rule)
246
+ Route via `Skill({ skill: "spec-add", args: "<spec_type> <content>" })`. Category mapping: pattern→pattern, decision→decision, bug→bug, lesson→rule.
305
247
 
306
248
  ### 6c. Issue routing
307
249
 
@@ -345,16 +287,7 @@ This log prevents duplicate harvesting in future runs.
345
287
 
346
288
  ## Stage 7: dedup_check
347
289
 
348
- Before writing any item in Stage 6, check for duplicates:
349
-
350
- 1. **harvest-log.jsonl**: Has this fragment_id already been routed?
351
- 2. **Wiki**: `maestro wiki search "<title>"` — does a similar entry exist?
352
- 3. **Issues**: Search `issues.jsonl` for matching title/description
353
- 4. **Specs**: Search `learnings.md` for similar content
354
-
355
- If duplicate found:
356
- - Skip with `[SKIP-DUP]` marker
357
- - Log to harvest report
290
+ Before writing any item in Stage 6, check for duplicates across `harvest-log.jsonl` (by fragment_id), wiki (by title search), `issues.jsonl` (by title/description), and `learnings.md` (by content). Duplicates are skipped with `[SKIP-DUP]` marker and logged to harvest report.
358
291
 
359
292
  ---
360
293
 
package/workflows/init.md CHANGED
@@ -7,10 +7,7 @@ Project initialization with automatic state detection. Creates project infrastru
7
7
  ## Worktree Guard
8
8
 
9
9
  ```
10
- # Block in worktree
11
- IF file_exists(".workflow/worktree-scope.json"):
12
- ERROR "Cannot run maestro-init inside a worktree. Run from the main worktree."
13
- EXIT
10
+ If .workflow/worktree-scope.json exists: error "Cannot run maestro-init inside a worktree." and exit.
14
11
  ```
15
12
 
16
13
  ## Step 1: State Detection
@@ -18,11 +15,7 @@ IF file_exists(".workflow/worktree-scope.json"):
18
15
  Detect current project state to determine initialization path.
19
16
 
20
17
  ```
21
- CHECK .workflow/state.json exists?
22
- YES → Path C (existing project)
23
- NO → CHECK if directory has source code files (*.ts, *.js, *.py, *.java, *.go, etc.)
24
- YES → Path B (brownfield)
25
- NO → Path A (greenfield)
18
+ state.json exists → Path C (existing) | source files exist → Path B (brownfield) | else → Path A (greenfield)
26
19
  ```
27
20
 
28
21
  ### Path A: Empty/Greenfield Project
@@ -73,14 +66,7 @@ CHECK .workflow/state.json exists?
73
66
  Write `.workflow/config.json` from template + user selections.
74
67
  If `--auto`: use defaults (standard, parallel, commit, all agents on).
75
68
 
76
- 3. **Research** (optional, based on config.workflow.research) -- Spawn 4 parallel `workflow-project-researcher` agents:
77
- ```
78
- Agent 1: Stack → .workflow/research/STACK.md (standard tech stack for domain)
79
- Agent 2: Features → .workflow/research/FEATURES.md (table stakes vs differentiators)
80
- Agent 3: Arch → .workflow/research/ARCHITECTURE.md (component boundaries, data flow)
81
- Agent 4: Pitfalls → .workflow/research/PITFALLS.md (common mistakes, prevention)
82
- ```
83
- Each agent writes directly to `.workflow/research/` -- orchestrator receives confirmation only.
69
+ 3. **Research** (optional, based on config.workflow.research) -- Spawn 4 parallel `workflow-project-researcher` agents writing to `.workflow/research/`: STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md.
84
70
 
85
71
  4. **Synthesize** -- Spawn `workflow-research-synthesizer` agent:
86
72
  - Input: all `.workflow/research/` documents