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
@@ -17,45 +17,15 @@ Dual verification: Goal-Backward structural verification + Nyquist test coverage
17
17
  ```
18
18
  Input: [phase] argument OR --dir <path>
19
19
 
20
- # Worktree scope check
21
- IF file_exists(".workflow/worktree-scope.json"):
22
- scope = read(".workflow/worktree-scope.json")
23
- IF <phase> is a number AND <phase> NOT IN scope.owned_phases:
24
- ERROR "Phase {phase} not owned by this worktree. Owned: {scope.owned_phases}"
25
- EXIT
26
-
27
- IF --dir <path> is provided:
28
- // Single plan verification
29
- PLAN_DIRS = [<path>]
30
- VERIFY_MODE = "single"
31
- VERIFY_OUTPUT_DIR = <path> // verification.json written into plan dir
32
-
33
- ELSE IF no arguments:
34
- // Milestone-level verification
35
- Read state.json.artifacts
36
- PLAN_DIRS = artifacts.filter(a =>
37
- a.milestone == current_milestone &&
38
- a.type == "execute" &&
39
- a.status == "completed"
40
- ).map(a => a.path)
41
- IF PLAN_DIRS is empty: ERROR E001
42
- VERIFY_MODE = "milestone"
43
- milestone_slug = slugify(current_milestone name)
44
- VERIFY_OUTPUT_DIR = .workflow/scratch/verify-{milestone_slug}-{date}/
45
- mkdir -p VERIFY_OUTPUT_DIR
46
-
47
- ELSE IF argument is a number:
48
- // Phase-level verification
49
- Read state.json.artifacts
50
- PLAN_DIRS = artifacts.filter(a =>
51
- a.milestone == current_milestone &&
52
- a.type == "execute" &&
53
- a.phase == arg &&
54
- a.status == "completed"
55
- ).map(a => a.path)
56
- IF PLAN_DIRS is empty: ERROR E001
57
- VERIFY_MODE = "phase"
58
- VERIFY_OUTPUT_DIR = first plan dir // single plan → write there
20
+ Worktree scope check: if .workflow/worktree-scope.json exists, reject phases not in scope.owned_phases.
21
+
22
+ Resolve PLAN_DIRS and VERIFY_MODE by input type:
23
+ --dir <path> single mode, PLAN_DIRS=[path], output into plan dir
24
+ no arguments milestone mode, collect completed execute artifacts for current milestone from state.json
25
+ numeric arg → phase mode, collect completed execute artifacts for that phase from state.json
26
+
27
+ If no matching artifacts found: ERROR E001.
28
+ Milestone mode creates output dir: .workflow/scratch/verify-{milestone_slug}-{date}/
59
29
  ```
60
30
 
61
31
  ---
@@ -88,118 +58,44 @@ Pass specs_content to verifier agent as quality standards context.
88
58
  ### Step 1: Extract Constraints from Specs
89
59
 
90
60
  ```
91
- constraints = {
92
- allowed_libs: [],
93
- disallowed_imports: [],
94
- required_patterns: []
95
- }
61
+ Extract from specs_content into constraints object:
62
+ allowed_libs[] ← "tech_stack" / "technology" sections
63
+ disallowed_imports[] ← "constraints" / "disallowed" / "forbidden" sections
64
+ required_patterns[] ← "required_patterns" / "conventions" sections
96
65
 
97
- Parse specs_content for constraint definitions:
98
- - "tech_stack" / "technology" sections -> extract allowed libraries/frameworks
99
- - "constraints" / "disallowed" / "forbidden" sections -> extract disallowed imports
100
- - "required_patterns" / "conventions" sections -> extract required patterns
101
-
102
- IF constraints.allowed_libs is empty AND constraints.disallowed_imports is empty:
103
- Print: "V0.5: No tech stack constraints found in specs, skipping."
104
- constraint_violations = []
105
- SKIP to V1
66
+ If no allowed_libs and no disallowed_imports found: skip to V1.
106
67
  ```
107
68
 
108
69
  ### Step 2: Collect Modified Files
109
70
 
110
71
  ```
111
- modified_files = []
112
-
113
- # Method 1: Extract from task summaries
114
- FOR each summary IN ${PHASE_DIR}/.summaries/TASK-*-summary.md:
115
- Parse "Files Modified" section
116
- Extract file paths -> add to modified_files[]
117
-
118
- # Method 2: Fallback to git diff if no summaries or empty list
119
- IF modified_files is empty:
120
- modified_files = git diff --name-only HEAD~{tasks_completed} -- "*.ts" "*.tsx" "*.js" "*.jsx" "*.py" "*.java" "*.go"
121
-
122
- # Deduplicate and filter to source files only
123
- modified_files = unique(modified_files).filter(f => !f.includes("node_modules") && !f.includes(".test.") && !f.includes(".spec."))
72
+ Collect modified_files from task summaries ("Files Modified" sections).
73
+ Fallback: git diff --name-only HEAD~{tasks_completed} -- "*.ts" "*.tsx" "*.js" "*.jsx" "*.py" "*.java" "*.go"
74
+ Deduplicate, exclude node_modules and test/spec files.
124
75
  ```
125
76
 
126
77
  ### Step 3: Scan Imports Against Constraints
127
78
 
128
79
  ```
129
- constraint_violations = []
130
-
131
- FOR each file IN modified_files:
132
- IF file does not exist: SKIP
133
-
134
- # Extract import statements based on file type
135
- IF file ends with .ts/.tsx/.js/.jsx:
136
- imports = grep -n "^import .* from ['\"]" {file}
137
- imports += grep -n "require(['\"]" {file}
138
- ELSE IF file ends with .py:
139
- imports = grep -n "^import \|^from .* import" {file}
140
- ELSE IF file ends with .go:
141
- imports = grep -n "\".*\"" {file} # inside import block
142
- ELSE IF file ends with .java:
143
- imports = grep -n "^import " {file}
144
-
145
- FOR each import_line IN imports:
146
- # Check against disallowed imports
147
- FOR each disallowed IN constraints.disallowed_imports:
148
- IF import_line contains disallowed:
149
- constraint_violations.push({
150
- id: "CV-{NNN}",
151
- type: "disallowed_import",
152
- severity: "high",
153
- file: file,
154
- line: import_line.line_number,
155
- import: import_line.text,
156
- constraint: "Disallowed: " + disallowed,
157
- fix_direction: "Replace " + disallowed + " with an allowed alternative"
158
- })
159
-
160
- # Check against allowed_libs (if allowlist is defined)
161
- IF constraints.allowed_libs is not empty:
162
- package_name = extract package/module name from import_line
163
- IF package_name is external AND package_name NOT IN constraints.allowed_libs:
164
- constraint_violations.push({
165
- id: "CV-{NNN}",
166
- type: "unlisted_dependency",
167
- severity: "medium",
168
- file: file,
169
- line: import_line.line_number,
170
- import: import_line.text,
171
- constraint: "Not in allowed tech stack",
172
- fix_direction: "Verify if " + package_name + " is approved, add to tech stack or replace"
173
- })
80
+ For each modified file, extract import statements (language-aware: TS/JS, Python, Go, Java).
81
+
82
+ Check each import against constraints:
83
+ disallowed_imports match violation {id: "CV-{NNN}", type: "disallowed_import", severity: "high", file, line, import, constraint, fix_direction}
84
+ allowed_libs allowlist defined + external package not listed → violation {id: "CV-{NNN}", type: "unlisted_dependency", severity: "medium", file, line, import, constraint, fix_direction}
174
85
  ```
175
86
 
176
87
  ### Step 4: Check Required Patterns
177
88
 
178
89
  ```
179
- FOR each pattern IN constraints.required_patterns:
180
- FOR each file IN modified_files matching pattern.file_glob:
181
- IF file does not contain pattern.regex:
182
- constraint_violations.push({
183
- id: "CV-{NNN}",
184
- type: "missing_required_pattern",
185
- severity: pattern.severity || "medium",
186
- file: file,
187
- line: null,
188
- import: null,
189
- constraint: "Required pattern missing: " + pattern.description,
190
- fix_direction: pattern.fix_hint || "Add required pattern to file"
191
- })
90
+ For each required_pattern, scan matching files (by file_glob) for pattern.regex.
91
+ Missing match violation {id: "CV-{NNN}", type: "missing_required_pattern", severity: pattern.severity || "medium", file, constraint, fix_direction}
192
92
  ```
193
93
 
194
94
  ### Step 5: Report
195
95
 
196
96
  ```
197
- IF constraint_violations.length > 0:
198
- Print: "V0.5: {constraint_violations.length} constraint violation(s) found"
199
- FOR each violation IN constraint_violations:
200
- Print: " [{violation.severity}] {violation.file}:{violation.line} - {violation.constraint}"
201
- ELSE:
202
- Print: "V0.5: All modified files comply with tech stack constraints"
97
+ Report constraint_violations count and details: [{severity}] {file}:{line} - {constraint}
98
+ If none: "V0.5: All modified files comply with tech stack constraints"
203
99
  ```
204
100
 
205
101
  The `constraint_violations[]` array is included in the final `verification.json` output in V3 aggregation.
@@ -225,17 +121,8 @@ Build a verification context object mapping:
225
121
 
226
122
  **Load UAT human findings** (if available):
227
123
  ```
228
- uat_gaps = []
229
- IF file exists "${PHASE_DIR}/uat.md":
230
- Parse uat.md "Gaps" section.
231
- FOR each gap in uat.md:
232
- uat_gaps.push({
233
- id: "GAP-UAT-{NNN}",
234
- type: "human_verified_failure",
235
- severity: gap.severity,
236
- description: "From UAT: " + gap.reason,
237
- fix_direction: "Address user-reported issue: " + gap.truth
238
- })
124
+ If ${PHASE_DIR}/uat.md exists, parse "Gaps" section into uat_gaps[]:
125
+ {id: "GAP-UAT-{NNN}", type: "human_verified_failure", severity, description, fix_direction}
239
126
  ```
240
127
  These `uat_gaps` are merged into the final `gaps[]` in V3 aggregation.
241
128
 
@@ -323,65 +210,22 @@ must_haves = {
323
210
  ### Identify gaps
324
211
 
325
212
  ```
326
- gaps = []
327
- For each failed truth:
328
- gaps.push({
329
- id: "GAP-{NNN}",
330
- type: "missing_feature" | "incomplete_implementation" | "broken_integration",
331
- severity: "critical" | "high" | "medium" | "low",
332
- description: "What is missing or broken",
333
- fix_direction: "Suggested approach to fix"
334
- })
335
-
336
- For each missing/non-substantive artifact:
337
- gaps.push({ ... })
338
-
339
- For each broken link:
340
- gaps.push({ ... })
213
+ Collect gaps from failed truths, missing/stub artifacts, and broken links.
214
+ Each gap: {id: "GAP-{NNN}", type: "missing_feature"|"incomplete_implementation"|"broken_integration",
215
+ severity: "critical"|"high"|"medium"|"low", description, fix_direction}
341
216
  ```
342
217
 
343
218
  ### Auto-create Issues from Gaps
344
219
 
345
220
  ```
346
- IF gaps.length > 0:
347
- mkdir -p ".workflow/issues"
348
- existing_ids = []
349
- IF file exists ".workflow/issues/issues.jsonl":
350
- Read .workflow/issues/issues.jsonl
351
- Extract all id fields matching today's date prefix ISS-YYYYMMDD-*
352
- existing_ids = collected IDs
353
-
354
- today = format(now(), "YYYYMMDD")
355
- counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
356
-
357
- FOR each gap IN gaps[]:
358
- issue_id = "ISS-{today}-{counter padded to 3 digits}"
359
- issue = {
360
- id: issue_id,
361
- title: gap.description (truncated to 100 chars),
362
- status: "registered",
363
- priority: severity_to_priority(gap.severity),
364
- severity: gap.severity,
365
- source: "verification",
366
- phase_ref: PHASE_NUM,
367
- gap_ref: gap.id,
368
- description: gap.description,
369
- fix_direction: gap.fix_direction,
370
- context: { location: "", suggested_fix: gap.fix_direction, notes: "" },
371
- tags: [],
372
- affected_components: [],
373
- feedback: [],
374
- issue_history: [],
375
- created_at: now(),
376
- updated_at: now(),
377
- resolved_at: null,
378
- resolution: null
379
- }
380
- Append JSON line to .workflow/issues/issues.jsonl
381
- gap.issue_id = issue_id // back-reference on gap object
382
- counter++
383
-
384
- Print: "Created {gaps.length} issues from verification gaps"
221
+ For each gap, create an issue in .workflow/issues/issues.jsonl:
222
+ id: "ISS-{YYYYMMDD}-{NNN}" (auto-incrementing from existing today's IDs)
223
+ Fields: title (gap.description truncated 100 chars), status: "registered",
224
+ priority: severity_to_priority(gap.severity), severity, source: "verification",
225
+ phase_ref: PHASE_NUM, gap_ref: gap.id, description, fix_direction,
226
+ context: {location, suggested_fix, notes}, tags[], affected_components[],
227
+ feedback[], issue_history[], created_at, updated_at, resolved_at: null, resolution: null
228
+ Back-reference: gap.issue_id = issue_id
385
229
  ```
386
230
 
387
231
  ### Write verification.json
@@ -422,47 +266,13 @@ Write anti-patterns into verification.json `antipatterns[]` array.
422
266
  ### Auto-create Issues from Blocker Anti-Patterns
423
267
 
424
268
  ```
425
- blocker_patterns = antipatterns.filter(ap => ap.severity == "Blocker")
426
-
427
- IF blocker_patterns.length > 0:
428
- mkdir -p ".workflow/issues"
429
- existing_ids = []
430
- IF file exists ".workflow/issues/issues.jsonl":
431
- Read .workflow/issues/issues.jsonl
432
- Extract all id fields matching today's date prefix ISS-YYYYMMDD-*
433
- existing_ids = collected IDs
434
-
435
- today = format(now(), "YYYYMMDD")
436
- counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
437
-
438
- FOR each pattern IN blocker_patterns:
439
- issue_id = "ISS-{today}-{counter padded to 3 digits}"
440
- issue = {
441
- id: issue_id,
442
- title: "Anti-pattern: " + pattern.pattern_name (truncated to 100 chars),
443
- status: "registered",
444
- priority: 1,
445
- severity: "critical",
446
- source: "antipattern",
447
- phase_ref: PHASE_NUM,
448
- gap_ref: null,
449
- description: "Blocker anti-pattern detected: " + pattern.pattern_name + " at " + pattern.file_line,
450
- fix_direction: "Remove " + pattern.pattern_name + " from " + pattern.file_line,
451
- context: { location: pattern.file_line, suggested_fix: "", notes: "" },
452
- tags: ["antipattern"],
453
- affected_components: [],
454
- feedback: [],
455
- issue_history: [],
456
- created_at: now(),
457
- updated_at: now(),
458
- resolved_at: null,
459
- resolution: null
460
- }
461
- Append JSON line to .workflow/issues/issues.jsonl
462
- pattern.issue_id = issue_id // back-reference on anti-pattern object
463
- counter++
464
-
465
- Print: "Created {blocker_patterns.length} issues from blocker anti-patterns"
269
+ For each Blocker anti-pattern, create an issue in .workflow/issues/issues.jsonl:
270
+ id: "ISS-{YYYYMMDD}-{NNN}" (auto-incrementing from existing today's IDs)
271
+ Fields: title: "Anti-pattern: {pattern_name}", status: "registered",
272
+ priority: 1, severity: "critical", source: "antipattern",
273
+ phase_ref: PHASE_NUM, description, fix_direction,
274
+ context: {location: pattern.file_line}, tags: ["antipattern"]
275
+ Back-reference: pattern.issue_id = issue_id
466
276
  ```
467
277
 
468
278
  ---
@@ -538,14 +348,7 @@ If gaps exist from any verification layer:
538
348
 
539
349
  3. **Order by dependency**: Fix missing -> fix stubs -> fix wiring -> verify.
540
350
 
541
- Enrich fix plan entries with issue references:
542
- ```
543
- FOR each fix_plan IN fix_plans[]:
544
- fix_plan.issue_ids = []
545
- FOR each gap IN fix_plan.related_gaps:
546
- IF gap.issue_id exists:
547
- fix_plan.issue_ids.push(gap.issue_id)
548
- ```
351
+ Enrich each fix_plan with issue_ids[] collected from its related_gaps' issue references.
549
352
 
550
353
  Write fix plans into verification.json `fix_plans[]` array.
551
354
 
@@ -566,19 +369,8 @@ Combine goal-backward, constraint validation, anti-pattern scan, and Nyquist res
566
369
 
567
370
  **Archive previous verification artifacts** before writing:
568
371
  ```
569
- ARCHIVE_TARGETS = ["verification.json", "validation.json"]
570
- has_existing = false
571
- FOR artifact IN ARCHIVE_TARGETS:
572
- IF file exists "${PHASE_DIR}/${artifact}":
573
- has_existing = true
574
- break
575
-
576
- IF has_existing:
577
- mkdir -p "${PHASE_DIR}/.history"
578
- TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
579
- FOR artifact IN ARCHIVE_TARGETS:
580
- IF file exists "${PHASE_DIR}/${artifact}":
581
- mv "${PHASE_DIR}/${artifact}" "${PHASE_DIR}/.history/${name}-${TIMESTAMP}.${ext}"
372
+ If any of ["verification.json", "validation.json"] exist in ${PHASE_DIR}:
373
+ Move each to ${PHASE_DIR}/.history/{name}-{YYYY-MM-DDTHH-mm-ss}.{ext}
582
374
  ```
583
375
 
584
376
  Write verification.json:
@@ -593,22 +385,9 @@ Write verification.json:
593
385
  ### Update index.json
594
386
 
595
387
  ```
596
- index.json.status = "verifying"
597
- index.json.updated_at = now()
598
-
599
- index.json.verification = {
600
- status: verification.json.status,
601
- verified_at: verification.json.verified_at,
602
- must_haves: summary of must_haves,
603
- gaps: verification.json.gaps
604
- }
605
-
606
- If validation.json exists:
607
- index.json.validation = {
608
- status: validation.json.status,
609
- test_coverage: validation.json.coverage,
610
- gaps: validation.json.gaps
611
- }
388
+ Set index.json.status = "verifying", updated_at = now()
389
+ Set index.json.verification = {status, verified_at, must_haves summary, gaps} from verification.json
390
+ If validation.json exists: set index.json.validation = {status, test_coverage, gaps} from validation.json
612
391
  ```
613
392
 
614
393
  ### Report Format
@@ -28,7 +28,7 @@ Knowledge graph link discovery and health improvement. Analyzes the unified wiki
28
28
 
29
29
  | Flag | Effect |
30
30
  |------|--------|
31
- | `--scope <type>` | Limit to wiki type: spec, memory, note, lesson, issue. Default: all |
31
+ | `--scope <type>` | Limit to wiki type: spec, knowhow, note, lesson, issue. Default: all |
32
32
  | `--min-similarity N` | Minimum similarity score 0.0-1.0 (default: 0.3) |
33
33
  | `--fix` | Auto-apply top suggestions via `maestro wiki update` |
34
34
  | `--max N` | Maximum suggestions to generate (default: 20) |
@@ -37,20 +37,9 @@ Knowledge graph link discovery and health improvement. Analyzes the unified wiki
37
37
 
38
38
  ## Stage 1: Load Wiki State
39
39
 
40
- Run these `maestro wiki` commands in parallel to gather baseline:
40
+ Gather baseline in parallel via `maestro wiki list --json`, `health`, `orphans`, `hubs --top 10`.
41
41
 
42
- ```bash
43
- maestro wiki list --json # all entries with metadata
44
- maestro wiki health # composite health score
45
- maestro wiki orphans # entries with 0 in/out links
46
- maestro wiki hubs --top 10 # most-referenced entries
47
- ```
48
-
49
- Parse into working state:
50
- - Entry count and type distribution (spec, memory, note, lesson, issue)
51
- - Baseline health score (numeric, from health command)
52
- - Orphan list with entry IDs and titles
53
- - Hub list with in-degree counts
42
+ Working state: entry count by type, baseline health score, orphan IDs, hub in-degree counts.
54
43
 
55
44
  Apply `--scope` filter if provided — restrict all subsequent analysis to matching type.
56
45
 
@@ -87,23 +76,15 @@ Detect entries of different types referencing the same concept:
87
76
 
88
77
  ## Stage 3: Score Candidates
89
78
 
90
- For each candidate connection (source → target):
79
+ Score each candidate connection (source → target):
91
80
 
92
81
  ```
93
- score = 0.4 × tag_overlap_ratio
94
- + 0.3 × title_bm25_similarity
95
- + 0.2 × same_category_bonus
96
- + 0.1 × type_bridge_bonus
82
+ score = 0.4 × tag_overlap_ratio + 0.3 × title_bm25_similarity + 0.2 × same_category_bonus + 0.1 × type_bridge_bonus
97
83
  ```
98
84
 
99
- - `tag_overlap_ratio`: shared_tags / max(source_tags, target_tags)
100
- - `title_bm25_similarity`: normalized BM25 score from `maestro wiki search`
101
- - `same_category_bonus`: 1.0 if same category, else 0.0
102
- - `type_bridge_bonus`: 1.0 if different types, else 0.0
85
+ Ratios: tag_overlap = shared/max(source,target) tags, BM25 = normalized wiki search, category/type bonuses = 1.0 if match/bridge.
103
86
 
104
- Filter: score >= `--min-similarity`
105
- Sort: descending by score
106
- Limit: top `--max` entries
87
+ Filter: score >= `--min-similarity`, sort descending, limit to `--max`.
107
88
 
108
89
  ---
109
90
 
@@ -131,16 +112,9 @@ If `--fix`: proceed to Stage 5.
131
112
 
132
113
  ## Stage 5: Apply Connections (--fix only)
133
114
 
134
- For each accepted suggestion:
135
- 1. `maestro wiki get <source-id> --json` — get current entry
136
- 2. Extract existing `related` list from frontmatter
137
- 3. Append target-id to `related` if not already present
138
- 4. `maestro wiki update <source-id> --frontmatter '{"related": ["existing...", "new-target"]}'`
139
- 5. Log success/failure per entry
115
+ For each accepted suggestion: fetch entry, append target-id to `related` list (dedup), update via `maestro wiki update <source-id> --frontmatter`.
140
116
 
141
- After all updates:
142
- - Re-run `maestro wiki health` → compute delta
143
- - Report applied count, skipped count, and health improvement
117
+ After all updates: re-run `maestro wiki health`, report applied/skipped counts and health delta.
144
118
 
145
119
  ---
146
120
 
@@ -175,14 +149,3 @@ Report: .workflow/learning/wiki-connections-{date}.md
175
149
  | View full graph | `maestro wiki graph` |
176
150
  | Run harvest for new content | `/manage-harvest --recent 7` |
177
151
 
178
- ---
179
-
180
- ## Error Codes
181
-
182
- | Code | Severity | Condition | Recovery |
183
- |------|----------|-----------|----------|
184
- | E001 | error | No wiki entries found (empty index) | Run `/maestro-init` or create wiki content |
185
- | E002 | error | `maestro wiki` CLI not available | Check maestro installation |
186
- | W001 | warning | No candidates above threshold | Lower `--min-similarity` or verify graph connectivity |
187
- | W002 | warning | Some wiki updates failed during `--fix` | Retry failed entries manually |
188
- | W003 | warning | Health score unchanged after fix | Connections may not affect specific health metrics |
@@ -32,7 +32,7 @@ Unlike `maestro wiki list` which shows raw entries, this workflow synthesizes an
32
32
  |------|--------|
33
33
  | `<topic>` | Search wiki for matching entries via BM25 |
34
34
  | `--recent N` | Entries updated within last N days |
35
- | `--type <type>` | Filter by wiki type: spec, memory, note, lesson, issue |
35
+ | `--type <type>` | Filter by wiki type: spec, knowhow, note, lesson, issue |
36
36
  | `--format brief\|full` | `brief` = compact (default), `full` = detailed per-entry |
37
37
  | `--create-issues` | Auto-create knowledge-gap issues in `issues.jsonl` |
38
38
 
@@ -59,18 +59,9 @@ Run `maestro wiki health` for baseline health metrics.
59
59
 
60
60
  ## Stage 2: Theme Clustering
61
61
 
62
- Group entries into 3-5 semantic themes using:
62
+ Group entries into 3-5 semantic themes by: tag co-occurrence (2+ shared tags), title BM25 similarity, relationship proximity (`related` links), and type sub-clustering.
63
63
 
64
- 1. **Tag co-occurrence**: entries sharing 2+ tags same cluster
65
- 2. **Title BM25 similarity**: entries whose titles match each other's keywords
66
- 3. **Relationship proximity**: entries connected by `related` links → same cluster
67
- 4. **Type sub-clustering**: if all same type, sub-cluster by content/category
68
-
69
- Per theme, record:
70
- - Theme name: dominant tag or keyword
71
- - Entry count and IDs
72
- - Type distribution within theme
73
- - Status distribution (draft/active/completed/archived)
64
+ Per theme: name (dominant tag), entry count/IDs, type distribution, status distribution.
74
65
 
75
66
  ---
76
67
 
@@ -100,10 +91,7 @@ Per-theme health adapted from wiki health formula (entries, connectivity, comple
100
91
 
101
92
  ## Stage 4: Cross-Reference with Lessons
102
93
 
103
- 1. Read `.workflow/learning/lessons.jsonl`
104
- 2. For each theme, search lessons by keyword match
105
- 3. Identify **unlinked insights**: lessons that match a theme's keywords but are not referenced by any wiki entry in that theme
106
- 4. Flag as "knowledge not yet connected to the graph"
94
+ Search `.workflow/learning/lessons.jsonl` for keyword matches against each theme. Flag **unlinked insights** -- lessons matching a theme but not referenced by any wiki entry in that theme.
107
95
 
108
96
  If `lessons.jsonl` not found, skip with W002 warning.
109
97
 
@@ -166,35 +154,15 @@ Produce `.workflow/learning/digest-{slug}-{YYYY-MM-DD}.md`:
166
154
 
167
155
  ## Stage 7: Gap → Issue Routing (if --create-issues)
168
156
 
169
- For each knowledge gap from Stage 5:
170
- 1. Dedup: check `.workflow/issues/issues.jsonl` for existing gap with same theme + type
171
- 2. If new, append to `issues.jsonl` using canonical schema (see `~/.maestro/workflows/issue.md` Step 4):
172
- - `type`: "knowledge-gap"
173
- - `status`: "open"
174
- - `severity`: "low"
175
- - `source`: "wiki-digest"
176
- - `tags`: ["knowledge-gap", "{theme-slug}"]
177
- 3. Report created issue count
157
+ For each knowledge gap from Stage 5: dedup against `.workflow/issues/issues.jsonl` (same theme + type). If new, append with `type: "knowledge-gap"`, `status: "open"`, `severity: "low"`, `source: "wiki-digest"`, `tags: ["knowledge-gap", "{theme-slug}"]`. Report created count.
178
158
 
179
159
  ---
180
160
 
181
161
  ## Stage 8: Persist
182
162
 
183
163
  1. Write digest file to `.workflow/learning/`
184
- 2. Append meta-insights to `.workflow/learning/lessons.jsonl`:
185
- - `source: "wiki-digest"`, `category: "technique"`
186
- - e.g., "Auth knowledge concentrated in specs, lacks lessons"
187
- 3. Display summary:
188
-
189
- ```
190
- == Wiki Digest Complete ==
191
- Scope: {topic or "all"}
192
- Entries: {count}
193
- Themes: {theme_count}
194
- Gaps: {gap_count} identified
195
- Issues: {created_count} created (if --create-issues)
196
- Report: .workflow/learning/digest-{slug}-{date}.md
197
- ```
164
+ 2. Append meta-insights to `.workflow/learning/lessons.jsonl` (`source: "wiki-digest"`, `category: "technique"`)
165
+ 3. Display summary: scope, entry count, theme count, gap count, created issues (if applicable), report path.
198
166
 
199
167
  ---
200
168
 
@@ -208,14 +176,3 @@ Report: .workflow/learning/digest-{slug}-{date}.md
208
176
  | Create missing entries | `maestro wiki create --type <type> --slug <slug>` |
209
177
  | Triage gap issues | `/manage-issue list --source wiki-digest` |
210
178
 
211
- ---
212
-
213
- ## Error Codes
214
-
215
- | Code | Severity | Condition | Recovery |
216
- |------|----------|-----------|----------|
217
- | E001 | error | No wiki entries found (empty index) | Initialize wiki content |
218
- | E002 | error | Topic search returned 0 results | Broaden topic or check wiki |
219
- | W001 | warning | Too few entries (<5) for meaningful clustering | Themes may be trivial |
220
- | W002 | warning | `lessons.jsonl` not found | Skip cross-reference |
221
- | W003 | warning | Some entry bodies failed to load | Partial summaries |