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
@@ -53,7 +53,14 @@ $ARGUMENTS — user intent text, or special flags.
53
53
  | refactor, cleanup, debt | `quality-refactor` | $quality-refactor |
54
54
  | feature, implement, add, build | `feature` | $maestro-plan → $maestro-execute → $maestro-verify |
55
55
  | review, check, audit | `quality-review` | $quality-review |
56
- | deploy, release, ship | `deploy` | $maestro-verify → $maestro-execute |
56
+ | deploy, release, ship | `deploy` | $maestro-verify → $maestro-milestone-release |
57
+ | brainstorm, explore, ideate | `brainstorm-driven` | $maestro-brainstorm → $maestro-plan → $maestro-execute → $maestro-verify |
58
+ | plan, design, architect | `plan` | $maestro-plan |
59
+ | debug, diagnose, troubleshoot | `debug` | $quality-debug |
60
+ | continue, next, go | `state_continue` | (from project state) |
61
+ | status, dashboard | `status` | $manage-status |
62
+
63
+ Full chain map with 40+ chains: see `@~/.maestro/workflows/maestro.codex.md` §3c
57
64
  </chain_map>
58
65
 
59
66
  <barrier_skills>
@@ -72,36 +79,15 @@ After a barrier skill completes **in its spawned sub-agent**, coordinator reads
72
79
 
73
80
  ### Barrier Analysis Logic
74
81
 
75
- ```javascript
76
- function analyzeBarrierArtifacts(step, result, ctx) {
77
- const artifactPath = result.artifacts;
78
- switch (step.skill) {
79
- case 'maestro-analyze':
80
- const contextMd = Read(`${artifactPath}/context.md`);
81
- ctx.analysis_dir = artifactPath;
82
- ctx.gaps = extractGaps(contextMd);
83
- if (!ctx.phase) ctx.phase = extractPhase(contextMd);
84
- break;
85
- case 'maestro-plan':
86
- const planJson = JSON.parse(Read(`${artifactPath}/plan.json`));
87
- ctx.plan_dir = artifactPath;
88
- ctx.task_count = planJson.tasks?.length ?? 0;
89
- ctx.wave_count = planJson.waves?.length ?? 0;
90
- break;
91
- case 'maestro-brainstorm':
92
- ctx.brainstorm_dir = artifactPath;
93
- break;
94
- case 'maestro-spec-generate':
95
- ctx.spec_session_id = extractSpecId(artifactPath);
96
- break;
97
- case 'maestro-execute':
98
- const execResults = Read(`${artifactPath}/results.csv`);
99
- ctx.exec_completed = countStatus(execResults, 'completed');
100
- ctx.exec_failed = countStatus(execResults, 'failed');
101
- break;
102
- }
103
- }
104
- ```
82
+ After each barrier skill completes, read its artifacts and update `state.context`:
83
+
84
+ | Barrier Skill | Read | Context Updates |
85
+ |---------------|------|-----------------|
86
+ | `maestro-analyze` | `{artifacts}/context.md` | `analysis_dir`, `gaps` (extracted), `phase` (if unset) |
87
+ | `maestro-plan` | `{artifacts}/plan.json` | `plan_dir`, `task_count`, `wave_count` from plan JSON |
88
+ | `maestro-brainstorm` | `{artifacts}/` | `brainstorm_dir` |
89
+ | `maestro-spec-generate` | `{artifacts}/` | `spec_session_id` (extracted) |
90
+ | `maestro-execute` | `{artifacts}/results.csv` | `exec_completed`, `exec_failed` (counted by status) |
105
91
  </barrier_skills>
106
92
 
107
93
  <execution>
@@ -116,23 +102,17 @@ function analyzeBarrierArtifacts(step, result, ctx) {
116
102
  3. Otherwise classify intent via keyword heuristics (see chain_map)
117
103
  4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
118
104
  5. Resolve chain's skill list
119
- 6. Write `state.json`:
120
-
121
- ```javascript
122
- const sessionId = `MCC-${dateStr}-${timeStr}`;
123
- const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
124
-
125
- Write(`${sessionDir}/state.json`, JSON.stringify({
126
- id: sessionId, intent, chain: resolvedChain, auto_yes: AUTO_YES,
127
- status: "in_progress", started_at: new Date().toISOString(),
128
- context: { phase: null, plan_dir: null, analysis_dir: null,
129
- brainstorm_dir: null, spec_session_id: null, gaps: null },
130
- waves: [],
131
- steps: chain.map((skill, i) => ({
132
- step_n: i + 1, skill: skill.cmd, args: skill.args ?? '',
133
- status: "pending", wave_n: null
134
- }))
135
- }, null, 2));
105
+ 6. Create session dir `.workflow/.maestro-coordinate/MCC-{dateStr}-{timeStr}/` and write `state.json`:
106
+
107
+ ```json
108
+ {
109
+ "id": "MCC-{dateStr}-{timeStr}", "intent": "...", "chain": "...",
110
+ "auto_yes": false, "status": "in_progress", "started_at": "ISO",
111
+ "context": { "phase": null, "plan_dir": null, "analysis_dir": null,
112
+ "brainstorm_dir": null, "spec_session_id": null, "gaps": null },
113
+ "waves": [],
114
+ "steps": [{ "step_n": 1, "skill": "...", "args": "", "status": "pending", "wave_n": null }]
115
+ }
136
116
  ```
137
117
 
138
118
  **`--dry-run`**: Display chain with `[BARRIER]` markers, stop.
@@ -141,95 +121,41 @@ Write(`${sessionDir}/state.json`, JSON.stringify({
141
121
 
142
122
  ### Phase 2: Wave Execution Loop
143
123
 
144
- ```javascript
145
- let waveNum = 0;
146
- while (state.steps.some(s => s.status === 'pending')) {
147
- waveNum++;
148
- const waveSteps = buildNextWave(state.steps);
149
-
150
- // Build CSV — coordinator assembles skill_call, sub-agent executes verbatim
151
- const csvContent = 'id,skill_call,topic\n' + waveSteps.map(step =>
152
- `"${step.step_n}","${buildSkillCall(step, state.context).replace(/"/g, '""')}","Chain \"${state.chain}\" step ${step.step_n}/${state.steps.length}"`
153
- ).join('\n');
154
- Write(`${sessionDir}/wave-${waveNum}.csv`, csvContent);
155
-
156
- // Spawn — ALL execution via spawn_agents_on_csv, never direct
157
- spawn_agents_on_csv({
158
- csv_path: `${sessionDir}/wave-${waveNum}.csv`,
159
- id_column: "id", instruction: WAVE_INSTRUCTION,
160
- max_workers: waveSteps.length > 1 ? waveSteps.length : 1,
161
- max_runtime_seconds: 1800,
162
- output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
163
- output_schema: RESULT_SCHEMA
164
- });
165
-
166
- // Read results, update status
167
- const results = readCSV(`${sessionDir}/wave-${waveNum}-results.csv`);
168
- for (const row of results) {
169
- const step = state.steps.find(s => s.step_n === parseInt(row.id));
170
- step.status = row.status; step.findings = row.findings; step.wave_n = waveNum;
171
- }
172
-
173
- // Barrier: read artifacts, update context (NOT execute — skill already ran in sub-agent)
174
- if (isBarrier(waveSteps[0].skill)) {
175
- analyzeBarrierArtifacts(waveSteps[0], results[0], state.context);
176
- }
177
-
178
- // Persist + abort check
179
- state.waves.push({ wave_n: waveNum, steps: waveSteps.map(s => s.step_n), results });
180
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
181
-
182
- if (results.some(r => r.status === 'failed')) {
183
- state.status = 'aborted';
184
- state.steps.filter(s => s.status === 'pending').forEach(s => s.status = 'skipped');
185
- Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
186
- break;
187
- }
188
- }
189
- ```
124
+ **While pending steps remain**, increment `waveNum` and repeat:
125
+
126
+ 1. **Build wave**: Select next wave steps via `buildNextWave` (barrier = solo, non-barriers = grouped)
127
+ 2. **Write CSV**: `{sessionDir}/wave-{N}.csv` with columns `id,skill_call,topic` — one row per step, skill_call assembled with resolved context
128
+ 3. **Spawn**:
129
+ ```
130
+ spawn_agents_on_csv({
131
+ csv_path: "{sessionDir}/wave-{N}.csv",
132
+ id_column: "id", instruction: WAVE_INSTRUCTION,
133
+ max_workers: <wave size>, max_runtime_seconds: 1800,
134
+ output_csv_path: "{sessionDir}/wave-{N}-results.csv",
135
+ output_schema: RESULT_SCHEMA
136
+ })
137
+ ```
138
+ 4. **Read results**: Update each step's `status`, `findings`, `wave_n` from results CSV
139
+ 5. **Barrier check**: If wave was a barrier skill, run barrier analysis logic (read artifacts, update context)
140
+ 6. **Persist**: Append wave to `state.waves[]`, write `state.json`
141
+ 7. **Abort on failure**: If any result `status === 'failed'` → mark remaining steps `skipped`, set `state.status = 'aborted'`, break
190
142
 
191
143
  ### Skill Call Assembly
192
144
 
193
- ```javascript
194
- const BARRIER_SKILLS = new Set([
195
- 'maestro-analyze', 'maestro-plan', 'maestro-brainstorm',
196
- 'maestro-spec-generate', 'maestro-execute'
197
- ]);
198
- const AUTO_FLAG_MAP = {
199
- 'maestro-analyze': '-y', 'maestro-brainstorm': '-y',
200
- 'maestro-ui-design': '-y', 'maestro-plan': '--auto',
201
- 'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
202
- 'quality-retrospective': '--auto-yes',
203
- };
204
-
205
- function buildSkillCall(step, ctx) {
206
- let args = (step.args ?? '')
207
- .replace(/{phase}/g, ctx.phase ?? '')
208
- .replace(/{description}/g, state.intent ?? '')
209
- .replace(/{issue_id}/g, ctx.issue_id ?? '')
210
- .replace(/{plan_dir}/g, ctx.plan_dir ?? '')
211
- .replace(/{analysis_dir}/g, ctx.analysis_dir ?? '')
212
- .replace(/{brainstorm_dir}/g, ctx.brainstorm_dir ?? '')
213
- .replace(/{spec_session_id}/g, ctx.spec_session_id ?? '');
214
- if (state.auto_yes) {
215
- const flag = AUTO_FLAG_MAP[step.skill];
216
- if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag;
217
- }
218
- return `$${step.skill} ${args}`.trim();
219
- }
145
+ **Barrier skills**: `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-spec-generate`, `maestro-execute`
220
146
 
221
- function buildNextWave(steps) {
222
- const pending = steps.filter(s => s.status === 'pending');
223
- if (!pending.length) return [];
224
- if (BARRIER_SKILLS.has(pending[0].skill)) return [pending[0]];
225
- const wave = [pending[0]];
226
- for (let i = 1; i < pending.length; i++) {
227
- if (BARRIER_SKILLS.has(pending[i].skill)) break;
228
- wave.push(pending[i]);
229
- }
230
- return wave;
231
- }
232
- ```
147
+ **Auto-yes flag map** (appended when `state.auto_yes` is true):
148
+
149
+ | Skill | Flag |
150
+ |-------|------|
151
+ | `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-spec-generate` | `-y` |
152
+ | `maestro-plan` | `--auto` |
153
+ | `quality-test` | `--auto-fix` |
154
+ | `quality-retrospective` | `--auto-yes` |
155
+
156
+ **`buildSkillCall(step, ctx)`**: Replace placeholders `{phase}`, `{description}`, `{issue_id}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}` in `step.args` with corresponding `ctx` values. Append auto-yes flag if applicable. Return `$<skill> <args>`.
157
+
158
+ **`buildNextWave(steps)`**: Take first pending step. If it is a barrier skill, return it solo. Otherwise, collect consecutive non-barrier pending steps into one wave (stop at first barrier).
233
159
 
234
160
  ### Sub-Agent Instruction Template
235
161
 
@@ -252,19 +178,7 @@ function buildNextWave(steps) {
252
178
 
253
179
  ### Result Schema
254
180
 
255
- ```javascript
256
- const RESULT_SCHEMA = {
257
- type: "object",
258
- properties: {
259
- status: { type: "string", enum: ["completed", "failed"] },
260
- skill_call: { type: "string" },
261
- summary: { type: "string" },
262
- artifacts: { type: "string" },
263
- error: { type: "string" }
264
- },
265
- required: ["status", "skill_call", "summary", "artifacts", "error"]
266
- };
267
- ```
181
+ Object with all fields required: `status` ("completed"|"failed"), `skill_call` (string), `summary` (string), `artifacts` (path or ""), `error` (reason or "").
268
182
 
269
183
  ### Phase 3: Completion Report
270
184
 
@@ -161,71 +161,37 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
161
161
 
162
162
  ### Session Initialization
163
163
 
164
- ```javascript
165
- const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
166
-
167
- // Parse flags
168
- const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
169
- const continueMode = $ARGUMENTS.includes('--continue')
170
- const concurrencyMatch = $ARGUMENTS.match(/(?:--concurrency|-c)\s+(\d+)/)
171
- const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 6
172
-
173
- // Parse analyze-specific flags
174
- const QUICK_MODE = $ARGUMENTS.includes('-q') || $ARGUMENTS.includes('--quick')
175
- const GAPS_MODE = $ARGUMENTS.includes('--gaps')
176
- const gapsIssueMatch = $ARGUMENTS.match(/--gaps\s+(ISS-\S+)/)
177
- const gapsIssueId = gapsIssueMatch ? gapsIssueMatch[1] : null
178
-
179
- // Clean subject text
180
- const subjectArg = $ARGUMENTS
181
- .replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|-q|--quick|--gaps\s+ISS-\S+|--gaps/g, '')
182
- .trim()
183
-
184
- // Auto-bootstrap state.json if missing
185
- if (!fileExists('.workflow/state.json')) {
186
- Bash('mkdir -p .workflow/scratch/')
187
- writeMinimalStateJson() // { project: null, status: "active", current_milestone: null, artifacts: [] }
188
- }
189
-
190
- // Scope determination (per scratch-milestone-architecture)
191
- const state = JSON.parse(Read('.workflow/state.json'))
192
- let scope, slug, phaseNum = null
193
-
194
- if (GAPS_MODE) {
195
- // --gaps → issue root cause analysis
196
- scope = 'gaps'
197
- slug = gapsIssueId ? gapsIssueId.toLowerCase().replace(/[^a-z0-9]+/g, '-') : 'issue-gaps'
198
- } else if (subjectArg === '') {
199
- // No args → milestone-wide
200
- if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
201
- scope = 'milestone'
202
- slug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
203
- } else {
204
- ERROR('E001: No args and no roadmap — provide topic text or create roadmap first')
205
- }
206
- } else if (/^\d+$/.test(subjectArg)) {
207
- // Phase number
208
- if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
209
- scope = 'phase'
210
- phaseNum = parseInt(subjectArg)
211
- slug = resolvePhaseSlugFromRoadmap(phaseNum) // parse roadmap.md for phase N slug
212
- } else {
213
- ERROR('Phase number requires init + roadmap')
214
- }
215
- } else {
216
- // Text → adhoc or standalone
217
- slug = subjectArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
218
- scope = state.current_milestone ? 'adhoc' : 'standalone'
219
- }
220
-
221
- const dateStr = getUtc8ISOString().substring(0, 10)
222
- const sessionId = `${dateStr}-analyze-${slug}`
223
- const sessionFolder = `.workflow/.csv-wave/${sessionId}`
224
- const scratchDir = `.workflow/scratch/${dateStr}-analyze-${slug}`
225
-
226
- Bash(`mkdir -p ${sessionFolder}`)
227
- Bash(`mkdir -p ${scratchDir}`)
228
- ```
164
+ **Parse from `$ARGUMENTS`**:
165
+
166
+ | Variable | Source | Default |
167
+ |----------|--------|---------|
168
+ | `AUTO_YES` | `--yes` or `-y` | false |
169
+ | `continueMode` | `--continue` | false |
170
+ | `maxConcurrency` | `--concurrency N` or `-c N` | 6 |
171
+ | `QUICK_MODE` | `-q` or `--quick` | false |
172
+ | `GAPS_MODE` | `--gaps` | false |
173
+ | `gapsIssueId` | `--gaps ISS-{id}` | null |
174
+ | `subjectArg` | remaining text after flag removal | "" |
175
+
176
+ **Auto-bootstrap**: If `.workflow/state.json` missing, create minimal `{ project: null, status: "active", current_milestone: null, artifacts: [] }`.
177
+
178
+ **Scope determination** (from `state.json` + `subjectArg`):
179
+
180
+ | Condition | Scope | Slug |
181
+ |-----------|-------|------|
182
+ | `GAPS_MODE` | `gaps` | `gapsIssueId` slugified or `"issue-gaps"` |
183
+ | Empty subject + milestone + roadmap | `milestone` | milestone name slugified |
184
+ | Empty subject, no roadmap | ERROR: `"E001: No args and no roadmap"` | — |
185
+ | Numeric subject + milestone + roadmap | `phase` | phase slug from roadmap |
186
+ | Numeric subject, no roadmap | ERROR: `"Phase number requires init + roadmap"` | — |
187
+ | Text subject + milestone | `adhoc` | subject slugified (max 40 chars) |
188
+ | Text subject, no milestone | `standalone` | subject slugified (max 40 chars) |
189
+
190
+ **Session paths** (UTC+8 date prefix):
191
+ - `sessionFolder`: `.workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/`
192
+ - `scratchDir`: `.workflow/scratch/{YYYYMMDD}-analyze-{slug}/`
193
+
194
+ Create both directories.
229
195
 
230
196
  ### Phase 1: Subject Resolution -> CSV
231
197
 
@@ -278,11 +244,7 @@ Available exploration dimensions:
278
244
 
279
245
  #### Wave 1: CLI Exploration (Parallel) [SKIP in -q mode]
280
246
 
281
- 1. Read master `tasks.csv`
282
- 2. Filter rows where `wave == 1` AND `status == pending`
283
- 3. No prev_context needed (wave 1 has no predecessors)
284
- 4. Write `wave-1.csv`
285
- 5. Execute:
247
+ Filter `wave == 1 && status == pending` from master CSV. No prev_context (no predecessors). Write `wave-1.csv`.
286
248
 
287
249
  ```javascript
288
250
  spawn_agents_on_csv({
@@ -292,43 +254,22 @@ spawn_agents_on_csv({
292
254
  max_concurrency: maxConcurrency,
293
255
  max_runtime_seconds: 600,
294
256
  output_csv_path: `${sessionFolder}/wave-1-results.csv`,
295
- output_schema: {
296
- type: "object",
297
- properties: {
298
- id: { type: "string" },
299
- status: { type: "string", enum: ["completed", "failed"] },
300
- findings: { type: "string" },
301
- score: { type: "string" },
302
- recommendations: { type: "string" },
303
- error: { type: "string" }
304
- },
305
- required: ["id", "status", "findings"]
306
- }
257
+ output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
258
+ // required: id, status, findings
307
259
  })
308
260
  ```
309
261
 
310
- 6. Read `wave-1-results.csv`, merge into master `tasks.csv`
311
- 7. Delete `wave-1.csv`
262
+ Merge results into master `tasks.csv`, delete `wave-1.csv`.
312
263
 
313
- **Exploration agent responsibilities**:
314
- - 3-layer exploration per dimension:
315
- - Layer 1: Module Discovery (breadth) -- search by topic keywords, identify relevant files, map module boundaries
316
- - Layer 2: Structure Tracing (depth) -- top 3-5 key files: trace call chains 2-3 levels deep, identify data flow
317
- - Layer 3: Code Anchor Extraction (detail) -- each key finding: extract code snippet (20-50 lines) with file:line
264
+ **Exploration agent responsibilities** (3-layer per dimension):
265
+ 1. **Module Discovery** (breadth) -- keyword search, relevant files, module boundaries
266
+ 2. **Structure Tracing** (depth) -- top 3-5 files: call chains 2-3 levels, data flow
267
+ 3. **Code Anchor Extraction** (detail) -- code snippet (20-50 lines) with file:line per finding
318
268
  - Share findings via discovery board
319
269
 
320
270
  #### Wave 2: 6-Dimension Scoring (Parallel) [SKIP in -q mode]
321
271
 
322
- 1. Read master `tasks.csv`
323
- 2. Filter rows where `wave == 2` AND `status == pending`
324
- 3. Build `prev_context` from wave 1 findings:
325
- ```
326
- [Task 1: Explore Architecture] Module boundaries: src/auth/, src/api/, src/core/. Key pattern: repository layer...
327
- [Task 2: Explore Implementation] Error handling: Result type pattern. Type coverage: 85%...
328
- [Task 3: Explore Performance] Hot path: request handler chain (3 middleware). No async bottlenecks...
329
- ```
330
- 4. Write `wave-2.csv` with `prev_context` column
331
- 5. Execute:
272
+ Filter `wave == 2 && status == pending` from master CSV. Build `prev_context` from wave 1 findings (format: `[Task N: Title] summary...` per exploration task). Write `wave-2.csv` with `prev_context` column.
332
273
 
333
274
  ```javascript
334
275
  spawn_agents_on_csv({
@@ -338,23 +279,12 @@ spawn_agents_on_csv({
338
279
  max_concurrency: maxConcurrency,
339
280
  max_runtime_seconds: 600,
340
281
  output_csv_path: `${sessionFolder}/wave-2-results.csv`,
341
- output_schema: {
342
- type: "object",
343
- properties: {
344
- id: { type: "string" },
345
- status: { type: "string", enum: ["completed", "failed"] },
346
- findings: { type: "string" },
347
- score: { type: "string" },
348
- recommendations: { type: "string" },
349
- error: { type: "string" }
350
- },
351
- required: ["id", "status", "findings", "score"]
352
- }
282
+ output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
283
+ // required: id, status, findings, score
353
284
  })
354
285
  ```
355
286
 
356
- 6. Read `wave-2-results.csv`, merge into master `tasks.csv`
357
- 7. Delete `wave-2.csv`
287
+ Merge results into master `tasks.csv`, delete `wave-2.csv`.
358
288
 
359
289
  **Scoring agent responsibilities** (6 dimensions):
360
290
 
@@ -371,22 +301,13 @@ Each score MUST include specific evidence (code refs, data points from explorati
371
301
 
372
302
  #### Wave 3: Decision Synthesis (Single Agent)
373
303
 
374
- 1. Read master `tasks.csv`
375
- 2. Filter rows where `wave == 3` (or wave 1 in quick mode) AND `status == pending`
376
- 3. For full mode: check deps -- if all wave 2 tasks failed, use available exploration context
377
- 4. Build `prev_context`:
378
- - Full mode: from wave 2 scoring findings
379
- ```
380
- [Task 4: Score Feasibility] Score: 75. Moderate difficulty, existing patterns support...
381
- [Task 5: Score Impact] Score: 90. High user value, significant DX improvement...
382
- [Task 6: Score Risk] Score: 40. Main risk: auth regression. Mitigation: incremental rollout...
383
- ...
384
- ```
385
- - Quick mode: from loaded project context (project.md, roadmap, brainstorm artifacts)
386
- 5. Write `wave-3.csv` (or `wave-1.csv` in quick mode) with `prev_context` column
387
- 6. Execute `spawn_agents_on_csv` for synthesis agent
388
- 7. Merge results into master `tasks.csv`
389
- 8. Delete temporary CSV
304
+ Filter `wave == 3` (or wave 1 in quick mode) `&& status == pending`. If full mode and all wave 2 failed, fall back to available exploration context.
305
+
306
+ **prev_context source**:
307
+ - Full mode: wave 2 scoring findings (format: `[Task N: Score Dim] Score: X. summary...`)
308
+ - Quick mode: loaded project context (project.md, roadmap, brainstorm artifacts)
309
+
310
+ Write wave CSV with `prev_context`, execute `spawn_agents_on_csv` for synthesis agent, merge results, delete temp CSV.
390
311
 
391
312
  **Synthesis agent responsibilities**:
392
313
  - Compile dimension scores into analysis.md (full mode):
@@ -486,28 +407,9 @@ Each score MUST include specific evidence (code refs, data points from explorati
486
407
  }
487
408
  ```
488
409
 
489
- 6. **Auto-create issues from Deferred items**:
490
-
491
- ```
492
- deferred_items = decisions.filter(d => d.classification == "Deferred")
493
-
494
- IF deferred_items.length > 0:
495
- mkdir -p ".workflow/issues"
496
- FOR each item IN deferred_items:
497
- Append issue to .workflow/issues/issues.jsonl
498
- Print: "Created {N} deferred issues for tracking"
499
- ```
410
+ 6. **Auto-create issues from Deferred items**: Filter decisions with `classification == "Deferred"`, append each as issue to `.workflow/issues/issues.jsonl`.
500
411
 
501
- 7. **Register artifact in state.json**:
502
- ```
503
- Read .workflow/state.json
504
- next_id = max ANL-NNN + 1 (or 1 if none)
505
- Push artifact: { id: "ANL-{next_id}", type: "analyze", milestone: current_milestone,
506
- phase: phaseNum, scope: scope, path: scratchDir (relative to .workflow/),
507
- status: "completed", depends_on: null, harvested: false,
508
- created_at: session_start, completed_at: now() }
509
- Write state.json (atomic)
510
- ```
412
+ 7. **Register artifact in state.json**: Append `{ id: "ANL-{next_id}", type: "analyze", milestone, phase, scope, path: scratchDir, status: "completed", depends_on: null, harvested: false, created_at, completed_at }`.
511
413
  8. Copy final outputs (context.md, analysis.md, conclusions.json) from CSV session folder to `scratchDir`
512
414
  9. Display summary
513
415