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/plan.md
CHANGED
|
@@ -20,45 +20,18 @@ All output goes to `.workflow/scratch/plan-{slug}-{date}/`.
|
|
|
20
20
|
```
|
|
21
21
|
Input: [phase] argument OR --dir <path>
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
current_task_id: null, milestones: [], artifacts: [], last_updated: now() }
|
|
35
|
-
|
|
36
|
-
IF --dir <path> is provided:
|
|
37
|
-
1. Set CONTEXT_DIR = <path> (absolute or relative to .workflow/)
|
|
38
|
-
2. Validate directory exists (context.md or conclusions.json present)
|
|
39
|
-
3. Determine scope from parent artifact in state.json (if registered), else "standalone"
|
|
40
|
-
4. Set PHASE_NUM = null, PHASE_SLUG = directory basename
|
|
41
|
-
|
|
42
|
-
ELSE IF no arguments:
|
|
43
|
-
IF state.json.current_milestone AND roadmap.md exists:
|
|
44
|
-
scope = "milestone"
|
|
45
|
-
milestone_slug = slugify(current_milestone name)
|
|
46
|
-
CONTEXT_DIR = find latest analyze artifact for this milestone from state.json.artifacts[]
|
|
47
|
-
ELSE:
|
|
48
|
-
ERROR E001 "No args and no roadmap — provide phase number or create roadmap"
|
|
49
|
-
|
|
50
|
-
ELSE IF argument is a number:
|
|
51
|
-
IF state.json.current_milestone AND roadmap.md exists:
|
|
52
|
-
scope = "phase"
|
|
53
|
-
PHASE_NUM = parsed number
|
|
54
|
-
PHASE_SLUG = resolve from roadmap.md
|
|
55
|
-
CONTEXT_DIR = find latest analyze artifact for this phase from state.json.artifacts[]
|
|
56
|
-
ELSE:
|
|
57
|
-
ERROR "Phase number requires init + roadmap"
|
|
58
|
-
|
|
59
|
-
# Output directory (always scratch)
|
|
23
|
+
Worktree guard: reject if phase not in .workflow/worktree-scope.json owned_phases
|
|
24
|
+
Auto-bootstrap: create minimal state.json if missing
|
|
25
|
+
|
|
26
|
+
Resolution priority:
|
|
27
|
+
--dir <path> → CONTEXT_DIR = path, scope from state.json artifact or "standalone"
|
|
28
|
+
no arguments → scope = "milestone", CONTEXT_DIR = latest analyze artifact for current_milestone
|
|
29
|
+
(ERROR E001 if no roadmap)
|
|
30
|
+
numeric arg → scope = "phase", resolve PHASE_SLUG from roadmap.md,
|
|
31
|
+
CONTEXT_DIR = latest analyze artifact for phase
|
|
32
|
+
(ERROR if no init + roadmap)
|
|
33
|
+
|
|
60
34
|
OUTPUT_DIR = .workflow/scratch/plan-{PHASE_SLUG or milestone_slug}-{date}/
|
|
61
|
-
mkdir -p {OUTPUT_DIR}/.task/
|
|
62
35
|
```
|
|
63
36
|
|
|
64
37
|
---
|
|
@@ -72,6 +45,18 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
72
45
|
| `--auto` | Skip P2 (clarification), proceed directly to P3 |
|
|
73
46
|
| `--gaps` | Load verification.json gaps, skip P1 exploration, plan only gap fixes |
|
|
74
47
|
| `--dir <path>` | Use arbitrary directory instead of phase resolution (skip roadmap validation) |
|
|
48
|
+
| `--revise [instructions]` | Revise existing plan (skip P1-P3, load → modify → P4). Auto-discovers latest plan or use `--dir` |
|
|
49
|
+
| `--check <plan-dir>` | Standalone plan verification (P4 only, read-only) |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Mode Routing
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
--check <plan-dir> → Check Mode (P4 only, read-only)
|
|
57
|
+
--revise → Revise Mode (load → modify → P4)
|
|
58
|
+
default → Create Mode: P1 → P2 → P3 → P4 → P4.5 → P5
|
|
59
|
+
```
|
|
75
60
|
|
|
76
61
|
---
|
|
77
62
|
|
|
@@ -82,21 +67,10 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
82
67
|
### Steps
|
|
83
68
|
|
|
84
69
|
1. **Load user decisions**
|
|
85
|
-
|
|
86
|
-
IF CONTEXT_DIR exists:
|
|
87
|
-
Read ${CONTEXT_DIR}/context.md
|
|
88
|
-
ELSE:
|
|
89
|
-
warn "No upstream analyze found. Run /maestro-analyze first or proceed with defaults."
|
|
90
|
-
```
|
|
70
|
+
- Read `${CONTEXT_DIR}/context.md` if exists, else warn (no upstream analyze)
|
|
91
71
|
|
|
92
72
|
2. **Load spec reference** (if `--spec` flag or index.json has spec_ref)
|
|
93
|
-
|
|
94
|
-
spec_ref = --spec argument || index.json.spec_ref
|
|
95
|
-
If spec_ref:
|
|
96
|
-
Read .workflow/task-specs/${spec_ref}/spec-summary.md
|
|
97
|
-
Read .workflow/task-specs/${spec_ref}/requirements/_index.md
|
|
98
|
-
Read .workflow/task-specs/${spec_ref}/epics/_index.md
|
|
99
|
-
```
|
|
73
|
+
- Read from `.workflow/task-specs/${spec_ref}/`: spec-summary.md, requirements/_index.md, epics/_index.md
|
|
100
74
|
|
|
101
75
|
3. **Load project specs**
|
|
102
76
|
```
|
|
@@ -105,120 +79,38 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
105
79
|
Pass to planner agent as project constraints context.
|
|
106
80
|
|
|
107
81
|
4. **Load codebase context**
|
|
108
|
-
|
|
109
|
-
If exists .workflow/codebase/doc-index.json:
|
|
110
|
-
Read doc-index.json -> extract relevant features, components, requirements
|
|
111
|
-
```
|
|
82
|
+
- Read `.workflow/codebase/doc-index.json` if exists → extract relevant features, components, requirements
|
|
112
83
|
|
|
113
84
|
4b. **Load design reference** (if available)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
designTokens = read_json("${PHASE_DIR}/design-ref/design-tokens.json")
|
|
118
|
-
animationTokens = read_json("${PHASE_DIR}/design-ref/animation-tokens.json") // optional
|
|
119
|
-
layoutTemplates = list("${PHASE_DIR}/design-ref/layout-templates/layout-*.json")
|
|
120
|
-
display "Found design reference from maestro-ui-design. Including in plan context."
|
|
121
|
-
// Pass to planner: MASTER.md, tokens, animation tokens, layout templates, prototype paths
|
|
122
|
-
// Ensure every UI task includes in read_first[]:
|
|
123
|
-
// - design-ref/design-tokens.json (colors, typography, component_styles)
|
|
124
|
-
// - design-ref/animation-tokens.json (transitions, keyframes)
|
|
125
|
-
// - design-ref/layout-templates/layout-{target}-*.json (relevant target layout)
|
|
126
|
-
// - design-ref/MASTER.md (overall design system reference)
|
|
127
|
-
ELSE IF phase goal matches UI keywords (landing|page|dashboard|frontend|UI|component|界面):
|
|
128
|
-
display "This phase has UI work but no design reference."
|
|
129
|
-
display "Consider: Skill({ skill: \"maestro-ui-design\", args: \"{phase}\" })"
|
|
130
|
-
// Continue without design ref — non-blocking suggestion
|
|
131
|
-
```
|
|
85
|
+
- If `${PHASE_DIR}/design-ref/MASTER.md` exists: load MASTER.md, design-tokens.json, animation-tokens.json (optional), layout-templates/layout-*.json
|
|
86
|
+
- Every UI task must include in `read_first[]`: design-tokens.json, animation-tokens.json, relevant layout-*.json, MASTER.md
|
|
87
|
+
- Else if phase goal matches UI keywords (`landing|page|dashboard|frontend|UI|component|界面`): suggest running `maestro-ui-design` (non-blocking)
|
|
132
88
|
|
|
133
89
|
5. **Load upstream analysis** (if available)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
explorationContext.explorations = read_json("${PHASE_DIR}/explorations.json")
|
|
142
|
-
IF file exists "${PHASE_DIR}/perspectives.json":
|
|
143
|
-
explorationContext.perspectives = read_json("${PHASE_DIR}/perspectives.json")
|
|
144
|
-
|
|
145
|
-
// Extract implementation scope (from analyze Step 9 scoping)
|
|
146
|
-
IF conclusions.implementation_scope is not empty:
|
|
147
|
-
explorationContext.implementationScope = conclusions.implementation_scope
|
|
148
|
-
display "Found implementation scope: ${conclusions.implementation_scope.length} scoped items with acceptance criteria"
|
|
149
|
-
// Planner MUST use these as primary input:
|
|
150
|
-
// scope.objective → task title/description
|
|
151
|
-
// scope.acceptance_criteria → convergence.criteria (make grep-verifiable)
|
|
152
|
-
// scope.target_files → files[] + read_first[]
|
|
153
|
-
// scope.priority → task/wave ordering
|
|
154
|
-
|
|
155
|
-
Skip step 5 (parallel exploration).
|
|
156
|
-
```
|
|
90
|
+
- If `${PHASE_DIR}/conclusions.json` exists with non-empty status: load as explorationContext (conclusions + explorations.json + perspectives.json)
|
|
91
|
+
- If `conclusions.implementation_scope` exists: use as primary planner input:
|
|
92
|
+
- `scope.objective` → task title/description
|
|
93
|
+
- `scope.acceptance_criteria` → convergence.criteria (grep-verifiable)
|
|
94
|
+
- `scope.target_files` → files[] + read_first[]
|
|
95
|
+
- `scope.priority` → task/wave ordering
|
|
96
|
+
- Skip parallel exploration
|
|
157
97
|
|
|
158
98
|
5. **Parallel exploration** (skip if `--gaps` or upstream analysis loaded)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
- implementation: What patterns/libraries to use?
|
|
163
|
-
- integration: What existing code needs modification?
|
|
164
|
-
- risk: What could go wrong?
|
|
165
|
-
|
|
166
|
-
Spawn 1-4 cli-explore-agent in parallel (based on complexity):
|
|
167
|
-
Each agent:
|
|
168
|
-
Input: phase goal + success_criteria + one exploration angle
|
|
169
|
-
Output: .process/exploration-{angle}.json
|
|
170
|
-
|
|
171
|
-
Write .process/explorations-manifest.json:
|
|
172
|
-
{ "explorations": [{ "angle": "...", "file": "...", "status": "completed" }] }
|
|
173
|
-
|
|
174
|
-
Write .process/context-package.json:
|
|
175
|
-
Aggregated exploration results for downstream consumption
|
|
176
|
-
```
|
|
99
|
+
- Exploration angles (1-4 based on complexity): architecture, implementation, integration, risk
|
|
100
|
+
- Spawn 1-4 `cli-explore-agent` in parallel, each with phase goal + success_criteria + one angle
|
|
101
|
+
- Output: `.process/exploration-{angle}.json`, `.process/explorations-manifest.json`, `.process/context-package.json`
|
|
177
102
|
|
|
178
103
|
6. **Gap-mode context** (if `--gaps`)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
issue_id: issue.id,
|
|
190
|
-
description: issue.description,
|
|
191
|
-
fix_direction: issue.fix_direction,
|
|
192
|
-
severity: issue.severity,
|
|
193
|
-
source: "issue",
|
|
194
|
-
context: issue.context
|
|
195
|
-
})
|
|
196
|
-
Update issue in issues.jsonl: status = "planning"
|
|
197
|
-
|
|
198
|
-
// Fallback source: verification gaps (when no issues registry)
|
|
199
|
-
IF all_gaps is empty AND file exists "${PHASE_DIR}/verification.json":
|
|
200
|
-
verification = read_json("${PHASE_DIR}/verification.json")
|
|
201
|
-
all_gaps.extend(verification.gaps)
|
|
202
|
-
|
|
203
|
-
// Additional source: UAT human-found gaps
|
|
204
|
-
IF file exists "${PHASE_DIR}/uat.md":
|
|
205
|
-
Parse uat.md "Gaps" section into structured gap objects.
|
|
206
|
-
FOR each uat_gap:
|
|
207
|
-
IF not already covered in all_gaps (match by test/truth):
|
|
208
|
-
all_gaps.push({ ...uat_gap, source: "uat" })
|
|
209
|
-
|
|
210
|
-
// Enrichment source: debug diagnosis (enrich existing gaps)
|
|
211
|
-
FOR each debug_dir IN "${PHASE_DIR}/.debug/*/":
|
|
212
|
-
IF file exists "${debug_dir}/understanding.md":
|
|
213
|
-
Parse root_cause and fix_direction from understanding.md.
|
|
214
|
-
Match to existing gap by affected area/test_id.
|
|
215
|
-
IF matched: enrich gap with root_cause, fix_direction, affected_files.
|
|
216
|
-
|
|
217
|
-
IF all_gaps is empty:
|
|
218
|
-
Error: "--gaps mode requires issues.jsonl, verification.json, or uat.md with identified gaps."
|
|
219
|
-
|
|
220
|
-
Set explorationContext = all_gaps (skip exploration agents)
|
|
221
|
-
```
|
|
104
|
+
|
|
105
|
+
Gap sources (in priority order, first non-empty wins, then additionals merged):
|
|
106
|
+
- **Primary**: `.workflow/issues/issues.jsonl` — filter by phase_ref + status in ["registered","diagnosed"], mark as "planning"
|
|
107
|
+
- **Fallback**: `${PHASE_DIR}/verification.json` gaps (when no issues found)
|
|
108
|
+
- **Additional**: `${PHASE_DIR}/uat.md` "Gaps" section — deduplicate against existing gaps
|
|
109
|
+
- **Enrichment**: `${PHASE_DIR}/.debug/*/understanding.md` — enrich matched gaps with root_cause, fix_direction, affected_files
|
|
110
|
+
|
|
111
|
+
Each gap: `{ issue_id, description, fix_direction, severity, source, context }`
|
|
112
|
+
|
|
113
|
+
ERROR if all sources empty. Set `explorationContext = all_gaps` (skip exploration agents).
|
|
222
114
|
|
|
223
115
|
### Output
|
|
224
116
|
- `.process/exploration-{angle}.json` (1-4 files, skipped if upstream analysis loaded)
|
|
@@ -235,30 +127,12 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
235
127
|
### Steps
|
|
236
128
|
|
|
237
129
|
1. **Aggregate clarification needs**
|
|
238
|
-
|
|
239
|
-
For each exploration-{angle}.json:
|
|
240
|
-
Extract clarification_needs[] field
|
|
241
|
-
Deduplicate similar questions
|
|
242
|
-
Sort by priority (blocking > important > nice-to-have)
|
|
243
|
-
```
|
|
130
|
+
- Extract `clarification_needs[]` from each exploration, deduplicate, sort by priority (blocking > important > nice-to-have)
|
|
244
131
|
|
|
245
|
-
2. **Interactive clarification rounds**
|
|
246
|
-
|
|
247
|
-
While unresolved_questions > 0 AND round <= 3:
|
|
248
|
-
Present max 4 questions per round via AskUserQuestion
|
|
249
|
-
Record answers
|
|
250
|
-
Mark questions as resolved
|
|
251
|
-
Check if answers trigger follow-up questions
|
|
252
|
-
```
|
|
132
|
+
2. **Interactive clarification rounds** (max 3 rounds, max 4 questions each)
|
|
133
|
+
- Present via AskUserQuestion, record answers, check for follow-ups
|
|
253
134
|
|
|
254
|
-
3. **Build clarification context**
|
|
255
|
-
```
|
|
256
|
-
clarificationContext = {
|
|
257
|
-
questions_asked: [...],
|
|
258
|
-
answers: [...],
|
|
259
|
-
decisions_made: [...]
|
|
260
|
-
}
|
|
261
|
-
```
|
|
135
|
+
3. **Build clarification context** → `{ questions_asked, answers, decisions_made }`
|
|
262
136
|
|
|
263
137
|
### Output
|
|
264
138
|
- In-memory: clarificationContext
|
|
@@ -271,38 +145,17 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
271
145
|
|
|
272
146
|
### Standard Mode (default)
|
|
273
147
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
Agent responsibilities:
|
|
287
|
-
1. Decompose goal into concrete tasks
|
|
288
|
-
- **When implementationScope exists**: use each scope item as primary task seed
|
|
289
|
-
(1 scope item → 1 task, group only if tightly coupled)
|
|
290
|
-
2. Assign task IDs (TASK-001, TASK-002, ...)
|
|
291
|
-
3. Determine dependencies between tasks
|
|
292
|
-
4. Group tasks into execution waves
|
|
293
|
-
- **When implementationScope exists**: order by scope.priority (high first)
|
|
294
|
-
5. Estimate complexity and time
|
|
295
|
-
6. Set convergence.criteria (grep-verifiable) for each task
|
|
296
|
-
- **When implementationScope exists**: use scope.acceptance_criteria as seed,
|
|
297
|
-
then refine into grep-verifiable form
|
|
298
|
-
7. Identify files to create/modify per task
|
|
299
|
-
- **When implementationScope exists**: use scope.target_files as starting point
|
|
300
|
-
8. Populate read_first[] for each task
|
|
301
|
-
|
|
302
|
-
Output:
|
|
303
|
-
- plan.json (summary, approach, task_ids[], task_count, complexity, waves[])
|
|
304
|
-
- .task/TASK-{NNN}.json per task (using task.json template)
|
|
305
|
-
```
|
|
148
|
+
Spawn `workflow-planner` agent with: context.md, spec-ref, doc-index.json, explorationContext (incl. implementationScope), clarificationContext, phase goal + success_criteria, templates (plan.json, task.json).
|
|
149
|
+
|
|
150
|
+
Agent responsibilities:
|
|
151
|
+
1. Decompose goal into tasks (when implementationScope exists: 1 scope item → 1 task)
|
|
152
|
+
2. Assign task IDs (TASK-001, TASK-002, ...), determine dependencies
|
|
153
|
+
3. Group into execution waves (implementationScope: order by scope.priority)
|
|
154
|
+
4. Estimate complexity/time
|
|
155
|
+
5. Set grep-verifiable `convergence.criteria` (from scope.acceptance_criteria when available)
|
|
156
|
+
6. Identify files per task (from scope.target_files when available), populate `read_first[]`
|
|
157
|
+
|
|
158
|
+
Output: `plan.json` (summary, approach, task_ids[], task_count, complexity, waves[]) + `.task/TASK-{NNN}.json` per task.
|
|
306
159
|
|
|
307
160
|
### Deep Work Rules (MANDATORY for all modes)
|
|
308
161
|
|
|
@@ -336,53 +189,17 @@ Every TASK-*.json MUST include these fields — they are NOT optional:
|
|
|
336
189
|
|
|
337
190
|
### Collaborative Mode (`--collab`)
|
|
338
191
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
Planner 1: TASK-001..010
|
|
344
|
-
Planner 2: TASK-011..020
|
|
345
|
-
(etc.)
|
|
346
|
-
|
|
347
|
-
Create plan-note.md for coordination:
|
|
348
|
-
- Shared context summary
|
|
349
|
-
- ID range assignments
|
|
350
|
-
- Coordination rules (no overlapping files)
|
|
351
|
-
|
|
352
|
-
Spawn N workflow-collab-planner agents in parallel:
|
|
353
|
-
Each agent:
|
|
354
|
-
- Assigned ID range
|
|
355
|
-
- Read/append plan-note.md for coordination
|
|
356
|
-
- Output: .task/TASK-{NNN}.json within assigned range
|
|
357
|
-
|
|
358
|
-
Merge results:
|
|
359
|
-
- Collect all task files
|
|
360
|
-
- Build unified plan.json with merged waves
|
|
361
|
-
- Resolve cross-planner dependencies
|
|
362
|
-
```
|
|
192
|
+
- Pre-allocate TASK ID ranges per planner (2-5 planners based on scope): TASK-001..010, TASK-011..020, etc.
|
|
193
|
+
- Create `plan-note.md` for coordination (shared context, ID ranges, no-overlap rules)
|
|
194
|
+
- Spawn N `workflow-collab-planner` agents in parallel, each writing `.task/TASK-{NNN}.json` within assigned range
|
|
195
|
+
- Merge: collect all task files, build unified plan.json with merged waves, resolve cross-planner dependencies
|
|
363
196
|
|
|
364
197
|
### Gap Mode (`--gaps`)
|
|
365
198
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
type: "fix"
|
|
371
|
-
description: gap.description
|
|
372
|
-
action: gap.fix_direction (with concrete values, not vague references)
|
|
373
|
-
read_first: [affected files from gap context]
|
|
374
|
-
convergence.criteria: [grep-verifiable conditions derived from gap description]
|
|
375
|
-
issue_id: gap.issue_id (if source == "issue", else null)
|
|
376
|
-
|
|
377
|
-
Link tasks to issues (bidirectional):
|
|
378
|
-
For each created TASK-{NNN}.json that has issue_id:
|
|
379
|
-
Update corresponding issue in .workflow/issues/issues.jsonl:
|
|
380
|
-
status: "planned"
|
|
381
|
-
updated_at: now()
|
|
382
|
-
Display: "TASK-{NNN} <-> {issue_id}"
|
|
383
|
-
|
|
384
|
-
Build plan.json with gap-fix tasks
|
|
385
|
-
```
|
|
199
|
+
For each gap from explorationContext (P1 Step 6), create `TASK-{NNN}.json`:
|
|
200
|
+
- `type: "fix"`, `description`, `action` (concrete fix_direction), `read_first` (affected files), `convergence.criteria` (grep-verifiable), `issue_id` (if source == "issue")
|
|
201
|
+
|
|
202
|
+
Bidirectional linking: update matching issues in `.workflow/issues/issues.jsonl` → `status: "planned"`. Build plan.json with gap-fix tasks.
|
|
386
203
|
|
|
387
204
|
### Output
|
|
388
205
|
- `plan.json` in PHASE_DIR
|
|
@@ -398,44 +215,16 @@ Build plan.json with gap-fix tasks
|
|
|
398
215
|
### Steps
|
|
399
216
|
|
|
400
217
|
1. **Spawn workflow-plan-checker agent**
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
Check dimensions:
|
|
405
|
-
- Requirements coverage: Every success_criterion maps to at least one task
|
|
406
|
-
- Feasibility: Files referenced exist or can be created
|
|
407
|
-
- Dependency correctness: No circular deps, deps exist, wave ordering valid
|
|
408
|
-
- Convergence criteria quality: Each task has grep-verifiable convergence.criteria (no subjective language)
|
|
409
|
-
- read_first completeness: Every task has read_first[] with at least the file being modified
|
|
410
|
-
- Action concreteness: No vague "align X with Y" — every action has exact values
|
|
411
|
-
- Wave structure: Parallel tasks have no conflicting file modifications
|
|
412
|
-
- Completeness: No orphan tasks (not in any wave)
|
|
413
|
-
```
|
|
218
|
+
- Input: plan.json + all .task/TASK-*.json + index.json (success_criteria)
|
|
219
|
+
- Check dimensions: requirements coverage, feasibility, dependency correctness (no circular deps), convergence criteria quality (grep-verifiable, no subjective language), read_first completeness, action concreteness (no vague references), wave structure (no conflicting files), completeness (no orphan tasks)
|
|
414
220
|
|
|
415
221
|
2. **Revision loop** (max 3 rounds)
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
checker returns issues[] with severity + fix_suggestion
|
|
419
|
-
If critical issues:
|
|
420
|
-
Re-spawn workflow-planner with issues as additional input
|
|
421
|
-
Planner revises plan.json + affected .task/ files
|
|
422
|
-
Re-check
|
|
423
|
-
If only warnings:
|
|
424
|
-
Log warnings, proceed
|
|
425
|
-
```
|
|
222
|
+
- Critical issues → re-spawn planner with issues, revise, re-check
|
|
223
|
+
- Warnings only → log and proceed
|
|
426
224
|
|
|
427
225
|
3. **Update index.json**
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
task_ids: [extracted from plan.json],
|
|
431
|
-
task_count: plan.json.task_count,
|
|
432
|
-
complexity: plan.json.complexity,
|
|
433
|
-
waves: plan.json.waves,
|
|
434
|
-
executor_assignments: {} # populated by user override or auto-assignment in P5
|
|
435
|
-
}
|
|
436
|
-
index.json.status = "planning"
|
|
437
|
-
index.json.updated_at = now()
|
|
438
|
-
```
|
|
226
|
+
- Set `index.json.plan` = `{ task_ids, task_count, complexity, waves, executor_assignments: {} }`
|
|
227
|
+
- Set `status: "planning"`, `updated_at: now()`
|
|
439
228
|
|
|
440
229
|
### Output
|
|
441
230
|
- Updated plan.json (if revised)
|
|
@@ -451,40 +240,11 @@ Build plan.json with gap-fix tasks
|
|
|
451
240
|
**Skip if:** scope == "standalone" (no milestone context to compare against)
|
|
452
241
|
|
|
453
242
|
```
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
existing_files = {} // { file_path: [plan_id, ...] }
|
|
461
|
-
FOR each plan IN existing_plans:
|
|
462
|
-
tasks = load_all_tasks(plan.path + "/.task/")
|
|
463
|
-
FOR each task IN tasks:
|
|
464
|
-
FOR each file IN task.files:
|
|
465
|
-
existing_files[file].push(plan.id)
|
|
466
|
-
|
|
467
|
-
// 2. Collect new plan's file set
|
|
468
|
-
new_tasks = load_all_tasks(OUTPUT_DIR + "/.task/")
|
|
469
|
-
new_files = Set()
|
|
470
|
-
FOR each task IN new_tasks:
|
|
471
|
-
FOR each file IN task.files:
|
|
472
|
-
new_files.add(file)
|
|
473
|
-
|
|
474
|
-
// 3. Check intersection
|
|
475
|
-
collisions = []
|
|
476
|
-
FOR each file IN new_files:
|
|
477
|
-
IF file IN existing_files:
|
|
478
|
-
collisions.push({ file, existing_plans: existing_files[file] })
|
|
479
|
-
|
|
480
|
-
// 4. Report (non-blocking)
|
|
481
|
-
IF collisions.length > 0:
|
|
482
|
-
WARN: "碰撞检测发现 {collisions.length} 个文件重叠:"
|
|
483
|
-
FOR each c IN collisions:
|
|
484
|
-
" {c.file} ← 已在 {c.existing_plans.join(', ')} 中规划"
|
|
485
|
-
"建议: 确认是否有意覆盖,或调整 task 范围"
|
|
486
|
-
ELSE:
|
|
487
|
-
"碰撞检测通过: 无文件重叠"
|
|
243
|
+
1. Collect task.files[] from all completed plans in current milestone
|
|
244
|
+
2. Collect task.files[] from new plan
|
|
245
|
+
3. Intersect → collisions (non-blocking warning)
|
|
246
|
+
碰撞 → WARN "{file} ← 已在 {plan_ids} 中规划"
|
|
247
|
+
无重叠 → "碰撞检测通过"
|
|
488
248
|
```
|
|
489
249
|
|
|
490
250
|
**Note:** Only checks `task.files[]` (write targets). `task.read_first[]` (read-only references) are excluded.
|
|
@@ -497,77 +257,33 @@ ELSE:
|
|
|
497
257
|
|
|
498
258
|
### Steps
|
|
499
259
|
|
|
500
|
-
1. **Display plan summary**
|
|
501
|
-
```
|
|
502
|
-
Show:
|
|
503
|
-
- Plan summary and approach
|
|
504
|
-
- Task count and wave structure
|
|
505
|
-
- Complexity estimate
|
|
506
|
-
- Key dependencies
|
|
507
|
-
```
|
|
260
|
+
1. **Display plan summary** — summary, approach, task count, wave structure, complexity, key dependencies
|
|
508
261
|
|
|
509
|
-
2. **Present options via AskUserQuestion** (skip if `config.gates.confirm_plan == false`, auto-proceed
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
1. Execute now -> Build executionContext, hand off to /workflow:execute
|
|
515
|
-
2. Verify plan quality -> Re-run P4 with stricter checks
|
|
516
|
-
3. Just view -> Display full plan details, exit
|
|
517
|
-
4. Modify -> Open specific task for editing, return to P4
|
|
518
|
-
```
|
|
262
|
+
2. **Present options via AskUserQuestion** (skip if `config.gates.confirm_plan == false`, auto-proceed)
|
|
263
|
+
- Execute now → build executionContext, hand off to /workflow:execute
|
|
264
|
+
- Verify plan quality → re-run P4 with stricter checks
|
|
265
|
+
- Just view → display full plan details, exit
|
|
266
|
+
- Modify → open specific task for editing, return to P4
|
|
519
267
|
|
|
520
268
|
3. **executionContext handoff** (if "Execute now")
|
|
521
|
-
```
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
explorations: [ exploration-*.json contents ],
|
|
532
|
-
clarifications: clarificationContext,
|
|
533
|
-
executionMethod: executionMethod,
|
|
534
|
-
defaultExecutor: defaultExecutor,
|
|
535
|
-
executorAssignments: executorAssignments,
|
|
536
|
-
phaseIndex: index.json contents,
|
|
537
|
-
specRef: spec-ref contents (if loaded)
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"planObject": { "plan": "plan.json contents", "tasks": { "TASK-001": "..." } },
|
|
272
|
+
"explorations": ["exploration-*.json contents"],
|
|
273
|
+
"clarifications": "clarificationContext",
|
|
274
|
+
"executionMethod": "config.json.execution.method || 'agent'",
|
|
275
|
+
"defaultExecutor": "config.json.execution.default_executor || 'gemini'",
|
|
276
|
+
"executorAssignments": "index.json.plan.executor_assignments || {}",
|
|
277
|
+
"phaseIndex": "index.json contents",
|
|
278
|
+
"specRef": "spec-ref contents (if loaded)"
|
|
538
279
|
}
|
|
539
|
-
|
|
540
|
-
Hand off to /workflow:execute with executionContext in memory
|
|
541
280
|
```
|
|
281
|
+
Hand off to /workflow:execute with executionContext in memory.
|
|
542
282
|
|
|
543
283
|
4. **Register artifact in state.json**
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
upstream_analyze = state.json.artifacts
|
|
548
|
-
.filter(a => a.type == "analyze" && a.path == CONTEXT_DIR relative path)
|
|
549
|
-
.last() // most recent
|
|
550
|
-
|
|
551
|
-
next_id = max(artifacts.filter(a => a.type == "plan").map(a => parseInt(a.id.replace("PLN-","")))) + 1
|
|
552
|
-
|
|
553
|
-
artifact = {
|
|
554
|
-
id: "PLN-{next_id padded to 3}",
|
|
555
|
-
type: "plan",
|
|
556
|
-
milestone: state.json.current_milestone,
|
|
557
|
-
phase: PHASE_NUM,
|
|
558
|
-
scope: scope,
|
|
559
|
-
path: OUTPUT_DIR relative to .workflow/,
|
|
560
|
-
status: "completed",
|
|
561
|
-
depends_on: upstream_analyze?.id || null,
|
|
562
|
-
harvested: false,
|
|
563
|
-
created_at: plan_start_time,
|
|
564
|
-
completed_at: now()
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
state.json.artifacts.push(artifact)
|
|
568
|
-
state.json.last_updated = now()
|
|
569
|
-
Write state.json (atomic: write tmp + rename)
|
|
570
|
-
```
|
|
284
|
+
- Find upstream analyze artifact by CONTEXT_DIR path
|
|
285
|
+
- Create artifact: `{ id: "PLN-{NNN}", type: "plan", milestone, phase, scope, path, status: "completed", depends_on, harvested: false, created_at, completed_at }`
|
|
286
|
+
- Append to `state.json.artifacts`, atomic write
|
|
571
287
|
|
|
572
288
|
---
|
|
573
289
|
|
|
@@ -575,6 +291,9 @@ ELSE:
|
|
|
575
291
|
|
|
576
292
|
| Error | Action |
|
|
577
293
|
|-------|--------|
|
|
294
|
+
| E001: No args and no roadmap | Provide phase number or topic, or create roadmap |
|
|
295
|
+
| E004: No plan found to revise | Use --dir to specify plan, or create plan first |
|
|
296
|
+
| E005: Plan directory not found (--check) | Check path, use --dir |
|
|
578
297
|
| Phase directory not found | Abort with message: "Phase {phase} not found. Run /workflow:init first." |
|
|
579
298
|
| No context.md | Warn, proceed with exploration only |
|
|
580
299
|
| Exploration agent fails | Log error, continue with available explorations |
|
|
@@ -592,3 +311,73 @@ ELSE:
|
|
|
592
311
|
| P3 complete | index.json.plan.* | Plan metadata |
|
|
593
312
|
| P4 pass | index.json.updated_at | Current timestamp |
|
|
594
313
|
| P5 "Execute now" | (handoff, no write) | executionContext in memory |
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Revise Mode (`--revise`)
|
|
318
|
+
|
|
319
|
+
Incrementally modify an existing plan without rebuilding from scratch.
|
|
320
|
+
|
|
321
|
+
### Plan Discovery
|
|
322
|
+
|
|
323
|
+
- `--dir` specified → use directly
|
|
324
|
+
- Else → latest completed plan artifact for current phase from state.json
|
|
325
|
+
- Not found → ERROR E004
|
|
326
|
+
|
|
327
|
+
### Execution Flow
|
|
328
|
+
|
|
329
|
+
1. **Load existing plan**
|
|
330
|
+
- Read `plan.json` + all `.task/TASK-*.json` from PLAN_DIR
|
|
331
|
+
- Show current plan summary: task count, waves, status per task
|
|
332
|
+
|
|
333
|
+
2. **Obtain revision instructions**
|
|
334
|
+
- If `--revise "instructions"` provided → parse as change directive
|
|
335
|
+
- If `--revise` without instructions → AskUserQuestion for what to change:
|
|
336
|
+
- Add/remove tasks
|
|
337
|
+
- Modify task scope, action, implementation
|
|
338
|
+
- Reorder waves or adjust dependencies
|
|
339
|
+
- Update convergence criteria
|
|
340
|
+
- Parse instructions into concrete changes
|
|
341
|
+
|
|
342
|
+
3. **Apply targeted changes**
|
|
343
|
+
- Modify affected TASK files in-place
|
|
344
|
+
- If tasks added/removed: re-sequence task IDs, regenerate wave assignments
|
|
345
|
+
- Update plan.json summary (task count, wave structure)
|
|
346
|
+
- Preserve unmodified tasks completely
|
|
347
|
+
|
|
348
|
+
4. **Re-run plan-checker (P4)**
|
|
349
|
+
- Validate modified plan with same checker as create mode
|
|
350
|
+
- Re-run collision detection against same-milestone plans
|
|
351
|
+
- Present check results for confirmation
|
|
352
|
+
|
|
353
|
+
5. **Update artifact**
|
|
354
|
+
- Overwrite plan files in existing scratch directory
|
|
355
|
+
- Update artifact timestamp in state.json (no new artifact created)
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Check Mode (`--check`)
|
|
360
|
+
|
|
361
|
+
Read-only plan verification without modification.
|
|
362
|
+
|
|
363
|
+
### Execution Flow
|
|
364
|
+
|
|
365
|
+
1. **Load plan** — read plan.json + .task/TASK-*.json from `--check` path (ERROR E005 if not found), plus roadmap.md
|
|
366
|
+
|
|
367
|
+
2. **Run checks** — plan-checker (task quality, convergence criteria), roadmap consistency, collision detection, dependency integrity
|
|
368
|
+
|
|
369
|
+
3. **Produce check report**
|
|
370
|
+
```
|
|
371
|
+
=== PLAN CHECK ===
|
|
372
|
+
Plan: {plan_dir}/plan.json
|
|
373
|
+
Tasks: {total} ({completed} done, {pending} pending)
|
|
374
|
+
Checker: {PASS|WARN|FAIL} ({issues} issues)
|
|
375
|
+
Roadmap: {aligned|drift detected}
|
|
376
|
+
Collision: {clear|{N} overlaps}
|
|
377
|
+
|
|
378
|
+
Suggested actions:
|
|
379
|
+
/maestro-plan --revise "fix instructions"
|
|
380
|
+
/maestro-execute --dir {plan_dir}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**No file modifications.** Pure verification + report.
|