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
@@ -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
 
@@ -0,0 +1,323 @@
1
+ ---
2
+ name: maestro-player
3
+ description: Workflow template player — load JSON template, bind variables, execute DAG nodes wave-by-wave via spawn_agents_on_csv, persist state at checkpoints, support resume. Coordinator assembles skill_call from template nodes — never executes skills directly.
4
+ argument-hint: "<template-slug|path> [--context key=value...] [-c [session-id]] [--list] [--dry-run]"
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ <purpose>
9
+ Wave-based template executor using `spawn_agents_on_csv`. Loads a workflow template
10
+ (produced by maestro-composer), binds context variables, converts DAG nodes into
11
+ CSV waves via topological sort, executes wave-by-wave with barrier/non-barrier grouping.
12
+
13
+ Aligned with maestro codex coordinator pattern:
14
+ - ALL skill execution via `spawn_agents_on_csv` — coordinator never executes directly
15
+ - Barrier nodes (checkpoints + artifact-producing skills) execute solo
16
+ - Non-barrier nodes grouped into parallel waves
17
+ - Session state at `.workflow/.maestro-coordinate/{session-id}/`
18
+ - Resume from last completed wave via `-c`
19
+
20
+ ```
21
+ Load Template → Bind Variables → Build Wave CSV → spawn → read results →
22
+ (barrier: read artifacts, update context) → next wave → report
23
+ ```
24
+ </purpose>
25
+
26
+ <invariants>
27
+ 1. **ALL skills via spawn_agents_on_csv**: Every node execution goes through spawn. Coordinator NEVER directly executes any skill.
28
+ 2. **Coordinator = prompt assembler only**: Load template → resolve refs → build CSV → spawn → read results → assemble next CSV.
29
+ 3. **Barrier = solo wave**: Checkpoint nodes and artifact-producing skills execute alone (wave size = 1).
30
+ 4. **Non-barriers can parallel**: Consecutive non-barrier nodes grouped into one wave.
31
+ 5. **Wave-by-wave**: Never start wave N+1 before wave N results are read and analyzed.
32
+ 6. **Coordinator owns context**: Sub-agents never read prior results — coordinator assembles full `skill_call` with resolved args.
33
+ 7. **Resume from wave**: `-c` finds last completed wave, resumes from next pending step.
34
+ </invariants>
35
+
36
+ <context>
37
+ $ARGUMENTS — template slug/path, or flags.
38
+
39
+ **Flags:**
40
+ - `--context key=value` — Bind context variables (repeatable)
41
+ - `-c` / `--continue [session-id]` — Resume paused/interrupted session
42
+ - `--list` — List available templates
43
+ - `--dry-run` — Show wave plan without executing
44
+
45
+ **Entry routing:**
46
+
47
+ | Detection | Condition | Handler |
48
+ |-----------|-----------|---------|
49
+ | List | `--list` | handleList |
50
+ | Resume | `-c [session-id]` | Phase 0: Resume |
51
+ | Dry run | `--dry-run` | Phase 1 + 2, print plan, exit |
52
+ | Normal | Template slug/path | Phase 1 |
53
+ | No args | Empty | handleList + AskUserQuestion |
54
+
55
+ **Session tracking (aligned with maestro codex):**
56
+
57
+ | Constant | Value |
58
+ |----------|-------|
59
+ | Session prefix | `MCP` (Maestro Composer Player) |
60
+ | Session dir | `.workflow/.maestro-coordinate/MCP-<YYYYMMDD>-<HHmmss>/` |
61
+ | State file | `state.json` |
62
+ | Wave CSV | `wave-{N}.csv` |
63
+ | Wave results | `wave-{N}-results.csv` |
64
+ | Template dir | `~/.maestro/templates/workflows/` |
65
+ | Template index | `~/.maestro/templates/workflows/index.json` |
66
+
67
+ **Barrier nodes** (solo wave, coordinator reads artifacts after):
68
+
69
+ | Node type | Artifacts to Read | Context Updates |
70
+ |-----------|------------------|-----------------|
71
+ | `checkpoint` | — (state save only) | `last_checkpoint` |
72
+ | `maestro-plan` | `plan.json`, `.task/TASK-*.json` | `plan_dir`, `task_count` |
73
+ | `maestro-execute` | `results.csv` | `exec_status`, `completed_tasks` |
74
+ | `maestro-analyze` | `context.md` | `analysis_dir`, `gaps`, `phase` |
75
+ | `maestro-brainstorm` | `.brainstorming/` | `brainstorm_dir` |
76
+ | `maestro-spec-generate` | `specs/` | `spec_session_id` |
77
+
78
+ All other skill nodes are **non-barrier** (groupable into parallel waves).
79
+
80
+ **state.json schema:**
81
+
82
+ ```json
83
+ {
84
+ "id": "MCP-<YYYYMMDD>-<HHmmss>",
85
+ "intent": "<template_name> with context",
86
+ "chain": "<template_id>",
87
+ "template_path": "~/.maestro/templates/workflows/<slug>.json",
88
+ "template_name": "<name>",
89
+ "auto_yes": false,
90
+ "status": "in_progress | paused | completed | aborted",
91
+ "started_at": "<ISO>",
92
+ "context": {
93
+ "goal": "...", "scope": "...",
94
+ "phase": null, "plan_dir": null, "analysis_dir": null,
95
+ "last_checkpoint": null
96
+ },
97
+ "waves": [],
98
+ "steps": [
99
+ {
100
+ "step_n": 1, "node_id": "N-001",
101
+ "skill": "<executor>", "args": "<args_template>",
102
+ "type": "skill | cli | checkpoint",
103
+ "is_barrier": true,
104
+ "status": "pending | completed | failed | skipped",
105
+ "wave_n": null, "findings": null, "artifacts": null
106
+ }
107
+ ]
108
+ }
109
+ ```
110
+ </context>
111
+
112
+ <execution>
113
+
114
+ ### handleList
115
+
116
+ Scan `~/.maestro/templates/workflows/index.json`. Display:
117
+ ```
118
+ Available workflow templates:
119
+ feature-tdd-review [feature, complex] 3 work nodes, 2 checkpoints
120
+ quick-bugfix [bugfix, simple] 2 work nodes, 1 checkpoint
121
+
122
+ Run: $maestro-player <slug> --context goal="..."
123
+ ```
124
+
125
+ If not found: "No templates. Create with $maestro-composer"
126
+
127
+ ---
128
+
129
+ ### Phase 0: Resume
130
+
131
+ **Trigger**: `-c [session-id]`
132
+
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.
134
+
135
+ ---
136
+
137
+ ### Phase 1: Load & Bind
138
+
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
145
+
146
+ ---
147
+
148
+ ### Phase 2: Init Session & Build Wave Plan
149
+
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`
155
+
156
+ **Step 2.6** — Display start banner:
157
+ ```
158
+ ============================================================
159
+ MAESTRO PLAYER
160
+ ============================================================
161
+ Template: <template.name>
162
+ Session: <session_id>
163
+ Context: goal="<value>"
164
+
165
+ Wave Plan:
166
+ [W1] N-001 maestro-plan "{goal}" [BARRIER]
167
+ [W2] N-002 maestro-execute {phase} [BARRIER]
168
+ [W3] N-003 quality-test {phase}
169
+ N-004 quality-review {phase}
170
+ ============================================================
171
+ ```
172
+
173
+ **`--dry-run`**: Display above and exit.
174
+
175
+ ---
176
+
177
+ ### Phase 3: Wave Execution Loop
178
+
179
+ Loop while any step has `status === 'pending'`:
180
+
181
+ **3a. Resolve runtime references** in each step's args:
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
185
+
186
+ **3b. Handle checkpoint nodes** (no CSV spawn needed):
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)
190
+
191
+ **3c. Build wave CSV** for skill nodes:
192
+ Write `wave-{N}.csv` with columns `id,skill_call,topic`. Each row: resolved `$${step.skill} ${args}`.
193
+
194
+ **3d. Spawn agents**:
195
+
196
+ ```javascript
197
+ spawn_agents_on_csv({
198
+ csv_path: `${sessionDir}/wave-${waveNum}.csv`,
199
+ id_column: "id",
200
+ instruction: PLAYER_INSTRUCTION,
201
+ max_workers: waveSteps.length,
202
+ max_runtime_seconds: 1800,
203
+ output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
204
+ output_schema: RESULT_SCHEMA
205
+ })
206
+ ```
207
+
208
+ **3e. Read results**: Map each result row back to its step — update status, findings, artifacts, wave_n.
209
+
210
+ **3f. Barrier analysis**: If barrier wave, read artifacts and update context (see barrier node table in `<context>`).
211
+
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.
213
+
214
+ ### Sub-Agent Instruction Template
215
+
216
+ ```
217
+ 你是 CSV job 子 agent。
218
+
219
+ 先原样执行这一段技能调用:
220
+ {skill_call}
221
+
222
+ 然后基于结果完成这一行任务说明:
223
+ {topic}
224
+
225
+ 限制:
226
+ - 不要修改 .workflow/.maestro-coordinate/ 下的 state 文件
227
+ - skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
228
+
229
+ 最后必须调用 `report_agent_job_result`,返回 JSON:
230
+ {"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}
231
+ ```
232
+
233
+ ### Result Schema
234
+
235
+ ```javascript
236
+ const RESULT_SCHEMA = {
237
+ type: "object",
238
+ properties: {
239
+ status: { type: "string", enum: ["completed", "failed"] },
240
+ skill_call: { type: "string" },
241
+ summary: { type: "string" },
242
+ artifacts: { type: "string" },
243
+ error: { type: "string" }
244
+ },
245
+ required: ["status", "skill_call", "summary", "artifacts", "error"]
246
+ };
247
+ ```
248
+
249
+ ---
250
+
251
+ ### Phase 4: Completion Report
252
+
253
+ ```
254
+ ============================================================
255
+ MAESTRO PLAYER SESSION COMPLETE
256
+ ============================================================
257
+ Session: <session_id>
258
+ Template: <template_name> (<template_id>)
259
+ Waves: <N> executed
260
+ Steps: <completed>/<total>
261
+ Context: goal="<value>"
262
+
263
+ WAVE RESULTS:
264
+ [W1] $maestro-plan "{goal}" → ✓ plan created
265
+ [W2] $maestro-execute {phase} → ✓ 12/12 tasks
266
+ [W3] $quality-test {phase} → ✓ all tests pass
267
+ $quality-review {phase} → ✓ no issues
268
+
269
+ State: .workflow/.maestro-coordinate/<session_id>/state.json
270
+ Resume: $maestro-player -c
271
+ ============================================================
272
+ ```
273
+
274
+ Update `state.status = "completed"`, write final `state.json`.
275
+ </execution>
276
+
277
+ <csv_schema>
278
+ ### wave-{N}.csv (Per-Wave Input)
279
+
280
+ ```csv
281
+ id,skill_call,topic
282
+ "1","$maestro-plan \"implement user auth\"","Template \"feature-plan-test\" step 1/5"
283
+ ```
284
+
285
+ | Column | Description |
286
+ |--------|-------------|
287
+ | `id` | Step number (string) |
288
+ | `skill_call` | Full skill invocation with resolved context args |
289
+ | `topic` | Brief description for the agent |
290
+
291
+ ### wave-{N}-results.csv (Per-Wave Output)
292
+
293
+ Written by `spawn_agents_on_csv`. Contains result per agent.
294
+ </csv_schema>
295
+
296
+ <error_codes>
297
+ | Code | Severity | Condition | Recovery |
298
+ |------|----------|-----------|----------|
299
+ | E001 | error | Template not found | Show --list, suggest closest match |
300
+ | E002 | error | Template JSON invalid | Point to file for fix |
301
+ | E003 | error | Required variable missing, user declined | Cannot proceed |
302
+ | E004 | error | DAG cycle in template | Suggest $maestro-composer --edit |
303
+ | E005 | error | Resume session not found | List sessions |
304
+ | E006 | error | Wave timeout | Mark failed, abort chain |
305
+ | E007 | error | Barrier artifact not found | Retry wave once, then abort |
306
+ | W001 | warning | Runtime reference resolved to empty | Log, continue |
307
+ | W002 | warning | Barrier artifact partial | Continue with available context |
308
+ </error_codes>
309
+
310
+ <success_criteria>
311
+ - [ ] Template loaded from `~/.maestro/templates/workflows/` and validated
312
+ - [ ] All required context variables bound
313
+ - [ ] Session dir at `.workflow/.maestro-coordinate/MCP-*/` with `state.json`
314
+ - [ ] DAG nodes converted to waves (barrier=solo, non-barrier=parallel)
315
+ - [ ] Every skill invocation goes through `spawn_agents_on_csv` — none in coordinator
316
+ - [ ] Checkpoint nodes handled inline (state save, optional user pause)
317
+ - [ ] Barrier artifacts read and context updated before next wave
318
+ - [ ] Runtime references ({N-xxx.field}, {prev_*}) resolved before each wave CSV
319
+ - [ ] Failed step → remaining marked skipped → abort reported
320
+ - [ ] `--dry-run` shows wave plan with [BARRIER] markers, no execution
321
+ - [ ] `-c` resumes from last completed wave
322
+ - [ ] Completion report with per-wave status
323
+ </success_criteria>
@@ -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