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
|
@@ -40,19 +40,18 @@ This is a **post-execution analysis** workflow. It reads only — until the rout
|
|
|
40
40
|
## Stage 1: parse_input
|
|
41
41
|
|
|
42
42
|
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
5. Validate --compare requires single mode. Else error E003.
|
|
43
|
+
Require .workflow/ exists (E001).
|
|
44
|
+
Parse $ARGUMENTS → first non-flag token as phase/range/"--all", remaining as flags.
|
|
45
|
+
|
|
46
|
+
Build config:
|
|
47
|
+
mode = "scan" | "single" | "range" | "all"
|
|
48
|
+
phases = [] (filled in Stage 2)
|
|
49
|
+
lenses = ["technical","process","quality","decision"]
|
|
50
|
+
route = true (false if --no-route)
|
|
51
|
+
compare_to = null | <phase number>
|
|
52
|
+
auto_yes = false
|
|
53
|
+
|
|
54
|
+
Validate: --lens names must be known (E002), --compare requires single mode (E003).
|
|
56
55
|
```
|
|
57
56
|
|
|
58
57
|
---
|
|
@@ -60,28 +59,13 @@ This is a **post-execution analysis** workflow. It reads only — until the rout
|
|
|
60
59
|
## Stage 2: scan_unreviewed (mode = "scan" or "all")
|
|
61
60
|
|
|
62
61
|
```
|
|
63
|
-
candidates = []
|
|
64
|
-
|
|
65
62
|
Read .workflow/state.json → state
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
IF execArt:
|
|
73
|
-
artifact_dir = ".workflow/" + execArt.path
|
|
74
|
-
has_retro = file exists at "{artifact_dir}/retrospective.json"
|
|
75
|
-
candidates.push({
|
|
76
|
-
number: phaseNum,
|
|
77
|
-
slug: execArt.slug ?? "phase-" + phaseNum,
|
|
78
|
-
title: execArt.title ?? execArt.slug ?? "Phase " + phaseNum,
|
|
79
|
-
completed_at: execArt.completed_at,
|
|
80
|
-
has_retro: has_retro,
|
|
81
|
-
phase_dir: artifact_dir,
|
|
82
|
-
gaps: 0,
|
|
83
|
-
review_verdict: "—"
|
|
84
|
-
})
|
|
63
|
+
|
|
64
|
+
candidates = all completed execute artifacts from state.artifacts, each mapped to:
|
|
65
|
+
{ number, slug, title, completed_at, has_retro, phase_dir, gaps: 0, review_verdict: "—" }
|
|
66
|
+
|
|
67
|
+
where phase_dir = ".workflow/" + artifact.path
|
|
68
|
+
has_retro = exists "{phase_dir}/retrospective.json"
|
|
85
69
|
```
|
|
86
70
|
|
|
87
71
|
### Display backlog
|
|
@@ -111,10 +95,7 @@ FOR each phaseNum in phaseNums:
|
|
|
111
95
|
|
|
112
96
|
If overwriting existing retrospective.json:
|
|
113
97
|
```
|
|
114
|
-
|
|
115
|
-
TIMESTAMP = format(now(), "YYYY-MM-DDTHH-mm-ss")
|
|
116
|
-
mv "{candidate.phase_dir}/retrospective.json" "{candidate.phase_dir}/.history/retrospective-{TIMESTAMP}.json"
|
|
117
|
-
mv "{candidate.phase_dir}/retrospective.md" "{candidate.phase_dir}/.history/retrospective-{TIMESTAMP}.md"
|
|
98
|
+
Archive existing retrospective.{json,md} to "{candidate.phase_dir}/.history/retrospective-{YYYY-MM-DDTHH-mm-ss}.{ext}"
|
|
118
99
|
```
|
|
119
100
|
|
|
120
101
|
---
|
|
@@ -124,65 +105,43 @@ mv "{candidate.phase_dir}/retrospective.md" "{candidate.phase_dir}/.history/re
|
|
|
124
105
|
For each selected phase (using `candidate.phase_dir` resolved in Stage 2), build the in-memory artifacts bundle:
|
|
125
106
|
|
|
126
107
|
```
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
artifacts = {
|
|
130
|
-
phase_num: NN,
|
|
131
|
-
phase_slug: slug,
|
|
132
|
-
artifact_dir: artifact_dir,
|
|
133
|
-
index: read "{artifact_dir}/index.json" or null,
|
|
134
|
-
state: read .workflow/state.json,
|
|
135
|
-
plan: read "{artifact_dir}/plan.json" or null,
|
|
136
|
-
verification: read "{artifact_dir}/verification.json" or null,
|
|
137
|
-
review: read "{artifact_dir}/review.json" or null,
|
|
138
|
-
uat: read "{artifact_dir}/uat.md" or null,
|
|
139
|
-
task_summaries: read all "{artifact_dir}/.summaries/TASK-*-summary.md",
|
|
140
|
-
task_jsons: read all "{artifact_dir}/.task/TASK-*.json",
|
|
141
|
-
phase_issues: filter ".workflow/issues/issues.jsonl" + ".workflow/issues/issue-history.jsonl"
|
|
142
|
-
where issue.phase_ref == phase_slug or issue.phase_ref == NN,
|
|
143
|
-
prior_retro: null
|
|
144
|
-
}
|
|
108
|
+
artifact_dir = candidate.phase_dir (resolved from artifact registry)
|
|
145
109
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
110
|
+
Load artifacts bundle from artifact_dir:
|
|
111
|
+
index ← {artifact_dir}/index.json
|
|
112
|
+
state ← .workflow/state.json
|
|
113
|
+
plan ← {artifact_dir}/plan.json
|
|
114
|
+
verification ← {artifact_dir}/verification.json
|
|
115
|
+
review ← {artifact_dir}/review.json
|
|
116
|
+
uat ← {artifact_dir}/uat.md
|
|
117
|
+
task_summaries ← {artifact_dir}/.summaries/TASK-*-summary.md
|
|
118
|
+
task_jsons ← {artifact_dir}/.task/TASK-*.json
|
|
119
|
+
phase_issues ← .workflow/issues/{issues,issue-history}.jsonl filtered by phase_ref == slug|NN
|
|
120
|
+
prior_retro ← if --compare M: load phase M's retrospective.json via artifact registry
|
|
152
121
|
```
|
|
153
122
|
|
|
154
123
|
### Compute base metrics
|
|
155
124
|
|
|
156
125
|
```
|
|
157
126
|
metrics = {
|
|
158
|
-
tasks_planned
|
|
159
|
-
tasks_completed
|
|
160
|
-
tasks_deferred
|
|
161
|
-
gaps_found
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
review_level: review?.level or null,
|
|
171
|
-
uat_blockers: count blockers parsed from uat.md or 0
|
|
127
|
+
tasks_planned ← plan.tasks.length or task_jsons.length
|
|
128
|
+
tasks_completed ← task_jsons where status=="completed"
|
|
129
|
+
tasks_deferred ← state.accumulated_context.deferred for this phase
|
|
130
|
+
gaps_found / closed ← verification.gaps (total vs status=="closed")
|
|
131
|
+
antipatterns ← verification.antipatterns count
|
|
132
|
+
constraint_violations ← verification.constraint_violations count
|
|
133
|
+
issues_opened ← phase_issues where source in [verification,review,antipattern,discovery]
|
|
134
|
+
issues_closed ← phase_issues where status in [completed,failed]
|
|
135
|
+
rework_iterations ← count .history/verification-*.json
|
|
136
|
+
severity_distribution ← review.severity_distribution or {critical:0,high:0,medium:0,low:0,total:0}
|
|
137
|
+
review_verdict/level ← review.verdict or "not_run", review.level
|
|
138
|
+
uat_blockers ← count blockers from uat.md
|
|
172
139
|
}
|
|
173
140
|
```
|
|
174
141
|
|
|
175
|
-
If `--compare M` is set,
|
|
142
|
+
If `--compare M` is set, compute delta (current minus prior_retro) for:
|
|
176
143
|
```
|
|
177
|
-
delta = {
|
|
178
|
-
vs_phase: M,
|
|
179
|
-
tasks_completed: metrics.tasks_completed - prior_retro.metrics.tasks_completed,
|
|
180
|
-
gaps_found: metrics.gaps_found - prior_retro.metrics.gaps_found,
|
|
181
|
-
issues_opened: metrics.issues_opened - prior_retro.metrics.issues_opened,
|
|
182
|
-
rework_iterations: metrics.rework_iterations - prior_retro.metrics.rework_iterations,
|
|
183
|
-
severity_critical: metrics.severity_distribution.critical - prior_retro.metrics.severity_distribution.critical,
|
|
184
|
-
severity_high: metrics.severity_distribution.high - prior_retro.metrics.severity_distribution.high
|
|
185
|
-
}
|
|
144
|
+
delta = { vs_phase, tasks_completed, gaps_found, issues_opened, rework_iterations, severity_critical, severity_high }
|
|
186
145
|
```
|
|
187
146
|
|
|
188
147
|
---
|
|
@@ -287,19 +246,11 @@ Return ONLY a single JSON object, no prose, matching this schema:
|
|
|
287
246
|
**decision**:
|
|
288
247
|
> Reconstruct the key decisions made during the phase, their stated rationale, and the alternatives rejected. Where did mid-phase pivots happen and why? What constraints surfaced late? Watch for: decisions made without recorded rationale, late pivots that suggest weak upfront framing.
|
|
289
248
|
|
|
290
|
-
### Spawn pattern
|
|
249
|
+
### Spawn pattern
|
|
291
250
|
|
|
292
|
-
|
|
293
|
-
For each lens in lenses:
|
|
294
|
-
Agent({
|
|
295
|
-
subagent_type: "general-purpose",
|
|
296
|
-
description: "Retrospective: {lens} lens for phase {NN}",
|
|
297
|
-
prompt: <rendered lens prompt template>,
|
|
298
|
-
run_in_background: false
|
|
299
|
-
})
|
|
300
|
-
```
|
|
251
|
+
Spawn all active lenses in parallel as `general-purpose` Agents (run_in_background: false), each receiving the rendered lens prompt template.
|
|
301
252
|
|
|
302
|
-
Collect
|
|
253
|
+
Collect results into `lens_results = { technical, process, quality, decision }`. If any lens fails, log W001 and proceed with successful lenses.
|
|
303
254
|
|
|
304
255
|
---
|
|
305
256
|
|
|
@@ -309,141 +260,23 @@ Merge lens results into the canonical retrospective record.
|
|
|
309
260
|
|
|
310
261
|
### Generate insight IDs
|
|
311
262
|
|
|
312
|
-
|
|
263
|
+
Assign `INS-{8 lowercase hex}` per insight using stable hash of `phase_num + lens + title` (idempotent across re-runs).
|
|
313
264
|
|
|
314
265
|
### Build retrospective.json
|
|
315
266
|
|
|
316
|
-
|
|
317
|
-
retrospective = {
|
|
318
|
-
phase: NN,
|
|
319
|
-
phase_slug: slug,
|
|
320
|
-
phase_title: index.title,
|
|
321
|
-
retrospected_at: now() ISO 8601 UTC,
|
|
322
|
-
lenses_run: [...lens names that returned],
|
|
323
|
-
metrics: <from Stage 3>,
|
|
324
|
-
delta: <from Stage 3 if --compare set, else null>,
|
|
325
|
-
findings_by_lens: {
|
|
326
|
-
technical: { wins, challenges, watch_patterns },
|
|
327
|
-
process: { wins, challenges, watch_patterns },
|
|
328
|
-
quality: { wins, challenges, watch_patterns },
|
|
329
|
-
decision: { wins, challenges, watch_patterns }
|
|
330
|
-
},
|
|
331
|
-
distilled_insights: [
|
|
332
|
-
{
|
|
333
|
-
id: "INS-a1b2c3d4",
|
|
334
|
-
lens: "technical",
|
|
335
|
-
category: "pattern",
|
|
336
|
-
title: "...",
|
|
337
|
-
summary: "...",
|
|
338
|
-
confidence: "high",
|
|
339
|
-
evidence_refs: [...],
|
|
340
|
-
tags: [...],
|
|
341
|
-
routed_to: "spec",
|
|
342
|
-
routed_id: null // filled in Stage 6
|
|
343
|
-
},
|
|
344
|
-
...
|
|
345
|
-
],
|
|
346
|
-
routing_recommendations: [
|
|
347
|
-
{ insight_id: "INS-a1b2c3d4", target: "spec", rationale: "..." },
|
|
348
|
-
{ insight_id: "INS-...", target: "issue", rationale: "..." },
|
|
349
|
-
{ insight_id: "INS-...", target: "note", rationale: "..." }
|
|
350
|
-
],
|
|
351
|
-
tweetable: "Phase {NN} ({title}): {N} tasks shipped, {gaps} gaps closed, verdict {verdict}. {top_insight_title}"
|
|
352
|
-
}
|
|
353
|
-
```
|
|
267
|
+
Assemble the canonical record with structure: `{ phase, phase_slug, phase_title, retrospected_at, lenses_run, metrics, delta, findings_by_lens, distilled_insights, routing_recommendations, tweetable }`. See full schema in [Schemas](#retrospectivejson) section. Each insight's `routed_id` is null here (populated in Stage 6).
|
|
354
268
|
|
|
355
269
|
### Build retrospective.md (human-readable)
|
|
356
270
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
**
|
|
363
|
-
**
|
|
364
|
-
**Lenses**: {lenses_run joined by ", "}
|
|
365
|
-
|
|
366
|
-
## Metrics
|
|
367
|
-
|
|
368
|
-
| Metric | Value |
|
|
369
|
-
|--------|-------|
|
|
370
|
-
| Tasks planned / completed / deferred | {planned} / {completed} / {deferred} |
|
|
371
|
-
| Gaps found / closed | {gaps_found} / {gaps_closed} |
|
|
372
|
-
| Issues opened / closed | {issues_opened} / {issues_closed} |
|
|
373
|
-
| Antipatterns | {antipatterns} |
|
|
374
|
-
| Constraint violations | {constraint_violations} |
|
|
375
|
-
| Rework iterations | {rework_iterations} |
|
|
376
|
-
| Review verdict | {review_verdict} ({review_level}) |
|
|
377
|
-
| Severity (C/H/M/L) | {critical}/{high}/{medium}/{low} |
|
|
378
|
-
| UAT blockers | {uat_blockers} |
|
|
379
|
-
|
|
380
|
-
{IF delta:
|
|
381
|
-
## Delta vs Phase {compare_to}
|
|
382
|
-
|
|
383
|
-
| Metric | Delta |
|
|
384
|
-
|--------|-------|
|
|
385
|
-
| Tasks completed | {±N} |
|
|
386
|
-
| Gaps found | {±N} |
|
|
387
|
-
| Issues opened | {±N} |
|
|
388
|
-
| Rework iterations | {±N} |
|
|
389
|
-
| Critical findings | {±N} |
|
|
390
|
-
| High findings | {±N} |
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
## Findings by Lens
|
|
394
|
-
|
|
395
|
-
{FOR each lens in [technical, process, quality, decision]:}
|
|
396
|
-
### {Lens title}
|
|
397
|
-
|
|
398
|
-
**Wins**
|
|
399
|
-
1. {win.title} — {evidence_refs joined by ", "}
|
|
400
|
-
2. ...
|
|
401
|
-
3. ...
|
|
402
|
-
|
|
403
|
-
**Challenges**
|
|
404
|
-
1. {challenge.title} — {evidence_refs}
|
|
405
|
-
2. ...
|
|
406
|
-
3. ...
|
|
407
|
-
|
|
408
|
-
**Watch patterns**
|
|
409
|
-
1. {watch.title} — {evidence_refs}
|
|
410
|
-
2. ...
|
|
411
|
-
3. ...
|
|
412
|
-
|
|
413
|
-
{END FOR}
|
|
414
|
-
|
|
415
|
-
## Distilled Insights
|
|
416
|
-
|
|
417
|
-
{FOR each insight in distilled_insights:}
|
|
418
|
-
### {INS-id}: {title}
|
|
419
|
-
|
|
420
|
-
- **Category**: {category}
|
|
421
|
-
- **Lens**: {lens}
|
|
422
|
-
- **Confidence**: {confidence}
|
|
423
|
-
- **Tags**: {tags}
|
|
424
|
-
- **Routed to**: {routed_to} ({routed_id or "pending"})
|
|
425
|
-
|
|
426
|
-
{summary}
|
|
271
|
+
Render a markdown report with these sections:
|
|
272
|
+
1. **Header**: tweetable quote, phase metadata, lenses run
|
|
273
|
+
2. **Metrics table**: all metrics fields from Stage 3
|
|
274
|
+
3. **Delta table** (if --compare): ± values for key metrics
|
|
275
|
+
4. **Findings by Lens**: for each lens → numbered wins, challenges, watch_patterns with evidence_refs
|
|
276
|
+
5. **Distilled Insights**: per insight → category, lens, confidence, tags, routed_to, summary, evidence refs
|
|
277
|
+
6. **Routing Recommendations table**: insight_id | target | rationale
|
|
427
278
|
|
|
428
|
-
|
|
429
|
-
{FOR ref in evidence_refs:} - `{ref}`{END FOR}
|
|
430
|
-
|
|
431
|
-
{END FOR}
|
|
432
|
-
|
|
433
|
-
## Routing Recommendations
|
|
434
|
-
|
|
435
|
-
| Insight | Target | Rationale |
|
|
436
|
-
|---------|--------|-----------|
|
|
437
|
-
| {INS-id} | spec | ... |
|
|
438
|
-
| {INS-id} | issue | ... |
|
|
439
|
-
| {INS-id} | note | ... |
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
Write both files (phase_dir already resolved in Stage 2):
|
|
443
|
-
```
|
|
444
|
-
Write "{artifact_dir}/retrospective.json"
|
|
445
|
-
Write "{artifact_dir}/retrospective.md"
|
|
446
|
-
```
|
|
279
|
+
Write both `{artifact_dir}/retrospective.json` and `{artifact_dir}/retrospective.md`.
|
|
447
280
|
|
|
448
281
|
---
|
|
449
282
|
|
|
@@ -477,34 +310,18 @@ Route spec-routed insights as `<spec-entry>` entries into the appropriate catego
|
|
|
477
310
|
- quality-related → `quality`
|
|
478
311
|
|
|
479
312
|
```
|
|
480
|
-
category
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
Append to .workflow/specs/{target_file}:
|
|
486
|
-
<spec-entry category="{category}" keywords="{keywords}" date="{YYYY-MM-DD}" source="retrospective">
|
|
313
|
+
Map insight type → category → target file:
|
|
314
|
+
pattern/convention → coding → coding-conventions.md
|
|
315
|
+
adr-candidate/architecture → arch → arch-decisions.md
|
|
316
|
+
quality-related → quality → quality-conventions.md
|
|
487
317
|
|
|
488
|
-
|
|
318
|
+
Append <spec-entry> to .workflow/specs/{target_file} with:
|
|
319
|
+
category, keywords (3-5 extracted from title+summary), date, source="retrospective"
|
|
320
|
+
Body: insight title, summary, evidence refs, phase/lens/INS_id/confidence metadata
|
|
489
321
|
|
|
490
|
-
|
|
322
|
+
Create target file with category frontmatter if it does not exist.
|
|
491
323
|
|
|
492
|
-
|
|
493
|
-
**Phase:** {NN} ({phase_slug}) | **Lens:** {lens} | **Insight:** {INS_id} | **Confidence:** {insight.confidence}
|
|
494
|
-
|
|
495
|
-
</spec-entry>
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
If the target file does not exist, create it with category frontmatter first (same as `spec-add` on-demand creation).
|
|
499
|
-
|
|
500
|
-
## Routing trail
|
|
501
|
-
|
|
502
|
-
- Phase: {NN}-{phase_slug}
|
|
503
|
-
- Lens: {lens}
|
|
504
|
-
- Insight: {INS_id}
|
|
505
|
-
- Confidence: {confidence}
|
|
506
|
-
|
|
507
|
-
insight.routed_id = "{category_file}#INS-{INS_id}" # e.g., coding-conventions.md#INS-a1b2c3d4
|
|
324
|
+
insight.routed_id = "{category_file}#INS-{INS_id}"
|
|
508
325
|
```
|
|
509
326
|
|
|
510
327
|
#### Target: note
|
|
@@ -512,88 +329,37 @@ insight.routed_id = "{category_file}#INS-{INS_id}" # e.g., coding-conventions.m
|
|
|
512
329
|
Reuse the existing `manage-learn` skill in tip mode — do not duplicate the learning pipeline.
|
|
513
330
|
|
|
514
331
|
```
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
Skill({
|
|
519
|
-
skill: "manage-learn",
|
|
520
|
-
args: "tip \"{note_text}\" --tag " + tags.join(",")
|
|
521
|
-
})
|
|
332
|
+
Invoke manage-learn tip with:
|
|
333
|
+
text = "[Retro phase {NN} / {lens}] {insight.title}: {insight.summary}"
|
|
334
|
+
tags = insight.tags + ["retrospective", "phase-{NN}", insight.lens]
|
|
522
335
|
|
|
523
|
-
Capture the returned TIP-{id} from the skill output.
|
|
524
336
|
insight.routed_id = "TIP-{captured_id}"
|
|
525
337
|
```
|
|
526
338
|
|
|
527
|
-
|
|
339
|
+
Fallback: if skill ID cannot be captured, write tip file directly per `workflows/knowhow.md` Part B Step 3 and update `wiki-index.json` per Step 4.
|
|
528
340
|
|
|
529
341
|
#### Target: issue
|
|
530
342
|
|
|
531
343
|
Append a new entry to `.workflow/issues/issues.jsonl` matching the canonical schema from `workflows/issue.md` Step 4.
|
|
532
344
|
|
|
533
345
|
```
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
"
|
|
548
|
-
|
|
549
|
-
"pattern" → "low"
|
|
550
|
-
"decision" → "low"
|
|
551
|
-
"tool" → "low"
|
|
552
|
-
"technique" → "low"
|
|
553
|
-
default → "medium"
|
|
554
|
-
|
|
555
|
-
priority = match severity:
|
|
556
|
-
critical → 1
|
|
557
|
-
high → 2
|
|
558
|
-
medium → 3
|
|
559
|
-
low → 4
|
|
560
|
-
|
|
561
|
-
issue = {
|
|
562
|
-
id: issue_id,
|
|
563
|
-
title: "[Retro] {insight.title}" (truncated to 100 chars),
|
|
564
|
-
status: "open",
|
|
565
|
-
priority: priority,
|
|
566
|
-
severity: severity,
|
|
567
|
-
source: "retrospective",
|
|
568
|
-
phase_ref: phase_slug,
|
|
569
|
-
gap_ref: insight.id,
|
|
570
|
-
description: insight.summary,
|
|
571
|
-
fix_direction: "Surfaced by phase {NN} retrospective ({lens} lens). " +
|
|
572
|
-
"Review evidence refs and determine fix scope.",
|
|
573
|
-
context: {
|
|
574
|
-
location: insight.evidence_refs[0] or "",
|
|
575
|
-
suggested_fix: "",
|
|
576
|
-
notes: "Confidence: " + insight.confidence
|
|
577
|
-
},
|
|
578
|
-
tags: insight.tags + ["retrospective", "phase-" + NN, insight.lens],
|
|
579
|
-
affected_components: [],
|
|
580
|
-
feedback: [],
|
|
581
|
-
issue_history: [
|
|
582
|
-
{
|
|
583
|
-
timestamp: now ISO,
|
|
584
|
-
from_status: null,
|
|
585
|
-
to_status: "open",
|
|
586
|
-
actor: "retrospective",
|
|
587
|
-
note: "Auto-created from phase " + NN + " retrospective insight " + insight.id
|
|
588
|
-
}
|
|
589
|
-
],
|
|
590
|
-
created_at: now ISO,
|
|
591
|
-
updated_at: now ISO,
|
|
592
|
-
resolved_at: null,
|
|
593
|
-
resolution: null
|
|
594
|
-
}
|
|
346
|
+
Ensure .workflow/issues/issues.jsonl exists.
|
|
347
|
+
|
|
348
|
+
Generate issue_id = "ISS-{YYYYMMDD}-{NNN}" (next sequence from issues.jsonl + issue-history.jsonl).
|
|
349
|
+
|
|
350
|
+
Map insight.category → severity:
|
|
351
|
+
antipattern→high, gotcha→medium, pattern/decision/tool/technique→low, default→medium
|
|
352
|
+
Map severity → priority: critical→1, high→2, medium→3, low→4
|
|
353
|
+
|
|
354
|
+
Create issue per canonical schema (workflows/issue.md Step 4):
|
|
355
|
+
title: "[Retro] {insight.title}" (max 100 chars)
|
|
356
|
+
source: "retrospective", phase_ref: phase_slug, gap_ref: insight.id
|
|
357
|
+
description: insight.summary
|
|
358
|
+
fix_direction: "Surfaced by phase {NN} retrospective ({lens} lens). Review evidence refs."
|
|
359
|
+
tags: insight.tags + ["retrospective", "phase-{NN}", insight.lens]
|
|
360
|
+
Initial issue_history entry with actor="retrospective"
|
|
595
361
|
|
|
596
|
-
Append
|
|
362
|
+
Append to .workflow/issues/issues.jsonl
|
|
597
363
|
insight.routed_id = issue_id
|
|
598
364
|
```
|
|
599
365
|
|
|
@@ -610,84 +376,32 @@ Append every distilled insight (regardless of routing target, including `routed_
|
|
|
610
376
|
### Bootstrap
|
|
611
377
|
|
|
612
378
|
```
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
INDEX_FILE = ".workflow/learning/learning-index.json"
|
|
617
|
-
IF NOT exists INDEX_FILE:
|
|
618
|
-
Write '{"entries":[],"_metadata":{"created":"' + now ISO + '","version":"1.0"}}'
|
|
379
|
+
Ensure .workflow/learning/lessons.jsonl and learning-index.json exist.
|
|
380
|
+
Initialize learning-index.json with {"entries":[],"_metadata":{"created":"...","version":"1.0"}} if new.
|
|
619
381
|
```
|
|
620
382
|
|
|
621
383
|
### Append rows
|
|
622
384
|
|
|
623
|
-
For each insight in `distilled_insights
|
|
624
|
-
|
|
625
|
-
```
|
|
626
|
-
row = {
|
|
627
|
-
id: insight.id,
|
|
628
|
-
phase: NN,
|
|
629
|
-
phase_slug: phase_slug,
|
|
630
|
-
lens: insight.lens,
|
|
631
|
-
category: insight.category,
|
|
632
|
-
title: insight.title,
|
|
633
|
-
summary: insight.summary,
|
|
634
|
-
confidence: insight.confidence,
|
|
635
|
-
tags: insight.tags,
|
|
636
|
-
evidence_refs: insight.evidence_refs,
|
|
637
|
-
routed_to: insight.routed_to,
|
|
638
|
-
routed_id: insight.routed_id,
|
|
639
|
-
source: "retrospective",
|
|
640
|
-
captured_at: now ISO
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
Append serialized JSON line to .workflow/learning/lessons.jsonl
|
|
644
|
-
```
|
|
385
|
+
For each insight in `distilled_insights`, append a JSON line to `.workflow/learning/lessons.jsonl` with fields:
|
|
386
|
+
`{ id, phase, phase_slug, lens, category, title, summary, confidence, tags, evidence_refs, routed_to, routed_id, source: "retrospective", captured_at }`
|
|
645
387
|
|
|
646
388
|
### Update index
|
|
647
389
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
For each new insight:
|
|
651
|
-
Append to entries[]:
|
|
652
|
-
{
|
|
653
|
-
id: insight.id,
|
|
654
|
-
type: "insight",
|
|
655
|
-
timestamp: now ISO,
|
|
656
|
-
file: "lessons.jsonl",
|
|
657
|
-
summary: insight.title (truncated to 80 chars),
|
|
658
|
-
tags: insight.tags,
|
|
659
|
-
lens: insight.lens,
|
|
660
|
-
category: insight.category,
|
|
661
|
-
phase: NN,
|
|
662
|
-
phase_slug: phase_slug,
|
|
663
|
-
confidence: insight.confidence,
|
|
664
|
-
routed_to: insight.routed_to,
|
|
665
|
-
routed_id: insight.routed_id
|
|
666
|
-
}
|
|
667
|
-
Write .workflow/learning/learning-index.json
|
|
668
|
-
```
|
|
390
|
+
Append an entry to `.workflow/learning/learning-index.json` entries[] for each new insight:
|
|
391
|
+
`{ id, type: "insight", timestamp, file: "lessons.jsonl", summary (80 chars), tags, lens, category, phase, phase_slug, confidence, routed_to, routed_id }`
|
|
669
392
|
|
|
670
393
|
### Backward-compat append to specs/learnings.md
|
|
671
394
|
|
|
672
395
|
Append learnings to `.workflow/specs/learnings.md` (shared with milestone-complete's learning extraction) using `<spec-entry>` closed-tag format:
|
|
673
396
|
|
|
674
397
|
```
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
Append:
|
|
679
|
-
<spec-entry category="learning" keywords="{keywords}" date="{YYYY-MM-DD}" source="retrospective">
|
|
680
|
-
|
|
681
|
-
### {title}
|
|
398
|
+
Append each insight to .workflow/specs/learnings.md as <spec-entry> with:
|
|
399
|
+
category="learning", keywords (3-5 extracted), date, source="retrospective"
|
|
400
|
+
Body: title, summary, phase/lens/INS_id metadata
|
|
682
401
|
|
|
683
|
-
|
|
684
|
-
Phase: {NN} | Lens: {lens} | Insight: {INS_id}
|
|
685
|
-
|
|
686
|
-
</spec-entry>
|
|
402
|
+
Create file with category frontmatter + "## Entries" header if it does not exist.
|
|
687
403
|
```
|
|
688
404
|
|
|
689
|
-
If the file does not exist, create it with category frontmatter and a `## Entries` header.
|
|
690
|
-
|
|
691
405
|
---
|
|
692
406
|
|
|
693
407
|
## Stage 8: next_step
|
|
@@ -695,38 +409,16 @@ If the file does not exist, create it with category frontmatter and a `## Entrie
|
|
|
695
409
|
Print confirmation banner and route the user.
|
|
696
410
|
|
|
697
411
|
```
|
|
698
|
-
|
|
699
|
-
Phase: {NN} ({phase_slug})
|
|
700
|
-
Lenses run: {lenses joined by ", "}
|
|
701
|
-
Insights: {count}
|
|
702
|
-
|
|
703
|
-
Routing summary:
|
|
704
|
-
Spec entries: {N} → .workflow/specs/{category-file}.md
|
|
705
|
-
Notes saved: {N} → .workflow/memory/TIP-*
|
|
706
|
-
Issues opened: {N} → .workflow/issues/issues.jsonl
|
|
707
|
-
Lessons logged: {N} → .workflow/learning/lessons.jsonl
|
|
708
|
-
|
|
709
|
-
Files:
|
|
710
|
-
{artifact_dir}/retrospective.md
|
|
711
|
-
{artifact_dir}/retrospective.json
|
|
412
|
+
Print banner: phase, lenses run, insight count, routing summary (spec/note/issue/lesson counts with target paths), output file paths.
|
|
712
413
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
414
|
+
Suggested next steps:
|
|
415
|
+
manage-status — Review project state
|
|
416
|
+
manage-issue list --source retrospective — Triage created issues
|
|
417
|
+
manage-learn list — Browse the lessons library
|
|
418
|
+
maestro-milestone-audit — Audit milestone if all phases done
|
|
718
419
|
```
|
|
719
420
|
|
|
720
|
-
If `mode == "range"` or `--all`, loop Stages 3
|
|
721
|
-
|
|
722
|
-
```
|
|
723
|
-
=== RETROSPECTIVE BATCH COMPLETE ===
|
|
724
|
-
Phases retrospected: {count}
|
|
725
|
-
Total insights: {sum}
|
|
726
|
-
Total specs: {sum}
|
|
727
|
-
Total notes: {sum}
|
|
728
|
-
Total issues: {sum}
|
|
729
|
-
```
|
|
421
|
+
If `mode == "range"` or `--all`, loop Stages 3-8 per phase, then print aggregate batch summary (phases retrospected, total insights/specs/notes/issues).
|
|
730
422
|
|
|
731
423
|
---
|
|
732
424
|
|
|
@@ -828,34 +520,3 @@ One JSON object per line:
|
|
|
828
520
|
}
|
|
829
521
|
```
|
|
830
522
|
|
|
831
|
-
---
|
|
832
|
-
|
|
833
|
-
## Error Codes
|
|
834
|
-
|
|
835
|
-
| Code | Severity | Description |
|
|
836
|
-
|------|----------|-------------|
|
|
837
|
-
| E001 | error | `.workflow/` not initialized — run `Skill({ skill: "maestro-init" })` first |
|
|
838
|
-
| E002 | error | Unknown `--lens` name (must be one of: technical, process, quality, decision) |
|
|
839
|
-
| E003 | error | `--compare` requires a single phase argument |
|
|
840
|
-
| E004 | error | Phase argument resolves to a phase that has not executed yet (no `.task/` or `.summaries/`) |
|
|
841
|
-
| E005 | error | Phase argument out of range / phase directory not found |
|
|
842
|
-
| W001 | warning | One or more lens agents failed — proceeding with partial lens coverage |
|
|
843
|
-
| W002 | warning | Existing retrospective.json found and not `--all`/`--force` — prompted user to overwrite |
|
|
844
|
-
| W003 | warning | `manage-memory-capture` skill returned without parseable TIP id; fell back to direct write |
|
|
845
|
-
| W004 | warning | `--compare` target phase has no retrospective.json; delta omitted |
|
|
846
|
-
|
|
847
|
-
---
|
|
848
|
-
|
|
849
|
-
## Success Criteria
|
|
850
|
-
|
|
851
|
-
- [ ] `.workflow/` exists and target phase resolved
|
|
852
|
-
- [ ] All requested lenses returned valid JSON (or partial-coverage warning W001 logged)
|
|
853
|
-
- [ ] `retrospective.json` written with metrics, findings_by_lens, distilled_insights
|
|
854
|
-
- [ ] `retrospective.md` written and human-readable
|
|
855
|
-
- [ ] Each insight has stable `INS-{8hex}` id
|
|
856
|
-
- [ ] Routing executed (unless `--no-route`): every recommendation either created an artifact or was explicitly skipped by user
|
|
857
|
-
- [ ] `lessons.jsonl` appended with one row per insight
|
|
858
|
-
- [ ] `learning-index.json` updated
|
|
859
|
-
- [ ] Issue rows match the canonical issues.jsonl schema (verifiable with `jq`)
|
|
860
|
-
- [ ] No existing phase artifacts modified (verification.json, review.json, plan.json, etc. untouched)
|
|
861
|
-
- [ ] Confirmation banner printed with routing counts and next-step suggestions
|