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
package/workflows/maestro.md
CHANGED
|
@@ -1,976 +1,562 @@
|
|
|
1
|
-
# Workflow: maestro
|
|
2
|
-
|
|
3
|
-
Intelligent coordinator that routes user intent to optimal command chain based on project state.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
|
134
|
-
|
|
135
|
-
| `
|
|
136
|
-
| `
|
|
137
|
-
| `
|
|
138
|
-
| `
|
|
139
|
-
| `
|
|
140
|
-
| `
|
|
141
|
-
| `
|
|
142
|
-
| `
|
|
143
|
-
| `
|
|
144
|
-
| `
|
|
145
|
-
| `
|
|
146
|
-
| `
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
//
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
{ cmd: 'maestro-spec-generate', args: '"{description}"' },
|
|
564
|
-
{ cmd: 'maestro-plan', args: '{phase}' },
|
|
565
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
566
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
567
|
-
],
|
|
568
|
-
'roadmap-driven': [
|
|
569
|
-
{ cmd: 'maestro-init' },
|
|
570
|
-
{ cmd: 'maestro-roadmap', args: '"{description}"' },
|
|
571
|
-
{ cmd: 'maestro-plan', args: '{phase}' },
|
|
572
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
573
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
574
|
-
],
|
|
575
|
-
'brainstorm-driven': [
|
|
576
|
-
{ cmd: 'maestro-brainstorm', args: '"{description}"' },
|
|
577
|
-
{ cmd: 'maestro-plan', args: '{phase}' },
|
|
578
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
579
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
580
|
-
],
|
|
581
|
-
'ui-design-driven': [
|
|
582
|
-
{ cmd: 'maestro-ui-design', args: '{phase}' },
|
|
583
|
-
{ cmd: 'maestro-plan', args: '{phase}' },
|
|
584
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
585
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
586
|
-
],
|
|
587
|
-
'analyze-plan-execute': [
|
|
588
|
-
{ cmd: 'maestro-analyze', args: '"{description}" -q' },
|
|
589
|
-
{ cmd: 'maestro-plan', args: '--dir {scratch_dir}' },
|
|
590
|
-
{ cmd: 'maestro-execute', args: '--dir {scratch_dir}' }
|
|
591
|
-
],
|
|
592
|
-
'execute-verify': [
|
|
593
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
594
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
595
|
-
],
|
|
596
|
-
'quality-loop': [
|
|
597
|
-
{ cmd: 'maestro-verify', args: '{phase}' },
|
|
598
|
-
{ cmd: 'quality-review', args: '{phase}' },
|
|
599
|
-
{ cmd: 'quality-test-gen', args: '{phase}' },
|
|
600
|
-
{ cmd: 'quality-test', args: '{phase}' },
|
|
601
|
-
{ cmd: 'quality-debug', args: '--from-uat {phase}' },
|
|
602
|
-
{ cmd: 'maestro-plan', args: '{phase} --gaps' },
|
|
603
|
-
{ cmd: 'maestro-execute', args: '{phase}' }
|
|
604
|
-
],
|
|
605
|
-
'milestone-close': [
|
|
606
|
-
{ cmd: 'maestro-milestone-audit' },
|
|
607
|
-
{ cmd: 'maestro-milestone-complete' }
|
|
608
|
-
],
|
|
609
|
-
'next-milestone': [
|
|
610
|
-
{ cmd: 'maestro-roadmap', args: '"{description}"' },
|
|
611
|
-
{ cmd: 'maestro-plan', args: '{phase}' },
|
|
612
|
-
{ cmd: 'maestro-execute', args: '{phase}' },
|
|
613
|
-
{ cmd: 'maestro-verify', args: '{phase}' }
|
|
614
|
-
],
|
|
615
|
-
// Issue lifecycle chains (with quality gates)
|
|
616
|
-
'issue-full': [
|
|
617
|
-
{ cmd: 'maestro-analyze', args: '--gaps {issue_id}' },
|
|
618
|
-
{ cmd: 'maestro-plan', args: '--gaps' },
|
|
619
|
-
{ cmd: 'maestro-execute', args: '' },
|
|
620
|
-
{ cmd: 'quality-review', args: '--scope {affected_files}' },
|
|
621
|
-
{ cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }
|
|
622
|
-
],
|
|
623
|
-
'issue-quick': [
|
|
624
|
-
{ cmd: 'maestro-plan', args: '--gaps' },
|
|
625
|
-
{ cmd: 'maestro-execute', args: '' },
|
|
626
|
-
{ cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }
|
|
627
|
-
]
|
|
628
|
-
};
|
|
629
|
-
|
|
630
|
-
// Map task_type → chain (when task_type should use a multi-step chain instead of single-step)
|
|
631
|
-
const taskToChain = {
|
|
632
|
-
'spec_generate': 'spec-driven',
|
|
633
|
-
'brainstorm': 'brainstorm-driven',
|
|
634
|
-
'issue_execute': 'issue-full', // issue execute always gets review gate
|
|
635
|
-
};
|
|
636
|
-
```
|
|
637
|
-
|
|
638
|
-
**For `spec_generate`** → use `spec-driven` chain.
|
|
639
|
-
**For `brainstorm`** → use `brainstorm-driven` chain.
|
|
640
|
-
**All other task_types** → look up directly in `chainMap[task_type]`.
|
|
641
|
-
**`--chain` flag** → use forced chain from `chainMap[forcedChain]`.
|
|
642
|
-
|
|
643
|
-
#### 5b: State validation (W003 check)
|
|
644
|
-
|
|
645
|
-
Cross-validate intent against project state:
|
|
646
|
-
- Intent says `execute` but phase has no plan → warn, prepend `maestro-plan`
|
|
647
|
-
- Intent says `verify` but phase not executed → warn, prepend `maestro-execute`
|
|
648
|
-
- Intent says `test` but phase not verified → warn, prepend `maestro-verify`
|
|
649
|
-
- Intent says `milestone_close` but not all phases executed → warn, suggest completing execution first
|
|
650
|
-
|
|
651
|
-
Display warning but let user override.
|
|
652
|
-
|
|
653
|
-
#### 5c: Resolve phase number and issue ID
|
|
654
|
-
|
|
655
|
-
```javascript
|
|
656
|
-
function resolvePhase(intent_analysis, project_state) {
|
|
657
|
-
// 1. From structured extraction
|
|
658
|
-
if (intent_analysis.phase_ref) return intent_analysis.phase_ref;
|
|
659
|
-
|
|
660
|
-
// 2. Fallback: regex on raw intent text
|
|
661
|
-
const phaseMatch = intent.match(/phase\s*(\d+)|^(\d+)$/);
|
|
662
|
-
if (phaseMatch) return phaseMatch[1] || phaseMatch[2];
|
|
663
|
-
|
|
664
|
-
// 3. From project state — derive from artifacts
|
|
665
|
-
if (project_state.initialized) {
|
|
666
|
-
// Derive current phase: first phase with in_progress execute, or first without completed execute
|
|
667
|
-
const arts = project_state.artifacts ?? [];
|
|
668
|
-
const inProgress = arts.find(a => a.type === 'execute' && a.status === 'in_progress');
|
|
669
|
-
if (inProgress) return inProgress.phase;
|
|
670
|
-
const phases = [...new Set(arts.map(a => a.phase).filter(Boolean))].sort((a,b) => a - b);
|
|
671
|
-
const current = phases.find(p => !arts.some(a => a.phase === p && a.type === 'execute' && a.status === 'completed'));
|
|
672
|
-
if (current) return current;
|
|
673
|
-
return project_state.latest_artifact?.phase ?? null;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
// 4. Scratch mode chains use {scratch_dir} instead of {phase}
|
|
677
|
-
if (chainName === 'analyze-plan-execute') return null;
|
|
678
|
-
|
|
679
|
-
// 5. Chain doesn't need phase (init, status, memory, issue, etc.)
|
|
680
|
-
const noPhaseCommands = ['manage-status', 'manage-issue', 'manage-issue-discover',
|
|
681
|
-
'maestro-init', 'maestro-spec-generate', 'maestro-fork', 'maestro-merge',
|
|
682
|
-
'maestro-roadmap', 'spec-setup', 'manage-memory', 'manage-memory-capture', 'manage-learn',
|
|
683
|
-
'manage-codebase-rebuild', 'manage-codebase-refresh', 'maestro-milestone-audit',
|
|
684
|
-
'maestro-milestone-complete', 'maestro-milestone-audit'];
|
|
685
|
-
if (chain.every(s => noPhaseCommands.includes(s.cmd))) return null;
|
|
686
|
-
|
|
687
|
-
// 6. Ask user
|
|
688
|
-
return askUserForPhase();
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
// Resolve issue ID for issue chains
|
|
692
|
-
function resolveIssueId(intent_analysis) {
|
|
693
|
-
// 1. From structured extraction
|
|
694
|
-
if (intent_analysis.issue_id) return intent_analysis.issue_id;
|
|
695
|
-
|
|
696
|
-
// 2. Fallback: regex on raw intent text
|
|
697
|
-
const issueMatch = intent.match(/ISS-[\w]+-\d+/i);
|
|
698
|
-
if (issueMatch) return issueMatch[0];
|
|
699
|
-
|
|
700
|
-
return null;
|
|
701
|
-
}
|
|
702
|
-
```
|
|
703
|
-
|
|
704
|
-
When executing issue chains (`issue-full`, `issue-quick`), replace `{issue_id}` in step args with the resolved issue ID. If no issue ID is found and the chain requires one, prompt the user.
|
|
705
|
-
|
|
706
|
-
#### 5d: Confirm (skip if autoYes)
|
|
707
|
-
|
|
708
|
-
**If `$DRY_RUN`:**
|
|
709
|
-
Display chain visualization and exit:
|
|
710
|
-
```
|
|
711
|
-
============================================================
|
|
712
|
-
MAESTRO CHAIN: {chain_name} (dry run)
|
|
713
|
-
============================================================
|
|
714
|
-
Intent: {original_intent}
|
|
715
|
-
Phase: {phase} ({phase_title})
|
|
716
|
-
|
|
717
|
-
Pipeline:
|
|
718
|
-
1. [{command}] args: {assembled_args}
|
|
719
|
-
2. [{command}] args: {assembled_args}
|
|
720
|
-
...
|
|
721
|
-
|
|
722
|
-
(Use without --dry-run to execute)
|
|
723
|
-
============================================================
|
|
724
|
-
```
|
|
725
|
-
|
|
726
|
-
**If not autoYes:**
|
|
727
|
-
```
|
|
728
|
-
AskUserQuestion:
|
|
729
|
-
header: "Confirm Chain: {chain_name}"
|
|
730
|
-
question: |
|
|
731
|
-
Execute this {step_count}-step chain?
|
|
732
|
-
|
|
733
|
-
Pipeline:
|
|
734
|
-
1. {command} — {description}
|
|
735
|
-
2. {command} — {description}
|
|
736
|
-
...
|
|
737
|
-
|
|
738
|
-
options:
|
|
739
|
-
- "Execute" → proceed
|
|
740
|
-
- "Execute from step N" → ask step number, set $STEP_INDEX
|
|
741
|
-
- "Cancel" → exit
|
|
742
|
-
```
|
|
743
|
-
|
|
744
|
-
---
|
|
745
|
-
|
|
746
|
-
### Step 6: Setup Tracking
|
|
747
|
-
|
|
748
|
-
**Generate session ID:**
|
|
749
|
-
```bash
|
|
750
|
-
SESSION_ID="maestro-$(date +%Y%m%d-%H%M%S)"
|
|
751
|
-
SESSION_DIR=".workflow/.maestro/${SESSION_ID}"
|
|
752
|
-
mkdir -p "${SESSION_DIR}"
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
**Write `${SESSION_DIR}/status.json`:**
|
|
756
|
-
```json
|
|
757
|
-
{
|
|
758
|
-
"session_id": "{SESSION_ID}",
|
|
759
|
-
"created_at": "{ISO timestamp}",
|
|
760
|
-
"intent": "{original_intent}",
|
|
761
|
-
"task_type": "{task_type}",
|
|
762
|
-
"chain_name": "{chain_name}",
|
|
763
|
-
"phase": {resolved_phase},
|
|
764
|
-
"auto_mode": {autoYes},
|
|
765
|
-
"steps": [
|
|
766
|
-
{
|
|
767
|
-
"index": 0,
|
|
768
|
-
"skill": "{command_name}",
|
|
769
|
-
"args": "{assembled_args}",
|
|
770
|
-
"status": "pending",
|
|
771
|
-
"started_at": null,
|
|
772
|
-
"completed_at": null
|
|
773
|
-
}
|
|
774
|
-
],
|
|
775
|
-
"current_step": 0,
|
|
776
|
-
"status": "running"
|
|
777
|
-
}
|
|
778
|
-
```
|
|
779
|
-
|
|
780
|
-
---
|
|
781
|
-
|
|
782
|
-
### Step 7: Execute Chain
|
|
783
|
-
|
|
784
|
-
**Initialize execution context:**
|
|
785
|
-
```javascript
|
|
786
|
-
const context = {
|
|
787
|
-
current_phase: resolvedPhase, // derived from artifacts
|
|
788
|
-
user_intent: intent,
|
|
789
|
-
issue_id: resolvedIssueId,
|
|
790
|
-
spec_session_id: null,
|
|
791
|
-
auto_mode: autoYes
|
|
792
|
-
};
|
|
793
|
-
```
|
|
794
|
-
|
|
795
|
-
**Argument assembly function:**
|
|
796
|
-
```javascript
|
|
797
|
-
// Commands that support auto-mode flags
|
|
798
|
-
const AUTO_FLAG_MAP = {
|
|
799
|
-
'maestro-analyze': '-y',
|
|
800
|
-
'maestro-brainstorm': '-y',
|
|
801
|
-
'maestro-roadmap': '-y',
|
|
802
|
-
'maestro-ui-design': '-y',
|
|
803
|
-
'maestro-plan': '--auto',
|
|
804
|
-
'maestro-spec-generate': '-y',
|
|
805
|
-
'quality-test': '--auto-fix',
|
|
806
|
-
'quality-retrospective': '--auto-yes',
|
|
807
|
-
};
|
|
808
|
-
|
|
809
|
-
function assembleArgs(step, context) {
|
|
810
|
-
let args = step.args || '';
|
|
811
|
-
|
|
812
|
-
// Template substitution
|
|
813
|
-
args = args.replace(/\{phase\}/g, context.current_phase || '');
|
|
814
|
-
args = args.replace(/\{description\}/g, context.user_intent || '');
|
|
815
|
-
args = args.replace(/\{issue_id\}/g, context.issue_id || '');
|
|
816
|
-
args = args.replace(/\{spec_session_id\}/g, context.spec_session_id || '');
|
|
817
|
-
|
|
818
|
-
// Propagate auto flag only to commands that support it
|
|
819
|
-
if (context.auto_mode) {
|
|
820
|
-
const autoFlag = AUTO_FLAG_MAP[step.cmd];
|
|
821
|
-
if (autoFlag && !args.includes(autoFlag)) {
|
|
822
|
-
args = args ? `${args} ${autoFlag}` : autoFlag;
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
return args.trim();
|
|
827
|
-
}
|
|
828
|
-
```
|
|
829
|
-
|
|
830
|
-
**For each step starting at `$STEP_INDEX` (default 0):**
|
|
831
|
-
|
|
832
|
-
**7a. Display step banner:**
|
|
833
|
-
```
|
|
834
|
-
------------------------------------------------------------
|
|
835
|
-
STEP {i+1}/{total}: {command_name}
|
|
836
|
-
------------------------------------------------------------
|
|
837
|
-
Args: {assembled_args}
|
|
838
|
-
```
|
|
839
|
-
|
|
840
|
-
**7a-1. Context cleanup hint (after step 3+):**
|
|
841
|
-
|
|
842
|
-
If `i >= 3` and not `$AUTO_MODE`:
|
|
843
|
-
```
|
|
844
|
-
⚡ 已执行 {i} 步,上下文较重。可随时 /maestro -c 在新上下文中恢复。
|
|
845
|
-
```
|
|
846
|
-
If `$AUTO_MODE` and `i >= 4`: log one-line warning to status.json, continue.
|
|
847
|
-
|
|
848
|
-
**7b. Update status.json:** Set step status = `"running"`, started_at = now.
|
|
849
|
-
|
|
850
|
-
**7c. Execute via Skill():**
|
|
851
|
-
```javascript
|
|
852
|
-
Skill({ skill: step.cmd, args: assembledArgs })
|
|
853
|
-
```
|
|
854
|
-
|
|
855
|
-
**7d. Parse output & update context:**
|
|
856
|
-
|
|
857
|
-
After each Skill() returns, scan output for key artifacts:
|
|
858
|
-
- Phase number references (e.g., "Phase: 2") → update `context.current_phase`
|
|
859
|
-
- Spec session IDs (e.g., "SPEC-auth-2026-03-15") → update `context.spec_session_id`
|
|
860
|
-
- These enable downstream steps to receive correct arguments
|
|
861
|
-
|
|
862
|
-
**7e. Handle result:**
|
|
863
|
-
|
|
864
|
-
**On success:**
|
|
865
|
-
- Update status.json: step status = `"completed"`, completed_at = now
|
|
866
|
-
- Continue to next step
|
|
867
|
-
|
|
868
|
-
**On failure:**
|
|
869
|
-
- Update status.json: step status = `"failed"`
|
|
870
|
-
- If `$AUTO_MODE`: log warning, mark as `"skipped"`, continue to next step
|
|
871
|
-
- If interactive:
|
|
872
|
-
```
|
|
873
|
-
AskUserQuestion:
|
|
874
|
-
header: "Step Failed: {command_name}"
|
|
875
|
-
question: "{error_description}"
|
|
876
|
-
options:
|
|
877
|
-
- "Retry" → re-execute (max 2 retries per step)
|
|
878
|
-
- "Skip" → mark skipped, continue
|
|
879
|
-
- "Abort" → save progress, display resume instructions, exit
|
|
880
|
-
```
|
|
881
|
-
- On Abort: **Error E003** — display: `Resume with: /maestro -c`
|
|
882
|
-
|
|
883
|
-
**7f. After all steps complete:**
|
|
884
|
-
|
|
885
|
-
Update status.json: status = `"completed"`.
|
|
886
|
-
|
|
887
|
-
Display completion report:
|
|
888
|
-
```
|
|
889
|
-
============================================================
|
|
890
|
-
MAESTRO SESSION COMPLETE
|
|
891
|
-
============================================================
|
|
892
|
-
Session: {session_id}
|
|
893
|
-
Chain: {chain_name}
|
|
894
|
-
Steps: {completed}/{total} completed
|
|
895
|
-
Phase: {current_phase}
|
|
896
|
-
|
|
897
|
-
Results:
|
|
898
|
-
[✓] 1. {command} — completed
|
|
899
|
-
[✓] 2. {command} — completed
|
|
900
|
-
[—] 3. {command} — skipped
|
|
901
|
-
...
|
|
902
|
-
|
|
903
|
-
Next:
|
|
904
|
-
Skill({ skill: "maestro", args: "continue" })
|
|
905
|
-
Skill({ skill: "manage-status" })
|
|
906
|
-
============================================================
|
|
907
|
-
```
|
|
908
|
-
|
|
909
|
-
---
|
|
910
|
-
|
|
911
|
-
## Chain Reference
|
|
912
|
-
|
|
913
|
-
| Chain | Steps | Use Case |
|
|
914
|
-
|-------|-------|----------|
|
|
915
|
-
| `full-lifecycle` | plan → execute → verify → review → test → milestone-audit → milestone-complete | Full milestone completion |
|
|
916
|
-
| `spec-driven` | init → spec-generate → plan → execute → verify | Start from idea/requirements (heavy path) |
|
|
917
|
-
| `roadmap-driven` | init → maestro-roadmap → plan → execute → verify | Start from requirements (light path) |
|
|
918
|
-
| `brainstorm-driven` | brainstorm → plan → execute → verify | Start from exploration |
|
|
919
|
-
| `ui-design-driven` | ui-design → plan → execute → verify | Start from UI design prototypes |
|
|
920
|
-
| `analyze-plan-execute` | analyze -q → plan --dir → execute --dir | Fast track without roadmap (scratch mode) |
|
|
921
|
-
| `execute-verify` | execute → verify | Resume after planning |
|
|
922
|
-
| `quality-loop` | verify → review → test-gen → test → debug → plan --gaps → execute | Fix quality issues |
|
|
923
|
-
| `milestone-close` | milestone-audit → milestone-complete | Close a milestone |
|
|
924
|
-
| `next-milestone` | maestro-roadmap → plan → execute → verify | Start next milestone (auto-loads deferred items) |
|
|
925
|
-
| `issue-full` | analyze → plan → execute → review → close | Issue with quality gate (default for issue execute) |
|
|
926
|
-
| `issue-quick` | plan → execute → close | Issue fast path (use `--chain issue-quick`) |
|
|
927
|
-
| *(single-step)* | Any individual command | Direct invocation |
|
|
928
|
-
|
|
929
|
-
---
|
|
930
|
-
|
|
931
|
-
## Pipeline Examples
|
|
932
|
-
|
|
933
|
-
Shows how structured extraction routes common inputs — especially cases where regex previously misrouted:
|
|
934
|
-
|
|
935
|
-
| Input | Extraction | Task Type | Chain |
|
|
936
|
-
|-------|-----------|-----------|-------|
|
|
937
|
-
| `"continue"` | *(exact match)* | state_continue | (from state) |
|
|
938
|
-
| `"status"` | *(exact match)* | status | manage-status |
|
|
939
|
-
| `"Add API endpoint"` | `{create, feature}` | quick | maestro-quick |
|
|
940
|
-
| `"plan phase 2"` | `{plan, phase, phase_ref:2}` | plan | maestro-plan 2 |
|
|
941
|
-
| `"execute"` | `{execute, code}` | execute | maestro-execute |
|
|
942
|
-
| `"run tests"` | `{test, test}` | test | quality-test |
|
|
943
|
-
| `"debug auth crash"` | `{debug, bug, scope:"auth"}` | debug | quality-debug |
|
|
944
|
-
| `"修复登录问题"` | `{fix, bug, scope:"登录"}` | debug | quality-debug |
|
|
945
|
-
| `"fix this issue"` | `{fix, bug}` | debug | quality-debug |
|
|
946
|
-
| `"fix issue ISS-abc-001"` | `{fix, issue, ISS-abc-001}` | issue_execute | issue-full (analyze→plan→execute→review→close) |
|
|
947
|
-
| `"解决性能问题"` | `{fix, performance}` | debug | quality-debug |
|
|
948
|
-
| `"这个问题需要看看"` | `{analyze, bug}` | analyze | maestro-analyze |
|
|
949
|
-
| `"创建一个 issue 跟踪"` | `{manage, issue}` | issue | manage-issue |
|
|
950
|
-
| `"discover issues"` | `{explore, issue}` | issue_discover | manage-issue-discover |
|
|
951
|
-
| `"analyze issue ISS-xxx"` | `{analyze, issue, ISS-xxx}` | issue_analyze | maestro-analyze --gaps |
|
|
952
|
-
| `"plan issue ISS-xxx"` | `{plan, issue, ISS-xxx}` | issue_plan | maestro-plan --gaps |
|
|
953
|
-
| `"brainstorm notification system"` | `{explore, feature}` | brainstorm | brainstorm-driven |
|
|
954
|
-
| `"spec generate user auth"` | `{create, spec}` | spec_generate | spec-driven |
|
|
955
|
-
| `"ui design landing page"` | `{create, ui}` | ui_design | ui-design-driven |
|
|
956
|
-
| `"refactor auth module"` | `{refactor, code}` | refactor | quality-refactor |
|
|
957
|
-
| `"复盘 phase 2"` | `{retrospect, phase}` | retrospective | quality-retrospective |
|
|
958
|
-
| `"team review code"` | `{review, team}` | team_review | team-review |
|
|
959
|
-
| `"team qa full scan"` | `{analyze, team}` | team_qa | team-quality-assurance |
|
|
960
|
-
| `"next phase"` | `{transition, milestone}` | milestone_close | maestro-milestone-audit → milestone-complete |
|
|
961
|
-
| `"milestone audit"` | `{manage, milestone}` | milestone_audit | maestro-milestone-audit |
|
|
962
|
-
| `-y "implement feature X"` | `{execute, feature}` | execute | maestro-execute (auto mode) |
|
|
963
|
-
|
|
964
|
-
---
|
|
965
|
-
|
|
966
|
-
## Key Design Principles
|
|
967
|
-
|
|
968
|
-
1. **Semantic Routing** — LLM-native structured extraction (`action × object`) replaces regex pattern matching; disambiguates polysemous words like "问题" by semantic context
|
|
969
|
-
2. **State-Aware** — Reads `.workflow/state.json` to understand project context before routing
|
|
970
|
-
3. **Quality Gates** — Issue chains auto-include review steps; `issue-full` is the default for issue execution
|
|
971
|
-
4. **Skill Composition** — Chains compose independent Skills via sequential Skill() calls
|
|
972
|
-
5. **Phase Propagation** — Auto-detects and passes phase numbers to downstream commands
|
|
973
|
-
6. **Auto Mode** — `-y` flag propagates through entire chain, skipping all confirmations
|
|
974
|
-
7. **Resumable** — Session state in `.workflow/.maestro/` enables resume with `-c`
|
|
975
|
-
8. **Progressive Clarification** — Low clarity triggers user questions (max 2 rounds)
|
|
976
|
-
9. **Error Resilience** — Retry/skip/abort per step, with auto-skip in `-y` mode
|
|
1
|
+
# Workflow: maestro
|
|
2
|
+
|
|
3
|
+
Intelligent coordinator that routes user intent to optimal command chain based on project state.
|
|
4
|
+
Dual execution engines: **Skill()** (in-process, synchronous) and **CLI delegate** (via `maestro delegate`, async with gemini quality analysis).
|
|
5
|
+
Default `auto` mode selects engine based on chain complexity.
|
|
6
|
+
|
|
7
|
+
**Prerequisites:**
|
|
8
|
+
- None for initial invocation (can bootstrap)
|
|
9
|
+
- `continue`/`next`: `.workflow/state.json` must exist
|
|
10
|
+
- `-c` (resume): `.workflow/.maestro/*/status.json` must exist
|
|
11
|
+
|
|
12
|
+
## Step 1: Parse & Initialize
|
|
13
|
+
|
|
14
|
+
### 1a: Parse arguments
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Parse $ARGUMENTS → extract flags, remainder is intent text.
|
|
18
|
+
Flags: autoYes (-y/--yes), resumeMode (-c/--continue), dryRun (--dry-run)
|
|
19
|
+
Valued: forcedChain (--chain X), execMode (--exec auto|cli|skill, default 'auto'), cliTool (--tool X, default 'claude')
|
|
20
|
+
intent = arguments with all flags/valued options stripped, trimmed
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 1b: Handle resume mode
|
|
24
|
+
|
|
25
|
+
If `resumeMode`:
|
|
26
|
+
1. Scan `.workflow/.maestro/` for latest session (or session ID if specified)
|
|
27
|
+
2. Read `status.json` → find last completed step, remaining steps
|
|
28
|
+
3. Set `$CHAIN` from status.json, `$STEP_INDEX` = last_completed + 1
|
|
29
|
+
4. If no session found: **Error E004** — list available sessions
|
|
30
|
+
5. Jump to **Step 4** at resume point
|
|
31
|
+
|
|
32
|
+
### 1c: Read project state
|
|
33
|
+
|
|
34
|
+
Check `.workflow/state.json` existence.
|
|
35
|
+
|
|
36
|
+
**If exists:** Read state.json + roadmap.md. Derive progress by grouping artifacts by phase, determining furthest artifact type per phase (analyze→plan→execute→verify), and identifying pending plans. Build `$PROJECT_STATE`:
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"initialized": true,
|
|
40
|
+
"current_milestone": "M1",
|
|
41
|
+
"milestone_name": "MVP Auth",
|
|
42
|
+
"milestone_progress": {
|
|
43
|
+
"phases_total": 3,
|
|
44
|
+
"phases_with_execute": 1,
|
|
45
|
+
"phases_with_plan": 2,
|
|
46
|
+
"adhoc_count": 0
|
|
47
|
+
},
|
|
48
|
+
"latest_artifact": { "id": "PLN-002", "type": "plan", "phase": 2 },
|
|
49
|
+
"pending_actions": ["execute phase 2", "analyze phase 3"],
|
|
50
|
+
"has_blockers": false,
|
|
51
|
+
"suggested_next": null
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**If missing:** `$PROJECT_STATE = { initialized: false }`. If intent also empty → **Error E001** (suggest `maestro-init`).
|
|
56
|
+
|
|
57
|
+
### 1d: Display banner
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
============================================================
|
|
61
|
+
MAESTRO COORDINATOR
|
|
62
|
+
============================================================
|
|
63
|
+
Mode: {intent-based | state-based | resume}
|
|
64
|
+
Auto: {yes | no}
|
|
65
|
+
Exec: {auto | cli | skill}
|
|
66
|
+
Input: {intent or "continue"}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Step 2: Analyze Intent
|
|
70
|
+
|
|
71
|
+
### 2a: Fast path — forced chain or exact match
|
|
72
|
+
|
|
73
|
+
**Forced chain (`--chain`):**
|
|
74
|
+
- Validate against known chains (see [Chain Reference](#chain-reference))
|
|
75
|
+
- If valid: skip intent analysis, jump to **Step 3**
|
|
76
|
+
- If invalid: display valid chains, ask user to choose
|
|
77
|
+
|
|
78
|
+
**Exact-match keywords:**
|
|
79
|
+
```
|
|
80
|
+
Keyword → taskType (skip to Step 3):
|
|
81
|
+
continue/next/go/继续/下一步 → 'state_continue'
|
|
82
|
+
status/状态/dashboard → 'status'
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2b: Structured intent extraction (LLM-native)
|
|
86
|
+
|
|
87
|
+
Extract a structured intent tuple from user input. Leverages LLM semantic understanding to disambiguate polysemous words (e.g., "问题" as bug vs. issue-tracker item).
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"action": "<from action enum>",
|
|
92
|
+
"object": "<from object enum>",
|
|
93
|
+
"scope": "<module/file/area or null>",
|
|
94
|
+
"issue_id": "<ISS-XXXXXXXX-NNN if mentioned, else null>",
|
|
95
|
+
"phase_ref": "<integer if mentioned, else null>",
|
|
96
|
+
"urgency": "<low | normal | high>"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Action enum:**
|
|
101
|
+
|
|
102
|
+
| action | Triggered by (semantic) |
|
|
103
|
+
|--------|------------------------|
|
|
104
|
+
| `create` | Build new — feature, component, spec, project |
|
|
105
|
+
| `fix` | Repair broken — fix bug, resolve error, 修复, 解决 |
|
|
106
|
+
| `analyze` | Understand — analyze, evaluate, investigate, 分析, 评估 |
|
|
107
|
+
| `plan` | Design approach — plan, break down, architect, 规划, 分解 |
|
|
108
|
+
| `execute` | Implement — execute, implement, develop, code, 实现, 开发 |
|
|
109
|
+
| `verify` | Check goals — verify, validate, 验证 |
|
|
110
|
+
| `review` | Code quality — review code, 代码审查 |
|
|
111
|
+
| `test` | Run/create tests — test, UAT, 测试, 验收 |
|
|
112
|
+
| `debug` | Diagnose — debug, troubleshoot, 调试, 排查 |
|
|
113
|
+
| `refactor` | Restructure — refactor, clean up, tech debt, 重构 |
|
|
114
|
+
| `explore` | Discover — brainstorm, ideate, explore, 头脑风暴, 发散 |
|
|
115
|
+
| `manage` | CRUD/lifecycle — list, create issue, close, track, 管理 |
|
|
116
|
+
| `transition` | Advance — next phase, complete milestone |
|
|
117
|
+
| `continue` | Resume — continue, next, go on, 继续 |
|
|
118
|
+
| `sync` | Update docs — sync, refresh, 同步 |
|
|
119
|
+
| `fork` | Worktree — fork, parallel, 分叉, 并行 |
|
|
120
|
+
| `merge` | Merge back — merge worktree, 合并工作树 |
|
|
121
|
+
| `learn` | Capture — learn, insight, eureka, 记录洞察 |
|
|
122
|
+
| `retrospect` | Post-mortem — retrospective, retro, 复盘 |
|
|
123
|
+
| `release` | Publish — release, publish, ship, tag, 发布 |
|
|
124
|
+
| `amend` | Revise — amend workflow, fix command, 修正流程 |
|
|
125
|
+
| `compose` | Design workflow — compose, build workflow, 编排流程 |
|
|
126
|
+
|
|
127
|
+
**Object enum:**
|
|
128
|
+
|
|
129
|
+
| object | Meaning |
|
|
130
|
+
|--------|---------|
|
|
131
|
+
| `feature` | New functionality or enhancement |
|
|
132
|
+
| `bug` | Defect, error, broken behavior |
|
|
133
|
+
| `issue` | Issue-tracker item |
|
|
134
|
+
| `code` | Source code in general |
|
|
135
|
+
| `test` | Tests, test suite, coverage |
|
|
136
|
+
| `spec` | Specification, PRD, requirements |
|
|
137
|
+
| `phase` | Workflow phase |
|
|
138
|
+
| `milestone` | Workflow milestone |
|
|
139
|
+
| `doc` | Documentation |
|
|
140
|
+
| `performance` | Performance characteristics |
|
|
141
|
+
| `security` | Security concerns |
|
|
142
|
+
| `ui` | User interface, design, prototype |
|
|
143
|
+
| `memory` | Memory/knowledge management |
|
|
144
|
+
| `codebase` | Codebase documentation/mapping |
|
|
145
|
+
| `team` | Team-based multi-agent execution |
|
|
146
|
+
| `config` | Configuration, setup, initialization |
|
|
147
|
+
|
|
148
|
+
**Disambiguation ("问题" / "issue" / "problem"):**
|
|
149
|
+
- Describing **something broken** → `object: "bug"` (route to debug/fix)
|
|
150
|
+
- Referring to **a tracked item** (with ISS-ID, or "create/manage issue" context) → `object: "issue"`
|
|
151
|
+
- When ambiguous → prefer `"bug"` (more actionable)
|
|
152
|
+
|
|
153
|
+
### 2c: Route via action × object matrix
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
Route priority:
|
|
157
|
+
1. issue_id present → route by action: analyze→issue_analyze, plan→issue_plan, fix/execute→issue_execute, debug→issue_analyze, manage→issue; default→issue
|
|
158
|
+
2. object == 'team' → route by action: review→team_review, test→team_test, debug/analyze→team_qa, refactor→team_tech_debt, execute→team_lifecycle; default→team_coordinate
|
|
159
|
+
3. action × object matrix lookup (fallback per action via '_default', global fallback 'quick'):
|
|
160
|
+
|
|
161
|
+
fix: bug/code/performance/security/test→debug, issue→issue; default→debug
|
|
162
|
+
create: feature→quick, issue→issue, test→test_gen, spec→spec_generate, ui→ui_design, config→init; default→quick
|
|
163
|
+
analyze: bug/code/performance/security/feature→analyze, issue→issue_analyze, codebase→spec_map; default→analyze
|
|
164
|
+
explore: issue→issue_discover, feature→brainstorm, ui→ui_design; default→brainstorm
|
|
165
|
+
plan: issue→issue_plan, spec→spec_generate, phase/milestone→plan; default→plan
|
|
166
|
+
execute: issue→issue_execute; default→execute
|
|
167
|
+
verify: default→verify
|
|
168
|
+
review: default→review
|
|
169
|
+
test: feature/code→test; default→test
|
|
170
|
+
debug: default→debug
|
|
171
|
+
refactor: default→refactor
|
|
172
|
+
manage: issue→issue, milestone→milestone_audit, phase→milestone_close, memory→memory, doc→sync, codebase→codebase_refresh, config→spec_setup, team→team_coordinate; default→status
|
|
173
|
+
transition: phase→milestone_close, milestone→milestone_complete; default→milestone_close
|
|
174
|
+
continue: default→state_continue
|
|
175
|
+
sync: doc→sync, codebase→codebase_refresh; default→sync
|
|
176
|
+
fork/merge/learn/retrospect/release/amend/compose: default→same name (retrospect→retrospective)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 2d: Chain upgrade & clarity
|
|
180
|
+
|
|
181
|
+
**State-aware chain upgrade:**
|
|
182
|
+
- `issue_execute` → auto-upgrade to `issue-full` (appends review gate)
|
|
183
|
+
- `debug` during `executing` phase → keep single-step (state validation handles prepend/append)
|
|
184
|
+
|
|
185
|
+
**Clarity score** (from extracted intent tuple): 3 = action+object+scope, 2 = action+object, 1 = action only, 0 = neither
|
|
186
|
+
|
|
187
|
+
Display intent analysis: action, object, scope, issue_id, phase_ref, task_type, clarity score.
|
|
188
|
+
|
|
189
|
+
**Clarification** (skip if `autoYes` or clarity >= 2, max 2 rounds):
|
|
190
|
+
- 0 → offer: "Start new project" / "Continue working" / "Quick task" / "Check status" / "Rephrase"
|
|
191
|
+
- 1 → confirm inferred action with alternatives
|
|
192
|
+
- Still unclear after 2 rounds → **Error E002**
|
|
193
|
+
|
|
194
|
+
## Step 3: Select Chain & Prepare
|
|
195
|
+
|
|
196
|
+
### 3a: Map task_type → chain
|
|
197
|
+
|
|
198
|
+
**Resolution order:**
|
|
199
|
+
1. `forcedChain` → `chainMap[forcedChain]`
|
|
200
|
+
2. `state_continue` → `detectNextAction(projectState)` → `{ chain, argsOverride? }`. Apply argsOverride before template substitution.
|
|
201
|
+
3. Task-type aliases → named chain: `spec_generate`→`spec-driven`, `brainstorm`→`brainstorm-driven`, `issue_execute`→`issue-full`
|
|
202
|
+
4. `chainMap[taskType]` → direct lookup
|
|
203
|
+
|
|
204
|
+
Full `chainMap` and `detectNextAction` are in the [Reference Data](#reference-data) section.
|
|
205
|
+
|
|
206
|
+
### 3b: Validate against state (W003)
|
|
207
|
+
|
|
208
|
+
Cross-validate intent against project state:
|
|
209
|
+
- `execute` but no plan → warn, prepend `maestro-plan`
|
|
210
|
+
- `verify` but not executed → warn, prepend `maestro-execute`
|
|
211
|
+
- `test` but not verified → warn, prepend `maestro-verify`
|
|
212
|
+
- `milestone_close` but not all phases executed → warn, suggest completing first
|
|
213
|
+
|
|
214
|
+
Display warning but let user override.
|
|
215
|
+
|
|
216
|
+
### 3c: Resolve phase number and issue ID
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
resolvePhase — priority order:
|
|
220
|
+
1. intent_analysis.phase_ref (from structured extraction)
|
|
221
|
+
2. Regex match "phase N" or bare number from raw intent
|
|
222
|
+
3. From project state artifacts: in-progress execute → first incomplete phase → latest artifact phase
|
|
223
|
+
4. null if chain is 'analyze-plan-execute' (uses {scratch_dir} instead)
|
|
224
|
+
5. null if all chain commands are phase-independent:
|
|
225
|
+
manage-status, manage-issue, manage-issue-discover, maestro-init, maestro-spec-generate,
|
|
226
|
+
maestro-fork, maestro-merge, maestro-roadmap, spec-setup, manage-knowhow, manage-knowhow-capture,
|
|
227
|
+
manage-learn, manage-codebase-rebuild, manage-codebase-refresh, maestro-milestone-audit,
|
|
228
|
+
maestro-milestone-complete
|
|
229
|
+
6. Ask user
|
|
230
|
+
|
|
231
|
+
resolveIssueId — priority: intent_analysis.issue_id → regex match ISS-*-NNN from raw intent → null
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
When executing issue chains, replace `{issue_id}` in step args with resolved ID. If missing and required, prompt user.
|
|
235
|
+
|
|
236
|
+
### 3d: Confirm chain
|
|
237
|
+
|
|
238
|
+
**If `dryRun`:** Display chain visualization and exit.
|
|
239
|
+
**If not `autoYes`:** Confirm with user — show numbered steps, offer: Execute / Execute from step N / Cancel.
|
|
240
|
+
|
|
241
|
+
### 3e: Step-level engine selection
|
|
242
|
+
|
|
243
|
+
Engine is selected **per step**, not per chain.
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
If execMode is 'cli' or 'skill' → force that engine for all steps.
|
|
247
|
+
In 'auto' mode, select per step:
|
|
248
|
+
CLI steps (heavy, context-isolated): maestro-plan, maestro-execute, maestro-analyze, maestro-brainstorm, maestro-spec-generate, maestro-roadmap, maestro-ui-design, quality-refactor
|
|
249
|
+
Skill steps (everything else): observable, interactive, lightweight (verify, review, test, debug, milestone-*, manage-*, spec-*, quick, etc.)
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Trade-off:** CLI = context isolation + template prompts + gemini analysis. Skill = direct visibility + synchronous + user can intervene.
|
|
253
|
+
|
|
254
|
+
### 3f: Setup session
|
|
255
|
+
|
|
256
|
+
Create session directory `.workflow/.maestro/maestro-{YYYYMMDD-HHMMSS}/` and write `status.json`:
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"session_id": "{SESSION_ID}",
|
|
260
|
+
"created_at": "{ISO timestamp}",
|
|
261
|
+
"intent": "{original_intent}",
|
|
262
|
+
"task_type": "{task_type}",
|
|
263
|
+
"chain_name": "{chain_name}",
|
|
264
|
+
"phase": "{resolved_phase}",
|
|
265
|
+
"auto_mode": "{autoYes}",
|
|
266
|
+
"exec_mode": "{execMode}",
|
|
267
|
+
"cli_tool": "{cliTool}",
|
|
268
|
+
"gemini_session_id": null,
|
|
269
|
+
"step_analyses": [],
|
|
270
|
+
"steps": [{ "index": 0, "skill": "{cmd}", "args": "{args}", "engine": null, "status": "pending", "started_at": null, "completed_at": null }],
|
|
271
|
+
"current_step": 0,
|
|
272
|
+
"status": "running"
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## Step 4: Execute Chain
|
|
277
|
+
|
|
278
|
+
### Shared: context & argument assembly
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
Context object tracks: current_phase, user_intent, issue_id, spec_session_id, scratch_dir, auto_mode.
|
|
282
|
+
|
|
283
|
+
assembleArgs: substitute placeholders {phase}, {description}, {issue_id}, {spec_session_id}, {scratch_dir} in step.args.
|
|
284
|
+
In auto_mode, append per-command flag if not already present:
|
|
285
|
+
maestro-analyze/brainstorm/roadmap/ui-design/spec-generate → -y
|
|
286
|
+
maestro-plan → --auto
|
|
287
|
+
quality-test → --auto-fix
|
|
288
|
+
quality-retrospective → --auto-yes
|
|
289
|
+
|
|
290
|
+
Shell-escape strings with single quotes for CLI delegate calls.
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Step loop — for each step starting at `$STEP_INDEX` (default 0):
|
|
294
|
+
|
|
295
|
+
**4a. Select engine & display banner:**
|
|
296
|
+
|
|
297
|
+
Select engine per step (see 3e). Display step banner with index, command name, engine, args.
|
|
298
|
+
- Step >= 4 and not autoYes: hint user about `/maestro -c` for fresh context resume.
|
|
299
|
+
- autoYes and step >= 5: log warning to status.json.
|
|
300
|
+
- Update status.json: step status = `"running"`, engine, started_at.
|
|
301
|
+
|
|
302
|
+
**4b. Execute (engine-dependent):**
|
|
303
|
+
|
|
304
|
+
**Skill** — invoke `Skill({ skill: step.cmd, args: assembledArgs })` directly (synchronous, visible).
|
|
305
|
+
|
|
306
|
+
**CLI** — template-driven, async, context-isolated:
|
|
307
|
+
1. Load template `~/.maestro/templates/cli/prompts/coordinate-step.txt`
|
|
308
|
+
2. Build `analysisHints` from previous step's `next_step_hints` (prompt_additions, cautions, context_to_carry)
|
|
309
|
+
3. Substitute template placeholders: `{{COMMAND}}`, `{{ARGS}}`, `{{STEP_N}}`, `{{AUTO_DIRECTIVE}}`, `{{CHAIN_NAME}}`, `{{ANALYSIS_HINTS}}`
|
|
310
|
+
4. Run `maestro delegate <prompt> --to {cliTool} --mode write` via `Bash(run_in_background: true, timeout: 600000)`
|
|
311
|
+
5. **STOP** — wait for background callback
|
|
312
|
+
|
|
313
|
+
**4c. Parse output & update context:**
|
|
314
|
+
|
|
315
|
+
Scan step output for context propagation: `PHASE: N` → current_phase, `SPEC-xxx` → spec_session_id, `scratch_dir: path` → scratch_dir. CLI: capture exec_id from stderr.
|
|
316
|
+
|
|
317
|
+
**4d. Handle result:**
|
|
318
|
+
|
|
319
|
+
Success: mark `"completed"` in status.json. CLI: save output to `step-{N}-output.txt`.
|
|
320
|
+
Failure: autoYes → retry once then skip. Interactive → Retry (max 2) / Skip / Abort. Abort → **Error E003** with resume hint.
|
|
321
|
+
|
|
322
|
+
**4e. Post-step analysis (CLI steps only, multi-step chains):**
|
|
323
|
+
|
|
324
|
+
Skip if: step failed/skipped, single-step chain, or `stepEngine === 'skill'`.
|
|
325
|
+
|
|
326
|
+
Delegate to gemini (analysis mode, `--resume` if prior gemini_session_id exists) with prompt containing:
|
|
327
|
+
- Step command, args, chain name, intent
|
|
328
|
+
- Last 200 lines of step output
|
|
329
|
+
- Next step info (if any)
|
|
330
|
+
|
|
331
|
+
Expected JSON response:
|
|
332
|
+
```json
|
|
333
|
+
{
|
|
334
|
+
"quality_score": "<0-100>",
|
|
335
|
+
"execution_assessment": { "success": "<bool>", "completeness": "<full|partial|minimal>", "key_outputs": [], "missing_outputs": [] },
|
|
336
|
+
"issues": [{ "severity": "critical|high|medium|low", "description": "" }],
|
|
337
|
+
"next_step_hints": {
|
|
338
|
+
"prompt_additions": "<extra context for next step>",
|
|
339
|
+
"cautions": ["<things to watch out for>"],
|
|
340
|
+
"context_to_carry": "<key facts from this step>"
|
|
341
|
+
},
|
|
342
|
+
"step_summary": ""
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
On callback: capture gemini exec_id for session continuity, store analysis in `state.step_analyses[]` and `step-{N}-analysis.json`, advance to next step (**4a**).
|
|
347
|
+
|
|
348
|
+
**4f. Completion report:**
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
============================================================
|
|
352
|
+
MAESTRO SESSION COMPLETE
|
|
353
|
+
============================================================
|
|
354
|
+
Session: {session_id}
|
|
355
|
+
Chain: {chain_name}
|
|
356
|
+
Steps: {completed}/{total} completed
|
|
357
|
+
Phase: {current_phase}
|
|
358
|
+
|
|
359
|
+
Results:
|
|
360
|
+
[✓] 1. maestro-plan — completed [cli] (quality: 85/100)
|
|
361
|
+
[✓] 2. maestro-verify — completed [skill]
|
|
362
|
+
[—] 3. quality-review — skipped [skill]
|
|
363
|
+
|
|
364
|
+
CLI Avg Quality: {avgScore}/100 (based on {cliStepCount} cli steps)
|
|
365
|
+
|
|
366
|
+
Next: /maestro continue | /manage-status
|
|
367
|
+
============================================================
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## Reference Data
|
|
373
|
+
|
|
374
|
+
### Chain Map
|
|
375
|
+
|
|
376
|
+
```javascript
|
|
377
|
+
const chainMap = {
|
|
378
|
+
// ── Single-step ──
|
|
379
|
+
'status': [{ cmd: 'manage-status' }],
|
|
380
|
+
'init': [{ cmd: 'maestro-init' }],
|
|
381
|
+
'analyze': [{ cmd: 'maestro-analyze', args: '{phase}' }],
|
|
382
|
+
'analyze-quick': [{ cmd: 'maestro-analyze', args: '{phase} -q' }],
|
|
383
|
+
'ui_design': [{ cmd: 'maestro-ui-design', args: '{phase}' }],
|
|
384
|
+
'plan': [{ cmd: 'maestro-plan', args: '{phase}' }],
|
|
385
|
+
'execute': [{ cmd: 'maestro-execute', args: '{phase}' }],
|
|
386
|
+
'verify': [{ cmd: 'maestro-verify', args: '{phase}' }],
|
|
387
|
+
'test_gen': [{ cmd: 'quality-test-gen', args: '{phase}' }],
|
|
388
|
+
'test': [{ cmd: 'quality-test', args: '{phase}' }],
|
|
389
|
+
'debug': [{ cmd: 'quality-debug', args: '"{description}"' }],
|
|
390
|
+
'integration_test': [{ cmd: 'quality-integration-test', args: '{phase}' }],
|
|
391
|
+
'refactor': [{ cmd: 'quality-refactor', args: '"{description}"' }],
|
|
392
|
+
'review': [{ cmd: 'quality-review', args: '{phase}' }],
|
|
393
|
+
'retrospective': [{ cmd: 'quality-retrospective', args: '{phase}' }],
|
|
394
|
+
'learn': [{ cmd: 'manage-learn', args: '"{description}"' }],
|
|
395
|
+
'sync': [{ cmd: 'quality-sync' }],
|
|
396
|
+
'milestone_close': [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
|
|
397
|
+
'milestone_audit': [{ cmd: 'maestro-milestone-audit' }],
|
|
398
|
+
'milestone_complete': [{ cmd: 'maestro-milestone-complete' }],
|
|
399
|
+
'codebase_rebuild': [{ cmd: 'manage-codebase-rebuild' }],
|
|
400
|
+
'codebase_refresh': [{ cmd: 'manage-codebase-refresh' }],
|
|
401
|
+
'spec_setup': [{ cmd: 'spec-setup' }],
|
|
402
|
+
'spec_add': [{ cmd: 'spec-add', args: '"{description}"' }],
|
|
403
|
+
'spec_load': [{ cmd: 'spec-load' }],
|
|
404
|
+
'spec_map': [{ cmd: 'manage-codebase-rebuild' }],
|
|
405
|
+
'knowhow_capture': [{ cmd: 'manage-knowhow-capture', args: '"{description}"' }],
|
|
406
|
+
'issue': [{ cmd: 'manage-issue', args: '"{description}"' }],
|
|
407
|
+
'issue_discover': [{ cmd: 'manage-issue-discover', args: '"{description}"' }],
|
|
408
|
+
'issue_analyze': [{ cmd: 'maestro-analyze', args: '--gaps "{description}"' }],
|
|
409
|
+
'issue_plan': [{ cmd: 'maestro-plan', args: '--gaps' }],
|
|
410
|
+
'issue_execute': [{ cmd: 'maestro-execute', args: '' }],
|
|
411
|
+
'knowhow': [{ cmd: 'manage-knowhow', args: '"{description}"' }],
|
|
412
|
+
'quick': [{ cmd: 'maestro-quick', args: '"{description}"' }],
|
|
413
|
+
'fork': [{ cmd: 'maestro-fork', args: '-m {milestone_num}' }],
|
|
414
|
+
'merge': [{ cmd: 'maestro-merge', args: '-m {milestone_num}' }],
|
|
415
|
+
|
|
416
|
+
// ── Team skills ──
|
|
417
|
+
'team_lifecycle': [{ cmd: 'team-lifecycle-v4', args: '"{description}"' }],
|
|
418
|
+
'team_coordinate': [{ cmd: 'team-coordinate', args: '"{description}"' }],
|
|
419
|
+
'team_design': [{ cmd: 'team-coordinate', args: '"{description}"' }],
|
|
420
|
+
'team_execute': [{ cmd: 'team-executor', args: '"{description}"' }],
|
|
421
|
+
'team_qa': [{ cmd: 'team-quality-assurance', args: '"{description}"' }],
|
|
422
|
+
'team_test': [{ cmd: 'team-testing', args: '"{description}"' }],
|
|
423
|
+
'team_review': [{ cmd: 'team-review', args: '"{description}"' }],
|
|
424
|
+
'team_tech_debt': [{ cmd: 'team-tech-debt', args: '"{description}"' }],
|
|
425
|
+
|
|
426
|
+
// ── Multi-step chains ──
|
|
427
|
+
'full-lifecycle': [{ cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'maestro-milestone-audit' }],
|
|
428
|
+
'spec-driven': [{ cmd: 'maestro-init' }, { cmd: 'maestro-spec-generate', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
429
|
+
'roadmap-driven': [{ cmd: 'maestro-init' }, { cmd: 'maestro-roadmap', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
430
|
+
'brainstorm-driven': [{ cmd: 'maestro-brainstorm', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
431
|
+
'ui-design-driven': [{ cmd: 'maestro-ui-design', args: '{phase}' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
432
|
+
'analyze-plan-execute': [{ cmd: 'maestro-analyze', args: '"{description}" -q' }, { cmd: 'maestro-plan', args: '--dir {scratch_dir}' }, { cmd: 'maestro-execute', args: '--dir {scratch_dir}' }],
|
|
433
|
+
'execute-verify': [{ cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
434
|
+
'quality-loop': [{ cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test-gen', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'quality-debug', args: '--from-uat {phase}' }, { cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }],
|
|
435
|
+
'milestone-close': [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
|
|
436
|
+
'next-milestone': [{ cmd: 'maestro-roadmap', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
437
|
+
'review-fix': [{ cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }],
|
|
438
|
+
'quality-loop-partial': [{ cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
439
|
+
'issue-full': [{ cmd: 'maestro-analyze', args: '--gaps {issue_id}' }, { cmd: 'maestro-plan', args: '--gaps' }, { cmd: 'maestro-execute', args: '' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }],
|
|
440
|
+
'issue-quick': [{ cmd: 'maestro-plan', args: '--gaps' }, { cmd: 'maestro-execute', args: '' }, { cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }],
|
|
441
|
+
'milestone-release': [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-release' }],
|
|
442
|
+
|
|
443
|
+
'learn': [{ cmd: 'maestro-learn', args: '"{description}"' }],
|
|
444
|
+
'harvest': [{ cmd: 'manage-harvest', args: '"{description}"' }],
|
|
445
|
+
'wiki': [{ cmd: 'manage-wiki' }],
|
|
446
|
+
'wiki_connect': [{ cmd: 'wiki-connect' }],
|
|
447
|
+
'wiki_digest': [{ cmd: 'wiki-digest' }],
|
|
448
|
+
'business_test': [{ cmd: 'quality-business-test', args: '{phase}' }],
|
|
449
|
+
'spec_remove': [{ cmd: 'spec-remove', args: '"{description}"' }],
|
|
450
|
+
'amend': [{ cmd: 'maestro-amend', args: '"{description}"' }],
|
|
451
|
+
'release': [{ cmd: 'maestro-milestone-release' }],
|
|
452
|
+
'compose': [{ cmd: 'maestro-composer', args: '"{description}"' }],
|
|
453
|
+
'play': [{ cmd: 'maestro-player', args: '"{description}"' }],
|
|
454
|
+
'update': [{ cmd: 'maestro-update' }],
|
|
455
|
+
'overlay': [{ cmd: 'maestro-overlay', args: '"{description}"' }],
|
|
456
|
+
'link_coordinate': [{ cmd: 'maestro-link-coordinate', args: '"{description}"' }],
|
|
457
|
+
};
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### State Detection (detectNextAction)
|
|
461
|
+
|
|
462
|
+
Used when `task_type == state_continue`. Routes based on `phase_status` and artifact presence:
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
Returns { chain, argsOverride? }. Steps resolved from chainMap[chain].
|
|
466
|
+
|
|
467
|
+
detectNextAction(state):
|
|
468
|
+
not initialized → 'init'
|
|
469
|
+
|
|
470
|
+
phases_total == 0:
|
|
471
|
+
no roadmap + has accumulated_context → 'next-milestone' with argsOverride containing deferred items and key decisions
|
|
472
|
+
otherwise → 'brainstorm-driven'
|
|
473
|
+
|
|
474
|
+
Route by phase_status (ps):
|
|
475
|
+
pending: has context artifact → 'plan'; has analysis → 'analyze-quick'; else → 'analyze'
|
|
476
|
+
exploring/planning: has plan → 'execute-verify'; else → 'plan'
|
|
477
|
+
executing: all tasks done → 'verify'; has blockers → 'debug'; else → 'execute'
|
|
478
|
+
verifying:
|
|
479
|
+
verification passed:
|
|
480
|
+
no review → 'review'
|
|
481
|
+
review BLOCK → 'review-fix'
|
|
482
|
+
uat pending → 'test'; uat passed → 'milestone-close'; uat failed → 'debug'
|
|
483
|
+
default → 'test'
|
|
484
|
+
verification not passed → 'quality-loop-partial'
|
|
485
|
+
testing: uat passed → 'milestone-close'; else → 'debug'
|
|
486
|
+
completed: → 'milestone-close'
|
|
487
|
+
forked: worktrees.json exists → 'merge'; else → 'status'
|
|
488
|
+
blocked: → 'debug'
|
|
489
|
+
default: → 'status'
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Chain Reference
|
|
493
|
+
|
|
494
|
+
| Chain | Steps | Use Case |
|
|
495
|
+
|-------|-------|----------|
|
|
496
|
+
| `full-lifecycle` | plan → execute → verify → review → test → audit | Full milestone completion |
|
|
497
|
+
| `spec-driven` | init → spec-generate → plan → execute → verify | From idea/requirements (heavy) |
|
|
498
|
+
| `roadmap-driven` | init → roadmap → plan → execute → verify | From requirements (light) |
|
|
499
|
+
| `brainstorm-driven` | brainstorm → plan → execute → verify | From exploration |
|
|
500
|
+
| `ui-design-driven` | ui-design → plan → execute → verify | From UI prototypes |
|
|
501
|
+
| `analyze-plan-execute` | analyze -q → plan --dir → execute --dir | Fast track (scratch mode) |
|
|
502
|
+
| `execute-verify` | execute → verify | Resume after planning |
|
|
503
|
+
| `review-fix` | plan --gaps → execute → review | Fix review-blocked issues |
|
|
504
|
+
| `quality-loop` | verify → review → test-gen → test → debug → plan --gaps → execute | Fix quality issues |
|
|
505
|
+
| `quality-loop-partial` | plan --gaps → execute → verify | Partial quality fix cycle |
|
|
506
|
+
| `milestone-close` | audit → complete | Close a milestone |
|
|
507
|
+
| `milestone-release` | audit → release | Release with version tag |
|
|
508
|
+
| `next-milestone` | roadmap → plan → execute → verify | Next milestone (auto-loads deferred) |
|
|
509
|
+
| `issue-full` | analyze → plan → execute → review → close | Issue with quality gate |
|
|
510
|
+
| `issue-quick` | plan → execute → close | Issue fast path |
|
|
511
|
+
|
|
512
|
+
### Pipeline Examples
|
|
513
|
+
|
|
514
|
+
| Input | Extraction | Route | Chain |
|
|
515
|
+
|-------|-----------|-------|-------|
|
|
516
|
+
| `"continue"` | *(exact match)* | state_continue | (from state) |
|
|
517
|
+
| `"status"` | *(exact match)* | status | manage-status |
|
|
518
|
+
| `"Add API endpoint"` | `{create, feature}` | quick | maestro-quick |
|
|
519
|
+
| `"plan phase 2"` | `{plan, phase, ref:2}` | plan | maestro-plan 2 |
|
|
520
|
+
| `"execute"` | `{execute, code}` | execute | maestro-execute |
|
|
521
|
+
| `"run tests"` | `{test, test}` | test | quality-test |
|
|
522
|
+
| `"debug auth crash"` | `{debug, bug, scope:"auth"}` | debug | quality-debug |
|
|
523
|
+
| `"修复登录问题"` | `{fix, bug, scope:"登录"}` | debug | quality-debug |
|
|
524
|
+
| `"fix issue ISS-abc-001"` | `{fix, issue, ISS-abc-001}` | issue_execute | issue-full |
|
|
525
|
+
| `"这个问题需要看看"` | `{analyze, bug}` | analyze | maestro-analyze |
|
|
526
|
+
| `"创建一个 issue 跟踪"` | `{manage, issue}` | issue | manage-issue |
|
|
527
|
+
| `"discover issues"` | `{explore, issue}` | issue_discover | manage-issue-discover |
|
|
528
|
+
| `"brainstorm notifications"` | `{explore, feature}` | brainstorm | brainstorm-driven |
|
|
529
|
+
| `"spec generate auth"` | `{create, spec}` | spec_generate | spec-driven |
|
|
530
|
+
| `"ui design landing"` | `{create, ui}` | ui_design | ui-design-driven |
|
|
531
|
+
| `"refactor auth module"` | `{refactor, code}` | refactor | quality-refactor |
|
|
532
|
+
| `"复盘 phase 2"` | `{retrospect, phase}` | retrospective | quality-retrospective |
|
|
533
|
+
| `"team review code"` | `{review, team}` | team_review | team-review |
|
|
534
|
+
| `"next phase"` | `{transition, milestone}` | milestone_close | audit → complete |
|
|
535
|
+
| `-y "implement X"` | `{execute, feature}` | execute | maestro-execute (auto) |
|
|
536
|
+
| `"release v1.2"` | `{release, milestone}` | release | maestro-milestone-release |
|
|
537
|
+
| `"amend plan command"` | `{amend, config}` | amend | maestro-amend |
|
|
538
|
+
| `"compose deploy flow"` | `{compose, config}` | compose | maestro-composer |
|
|
539
|
+
|
|
540
|
+
### Error Codes
|
|
541
|
+
|
|
542
|
+
| Code | Description | Recovery |
|
|
543
|
+
|------|-------------|----------|
|
|
544
|
+
| E001 | No intent + project not initialized | Suggest maestro-init |
|
|
545
|
+
| E002 | Clarity too low after 2 rounds | Ask to rephrase |
|
|
546
|
+
| E003 | Chain step failed + abort | Suggest resume with -c |
|
|
547
|
+
| E004 | Resume session not found | Show available sessions |
|
|
548
|
+
| W001 | Ambiguous intent, multiple chains | Present options |
|
|
549
|
+
| W002 | Step completed with warnings | Log and continue |
|
|
550
|
+
| W003 | State suggests different chain | Show discrepancy, let user decide |
|
|
551
|
+
|
|
552
|
+
### Design Principles
|
|
553
|
+
|
|
554
|
+
1. **Semantic Routing** — LLM-native `action × object` extraction; disambiguates "问题" by context
|
|
555
|
+
2. **State-Aware** — Reads `.workflow/state.json` before routing
|
|
556
|
+
3. **Quality Gates** — Issue chains auto-include review; `issue-full` is default for issue execution
|
|
557
|
+
4. **Per-Step Engine** — Each step independently selects Skill or CLI. Heavy steps (plan, execute, analyze, brainstorm) → CLI for context isolation. Observable steps (verify, review, test, debug, manage-*) → Skill for direct visibility. `--exec cli|skill` forces all steps.
|
|
558
|
+
5. **CLI Analysis Chain** — Gemini evaluates each CLI step's output, generates `next_step_hints` via `{{ANALYSIS_HINTS}}`. Skill steps skip analysis (output already visible). Sessions chained via `--resume`
|
|
559
|
+
6. **Phase Propagation** — Auto-detects and passes phase numbers to downstream commands
|
|
560
|
+
7. **Auto Mode** — `-y` propagates through chain, skipping all confirmations
|
|
561
|
+
8. **Resumable** — Session state in `.workflow/.maestro/` enables `-c` resume
|
|
562
|
+
9. **Error Resilience** — Retry/skip/abort per step; auto-skip in `-y` mode
|