maestro-flow 0.3.15 → 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 (374) 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-execute.md +2 -56
  4. package/.claude/commands/maestro-fork.md +3 -50
  5. package/.claude/commands/maestro-merge.md +2 -26
  6. package/.claude/commands/maestro-milestone-audit.md +1 -5
  7. package/.claude/commands/maestro-milestone-complete.md +1 -7
  8. package/.claude/commands/maestro-plan.md +6 -127
  9. package/.claude/commands/maestro-roadmap.md +3 -101
  10. package/.claude/commands/maestro-spec-generate.md +1 -25
  11. package/.claude/commands/maestro-ui-design.md +14 -73
  12. package/.claude/commands/maestro-verify.md +1 -32
  13. package/.claude/commands/maestro.md +13 -30
  14. package/.claude/commands/manage-harvest.md +7 -44
  15. package/.claude/commands/manage-knowhow-capture.md +193 -0
  16. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  17. package/.claude/commands/manage-learn.md +3 -28
  18. package/.claude/commands/manage-status.md +1 -20
  19. package/.claude/commands/manage-wiki.md +1 -1
  20. package/.claude/commands/quality-business-test.md +1 -1
  21. package/.claude/commands/quality-debug.md +3 -18
  22. package/.claude/commands/quality-integration-test.md +3 -23
  23. package/.claude/commands/quality-retrospective.md +1 -28
  24. package/.claude/commands/quality-review.md +3 -52
  25. package/.claude/commands/quality-test-gen.md +1 -10
  26. package/.claude/commands/quality-test.md +3 -25
  27. package/.claude/commands/spec-add.md +1 -21
  28. package/.claude/commands/spec-load.md +1 -16
  29. package/.claude/commands/wiki-connect.md +2 -112
  30. package/.claude/commands/wiki-digest.md +2 -141
  31. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  32. package/.codex/skills/maestro/SKILL.md +60 -146
  33. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  34. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  35. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  36. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  37. package/.codex/skills/maestro-init/SKILL.md +7 -51
  38. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  39. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  40. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  41. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  42. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  43. package/.codex/skills/maestro-player/SKILL.md +24 -149
  44. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  45. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  46. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  47. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  48. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  49. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  50. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  51. package/.codex/skills/manage-issue/SKILL.md +1 -6
  52. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  53. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  54. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  55. package/.codex/skills/manage-learn/SKILL.md +17 -71
  56. package/.codex/skills/manage-status/SKILL.md +4 -35
  57. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  58. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  59. package/.codex/skills/quality-debug/SKILL.md +41 -133
  60. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  61. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  62. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  63. package/.codex/skills/quality-review/SKILL.md +30 -65
  64. package/.codex/skills/quality-sync/SKILL.md +2 -11
  65. package/.codex/skills/quality-test/SKILL.md +4 -45
  66. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  67. package/.codex/skills/spec-add/SKILL.md +2 -9
  68. package/.codex/skills/spec-load/SKILL.md +4 -14
  69. package/.codex/skills/spec-map/SKILL.md +4 -37
  70. package/.codex/skills/spec-remove/SKILL.md +3 -35
  71. package/.codex/skills/spec-setup/SKILL.md +2 -19
  72. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  74. package/.codex/skills/team-executor/SKILL.md +7 -66
  75. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  76. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  77. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  78. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  79. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  80. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  81. package/.codex/skills/team-review/SKILL.md +12 -86
  82. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  83. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  84. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  85. package/.codex/skills/team-testing/SKILL.md +14 -99
  86. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  87. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  88. package/README.md +6 -0
  89. package/README.zh-CN.md +6 -0
  90. package/chains/_intent-map.json +7 -7
  91. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  92. package/chains/singles/{memory.json → knowhow.json} +6 -6
  93. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  94. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  95. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  96. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  98. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  99. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  100. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  101. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  102. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  103. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  104. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  105. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  106. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  107. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  108. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  109. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  110. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  111. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  112. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  113. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  114. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  115. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  116. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  118. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  119. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  120. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  121. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  122. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  123. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  124. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  125. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  126. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  127. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  128. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  129. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  130. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  131. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  132. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  133. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  134. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  135. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  136. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  137. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  138. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  139. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  140. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  141. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  142. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  143. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  144. package/dashboard/dist/index.html +2 -2
  145. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  155. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  160. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  200. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  202. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  211. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  248. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  250. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  253. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  256. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  258. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  259. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  260. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  261. package/dist/shared/agent-types.d.ts +2 -0
  262. package/dist/shared/agent-types.d.ts.map +1 -1
  263. package/dist/src/cli.js +2 -2
  264. package/dist/src/cli.js.map +1 -1
  265. package/dist/src/commands/delegate.d.ts.map +1 -1
  266. package/dist/src/commands/delegate.js +11 -8
  267. package/dist/src/commands/delegate.js.map +1 -1
  268. package/dist/src/commands/install-backend.d.ts +1 -1
  269. package/dist/src/commands/install-backend.d.ts.map +1 -1
  270. package/dist/src/commands/install-backend.js +1 -1
  271. package/dist/src/commands/install-backend.js.map +1 -1
  272. package/dist/src/commands/knowhow.d.ts +10 -0
  273. package/dist/src/commands/knowhow.d.ts.map +1 -0
  274. package/dist/src/commands/knowhow.js +217 -0
  275. package/dist/src/commands/knowhow.js.map +1 -0
  276. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  277. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  278. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  279. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  280. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  281. package/dist/src/commands/overlay-ui/index.js +70 -44
  282. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  283. package/dist/src/commands/overlay.d.ts.map +1 -1
  284. package/dist/src/commands/overlay.js +4 -3
  285. package/dist/src/commands/overlay.js.map +1 -1
  286. package/dist/src/core/overlay/applier.d.ts +1 -1
  287. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  288. package/dist/src/core/overlay/applier.js +40 -13
  289. package/dist/src/core/overlay/applier.js.map +1 -1
  290. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  291. package/dist/src/core/overlay/loader.js +6 -0
  292. package/dist/src/core/overlay/loader.js.map +1 -1
  293. package/dist/src/core/overlay/types.d.ts +5 -1
  294. package/dist/src/core/overlay/types.d.ts.map +1 -1
  295. package/dist/src/core/overlay/types.js +1 -1
  296. package/dist/src/core/overlay/types.js.map +1 -1
  297. package/dist/src/hooks/context-monitor.js +1 -1
  298. package/dist/src/hooks/context-monitor.js.map +1 -1
  299. package/dist/src/hooks/skill-context.js +1 -1
  300. package/dist/src/hooks/skill-context.js.map +1 -1
  301. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  302. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  303. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  304. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  305. package/dist/src/tools/index.js +2 -2
  306. package/dist/src/tools/index.js.map +1 -1
  307. package/dist/src/tools/store-knowhow.d.ts +21 -0
  308. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  309. package/dist/src/tools/store-knowhow.js +295 -0
  310. package/dist/src/tools/store-knowhow.js.map +1 -0
  311. package/package.json +1 -1
  312. package/shared/agent-types.ts +2 -0
  313. package/workflows/analyze.md +61 -185
  314. package/workflows/brainstorm.md +3 -23
  315. package/workflows/codebase-rebuild.md +79 -191
  316. package/workflows/codebase-refresh.md +26 -124
  317. package/workflows/debug.md +21 -141
  318. package/workflows/execute.md +183 -350
  319. package/workflows/fork.md +72 -230
  320. package/workflows/harvest.md +12 -79
  321. package/workflows/init.md +3 -17
  322. package/workflows/integration-test.md +21 -190
  323. package/workflows/issue-analyze.md +35 -153
  324. package/workflows/issue-discover.md +88 -263
  325. package/workflows/issue-execute.md +29 -208
  326. package/workflows/issue-plan.md +33 -154
  327. package/workflows/issue.md +44 -202
  328. package/workflows/knowhow.md +374 -0
  329. package/workflows/learn.md +30 -177
  330. package/workflows/maestro-coordinate.codex.md +77 -362
  331. package/workflows/maestro-link-coordinate.md +12 -61
  332. package/workflows/maestro.codex.md +124 -457
  333. package/workflows/maestro.md +562 -976
  334. package/workflows/map.md +16 -53
  335. package/workflows/merge.md +42 -197
  336. package/workflows/milestone-audit.md +5 -43
  337. package/workflows/milestone-complete.md +11 -60
  338. package/workflows/plan.md +176 -387
  339. package/workflows/quick.md +25 -174
  340. package/workflows/refactor.md +28 -221
  341. package/workflows/retrospective.md +104 -443
  342. package/workflows/review.md +87 -299
  343. package/workflows/roadmap.md +117 -97
  344. package/workflows/spec-generate.md +22 -118
  345. package/workflows/specs-add.md +5 -25
  346. package/workflows/specs-load.md +1 -5
  347. package/workflows/specs-remove.md +0 -11
  348. package/workflows/specs-setup.md +11 -47
  349. package/workflows/status.md +58 -200
  350. package/workflows/sync.md +28 -141
  351. package/workflows/test-gen.md +23 -100
  352. package/workflows/test.md +15 -125
  353. package/workflows/ui-design.md +139 -465
  354. package/workflows/ui-style.md +36 -228
  355. package/workflows/verify.md +52 -273
  356. package/workflows/wiki-connect.md +9 -46
  357. package/workflows/wiki-digest.md +7 -50
  358. package/workflows/wiki-manage.md +11 -108
  359. package/.claude/commands/maestro-coordinate.md +0 -63
  360. package/.claude/commands/manage-memory-capture.md +0 -59
  361. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  362. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  363. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  364. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  365. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  366. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  367. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  368. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  369. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  370. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  371. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  372. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  373. package/workflows/maestro-coordinate.md +0 -582
  374. package/workflows/memory.md +0 -451
@@ -141,68 +141,31 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
141
141
  ### Session Initialization
142
142
 
143
143
  ```javascript
144
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
145
-
146
- // Parse flags
147
- const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
148
- const continueMode = $ARGUMENTS.includes('--continue')
149
- const concurrencyMatch = $ARGUMENTS.match(/(?:--concurrency|-c)\s+(\d+)/)
150
- const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 4
151
-
152
- // Parse plan-specific flags
153
- const autoMode = $ARGUMENTS.includes('--auto')
154
- const gapsMode = $ARGUMENTS.includes('--gaps')
155
- const dirMatch = $ARGUMENTS.match(/--dir\s+(\S+)/)
156
- const specMatch = $ARGUMENTS.match(/--spec\s+(SPEC-\S+)/)
157
- const collabMode = $ARGUMENTS.includes('--collab')
158
-
159
- // Clean phase text
160
- const phaseArg = $ARGUMENTS
161
- .replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--auto|--gaps|--parallel|--collab|--dir\s+\S+|--spec\s+\S+/g, '')
162
- .trim()
163
-
164
- // Auto-bootstrap state.json if missing
165
- if (!fileExists('.workflow/state.json')) {
166
- Bash('mkdir -p .workflow/scratch/')
167
- writeMinimalStateJson()
168
- }
169
-
170
- // Scope determination (per scratch-milestone-architecture)
171
- const state = JSON.parse(Read('.workflow/state.json'))
172
- let scope, phaseNum = null, phaseSlug, contextDir
173
-
174
- if (dirMatch) {
175
- contextDir = dirMatch[1]
176
- phaseSlug = contextDir.split('/').pop()
177
- // Inherit scope from parent artifact if registered
178
- const parentArtifact = state.artifacts.find(a => a.path === contextDir)
179
- scope = parentArtifact?.scope || 'standalone'
180
- } else if (phaseArg === '') {
181
- if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
182
- scope = 'milestone'
183
- phaseSlug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
184
- // Find latest analyze artifact for this milestone
185
- contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.status === 'completed').pop()?.path
186
- } else {
187
- ERROR('E001: No args and no roadmap')
188
- }
189
- } else if (/^\d+$/.test(phaseArg)) {
190
- scope = 'phase'
191
- phaseNum = parseInt(phaseArg)
192
- phaseSlug = resolvePhaseSlugFromRoadmap(phaseNum)
193
- contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.phase === phaseNum && a.status === 'completed').pop()?.path
194
- } else {
195
- scope = state.current_milestone ? 'adhoc' : 'standalone'
196
- phaseSlug = phaseArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
197
- }
198
-
199
- const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
200
- const sessionId = `${dateStr}-plan-P${phaseArg}-${phaseSlug}`
201
- const sessionFolder = `.workflow/.csv-wave/${sessionId}`
202
- const scratchDir = `.workflow/scratch/${dateStr}-plan-P${phaseArg}-${phaseSlug}`
203
-
204
- Bash(`mkdir -p ${sessionFolder}`)
205
- Bash(`mkdir -p ${scratchDir}/.task/`)
144
+ // Parse from $ARGUMENTS:
145
+ // AUTO_YES <- --yes | -y
146
+ // continueMode <- --continue
147
+ // maxConcurrency <- --concurrency N | -c N (default: 4)
148
+ // autoMode <- --auto
149
+ // gapsMode <- --gaps
150
+ // dirMatch <- --dir <path>
151
+ // specMatch <- --spec SPEC-xxx
152
+ // collabMode <- --collab
153
+ // phaseArg <- remaining text after stripping all flags
154
+
155
+ // Auto-bootstrap .workflow/state.json if missing
156
+
157
+ // Scope determination from state.json (priority order):
158
+ // --dir given → scope from parent artifact or 'standalone'
159
+ // phaseArg empty → 'milestone' (requires current_milestone + roadmap.md) or ERROR E001
160
+ // phaseArg is digit → 'phase', resolve slug from roadmap, find latest completed analyze artifact
161
+ // phaseArg is text → 'adhoc' (if milestone active) or 'standalone', slugify phaseArg
162
+
163
+ // Session IDs (UTC+8):
164
+ // sessionId = {YYYYMMDD}-plan-P{phaseArg}-{phaseSlug}
165
+ // sessionFolder = .workflow/.csv-wave/{sessionId}
166
+ // scratchDir = .workflow/scratch/{sessionId}
167
+
168
+ // Create: sessionFolder, scratchDir/.task/
206
169
  ```
207
170
 
208
171
  ### Phase 1: Phase Resolution -> CSV
@@ -266,21 +229,13 @@ spawn_agents_on_csv({
266
229
  max_concurrency: maxConcurrency,
267
230
  max_runtime_seconds: 600,
268
231
  output_csv_path: `${sessionFolder}/wave-1-results.csv`,
269
- output_schema: {
270
- type: "object",
271
- properties: {
272
- id: { type: "string" },
273
- status: { type: "string", enum: ["completed", "failed"] },
274
- findings: { type: "string" },
275
- error: { type: "string" }
276
- },
277
- required: ["id", "status", "findings"]
232
+ output_schema: { // required: id, status, findings
233
+ id: "string", status: "completed|failed", findings: "string", error: "string"
278
234
  }
279
235
  })
280
236
  ```
281
237
 
282
- 6. Read `wave-1-results.csv`, merge into master `tasks.csv`
283
- 7. Delete `wave-1.csv`
238
+ 6. Merge `wave-1-results.csv` into master `tasks.csv`, delete `wave-1.csv`
284
239
 
285
240
  #### Wave 2: Plan Generation (Sequential)
286
241
 
@@ -303,123 +258,44 @@ spawn_agents_on_csv({
303
258
  instruction: buildPlanningInstruction(sessionFolder, phaseDir, {
304
259
  contextMd, indexJson, specRef, docIndex, designRef, gapsContext
305
260
  }),
306
- max_concurrency: 1, // Sequential — single planning agent
261
+ max_concurrency: 1, // Single planning agent
307
262
  max_runtime_seconds: 900,
308
263
  output_csv_path: `${sessionFolder}/wave-2-results.csv`,
309
- output_schema: {
310
- type: "object",
311
- properties: {
312
- id: { type: "string" },
313
- status: { type: "string", enum: ["completed", "failed"] },
314
- findings: { type: "string" },
315
- error: { type: "string" }
316
- },
317
- required: ["id", "status", "findings"]
264
+ output_schema: { // required: id, status, findings
265
+ id: "string", status: "completed|failed", findings: "string", error: "string"
318
266
  }
319
267
  })
320
268
  ```
321
269
 
322
- 6. Merge results into master `tasks.csv`
323
- 7. Delete `wave-2.csv`
270
+ 6. Merge `wave-2-results.csv` into master `tasks.csv`, delete `wave-2.csv`
324
271
 
325
272
  **Planning agent responsibilities** (embedded in instruction):
326
- - Decompose phase goal into concrete tasks (TASK-001, TASK-002, ...)
327
- - Determine dependencies and group into execution waves
328
- - Apply Deep Work Rules:
329
- - Every task has `read_first[]` with file being modified + source of truth files
330
- - Every task has `convergence.criteria[]` with grep-verifiable conditions
331
- - Every `action` has concrete values (never "align X with Y")
332
- - Every `implementation` step has specific values
333
- - Write `plan.json` to `{PHASE_DIR}/plan.json`
334
- - Write `.task/TASK-{NNN}.json` files to `{PHASE_DIR}/.task/`
335
- - If `--gaps`: create fix tasks from gap context, link to issues
336
- - If `--collab`: pre-allocate ID ranges for parallel planners
273
+ - Decompose phase goal TASK-001..N with dependencies grouped into execution waves
274
+ - Apply Deep Work Rules: `read_first[]` includes modified file + source of truth; `convergence.criteria[]` are grep-verifiable; all actions/steps have concrete values
275
+ - Write `plan.json` to `{PHASE_DIR}/plan.json` and `.task/TASK-{NNN}.json` to `{PHASE_DIR}/.task/`
276
+ - `--gaps`: create fix tasks from gap context, link to issues; `--collab`: pre-allocate ID ranges
337
277
 
338
278
  ### Phase 3: Plan Checking + Confirmation
339
279
 
340
280
  **Objective**: Validate plan quality, revise if needed, present to user.
341
281
 
342
282
  1. **Plan checking** (inline, not a separate wave):
343
- - Read generated `plan.json` + all `.task/TASK-*.json`
344
- - Validate dimensions:
345
-
346
- | Check | Criteria |
347
- |-------|----------|
348
- | Requirements coverage | Every success_criterion maps to at least one task |
349
- | Feasibility | Referenced files exist or can be created |
350
- | Dependency correctness | No circular deps, deps exist, wave ordering valid |
351
- | Convergence criteria quality | Grep-verifiable, no subjective language |
352
- | read_first completeness | Every task has read_first[] with modified file |
353
- | Action concreteness | No vague "align X with Y" |
354
- | Wave structure | Parallel tasks have no conflicting file modifications |
283
+ Read `plan.json` + all `.task/TASK-*.json`. Validate: requirements coverage, file feasibility, dependency correctness (no cycles, valid wave order), grep-verifiable convergence criteria, read_first completeness, action concreteness, no parallel file conflicts.
355
284
 
356
285
  2. **Revision loop** (max 3 rounds): If critical issues found, regenerate affected tasks.
357
286
 
358
287
  3. **Export results**:
359
288
  - Export `results.csv` from master `tasks.csv`
360
- - Generate `context.md`:
361
-
362
- ```markdown
363
- # Plan Report -- Phase {phase}
364
-
365
- ## Summary
366
- - Phase: {phase_name}
367
- - Tasks: {task_count} in {wave_count} waves
368
- - Complexity: {complexity}
369
- - Explorations: {exploration_count} angles explored
370
-
371
- ## Exploration Findings
289
+ - Generate `context.md`: summary (phase, task count, wave count, complexity, exploration count), exploration findings per angle, plan overview (approach, task IDs, waves), next steps
372
290
 
373
- ### {angle}: {title}
374
- {findings}
375
-
376
- ## Plan Overview
377
- - Approach: {plan.approach}
378
- - Task IDs: {task_ids}
379
- - Waves: {wave_structure}
380
-
381
- ## Next Steps
382
- {suggested actions}
383
- ```
384
-
385
- 4. **Update index.json**:
386
- ```json
387
- {
388
- "status": "planning",
389
- "plan": {
390
- "task_ids": ["TASK-001", "TASK-002"],
391
- "task_count": N,
392
- "complexity": "moderate",
393
- "waves": [[...], [...]]
394
- },
395
- "updated_at": "<ISO>"
396
- }
397
- ```
291
+ 4. **Update index.json**: set `status: "planning"`, `plan: { task_ids, task_count, complexity, waves }`, `updated_at`
398
292
 
399
293
  5. **Issue linking** (if --gaps):
400
- For each created TASK-{NNN}.json that has `issue_id`:
401
- - Update corresponding issue in `.workflow/issues/issues.jsonl`:
402
- - `task_refs`: append TASK-{NNN} to array
403
- - `task_plan_dir`: relative path to `.task/` directory
404
- - `status`: "planned"
405
- - `updated_at`: now()
406
- - Append history entry: `{ action: "planned", at: <ISO>, by: "maestro-plan", summary: "Linked to TASK-{NNN}" }`
407
- This ensures bidirectional issue <-> TASK traceability for dashboard display.
294
+ For each TASK with `issue_id`: update issue in `issues.jsonl` (`task_refs` += TASK-NNN, `task_plan_dir`, `status: "planned"`, `updated_at`) + append history entry. Ensures bidirectional issue-TASK traceability.
408
295
 
409
296
  6. **Display summary + options** (skip options if AUTO_YES):
410
- ```
411
- === PLAN READY ===
412
- Phase: {phase_name}
413
- Tasks: {task_count} tasks in {wave_count} waves
414
- Check: {checker_status}
415
-
416
- Plan: {scratch_dir}/plan.json
417
- Tasks: {scratch_dir}/.task/TASK-*.json
418
-
419
- Next steps:
420
- Skill({ skill: "maestro-execute", args: "{phase}" }) -- Execute the plan
421
- Skill({ skill: "maestro-plan", args: "{phase}" }) -- Re-plan with modifications
422
- ```
297
+ Show phase name, task/wave counts, checker status, output file paths.
298
+ Next steps: `maestro-execute "{phase}"` (execute) or `maestro-plan "{phase}"` (re-plan).
423
299
 
424
300
  ### Shared Discovery Board Protocol
425
301
 
@@ -130,75 +130,28 @@ If not found: "No templates. Create with $maestro-composer"
130
130
 
131
131
  **Trigger**: `-c [session-id]`
132
132
 
133
- 1. If session-id given: load `.workflow/.maestro-coordinate/<session-id>/state.json`
134
- 2. If no session-id: Glob `.workflow/.maestro-coordinate/MCP-*/state.json` sorted desc, find `status = "in_progress" | "paused"`
135
- 3. None found → error E005
136
- 4. Identify last completed wave, resume from next pending step
137
- 5. Jump to Phase 3 (Wave Execution)
133
+ Load session state by explicit ID or most recent `MCP-*/state.json` with `status = "in_progress" | "paused"`. Error E005 if none found. Resume from next pending step after last completed wave → jump to Phase 3.
138
134
 
139
135
  ---
140
136
 
141
137
  ### Phase 1: Load & Bind
142
138
 
143
- **Step 1.1**Resolve template path:
144
- 1. Absolute path use as-is
145
- 2. Slug look up in `~/.maestro/templates/workflows/index.json`
146
- 3. Partial match confirm with user
147
- 4. Not found show `--list`, AskUserQuestion
148
-
149
- **Step 1.2** — Parse `--context key=value` pairs into `bound_context`.
150
-
151
- **Step 1.3** — Load and validate template JSON.
152
-
153
- **Step 1.4** — Collect missing required variables via AskUserQuestion.
154
-
155
- **Step 1.5** — Bind `{variable_name}` in all `args_template` strings. Leave `{N-xxx.field}` and `{prev_*}` unresolved (runtime Phase 3).
156
-
157
- **Step 1.6** — If `--dry-run`: print wave plan and exit (see Phase 2 output).
139
+ 1. **Resolve template**: absolute path → as-is, slug → lookup in `~/.maestro/templates/workflows/index.json`, partial → confirm, not found → show `--list`
140
+ 2. **Parse** `--context key=value` pairs into `bound_context`
141
+ 3. **Load and validate** template JSON
142
+ 4. **Collect missing** required variables via AskUserQuestion
143
+ 5. **Bind** `{variable_name}` in all `args_template` strings. Leave `{N-xxx.field}` and `{prev_*}` unresolved (runtime Phase 3)
144
+ 6. If `--dry-run`: print wave plan and exit
158
145
 
159
146
  ---
160
147
 
161
148
  ### Phase 2: Init Session & Build Wave Plan
162
149
 
163
- **Step 2.1** Generate session ID: `MCP-<YYYYMMDD>-<HHmmss>`.
164
-
165
- **Step 2.2** Topological sort (Kahn's algorithm) on template nodes + edges.
166
-
167
- **Step 2.3** Classify barrier vs non-barrier per node:
168
-
169
- ```javascript
170
- const BARRIER_SKILLS = new Set([
171
- 'maestro-analyze', 'maestro-plan', 'maestro-brainstorm',
172
- 'maestro-spec-generate', 'maestro-execute'
173
- ]);
174
-
175
- function isBarrier(node) {
176
- if (node.type === 'checkpoint') return true;
177
- return BARRIER_SKILLS.has(node.executor);
178
- }
179
- ```
180
-
181
- **Step 2.4** — Group into waves:
182
-
183
- ```javascript
184
- function buildWaves(sortedNodes) {
185
- const waves = [];
186
- let currentWave = [];
187
- for (const node of sortedNodes) {
188
- if (isBarrier(node)) {
189
- if (currentWave.length > 0) waves.push(currentWave);
190
- waves.push([node]); // barrier = solo wave
191
- currentWave = [];
192
- } else {
193
- currentWave.push(node);
194
- }
195
- }
196
- if (currentWave.length > 0) waves.push(currentWave);
197
- return waves;
198
- }
199
- ```
200
-
201
- **Step 2.5** — Build steps array from waves. Write `state.json` to `.workflow/.maestro-coordinate/<session-id>/`.
150
+ 1. Generate session ID: `MCP-<YYYYMMDD>-<HHmmss>`
151
+ 2. Topological sort (Kahn's algorithm) on template nodes + edges
152
+ 3. Classify barrier vs non-barrier: barriers = checkpoint nodes + `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-spec-generate`, `maestro-execute`
153
+ 4. Group into waves: barrier nodes → solo wave, non-barrier nodes → accumulate into parallel wave
154
+ 5. Build steps array from waves, write `state.json`
202
155
 
203
156
  **Step 2.6** — Display start banner:
204
157
  ```
@@ -223,69 +176,20 @@ function buildWaves(sortedNodes) {
223
176
 
224
177
  ### Phase 3: Wave Execution Loop
225
178
 
226
- ```javascript
227
- let waveNum = 0;
228
- while (state.steps.some(s => s.status === 'pending')) {
229
- waveNum++;
230
- const waveSteps = getNextWave(state.steps);
231
- ```
179
+ Loop while any step has `status === 'pending'`:
232
180
 
233
181
  **3a. Resolve runtime references** in each step's args:
234
-
235
- ```javascript
236
- function resolveArgs(args, steps, context) {
237
- return args
238
- .replace(/{(\w+)}/g, (_, key) => context[key] ?? '')
239
- .replace(/{N-(\d+)\.(\w+)}/g, (_, id, field) => {
240
- const step = steps.find(s => s.node_id === `N-${id}`);
241
- return step?.[field] ?? '';
242
- })
243
- .replace(/{prev_(\w+)}/g, (_, field) => {
244
- const prev = [...steps].reverse().find(s =>
245
- s.status === 'completed' && s.type !== 'checkpoint');
246
- return prev?.[field] ?? '';
247
- });
248
- }
249
- ```
182
+ - `{key}` → lookup from `context[key]`
183
+ - `{N-xxx.field}` → lookup from completed step with matching `node_id`
184
+ - `{prev_field}` lookup from most recently completed non-checkpoint step
250
185
 
251
186
  **3b. Handle checkpoint nodes** (no CSV spawn needed):
252
-
253
- ```javascript
254
- if (waveSteps[0].type === 'checkpoint') {
255
- const cp = waveSteps[0];
256
- // Save checkpoint snapshot
257
- Write(`${sessionDir}/checkpoints/${cp.node_id}.json`, JSON.stringify({
258
- session_id: state.id, checkpoint_id: cp.node_id,
259
- saved_at: new Date().toISOString(),
260
- steps_snapshot: state.steps, context: state.context
261
- }, null, 2));
262
-
263
- state.context.last_checkpoint = cp.node_id;
264
- cp.status = 'completed'; cp.wave_n = waveNum;
265
-
266
- // If auto_continue == false: pause for user
267
- if (!cp.auto_continue) {
268
- AskUserQuestion: Continue / Pause / Abort
269
- on Pause: state.status = 'paused', save, exit
270
- on Abort: state.status = 'aborted', skip remaining, exit
271
- }
272
-
273
- Write(stateFile, JSON.stringify(state, null, 2));
274
- continue;
275
- }
276
- ```
187
+ - Save checkpoint snapshot to `checkpoints/{node_id}.json` (session state + context)
188
+ - Update `context.last_checkpoint`, mark completed
189
+ - If `auto_continue === false`: prompt user (Continue / Pause / Abort)
277
190
 
278
191
  **3c. Build wave CSV** for skill nodes:
279
-
280
- ```javascript
281
- const csvContent = 'id,skill_call,topic\n' + waveSteps.map(step => {
282
- const resolvedArgs = resolveArgs(step.args, state.steps, state.context);
283
- const skillCall = `$${step.skill} ${resolvedArgs}`.trim();
284
- return `"${step.step_n}","${skillCall.replace(/"/g, '""')}","Template \"${state.template_name}\" step ${step.step_n}/${state.steps.length}"`;
285
- }).join('\n');
286
-
287
- Write(`${sessionDir}/wave-${waveNum}.csv`, csvContent);
288
- ```
192
+ Write `wave-{N}.csv` with columns `id,skill_call,topic`. Each row: resolved `$${step.skill} ${args}`.
289
193
 
290
194
  **3d. Spawn agents**:
291
195
 
@@ -298,43 +202,14 @@ spawn_agents_on_csv({
298
202
  max_runtime_seconds: 1800,
299
203
  output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
300
204
  output_schema: RESULT_SCHEMA
301
- });
302
- ```
303
-
304
- **3e. Read results, update state**:
305
-
306
- ```javascript
307
- const results = readCSV(`${sessionDir}/wave-${waveNum}-results.csv`);
308
- for (const row of results) {
309
- const step = state.steps.find(s => s.step_n === parseInt(row.id));
310
- step.status = row.status;
311
- step.findings = row.summary;
312
- step.artifacts = row.artifacts;
313
- step.wave_n = waveNum;
314
- }
205
+ })
315
206
  ```
316
207
 
317
- **3f. Barrier analysis** (if barrier wave):
208
+ **3e. Read results**: Map each result row back to its step — update status, findings, artifacts, wave_n.
318
209
 
319
- ```javascript
320
- if (isBarrier(waveSteps[0])) {
321
- analyzeBarrierArtifacts(waveSteps[0], results[0], state.context);
322
- }
323
- ```
324
-
325
- **3g. Persist + abort check**:
210
+ **3f. Barrier analysis**: If barrier wave, read artifacts and update context (see barrier node table in `<context>`).
326
211
 
327
- ```javascript
328
- state.waves.push({ wave_n: waveNum, steps: waveSteps.map(s => s.step_n) });
329
- Write(stateFile, JSON.stringify(state, null, 2));
330
-
331
- if (results.some(r => r.status === 'failed')) {
332
- state.status = 'aborted';
333
- state.steps.filter(s => s.status === 'pending').forEach(s => s.status = 'skipped');
334
- Write(stateFile, JSON.stringify(state, null, 2));
335
- break;
336
- }
337
- ```
212
+ **3g. Persist + abort check**: Append wave record to `state.waves[]`, persist `state.json`. If any result failed → set `state.status = 'aborted'`, mark remaining steps as skipped.
338
213
 
339
214
  ### Sub-Agent Instruction Template
340
215
 
@@ -49,30 +49,11 @@ Extract from arguments:
49
49
 
50
50
  ### Step 2: Load Project Context
51
51
 
52
- ```bash
53
- cat .workflow/state.json 2>/dev/null
54
- cat .workflow/project.md 2>/dev/null
55
- ```
56
-
57
- If `.workflow/` does not exist, create minimal scratch structure anyway (quick works without full init).
52
+ Read `.workflow/state.json` and `.workflow/project.md` if they exist. If `.workflow/` does not exist, create minimal scratch structure anyway (quick works without full init).
58
53
 
59
54
  ### Step 3: Create Scratch Directory
60
55
 
61
- Generate slug from task description (lowercase, hyphens, max 40 chars).
62
-
63
- ```bash
64
- mkdir -p .workflow/scratch/{slug}
65
- ```
66
-
67
- Write `config.json` with task metadata:
68
- ```json
69
- {
70
- "task": "<description>",
71
- "flags": { "discuss": false, "full": false },
72
- "created_at": "<ISO timestamp>",
73
- "status": "active"
74
- }
75
- ```
56
+ Generate slug from task description (lowercase, hyphens, max 40 chars). Create `.workflow/scratch/{slug}/`. Write `config.json` with: `task`, `flags` (discuss, full), `created_at` (ISO), `status` ("active").
76
57
 
77
58
  ### Step 4: Discussion Phase (if --discuss)
78
59
 
@@ -113,37 +94,13 @@ Update plan.json task statuses as completed.
113
94
 
114
95
  ### Step 8: Verification (if --full)
115
96
 
116
- **Only when `--full` is set.**
117
-
118
- Run convergence criteria checks:
119
- ```bash
120
- # For each task, verify convergence_criteria via grep/test commands
121
- ```
122
-
123
- If gaps found (W001): attempt single fix iteration, then report remaining gaps.
97
+ **Only when `--full` is set.** Run convergence criteria checks for each task via grep/test commands. If gaps found (W001): attempt single fix iteration, then report remaining gaps.
124
98
 
125
99
  ### Step 9: Commit and Report
126
100
 
127
- ```bash
128
- git add -A
129
- git commit -m "quick: {slug} - {short description}"
130
- ```
131
-
132
- Update `.workflow/state.json` scratch task entry (if state.json exists).
101
+ Commit all changes: `git add -A && git commit -m "quick: {slug} - {short description}"`. Update `.workflow/state.json` scratch task entry (if state.json exists).
133
102
 
134
- ```
135
- === QUICK TASK COMPLETE ===
136
- Task: {description}
137
- Scratch: .workflow/scratch/{slug}/
138
- Status: {completed|completed-with-gaps}
139
-
140
- Tasks: {completed}/{total}
141
- Files modified: {count}
142
-
143
- {if --full}
144
- Verification: {PASS|GAPS}
145
- {endif}
146
- ```
103
+ Display report: task description, scratch path, status (completed/completed-with-gaps), tasks completed/total, files modified count. If `--full`: include verification result (PASS/GAPS).
147
104
 
148
105
  </execution>
149
106