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.
- package/.claude/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- package/.claude/commands/maestro-composer.md +354 -0
- package/.claude/commands/maestro-execute.md +2 -56
- package/.claude/commands/maestro-fork.md +3 -50
- package/.claude/commands/maestro-merge.md +2 -26
- package/.claude/commands/maestro-milestone-audit.md +1 -5
- package/.claude/commands/maestro-milestone-complete.md +1 -7
- package/.claude/commands/maestro-plan.md +6 -127
- package/.claude/commands/maestro-player.md +404 -0
- package/.claude/commands/maestro-roadmap.md +3 -101
- package/.claude/commands/maestro-spec-generate.md +1 -25
- package/.claude/commands/maestro-ui-design.md +14 -73
- package/.claude/commands/maestro-verify.md +1 -32
- package/.claude/commands/maestro.md +13 -30
- package/.claude/commands/manage-harvest.md +7 -44
- package/.claude/commands/manage-knowhow-capture.md +193 -0
- package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
- package/.claude/commands/manage-learn.md +3 -28
- package/.claude/commands/manage-status.md +1 -20
- package/.claude/commands/manage-wiki.md +1 -1
- package/.claude/commands/quality-business-test.md +1 -1
- package/.claude/commands/quality-debug.md +3 -18
- package/.claude/commands/quality-integration-test.md +3 -23
- package/.claude/commands/quality-retrospective.md +1 -28
- package/.claude/commands/quality-review.md +3 -52
- package/.claude/commands/quality-test-gen.md +1 -10
- package/.claude/commands/quality-test.md +3 -25
- package/.claude/commands/spec-add.md +1 -21
- package/.claude/commands/spec-load.md +1 -16
- package/.claude/commands/wiki-connect.md +2 -112
- package/.claude/commands/wiki-digest.md +2 -141
- package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
- package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
- package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/.codex/skills/learn-decompose/SKILL.md +2 -8
- package/.codex/skills/maestro/SKILL.md +60 -146
- package/.codex/skills/maestro-analyze/SKILL.md +52 -150
- package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
- package/.codex/skills/maestro-composer/SKILL.md +213 -0
- package/.codex/skills/maestro-execute/SKILL.md +46 -177
- package/.codex/skills/maestro-init/SKILL.md +7 -51
- package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
- package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
- package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
- package/.codex/skills/maestro-overlay/SKILL.md +23 -92
- package/.codex/skills/maestro-plan/SKILL.md +42 -166
- package/.codex/skills/maestro-player/SKILL.md +323 -0
- package/.codex/skills/maestro-quick/SKILL.md +5 -48
- package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
- package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
- package/.codex/skills/maestro-verify/SKILL.md +39 -136
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
- package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
- package/.codex/skills/manage-issue/SKILL.md +1 -6
- package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
- package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
- package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
- package/.codex/skills/manage-learn/SKILL.md +17 -71
- package/.codex/skills/manage-status/SKILL.md +4 -35
- package/.codex/skills/manage-wiki/SKILL.md +1 -1
- package/.codex/skills/quality-business-test/SKILL.md +2 -14
- package/.codex/skills/quality-debug/SKILL.md +41 -133
- package/.codex/skills/quality-integration-test/SKILL.md +36 -145
- package/.codex/skills/quality-refactor/SKILL.md +6 -59
- package/.codex/skills/quality-retrospective/SKILL.md +292 -531
- package/.codex/skills/quality-review/SKILL.md +30 -65
- package/.codex/skills/quality-sync/SKILL.md +2 -11
- package/.codex/skills/quality-test/SKILL.md +4 -45
- package/.codex/skills/quality-test-gen/SKILL.md +33 -121
- package/.codex/skills/spec-add/SKILL.md +2 -9
- package/.codex/skills/spec-load/SKILL.md +4 -14
- package/.codex/skills/spec-map/SKILL.md +4 -37
- package/.codex/skills/spec-remove/SKILL.md +3 -35
- package/.codex/skills/spec-setup/SKILL.md +2 -19
- package/.codex/skills/team-coordinate/SKILL.md +20 -132
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
- package/.codex/skills/team-executor/SKILL.md +7 -66
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
- package/.codex/skills/team-executor/specs/session-schema.md +22 -56
- package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
- package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
- package/.codex/skills/team-review/SKILL.md +12 -86
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
- package/.codex/skills/team-tech-debt/SKILL.md +11 -50
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
- package/.codex/skills/team-testing/SKILL.md +14 -99
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
- package/.codex/skills/wiki-connect/SKILL.md +2 -5
- package/README.md +6 -0
- package/README.zh-CN.md +6 -0
- package/chains/_intent-map.json +7 -7
- package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
- package/chains/singles/{memory.json → knowhow.json} +6 -6
- package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
- package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
- package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
- package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
- package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
- package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
- package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
- package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
- package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
- package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
- package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
- package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
- package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
- package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
- package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
- package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
- package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
- package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
- package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
- package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
- package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
- package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
- package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
- package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
- package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
- package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
- package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
- package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
- package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
- package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
- package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
- package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
- package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
- package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
- package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
- package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
- package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
- package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
- package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
- package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +11 -8
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dist/shared/agent-types.d.ts +2 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +11 -8
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +1 -1
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/knowhow.d.ts +10 -0
- package/dist/src/commands/knowhow.d.ts.map +1 -0
- package/dist/src/commands/knowhow.js +217 -0
- package/dist/src/commands/knowhow.js.map +1 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
- package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
- package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/index.js +70 -44
- package/dist/src/commands/overlay-ui/index.js.map +1 -1
- package/dist/src/commands/overlay.d.ts.map +1 -1
- package/dist/src/commands/overlay.js +4 -3
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/core/overlay/applier.d.ts +1 -1
- package/dist/src/core/overlay/applier.d.ts.map +1 -1
- package/dist/src/core/overlay/applier.js +40 -13
- package/dist/src/core/overlay/applier.js.map +1 -1
- package/dist/src/core/overlay/loader.d.ts.map +1 -1
- package/dist/src/core/overlay/loader.js +6 -0
- package/dist/src/core/overlay/loader.js.map +1 -1
- package/dist/src/core/overlay/types.d.ts +5 -1
- package/dist/src/core/overlay/types.d.ts.map +1 -1
- package/dist/src/core/overlay/types.js +1 -1
- package/dist/src/core/overlay/types.js.map +1 -1
- package/dist/src/hooks/context-monitor.js +1 -1
- package/dist/src/hooks/context-monitor.js.map +1 -1
- package/dist/src/hooks/skill-context.js +1 -1
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
- package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.js +73 -4
- package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
- package/dist/src/tools/index.js +2 -2
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/store-knowhow.d.ts +21 -0
- package/dist/src/tools/store-knowhow.d.ts.map +1 -0
- package/dist/src/tools/store-knowhow.js +295 -0
- package/dist/src/tools/store-knowhow.js.map +1 -0
- package/package.json +1 -1
- package/shared/agent-types.ts +2 -0
- package/templates/workflows/specs/node-catalog.md +170 -0
- package/templates/workflows/specs/template-schema.md +157 -0
- package/workflows/analyze.md +61 -185
- package/workflows/brainstorm.md +3 -23
- package/workflows/codebase-rebuild.md +79 -191
- package/workflows/codebase-refresh.md +26 -124
- package/workflows/debug.md +21 -141
- package/workflows/execute.md +183 -350
- package/workflows/fork.md +72 -230
- package/workflows/harvest.md +12 -79
- package/workflows/init.md +3 -17
- package/workflows/integration-test.md +21 -190
- package/workflows/issue-analyze.md +35 -153
- package/workflows/issue-discover.md +88 -263
- package/workflows/issue-execute.md +29 -208
- package/workflows/issue-plan.md +33 -154
- package/workflows/issue.md +44 -202
- package/workflows/knowhow.md +374 -0
- package/workflows/learn.md +30 -177
- package/workflows/maestro-coordinate.codex.md +77 -362
- package/workflows/maestro-link-coordinate.md +12 -61
- package/workflows/maestro.codex.md +124 -457
- package/workflows/maestro.md +562 -976
- package/workflows/map.md +16 -53
- package/workflows/merge.md +42 -197
- package/workflows/milestone-audit.md +5 -43
- package/workflows/milestone-complete.md +11 -60
- package/workflows/plan.md +176 -387
- package/workflows/quick.md +25 -174
- package/workflows/refactor.md +28 -221
- package/workflows/retrospective.md +104 -443
- package/workflows/review.md +87 -299
- package/workflows/roadmap.md +117 -97
- package/workflows/spec-generate.md +22 -118
- package/workflows/specs-add.md +5 -25
- package/workflows/specs-load.md +1 -5
- package/workflows/specs-remove.md +0 -11
- package/workflows/specs-setup.md +11 -47
- package/workflows/status.md +58 -200
- package/workflows/sync.md +28 -141
- package/workflows/test-gen.md +23 -100
- package/workflows/test.md +15 -125
- package/workflows/ui-design.md +139 -465
- package/workflows/ui-style.md +36 -228
- package/workflows/verify.md +52 -273
- package/workflows/wiki-connect.md +9 -46
- package/workflows/wiki-digest.md +7 -50
- package/workflows/wiki-manage.md +11 -108
- package/.claude/commands/maestro-coordinate.md +0 -63
- package/.claude/commands/manage-memory-capture.md +0 -59
- package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
- package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
- package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
- package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
- package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
- package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
- package/workflows/maestro-coordinate.md +0 -582
- 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 |
|
package/workflows/learn.md
CHANGED
|
@@ -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
|
|
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.
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
+
else → capture 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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
132
|
+
### Step 2.7: Confirmation banner
|
|
184
133
|
|
|
185
|
-
|
|
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-
|
|
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.) |
|