maestro-flow 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
@@ -0,0 +1,374 @@
1
+ # KnowHow Workflow
2
+
3
+ Reusable knowledge capture, retrieval, and management for cross-session recovery and knowledge reuse.
4
+
5
+ ## Dual Store Architecture
6
+
7
+ | Store | Path | Format | Index |
8
+ |-------|------|--------|-------|
9
+ | `workflow` | `.workflow/knowhow/` | `{PREFIX}-*.md` (6 prefixes) | `.workflow/wiki-index.json` (unified, WikiIndexer) |
10
+ | `system` | `~/.claude/projects/{project}/memory/` | `MEMORY.md` + topic `.md` files | None (flat files) |
11
+
12
+ **System memory path detection:**
13
+ ```bash
14
+ # Derive from project root — replace path separators with '--', prefix drive letter
15
+ # e.g., D:\maestro2 → ~/.claude/projects/D--maestro2/memory/
16
+ ```
17
+
18
+ ---
19
+
20
+ ## Content Type Matrix
21
+
22
+ Six types of knowhow, each with dedicated structure:
23
+
24
+ | Type | Prefix | Purpose | Trigger |
25
+ |------|--------|---------|---------|
26
+ | `session` | KNW- | Session state recovery | End of complex task, before context switch |
27
+ | `template` | TPL- | Reusable code/config templates | Extracting a pattern, saving boilerplate |
28
+ | `recipe` | RCP- | Step-by-step operational guide | Documenting a workflow, onboarding |
29
+ | `reference` | REF- | External doc / API quick-reference | Importing docs, saving URL summaries |
30
+ | `decision` | DCS- | Architecture Decision Record | Making non-trivial design choices |
31
+ | `tip` | TIP- | Quick note, snippet, reminder | Fleeting insight, debugging trick |
32
+
33
+ All types share `WikiNodeType = 'knowhow'`. The `category` field distinguishes subtypes in wiki queries.
34
+
35
+ ---
36
+
37
+ ## Part A: KnowHow Management (manage-knowhow)
38
+
39
+ Operations: list, search, view, edit, delete, prune across both stores.
40
+
41
+ ### Step 1: Resolve Paths
42
+
43
+ - **Workflow**: `.workflow/knowhow/` (index: `.workflow/wiki-index.json`)
44
+ - **System**: `~/.claude/projects/{project-path}/memory/`
45
+
46
+ Verify stores exist. Neither → E001.
47
+
48
+ ### Step 2: Parse Input
49
+
50
+ | Input | Route |
51
+ |-------|-------|
52
+ | No arguments, `list`, `列表`, `ls` | List mode |
53
+ | `search <query>`, `搜索`, `find` | Search mode |
54
+ | `view <id\|file>`, `查看`, `show` | View mode |
55
+ | `edit <file>`, `编辑` | Edit mode (system store only) |
56
+ | `delete <id\|file>`, `删除`, `rm` | Delete mode |
57
+ | `prune`, `清理`, `cleanup` | Prune mode |
58
+
59
+ **Store auto-detection:** Arguments matching `KNW-*`, `TIP-*`, `TPL-*`, `RCP-*`, `REF-*`, `DCS-*` → workflow store. Other filenames → system store.
60
+
61
+ ### Step 3: List
62
+
63
+ Workflow: `maestro wiki list --type knowhow --json`, filter by `--tag`, `--type`, `--category`.
64
+ System: Glob `*.md` files, extract titles.
65
+
66
+ Display: ID/File, Type, Category, Date, Tags, Summary with navigation hints.
67
+
68
+ ### Step 4: Search
69
+
70
+ Full-text search across both stores. Rank: exact match > heading > content.
71
+
72
+ ### Step 5-9: View, Edit, Delete, Prune, Integrity Check
73
+
74
+ Same logic as before. Workflow entries managed via WikiWriter; system entries via direct file ops.
75
+
76
+ ---
77
+
78
+ ## Part B: KnowHow Capture (manage-knowhow-capture)
79
+
80
+ Capture reusable knowledge into `.workflow/knowhow/`.
81
+
82
+ ### Step 1: Detect Type
83
+
84
+ | Token | Type |
85
+ |-------|------|
86
+ | `compact`, `session`, `压缩` | session |
87
+ | `template`, `tpl`, `模板` | template |
88
+ | `recipe`, `rcp`, `配方`, `步骤` | recipe |
89
+ | `reference`, `ref`, `参考` | reference |
90
+ | `decision`, `dcs`, `决策`, `adr` | decision |
91
+ | `tip`, `note`, `记录` | tip |
92
+ | No arguments | AskUserQuestion (6 options) |
93
+
94
+ ### Step 2: Generate Content by Type
95
+
96
+ #### session (KNW-{YYYYMMDD}-{HHMM}.md)
97
+
98
+ Extract from current conversation. Sections:
99
+
100
+ 1. **Session ID** — WFS-* or `manual-{date}`
101
+ 2. **Project Root** — Absolute path
102
+ 3. **Objective** — High-level goal
103
+ 4. **Execution Plan** — Source type + complete verbatim content
104
+ 5. **Working Files** — 3-8 modified files with roles, absolute paths
105
+ 6. **Reference Files** — Key context files (CLAUDE.md, types, configs)
106
+ 7. **Last Action** — Final action + result
107
+ 8. **Decisions** — `| Decision | Reasoning |` table
108
+ 9. **Constraints** — User-specified limitations
109
+ 10. **Dependencies** — Added/changed packages
110
+ 11. **Known Issues** — Deferred bugs
111
+ 12. **Changes Made** — Completed modifications
112
+ 13. **Pending** — Next steps
113
+ 14. **Notes** — Unstructured
114
+
115
+ Plan detection priority: IMPL_PLAN.md > TodoWrite > user-stated > inferred.
116
+ Rules: VERBATIM plan, ABSOLUTE paths, decisions include reasoning.
117
+
118
+ #### template (TPL-{YYYYMMDD}-{HHMM}.md)
119
+
120
+ Reusable code or configuration pattern. Sections:
121
+
122
+ ```markdown
123
+ ---
124
+ title: {descriptive name}
125
+ type: template
126
+ category: template
127
+ lang: {typescript|python|bash|yaml|...}
128
+ tags: [{comma-separated}]
129
+ created: {ISO timestamp}
130
+ ---
131
+
132
+ # {title}
133
+
134
+ ## Usage
135
+ When and how to use this template.
136
+
137
+ ## Parameters
138
+ | Placeholder | Description | Default |
139
+ |-------------|-------------|---------|
140
+ | `{{name}}` | ... | ... |
141
+
142
+ ## Dependencies
143
+ - package-list
144
+
145
+ ## Code
146
+ ```{lang}
147
+ {copy-paste ready code}
148
+ ```
149
+
150
+ ## Notes
151
+ Additional context.
152
+ ```
153
+
154
+ **Field guide:**
155
+ - `lang` — Programming language or config format (required)
156
+ - `Usage` — 1-2 sentences describing when to apply
157
+ - `Parameters` — Placeholder table (optional)
158
+ - `Code` — The actual template, ready to copy
159
+ - `Dependencies` — What's needed before using
160
+
161
+ #### recipe (RCP-{YYYYMMDD}-{HHMM}.md)
162
+
163
+ Step-by-step operational guide. Sections:
164
+
165
+ ```markdown
166
+ ---
167
+ title: {goal summary}
168
+ type: recipe
169
+ category: recipe
170
+ tags: [{comma-separated}]
171
+ created: {ISO timestamp}
172
+ ---
173
+
174
+ # {title}
175
+
176
+ ## Goal
177
+ What this recipe accomplishes.
178
+
179
+ ## Prerequisites
180
+ - Tool/access/config requirements
181
+
182
+ ## Steps
183
+ 1. First step
184
+ 2. Second step
185
+ ...
186
+
187
+ ## Expected Outcome
188
+ What success looks like.
189
+
190
+ ## Common Pitfalls
191
+ - Gotcha 1
192
+ - Gotcha 2
193
+
194
+ ## Related
195
+ - [[recipe-xxx]] — Related recipes
196
+ - [[template-xxx]] — Templates used
197
+ ```
198
+
199
+ **Field guide:**
200
+ - `Goal` — One sentence, actionable
201
+ - `Prerequisites` — Everything needed before starting
202
+ - `Steps` — Numbered, each step verifiable independently
203
+ - `Expected Outcome` — Measurable result
204
+ - `Common Pitfalls` — Known gotchas from experience
205
+
206
+ #### reference (REF-{YYYYMMDD}-{HHMM}.md)
207
+
208
+ External documentation digest. Sections:
209
+
210
+ ```markdown
211
+ ---
212
+ title: {reference title}
213
+ type: reference
214
+ category: reference
215
+ source: {original URL}
216
+ tags: [{comma-separated}]
217
+ created: {ISO timestamp}
218
+ last_verified: {ISO date}
219
+ ---
220
+
221
+ # {title}
222
+
223
+ ## Source
224
+ {URL or document reference}
225
+
226
+ ## Key Points
227
+ - Essential info point 1
228
+ - Essential info point 2
229
+
230
+ ## Applicable Scenarios
231
+ - When to consult this reference
232
+
233
+ ## Quick Examples
234
+ ```lang
235
+ {copy-paste examples}
236
+ ```
237
+
238
+ ## Notes
239
+ Additional context.
240
+ ```
241
+
242
+ **Field guide:**
243
+ - `source` — Original URL or document ID (required)
244
+ - `Key Points` — Distilled essentials, not raw dump
245
+ - `Applicable Scenarios` — "Use this when..."
246
+ - `Quick Examples` — Most-used snippets first
247
+ - `last_verified` — When the source was last checked
248
+
249
+ #### decision (DCS-{YYYYMMDD}-{HHMM}.md)
250
+
251
+ Architecture Decision Record. Sections:
252
+
253
+ ```markdown
254
+ ---
255
+ title: {decision summary}
256
+ type: decision
257
+ category: decision
258
+ status: {proposed|accepted|superseded}
259
+ tags: [{comma-separated}]
260
+ created: {ISO timestamp}
261
+ ---
262
+
263
+ # {title}
264
+
265
+ ## Context
266
+ Background and problem statement.
267
+
268
+ ## Decision
269
+ What was decided.
270
+
271
+ ## Alternatives Considered
272
+ | Alternative | Pros | Cons | Rejected Because |
273
+ |-------------|------|------|------------------|
274
+ | Option A | ... | ... | ... |
275
+ | Option B | ... | ... | ... |
276
+
277
+ ## Rationale
278
+ Why this choice over alternatives.
279
+
280
+ ## Consequences
281
+ ### Positive
282
+ - Benefit 1
283
+
284
+ ### Negative
285
+ - Trade-off 1
286
+
287
+ ## Related
288
+ - [[spec-xxx]] — Affected spec
289
+ - [[recipe-xxx]] — Implementation recipe
290
+ ```
291
+
292
+ **Field guide:**
293
+ - `status` — proposed → accepted → superseded lifecycle
294
+ - `Context` — Enough background for future reader (no assumed knowledge)
295
+ - `Alternatives` — Must list at least 2 rejected options with reasons
296
+ - `Rationale` — The "why" matters more than the "what"
297
+ - `Consequences` — Both positive and negative; be honest about trade-offs
298
+
299
+ #### tip (TIP-{YYYYMMDD}-{HHMM}.md)
300
+
301
+ Quick note. Minimal structure:
302
+
303
+ ```markdown
304
+ ---
305
+ title: {tip summary}
306
+ type: tip
307
+ category: tip
308
+ tags: [{comma-separated}]
309
+ created: {ISO timestamp}
310
+ ---
311
+
312
+ # {title}
313
+
314
+ {content}
315
+
316
+ ## Context
317
+ {Auto-detected files/modules}
318
+ ```
319
+
320
+ ### Step 3: Write File
321
+
322
+ Write to `.workflow/knowhow/{PREFIX}-{YYYYMMDD}-{HHMM}.md`.
323
+
324
+ Frontmatter keys by type:
325
+
326
+ | Field | session | template | recipe | reference | decision | tip |
327
+ |-------|:-------:|:--------:|:------:|:---------:|:--------:|:---:|
328
+ | title | Y | Y | Y | Y | Y | Y |
329
+ | type | Y | Y | Y | Y | Y | Y |
330
+ | category | Y | Y | Y | Y | Y | Y |
331
+ | tags | Y | Y | Y | Y | Y | Y |
332
+ | created | Y | Y | Y | Y | Y | Y |
333
+ | lang | | Y | | | | |
334
+ | source | | | | Y | | |
335
+ | status | | | | | Y | |
336
+ | last_verified | | | | Y | | |
337
+
338
+ ### Step 4: Report
339
+
340
+ Display confirmation with ID, type, file path, and type-specific summary line.
341
+
342
+ ---
343
+
344
+ ## Part C: Retrieval
345
+
346
+ ### CLI
347
+
348
+ ```bash
349
+ maestro knowhow list # all entries
350
+ maestro knowhow list --type template # by type
351
+ maestro knowhow search "deploy auth" # full-text
352
+ maestro knowhow get knowhow-{slug} # view one
353
+
354
+ maestro wiki list --type knowhow --json # programmatic
355
+ maestro wiki list --type knowhow --category decision # decisions only
356
+ ```
357
+
358
+ ### MCP
359
+
360
+ ```
361
+ store_knowhow { operation: "search", query: "deploy" }
362
+ store_knowhow { operation: "add", type: "template", title: "...", body: "..." }
363
+ ```
364
+
365
+ ### Type Label Reference
366
+
367
+ | Wiki type | Category | Prefix | Label |
368
+ |-----------|----------|--------|-------|
369
+ | knowhow | session | KNW- | Session |
370
+ | knowhow | tip | TIP- | Tip |
371
+ | knowhow | template | TPL- | Template |
372
+ | knowhow | recipe | RCP- | Recipe |
373
+ | knowhow | reference | REF- | Reference |
374
+ | knowhow | decision | DCS- | Decision |
@@ -4,7 +4,9 @@ Atomic insight capture, search, and retrieval. Lightweight gstack-style "eureka
4
4
 
5
5
  Storage:
6
6
  - `.workflow/learning/lessons.jsonl` — append-only JSONL row per insight (shared with retrospective output)
7
- - `.workflow/learning/learning-index.json` — searchable index (searchable index)
7
+ - `.workflow/learning/learning-index.json` — searchable index
8
+
9
+ **Shared store rationale:** Manual captures (`source: "manual"`), tips (`source: "tip"`), retrospective-distilled insights (`source: "retrospective"`, `lens: <name>` from `quality-retrospective`), and learn-retro insights (`source: "retro-git"` or `source: "retro-decision"` from `learn-retro`) all live in the same store so search and list see the entire knowledge corpus. The `source` field disambiguates origin.
8
10
 
9
11
  This workflow does NOT spawn agents or call CLI tools. It is a thin file operation: parse → infer → append → confirm.
10
12
 
@@ -30,25 +32,23 @@ This workflow does NOT spawn agents or call CLI tools. It is a thin file operati
30
32
 
31
33
  | Flag | Effect |
32
34
  |------|--------|
33
- | `--category <name>` | One of: pattern, antipattern, decision, tool, gotcha, technique. Default: inferred. |
34
- | `--tag t1,t2` | Comma-separated tags. Always implicitly adds `manual` for capture mode. |
35
+ | `--category <name>` | One of: pattern, antipattern, decision, tool, gotcha, technique, tip. Default: inferred (tip mode defaults to `tip`). |
36
+ | `--tag t1,t2` | Comma-separated tags. Insight mode implicitly adds `manual`, tip mode implicitly adds `tip`. |
35
37
  | `--phase <N>` | Override auto-detected phase link. Use `--phase 0` to force "no phase". |
36
- | `--confidence <level>` | high / medium / low. Default: medium. |
38
+ | `--confidence <level>` | high / medium / low. Default: medium (insight), low (tip). |
39
+ | `--lens <name>` | Filter by retrospective lens: technical, process, quality, decision, git (list/search only). |
40
+ | `--limit <N>` | List mode row limit (default 20). |
37
41
 
38
42
  ---
39
43
 
40
44
  ## Stage 1: parse_input
41
45
 
42
46
  ```
43
- 1. Verify .workflow/ exists; else error E001.
44
- 2. Tokenize $ARGUMENTS:
45
- - First token determines mode:
46
- "list"list mode
47
- "search"search mode (next token = query)
48
- "show" → show mode (next token = INS-id)
49
- anything else → capture mode (entire quoted text = insight body)
50
- 3. If empty arguments → AskUserQuestion: prompt for insight text.
51
- 4. Validate --category against allowed set; unknown → error E002.
47
+ Verify .workflow/ exists (else E001). Route by first token:
48
+ "list" list | "search" → search (next token = query) | "show" → show (next token = INS-id)
49
+ "tip" → tip capture (source="tip", category="tip", confidence="low", implicit tag "tip")
50
+ elsecapture mode (full quoted text = insight body)
51
+ Empty args AskUserQuestion. Invalid --category E002.
52
52
  ```
53
53
 
54
54
  ---
@@ -78,26 +78,11 @@ fi
78
78
 
79
79
  Unless `--phase` is set:
80
80
  ```
81
- phase = null
82
- phase_slug = null
83
-
84
- IF .workflow/state.json exists:
85
- state = read JSON
86
- artifacts = state.artifacts ?? []
87
-
88
- # Derive current phase from artifacts (first phase with in_progress, or first without completed execute)
89
- phase = null
90
- inProgressArt = artifacts.find(a => a.type === 'execute' && a.status === 'in_progress')
91
- IF inProgressArt:
92
- phase = inProgressArt.phase
93
- ELSE:
94
- phaseNums = [...new Set(artifacts.map(a => a.phase).filter(Boolean))].sort()
95
- phase = phaseNums.find(p => !artifacts.some(a => a.phase === p && a.type === 'execute' && a.status === 'completed'))
96
-
97
- IF phase is not null:
98
- # Resolve slug from artifact registry
99
- art = artifacts.find(a => a.phase === phase)
100
- phase_slug = art?.slug ?? "phase-" + phase
81
+ From .workflow/state.json artifacts, detect current phase:
82
+ 1. Find first artifact with type=execute, status=in_progress
83
+ 2. Else find first phase without a completed execute artifact
84
+ 3. Resolve phase_slug from matching artifact (fallback: "phase-{N}")
85
+ If no state.json → phase=null, phase_slug=null
101
86
  ```
102
87
 
103
88
  If `--phase 0` is passed, force `phase = null, phase_slug = null` regardless.
@@ -138,53 +123,15 @@ row = {
138
123
  }
139
124
  ```
140
125
 
141
- ### Step 2.6: Append to lessons.jsonl
142
-
143
- ```
144
- Serialize row as single JSON line (no pretty print)
145
- Append to .workflow/learning/lessons.jsonl
146
- ```
147
-
148
- ### Step 2.7: Update learning-index.json
149
-
150
- ```
151
- Read .workflow/learning/learning-index.json
152
- Append to entries[]:
153
- {
154
- id: row.id,
155
- type: "insight",
156
- timestamp: row.captured_at,
157
- file: "lessons.jsonl",
158
- summary: row.title,
159
- tags: row.tags,
160
- lens: null,
161
- category: row.category,
162
- phase: row.phase,
163
- phase_slug: row.phase_slug,
164
- confidence: row.confidence,
165
- routed_to: "none",
166
- routed_id: null
167
- }
168
- Write .workflow/learning/learning-index.json
169
- ```
170
-
171
- ### Step 2.8: Confirmation banner
126
+ ### Step 2.6: Persist
172
127
 
173
- ```
174
- === INSIGHT CAPTURED ===
175
- ID: {INS-id}
176
- Category: {category}
177
- Confidence: {confidence}
178
- Tags: {tags joined by ", "}
179
- Phase: {phase or "none"}{IF phase_slug: " ({phase_slug})"}
128
+ Append row as single JSON line to `.workflow/learning/lessons.jsonl`.
180
129
 
181
- {title}
130
+ Update `.workflow/learning/learning-index.json` — append an index entry mirroring key row fields: `id`, `type:"insight"`, `timestamp`, `file:"lessons.jsonl"`, `summary` (=title), `tags`, `lens`, `category`, `phase`, `phase_slug`, `confidence`, `routed_to:"none"`, `routed_id:null`.
182
131
 
183
- File: .workflow/learning/lessons.jsonl
132
+ ### Step 2.7: Confirmation banner
184
133
 
185
- To browse: Skill({ skill: "manage-learn", args: "list" })
186
- To search: Skill({ skill: "manage-learn", args: "search <query>" })
187
- ```
134
+ Display: ID, category, confidence, tags, phase (+slug if present), title, file path, and hints for `list` / `search` commands.
188
135
 
189
136
  ---
190
137
 
@@ -192,19 +139,7 @@ To search: Skill({ skill: "manage-learn", args: "search <query>" })
192
139
 
193
140
  ### Step 3.1: Read entries
194
141
 
195
- ```
196
- Read .workflow/learning/learning-index.json
197
- entries = index.entries
198
-
199
- Apply filters from flags:
200
- --tag t1,t2 → keep entries where any tag matches any filter tag
201
- --category X → keep entries where category == X
202
- --phase N → keep entries where phase == N
203
- --lens X → keep entries where lens == X (retrospective insights only)
204
-
205
- Sort by timestamp DESCENDING
206
- Default limit: 20 (override with --limit N)
207
- ```
142
+ Read `.workflow/learning/learning-index.json`. Filter by `--tag`, `--category`, `--phase`, `--lens` flags. Sort by timestamp descending. Limit to 20 (or `--limit N`).
208
143
 
209
144
  ### Step 3.2: Display table
210
145
 
@@ -237,29 +172,11 @@ Capture your first: Skill({ skill: "manage-learn", args: "\"...\"" })
237
172
 
238
173
  ### Step 4.1: Validate query
239
174
 
240
- ```
241
- query = next token after "search"
242
- If empty → AskUserQuestion: "What text to search for?"
243
- ```
175
+ Next token after "search". Empty → AskUserQuestion.
244
176
 
245
177
  ### Step 4.2: Scan lessons.jsonl
246
178
 
247
- ```
248
- matches = []
249
- FOR each line in .workflow/learning/lessons.jsonl:
250
- row = JSON.parse(line)
251
- haystack = lower(row.title + " " + row.summary + " " + row.tags.join(" ") + " " + row.category + " " + (row.lens or ""))
252
- needle = lower(query)
253
- IF haystack contains needle:
254
- # Compute simple match rank
255
- rank = 0
256
- IF row.title contains needle: rank += 3
257
- IF row.tags contains needle: rank += 2
258
- IF row.summary contains needle: rank += 1
259
- matches.push({ row, rank })
260
-
261
- Sort matches by rank DESCENDING, then by captured_at DESCENDING
262
- ```
179
+ Case-insensitive search across each row's `title`, `summary`, `tags`, `category`, `lens`. Rank matches: title match +3, tags +2, summary +1. Sort by rank desc, then captured_at desc.
263
180
 
264
181
  ### Step 4.3: Display results
265
182
 
@@ -289,52 +206,15 @@ List all: Skill({ skill: "manage-learn", args: "list" })
289
206
 
290
207
  ### Step 5.1: Locate row
291
208
 
292
- ```
293
- target_id = next token after "show"
294
- If missing → error E003: "Provide an INS-id (e.g. INS-a1b2c3d4)"
295
-
296
- row = null
297
- FOR each line in .workflow/learning/lessons.jsonl:
298
- parsed = JSON.parse(line)
299
- IF parsed.id == target_id:
300
- row = parsed
301
- break
302
-
303
- IF row is null → error E004: "Insight {target_id} not found"
304
- ```
209
+ Find row matching target INS-id in `lessons.jsonl`. Missing arg → E003. Not found → E004.
305
210
 
306
211
  ### Step 5.2: Resolve linked phase context (if any)
307
212
 
308
- ```
309
- phase_context = null
310
- IF row.phase_slug is not null:
311
- // Resolve phase dir from artifact registry
312
- Read .workflow/state.json → state
313
- artifacts = state.artifacts ?? []
314
- phase_dir = null
315
- art = artifacts.find(a => a.phase === row.phase && a.path)
316
- IF art: phase_dir = ".workflow/" + art.path
317
-
318
- IF phase_dir AND directory exists:
319
- phase_context = {
320
- title: read index.json.title from phase_dir,
321
- status: read index.json.status,
322
- retrospective_exists: file exists at phase_dir + "/retrospective.md"
323
- }
324
- ```
213
+ If `row.phase_slug` set: look up phase directory from `state.json` artifacts, read its `index.json` for title/status, check for `retrospective.md`.
325
214
 
326
215
  ### Step 5.3: Resolve routed artifact (if any)
327
216
 
328
- ```
329
- routed_path = null
330
- IF row.routed_id is not null:
331
- IF row.routed_to == "spec":
332
- routed_path = ".workflow/specs/" + row.routed_id
333
- ELIF row.routed_to == "issue":
334
- routed_path = ".workflow/issues/issues.jsonl#" + row.routed_id
335
- ELIF row.routed_to == "note":
336
- routed_path = ".workflow/memory/" + row.routed_id + ".md"
337
- ```
217
+ Map `routed_to` → path: `spec` → `.workflow/specs/{id}`, `issue` → `.workflow/issues/issues.jsonl#{id}`, `note` → `.workflow/knowhow/{id}.md`.
338
218
 
339
219
  ### Step 5.4: Display
340
220
 
@@ -375,38 +255,11 @@ PHASE CONTEXT:
375
255
 
376
256
  ---
377
257
 
378
- ## Error Codes
379
-
380
- | Code | Severity | Description |
381
- |------|----------|-------------|
382
- | E001 | error | `.workflow/` not initialized — run `Skill({ skill: "maestro-init" })` first |
383
- | E002 | error | Unknown `--category` (allowed: pattern, antipattern, decision, tool, gotcha, technique) |
384
- | E003 | error | `show` mode requires an INS-id argument |
385
- | E004 | error | Insight id not found in lessons.jsonl |
386
- | W001 | warning | Auto-phase detection found no matching artifact in registry; phase set to null |
387
- | W002 | warning | learning-index.json out of sync with lessons.jsonl (different row count); offer to rebuild |
388
-
389
- ---
390
-
391
- ## Success Criteria
392
-
393
- - [ ] Mode correctly routed (capture / list / search / show)
394
- - [ ] Capture mode: `lessons.jsonl` row appended, valid JSON, all required fields present
395
- - [ ] Capture mode: `learning-index.json` updated with matching entry
396
- - [ ] Capture mode: phase auto-link resolves correctly from artifact registry
397
- - [ ] Capture mode: category inference produces a sensible default when --category absent
398
- - [ ] List mode: filters apply; output sorted newest-first
399
- - [ ] Search mode: results ranked by title > tags > summary match
400
- - [ ] Show mode: full insight displayed with phase context and routed artifact link if any
401
- - [ ] No file modifications outside `.workflow/learning/`
402
-
403
- ---
404
-
405
258
  ## Relationship to other workflows
406
259
 
407
260
  | Workflow | Relationship |
408
261
  |----------|--------------|
409
262
  | `quality-retrospective` | Producer. Writes insights into the same `lessons.jsonl` with `source: "retrospective"` and a populated `lens` field. |
410
- | `manage-memory-capture` | Sibling. Captures session state for recovery; `learn` captures timeless insights. They share the JSONL+index pattern but live in different directories so retrieval semantics stay clean. |
263
+ | `manage-knowhow-capture` | Sibling. Captures session state for recovery; `learn` captures timeless insights. They share the JSONL+index pattern but live in different directories so retrieval semantics stay clean. |
411
264
  | `phase-transition` | Reader (informally). Phase-transition's free-form `.workflow/specs/learnings.md` is a distinct file with a different audience; do not merge them. |
412
265
  | `maestro-plan` | Future consumer. Should query `lessons.jsonl` filtered by tag/lens/category to inform planning decisions. (Out of scope for this command.) |