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/review.md
CHANGED
|
@@ -16,15 +16,9 @@ Tiered multi-dimensional code review with parallel agents, severity classificati
|
|
|
16
16
|
```
|
|
17
17
|
Input: <phase> argument (number or slug)
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
IF number: art = artifacts.find(a => a.type === 'execute' && a.phase === number)
|
|
23
|
-
IF slug: art = artifacts.find(a => a.type === 'execute' && a.slug?.includes(slug))
|
|
24
|
-
IF art: PHASE_DIR = ".workflow/" + art.path
|
|
25
|
-
ELSE: ERROR "Phase not found in artifact registry"
|
|
26
|
-
|
|
27
|
-
Validate execution has occurred (tasks_completed > 0 or .task/ exists)
|
|
19
|
+
Resolve phase from .workflow/state.json artifacts (type=execute, match by phase number or slug)
|
|
20
|
+
→ PHASE_DIR = ".workflow/" + artifact.path
|
|
21
|
+
→ Error if not found or no completed tasks
|
|
28
22
|
```
|
|
29
23
|
|
|
30
24
|
---
|
|
@@ -61,25 +55,16 @@ Three tiers that scale with task depth:
|
|
|
61
55
|
### 1a: Extract from task summaries
|
|
62
56
|
|
|
63
57
|
```
|
|
64
|
-
changed_files
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
FOR each .task/TASK-{NNN}.json in PHASE_DIR:
|
|
70
|
-
Extract files[].path where action is "create" or "modify"
|
|
71
|
-
Add to changed_files[]
|
|
72
|
-
|
|
73
|
-
Deduplicate changed_files
|
|
58
|
+
Collect changed_files from PHASE_DIR:
|
|
59
|
+
- .summaries/TASK-{NNN}-summary.md → extract referenced file paths (created/modified/deleted)
|
|
60
|
+
- .task/TASK-{NNN}.json → extract files[].path where action is create|modify
|
|
61
|
+
Deduplicate result
|
|
74
62
|
```
|
|
75
63
|
|
|
76
64
|
### 1b: Validate files exist
|
|
77
65
|
|
|
78
66
|
```
|
|
79
|
-
review_files =
|
|
80
|
-
FOR each file in changed_files:
|
|
81
|
-
IF file exists on disk AND is not in excluded patterns:
|
|
82
|
-
review_files.push(file)
|
|
67
|
+
review_files = changed_files filtered to: exists on disk AND not in excluded patterns
|
|
83
68
|
|
|
84
69
|
Excluded patterns:
|
|
85
70
|
- node_modules/**, vendor/**, dist/**, build/**
|
|
@@ -90,8 +75,7 @@ Excluded patterns:
|
|
|
90
75
|
### 1c: Error if empty
|
|
91
76
|
|
|
92
77
|
```
|
|
93
|
-
|
|
94
|
-
Abort with E004: "No changed files detected in phase"
|
|
78
|
+
Abort E004 if review_files is empty
|
|
95
79
|
```
|
|
96
80
|
|
|
97
81
|
---
|
|
@@ -99,18 +83,8 @@ IF review_files.length == 0:
|
|
|
99
83
|
## Step 2: Determine Review Level
|
|
100
84
|
|
|
101
85
|
```
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
ELSE:
|
|
105
|
-
is_critical_phase = index.json.priority == "critical" || index.json.tags?.includes("critical")
|
|
106
|
-
file_count = review_files.length
|
|
107
|
-
|
|
108
|
-
IF file_count <= 3:
|
|
109
|
-
level = "quick"
|
|
110
|
-
ELSE IF file_count >= 20 OR is_critical_phase:
|
|
111
|
-
level = "deep"
|
|
112
|
-
ELSE:
|
|
113
|
-
level = "standard"
|
|
86
|
+
level = --level flag value, or auto-detect:
|
|
87
|
+
≤3 files → quick | ≥20 files or critical phase → deep | otherwise → standard
|
|
114
88
|
|
|
115
89
|
Log: "Review level: {level} ({file_count} files)"
|
|
116
90
|
```
|
|
@@ -118,12 +92,9 @@ Log: "Review level: {level} ({file_count} files)"
|
|
|
118
92
|
### Determine dimensions
|
|
119
93
|
|
|
120
94
|
```
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
dimensions = ["correctness", "security"]
|
|
125
|
-
ELSE:
|
|
126
|
-
dimensions = ["correctness", "security", "performance", "architecture", "maintainability", "best-practices"]
|
|
95
|
+
dimensions = --dimensions flag (comma-separated), or level defaults:
|
|
96
|
+
quick → [correctness, security]
|
|
97
|
+
standard|deep → [correctness, security, performance, architecture, maintainability, best-practices]
|
|
127
98
|
```
|
|
128
99
|
|
|
129
100
|
---
|
|
@@ -150,13 +121,8 @@ review_context = {
|
|
|
150
121
|
success_criteria: index.json.success_criteria,
|
|
151
122
|
tech_stack: detect from package.json / pyproject.toml / go.mod / Cargo.toml,
|
|
152
123
|
specs: specs_content (from Step 3),
|
|
153
|
-
verification_gaps:
|
|
124
|
+
verification_gaps: load from ${PHASE_DIR}/verification.json .gaps if exists, else []
|
|
154
125
|
}
|
|
155
|
-
|
|
156
|
-
IF file exists "${PHASE_DIR}/verification.json":
|
|
157
|
-
Load verification.json
|
|
158
|
-
review_context.verification_gaps = verification.json.gaps
|
|
159
|
-
(Reviewers use this to focus on areas with known issues)
|
|
160
126
|
```
|
|
161
127
|
|
|
162
128
|
---
|
|
@@ -170,30 +136,15 @@ IF file exists "${PHASE_DIR}/verification.json":
|
|
|
170
136
|
No agents spawned. The orchestrator performs the review directly.
|
|
171
137
|
|
|
172
138
|
```
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
FOR each dimension in dimensions: // correctness, security
|
|
176
|
-
FOR each file in review_files:
|
|
177
|
-
Read file content
|
|
178
|
-
Apply dimension-specific checks:
|
|
179
|
-
|
|
180
|
-
IF dimension == "correctness":
|
|
181
|
-
- Scan for: unhandled null/undefined, missing error propagation, type mismatches
|
|
182
|
-
- Scan for: off-by-one patterns, missing boundary checks
|
|
183
|
-
- Scan for: unreachable code, logic contradictions
|
|
139
|
+
Scan each review_file against each dimension, collecting findings:
|
|
184
140
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- Scan for: XSS vectors (unsanitized user content in output)
|
|
141
|
+
correctness: unhandled null/undefined, missing error propagation, type mismatches,
|
|
142
|
+
off-by-one, missing boundary checks, unreachable code, logic contradictions
|
|
143
|
+
security: SQL/command injection, hardcoded secrets/keys/passwords,
|
|
144
|
+
missing input validation, XSS vectors
|
|
190
145
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
id: "{PREFIX}-{NNN}",
|
|
194
|
-
dimension, severity, title, file, line, snippet,
|
|
195
|
-
description, impact, suggestion
|
|
196
|
-
})
|
|
146
|
+
Each finding: { id: "{PREFIX}-{NNN}", dimension, severity, title, file, line, snippet,
|
|
147
|
+
description, impact, suggestion }
|
|
197
148
|
```
|
|
198
149
|
|
|
199
150
|
**After inline scan, skip to Step 6 (Aggregate).**
|
|
@@ -203,91 +154,32 @@ FOR each dimension in dimensions: // correctness, security
|
|
|
203
154
|
Spawn one workflow-reviewer agent per dimension, all in parallel:
|
|
204
155
|
|
|
205
156
|
```
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
## Files to Review
|
|
216
|
-
{review_files joined by newline}
|
|
217
|
-
|
|
218
|
-
## Phase Context
|
|
219
|
-
Success criteria: {success_criteria}
|
|
220
|
-
Tech stack: {tech_stack}
|
|
221
|
-
|
|
222
|
-
## Project Specs
|
|
223
|
-
{specs_content or "No specs loaded"}
|
|
224
|
-
|
|
225
|
-
## Known Issues (from verification)
|
|
226
|
-
{verification_gaps or "No prior verification gaps"}
|
|
227
|
-
|
|
228
|
-
## Instructions
|
|
229
|
-
1. Read each file listed above
|
|
230
|
-
2. Analyze for {dimension}-specific issues only
|
|
231
|
-
3. Classify each finding: critical / high / medium / low
|
|
232
|
-
4. Return findings as JSON array with: id, dimension, severity, title, file, line, snippet, description, impact, suggestion, spec_violation (if applicable)
|
|
233
|
-
5. Limit to top 20 findings, prioritized by severity
|
|
234
|
-
6. Every finding MUST have file:line evidence
|
|
235
|
-
`
|
|
236
|
-
})
|
|
157
|
+
Per dimension → spawn workflow-reviewer agent (all parallel):
|
|
158
|
+
Context: dimension, phase_name, phase_goal, review_files, success_criteria,
|
|
159
|
+
tech_stack, specs_content, verification_gaps
|
|
160
|
+
Instructions:
|
|
161
|
+
- Read each file, analyze for {dimension}-specific issues only
|
|
162
|
+
- Classify: critical / high / medium / low
|
|
163
|
+
- Return JSON array: id, dimension, severity, title, file, line, snippet,
|
|
164
|
+
description, impact, suggestion, spec_violation (if applicable)
|
|
165
|
+
- Top 20 findings by severity, each with file:line evidence
|
|
237
166
|
```
|
|
238
167
|
|
|
239
168
|
**Launch ALL dimension agents in a single message** (parallel execution).
|
|
240
169
|
|
|
241
|
-
Collect results
|
|
242
|
-
```
|
|
243
|
-
dimension_results = {}
|
|
244
|
-
FOR each completed agent:
|
|
245
|
-
Parse JSON findings array from agent output
|
|
246
|
-
dimension_results[dimension] = findings[]
|
|
247
|
-
IF agent failed:
|
|
248
|
-
Log warning W001, continue with partial results
|
|
249
|
-
```
|
|
170
|
+
Collect dimension_results from each agent (JSON findings array). Log W001 on agent failure, continue with partial results.
|
|
250
171
|
|
|
251
172
|
### Deep Level — Enhanced Agent Review
|
|
252
173
|
|
|
253
174
|
Same parallel agent spawning as standard, but with enhanced prompt:
|
|
254
175
|
|
|
255
176
|
```
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
Dimension: {dimension}
|
|
263
|
-
Phase: {phase_name} — {phase_goal}
|
|
264
|
-
Review Level: DEEP — thorough analysis required
|
|
265
|
-
|
|
266
|
-
## Files to Review
|
|
267
|
-
{review_files joined by newline}
|
|
268
|
-
|
|
269
|
-
## Phase Context
|
|
270
|
-
Success criteria: {success_criteria}
|
|
271
|
-
Tech stack: {tech_stack}
|
|
272
|
-
|
|
273
|
-
## Project Specs
|
|
274
|
-
{specs_content or "No specs loaded"}
|
|
275
|
-
|
|
276
|
-
## Known Issues (from verification)
|
|
277
|
-
{verification_gaps or "No prior verification gaps"}
|
|
278
|
-
|
|
279
|
-
## Instructions (Deep Mode)
|
|
280
|
-
1. Read each file listed above completely
|
|
281
|
-
2. For each file, also read its direct imports to understand context
|
|
282
|
-
3. Analyze for {dimension}-specific issues
|
|
283
|
-
4. Classify each finding: critical / high / medium / low
|
|
284
|
-
5. For critical/high findings: trace callers and dependents
|
|
285
|
-
6. Cross-reference patterns across files (duplication, inconsistency)
|
|
286
|
-
7. Return findings as JSON array with: id, dimension, severity, title, file, line, snippet, description, impact, suggestion, spec_violation, related_files[]
|
|
287
|
-
8. Limit to top 30 findings, prioritized by severity
|
|
288
|
-
9. Every finding MUST have file:line evidence
|
|
289
|
-
`
|
|
290
|
-
})
|
|
177
|
+
Same parallel agent spawning as standard, with deep-mode enhancements:
|
|
178
|
+
- Also read direct imports for context
|
|
179
|
+
- Trace callers/dependents for critical/high findings
|
|
180
|
+
- Cross-reference patterns across files (duplication, inconsistency)
|
|
181
|
+
- Return includes additional field: related_files[]
|
|
182
|
+
- Top 30 findings (vs 20 for standard)
|
|
291
183
|
```
|
|
292
184
|
|
|
293
185
|
Collect results same as standard.
|
|
@@ -299,50 +191,30 @@ Collect results same as standard.
|
|
|
299
191
|
### 6a: Merge all findings
|
|
300
192
|
|
|
301
193
|
```
|
|
302
|
-
all_findings =
|
|
303
|
-
FOR each dimension in dimension_results (or inline results for quick):
|
|
304
|
-
all_findings.push(...findings)
|
|
305
|
-
|
|
306
|
-
Sort all_findings by severity (critical > high > medium > low), then by dimension
|
|
194
|
+
all_findings = merge all dimension results, sorted by severity (critical > high > medium > low), then dimension
|
|
307
195
|
```
|
|
308
196
|
|
|
309
197
|
### 6b: Severity distribution
|
|
310
198
|
|
|
311
199
|
```
|
|
312
|
-
severity_dist = {
|
|
313
|
-
critical: all_findings.filter(f => f.severity == "critical").length,
|
|
314
|
-
high: all_findings.filter(f => f.severity == "high").length,
|
|
315
|
-
medium: all_findings.filter(f => f.severity == "medium").length,
|
|
316
|
-
low: all_findings.filter(f => f.severity == "low").length
|
|
317
|
-
}
|
|
200
|
+
severity_dist = count all_findings by severity {critical, high, medium, low}
|
|
318
201
|
```
|
|
319
202
|
|
|
320
203
|
### 6c: Identify critical files (standard + deep only)
|
|
321
204
|
|
|
322
205
|
```
|
|
323
206
|
IF level != "quick":
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
IF finding.severity in ["critical", "high"]:
|
|
327
|
-
file_dimension_map[finding.file] = file_dimension_map[finding.file] || new Set()
|
|
328
|
-
file_dimension_map[finding.file].add(finding.dimension)
|
|
329
|
-
|
|
330
|
-
critical_files = Object.entries(file_dimension_map)
|
|
331
|
-
.filter(([file, dims]) => dims.size >= 3)
|
|
332
|
-
.map(([file, dims]) => ({ file, dimensions: [...dims] }))
|
|
207
|
+
critical_files = files with critical/high findings across 3+ distinct dimensions
|
|
208
|
+
→ [{ file, dimensions[] }]
|
|
333
209
|
```
|
|
334
210
|
|
|
335
211
|
### 6d: Determine verdict
|
|
336
212
|
|
|
337
213
|
```
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
ELSE IF severity_dist.high > 0:
|
|
343
|
-
verdict = "WARN" // Should fix, can proceed with acknowledgment
|
|
344
|
-
ELSE:
|
|
345
|
-
verdict = "PASS" // Good to proceed
|
|
214
|
+
verdict:
|
|
215
|
+
BLOCK → any critical, or >5 high
|
|
216
|
+
WARN → any high (≤5)
|
|
217
|
+
PASS → no critical or high
|
|
346
218
|
```
|
|
347
219
|
|
|
348
220
|
---
|
|
@@ -360,73 +232,34 @@ ELSE:
|
|
|
360
232
|
### 7a: Select deep-dive targets
|
|
361
233
|
|
|
362
234
|
```
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
.slice(0, 15) // More targets for deep level
|
|
367
|
-
ELSE:
|
|
368
|
-
deep_dive_targets = all_findings
|
|
369
|
-
.filter(f => f.severity == "critical")
|
|
370
|
-
.slice(0, 10)
|
|
235
|
+
deep_dive_targets:
|
|
236
|
+
deep → critical + high findings, top 15
|
|
237
|
+
standard → critical findings only, top 10
|
|
371
238
|
```
|
|
372
239
|
|
|
373
240
|
### 7b: Deep-dive iteration
|
|
374
241
|
|
|
375
242
|
```
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
grep -r "{identifier}" src/ --include="*.ts" --include="*.tsx" --include="*.py"
|
|
397
|
-
3. Check related test files for coverage
|
|
398
|
-
|
|
399
|
-
## Analyze
|
|
400
|
-
- Root cause: Why does this issue exist?
|
|
401
|
-
- Impact radius: What other code is affected?
|
|
402
|
-
- Remediation: Specific fix with code example
|
|
403
|
-
- Risk: What could go wrong if unfixed?
|
|
404
|
-
|
|
405
|
-
## Output
|
|
406
|
-
Return JSON:
|
|
407
|
-
{
|
|
408
|
-
"finding_id": "{target.id}",
|
|
409
|
-
"root_cause": "...",
|
|
410
|
-
"impact_radius": ["file1.ts", "file2.ts"],
|
|
411
|
-
"remediation": { "approach": "...", "code_example": "..." },
|
|
412
|
-
"risk_if_unfixed": "...",
|
|
413
|
-
"reassessed_severity": "critical|high|medium|low",
|
|
414
|
-
"confidence": 0.0-1.0
|
|
415
|
-
}
|
|
416
|
-
`
|
|
417
|
-
})
|
|
418
|
-
|
|
419
|
-
Merge results:
|
|
420
|
-
FOR each result:
|
|
421
|
-
Find original finding by finding_id
|
|
422
|
-
Enrich with root_cause, impact_radius, remediation, risk_if_unfixed
|
|
423
|
-
IF result.confidence >= 0.8:
|
|
424
|
-
target.deep_dive_complete = true
|
|
425
|
-
Update severity if reassessed differently (with justification)
|
|
426
|
-
deep_dive_results.push(result)
|
|
427
|
-
|
|
428
|
-
IF level == "deep" AND iteration < max_iterations:
|
|
429
|
-
Log: "Deep-dive iteration {iteration} complete. {unresolved remaining} findings need further analysis."
|
|
243
|
+
Iterate up to max_iterations (deep=3, standard=1) over unresolved targets:
|
|
244
|
+
|
|
245
|
+
Per target → spawn workflow-reviewer agent:
|
|
246
|
+
Context: original finding JSON, previous analysis (if iteration > 1)
|
|
247
|
+
Tasks: read affected file, find callers/imports, check test coverage
|
|
248
|
+
Analyze: root cause, impact radius, remediation (with code example), risk if unfixed
|
|
249
|
+
|
|
250
|
+
Return JSON:
|
|
251
|
+
{
|
|
252
|
+
"finding_id": "{target.id}",
|
|
253
|
+
"root_cause": "...",
|
|
254
|
+
"impact_radius": ["file1.ts", "file2.ts"],
|
|
255
|
+
"remediation": { "approach": "...", "code_example": "..." },
|
|
256
|
+
"risk_if_unfixed": "...",
|
|
257
|
+
"reassessed_severity": "critical|high|medium|low",
|
|
258
|
+
"confidence": 0.0-1.0
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
Merge: enrich original finding, mark complete if confidence >= 0.8,
|
|
262
|
+
update severity if reassessed. Stop early if all resolved.
|
|
430
263
|
```
|
|
431
264
|
|
|
432
265
|
---
|
|
@@ -442,56 +275,20 @@ FOR iteration = 1 TO max_iterations:
|
|
|
442
275
|
| Deep | Critical + High + Medium |
|
|
443
276
|
|
|
444
277
|
```
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
Extract all id fields matching today's date prefix ISS-YYYYMMDD-*
|
|
458
|
-
existing_ids = collected IDs
|
|
459
|
-
|
|
460
|
-
today = format(now(), "YYYYMMDD")
|
|
461
|
-
counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
|
|
462
|
-
|
|
463
|
-
FOR each finding IN issue_findings:
|
|
464
|
-
issue_id = "ISS-{today}-{counter padded to 3 digits}"
|
|
465
|
-
issue = {
|
|
466
|
-
id: issue_id,
|
|
467
|
-
title: "[{finding.dimension}] {finding.title}" (truncated to 100 chars),
|
|
468
|
-
status: "registered",
|
|
469
|
-
priority: severity_to_priority(finding.severity),
|
|
470
|
-
severity: finding.severity,
|
|
471
|
-
source: "review",
|
|
472
|
-
phase_ref: PHASE_NUM,
|
|
473
|
-
gap_ref: finding.id,
|
|
474
|
-
description: finding.description,
|
|
475
|
-
fix_direction: finding.suggestion,
|
|
476
|
-
context: {
|
|
477
|
-
location: "{finding.file}:{finding.line}",
|
|
478
|
-
suggested_fix: finding.suggestion,
|
|
479
|
-
notes: finding.impact
|
|
480
|
-
},
|
|
481
|
-
tags: ["review", finding.dimension],
|
|
482
|
-
affected_components: [],
|
|
483
|
-
feedback: [],
|
|
484
|
-
issue_history: [],
|
|
485
|
-
created_at: now(),
|
|
486
|
-
updated_at: now(),
|
|
487
|
-
resolved_at: null,
|
|
488
|
-
resolution: null
|
|
489
|
-
}
|
|
490
|
-
Append JSON line to .workflow/issues/issues.jsonl
|
|
491
|
-
finding.issue_id = issue_id
|
|
492
|
-
counter++
|
|
278
|
+
Filter findings by level threshold (quick=critical, standard=critical+high, deep=+medium)
|
|
279
|
+
|
|
280
|
+
For each qualifying finding → append issue to .workflow/issues/issues.jsonl:
|
|
281
|
+
id: "ISS-{YYYYMMDD}-{NNN}" (auto-increment from existing today's entries)
|
|
282
|
+
title: "[{dimension}] {title}" (max 100 chars)
|
|
283
|
+
status: "registered"
|
|
284
|
+
priority: severity_to_priority (critical→1, high→2, medium→3)
|
|
285
|
+
severity, source: "review", phase_ref, gap_ref: finding.id
|
|
286
|
+
description, fix_direction: finding.suggestion
|
|
287
|
+
context: { location: "{file}:{line}", suggested_fix, notes: impact }
|
|
288
|
+
tags: ["review", dimension]
|
|
289
|
+
Timestamps: created_at, updated_at = now()
|
|
493
290
|
|
|
494
|
-
|
|
291
|
+
Link finding.issue_id back to created issue
|
|
495
292
|
```
|
|
496
293
|
|
|
497
294
|
**severity_to_priority mapping**: critical → 1, high → 2, medium → 3
|
|
@@ -502,10 +299,7 @@ IF issue_findings.length > 0:
|
|
|
502
299
|
|
|
503
300
|
**Archive previous review artifacts** before writing:
|
|
504
301
|
```
|
|
505
|
-
|
|
506
|
-
mkdir -p "${PHASE_DIR}/.history"
|
|
507
|
-
TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
|
|
508
|
-
mv "${PHASE_DIR}/review.json" "${PHASE_DIR}/.history/review-${TIMESTAMP}.json"
|
|
302
|
+
Archive existing review.json → ${PHASE_DIR}/.history/review-{YYYY-MM-DDTHH-mm-ss}.json
|
|
509
303
|
```
|
|
510
304
|
|
|
511
305
|
```
|
|
@@ -537,15 +331,9 @@ Write ${PHASE_DIR}/review.json:
|
|
|
537
331
|
## Step 10: Update index.json
|
|
538
332
|
|
|
539
333
|
```
|
|
540
|
-
index.json.updated_at = now()
|
|
541
|
-
index.json.review = {
|
|
542
|
-
|
|
543
|
-
verdict: review.json.verdict,
|
|
544
|
-
reviewed_at: review.json.reviewed_at,
|
|
545
|
-
severity_distribution: review.json.severity_distribution,
|
|
546
|
-
findings_count: review.json.severity_distribution.total,
|
|
547
|
-
issues_created: review.json.issues_created.length
|
|
548
|
-
}
|
|
334
|
+
Update index.json.updated_at = now()
|
|
335
|
+
Set index.json.review = { level, verdict, reviewed_at, severity_distribution,
|
|
336
|
+
findings_count, issues_created count }
|
|
549
337
|
```
|
|
550
338
|
|
|
551
339
|
---
|
|
@@ -592,7 +380,7 @@ Next steps:
|
|
|
592
380
|
|
|
593
381
|
| Verdict | Suggestion |
|
|
594
382
|
|---------|------------|
|
|
595
|
-
| PASS | Skill({ skill: "quality-test", args: "{phase}" }) for UAT, or Skill({ skill: "maestro-
|
|
383
|
+
| PASS | Skill({ skill: "quality-test", args: "{phase}" }) for UAT, or Skill({ skill: "maestro-milestone-audit" }) if UAT already passed |
|
|
596
384
|
| WARN | Review findings, then Skill({ skill: "quality-test", args: "{phase}" }) — acknowledge warnings before proceeding |
|
|
597
385
|
| BLOCK | Fix critical issues first: Skill({ skill: "maestro-plan", args: "{phase} --gaps" }) -> Skill({ skill: "maestro-execute", args: "{phase}" }) -> re-run Skill({ skill: "quality-review", args: "{phase}" }) |
|
|
598
386
|
|