maestro-flow 0.3.15 → 0.3.17

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 (390) hide show
  1. package/.claude/agents/workflow-planner.md +24 -8
  2. package/.claude/commands/maestro-amend.md +300 -0
  3. package/.claude/commands/maestro-analyze.md +1 -49
  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-roadmap.md +3 -101
  11. package/.claude/commands/maestro-spec-generate.md +1 -25
  12. package/.claude/commands/maestro-ui-design.md +14 -73
  13. package/.claude/commands/maestro-verify.md +1 -32
  14. package/.claude/commands/maestro.md +13 -30
  15. package/.claude/commands/manage-harvest.md +7 -44
  16. package/.claude/commands/manage-knowhow-capture.md +193 -0
  17. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  18. package/.claude/commands/manage-learn.md +3 -28
  19. package/.claude/commands/manage-status.md +1 -20
  20. package/.claude/commands/manage-wiki.md +1 -1
  21. package/.claude/commands/quality-business-test.md +1 -1
  22. package/.claude/commands/quality-debug.md +3 -18
  23. package/.claude/commands/quality-integration-test.md +3 -23
  24. package/.claude/commands/quality-retrospective.md +1 -28
  25. package/.claude/commands/quality-review.md +3 -52
  26. package/.claude/commands/quality-test-gen.md +1 -10
  27. package/.claude/commands/quality-test.md +3 -25
  28. package/.claude/commands/spec-add.md +1 -21
  29. package/.claude/commands/spec-load.md +1 -16
  30. package/.claude/commands/wiki-connect.md +2 -112
  31. package/.claude/commands/wiki-digest.md +2 -141
  32. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  33. package/.codex/skills/maestro/SKILL.md +60 -146
  34. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  35. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  36. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  37. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  38. package/.codex/skills/maestro-init/SKILL.md +7 -51
  39. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  40. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  41. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  42. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  43. package/.codex/skills/maestro-plan/SKILL.md +70 -166
  44. package/.codex/skills/maestro-player/SKILL.md +24 -149
  45. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  46. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  47. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  48. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  49. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  50. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  51. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  52. package/.codex/skills/manage-issue/SKILL.md +1 -6
  53. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  54. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  55. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  56. package/.codex/skills/manage-learn/SKILL.md +17 -71
  57. package/.codex/skills/manage-status/SKILL.md +4 -35
  58. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  59. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  60. package/.codex/skills/quality-debug/SKILL.md +41 -133
  61. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  62. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  63. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  64. package/.codex/skills/quality-review/SKILL.md +30 -65
  65. package/.codex/skills/quality-sync/SKILL.md +2 -11
  66. package/.codex/skills/quality-test/SKILL.md +4 -45
  67. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  68. package/.codex/skills/spec-add/SKILL.md +2 -9
  69. package/.codex/skills/spec-load/SKILL.md +4 -14
  70. package/.codex/skills/spec-map/SKILL.md +4 -37
  71. package/.codex/skills/spec-remove/SKILL.md +3 -35
  72. package/.codex/skills/spec-setup/SKILL.md +2 -19
  73. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  75. package/.codex/skills/team-executor/SKILL.md +7 -66
  76. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  77. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  78. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  79. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  80. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  81. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  82. package/.codex/skills/team-review/SKILL.md +12 -86
  83. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  84. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  85. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  86. package/.codex/skills/team-testing/SKILL.md +14 -99
  87. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  88. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  89. package/README.md +6 -0
  90. package/README.zh-CN.md +6 -0
  91. package/chains/_intent-map.json +7 -7
  92. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  93. package/chains/singles/{memory.json → knowhow.json} +6 -6
  94. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  95. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  96. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  97. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  98. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  99. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  100. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  101. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  102. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  103. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  104. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  105. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  106. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  107. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  108. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  109. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  110. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  111. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  112. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  113. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  114. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  115. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  116. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  118. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  119. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  120. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  121. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  122. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  123. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  124. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  125. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  126. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  127. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  128. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  129. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  130. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  131. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  132. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  133. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  134. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  135. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  136. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  137. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  138. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  139. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  140. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  141. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  142. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  143. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  144. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  145. package/dashboard/dist/index.html +2 -2
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  150. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  153. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  155. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  159. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  160. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  161. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  202. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  211. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  224. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  236. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  248. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  250. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  253. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  255. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  256. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  258. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  259. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  260. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  261. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  262. package/dist/shared/agent-types.d.ts +2 -0
  263. package/dist/shared/agent-types.d.ts.map +1 -1
  264. package/dist/src/cli.js +2 -2
  265. package/dist/src/cli.js.map +1 -1
  266. package/dist/src/commands/delegate.d.ts.map +1 -1
  267. package/dist/src/commands/delegate.js +11 -8
  268. package/dist/src/commands/delegate.js.map +1 -1
  269. package/dist/src/commands/install-backend.d.ts +1 -1
  270. package/dist/src/commands/install-backend.d.ts.map +1 -1
  271. package/dist/src/commands/install-backend.js +1 -1
  272. package/dist/src/commands/install-backend.js.map +1 -1
  273. package/dist/src/commands/install-ui/ExecutionView.d.ts.map +1 -1
  274. package/dist/src/commands/install-ui/ExecutionView.js +4 -1
  275. package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
  276. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  277. package/dist/src/commands/install-ui/InstallExecution.js +4 -1
  278. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  279. package/dist/src/commands/install.js +5 -5
  280. package/dist/src/commands/install.js.map +1 -1
  281. package/dist/src/commands/knowhow.d.ts +10 -0
  282. package/dist/src/commands/knowhow.d.ts.map +1 -0
  283. package/dist/src/commands/knowhow.js +217 -0
  284. package/dist/src/commands/knowhow.js.map +1 -0
  285. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  286. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  287. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  288. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  289. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  290. package/dist/src/commands/overlay-ui/index.js +70 -44
  291. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  292. package/dist/src/commands/overlay.d.ts.map +1 -1
  293. package/dist/src/commands/overlay.js +4 -3
  294. package/dist/src/commands/overlay.js.map +1 -1
  295. package/dist/src/commands/update.d.ts.map +1 -1
  296. package/dist/src/commands/update.js +31 -21
  297. package/dist/src/commands/update.js.map +1 -1
  298. package/dist/src/core/manifest.d.ts +8 -1
  299. package/dist/src/core/manifest.d.ts.map +1 -1
  300. package/dist/src/core/manifest.js +3 -1
  301. package/dist/src/core/manifest.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/workflows/analyze.md +61 -185
  330. package/workflows/brainstorm.md +3 -23
  331. package/workflows/codebase-rebuild.md +79 -191
  332. package/workflows/codebase-refresh.md +26 -124
  333. package/workflows/debug.md +21 -141
  334. package/workflows/execute.md +183 -350
  335. package/workflows/fork.md +72 -230
  336. package/workflows/harvest.md +12 -79
  337. package/workflows/init.md +3 -17
  338. package/workflows/integration-test.md +21 -190
  339. package/workflows/issue-analyze.md +35 -153
  340. package/workflows/issue-discover.md +88 -263
  341. package/workflows/issue-execute.md +29 -208
  342. package/workflows/issue-plan.md +33 -154
  343. package/workflows/issue.md +44 -202
  344. package/workflows/knowhow.md +374 -0
  345. package/workflows/learn.md +30 -177
  346. package/workflows/maestro-coordinate.codex.md +77 -362
  347. package/workflows/maestro-link-coordinate.md +12 -61
  348. package/workflows/maestro.codex.md +124 -457
  349. package/workflows/maestro.md +562 -976
  350. package/workflows/map.md +16 -53
  351. package/workflows/merge.md +42 -197
  352. package/workflows/milestone-audit.md +5 -43
  353. package/workflows/milestone-complete.md +11 -60
  354. package/workflows/plan.md +188 -387
  355. package/workflows/quick.md +25 -174
  356. package/workflows/refactor.md +28 -221
  357. package/workflows/retrospective.md +104 -443
  358. package/workflows/review.md +87 -299
  359. package/workflows/roadmap.md +117 -97
  360. package/workflows/spec-generate.md +22 -118
  361. package/workflows/specs-add.md +5 -25
  362. package/workflows/specs-load.md +1 -5
  363. package/workflows/specs-remove.md +0 -11
  364. package/workflows/specs-setup.md +11 -47
  365. package/workflows/status.md +58 -200
  366. package/workflows/sync.md +28 -141
  367. package/workflows/test-gen.md +23 -100
  368. package/workflows/test.md +15 -125
  369. package/workflows/ui-design.md +139 -465
  370. package/workflows/ui-style.md +36 -228
  371. package/workflows/verify.md +52 -273
  372. package/workflows/wiki-connect.md +9 -46
  373. package/workflows/wiki-digest.md +7 -50
  374. package/workflows/wiki-manage.md +11 -108
  375. package/.claude/commands/maestro-coordinate.md +0 -63
  376. package/.claude/commands/manage-memory-capture.md +0 -59
  377. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  378. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  379. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  380. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  381. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  382. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  383. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  384. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  385. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  386. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  387. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  388. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  389. package/workflows/maestro-coordinate.md +0 -582
  390. package/workflows/memory.md +0 -451
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Store KnowHow Tool — Create and search reusable knowledge entries.
3
+ *
4
+ * Replaces the deprecated core_memory tool. Writes directly to
5
+ * .workflow/knowhow/ as markdown files, automatically indexed by WikiIndexer.
6
+ *
7
+ * Operations: add, search
8
+ * Storage: .workflow/knowhow/{PREFIX}-{timestamp}.md
9
+ *
10
+ * Content types with type-specific fields:
11
+ * session (KNW-) — session state recovery
12
+ * tip (TIP-) — quick note / reminder
13
+ * template (TPL-) — code/config template [+ lang]
14
+ * recipe (RCP-) — step-by-step guide
15
+ * reference (REF-) — external doc summary [+ source]
16
+ * decision (DCS-) — architecture decision record [+ status]
17
+ */
18
+ import type { ToolSchema, CcwToolResult } from '../types/tool-schema.js';
19
+ export declare const schema: ToolSchema;
20
+ export declare function handler(params: Record<string, unknown>): Promise<CcwToolResult>;
21
+ //# sourceMappingURL=store-knowhow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-knowhow.d.ts","sourceRoot":"","sources":["../../../src/tools/store-knowhow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AA2MzE,eAAO,MAAM,MAAM,EAAE,UA+EpB,CAAC;AAIF,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBrF"}
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Store KnowHow Tool — Create and search reusable knowledge entries.
3
+ *
4
+ * Replaces the deprecated core_memory tool. Writes directly to
5
+ * .workflow/knowhow/ as markdown files, automatically indexed by WikiIndexer.
6
+ *
7
+ * Operations: add, search
8
+ * Storage: .workflow/knowhow/{PREFIX}-{timestamp}.md
9
+ *
10
+ * Content types with type-specific fields:
11
+ * session (KNW-) — session state recovery
12
+ * tip (TIP-) — quick note / reminder
13
+ * template (TPL-) — code/config template [+ lang]
14
+ * recipe (RCP-) — step-by-step guide
15
+ * reference (REF-) — external doc summary [+ source]
16
+ * decision (DCS-) — architecture decision record [+ status]
17
+ */
18
+ import { z } from 'zod';
19
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from 'fs';
20
+ import { join } from 'path';
21
+ import { getProjectRoot } from '../utils/path-validator.js';
22
+ // --- Types ---
23
+ const CATEGORIES = ['session', 'tip', 'template', 'recipe', 'reference', 'decision'];
24
+ const PREFIX_MAP = {
25
+ session: 'KNW',
26
+ tip: 'TIP',
27
+ template: 'TPL',
28
+ recipe: 'RCP',
29
+ reference: 'REF',
30
+ decision: 'DCS',
31
+ };
32
+ const DECISION_STATUSES = ['proposed', 'accepted', 'superseded'];
33
+ // --- Zod Schema ---
34
+ const OperationEnum = z.enum(['add', 'search']);
35
+ const ParamsSchema = z.object({
36
+ operation: OperationEnum,
37
+ // add params
38
+ type: z.enum(CATEGORIES).optional(),
39
+ title: z.string().optional(),
40
+ body: z.string().optional(),
41
+ tags: z.array(z.string()).optional(),
42
+ // type-specific fields (persisted to frontmatter)
43
+ lang: z.string().optional(), // template: programming language
44
+ source: z.string().optional(), // reference: original URL
45
+ status: z.enum(DECISION_STATUSES).optional(), // decision: lifecycle status
46
+ // search params
47
+ query: z.string().optional(),
48
+ limit: z.number().optional().default(20),
49
+ });
50
+ // --- Storage ---
51
+ function getKnowhowDir() {
52
+ return join(getProjectRoot(), '.workflow', 'knowhow');
53
+ }
54
+ function slugify(text) {
55
+ return text
56
+ .toLowerCase()
57
+ .replace(/[^a-z0-9]+/g, '-')
58
+ .replace(/^-|-$/g, '');
59
+ }
60
+ function generateId(type) {
61
+ const now = new Date();
62
+ const pad = (n) => String(n).padStart(2, '0');
63
+ const ts = `${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}-${pad(now.getHours())}${pad(now.getMinutes())}`;
64
+ const prefix = PREFIX_MAP[type];
65
+ const filename = `${prefix}-${ts}.md`;
66
+ return { id: `knowhow-${slugify(ts)}`, filename };
67
+ }
68
+ function escapeYamlValue(value) {
69
+ if (/[:\n"'#,{}[\]]/.test(value))
70
+ return JSON.stringify(value);
71
+ return value;
72
+ }
73
+ function parseFrontmatter(raw) {
74
+ const match = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?/);
75
+ if (!match)
76
+ return { data: {}, body: raw };
77
+ const data = {};
78
+ for (const line of match[1].split('\n')) {
79
+ const kv = line.match(/^(\w[\w\s]*?):\s*(.*)$/);
80
+ if (kv)
81
+ data[kv[1].trim()] = kv[2].trim();
82
+ }
83
+ return { data, body: raw.slice(match[0].length) };
84
+ }
85
+ // --- Operations ---
86
+ function executeAdd(params) {
87
+ const { type, title, body, tags, lang, source, status } = params;
88
+ if (!type)
89
+ return { success: false, error: 'Parameter "type" is required for add operation' };
90
+ if (!title)
91
+ return { success: false, error: 'Parameter "title" is required for add operation' };
92
+ if (!body)
93
+ return { success: false, error: 'Parameter "body" is required for add operation' };
94
+ // Validate type-specific fields
95
+ if (lang && type !== 'template') {
96
+ return { success: false, error: 'Parameter "lang" is only valid for type "template"' };
97
+ }
98
+ if (source && type !== 'reference') {
99
+ return { success: false, error: 'Parameter "source" is only valid for type "reference"' };
100
+ }
101
+ if (status && type !== 'decision') {
102
+ return { success: false, error: 'Parameter "status" is only valid for type "decision"' };
103
+ }
104
+ const dir = getKnowhowDir();
105
+ if (!existsSync(dir))
106
+ mkdirSync(dir, { recursive: true });
107
+ const { id, filename } = generateId(type);
108
+ const filePath = join(dir, filename);
109
+ // Build YAML frontmatter with type-specific fields
110
+ const now = new Date().toISOString();
111
+ const fmLines = ['---'];
112
+ fmLines.push(`title: ${escapeYamlValue(title)}`);
113
+ fmLines.push(`type: ${type}`);
114
+ fmLines.push(`category: ${type}`);
115
+ fmLines.push(`created: ${now}`);
116
+ if (tags && tags.length > 0) {
117
+ fmLines.push(`tags:`);
118
+ for (const t of tags)
119
+ fmLines.push(` - ${t}`);
120
+ }
121
+ // Type-specific frontmatter fields
122
+ if (lang)
123
+ fmLines.push(`lang: ${lang}`);
124
+ if (source)
125
+ fmLines.push(`source: ${escapeYamlValue(source)}`);
126
+ if (status)
127
+ fmLines.push(`status: ${status}`);
128
+ fmLines.push('---', '', body);
129
+ writeFileSync(filePath, fmLines.join('\n'), 'utf-8');
130
+ return {
131
+ success: true,
132
+ result: {
133
+ operation: 'add',
134
+ id,
135
+ filename,
136
+ type,
137
+ path: `knowhow/${filename}`,
138
+ message: `Created ${type} entry: ${id}`,
139
+ },
140
+ };
141
+ }
142
+ function executeSearch(params) {
143
+ const { query, limit } = params;
144
+ if (!query)
145
+ return { success: false, error: 'Parameter "query" is required for search operation' };
146
+ const dir = getKnowhowDir();
147
+ if (!existsSync(dir)) {
148
+ return { success: true, result: { operation: 'search', query, matches: [], total_matches: 0 } };
149
+ }
150
+ const queryLower = query.toLowerCase();
151
+ const queryTerms = queryLower.split(/\s+/).filter(Boolean);
152
+ const results = [];
153
+ for (const name of readdirSync(dir)) {
154
+ if (!name.endsWith('.md'))
155
+ continue;
156
+ try {
157
+ const raw = readFileSync(join(dir, name), 'utf-8');
158
+ const { data, body: bodyText } = parseFrontmatter(raw);
159
+ const contentLower = raw.toLowerCase();
160
+ const matchCount = queryTerms.filter((t) => contentLower.includes(t)).length;
161
+ if (matchCount === 0)
162
+ continue;
163
+ const score = matchCount / queryTerms.length;
164
+ const prefix = name.match(/^([A-Z]+)-\d{8}/)?.[1] ?? '';
165
+ const typeCat = Object.entries(PREFIX_MAP).find(([, p]) => p === prefix)?.[0] ?? '';
166
+ results.push({
167
+ id: data.id || name.replace('.md', ''),
168
+ filename: name,
169
+ title: data.title || 'Untitled',
170
+ type: typeCat,
171
+ lang: data.lang,
172
+ source: data.source,
173
+ status: data.status,
174
+ score: Math.round(score * 100) / 100,
175
+ excerpt: bodyText.substring(0, 200) + (bodyText.length > 200 ? '...' : ''),
176
+ });
177
+ }
178
+ catch {
179
+ continue;
180
+ }
181
+ }
182
+ results.sort((a, b) => b.score - a.score);
183
+ const limited = results.slice(0, limit);
184
+ return {
185
+ success: true,
186
+ result: {
187
+ operation: 'search',
188
+ query,
189
+ matches: limited,
190
+ total_matches: results.length,
191
+ },
192
+ };
193
+ }
194
+ // --- Tool Schema ---
195
+ export const schema = {
196
+ name: 'store_knowhow',
197
+ description: `Store reusable knowledge (knowhow) entries to .workflow/knowhow/.
198
+
199
+ **Operations:**
200
+
201
+ * **add** — Create a new knowhow entry.
202
+ Required: type, title, body
203
+ Type-specific fields:
204
+ template: lang (programming language)
205
+ reference: source (URL)
206
+ decision: status (proposed | accepted | superseded)
207
+ Optional: tags (string[])
208
+
209
+ * **search** — Full-text search knowhow entries.
210
+ Required: query
211
+ Optional: limit (default: 20)
212
+
213
+ **Types & prefixes:**
214
+ session → KNW-{ts}.md session state recovery
215
+ tip → TIP-{ts}.md quick note / reminder
216
+ template → TPL-{ts}.md code/config template
217
+ recipe → RCP-{ts}.md step-by-step guide
218
+ reference → REF-{ts}.md external doc summary
219
+ decision → DCS-{ts}.md architecture decision record
220
+
221
+ Entries are automatically indexed by WikiIndexer (type=knowhow, category={type}).`,
222
+ inputSchema: {
223
+ type: 'object',
224
+ properties: {
225
+ operation: {
226
+ type: 'string',
227
+ enum: ['add', 'search'],
228
+ description: 'Operation to perform',
229
+ },
230
+ type: {
231
+ type: 'string',
232
+ enum: CATEGORIES,
233
+ description: 'Knowhow content type. Required for add.',
234
+ },
235
+ title: {
236
+ type: 'string',
237
+ description: 'Entry title. Required for add.',
238
+ },
239
+ body: {
240
+ type: 'string',
241
+ description: 'Entry body in markdown. Required for add.',
242
+ },
243
+ tags: {
244
+ type: 'array',
245
+ items: { type: 'string' },
246
+ description: 'Categorization tags.',
247
+ },
248
+ // type-specific
249
+ lang: {
250
+ type: 'string',
251
+ description: '[template] Programming language (e.g. typescript, python, bash, yaml).',
252
+ },
253
+ source: {
254
+ type: 'string',
255
+ description: '[reference] Original URL or document identifier.',
256
+ },
257
+ status: {
258
+ type: 'string',
259
+ enum: DECISION_STATUSES,
260
+ description: '[decision] Lifecycle status: proposed → accepted → superseded.',
261
+ },
262
+ // search
263
+ query: {
264
+ type: 'string',
265
+ description: 'Search query. Required for search.',
266
+ },
267
+ limit: {
268
+ type: 'number',
269
+ description: 'Max search results (default: 20).',
270
+ },
271
+ },
272
+ required: ['operation'],
273
+ },
274
+ };
275
+ // --- Handler ---
276
+ export async function handler(params) {
277
+ const parsed = ParamsSchema.safeParse(params);
278
+ if (!parsed.success) {
279
+ return { success: false, error: `Invalid params: ${parsed.error.message}` };
280
+ }
281
+ try {
282
+ switch (parsed.data.operation) {
283
+ case 'add':
284
+ return executeAdd(parsed.data);
285
+ case 'search':
286
+ return executeSearch(parsed.data);
287
+ default:
288
+ return { success: false, error: `Unknown operation: ${parsed.data.operation}` };
289
+ }
290
+ }
291
+ catch (error) {
292
+ return { success: false, error: error.message };
293
+ }
294
+ }
295
+ //# sourceMappingURL=store-knowhow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-knowhow.js","sourceRoot":"","sources":["../../../src/tools/store-knowhow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maestro-flow",
3
- "version": "0.3.15",
3
+ "version": "0.3.17",
4
4
  "description": "Workflow orchestration CLI with MCP endpoint support and extensible architecture",
5
5
  "type": "module",
6
6
  "imports": {
@@ -36,6 +36,8 @@ export interface AgentConfig {
36
36
  envFile?: string;
37
37
  /** When true, spawn in interactive mode (stdin kept open for follow-up messages) */
38
38
  interactive?: boolean;
39
+ /** Path to MCP config JSON file for CLI agents (claude-code --mcp-config) */
40
+ mcpConfigPath?: string;
39
41
  /** Opaque metadata bag — used to pass team session context through the spawn pipeline */
40
42
  metadata?: Record<string, unknown>;
41
43
  }
@@ -54,47 +54,19 @@ $ARGUMENTS: "[phase|topic] [-y] [-c] [-q]"
54
54
  ## Scope Routing
55
55
 
56
56
  ```
57
- // Worktree scope check
58
- IF file_exists(".workflow/worktree-scope.json"):
59
- scope = read(".workflow/worktree-scope.json")
60
- IF $ARGUMENTS matches /^\d+$/ AND parseInt($ARGUMENTS) NOT IN scope.owned_phases:
61
- ERROR "Phase {$ARGUMENTS} not owned by this worktree. Owned: {scope.owned_phases}"
62
- EXIT
63
-
64
- // Auto-bootstrap state.json if missing
65
- IF NOT file_exists(".workflow/state.json"):
66
- mkdir -p .workflow/scratch/
67
- Write minimal state.json: { project: null, status: "active", current_milestone: null,
68
- current_task_id: null, milestones: [], artifacts: [], last_updated: now() }
69
-
70
- // Scope determination
71
- IF $ARGUMENTS is empty:
72
- IF state.json.current_milestone is non-null AND roadmap.md exists:
73
- → scope = "milestone"
74
- → milestone_slug = slugify(current_milestone name)
75
- → Set OUTPUT_DIR = .workflow/scratch/analyze-{milestone_slug}-{date}/
76
- ELSE:
77
- → ERROR E001 "No args and no roadmap — provide topic text or create roadmap first"
78
-
79
- ELSE IF $ARGUMENTS matches /^\d+$/:
80
- IF state.json.current_milestone is non-null AND roadmap.md exists:
81
- → scope = "phase"
82
- → phase_num = parsed number
83
- → phase_slug = resolve from roadmap.md
84
- → Set OUTPUT_DIR = .workflow/scratch/analyze-{phase_slug}-{date}/
85
- ELSE:
86
- → ERROR "Phase number requires init + roadmap"
87
-
88
- ELSE (text argument):
89
- → topic_slug = slugify(text, max 40 chars)
90
- IF state.json.current_milestone is non-null:
91
- → scope = "adhoc"
92
- ELSE:
93
- → scope = "standalone"
94
- → Set OUTPUT_DIR = .workflow/scratch/analyze-{topic_slug}-{date}/
95
-
96
- // Create output directory
97
- mkdir -p {OUTPUT_DIR}
57
+ Worktree guard: If .workflow/worktree-scope.json exists, reject phase args not in owned_phases.
58
+
59
+ Auto-bootstrap: Create minimal .workflow/state.json if missing.
60
+
61
+ Scope determination OUTPUT_DIR:
62
+ (no args) + milestone + roadmap → scope="milestone", OUTPUT_DIR=.workflow/scratch/analyze-{milestone_slug}-{date}/
63
+ (no args) without milestone/roadmap → ERROR E001
64
+ (number) + milestone + roadmap → scope="phase", OUTPUT_DIR=.workflow/scratch/analyze-{phase_slug}-{date}/
65
+ (number) without milestone/roadmap → ERROR
66
+ (text) + milestone → scope="adhoc", OUTPUT_DIR=.workflow/scratch/analyze-{topic_slug}-{date}/
67
+ (text) without milestone → scope="standalone", OUTPUT_DIR=.workflow/scratch/analyze-{topic_slug}-{date}/
68
+
69
+ Create OUTPUT_DIR.
98
70
  ```
99
71
 
100
72
  ## Output Structure
@@ -152,20 +124,8 @@ Before writing any new artifacts, archive existing ones to preserve history:
152
124
  ```
153
125
  ARCHIVE_TARGETS = ["discussion.md", "analysis.md", "explorations.json", "perspectives.json", "conclusions.json", "exploration-codebase.json"]
154
126
 
155
- has_existing = false
156
- FOR artifact IN ARCHIVE_TARGETS:
157
- IF file exists "$OUTPUT_DIR/${artifact}":
158
- has_existing = true
159
- break
160
-
161
- IF has_existing:
162
- mkdir -p "$OUTPUT_DIR/.history"
163
- TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
164
- FOR artifact IN ARCHIVE_TARGETS:
165
- IF file exists "$OUTPUT_DIR/${artifact}":
166
- // Extract name and extension: "analysis.md" → "analysis" + "md"
167
- mv "$OUTPUT_DIR/${artifact}" "$OUTPUT_DIR/.history/${name}-${TIMESTAMP}.${ext}"
168
- display "Archived previous analysis artifacts to .history/"
127
+ If any ARCHIVE_TARGETS exist in OUTPUT_DIR:
128
+ Move each existing target to OUTPUT_DIR/.history/{name}-{YYYY-MM-DDTHH-mm-ss}.{ext}
169
129
  ```
170
130
 
171
131
  ### Step 2: Scoping & Dimension Selection
@@ -222,47 +182,18 @@ Codebase exploration FIRST, then (optionally) external research, then CLI analys
222
182
  Orchestrator performs targeted web searches, then hands results to `workflow-phase-researcher` agent for synthesis.
223
183
 
224
184
  ```
225
- // Step 4.0.1: Orchestrator web searches (2-3 focused queries)
226
- queries = [
227
- "{phase_goal} standard library stack {current_year}",
228
- "{phase_goal} architecture patterns best practices",
229
- "{phase_goal} common pitfalls mistakes"
230
- ]
231
-
232
- For each query:
233
- results = WebSearch(query)
234
- // For top 1-2 results: WebFetch(url) to get official docs / README
235
-
236
- // Step 4.0.2: Hand raw search output to researcher agent
237
- Agent(
238
- subagent_type="workflow-phase-researcher",
239
- prompt="""
240
- <objective>
241
- Synthesize the following web search results for Phase {PHASE_NUM}: {phase_name}.
242
- Goal: {phase_goal}
243
- </objective>
244
-
245
- <search_results>
246
- {raw_search_output}
247
- </search_results>
248
-
249
- <task>
250
- From the search results above, extract and structure:
251
- - ## Standard Stack: concrete library recommendations with versions
252
- - ## Architecture Patterns: recommended patterns for this type of work
253
- - ## Don't Hand-Roll: problems with existing solutions (don't build custom)
254
- - ## Common Pitfalls: mistakes to avoid
255
-
256
- Be prescriptive ("use X") not exploratory ("consider X or Y").
257
- Cite sources. Assign confidence levels (HIGH/MEDIUM/LOW).
258
- Do NOT write any files — return structured markdown only.
259
- </task>
260
- """,
261
- run_in_background=false
262
- )
263
-
264
- // Step 4.0.3: Store as researchContext (in-memory, no file written)
265
- researchContext = agent_output
185
+ 1. WebSearch 2-3 queries: "{phase_goal} standard library stack", "architecture patterns best practices", "common pitfalls mistakes"
186
+ Fetch top 1-2 results per query for official docs.
187
+
188
+ 2. Hand raw search output to workflow-phase-researcher agent to synthesize into:
189
+ - ## Standard Stack: concrete library recommendations with versions
190
+ - ## Architecture Patterns: recommended patterns
191
+ - ## Don't Hand-Roll: problems with existing solutions
192
+ - ## Common Pitfalls: mistakes to avoid
193
+ Style: prescriptive ("use X"), cite sources, confidence levels (HIGH/MEDIUM/LOW).
194
+ Agent returns structured markdown only (no file writes).
195
+
196
+ 3. Store agent output as researchContext (in-memory).
266
197
  ```
267
198
 
268
199
  `researchContext` is passed into Step 4.2 CLI Analysis and Step 8 Decision Extraction.
@@ -550,75 +481,34 @@ Write to `OUTPUT_DIR/context.md`:
550
481
  **8.6: Update project.md Key Decisions** (phase mode only)
551
482
 
552
483
  ```
553
- IF phase mode AND Locked decisions exist:
554
- Read .workflow/project.md
555
- Find "## Key Decisions" table
556
-
557
- For each Locked decision from Step 8.4:
558
- Check if decision already exists in Key Decisions table (by title match)
559
- If not duplicate:
560
- Append row to Key Decisions table:
561
- | {decision title} | {rationale summary} | Phase {NN} — {date} |
562
-
563
- Write updated project.md
564
- Display: "project.md: {count} key decisions recorded"
484
+ Phase mode only: Append each new Locked decision to .workflow/project.md "## Key Decisions" table.
485
+ Row format: | {decision title} | {rationale summary} | Phase {NN} — {date} |
486
+ Skip duplicates (match by title).
565
487
  ```
566
488
 
567
489
  **8.7: Auto-create Issues from Deferred Items**
568
490
 
569
491
  ```
570
- deferred_items = decisions.filter(d => d.classification == "Deferred")
571
-
572
- IF deferred_items.length > 0:
573
- mkdir -p ".workflow/issues"
574
- today = format(now(), "YYYYMMDD")
575
- counter = next sequence number for today
576
-
577
- FOR each item IN deferred_items:
578
- issue_id = "ISS-{today}-{counter padded to 3 digits}"
579
- issue = {
580
- id: issue_id,
581
- title: "Deferred: " + item.title,
582
- status: "deferred",
583
- priority: 5,
584
- severity: "low",
585
- source: "analyze",
586
- phase_ref: PHASE_NUM,
587
- description: item.context + " -- Chosen to defer: " + item.reason,
588
- tags: ["deferred", "analyze"],
589
- created_at: now()
590
- }
591
- Append JSON line to .workflow/issues/issues.jsonl
592
- counter++
593
-
594
- Print: "Created {deferred_items.length} deferred issues for tracking"
492
+ For each Deferred decision, create an issue in .workflow/issues/issues.jsonl:
493
+ id: "ISS-{YYYYMMDD}-{NNN}"
494
+ title: "Deferred: {item.title}"
495
+ status: "deferred", priority: 5, severity: "low"
496
+ source: "analyze", phase_ref: PHASE_NUM
497
+ description: "{item.context} -- Chosen to defer: {item.reason}"
498
+ tags: ["deferred", "analyze"]
595
499
  ```
596
500
 
597
501
  ### Step 8.8: Register Artifact
598
502
 
599
503
  ```
600
- // Register in state.json artifact registry
601
- Read .workflow/state.json
602
- next_id = max(artifacts.filter(a => a.type == "analyze").map(a => parseInt(a.id.replace("ANL-","")))) + 1
603
- // If no analyze artifacts exist: next_id = 1
604
-
605
- artifact = {
606
- id: "ANL-{next_id padded to 3}",
607
- type: "analyze",
608
- milestone: state.json.current_milestone, // null if standalone
609
- phase: phase_num, // null if milestone/adhoc/standalone
610
- scope: scope, // "milestone"|"phase"|"adhoc"|"standalone"
611
- path: OUTPUT_DIR relative to .workflow/, // e.g. "scratch/analyze-auth-2026-04-20"
612
- status: "completed",
613
- depends_on: null,
614
- harvested: false,
615
- created_at: session_start_time,
616
- completed_at: now()
617
- }
618
-
619
- state.json.artifacts.push(artifact)
620
- state.json.last_updated = now()
621
- Write state.json (atomic: write tmp + rename)
504
+ Register artifact in .workflow/state.json:
505
+ id: "ANL-{next sequential 3-digit id}"
506
+ type: "analyze", scope: scope, status: "completed"
507
+ milestone: current_milestone (null if standalone)
508
+ phase: phase_num (null if milestone/adhoc/standalone)
509
+ path: OUTPUT_DIR relative to .workflow/
510
+ harvested: false, created_at: session_start_time, completed_at: now()
511
+ Atomic write (tmp + rename).
622
512
  ```
623
513
 
624
514
  ### Step 9: Report & Next Step
@@ -649,36 +539,22 @@ Handle selection:
649
539
  Before invoking maestro-plan, build and persist `implementation_scope` so the planner has concrete "what + done-when" specs:
650
540
 
651
541
  ```
652
- // Step A: Build implementation scope from accepted/modified recommendations
653
- actionableRecs = conclusions.recommendations
654
- .filter(r => r.review_status in ["accepted", "modified"])
655
- .sort by priority (high first)
656
-
657
- implementation_scope = actionableRecs.map(rec => ({
658
- objective: rec.action, // WHAT to do
659
- rationale: rec.rationale, // WHY
660
- priority: rec.priority,
661
- target_files: rec.steps.flatMap(s => s.target) // WHERE (from steps + code_anchors)
662
- .concat(code_anchors matching rec),
663
- acceptance_criteria: rec.steps.map(s => // DONE WHEN
664
- s.verification || s.description),
665
- change_summary: rec.steps.map(s => // HOW (brief)
666
- "${s.target}: ${s.description}").join('; ')
667
- }))
668
-
669
- // Step B: User scope confirmation (skip in auto mode / quick mode)
670
- IF NOT AUTO_MODE:
671
- Display implementation scope summary:
672
- For each item: objective [priority], target files, "Done when: ..."
673
- AskUserQuestion (single-select, header: "Scope确认"):
674
- - "确认执行": Scope is clear, proceed to planning
675
- - "调整范围": Narrow or expand scope
676
- - "补充标准": Add/refine acceptance criteria
677
- Handle adjustments, re-confirm if needed
678
-
679
- // Step C: Persist to conclusions.json
680
- conclusions.implementation_scope = implementation_scope
681
- Write updated conclusions.json to OUTPUT_DIR
542
+ // Step A: Build implementation_scope from accepted/modified recommendations (sorted by priority)
543
+ Each scope item:
544
+ objective: rec.action // WHAT
545
+ rationale: rec.rationale // WHY
546
+ priority: rec.priority
547
+ target_files: from rec.steps targets + matching code_anchors // WHERE
548
+ acceptance_criteria: from rec.steps verification/description // DONE WHEN
549
+ change_summary: "{target}: {description}" per step // HOW
550
+
551
+ // Step B: User scope confirmation (skip in auto/quick mode)
552
+ AskUserQuestion (single-select, header: "Scope确认"):
553
+ - "确认执行": Proceed to planning
554
+ - "调整范围": Narrow or expand scope
555
+ - "补充标准": Add/refine acceptance criteria
556
+
557
+ // Step C: Persist implementation_scope to conclusions.json
682
558
 
683
559
  // Step D: Invoke plan
684
560
  Phase mode: Skill({ skill: "maestro-plan", args: "{phase}" })