maestro-flow 0.3.15 → 0.3.17
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/agents/workflow-planner.md +24 -8
- package/.claude/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- 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-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/.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 +4 -76
- 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 +70 -166
- package/.codex/skills/maestro-player/SKILL.md +24 -149
- 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/install-ui/ExecutionView.d.ts.map +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js +4 -1
- package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +4 -1
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install.js +5 -5
- package/dist/src/commands/install.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/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +31 -21
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/core/manifest.d.ts +8 -1
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js +3 -1
- package/dist/src/core/manifest.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/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 +188 -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/verify.md
CHANGED
|
@@ -17,45 +17,15 @@ Dual verification: Goal-Backward structural verification + Nyquist test coverage
|
|
|
17
17
|
```
|
|
18
18
|
Input: [phase] argument OR --dir <path>
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
PLAN_DIRS = [<path>]
|
|
30
|
-
VERIFY_MODE = "single"
|
|
31
|
-
VERIFY_OUTPUT_DIR = <path> // verification.json written into plan dir
|
|
32
|
-
|
|
33
|
-
ELSE IF no arguments:
|
|
34
|
-
// Milestone-level verification
|
|
35
|
-
Read state.json.artifacts
|
|
36
|
-
PLAN_DIRS = artifacts.filter(a =>
|
|
37
|
-
a.milestone == current_milestone &&
|
|
38
|
-
a.type == "execute" &&
|
|
39
|
-
a.status == "completed"
|
|
40
|
-
).map(a => a.path)
|
|
41
|
-
IF PLAN_DIRS is empty: ERROR E001
|
|
42
|
-
VERIFY_MODE = "milestone"
|
|
43
|
-
milestone_slug = slugify(current_milestone name)
|
|
44
|
-
VERIFY_OUTPUT_DIR = .workflow/scratch/verify-{milestone_slug}-{date}/
|
|
45
|
-
mkdir -p VERIFY_OUTPUT_DIR
|
|
46
|
-
|
|
47
|
-
ELSE IF argument is a number:
|
|
48
|
-
// Phase-level verification
|
|
49
|
-
Read state.json.artifacts
|
|
50
|
-
PLAN_DIRS = artifacts.filter(a =>
|
|
51
|
-
a.milestone == current_milestone &&
|
|
52
|
-
a.type == "execute" &&
|
|
53
|
-
a.phase == arg &&
|
|
54
|
-
a.status == "completed"
|
|
55
|
-
).map(a => a.path)
|
|
56
|
-
IF PLAN_DIRS is empty: ERROR E001
|
|
57
|
-
VERIFY_MODE = "phase"
|
|
58
|
-
VERIFY_OUTPUT_DIR = first plan dir // single plan → write there
|
|
20
|
+
Worktree scope check: if .workflow/worktree-scope.json exists, reject phases not in scope.owned_phases.
|
|
21
|
+
|
|
22
|
+
Resolve PLAN_DIRS and VERIFY_MODE by input type:
|
|
23
|
+
--dir <path> → single mode, PLAN_DIRS=[path], output into plan dir
|
|
24
|
+
no arguments → milestone mode, collect completed execute artifacts for current milestone from state.json
|
|
25
|
+
numeric arg → phase mode, collect completed execute artifacts for that phase from state.json
|
|
26
|
+
|
|
27
|
+
If no matching artifacts found: ERROR E001.
|
|
28
|
+
Milestone mode creates output dir: .workflow/scratch/verify-{milestone_slug}-{date}/
|
|
59
29
|
```
|
|
60
30
|
|
|
61
31
|
---
|
|
@@ -88,118 +58,44 @@ Pass specs_content to verifier agent as quality standards context.
|
|
|
88
58
|
### Step 1: Extract Constraints from Specs
|
|
89
59
|
|
|
90
60
|
```
|
|
91
|
-
constraints
|
|
92
|
-
allowed_libs
|
|
93
|
-
disallowed_imports
|
|
94
|
-
required_patterns
|
|
95
|
-
}
|
|
61
|
+
Extract from specs_content into constraints object:
|
|
62
|
+
allowed_libs[] ← "tech_stack" / "technology" sections
|
|
63
|
+
disallowed_imports[] ← "constraints" / "disallowed" / "forbidden" sections
|
|
64
|
+
required_patterns[] ← "required_patterns" / "conventions" sections
|
|
96
65
|
|
|
97
|
-
|
|
98
|
-
- "tech_stack" / "technology" sections -> extract allowed libraries/frameworks
|
|
99
|
-
- "constraints" / "disallowed" / "forbidden" sections -> extract disallowed imports
|
|
100
|
-
- "required_patterns" / "conventions" sections -> extract required patterns
|
|
101
|
-
|
|
102
|
-
IF constraints.allowed_libs is empty AND constraints.disallowed_imports is empty:
|
|
103
|
-
Print: "V0.5: No tech stack constraints found in specs, skipping."
|
|
104
|
-
constraint_violations = []
|
|
105
|
-
SKIP to V1
|
|
66
|
+
If no allowed_libs and no disallowed_imports found: skip to V1.
|
|
106
67
|
```
|
|
107
68
|
|
|
108
69
|
### Step 2: Collect Modified Files
|
|
109
70
|
|
|
110
71
|
```
|
|
111
|
-
modified_files
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
FOR each summary IN ${PHASE_DIR}/.summaries/TASK-*-summary.md:
|
|
115
|
-
Parse "Files Modified" section
|
|
116
|
-
Extract file paths -> add to modified_files[]
|
|
117
|
-
|
|
118
|
-
# Method 2: Fallback to git diff if no summaries or empty list
|
|
119
|
-
IF modified_files is empty:
|
|
120
|
-
modified_files = git diff --name-only HEAD~{tasks_completed} -- "*.ts" "*.tsx" "*.js" "*.jsx" "*.py" "*.java" "*.go"
|
|
121
|
-
|
|
122
|
-
# Deduplicate and filter to source files only
|
|
123
|
-
modified_files = unique(modified_files).filter(f => !f.includes("node_modules") && !f.includes(".test.") && !f.includes(".spec."))
|
|
72
|
+
Collect modified_files from task summaries ("Files Modified" sections).
|
|
73
|
+
Fallback: git diff --name-only HEAD~{tasks_completed} -- "*.ts" "*.tsx" "*.js" "*.jsx" "*.py" "*.java" "*.go"
|
|
74
|
+
Deduplicate, exclude node_modules and test/spec files.
|
|
124
75
|
```
|
|
125
76
|
|
|
126
77
|
### Step 3: Scan Imports Against Constraints
|
|
127
78
|
|
|
128
79
|
```
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
# Extract import statements based on file type
|
|
135
|
-
IF file ends with .ts/.tsx/.js/.jsx:
|
|
136
|
-
imports = grep -n "^import .* from ['\"]" {file}
|
|
137
|
-
imports += grep -n "require(['\"]" {file}
|
|
138
|
-
ELSE IF file ends with .py:
|
|
139
|
-
imports = grep -n "^import \|^from .* import" {file}
|
|
140
|
-
ELSE IF file ends with .go:
|
|
141
|
-
imports = grep -n "\".*\"" {file} # inside import block
|
|
142
|
-
ELSE IF file ends with .java:
|
|
143
|
-
imports = grep -n "^import " {file}
|
|
144
|
-
|
|
145
|
-
FOR each import_line IN imports:
|
|
146
|
-
# Check against disallowed imports
|
|
147
|
-
FOR each disallowed IN constraints.disallowed_imports:
|
|
148
|
-
IF import_line contains disallowed:
|
|
149
|
-
constraint_violations.push({
|
|
150
|
-
id: "CV-{NNN}",
|
|
151
|
-
type: "disallowed_import",
|
|
152
|
-
severity: "high",
|
|
153
|
-
file: file,
|
|
154
|
-
line: import_line.line_number,
|
|
155
|
-
import: import_line.text,
|
|
156
|
-
constraint: "Disallowed: " + disallowed,
|
|
157
|
-
fix_direction: "Replace " + disallowed + " with an allowed alternative"
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
# Check against allowed_libs (if allowlist is defined)
|
|
161
|
-
IF constraints.allowed_libs is not empty:
|
|
162
|
-
package_name = extract package/module name from import_line
|
|
163
|
-
IF package_name is external AND package_name NOT IN constraints.allowed_libs:
|
|
164
|
-
constraint_violations.push({
|
|
165
|
-
id: "CV-{NNN}",
|
|
166
|
-
type: "unlisted_dependency",
|
|
167
|
-
severity: "medium",
|
|
168
|
-
file: file,
|
|
169
|
-
line: import_line.line_number,
|
|
170
|
-
import: import_line.text,
|
|
171
|
-
constraint: "Not in allowed tech stack",
|
|
172
|
-
fix_direction: "Verify if " + package_name + " is approved, add to tech stack or replace"
|
|
173
|
-
})
|
|
80
|
+
For each modified file, extract import statements (language-aware: TS/JS, Python, Go, Java).
|
|
81
|
+
|
|
82
|
+
Check each import against constraints:
|
|
83
|
+
disallowed_imports match → violation {id: "CV-{NNN}", type: "disallowed_import", severity: "high", file, line, import, constraint, fix_direction}
|
|
84
|
+
allowed_libs allowlist defined + external package not listed → violation {id: "CV-{NNN}", type: "unlisted_dependency", severity: "medium", file, line, import, constraint, fix_direction}
|
|
174
85
|
```
|
|
175
86
|
|
|
176
87
|
### Step 4: Check Required Patterns
|
|
177
88
|
|
|
178
89
|
```
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
IF file does not contain pattern.regex:
|
|
182
|
-
constraint_violations.push({
|
|
183
|
-
id: "CV-{NNN}",
|
|
184
|
-
type: "missing_required_pattern",
|
|
185
|
-
severity: pattern.severity || "medium",
|
|
186
|
-
file: file,
|
|
187
|
-
line: null,
|
|
188
|
-
import: null,
|
|
189
|
-
constraint: "Required pattern missing: " + pattern.description,
|
|
190
|
-
fix_direction: pattern.fix_hint || "Add required pattern to file"
|
|
191
|
-
})
|
|
90
|
+
For each required_pattern, scan matching files (by file_glob) for pattern.regex.
|
|
91
|
+
Missing match → violation {id: "CV-{NNN}", type: "missing_required_pattern", severity: pattern.severity || "medium", file, constraint, fix_direction}
|
|
192
92
|
```
|
|
193
93
|
|
|
194
94
|
### Step 5: Report
|
|
195
95
|
|
|
196
96
|
```
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
FOR each violation IN constraint_violations:
|
|
200
|
-
Print: " [{violation.severity}] {violation.file}:{violation.line} - {violation.constraint}"
|
|
201
|
-
ELSE:
|
|
202
|
-
Print: "V0.5: All modified files comply with tech stack constraints"
|
|
97
|
+
Report constraint_violations count and details: [{severity}] {file}:{line} - {constraint}
|
|
98
|
+
If none: "V0.5: All modified files comply with tech stack constraints"
|
|
203
99
|
```
|
|
204
100
|
|
|
205
101
|
The `constraint_violations[]` array is included in the final `verification.json` output in V3 aggregation.
|
|
@@ -225,17 +121,8 @@ Build a verification context object mapping:
|
|
|
225
121
|
|
|
226
122
|
**Load UAT human findings** (if available):
|
|
227
123
|
```
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
Parse uat.md "Gaps" section.
|
|
231
|
-
FOR each gap in uat.md:
|
|
232
|
-
uat_gaps.push({
|
|
233
|
-
id: "GAP-UAT-{NNN}",
|
|
234
|
-
type: "human_verified_failure",
|
|
235
|
-
severity: gap.severity,
|
|
236
|
-
description: "From UAT: " + gap.reason,
|
|
237
|
-
fix_direction: "Address user-reported issue: " + gap.truth
|
|
238
|
-
})
|
|
124
|
+
If ${PHASE_DIR}/uat.md exists, parse "Gaps" section into uat_gaps[]:
|
|
125
|
+
{id: "GAP-UAT-{NNN}", type: "human_verified_failure", severity, description, fix_direction}
|
|
239
126
|
```
|
|
240
127
|
These `uat_gaps` are merged into the final `gaps[]` in V3 aggregation.
|
|
241
128
|
|
|
@@ -323,65 +210,22 @@ must_haves = {
|
|
|
323
210
|
### Identify gaps
|
|
324
211
|
|
|
325
212
|
```
|
|
326
|
-
gaps
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
id: "GAP-{NNN}",
|
|
330
|
-
type: "missing_feature" | "incomplete_implementation" | "broken_integration",
|
|
331
|
-
severity: "critical" | "high" | "medium" | "low",
|
|
332
|
-
description: "What is missing or broken",
|
|
333
|
-
fix_direction: "Suggested approach to fix"
|
|
334
|
-
})
|
|
335
|
-
|
|
336
|
-
For each missing/non-substantive artifact:
|
|
337
|
-
gaps.push({ ... })
|
|
338
|
-
|
|
339
|
-
For each broken link:
|
|
340
|
-
gaps.push({ ... })
|
|
213
|
+
Collect gaps from failed truths, missing/stub artifacts, and broken links.
|
|
214
|
+
Each gap: {id: "GAP-{NNN}", type: "missing_feature"|"incomplete_implementation"|"broken_integration",
|
|
215
|
+
severity: "critical"|"high"|"medium"|"low", description, fix_direction}
|
|
341
216
|
```
|
|
342
217
|
|
|
343
218
|
### Auto-create Issues from Gaps
|
|
344
219
|
|
|
345
220
|
```
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
today = format(now(), "YYYYMMDD")
|
|
355
|
-
counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
|
|
356
|
-
|
|
357
|
-
FOR each gap IN gaps[]:
|
|
358
|
-
issue_id = "ISS-{today}-{counter padded to 3 digits}"
|
|
359
|
-
issue = {
|
|
360
|
-
id: issue_id,
|
|
361
|
-
title: gap.description (truncated to 100 chars),
|
|
362
|
-
status: "registered",
|
|
363
|
-
priority: severity_to_priority(gap.severity),
|
|
364
|
-
severity: gap.severity,
|
|
365
|
-
source: "verification",
|
|
366
|
-
phase_ref: PHASE_NUM,
|
|
367
|
-
gap_ref: gap.id,
|
|
368
|
-
description: gap.description,
|
|
369
|
-
fix_direction: gap.fix_direction,
|
|
370
|
-
context: { location: "", suggested_fix: gap.fix_direction, notes: "" },
|
|
371
|
-
tags: [],
|
|
372
|
-
affected_components: [],
|
|
373
|
-
feedback: [],
|
|
374
|
-
issue_history: [],
|
|
375
|
-
created_at: now(),
|
|
376
|
-
updated_at: now(),
|
|
377
|
-
resolved_at: null,
|
|
378
|
-
resolution: null
|
|
379
|
-
}
|
|
380
|
-
Append JSON line to .workflow/issues/issues.jsonl
|
|
381
|
-
gap.issue_id = issue_id // back-reference on gap object
|
|
382
|
-
counter++
|
|
383
|
-
|
|
384
|
-
Print: "Created {gaps.length} issues from verification gaps"
|
|
221
|
+
For each gap, create an issue in .workflow/issues/issues.jsonl:
|
|
222
|
+
id: "ISS-{YYYYMMDD}-{NNN}" (auto-incrementing from existing today's IDs)
|
|
223
|
+
Fields: title (gap.description truncated 100 chars), status: "registered",
|
|
224
|
+
priority: severity_to_priority(gap.severity), severity, source: "verification",
|
|
225
|
+
phase_ref: PHASE_NUM, gap_ref: gap.id, description, fix_direction,
|
|
226
|
+
context: {location, suggested_fix, notes}, tags[], affected_components[],
|
|
227
|
+
feedback[], issue_history[], created_at, updated_at, resolved_at: null, resolution: null
|
|
228
|
+
Back-reference: gap.issue_id = issue_id
|
|
385
229
|
```
|
|
386
230
|
|
|
387
231
|
### Write verification.json
|
|
@@ -422,47 +266,13 @@ Write anti-patterns into verification.json `antipatterns[]` array.
|
|
|
422
266
|
### Auto-create Issues from Blocker Anti-Patterns
|
|
423
267
|
|
|
424
268
|
```
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
Extract all id fields matching today's date prefix ISS-YYYYMMDD-*
|
|
433
|
-
existing_ids = collected IDs
|
|
434
|
-
|
|
435
|
-
today = format(now(), "YYYYMMDD")
|
|
436
|
-
counter = max sequence number from existing_ids for today + 1 (start at 1 if none)
|
|
437
|
-
|
|
438
|
-
FOR each pattern IN blocker_patterns:
|
|
439
|
-
issue_id = "ISS-{today}-{counter padded to 3 digits}"
|
|
440
|
-
issue = {
|
|
441
|
-
id: issue_id,
|
|
442
|
-
title: "Anti-pattern: " + pattern.pattern_name (truncated to 100 chars),
|
|
443
|
-
status: "registered",
|
|
444
|
-
priority: 1,
|
|
445
|
-
severity: "critical",
|
|
446
|
-
source: "antipattern",
|
|
447
|
-
phase_ref: PHASE_NUM,
|
|
448
|
-
gap_ref: null,
|
|
449
|
-
description: "Blocker anti-pattern detected: " + pattern.pattern_name + " at " + pattern.file_line,
|
|
450
|
-
fix_direction: "Remove " + pattern.pattern_name + " from " + pattern.file_line,
|
|
451
|
-
context: { location: pattern.file_line, suggested_fix: "", notes: "" },
|
|
452
|
-
tags: ["antipattern"],
|
|
453
|
-
affected_components: [],
|
|
454
|
-
feedback: [],
|
|
455
|
-
issue_history: [],
|
|
456
|
-
created_at: now(),
|
|
457
|
-
updated_at: now(),
|
|
458
|
-
resolved_at: null,
|
|
459
|
-
resolution: null
|
|
460
|
-
}
|
|
461
|
-
Append JSON line to .workflow/issues/issues.jsonl
|
|
462
|
-
pattern.issue_id = issue_id // back-reference on anti-pattern object
|
|
463
|
-
counter++
|
|
464
|
-
|
|
465
|
-
Print: "Created {blocker_patterns.length} issues from blocker anti-patterns"
|
|
269
|
+
For each Blocker anti-pattern, create an issue in .workflow/issues/issues.jsonl:
|
|
270
|
+
id: "ISS-{YYYYMMDD}-{NNN}" (auto-incrementing from existing today's IDs)
|
|
271
|
+
Fields: title: "Anti-pattern: {pattern_name}", status: "registered",
|
|
272
|
+
priority: 1, severity: "critical", source: "antipattern",
|
|
273
|
+
phase_ref: PHASE_NUM, description, fix_direction,
|
|
274
|
+
context: {location: pattern.file_line}, tags: ["antipattern"]
|
|
275
|
+
Back-reference: pattern.issue_id = issue_id
|
|
466
276
|
```
|
|
467
277
|
|
|
468
278
|
---
|
|
@@ -538,14 +348,7 @@ If gaps exist from any verification layer:
|
|
|
538
348
|
|
|
539
349
|
3. **Order by dependency**: Fix missing -> fix stubs -> fix wiring -> verify.
|
|
540
350
|
|
|
541
|
-
Enrich
|
|
542
|
-
```
|
|
543
|
-
FOR each fix_plan IN fix_plans[]:
|
|
544
|
-
fix_plan.issue_ids = []
|
|
545
|
-
FOR each gap IN fix_plan.related_gaps:
|
|
546
|
-
IF gap.issue_id exists:
|
|
547
|
-
fix_plan.issue_ids.push(gap.issue_id)
|
|
548
|
-
```
|
|
351
|
+
Enrich each fix_plan with issue_ids[] collected from its related_gaps' issue references.
|
|
549
352
|
|
|
550
353
|
Write fix plans into verification.json `fix_plans[]` array.
|
|
551
354
|
|
|
@@ -566,19 +369,8 @@ Combine goal-backward, constraint validation, anti-pattern scan, and Nyquist res
|
|
|
566
369
|
|
|
567
370
|
**Archive previous verification artifacts** before writing:
|
|
568
371
|
```
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
FOR artifact IN ARCHIVE_TARGETS:
|
|
572
|
-
IF file exists "${PHASE_DIR}/${artifact}":
|
|
573
|
-
has_existing = true
|
|
574
|
-
break
|
|
575
|
-
|
|
576
|
-
IF has_existing:
|
|
577
|
-
mkdir -p "${PHASE_DIR}/.history"
|
|
578
|
-
TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
|
|
579
|
-
FOR artifact IN ARCHIVE_TARGETS:
|
|
580
|
-
IF file exists "${PHASE_DIR}/${artifact}":
|
|
581
|
-
mv "${PHASE_DIR}/${artifact}" "${PHASE_DIR}/.history/${name}-${TIMESTAMP}.${ext}"
|
|
372
|
+
If any of ["verification.json", "validation.json"] exist in ${PHASE_DIR}:
|
|
373
|
+
Move each to ${PHASE_DIR}/.history/{name}-{YYYY-MM-DDTHH-mm-ss}.{ext}
|
|
582
374
|
```
|
|
583
375
|
|
|
584
376
|
Write verification.json:
|
|
@@ -593,22 +385,9 @@ Write verification.json:
|
|
|
593
385
|
### Update index.json
|
|
594
386
|
|
|
595
387
|
```
|
|
596
|
-
index.json.status = "verifying"
|
|
597
|
-
index.json.
|
|
598
|
-
|
|
599
|
-
index.json.verification = {
|
|
600
|
-
status: verification.json.status,
|
|
601
|
-
verified_at: verification.json.verified_at,
|
|
602
|
-
must_haves: summary of must_haves,
|
|
603
|
-
gaps: verification.json.gaps
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
If validation.json exists:
|
|
607
|
-
index.json.validation = {
|
|
608
|
-
status: validation.json.status,
|
|
609
|
-
test_coverage: validation.json.coverage,
|
|
610
|
-
gaps: validation.json.gaps
|
|
611
|
-
}
|
|
388
|
+
Set index.json.status = "verifying", updated_at = now()
|
|
389
|
+
Set index.json.verification = {status, verified_at, must_haves summary, gaps} from verification.json
|
|
390
|
+
If validation.json exists: set index.json.validation = {status, test_coverage, gaps} from validation.json
|
|
612
391
|
```
|
|
613
392
|
|
|
614
393
|
### Report Format
|
|
@@ -28,7 +28,7 @@ Knowledge graph link discovery and health improvement. Analyzes the unified wiki
|
|
|
28
28
|
|
|
29
29
|
| Flag | Effect |
|
|
30
30
|
|------|--------|
|
|
31
|
-
| `--scope <type>` | Limit to wiki type: spec,
|
|
31
|
+
| `--scope <type>` | Limit to wiki type: spec, knowhow, note, lesson, issue. Default: all |
|
|
32
32
|
| `--min-similarity N` | Minimum similarity score 0.0-1.0 (default: 0.3) |
|
|
33
33
|
| `--fix` | Auto-apply top suggestions via `maestro wiki update` |
|
|
34
34
|
| `--max N` | Maximum suggestions to generate (default: 20) |
|
|
@@ -37,20 +37,9 @@ Knowledge graph link discovery and health improvement. Analyzes the unified wiki
|
|
|
37
37
|
|
|
38
38
|
## Stage 1: Load Wiki State
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
Gather baseline in parallel via `maestro wiki list --json`, `health`, `orphans`, `hubs --top 10`.
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
maestro wiki list --json # all entries with metadata
|
|
44
|
-
maestro wiki health # composite health score
|
|
45
|
-
maestro wiki orphans # entries with 0 in/out links
|
|
46
|
-
maestro wiki hubs --top 10 # most-referenced entries
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Parse into working state:
|
|
50
|
-
- Entry count and type distribution (spec, memory, note, lesson, issue)
|
|
51
|
-
- Baseline health score (numeric, from health command)
|
|
52
|
-
- Orphan list with entry IDs and titles
|
|
53
|
-
- Hub list with in-degree counts
|
|
42
|
+
Working state: entry count by type, baseline health score, orphan IDs, hub in-degree counts.
|
|
54
43
|
|
|
55
44
|
Apply `--scope` filter if provided — restrict all subsequent analysis to matching type.
|
|
56
45
|
|
|
@@ -87,23 +76,15 @@ Detect entries of different types referencing the same concept:
|
|
|
87
76
|
|
|
88
77
|
## Stage 3: Score Candidates
|
|
89
78
|
|
|
90
|
-
|
|
79
|
+
Score each candidate connection (source → target):
|
|
91
80
|
|
|
92
81
|
```
|
|
93
|
-
score = 0.4 × tag_overlap_ratio
|
|
94
|
-
+ 0.3 × title_bm25_similarity
|
|
95
|
-
+ 0.2 × same_category_bonus
|
|
96
|
-
+ 0.1 × type_bridge_bonus
|
|
82
|
+
score = 0.4 × tag_overlap_ratio + 0.3 × title_bm25_similarity + 0.2 × same_category_bonus + 0.1 × type_bridge_bonus
|
|
97
83
|
```
|
|
98
84
|
|
|
99
|
-
|
|
100
|
-
- `title_bm25_similarity`: normalized BM25 score from `maestro wiki search`
|
|
101
|
-
- `same_category_bonus`: 1.0 if same category, else 0.0
|
|
102
|
-
- `type_bridge_bonus`: 1.0 if different types, else 0.0
|
|
85
|
+
Ratios: tag_overlap = shared/max(source,target) tags, BM25 = normalized wiki search, category/type bonuses = 1.0 if match/bridge.
|
|
103
86
|
|
|
104
|
-
Filter: score >= `--min-similarity
|
|
105
|
-
Sort: descending by score
|
|
106
|
-
Limit: top `--max` entries
|
|
87
|
+
Filter: score >= `--min-similarity`, sort descending, limit to `--max`.
|
|
107
88
|
|
|
108
89
|
---
|
|
109
90
|
|
|
@@ -131,16 +112,9 @@ If `--fix`: proceed to Stage 5.
|
|
|
131
112
|
|
|
132
113
|
## Stage 5: Apply Connections (--fix only)
|
|
133
114
|
|
|
134
|
-
For each accepted suggestion:
|
|
135
|
-
1. `maestro wiki get <source-id> --json` — get current entry
|
|
136
|
-
2. Extract existing `related` list from frontmatter
|
|
137
|
-
3. Append target-id to `related` if not already present
|
|
138
|
-
4. `maestro wiki update <source-id> --frontmatter '{"related": ["existing...", "new-target"]}'`
|
|
139
|
-
5. Log success/failure per entry
|
|
115
|
+
For each accepted suggestion: fetch entry, append target-id to `related` list (dedup), update via `maestro wiki update <source-id> --frontmatter`.
|
|
140
116
|
|
|
141
|
-
After all updates:
|
|
142
|
-
- Re-run `maestro wiki health` → compute delta
|
|
143
|
-
- Report applied count, skipped count, and health improvement
|
|
117
|
+
After all updates: re-run `maestro wiki health`, report applied/skipped counts and health delta.
|
|
144
118
|
|
|
145
119
|
---
|
|
146
120
|
|
|
@@ -175,14 +149,3 @@ Report: .workflow/learning/wiki-connections-{date}.md
|
|
|
175
149
|
| View full graph | `maestro wiki graph` |
|
|
176
150
|
| Run harvest for new content | `/manage-harvest --recent 7` |
|
|
177
151
|
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Error Codes
|
|
181
|
-
|
|
182
|
-
| Code | Severity | Condition | Recovery |
|
|
183
|
-
|------|----------|-----------|----------|
|
|
184
|
-
| E001 | error | No wiki entries found (empty index) | Run `/maestro-init` or create wiki content |
|
|
185
|
-
| E002 | error | `maestro wiki` CLI not available | Check maestro installation |
|
|
186
|
-
| W001 | warning | No candidates above threshold | Lower `--min-similarity` or verify graph connectivity |
|
|
187
|
-
| W002 | warning | Some wiki updates failed during `--fix` | Retry failed entries manually |
|
|
188
|
-
| W003 | warning | Health score unchanged after fix | Connections may not affect specific health metrics |
|
package/workflows/wiki-digest.md
CHANGED
|
@@ -32,7 +32,7 @@ Unlike `maestro wiki list` which shows raw entries, this workflow synthesizes an
|
|
|
32
32
|
|------|--------|
|
|
33
33
|
| `<topic>` | Search wiki for matching entries via BM25 |
|
|
34
34
|
| `--recent N` | Entries updated within last N days |
|
|
35
|
-
| `--type <type>` | Filter by wiki type: spec,
|
|
35
|
+
| `--type <type>` | Filter by wiki type: spec, knowhow, note, lesson, issue |
|
|
36
36
|
| `--format brief\|full` | `brief` = compact (default), `full` = detailed per-entry |
|
|
37
37
|
| `--create-issues` | Auto-create knowledge-gap issues in `issues.jsonl` |
|
|
38
38
|
|
|
@@ -59,18 +59,9 @@ Run `maestro wiki health` for baseline health metrics.
|
|
|
59
59
|
|
|
60
60
|
## Stage 2: Theme Clustering
|
|
61
61
|
|
|
62
|
-
Group entries into 3-5 semantic themes
|
|
62
|
+
Group entries into 3-5 semantic themes by: tag co-occurrence (2+ shared tags), title BM25 similarity, relationship proximity (`related` links), and type sub-clustering.
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
2. **Title BM25 similarity**: entries whose titles match each other's keywords
|
|
66
|
-
3. **Relationship proximity**: entries connected by `related` links → same cluster
|
|
67
|
-
4. **Type sub-clustering**: if all same type, sub-cluster by content/category
|
|
68
|
-
|
|
69
|
-
Per theme, record:
|
|
70
|
-
- Theme name: dominant tag or keyword
|
|
71
|
-
- Entry count and IDs
|
|
72
|
-
- Type distribution within theme
|
|
73
|
-
- Status distribution (draft/active/completed/archived)
|
|
64
|
+
Per theme: name (dominant tag), entry count/IDs, type distribution, status distribution.
|
|
74
65
|
|
|
75
66
|
---
|
|
76
67
|
|
|
@@ -100,10 +91,7 @@ Per-theme health adapted from wiki health formula (entries, connectivity, comple
|
|
|
100
91
|
|
|
101
92
|
## Stage 4: Cross-Reference with Lessons
|
|
102
93
|
|
|
103
|
-
|
|
104
|
-
2. For each theme, search lessons by keyword match
|
|
105
|
-
3. Identify **unlinked insights**: lessons that match a theme's keywords but are not referenced by any wiki entry in that theme
|
|
106
|
-
4. Flag as "knowledge not yet connected to the graph"
|
|
94
|
+
Search `.workflow/learning/lessons.jsonl` for keyword matches against each theme. Flag **unlinked insights** -- lessons matching a theme but not referenced by any wiki entry in that theme.
|
|
107
95
|
|
|
108
96
|
If `lessons.jsonl` not found, skip with W002 warning.
|
|
109
97
|
|
|
@@ -166,35 +154,15 @@ Produce `.workflow/learning/digest-{slug}-{YYYY-MM-DD}.md`:
|
|
|
166
154
|
|
|
167
155
|
## Stage 7: Gap → Issue Routing (if --create-issues)
|
|
168
156
|
|
|
169
|
-
For each knowledge gap from Stage 5:
|
|
170
|
-
1. Dedup: check `.workflow/issues/issues.jsonl` for existing gap with same theme + type
|
|
171
|
-
2. If new, append to `issues.jsonl` using canonical schema (see `~/.maestro/workflows/issue.md` Step 4):
|
|
172
|
-
- `type`: "knowledge-gap"
|
|
173
|
-
- `status`: "open"
|
|
174
|
-
- `severity`: "low"
|
|
175
|
-
- `source`: "wiki-digest"
|
|
176
|
-
- `tags`: ["knowledge-gap", "{theme-slug}"]
|
|
177
|
-
3. Report created issue count
|
|
157
|
+
For each knowledge gap from Stage 5: dedup against `.workflow/issues/issues.jsonl` (same theme + type). If new, append with `type: "knowledge-gap"`, `status: "open"`, `severity: "low"`, `source: "wiki-digest"`, `tags: ["knowledge-gap", "{theme-slug}"]`. Report created count.
|
|
178
158
|
|
|
179
159
|
---
|
|
180
160
|
|
|
181
161
|
## Stage 8: Persist
|
|
182
162
|
|
|
183
163
|
1. Write digest file to `.workflow/learning/`
|
|
184
|
-
2. Append meta-insights to `.workflow/learning/lessons.jsonl
|
|
185
|
-
|
|
186
|
-
- e.g., "Auth knowledge concentrated in specs, lacks lessons"
|
|
187
|
-
3. Display summary:
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
== Wiki Digest Complete ==
|
|
191
|
-
Scope: {topic or "all"}
|
|
192
|
-
Entries: {count}
|
|
193
|
-
Themes: {theme_count}
|
|
194
|
-
Gaps: {gap_count} identified
|
|
195
|
-
Issues: {created_count} created (if --create-issues)
|
|
196
|
-
Report: .workflow/learning/digest-{slug}-{date}.md
|
|
197
|
-
```
|
|
164
|
+
2. Append meta-insights to `.workflow/learning/lessons.jsonl` (`source: "wiki-digest"`, `category: "technique"`)
|
|
165
|
+
3. Display summary: scope, entry count, theme count, gap count, created issues (if applicable), report path.
|
|
198
166
|
|
|
199
167
|
---
|
|
200
168
|
|
|
@@ -208,14 +176,3 @@ Report: .workflow/learning/digest-{slug}-{date}.md
|
|
|
208
176
|
| Create missing entries | `maestro wiki create --type <type> --slug <slug>` |
|
|
209
177
|
| Triage gap issues | `/manage-issue list --source wiki-digest` |
|
|
210
178
|
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## Error Codes
|
|
214
|
-
|
|
215
|
-
| Code | Severity | Condition | Recovery |
|
|
216
|
-
|------|----------|-----------|----------|
|
|
217
|
-
| E001 | error | No wiki entries found (empty index) | Initialize wiki content |
|
|
218
|
-
| E002 | error | Topic search returned 0 results | Broaden topic or check wiki |
|
|
219
|
-
| W001 | warning | Too few entries (<5) for meaningful clustering | Themes may be trivial |
|
|
220
|
-
| W002 | warning | `lessons.jsonl` not found | Skip cross-reference |
|
|
221
|
-
| W003 | warning | Some entry bodies failed to load | Partial summaries |
|