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
|
@@ -24,121 +24,11 @@ Leverages maestro's unique wiki graph infrastructure (BM25 search, backlinks, he
|
|
|
24
24
|
<context>
|
|
25
25
|
Arguments: $ARGUMENTS
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
- `--scope <type>` — Limit analysis to a wiki type (spec, memory, note, lesson, issue). Default: all types.
|
|
29
|
-
- `--min-similarity N` — Minimum similarity score threshold 0.0-1.0 (default: 0.3)
|
|
30
|
-
- `--fix` — Auto-apply the top suggestions by updating wiki entries with new `related` links
|
|
31
|
-
- `--max N` — Maximum number of suggestions to generate (default: 20)
|
|
32
|
-
|
|
33
|
-
**Storage written:**
|
|
34
|
-
- `.workflow/learning/wiki-connections-{YYYY-MM-DD}.md` — Connection analysis report
|
|
35
|
-
- If `--fix`: wiki entries updated via `maestro wiki update` with new `related` links
|
|
36
|
-
- `.workflow/learning/lessons.jsonl` — Graph structure insights (source: "wiki-connect")
|
|
37
|
-
|
|
38
|
-
**Storage read (via maestro wiki CLI, offline mode):**
|
|
39
|
-
- `maestro wiki list --json` — All wiki entries
|
|
40
|
-
- `maestro wiki graph` — Full graph structure (forward + backlinks)
|
|
41
|
-
- `maestro wiki health` — Current health score
|
|
42
|
-
- `maestro wiki orphans` — Orphaned entries
|
|
43
|
-
- `maestro wiki hubs` — Hub entries (most referenced)
|
|
27
|
+
Flags, storage paths, and CLI commands defined in workflow wiki-connect.md.
|
|
44
28
|
</context>
|
|
45
29
|
|
|
46
30
|
<execution>
|
|
47
|
-
|
|
48
|
-
### Stage 1: Load Wiki State
|
|
49
|
-
Run these `maestro wiki` commands in parallel:
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
maestro wiki list --json
|
|
53
|
-
maestro wiki health
|
|
54
|
-
maestro wiki orphans
|
|
55
|
-
maestro wiki hubs --top 10
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Parse results:
|
|
59
|
-
- Entry count, type distribution
|
|
60
|
-
- Baseline health score (from `wiki health`)
|
|
61
|
-
- Orphan list (entries with 0 in-degree and 0 out-degree)
|
|
62
|
-
- Hub list (most-referenced entries)
|
|
63
|
-
|
|
64
|
-
Apply `--scope` filter if provided.
|
|
65
|
-
|
|
66
|
-
### Stage 2: Identify Connection Candidates
|
|
67
|
-
For each entry, compute potential connections:
|
|
68
|
-
|
|
69
|
-
**2a. Orphan Rescue:**
|
|
70
|
-
For each orphan entry, search for related entries using:
|
|
71
|
-
- `maestro wiki search "<orphan title>"` — BM25 match by title
|
|
72
|
-
- Tag overlap: entries sharing 2+ tags with the orphan
|
|
73
|
-
- Same category: entries with matching `category`
|
|
74
|
-
|
|
75
|
-
**2b. Missing Bidirectional Links:**
|
|
76
|
-
For entries that have forward links but no corresponding backlink (A links to B, but B doesn't link to A), suggest adding the reverse link.
|
|
77
|
-
|
|
78
|
-
**2c. Transitive Closure:**
|
|
79
|
-
If A → B and B → C, but A has no link to C, and A and C share tags or category, suggest A → C.
|
|
80
|
-
|
|
81
|
-
**2d. Type Bridge:**
|
|
82
|
-
Entries of different types that reference the same concept (e.g., a `spec-auth` and a `lesson-auth-gotcha`) but aren't linked.
|
|
83
|
-
|
|
84
|
-
### Stage 3: Score Candidates
|
|
85
|
-
For each candidate connection (source → target), compute similarity:
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
score = 0.4 × tag_overlap_ratio
|
|
89
|
-
+ 0.3 × title_bm25_similarity
|
|
90
|
-
+ 0.2 × same_category_bonus
|
|
91
|
-
+ 0.1 × type_bridge_bonus
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
- `tag_overlap_ratio`: shared_tags / max(source_tags, target_tags)
|
|
95
|
-
- `title_bm25_similarity`: normalized BM25 score from wiki search
|
|
96
|
-
- `same_category_bonus`: 1.0 if same category, else 0.0
|
|
97
|
-
- `type_bridge_bonus`: 1.0 if different types, else 0.0
|
|
98
|
-
|
|
99
|
-
Filter by `--min-similarity`, rank descending, limit to `--max`.
|
|
100
|
-
|
|
101
|
-
### Stage 4: Present Suggestions
|
|
102
|
-
Display ranked connection suggestions:
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
== Wiki Connection Suggestions ==
|
|
106
|
-
Baseline health: 72/100 | Orphans: 8 | Broken links: 3
|
|
107
|
-
|
|
108
|
-
# Score Source → Target Reason
|
|
109
|
-
1 0.85 memory-auth-flow → spec-auth tag overlap (auth, security) + same phase
|
|
110
|
-
2 0.71 note-cache-pattern → spec-performance title BM25 match + type bridge
|
|
111
|
-
3 0.65 lesson-retry-fix → spec-error-handling tag overlap (error, retry)
|
|
112
|
-
...
|
|
113
|
-
|
|
114
|
-
Projected health after fix: 81/100 (+9)
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
If NOT `--fix`: display and exit.
|
|
118
|
-
If `--fix`: proceed to Stage 5.
|
|
119
|
-
|
|
120
|
-
### Stage 5: Apply Connections (--fix only)
|
|
121
|
-
For each accepted suggestion:
|
|
122
|
-
1. Get current entry: `maestro wiki get <source-id> --json`
|
|
123
|
-
2. Extract existing `related` list from frontmatter
|
|
124
|
-
3. Append target-id to `related` if not already present
|
|
125
|
-
4. Update: `maestro wiki update <source-id> --frontmatter "related: [existing..., new-target]"`
|
|
126
|
-
5. Log success/failure
|
|
127
|
-
|
|
128
|
-
After all updates:
|
|
129
|
-
- Re-run `maestro wiki health` to get new health score
|
|
130
|
-
- Report delta
|
|
131
|
-
|
|
132
|
-
### Stage 6: Persist & Report
|
|
133
|
-
1. Write `.workflow/learning/wiki-connections-{date}.md` with:
|
|
134
|
-
- Baseline and final health scores
|
|
135
|
-
- All suggestions (applied and unapplied)
|
|
136
|
-
- Orphan rescue results
|
|
137
|
-
- Graph structure observations (hub concentration, type distribution)
|
|
138
|
-
2. Append graph insights to `lessons.jsonl`:
|
|
139
|
-
- `source: "wiki-connect"`, `category: "technique"`
|
|
140
|
-
- e.g., "Auth-related entries are poorly connected", "Phase 3 has 5 orphaned notes"
|
|
141
|
-
3. Display summary
|
|
31
|
+
Follow '~/.maestro/workflows/wiki-connect.md' completely (Stages 1-6).
|
|
142
32
|
|
|
143
33
|
**Next-step routing:**
|
|
144
34
|
- Generate knowledge digest → `/wiki-digest <topic>`
|
|
@@ -28,150 +28,11 @@ Unlike `maestro wiki list` which shows raw entries, this command synthesizes and
|
|
|
28
28
|
<context>
|
|
29
29
|
Arguments: $ARGUMENTS
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
- `<topic>` — Search wiki for entries matching the topic via `maestro wiki search`
|
|
33
|
-
- `--recent N` — Entries updated in the last N days
|
|
34
|
-
- `--type <type>` — Filter by wiki type (spec, memory, note, lesson, issue)
|
|
35
|
-
- No arguments — digest of the entire wiki
|
|
36
|
-
|
|
37
|
-
**Flags:**
|
|
38
|
-
- `--format brief` — Compact summary, one paragraph per theme (default)
|
|
39
|
-
- `--format full` — Detailed digest with per-entry summaries and full gap analysis
|
|
40
|
-
- `--create-issues` — Auto-create `type: "knowledge-gap"` entries in `.workflow/issues/issues.jsonl` for each identified gap (closes the discovery→action loop)
|
|
41
|
-
|
|
42
|
-
**Storage written:**
|
|
43
|
-
- `.workflow/learning/digest-{slug}-{YYYY-MM-DD}.md` — Digest document
|
|
44
|
-
- `.workflow/learning/lessons.jsonl` — Meta-insights about knowledge structure (source: "wiki-digest")
|
|
45
|
-
- `.workflow/issues/issues.jsonl` — Knowledge-gap issues (only when `--create-issues`)
|
|
46
|
-
|
|
47
|
-
**Storage read (via maestro wiki CLI, offline mode):**
|
|
48
|
-
- `maestro wiki list --json` — All entries (or filtered)
|
|
49
|
-
- `maestro wiki search <topic>` — Topic-scoped entries
|
|
50
|
-
- `maestro wiki get <id>` — Entry bodies for summarization
|
|
51
|
-
- `maestro wiki backlinks <id>` / `maestro wiki forward <id>` — Relationship context
|
|
52
|
-
- `maestro wiki health` — Overall graph health
|
|
53
|
-
- `.workflow/learning/lessons.jsonl` — Cross-reference for unlinked insights
|
|
31
|
+
Flags, scope resolution, storage paths, and CLI commands defined in workflow wiki-digest.md.
|
|
54
32
|
</context>
|
|
55
33
|
|
|
56
34
|
<execution>
|
|
57
|
-
|
|
58
|
-
### Stage 1: Scope & Load
|
|
59
|
-
- Parse arguments to determine scope:
|
|
60
|
-
- Topic: `maestro wiki search "<topic>" --json` → matching entries
|
|
61
|
-
- Recent N: `maestro wiki list --json` → filter by `updated` within N days
|
|
62
|
-
- Type: `maestro wiki list --type <type> --json`
|
|
63
|
-
- All: `maestro wiki list --json`
|
|
64
|
-
- Load entry metadata (id, title, tags, status, type, related, summary)
|
|
65
|
-
- For `--format full`: also load entry bodies via `maestro wiki get <id>` for top entries
|
|
66
|
-
- Run `maestro wiki health` for baseline metrics
|
|
67
|
-
|
|
68
|
-
### Stage 2: Theme Clustering
|
|
69
|
-
Group entries into 3-5 semantic themes using:
|
|
70
|
-
|
|
71
|
-
1. **Tag co-occurrence**: entries sharing 2+ tags belong to the same theme
|
|
72
|
-
2. **Title similarity**: BM25-based grouping (entries whose titles match each other's keywords)
|
|
73
|
-
3. **Relationship proximity**: entries connected by `related` links cluster together
|
|
74
|
-
4. **Type grouping**: if entries are all same type, sub-cluster by content
|
|
75
|
-
|
|
76
|
-
For each theme:
|
|
77
|
-
- Name: most common tag or dominant keyword
|
|
78
|
-
- Entry count
|
|
79
|
-
- Type distribution within theme
|
|
80
|
-
- Status distribution (draft/active/completed/archived)
|
|
81
|
-
|
|
82
|
-
### Stage 3: Per-Theme Analysis
|
|
83
|
-
For each theme, produce:
|
|
84
|
-
|
|
85
|
-
**Summary paragraph**: synthesize the key knowledge in this theme area (what do these entries collectively say?)
|
|
86
|
-
|
|
87
|
-
**Key entries**: top 3-5 most important entries (by hub score / backlink count)
|
|
88
|
-
|
|
89
|
-
**Gap detection**:
|
|
90
|
-
- Broken links: `[[references]]` that don't resolve within the theme
|
|
91
|
-
- Orphans: entries in this theme with no connections
|
|
92
|
-
- Questions: entries with `?` in title or "TODO" / "TBD" markers in body
|
|
93
|
-
- Missing perspectives: if theme has specs but no lessons, or issues but no decisions
|
|
94
|
-
|
|
95
|
-
**Health**: per-theme health score (adapted from wiki health formula)
|
|
96
|
-
|
|
97
|
-
### Stage 4: Cross-Reference with Lessons
|
|
98
|
-
- Search `lessons.jsonl` for insights related to each theme
|
|
99
|
-
- Identify unlinked insights: lessons that match a theme but are not referenced by any wiki entry in that theme
|
|
100
|
-
- Flag these as "knowledge not yet connected to the graph"
|
|
101
|
-
|
|
102
|
-
### Stage 5: Coverage Heatmap
|
|
103
|
-
Build a matrix showing knowledge density by type × theme:
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
Theme 1 Theme 2 Theme 3 Theme 4 Theme 5
|
|
107
|
-
spec ███░░ ░░░░░ █████ ██░░░ ░░░░░
|
|
108
|
-
memory ░░░░░ ████░ ██░░░ ░░░░░ ███░░
|
|
109
|
-
lesson █░░░░ ██░░░ ████░ █░░░░ ░░░░░
|
|
110
|
-
issue ██░░░ ░░░░░ █░░░░ ███░░ ░░░░░
|
|
111
|
-
|
|
112
|
-
Legend: █ = entries exist, ░ = sparse/missing
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Identify: which theme × type cells are empty? These are knowledge gaps.
|
|
116
|
-
|
|
117
|
-
### Stage 6: Write Digest
|
|
118
|
-
Produce `.workflow/learning/digest-{slug}-{date}.md`:
|
|
119
|
-
|
|
120
|
-
```markdown
|
|
121
|
-
# Knowledge Digest: {scope description}
|
|
122
|
-
**Generated:** {date} | **Entries:** {count} | **Health:** {score}/100
|
|
123
|
-
|
|
124
|
-
## Themes
|
|
125
|
-
|
|
126
|
-
### 1. {Theme Name} ({N} entries)
|
|
127
|
-
{summary paragraph}
|
|
128
|
-
|
|
129
|
-
**Key entries:** {linked entry IDs}
|
|
130
|
-
**Gaps:** {list of missing knowledge}
|
|
131
|
-
**Health:** {score}/100
|
|
132
|
-
|
|
133
|
-
### 2. {Theme Name} ...
|
|
134
|
-
|
|
135
|
-
## Coverage Heatmap
|
|
136
|
-
{matrix}
|
|
137
|
-
|
|
138
|
-
## Knowledge Gaps
|
|
139
|
-
| Gap | Theme | Type Missing | Suggested Action |
|
|
140
|
-
|-----|-------|-------------|-----------------|
|
|
141
|
-
| No lessons for auth patterns | Security | lesson | Run /learn-decompose on src/auth/ |
|
|
142
|
-
|
|
143
|
-
## Unlinked Insights
|
|
144
|
-
{lessons.jsonl entries not connected to wiki graph}
|
|
145
|
-
|
|
146
|
-
## Recommended Actions
|
|
147
|
-
1. {action}: {reason}
|
|
148
|
-
2. ...
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Stage 7: Gap → Issue Routing (if --create-issues)
|
|
152
|
-
For each knowledge gap identified in Stage 5:
|
|
153
|
-
1. Check `.workflow/issues/issues.jsonl` for existing gap with same theme + type
|
|
154
|
-
2. If not duplicate, append to `issues.jsonl` using the canonical schema from `~/.maestro/workflows/issue.md` Step 4:
|
|
155
|
-
- `id`: `ISS-XXXXXXXX-NNN` format (8 hex hash + sequence)
|
|
156
|
-
- `title`: "Knowledge gap: {gap description}"
|
|
157
|
-
- `type`: "knowledge-gap"
|
|
158
|
-
- `status`: "open"
|
|
159
|
-
- `severity`: "low"
|
|
160
|
-
- `priority`: "low"
|
|
161
|
-
- `source`: "wiki-digest"
|
|
162
|
-
- `description`: "Theme: {theme}, Missing type: {type}. Suggested action: {action}"
|
|
163
|
-
- `tags`: ["knowledge-gap", "{theme-slug}"]
|
|
164
|
-
- `created`: ISO date
|
|
165
|
-
- `issue_history`: initial entry with `action: "created"`, `by: "wiki-digest"`, `timestamp`
|
|
166
|
-
3. Report created issue count
|
|
167
|
-
|
|
168
|
-
### Stage 8: Persist
|
|
169
|
-
1. Write digest file
|
|
170
|
-
2. Append meta-insights to `lessons.jsonl`:
|
|
171
|
-
- `source: "wiki-digest"`, `category: "technique"`
|
|
172
|
-
- e.g., "Auth knowledge is concentrated in specs but lacks lessons", "Security category has no decision entries"
|
|
173
|
-
3. Update `learning-index.json`
|
|
174
|
-
4. Display summary with key findings
|
|
35
|
+
Follow '~/.maestro/workflows/wiki-digest.md' completely (Stages 1-8).
|
|
175
36
|
|
|
176
37
|
**Next-step routing:**
|
|
177
38
|
- Deep dive on a theme → `/learn-follow <wiki-id>`
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-iter-tune
|
|
3
|
+
description: Iterative skill tuning via execute-evaluate-improve feedback loop. Uses ccw cli Claude to execute skill, Gemini to evaluate quality, and Agent to apply improvements. Iterates until quality threshold or max iterations. Triggers on "skill iter tune", "iterative skill tuning", "tune skill".
|
|
4
|
+
allowed-tools: Skill, Agent, AskUserQuestion, TaskCreate, TaskUpdate, TaskList, Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill Iter Tune
|
|
8
|
+
|
|
9
|
+
Iterative skill refinement through execute-evaluate-improve feedback loops. Each iteration runs the skill via Claude, evaluates output via Gemini, and applies improvements via Agent.
|
|
10
|
+
|
|
11
|
+
## Architecture Overview
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
15
|
+
│ Skill Iter Tune Orchestrator (SKILL.md) │
|
|
16
|
+
│ → Parse input → Setup workspace → Iteration Loop → Final Report │
|
|
17
|
+
└────────────────────────────┬─────────────────────────────────────────────┘
|
|
18
|
+
│
|
|
19
|
+
┌───────────────────┼───────────────────────────────────┐
|
|
20
|
+
↓ ↓ ↓
|
|
21
|
+
┌──────────┐ ┌─────────────────────────────┐ ┌──────────┐
|
|
22
|
+
│ Phase 1 │ │ Iteration Loop (2→3→4) │ │ Phase 5 │
|
|
23
|
+
│ Setup │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ Report │
|
|
24
|
+
│ │─────→│ │ P2 │→ │ P3 │→ │ P4 │ │────→│ │
|
|
25
|
+
│ Backup + │ │ │Exec │ │Eval │ │Impr │ │ │ History │
|
|
26
|
+
│ Init │ │ └─────┘ └─────┘ └─────┘ │ │ Summary │
|
|
27
|
+
└──────────┘ │ ↑ │ │ └──────────┘
|
|
28
|
+
│ └───────────────┘ │
|
|
29
|
+
│ (if score < threshold │
|
|
30
|
+
│ AND iter < max) │
|
|
31
|
+
└─────────────────────────────┘
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Chain Mode Extension
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Chain Mode (execution_mode === "chain"):
|
|
38
|
+
|
|
39
|
+
Phase 2 runs per-skill in chain_order:
|
|
40
|
+
Skill A → ccw cli → artifacts/skill-A/
|
|
41
|
+
↓ (artifacts as input)
|
|
42
|
+
Skill B → ccw cli → artifacts/skill-B/
|
|
43
|
+
↓ (artifacts as input)
|
|
44
|
+
Skill C → ccw cli → artifacts/skill-C/
|
|
45
|
+
|
|
46
|
+
Phase 3 evaluates entire chain output + per-skill scores
|
|
47
|
+
Phase 4 improves weakest skill(s) in chain
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Key Design Principles
|
|
51
|
+
|
|
52
|
+
1. **Iteration Loop**: Phases 2-3-4 repeat until quality threshold, max iterations, or convergence
|
|
53
|
+
2. **Two-Tool Pipeline**: Claude (write/execute) + Gemini (analyze/evaluate) = complementary perspectives
|
|
54
|
+
3. **Pure Orchestrator**: SKILL.md coordinates only — execution detail lives in phase files
|
|
55
|
+
4. **Progressive Phase Loading**: Phase docs read only when that phase executes
|
|
56
|
+
5. **Skill Versioning**: Each iteration snapshots skill state before execution
|
|
57
|
+
6. **Convergence Detection**: Stop early if score stalls (no improvement in 2 consecutive iterations)
|
|
58
|
+
|
|
59
|
+
## Interactive Preference Collection
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
// ★ Auto mode detection
|
|
63
|
+
const autoYes = /\b(-y|--yes)\b/.test($ARGUMENTS)
|
|
64
|
+
|
|
65
|
+
if (autoYes) {
|
|
66
|
+
workflowPreferences = {
|
|
67
|
+
autoYes: true,
|
|
68
|
+
maxIterations: 5,
|
|
69
|
+
qualityThreshold: 80,
|
|
70
|
+
executionMode: 'single'
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
const prefResponse = AskUserQuestion({
|
|
74
|
+
questions: [
|
|
75
|
+
{
|
|
76
|
+
question: "选择迭代调优配置:",
|
|
77
|
+
header: "Tune Config",
|
|
78
|
+
multiSelect: false,
|
|
79
|
+
options: [
|
|
80
|
+
{ label: "Quick (3 iter, 70)", description: "快速迭代,适合小幅改进" },
|
|
81
|
+
{ label: "Standard (5 iter, 80) (Recommended)", description: "平衡方案,适合多数场景" },
|
|
82
|
+
{ label: "Thorough (8 iter, 90)", description: "深度优化,适合生产级 skill" }
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
const configMap = {
|
|
89
|
+
"Quick": { maxIterations: 3, qualityThreshold: 70 },
|
|
90
|
+
"Standard": { maxIterations: 5, qualityThreshold: 80 },
|
|
91
|
+
"Thorough": { maxIterations: 8, qualityThreshold: 90 }
|
|
92
|
+
}
|
|
93
|
+
const selected = Object.keys(configMap).find(k =>
|
|
94
|
+
prefResponse["Tune Config"].startsWith(k)
|
|
95
|
+
) || "Standard"
|
|
96
|
+
workflowPreferences = { autoYes: false, ...configMap[selected] }
|
|
97
|
+
|
|
98
|
+
// ★ Mode selection: chain vs single
|
|
99
|
+
const modeResponse = AskUserQuestion({
|
|
100
|
+
questions: [{
|
|
101
|
+
question: "选择调优模式:",
|
|
102
|
+
header: "Tune Mode",
|
|
103
|
+
multiSelect: false,
|
|
104
|
+
options: [
|
|
105
|
+
{ label: "Single Skill (Recommended)", description: "独立调优每个 skill,适合单一 skill 优化" },
|
|
106
|
+
{ label: "Skill Chain", description: "按链序执行,前一个 skill 的产出作为后一个的输入" }
|
|
107
|
+
]
|
|
108
|
+
}]
|
|
109
|
+
});
|
|
110
|
+
workflowPreferences.executionMode = modeResponse["Tune Mode"].startsWith("Skill Chain")
|
|
111
|
+
? "chain" : "single";
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Input Processing
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
$ARGUMENTS → Parse:
|
|
119
|
+
├─ Skill path(s): first arg, comma-separated for multiple
|
|
120
|
+
│ e.g., ".claude/skills/my-skill" or "my-skill" (auto-prefixed)
|
|
121
|
+
│ Chain mode: order preserved as chain_order
|
|
122
|
+
├─ Test scenario: --scenario "description" or remaining text
|
|
123
|
+
└─ Flags: --max-iterations=N, --threshold=N, -y/--yes
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Execution Flow
|
|
127
|
+
|
|
128
|
+
> **⚠️ COMPACT DIRECTIVE**: Context compression MUST check TodoWrite phase status.
|
|
129
|
+
> The phase currently marked `in_progress` is the active execution phase — preserve its FULL content.
|
|
130
|
+
> Only compress phases marked `completed` or `pending`.
|
|
131
|
+
|
|
132
|
+
### Phase 1: Setup (one-time)
|
|
133
|
+
|
|
134
|
+
Read and execute: `Ref: phases/01-setup.md`
|
|
135
|
+
|
|
136
|
+
- Parse skill paths, validate existence
|
|
137
|
+
- Create workspace at `.workflow/.scratchpad/skill-iter-tune-{ts}/`
|
|
138
|
+
- Backup original skill files
|
|
139
|
+
- Initialize iteration-state.json
|
|
140
|
+
|
|
141
|
+
Output: `workDir`, `targetSkills[]`, `testScenario`, initialized state
|
|
142
|
+
|
|
143
|
+
### Iteration Loop
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
// Orchestrator iteration loop
|
|
147
|
+
while (true) {
|
|
148
|
+
// Increment iteration
|
|
149
|
+
state.current_iteration++;
|
|
150
|
+
state.iterations.push({
|
|
151
|
+
round: state.current_iteration,
|
|
152
|
+
status: 'pending',
|
|
153
|
+
execution: null,
|
|
154
|
+
evaluation: null,
|
|
155
|
+
improvement: null
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// Update TodoWrite
|
|
159
|
+
TaskUpdate(iterationTask, {
|
|
160
|
+
subject: `Iteration ${state.current_iteration}/${state.max_iterations}`,
|
|
161
|
+
status: 'in_progress',
|
|
162
|
+
activeForm: `Running iteration ${state.current_iteration}`
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// === Phase 2: Execute ===
|
|
166
|
+
// Read: phases/02-execute.md
|
|
167
|
+
// Single mode: one ccw cli call for all skills
|
|
168
|
+
// Chain mode: sequential ccw cli per skill in chain_order, passing artifacts
|
|
169
|
+
// Snapshot skill → construct prompt → ccw cli --tool claude --mode write
|
|
170
|
+
// Collect artifacts
|
|
171
|
+
|
|
172
|
+
// === Phase 3: Evaluate ===
|
|
173
|
+
// Read: phases/03-evaluate.md
|
|
174
|
+
// Construct eval prompt → ccw cli --tool gemini --mode analysis
|
|
175
|
+
// Parse score → write iteration-N-eval.md → check termination
|
|
176
|
+
|
|
177
|
+
// Check termination
|
|
178
|
+
if (shouldTerminate(state)) {
|
|
179
|
+
break; // → Phase 5
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// === Phase 4: Improve ===
|
|
183
|
+
// Read: phases/04-improve.md
|
|
184
|
+
// Agent applies suggestions → write iteration-N-changes.md
|
|
185
|
+
|
|
186
|
+
// Update TodoWrite with score
|
|
187
|
+
// Continue loop
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Phase 2: Execute Skill (per iteration)
|
|
192
|
+
|
|
193
|
+
Read and execute: `Ref: phases/02-execute.md`
|
|
194
|
+
|
|
195
|
+
- Snapshot skill → `iteration-{N}/skill-snapshot/`
|
|
196
|
+
- Build execution prompt from skill content + test scenario
|
|
197
|
+
- Execute: `ccw cli -p "..." --tool claude --mode write --cd "${iterDir}/artifacts"`
|
|
198
|
+
- Collect artifacts
|
|
199
|
+
|
|
200
|
+
### Phase 3: Evaluate Quality (per iteration)
|
|
201
|
+
|
|
202
|
+
Read and execute: `Ref: phases/03-evaluate.md`
|
|
203
|
+
|
|
204
|
+
- Build evaluation prompt with skill + artifacts + criteria + history
|
|
205
|
+
- Execute: `ccw cli -p "..." --tool gemini --mode analysis`
|
|
206
|
+
- Parse 5-dimension score (Clarity, Completeness, Correctness, Effectiveness, Efficiency)
|
|
207
|
+
- Write `iteration-{N}-eval.md`
|
|
208
|
+
- Check termination: score >= threshold | iter >= max | convergence | error limit
|
|
209
|
+
|
|
210
|
+
### Phase 4: Apply Improvements (per iteration, skipped on termination)
|
|
211
|
+
|
|
212
|
+
Read and execute: `Ref: phases/04-improve.md`
|
|
213
|
+
|
|
214
|
+
- Read evaluation suggestions
|
|
215
|
+
- Launch general-purpose Agent to apply changes
|
|
216
|
+
- Write `iteration-{N}-changes.md`
|
|
217
|
+
- Update state
|
|
218
|
+
|
|
219
|
+
### Phase 5: Final Report (one-time)
|
|
220
|
+
|
|
221
|
+
Read and execute: `Ref: phases/05-report.md`
|
|
222
|
+
|
|
223
|
+
- Generate comprehensive report with score progression table
|
|
224
|
+
- Write `final-report.md`
|
|
225
|
+
- Display summary to user
|
|
226
|
+
|
|
227
|
+
**Phase Reference Documents** (read on-demand when phase executes):
|
|
228
|
+
|
|
229
|
+
| Phase | Document | Purpose | Compact |
|
|
230
|
+
|-------|----------|---------|---------|
|
|
231
|
+
| 1 | [phases/01-setup.md](phases/01-setup.md) | Initialize workspace and state | TodoWrite 驱动 |
|
|
232
|
+
| 2 | [phases/02-execute.md](phases/02-execute.md) | Execute skill via ccw cli Claude | TodoWrite 驱动 + 🔄 sentinel |
|
|
233
|
+
| 3 | [phases/03-evaluate.md](phases/03-evaluate.md) | Evaluate via ccw cli Gemini | TodoWrite 驱动 + 🔄 sentinel |
|
|
234
|
+
| 4 | [phases/04-improve.md](phases/04-improve.md) | Apply improvements via Agent | TodoWrite 驱动 + 🔄 sentinel |
|
|
235
|
+
| 5 | [phases/05-report.md](phases/05-report.md) | Generate final report | TodoWrite 驱动 |
|
|
236
|
+
|
|
237
|
+
**Compact Rules**:
|
|
238
|
+
1. **TodoWrite `in_progress`** → 保留完整内容,禁止压缩
|
|
239
|
+
2. **TodoWrite `completed`** → 可压缩为摘要
|
|
240
|
+
3. **🔄 sentinel fallback** → 若 compact 后仅存 sentinel 而无完整 Step 协议,立即 `Read()` 恢复
|
|
241
|
+
|
|
242
|
+
## Core Rules
|
|
243
|
+
|
|
244
|
+
1. **Start Immediately**: First action is preference collection → Phase 1 setup
|
|
245
|
+
2. **Progressive Loading**: Read phase doc ONLY when that phase is about to execute
|
|
246
|
+
3. **Snapshot Before Execute**: Always snapshot skill state before each iteration
|
|
247
|
+
4. **Background CLI**: ccw cli runs in background, wait for hook callback before proceeding
|
|
248
|
+
5. **Parse Every Output**: Extract structured JSON from CLI outputs for state updates
|
|
249
|
+
6. **DO NOT STOP**: Continuous iteration until termination condition met
|
|
250
|
+
7. **Single State Source**: `iteration-state.json` is the only source of truth
|
|
251
|
+
|
|
252
|
+
## Data Flow
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
User Input (skill paths + test scenario)
|
|
256
|
+
↓ (+ execution_mode + chain_order if chain mode)
|
|
257
|
+
↓
|
|
258
|
+
Phase 1: Setup
|
|
259
|
+
↓ workDir, targetSkills[], testScenario, iteration-state.json
|
|
260
|
+
↓
|
|
261
|
+
┌─→ Phase 2: Execute (ccw cli claude)
|
|
262
|
+
│ ↓ artifacts/ (skill execution output)
|
|
263
|
+
│ ↓
|
|
264
|
+
│ Phase 3: Evaluate (ccw cli gemini)
|
|
265
|
+
│ ↓ score, dimensions[], suggestions[], iteration-N-eval.md
|
|
266
|
+
│ ↓
|
|
267
|
+
│ [Terminate?]─── YES ──→ Phase 5: Report → final-report.md
|
|
268
|
+
│ ↓ NO
|
|
269
|
+
│ ↓
|
|
270
|
+
│ Phase 4: Improve (Agent)
|
|
271
|
+
│ ↓ modified skill files, iteration-N-changes.md
|
|
272
|
+
│ ↓
|
|
273
|
+
└───┘ next iteration
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## TodoWrite Pattern
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
// Initial state
|
|
280
|
+
TaskCreate({ subject: "Phase 1: Setup workspace", activeForm: "Setting up workspace" })
|
|
281
|
+
TaskCreate({ subject: "Iteration Loop", activeForm: "Running iterations" })
|
|
282
|
+
TaskCreate({ subject: "Phase 5: Final Report", activeForm: "Generating report" })
|
|
283
|
+
|
|
284
|
+
// Chain mode: create per-skill tracking tasks
|
|
285
|
+
if (state.execution_mode === 'chain') {
|
|
286
|
+
for (const skillName of state.chain_order) {
|
|
287
|
+
TaskCreate({
|
|
288
|
+
subject: `Chain: ${skillName}`,
|
|
289
|
+
activeForm: `Tracking ${skillName}`,
|
|
290
|
+
description: `Skill chain member position ${state.chain_order.indexOf(skillName) + 1}`
|
|
291
|
+
})
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// During iteration N
|
|
296
|
+
// Single mode: one score per iteration (existing behavior)
|
|
297
|
+
// Chain mode: per-skill status updates
|
|
298
|
+
if (state.execution_mode === 'chain') {
|
|
299
|
+
// After each skill executes in Phase 2:
|
|
300
|
+
TaskUpdate(chainSkillTask, {
|
|
301
|
+
subject: `Chain: ${skillName} — Iter ${N} executed`,
|
|
302
|
+
activeForm: `${skillName} iteration ${N}`
|
|
303
|
+
})
|
|
304
|
+
// After Phase 3 evaluates:
|
|
305
|
+
TaskUpdate(chainSkillTask, {
|
|
306
|
+
subject: `Chain: ${skillName} — Score ${chainScores[skillName]}/100`,
|
|
307
|
+
activeForm: `${skillName} scored`
|
|
308
|
+
})
|
|
309
|
+
} else {
|
|
310
|
+
// Single mode (existing)
|
|
311
|
+
TaskCreate({
|
|
312
|
+
subject: `Iteration ${N}: Score ${score}/100`,
|
|
313
|
+
activeForm: `Iteration ${N} complete`,
|
|
314
|
+
description: `Strengths: ... | Weaknesses: ... | Suggestions: ${count}`
|
|
315
|
+
})
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Completed — collapse
|
|
319
|
+
TaskUpdate(iterLoop, {
|
|
320
|
+
subject: `Iteration Loop (${totalIters} iters, final: ${finalScore})`,
|
|
321
|
+
status: 'completed'
|
|
322
|
+
})
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Termination Logic
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
function shouldTerminate(state) {
|
|
329
|
+
// 1. Quality threshold met
|
|
330
|
+
if (state.latest_score >= state.quality_threshold) {
|
|
331
|
+
return { terminate: true, reason: 'quality_threshold_met' };
|
|
332
|
+
}
|
|
333
|
+
// 2. Max iterations reached
|
|
334
|
+
if (state.current_iteration >= state.max_iterations) {
|
|
335
|
+
return { terminate: true, reason: 'max_iterations_reached' };
|
|
336
|
+
}
|
|
337
|
+
// 3. Convergence: ≤2 points improvement over last 2 iterations
|
|
338
|
+
if (state.score_trend.length >= 3) {
|
|
339
|
+
const last3 = state.score_trend.slice(-3);
|
|
340
|
+
if (last3[2] - last3[0] <= 2) {
|
|
341
|
+
state.converged = true;
|
|
342
|
+
return { terminate: true, reason: 'convergence_detected' };
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// 4. Error limit
|
|
346
|
+
if (state.error_count >= state.max_errors) {
|
|
347
|
+
return { terminate: true, reason: 'error_limit_reached' };
|
|
348
|
+
}
|
|
349
|
+
return { terminate: false };
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Error Handling
|
|
354
|
+
|
|
355
|
+
| Phase | Error | Recovery |
|
|
356
|
+
|-------|-------|----------|
|
|
357
|
+
| 2: Execute | CLI timeout/crash | Retry once with simplified prompt, then skip |
|
|
358
|
+
| 3: Evaluate | CLI fails | Retry once, then use score 50 with warning |
|
|
359
|
+
| 3: Evaluate | JSON parse fails | Extract score heuristically, save raw output |
|
|
360
|
+
| 4: Improve | Agent fails | Rollback from `iteration-{N}/skill-snapshot/` |
|
|
361
|
+
| Any | 3+ consecutive errors | Terminate with error report |
|
|
362
|
+
|
|
363
|
+
**Error Budget**: Each phase gets 1 retry. 3 consecutive failed iterations triggers termination.
|
|
364
|
+
|
|
365
|
+
## Coordinator Checklist
|
|
366
|
+
|
|
367
|
+
### Pre-Phase Actions
|
|
368
|
+
- [ ] Read iteration-state.json for current state
|
|
369
|
+
- [ ] Verify workspace directory exists
|
|
370
|
+
- [ ] Check error count hasn't exceeded limit
|
|
371
|
+
|
|
372
|
+
### Per-Iteration Actions
|
|
373
|
+
- [ ] Increment current_iteration in state
|
|
374
|
+
- [ ] Create iteration-{N} subdirectory
|
|
375
|
+
- [ ] Update TodoWrite with iteration status
|
|
376
|
+
- [ ] After Phase 3: check termination before Phase 4
|
|
377
|
+
- [ ] After Phase 4: write state, proceed to next iteration
|
|
378
|
+
|
|
379
|
+
### Post-Workflow Actions
|
|
380
|
+
- [ ] Execute Phase 5 (Report)
|
|
381
|
+
- [ ] Display final summary to user
|
|
382
|
+
- [ ] Update all TodoWrite tasks to completed
|