maestro-flow 0.5.41 → 0.5.43
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/.agents/skills/domain-add/SKILL.md +3 -0
- package/.agents/skills/learn-decompose/SKILL.md +7 -4
- package/.agents/skills/learn-follow/SKILL.md +4 -2
- package/.agents/skills/learn-investigate/SKILL.md +8 -6
- package/.agents/skills/learn-second-opinion/SKILL.md +6 -3
- package/.agents/skills/maestro/SKILL.md +1 -1
- package/.agents/skills/maestro-amend/SKILL.md +1 -1
- package/.agents/skills/maestro-analyze/SKILL.md +1 -43
- package/.agents/skills/maestro-blueprint/SKILL.md +1 -23
- package/.agents/skills/maestro-brainstorm/SKILL.md +8 -25
- package/.agents/skills/maestro-collab/SKILL.md +6 -2
- package/.agents/skills/maestro-companion/SKILL.md +4 -1
- package/.agents/skills/maestro-composer/SKILL.md +4 -2
- package/.agents/skills/maestro-execute/SKILL.md +27 -9
- package/.agents/skills/maestro-fork/SKILL.md +4 -3
- package/.agents/skills/maestro-grill/SKILL.md +1 -17
- package/.agents/skills/maestro-guard/SKILL.md +2 -2
- package/.agents/skills/maestro-impeccable/SKILL.md +2 -1
- package/.agents/skills/maestro-init/SKILL.md +1 -1
- package/.agents/skills/maestro-merge/SKILL.md +12 -1
- package/.agents/skills/maestro-milestone-audit/SKILL.md +1 -15
- package/.agents/skills/maestro-milestone-complete/SKILL.md +8 -3
- package/.agents/skills/maestro-milestone-release/SKILL.md +8 -4
- package/.agents/skills/maestro-overlay/SKILL.md +9 -0
- package/.agents/skills/maestro-plan/SKILL.md +6 -62
- package/.agents/skills/maestro-player/SKILL.md +2 -2
- package/.agents/skills/maestro-quick/SKILL.md +5 -3
- package/.agents/skills/maestro-ralph/SKILL.md +8 -8
- package/.agents/skills/maestro-ralph-cli/SKILL.md +665 -0
- package/.agents/skills/maestro-ralph-cli-execute/SKILL.md +239 -0
- package/.agents/skills/maestro-ralph-execute/SKILL.md +127 -11
- package/.agents/skills/maestro-roadmap/SKILL.md +1 -9
- package/.agents/skills/maestro-swarm-workflow/SKILL.md +16 -14
- package/.agents/skills/maestro-tools-register/SKILL.md +16 -1
- package/.agents/skills/maestro-ui-codify/SKILL.md +11 -1
- package/.agents/skills/maestro-universal-workflow/SKILL.md +28 -5
- package/.agents/skills/maestro-update/SKILL.md +10 -7
- package/.agents/skills/manage-codebase-rebuild/SKILL.md +5 -1
- package/.agents/skills/manage-drift-realign/SKILL.md +6 -2
- package/.agents/skills/manage-harvest/SKILL.md +4 -1
- package/.agents/skills/manage-issue-discover/SKILL.md +1 -0
- package/.agents/skills/manage-kg-extractors/SKILL.md +5 -1
- package/.agents/skills/manage-knowhow-capture/SKILL.md +1 -0
- package/.agents/skills/manage-knowledge-audit/SKILL.md +3 -0
- package/.agents/skills/manage-wiki/SKILL.md +1 -0
- package/.agents/skills/odyssey-debug/SKILL.md +2 -1
- package/.agents/skills/odyssey-improve/SKILL.md +2 -2
- package/.agents/skills/odyssey-planex/SKILL.md +8 -7
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +4 -1
- package/.agents/skills/odyssey-ui/SKILL.md +4 -4
- package/.agents/skills/quality-auto-test/SKILL.md +11 -1
- package/.agents/skills/quality-debug/SKILL.md +16 -2
- package/.agents/skills/quality-retrospective/SKILL.md +9 -1
- package/.agents/skills/quality-review/SKILL.md +8 -0
- package/.agents/skills/quality-sync/SKILL.md +2 -2
- package/.agents/skills/quality-test/SKILL.md +9 -1
- package/.agents/skills/security-audit/SKILL.md +14 -4
- package/.agents/skills/spec-add/SKILL.md +5 -2
- package/.agents/skills/spec-load/SKILL.md +1 -1
- package/.agents/skills/spec-remove/SKILL.md +1 -1
- package/.agents/skills/spec-setup/SKILL.md +3 -0
- package/.agents/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.agents/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.agents/skills/team-roadmap-dev/SKILL.md +164 -164
- package/.agents/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.agents/skills/team-swarm/roles/analyst/role.md +172 -176
- package/.agy/skills/domain-add/SKILL.md +3 -0
- package/.agy/skills/learn-decompose/SKILL.md +7 -4
- package/.agy/skills/learn-follow/SKILL.md +4 -2
- package/.agy/skills/learn-investigate/SKILL.md +8 -6
- package/.agy/skills/learn-second-opinion/SKILL.md +6 -3
- package/.agy/skills/maestro/SKILL.md +1 -1
- package/.agy/skills/maestro-amend/SKILL.md +1 -1
- package/.agy/skills/maestro-analyze/SKILL.md +1 -43
- package/.agy/skills/maestro-blueprint/SKILL.md +1 -23
- package/.agy/skills/maestro-brainstorm/SKILL.md +8 -25
- package/.agy/skills/maestro-collab/SKILL.md +6 -2
- package/.agy/skills/maestro-companion/SKILL.md +4 -1
- package/.agy/skills/maestro-composer/SKILL.md +4 -2
- package/.agy/skills/maestro-execute/SKILL.md +27 -9
- package/.agy/skills/maestro-fork/SKILL.md +4 -3
- package/.agy/skills/maestro-grill/SKILL.md +1 -17
- package/.agy/skills/maestro-guard/SKILL.md +2 -2
- package/.agy/skills/maestro-impeccable/SKILL.md +2 -1
- package/.agy/skills/maestro-init/SKILL.md +1 -1
- package/.agy/skills/maestro-merge/SKILL.md +12 -1
- package/.agy/skills/maestro-milestone-audit/SKILL.md +1 -15
- package/.agy/skills/maestro-milestone-complete/SKILL.md +8 -3
- package/.agy/skills/maestro-milestone-release/SKILL.md +8 -4
- package/.agy/skills/maestro-overlay/SKILL.md +9 -0
- package/.agy/skills/maestro-plan/SKILL.md +6 -62
- package/.agy/skills/maestro-player/SKILL.md +2 -2
- package/.agy/skills/maestro-quick/SKILL.md +5 -3
- package/.agy/skills/maestro-ralph/SKILL.md +8 -8
- package/.agy/skills/maestro-ralph-cli/SKILL.md +661 -0
- package/.agy/skills/maestro-ralph-cli-execute/SKILL.md +235 -0
- package/.agy/skills/maestro-ralph-execute/SKILL.md +127 -11
- package/.agy/skills/maestro-roadmap/SKILL.md +1 -9
- package/.agy/skills/maestro-swarm-workflow/SKILL.md +16 -14
- package/.agy/skills/maestro-tools-register/SKILL.md +16 -1
- package/.agy/skills/maestro-ui-codify/SKILL.md +11 -1
- package/.agy/skills/maestro-universal-workflow/SKILL.md +28 -5
- package/.agy/skills/maestro-update/SKILL.md +10 -7
- package/.agy/skills/manage-codebase-rebuild/SKILL.md +5 -1
- package/.agy/skills/manage-drift-realign/SKILL.md +6 -2
- package/.agy/skills/manage-harvest/SKILL.md +4 -1
- package/.agy/skills/manage-issue-discover/SKILL.md +1 -0
- package/.agy/skills/manage-kg-extractors/SKILL.md +5 -1
- package/.agy/skills/manage-knowhow-capture/SKILL.md +1 -0
- package/.agy/skills/manage-knowledge-audit/SKILL.md +3 -0
- package/.agy/skills/manage-wiki/SKILL.md +1 -0
- package/.agy/skills/odyssey-debug/SKILL.md +2 -1
- package/.agy/skills/odyssey-improve/SKILL.md +2 -2
- package/.agy/skills/odyssey-planex/SKILL.md +8 -7
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +4 -1
- package/.agy/skills/odyssey-ui/SKILL.md +4 -4
- package/.agy/skills/quality-auto-test/SKILL.md +11 -1
- package/.agy/skills/quality-debug/SKILL.md +16 -2
- package/.agy/skills/quality-retrospective/SKILL.md +9 -1
- package/.agy/skills/quality-review/SKILL.md +8 -0
- package/.agy/skills/quality-sync/SKILL.md +2 -2
- package/.agy/skills/quality-test/SKILL.md +9 -1
- package/.agy/skills/security-audit/SKILL.md +14 -4
- package/.agy/skills/spec-add/SKILL.md +5 -2
- package/.agy/skills/spec-load/SKILL.md +1 -1
- package/.agy/skills/spec-remove/SKILL.md +1 -1
- package/.agy/skills/spec-setup/SKILL.md +3 -0
- package/.agy/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.agy/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.agy/skills/team-roadmap-dev/SKILL.md +141 -153
- package/.agy/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.agy/skills/team-swarm/roles/analyst/role.md +172 -176
- package/.claude/commands/domain-add.md +3 -0
- package/.claude/commands/learn-decompose.md +7 -4
- package/.claude/commands/learn-follow.md +4 -2
- package/.claude/commands/learn-investigate.md +8 -6
- package/.claude/commands/learn-second-opinion.md +6 -3
- package/.claude/commands/maestro-amend.md +1 -1
- package/.claude/commands/maestro-analyze.md +1 -43
- package/.claude/commands/maestro-blueprint.md +1 -23
- package/.claude/commands/maestro-brainstorm.md +8 -25
- package/.claude/commands/maestro-collab.md +6 -2
- package/.claude/commands/maestro-companion.md +4 -1
- package/.claude/commands/maestro-composer.md +4 -2
- package/.claude/commands/maestro-execute.md +27 -9
- package/.claude/commands/maestro-fork.md +4 -3
- package/.claude/commands/maestro-grill.md +1 -17
- package/.claude/commands/maestro-guard.md +2 -2
- package/.claude/commands/maestro-impeccable.md +2 -1
- package/.claude/commands/maestro-init.md +1 -1
- package/.claude/commands/maestro-merge.md +12 -1
- package/.claude/commands/maestro-milestone-audit.md +1 -15
- package/.claude/commands/maestro-milestone-complete.md +8 -3
- package/.claude/commands/maestro-milestone-release.md +8 -4
- package/.claude/commands/maestro-overlay.md +9 -0
- package/.claude/commands/maestro-plan.md +6 -62
- package/.claude/commands/maestro-player.md +2 -2
- package/.claude/commands/maestro-quick.md +5 -3
- package/.claude/commands/maestro-ralph-cli-execute.md +237 -0
- package/.claude/commands/maestro-ralph-cli.md +663 -0
- package/.claude/commands/maestro-ralph-execute.md +127 -11
- package/.claude/commands/maestro-ralph.md +8 -8
- package/.claude/commands/maestro-roadmap.md +1 -9
- package/.claude/commands/maestro-swarm-workflow.md +16 -14
- package/.claude/commands/maestro-tools-register.md +16 -1
- package/.claude/commands/maestro-ui-codify.md +11 -1
- package/.claude/commands/maestro-universal-workflow.md +28 -5
- package/.claude/commands/maestro-update.md +10 -7
- package/.claude/commands/maestro.md +1 -1
- package/.claude/commands/manage-codebase-rebuild.md +5 -1
- package/.claude/commands/manage-drift-realign.md +6 -2
- package/.claude/commands/manage-harvest.md +4 -1
- package/.claude/commands/manage-issue-discover.md +1 -0
- package/.claude/commands/manage-kg-extractors.md +5 -1
- package/.claude/commands/manage-knowhow-capture.md +1 -0
- package/.claude/commands/manage-knowledge-audit.md +3 -0
- package/.claude/commands/manage-wiki.md +1 -0
- package/.claude/commands/odyssey-debug.md +2 -1
- package/.claude/commands/odyssey-improve.md +2 -2
- package/.claude/commands/odyssey-planex.md +8 -7
- package/.claude/commands/odyssey-review-test-fix.md +4 -1
- package/.claude/commands/odyssey-ui.md +4 -4
- package/.claude/commands/quality-auto-test.md +11 -1
- package/.claude/commands/quality-debug.md +16 -2
- package/.claude/commands/quality-retrospective.md +9 -1
- package/.claude/commands/quality-review.md +8 -0
- package/.claude/commands/quality-sync.md +2 -2
- package/.claude/commands/quality-test.md +9 -1
- package/.claude/commands/security-audit.md +14 -4
- package/.claude/commands/spec-add.md +5 -2
- package/.claude/commands/spec-load.md +1 -1
- package/.claude/commands/spec-remove.md +1 -1
- package/.claude/commands/spec-setup.md +3 -0
- package/.claude/skills/team-adversarial-swarm/workflows/wf-swarm-synthesize.js +248 -248
- package/.claude/skills/team-coordinate/specs/role-spec-template.md +197 -198
- package/.claude/skills/team-roadmap-dev/SKILL.md +169 -169
- package/.claude/skills/team-roadmap-dev/specs/team-config.json +1 -1
- package/.claude/skills/team-swarm/roles/analyst/role.md +181 -185
- package/.codex/skills/codify-to-knowhow/SKILL.md +27 -15
- package/.codex/skills/domain-add/SKILL.md +5 -3
- package/.codex/skills/learn-decompose/SKILL.md +22 -4
- package/.codex/skills/learn-follow/SKILL.md +12 -6
- package/.codex/skills/learn-investigate/SKILL.md +11 -6
- package/.codex/skills/learn-retro/SKILL.md +12 -6
- package/.codex/skills/learn-second-opinion/SKILL.md +11 -3
- package/.codex/skills/maestro/SKILL.md +19 -13
- package/.codex/skills/maestro-amend/SKILL.md +10 -2
- package/.codex/skills/maestro-analyze/SKILL.md +7 -1
- package/.codex/skills/maestro-blueprint/SKILL.md +1 -1
- package/.codex/skills/maestro-brainstorm/SKILL.md +11 -8
- package/.codex/skills/maestro-collab/SKILL.md +5 -5
- package/.codex/skills/maestro-companion/SKILL.md +4 -1
- package/.codex/skills/maestro-composer/SKILL.md +6 -3
- package/.codex/skills/maestro-execute/SKILL.md +11 -8
- package/.codex/skills/maestro-fork/SKILL.md +4 -3
- package/.codex/skills/maestro-grill/SKILL.md +1 -1
- package/.codex/skills/maestro-guard/SKILL.md +1 -1
- package/.codex/skills/maestro-impeccable/SKILL.md +5 -5
- package/.codex/skills/maestro-init/SKILL.md +3 -2
- package/.codex/skills/maestro-milestone-audit/SKILL.md +21 -9
- package/.codex/skills/maestro-milestone-complete/SKILL.md +3 -3
- package/.codex/skills/maestro-milestone-release/SKILL.md +18 -1
- package/.codex/skills/maestro-next/SKILL.md +11 -10
- package/.codex/skills/maestro-overlay/SKILL.md +16 -6
- package/.codex/skills/maestro-player/SKILL.md +11 -5
- package/.codex/skills/maestro-quick/SKILL.md +2 -2
- package/.codex/skills/maestro-ralph/SKILL.md +44 -31
- package/.codex/skills/maestro-ralph-cli/SKILL.md +394 -0
- package/.codex/skills/maestro-ralph-cli-execute/SKILL.md +146 -0
- package/.codex/skills/maestro-ralph-execute/SKILL.md +105 -24
- package/.codex/skills/maestro-roadmap/SKILL.md +8 -2
- package/.codex/skills/maestro-tools-execute/SKILL.md +8 -4
- package/.codex/skills/maestro-tools-register/SKILL.md +10 -6
- package/.codex/skills/maestro-ui-codify/SKILL.md +14 -9
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +36 -14
- package/.codex/skills/manage-codebase-refresh/SKILL.md +1 -1
- package/.codex/skills/manage-drift-realign/SKILL.md +15 -12
- package/.codex/skills/manage-harvest/SKILL.md +1 -1
- package/.codex/skills/manage-issue/SKILL.md +8 -4
- package/.codex/skills/manage-issue-discover/SKILL.md +15 -14
- package/.codex/skills/manage-knowhow/SKILL.md +3 -2
- package/.codex/skills/manage-knowhow-capture/SKILL.md +4 -3
- package/.codex/skills/manage-learn/SKILL.md +2 -2
- package/.codex/skills/odyssey-debug/SKILL.md +12 -7
- package/.codex/skills/odyssey-improve/SKILL.md +11 -6
- package/.codex/skills/odyssey-planex/SKILL.md +14 -8
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +12 -7
- package/.codex/skills/odyssey-ui/SKILL.md +10 -5
- package/.codex/skills/quality-auto-test/SKILL.md +13 -5
- package/.codex/skills/quality-debug/SKILL.md +18 -11
- package/.codex/skills/quality-refactor/SKILL.md +4 -4
- package/.codex/skills/quality-retrospective/SKILL.md +5 -6
- package/.codex/skills/quality-review/SKILL.md +18 -11
- package/.codex/skills/quality-sync/SKILL.md +2 -2
- package/.codex/skills/quality-test/SKILL.md +7 -5
- package/.codex/skills/security-audit/SKILL.md +7 -5
- package/.codex/skills/spec-add/SKILL.md +9 -7
- package/.codex/skills/spec-load/SKILL.md +3 -2
- package/.codex/skills/spec-map/SKILL.md +10 -1
- package/.codex/skills/spec-remove/SKILL.md +3 -2
- package/.codex/skills/team-coordinate/SKILL.md +10 -4
- package/.codex/skills/team-lifecycle-v4/SKILL.md +33 -26
- package/.codex/skills/team-quality-assurance/SKILL.md +43 -0
- package/.codex/skills/team-review/SKILL.md +50 -6
- package/.codex/skills/team-tech-debt/SKILL.md +53 -7
- package/.codex/skills/team-testing/SKILL.md +50 -2
- package/.codex/skills/wiki-connect/SKILL.md +3 -1
- package/.codex/skills/wiki-digest/SKILL.md +6 -4
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +16 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +419 -44
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +43 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/src/commands/install-backend.js +31 -16
- package/dashboard/dist-server/src/commands/install-backend.js.map +1 -1
- package/dashboard/dist-server/src/core/component-defs.js +25 -0
- package/dashboard/dist-server/src/core/component-defs.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/db/types.d.ts +3 -0
- package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.d.ts +46 -0
- package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js +329 -0
- package/dashboard/dist-server/src/graph/kg/embedding/code-embedding.js.map +1 -0
- package/dashboard/dist-server/src/graph/kg/embedding/index.d.ts +2 -0
- package/dashboard/dist-server/src/graph/kg/embedding/index.js +3 -0
- package/dashboard/dist-server/src/graph/kg/embedding/index.js.map +1 -0
- package/dashboard/dist-server/src/graph/kg/engine.d.ts +19 -1
- package/dashboard/dist-server/src/graph/kg/engine.js +71 -1
- package/dashboard/dist-server/src/graph/kg/engine.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/query/scoring.d.ts +5 -0
- package/dashboard/dist-server/src/graph/kg/query/scoring.js +85 -1
- package/dashboard/dist-server/src/graph/kg/query/scoring.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/query/search.d.ts +7 -0
- package/dashboard/dist-server/src/graph/kg/query/search.js +117 -1
- package/dashboard/dist-server/src/graph/kg/query/search.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js +49 -0
- package/dashboard/dist-server/src/graph/kg/surface/mcp-tools.js.map +1 -1
- package/dashboard/dist-server/src/hooks/kg-sync-hook.js +3 -0
- package/dashboard/dist-server/src/hooks/kg-sync-hook.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-loader.js +7 -3
- package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +31 -16
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +25 -0
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/core/plugin-bridge.d.ts.map +1 -1
- package/dist/src/core/plugin-bridge.js +17 -0
- package/dist/src/core/plugin-bridge.js.map +1 -1
- package/dist/src/graph/kg/db/types.d.ts +3 -0
- package/dist/src/graph/kg/db/types.d.ts.map +1 -1
- package/dist/src/graph/kg/embedding/code-embedding.d.ts +47 -0
- package/dist/src/graph/kg/embedding/code-embedding.d.ts.map +1 -0
- package/dist/src/graph/kg/embedding/code-embedding.js +329 -0
- package/dist/src/graph/kg/embedding/code-embedding.js.map +1 -0
- package/dist/src/graph/kg/embedding/index.d.ts +3 -0
- package/dist/src/graph/kg/embedding/index.d.ts.map +1 -0
- package/dist/src/graph/kg/embedding/index.js +3 -0
- package/dist/src/graph/kg/embedding/index.js.map +1 -0
- package/dist/src/graph/kg/engine.d.ts +19 -1
- package/dist/src/graph/kg/engine.d.ts.map +1 -1
- package/dist/src/graph/kg/engine.js +71 -1
- package/dist/src/graph/kg/engine.js.map +1 -1
- package/dist/src/graph/kg/query/scoring.d.ts +5 -0
- package/dist/src/graph/kg/query/scoring.d.ts.map +1 -1
- package/dist/src/graph/kg/query/scoring.js +85 -1
- package/dist/src/graph/kg/query/scoring.js.map +1 -1
- package/dist/src/graph/kg/query/search.d.ts +7 -0
- package/dist/src/graph/kg/query/search.d.ts.map +1 -1
- package/dist/src/graph/kg/query/search.js +117 -1
- package/dist/src/graph/kg/query/search.js.map +1 -1
- package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -1
- package/dist/src/graph/kg/surface/mcp-tools.js +49 -0
- package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -1
- package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
- package/dist/src/hooks/kg-sync-hook.js +3 -0
- package/dist/src/hooks/kg-sync-hook.js.map +1 -1
- package/dist/src/tools/code-semantic-search.d.ts +10 -0
- package/dist/src/tools/code-semantic-search.d.ts.map +1 -0
- package/dist/src/tools/code-semantic-search.js +81 -0
- package/dist/src/tools/code-semantic-search.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +4 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +7 -3
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/wiki-search.d.ts +13 -0
- package/dist/src/tools/wiki-search.d.ts.map +1 -0
- package/dist/src/tools/wiki-search.js +114 -0
- package/dist/src/tools/wiki-search.js.map +1 -0
- package/dist/src/utils/update-notices.js +23 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +4 -1
- package/workflows/agy-instructions.md +147 -161
- package/workflows/claude-instructions.md +100 -48
- package/workflows/codex-instructions.md +147 -161
- package/workflows/execute.md +4 -3
- package/workflows/explore-usage.md +41 -81
- package/workflows/grill.md +11 -0
- package/workflows/milestone-audit.md +8 -0
- package/workflows/odyssey-base-codex.md +115 -116
- package/workflows/odyssey-base.md +89 -91
- package/workflows/plan.md +6 -0
|
@@ -8,9 +8,15 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
|
8
8
|
Single-step executor for ralph (adaptive) and maestro (static) sessions.
|
|
9
9
|
Each invocation: locate session → find next step → resolve args → execute → update → self-invoke next.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
### Notation
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
`Skill(name)` / `Skill(name, args)` = 加载 `~/.codex/skills/{name}/SKILL.md` 或 `.codex/skills/{name}/SKILL.md`(project 覆盖 global),args 填入目标 SKILL.md `<context>` 块的输入参数位。这是 skill 间的内部调用,**不是 CLI 命令**。严禁翻译为 `Bash("maestro {name} {args}")`。
|
|
14
|
+
|
|
15
|
+
合法 CLI 子命令仅限结构化操作:`maestro ralph next`、`maestro ralph complete`、`maestro ralph retry`、`maestro delegate`、`maestro explore` 等。
|
|
16
|
+
|
|
17
|
+
Mutual invocation with `Skill(maestro-ralph)` forms a self-perpetuating work loop.
|
|
18
|
+
|
|
19
|
+
**Session**: `.workflow/.maestro/{session_id}/status.json` — 工作流唯一真源。session_id 格式 `ralph-{YYYYMMDD-HHmmss}`(Skill(maestro-ralph) 创建,自适应链)或 `maestro-{YYYYMMDD-HHmmss}`(Skill(maestro) 创建,静态链)。两类都由本 skill 推进;省略 `[session-id]` 时取最新 `status=="running"`。Schema 详见 `Skill(maestro-ralph)` 的 Session Schema。
|
|
14
20
|
</purpose>
|
|
15
21
|
|
|
16
22
|
<context>
|
|
@@ -23,16 +29,18 @@ Remaining → session_id (if matches maestro-* or ralph-*)
|
|
|
23
29
|
```
|
|
24
30
|
Also read `session.auto_mode` from status.json — if true, treat as `-y`.
|
|
25
31
|
|
|
32
|
+
**session_id requirement:** Once resolved (from args or auto-discovery in A_LOCATE_SESSION), `session_id` MUST be passed to ALL `maestro ralph next|complete|retry` CLI calls via `--session <session_id>`. This prevents accidental cross-session operations when multiple sessions exist.
|
|
33
|
+
|
|
26
34
|
**Step kinds:**
|
|
27
35
|
|
|
28
36
|
| Kind | Identifier | Execution | Flow after |
|
|
29
37
|
|------|-----------|-----------|------------|
|
|
30
|
-
| decision step | `step.decision` 非空 |
|
|
38
|
+
| decision step | `step.decision` 非空 | `Skill(maestro-ralph)` | Execution ends here |
|
|
31
39
|
| 执行 step | `step.decision == null` | `Bash("maestro ralph next")` → 内联按其 stdout 执行 → `Bash("maestro ralph complete N --status ...")` | Self-invoke next |
|
|
32
40
|
|
|
33
41
|
HARD RULES:
|
|
34
42
|
- 执行 step:**统一通过 `maestro ralph next` CLI 加载**。CLI 负责读 command_path(codex SKILL.md)、解析 `<required_reading>` + `<deferred_reading>`、拼接 prompt、写 `step.load.*` + `active_step_index` + `step.status="running"`。不要再在会话里手动 Read + 解析 required_reading
|
|
35
|
-
- decision step:A_EXEC_DECISION 通过
|
|
43
|
+
- decision step:A_EXEC_DECISION 通过 `Skill(maestro-ralph)` 直调 handoff 给 ralph 评估(不走 CLI)
|
|
36
44
|
- `command_path` 由 ralph 在 A_BUILD_STEPS 写入 status.json(通过 `maestro ralph skills --platform codex` 预校验;缺失 → ralph next 返回 E006/E007 并拒绝执行)
|
|
37
45
|
- 每个 step 结束必须调用 `maestro ralph complete N --status <S>` 或 `maestro ralph retry N`。STATUS 仅 4 个合法值:`DONE | DONE_WITH_CONCERNS | NEEDS_RETRY | BLOCKED`
|
|
38
46
|
- Platform:`session.platform == "codex"`;ralph next CLI 自动按 platform 解析 SKILL.md(无需额外参数)
|
|
@@ -48,7 +56,7 @@ HARD RULES:
|
|
|
48
56
|
7. **status.json 每步骤后由 CLI 原子写盘** — resume-safe
|
|
49
57
|
8. **STATUS 枚举受限** — 仅 `DONE | DONE_WITH_CONCERNS | NEEDS_RETRY | BLOCKED`
|
|
50
58
|
9. **Platform binding** — 仅处理 `session.platform == "codex"` 的会话;platform 缺失视为 codex(向前兼容)
|
|
51
|
-
10. **CLI ≠ Skill** — `maestro ralph next|complete|retry` 是 CLI 子命令(Bash
|
|
59
|
+
10. **CLI ≠ Skill** — `maestro ralph next|complete|retry` 是 CLI 子命令(Bash 调用);`Skill(maestro-ralph)` / `Skill(maestro-ralph-execute)` 是 skill 直调。**严禁** `Bash("maestro \"intent\"")` 裸 intent 调用,CLI 不接受。
|
|
52
60
|
</invariants>
|
|
53
61
|
|
|
54
62
|
<state_machine>
|
|
@@ -56,7 +64,9 @@ HARD RULES:
|
|
|
56
64
|
<states>
|
|
57
65
|
S_LOCATE — 定位 session + 找下一个 pending step PERSIST: —
|
|
58
66
|
S_RESOLVE_ARGS — 解析占位符 + 丰富参数 PERSIST: step.args (enriched)
|
|
67
|
+
S_LOAD_CONTEXT — 加载前序产出 + 发现 PERSIST: —
|
|
59
68
|
S_EXECUTE — 执行当前 step PERSIST: step.status = "running", session.current_step
|
|
69
|
+
S_POST_ANALYZE — 产物 vs 目标偏离分析 PERSIST: step.drift_score, step.drift_correction
|
|
60
70
|
S_POST_EXEC — 标记完成 + 传播上下文 PERSIST: step.completion_*, step.status, session.context
|
|
61
71
|
S_HANDLE_FAIL — 处理失败 PERSIST: step.status, session.status
|
|
62
72
|
S_COMPLETE — 所有 step 完成 PERSIST: session.status = "completed"
|
|
@@ -71,15 +81,24 @@ S_LOCATE:
|
|
|
71
81
|
→ S_FALLBACK WHEN: no running session
|
|
72
82
|
|
|
73
83
|
S_RESOLVE_ARGS:
|
|
74
|
-
→
|
|
84
|
+
→ S_LOAD_CONTEXT DO: A_RESOLVE_ARGS
|
|
85
|
+
|
|
86
|
+
S_LOAD_CONTEXT:
|
|
87
|
+
→ S_EXECUTE DO: A_LOAD_STEP_CONTEXT
|
|
75
88
|
|
|
76
89
|
S_EXECUTE:
|
|
77
90
|
→ END WHEN: step.decision != null DO: A_EXEC_DECISION
|
|
78
|
-
→
|
|
79
|
-
→
|
|
91
|
+
→ S_POST_ANALYZE WHEN: step.decision == null + execution succeeded (DONE|DONE_WITH_CONCERNS) DO: A_EXEC_STEP
|
|
92
|
+
→ S_COMPLETE WHEN: step.decision == null + ralph next exit code 2 (all steps completed)
|
|
93
|
+
→ S_HANDLE_FAIL WHEN: step.decision == null + ralph next exit code 1|3 OR ralph complete with NEEDS_RETRY|BLOCKED DO: A_EXEC_STEP
|
|
94
|
+
|
|
95
|
+
S_POST_ANALYZE:
|
|
96
|
+
→ S_POST_EXEC WHEN: drift_score == ALIGNED|MINOR_DRIFT DO: A_POST_ANALYZE_DRIFT
|
|
97
|
+
→ S_EXECUTE WHEN: drift_score == MAJOR_DRIFT + not retried DO: A_POST_ANALYZE_DRIFT (re-execute with correction)
|
|
98
|
+
→ S_POST_EXEC WHEN: drift_score == MAJOR_DRIFT + retried DO: A_POST_ANALYZE_DRIFT (proceed with caveats)
|
|
80
99
|
|
|
81
100
|
S_POST_EXEC:
|
|
82
|
-
→ S_LOCATE DO: Bash("maestro ralph complete ...") +
|
|
101
|
+
→ S_LOCATE DO: Bash("maestro ralph complete ...") + Skill(maestro-ralph-execute)
|
|
83
102
|
NOTE: CLI 已写完 completion_*, status, active_step_index;无需额外写盘
|
|
84
103
|
|
|
85
104
|
S_HANDLE_FAIL:
|
|
@@ -93,7 +112,7 @@ S_COMPLETE:
|
|
|
93
112
|
→ END DO: A_COMPLETE_SESSION
|
|
94
113
|
|
|
95
114
|
S_FALLBACK:
|
|
96
|
-
→ END DO: display "无运行中的会话。使用
|
|
115
|
+
→ END DO: display "无运行中的会话。使用 Skill(maestro) 或 Skill(maestro-ralph) 创建。"
|
|
97
116
|
|
|
98
117
|
</transitions>
|
|
99
118
|
|
|
@@ -104,7 +123,7 @@ S_FALLBACK:
|
|
|
104
123
|
1. If session_id provided → load `.workflow/.maestro/{session_id}/status.json`
|
|
105
124
|
2. Else: scan `.workflow/.maestro/*/status.json`, filter `status == "running"`, sort DESC, take first
|
|
106
125
|
3. Extract: session_id, source, steps[], phase, milestone, intent, auto_mode, context, cli_tool, platform, active_step_index
|
|
107
|
-
4.
|
|
126
|
+
4. Identify next pending step index: scan `steps[]` in order, find first entry with `status == "pending"` → store as `next_step_index`. This index is passed to A_RESOLVE_ARGS for placeholder enrichment and to A_EXEC_STEP/A_EXEC_DECISION for display. The actual step activation (writing `active_step_index`) is still done by `maestro ralph next` CLI — A_LOCATE_SESSION only reads the index without writing it.
|
|
108
127
|
|
|
109
128
|
### A_RESOLVE_ARGS
|
|
110
129
|
|
|
@@ -168,18 +187,39 @@ if goal:
|
|
|
168
187
|
|
|
169
188
|
Write enriched args + source_artifact_ref back to status.json.
|
|
170
189
|
|
|
190
|
+
### A_LOAD_STEP_CONTEXT
|
|
191
|
+
|
|
192
|
+
加载前序产出和发现,为 inline execution 注入上下文。
|
|
193
|
+
|
|
194
|
+
1. **Previous step output** — 读前一 completed step 的 `completion_summary` + `completion_caveats` + `completion_decisions` + `completion_deferred`
|
|
195
|
+
2. **Artifacts** — 按 `session.context` 中的路径逐个 Read,提取与当前 step 相关的内容:
|
|
196
|
+
|
|
197
|
+
| 当前 stage | 加载什么 | Source |
|
|
198
|
+
|-----------|---------|--------|
|
|
199
|
+
| plan | analysis conclusions + scope_verdict | `{context.analysis_dir}/conclusions.json` |
|
|
200
|
+
| execute | task list + wave assignments | `{context.plan_dir}/TASK-*.json` |
|
|
201
|
+
| review | changed files + verification results | `{context.scratch_dir}/verification.json` |
|
|
202
|
+
| test | review findings | `review.json` |
|
|
203
|
+
| debug | error traces + failing test details | 前一 step 的 `completion_evidence` |
|
|
204
|
+
| brainstorm | grill report | `{context.grill_id}` report |
|
|
205
|
+
|
|
206
|
+
3. **Explore if needed** — 产物指向代码位置但缺少上下文 → `maestro explore` 补充(仅 execute/debug/test 且有文件路径引用时)
|
|
207
|
+
4. **Accumulated signals** — 遍历 ALL completed steps → 聚合 caveats + deferred
|
|
208
|
+
|
|
209
|
+
加载的内容进入会话上下文,后续 inline execution 自动受益。
|
|
210
|
+
|
|
171
211
|
### A_EXEC_DECISION
|
|
172
212
|
|
|
173
213
|
1. Mark step running, write status.json
|
|
174
214
|
2. Display: `[{index}/{total}] ◆ {step.decision} Retry: {retry}/{max}`
|
|
175
|
-
3.
|
|
215
|
+
3. `Skill(maestro-ralph)` — 直调 ralph 评估 + handoff
|
|
176
216
|
4. 执行在此结束
|
|
177
217
|
|
|
178
218
|
### A_EXEC_STEP
|
|
179
219
|
|
|
180
|
-
1. **Load** — `Bash("maestro ralph next")`
|
|
220
|
+
1. **Load** — `Bash("maestro ralph next --session {session_id}")`
|
|
181
221
|
- 退出码 0 → 按 stdout 内联执行
|
|
182
|
-
- 退出码 2 →
|
|
222
|
+
- 退出码 2 → 所有 step 已完成,转 S_COMPLETE
|
|
183
223
|
- 退出码 3 → active_step_index 已被占用
|
|
184
224
|
- 退出码 1 → pause session
|
|
185
225
|
2. **Goal context pre-injection**:
|
|
@@ -195,11 +235,11 @@ Write enriched args + source_artifact_ref back to status.json.
|
|
|
195
235
|
</goal_context>
|
|
196
236
|
```
|
|
197
237
|
3. **Inline execution** — 按 stdout 执行;deferred_reading 按需 Read
|
|
198
|
-
4. **Complete
|
|
199
|
-
- `Bash("maestro ralph complete N --status DONE --summary \"...\" [--evidence <path>] [--decisions \"...\"] [--caveats \"...\"] [--deferred \"...\"]")`
|
|
200
|
-
- `Bash("maestro ralph complete N --status DONE_WITH_CONCERNS --summary \"...\" --concerns \"...\"")`
|
|
201
|
-
- `Bash("maestro ralph retry N")`
|
|
202
|
-
- `Bash("maestro ralph complete N --status BLOCKED --reason \"...\"")`
|
|
238
|
+
4. **Complete** (all calls MUST include `--session {session_id}`):
|
|
239
|
+
- `Bash("maestro ralph complete N --session {session_id} --status DONE --summary \"...\" [--evidence <path>] [--decisions \"...\"] [--caveats \"...\"] [--deferred \"...\"]")`
|
|
240
|
+
- `Bash("maestro ralph complete N --session {session_id} --status DONE_WITH_CONCERNS --summary \"...\" --concerns \"...\"")`
|
|
241
|
+
- `Bash("maestro ralph retry N --session {session_id}")`
|
|
242
|
+
- `Bash("maestro ralph complete N --session {session_id} --status BLOCKED --reason \"...\"")`
|
|
203
243
|
|
|
204
244
|
| Flag | 规则 | 示例 |
|
|
205
245
|
|------|------|------|
|
|
@@ -209,11 +249,52 @@ Write enriched args + source_artifact_ref back to status.json.
|
|
|
209
249
|
| `--deferred` | SHOULD。推迟工作,可多次 | `"性能优化留到 review 后"` |
|
|
210
250
|
5. **Propagate context signals** — 关键信号 (`PHASE: N` / `scratch_dir: path` / `BLP-xxx`) 写入 `status.json.context`
|
|
211
251
|
|
|
212
|
-
完成后 S_LOCATE 触发
|
|
252
|
+
完成后 S_LOCATE 触发 `Skill(maestro-ralph-execute)` 直调自调用。
|
|
253
|
+
|
|
254
|
+
### A_POST_ANALYZE_DRIFT
|
|
255
|
+
|
|
256
|
+
执行完成后、调 ralph complete 前,分析产物与目标的偏离程度并自动修正。
|
|
257
|
+
|
|
258
|
+
**1. 收集对照基准:**
|
|
259
|
+
|
|
260
|
+
| 基准来源 | 取值 |
|
|
261
|
+
|---------|------|
|
|
262
|
+
| `step.goal_ref` → goal.done_when | 子目标的完成条件 |
|
|
263
|
+
| `session.boundary_contract.definition_of_done` | 全局验收标准 |
|
|
264
|
+
| `session.execution_criteria` | 执行准则 |
|
|
265
|
+
| `session.intent` | 原始意图 |
|
|
266
|
+
|
|
267
|
+
**2. 读产物摘要:**
|
|
268
|
+
|
|
269
|
+
从 A_EXTRACT_STEP_SIGNALS (step 4a) 已提取的 summary + decisions + artifacts 构建产物画像。
|
|
270
|
+
|
|
271
|
+
**3. 对比评分:**
|
|
272
|
+
|
|
273
|
+
| 维度 | 检查 |
|
|
274
|
+
|------|------|
|
|
275
|
+
| 覆盖度 | 产物是否覆盖了 goal.done_when 的每个条件 |
|
|
276
|
+
| 方向性 | decisions 是否与 intent 和 boundary 一致 |
|
|
277
|
+
| 完整性 | 预期产物类型是否齐全(如 plan 阶段应有 TASK-*.json) |
|
|
278
|
+
|
|
279
|
+
**drift_score:**
|
|
280
|
+
- `ALIGNED` — 全部维度通过
|
|
281
|
+
- `MINOR_DRIFT` — 覆盖度/完整性有小缺口,不影响后续
|
|
282
|
+
- `MAJOR_DRIFT` — 方向性偏离或关键产物缺失
|
|
283
|
+
|
|
284
|
+
**4. 修正动作:**
|
|
285
|
+
|
|
286
|
+
| drift_score | 动作 |
|
|
287
|
+
|-------------|------|
|
|
288
|
+
| ALIGNED | 正常进入 S_POST_EXEC |
|
|
289
|
+
| MINOR_DRIFT | 将偏离项追加到 completion_caveats,正常 complete |
|
|
290
|
+
| MAJOR_DRIFT + 未重试 | 将偏离分析写入 `step.drift_correction`,回到 S_EXECUTE 重跑(A_LOAD_STEP_CONTEXT 自动加载 drift_correction 作为修正上下文) |
|
|
291
|
+
| MAJOR_DRIFT + 已重试 | 将偏离项写入 caveats + concerns,以 DONE_WITH_CONCERNS complete,由后续 decision node 裁决 |
|
|
292
|
+
|
|
293
|
+
**5. 写入:** `step.drift_score`, `step.drift_correction`
|
|
213
294
|
|
|
214
295
|
### A_RETRY
|
|
215
296
|
|
|
216
|
-
1. `Bash("maestro ralph retry N")` — CLI 设 `step.retried = true`, `step.status = "pending"`, `step.completion_confirmed = false`, 清 `active_step_index`
|
|
297
|
+
1. `Bash("maestro ralph retry N --session {session_id}")` — CLI 设 `step.retried = true`, `step.status = "pending"`, `step.completion_confirmed = false`, 清 `active_step_index`
|
|
217
298
|
2. Display: `[{index}/{total}] ↻ {step.skill} retry`
|
|
218
299
|
|
|
219
300
|
### A_SKIP_STEP
|
|
@@ -224,7 +305,7 @@ Write enriched args + source_artifact_ref back to status.json.
|
|
|
224
305
|
### A_PAUSE_SESSION
|
|
225
306
|
|
|
226
307
|
通常由 `ralph complete N --status BLOCKED --reason "..."` 触发,CLI 已写 `session.status = "paused"`。手动 pause 场景下直接编辑 status.json。
|
|
227
|
-
Display: `[{index}/{total}] ✗ {step.skill}
|
|
308
|
+
Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。Skill(maestro-ralph, continue) 恢复。`
|
|
228
309
|
|
|
229
310
|
### A_COMPLETE_SESSION
|
|
230
311
|
|
|
@@ -258,7 +339,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。$maestro
|
|
|
258
339
|
|
|
259
340
|
| Code | Severity | Description | Recovery |
|
|
260
341
|
|------|----------|-------------|----------|
|
|
261
|
-
| E001 | error | No running session found | Suggest
|
|
342
|
+
| E001 | error | No running session found | Suggest Skill(maestro) or Skill(maestro-ralph) |
|
|
262
343
|
| E006 | error | command_path missing/unreachable for 执行 step | `ralph next` 拒绝;编辑 status.json 或重 build |
|
|
263
344
|
| E007 | error | required_reading 引用文件缺失 | `ralph next` 拒绝;CLI stderr 列出缺失路径 |
|
|
264
345
|
| E008 | error | `ralph complete` idx ≠ active_step_index | 编辑 status.json 修正一致性 |
|
|
@@ -273,7 +354,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。$maestro
|
|
|
273
354
|
- [ ] Session discovery covers maestro-* and ralph-*
|
|
274
355
|
- [ ] `-y` parsed from args 或 session.auto_mode;auto=true 时透传 `-y` 到 skill args
|
|
275
356
|
- [ ] Placeholders resolved;per-skill enrichment 正确
|
|
276
|
-
- [ ] Decision 节点(`step.decision != null`)走
|
|
357
|
+
- [ ] Decision 节点(`step.decision != null`)走 `Skill(maestro-ralph)` 直调 handoff(**不调 ralph next CLI**)
|
|
277
358
|
- [ ] 执行 step 通过 `Bash("maestro ralph next")` 加载;CLI 返回拼好的 prompt + completion 协议
|
|
278
359
|
- [ ] required_reading 由 CLI 自动加载并拼入 prompt;缺失 → CLI 退出码 1,pause session
|
|
279
360
|
- [ ] `<deferred_reading>` 由 CLI 记录到 `step.load.deferred_files`,执行阶段按需 Read
|
|
@@ -94,8 +94,14 @@ S_AGGREGATE -- 精炼、评估、输出 PERSIST: con
|
|
|
94
94
|
|
|
95
95
|
S_PARSE:
|
|
96
96
|
-> S_INPUT WHEN: create mode (default)
|
|
97
|
-
->
|
|
98
|
-
->
|
|
97
|
+
-> S_REVISE WHEN: --revise (load roadmap.md, apply changes, preserve completed phases)
|
|
98
|
+
-> S_REVIEW WHEN: --review (read-only health assessment)
|
|
99
|
+
|
|
100
|
+
S_REVISE:
|
|
101
|
+
-> S_AGGREGATE DO: A_REVISE — load .workflow/roadmap.md (E005 if missing), apply --revise instructions, preserve completed phases (status!="pending"), rewrite only pending phases, update state.json milestones
|
|
102
|
+
|
|
103
|
+
S_REVIEW:
|
|
104
|
+
-> END DO: A_REVIEW — load .workflow/roadmap.md (E005 if missing), read-only health assessment: phase coverage, dependency integrity, stale phases, progress %. Display report. No writes.
|
|
99
105
|
|
|
100
106
|
S_INPUT:
|
|
101
107
|
-> S_CSV_GEN DO: parse requirement (text/@file), load context-package.json if --from, codebase detection, load specs
|
|
@@ -31,11 +31,11 @@ Empty arguments enters interactive mode: list all tools for user selection.
|
|
|
31
31
|
|
|
32
32
|
### Step 1: Load Tool
|
|
33
33
|
|
|
34
|
-
**By name
|
|
34
|
+
**By name** (search all categories first, then filter):
|
|
35
35
|
```bash
|
|
36
|
-
maestro
|
|
36
|
+
maestro search "<name>" --type spec
|
|
37
37
|
```
|
|
38
|
-
Match tool entries whose title or keywords contain the name.
|
|
38
|
+
Match tool entries whose title or keywords contain the name across all categories. If no results, retry with `maestro search "<name>" --type knowhow`. Present matches to user if multiple found.
|
|
39
39
|
|
|
40
40
|
**By category**:
|
|
41
41
|
```bash
|
|
@@ -44,7 +44,11 @@ maestro load --type spec --category <category>
|
|
|
44
44
|
Extract tool entries from output, list available tools.
|
|
45
45
|
|
|
46
46
|
**Empty args**:
|
|
47
|
-
|
|
47
|
+
Search all tool entries across all categories:
|
|
48
|
+
```bash
|
|
49
|
+
maestro search "tool" --type knowhow
|
|
50
|
+
```
|
|
51
|
+
Present to user with request_user_input for selection.
|
|
48
52
|
|
|
49
53
|
### Step 2: Display Tool
|
|
50
54
|
|
|
@@ -6,7 +6,9 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<purpose>
|
|
9
|
-
Codify reusable business processes as knowhow documents with `tool: true` in YAML frontmatter.
|
|
9
|
+
Codify reusable business processes as knowhow documents with `tool: true` in YAML frontmatter.
|
|
10
|
+
|
|
11
|
+
**Storage architecture**: `knowhow/` is the single source of truth for tool content. Spec index entries (`specs/`) serve only as discovery pointers — they reference knowhow documents via `ref:` links but never store tool steps directly. Downstream agents discover tools via `maestro search` or `maestro load --type knowhow --keyword <name>`, with spec index providing category-based routing.
|
|
10
12
|
|
|
11
13
|
Four modes:
|
|
12
14
|
|
|
@@ -30,7 +32,7 @@ $maestro-tools-register "promote RCP-db-migration-rollback as test tool"
|
|
|
30
32
|
$maestro-tools-register "promote knowhow-auth-api to coding tool"
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
**Tool registration**: Creates knowhow documents in
|
|
35
|
+
**Tool registration**: Creates knowhow documents in `.workflow/knowhow/` (single source of truth for tool content). Tools are discovered via `maestro search` or `maestro load --type knowhow` by category + tool flag.
|
|
34
36
|
|
|
35
37
|
**Knowhow format**:
|
|
36
38
|
```yaml
|
|
@@ -149,8 +151,9 @@ tool: true
|
|
|
149
151
|
|
|
150
152
|
### Step 6: Verify
|
|
151
153
|
|
|
152
|
-
- `maestro load --type
|
|
153
|
-
-
|
|
154
|
+
- Verify knowhow document exists: `maestro load --type knowhow --id <id>` to confirm loadable
|
|
155
|
+
- Verify discovery works: `maestro search "<keyword>" --type knowhow` to confirm searchable
|
|
156
|
+
- Display result: title, category, keywords, storage location (knowhow/)
|
|
154
157
|
|
|
155
158
|
</execution>
|
|
156
159
|
|
|
@@ -163,9 +166,10 @@ tool: true
|
|
|
163
166
|
</error_codes>
|
|
164
167
|
|
|
165
168
|
<success_criteria>
|
|
166
|
-
- [ ] Tool registered as knowhow document with `tool: true` frontmatter
|
|
169
|
+
- [ ] Tool registered as knowhow document in `.workflow/knowhow/` with `tool: true` frontmatter
|
|
167
170
|
- [ ] category attribute correctly set
|
|
168
171
|
- [ ] keywords auto-extracted (3-5 terms)
|
|
169
|
-
- [ ]
|
|
172
|
+
- [ ] Discoverable via `maestro search` and `maestro load --type knowhow`
|
|
170
173
|
- [ ] Long processes use ref mode with knowhow file created
|
|
174
|
+
- [ ] No tool content duplicated in spec index — spec entries use `ref:` links only
|
|
171
175
|
</success_criteria>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: maestro-ui-codify
|
|
3
3
|
description: Extract design system from code, generate reference package, persist as knowledge assets
|
|
4
4
|
argument-hint: "<source-path> [--package-name <name>] [--output-dir <path>] [--overwrite] [-y]"
|
|
5
|
-
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<purpose>
|
|
@@ -68,13 +68,13 @@ $maestro-ui-codify "src/styles" --output-dir .workflow/packages --overwrite -y
|
|
|
68
68
|
### tasks.csv (Master State)
|
|
69
69
|
|
|
70
70
|
```csv
|
|
71
|
-
id,wave,title,description,agent_type,deps
|
|
72
|
-
"discover-1","1","Discover design files","Scan source directory, categorize files by type (CSS/SCSS/JS/TS/HTML), build file inventory with import relationships","discover",""
|
|
73
|
-
"style-1","2","Extract visual design tokens","Extract color, typography, spacing, border, shadow tokens from source files. Output design-tokens.json","extract-style","discover-1"
|
|
74
|
-
"anim-1","2","Extract animation tokens","Extract animation/transition declarations: keyframes, durations, easings, motion patterns. Output animation-tokens.json","extract-animation","discover-1"
|
|
75
|
-
"layout-1","2","Extract layout patterns","Extract component layout patterns: grid/flex systems, responsive breakpoints, container patterns. Output layout-templates.json","extract-layout","discover-1"
|
|
76
|
-
"package-1","3","Generate reference package","Copy token JSONs to package dir, generate preview.html + preview.css interactive showcase","package","style-1;anim-1;layout-1"
|
|
77
|
-
"knowhow-1","4","Build knowledge assets","Read token JSONs, build knowhow-manifest.json, write knowhow files + spec entries, cleanup temp workspace","knowhow","package-1"
|
|
71
|
+
id,wave,title,description,agent_type,deps,status
|
|
72
|
+
"discover-1","1","Discover design files","Scan source directory, categorize files by type (CSS/SCSS/JS/TS/HTML), build file inventory with import relationships","discover","","pending"
|
|
73
|
+
"style-1","2","Extract visual design tokens","Extract color, typography, spacing, border, shadow tokens from source files. Output design-tokens.json","extract-style","discover-1","pending"
|
|
74
|
+
"anim-1","2","Extract animation tokens","Extract animation/transition declarations: keyframes, durations, easings, motion patterns. Output animation-tokens.json","extract-animation","discover-1","pending"
|
|
75
|
+
"layout-1","2","Extract layout patterns","Extract component layout patterns: grid/flex systems, responsive breakpoints, container patterns. Output layout-templates.json","extract-layout","discover-1","pending"
|
|
76
|
+
"package-1","3","Generate reference package","Copy token JSONs to package dir, generate preview.html + preview.css interactive showcase","package","style-1;anim-1;layout-1","pending"
|
|
77
|
+
"knowhow-1","4","Build knowledge assets","Read token JSONs, build knowhow-manifest.json, write knowhow files + spec entries, cleanup temp workspace","knowhow","package-1","pending"
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
**Column separation rule**: Input columns and Output columns MUST NOT share names. Wave CSV only contains Input columns. Output columns are returned exclusively via output_schema.
|
|
@@ -89,6 +89,7 @@ id,wave,title,description,agent_type,deps
|
|
|
89
89
|
| `description` | Input | Detailed instructions for this task |
|
|
90
90
|
| `agent_type` | Input | Agent type: discover/extract-style/extract-animation/extract-layout/package/knowhow |
|
|
91
91
|
| `deps` | Input | Semicolon-separated dependency task IDs |
|
|
92
|
+
| `status` | Lifecycle | Task lifecycle status, initialized to `pending`. Updated to `completed`/`failed` after wave merge via `result_status` mapping |
|
|
92
93
|
| `result_status` | Output | `completed` / `failed` (returned via output_schema) |
|
|
93
94
|
| `findings` | Output | Key findings summary (max 500 chars, via output_schema) |
|
|
94
95
|
| `output_path` | Output | Path to generated artifact (via output_schema) |
|
|
@@ -187,6 +188,10 @@ sessionFolder=".workflow/.csv-wave/${session_date}-ui-codify-${session_slug}"
|
|
|
187
188
|
mkdir -p "$sessionFolder"
|
|
188
189
|
```
|
|
189
190
|
|
|
191
|
+
### Step 2c.1: Confirmation Gate
|
|
192
|
+
|
|
193
|
+
Unless `-y/--yes`, display source path, package name, output directory, overwrite policy, and wave plan summary. Use `request_user_input` to confirm before proceeding. Under `-y`, skip confirmation.
|
|
194
|
+
|
|
190
195
|
### Step 3: Generate tasks.csv
|
|
191
196
|
|
|
192
197
|
Build the master CSV with 4 waves. The `description` column contains full agent instructions.
|
|
@@ -329,7 +334,7 @@ spawn_agents_on_csv({
|
|
|
329
334
|
|
|
330
335
|
Merge wave-2-results.csv into master `tasks.csv`: map `result_status` -> master `status` column, then delete `wave-2.csv` and `wave-2-results.csv`.
|
|
331
336
|
|
|
332
|
-
**Degradation**: If animation agent fails (W001), continue — animation is optional. If style
|
|
337
|
+
**Degradation**: If animation agent fails (W001), continue — animation is optional. If style agent fails, Wave 3 proceeds without design-tokens.json but artifact verification will report `incomplete` status. If layout agent fails, Wave 3 proceeds without layout-templates.json but artifact verification will report `incomplete` status. If both style AND layout fail, skip Wave 3 and Wave 4, mark session `degraded`, and report partial results only.
|
|
333
338
|
|
|
334
339
|
#### Wave 3: Reference Package (Barrier)
|
|
335
340
|
|
|
@@ -6,7 +6,7 @@ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<purpose>
|
|
9
|
-
|
|
9
|
+
Two-wave parallel execution -- Wave 1: 3 scanner agents (Component Scanner, Feature Mapper, Requirement Linker) analyze the codebase in parallel. Wave 2: 2 writer agents (Tech Registry Writer, Feature Map Writer) consume scanner results and write documentation files. This is a destructive operation that rebuilds the entire `.workflow/codebase/` directory from scratch.
|
|
10
10
|
|
|
11
11
|
**Core workflow**: Prepare Directory -> Decompose Doc Dimensions -> Parallel Generation -> Assemble doc-index.json
|
|
12
12
|
|
|
@@ -25,11 +25,12 @@ Single-wave parallel execution -- 5 independent doc generator agents each analyz
|
|
|
25
25
|
| +-- Generate tasks.csv with 5 doc generator tasks |
|
|
26
26
|
| +-- All tasks wave 1 (no dependencies) |
|
|
27
27
|
| |
|
|
28
|
-
| Phase 2: Wave Execution (
|
|
29
|
-
| +-- Wave 1:
|
|
28
|
+
| Phase 2: Wave Execution (Two Waves) |
|
|
29
|
+
| +-- Wave 1: 3 scanners run concurrently |
|
|
30
30
|
| | +-- Component Scanner (TC-* entries) |
|
|
31
31
|
| | +-- Feature Mapper (FT-* entries) |
|
|
32
32
|
| | +-- Requirement Linker (REQ-* entries, if specs exist) |
|
|
33
|
+
| +-- Wave 2: 2 writers consume scanner results |
|
|
33
34
|
| | +-- Tech Registry Writer (tech-registry/*.md) |
|
|
34
35
|
| | +-- Feature Map Writer (feature-maps/*.md) |
|
|
35
36
|
| +-- discoveries.ndjson shared (append-only) |
|
|
@@ -80,12 +81,12 @@ When `--yes` or `-y`: Auto-confirm rebuild (implies --force), skip all prompts.
|
|
|
80
81
|
### tasks.csv (Master State)
|
|
81
82
|
|
|
82
83
|
```csv
|
|
83
|
-
id,title,description,doc_dimension,output_path,deps,context_from,wave
|
|
84
|
-
"1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Return JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols via output_schema. Do NOT write files — orchestrator assembles doc-index.json in Phase 3.","components","<ABS_WORKFLOW>/codebase/doc-index.json#components","","","1"
|
|
85
|
-
"2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if <ABS_WORKFLOW>/blueprint/ exists. Return JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase via output_schema. Do NOT write files.","features","<ABS_WORKFLOW>/codebase/doc-index.json#features","","","1"
|
|
86
|
-
"3","Requirement Linker","If <ABS_WORKFLOW>/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Return JSON arrays for requirements and architecture_decisions via output_schema. Do NOT write files.","requirements","<ABS_WORKFLOW>/codebase/doc-index.json#requirements","","","1"
|
|
87
|
-
"4","Tech Registry Writer","For each component discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Also write <ABS_WORKFLOW>/codebase/tech-registry/_index.md with the component table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","tech-registry","<ABS_WORKFLOW>/codebase/tech-registry/","","","
|
|
88
|
-
"5","Feature Map Writer","For each feature discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Also write <ABS_WORKFLOW>/codebase/feature-maps/_index.md with the feature table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","feature-maps","<ABS_WORKFLOW>/codebase/feature-maps/","","","
|
|
84
|
+
id,title,description,doc_dimension,output_path,deps,context_from,wave,status
|
|
85
|
+
"1","Component Scanner","Scan all source directories for components: models, services, controllers, utils, types, config, middleware, core modules. For each component extract exported symbols, determine type, record code locations. Return JSON array of component entries with id (TC-NNN), name, type, code_locations, symbols via output_schema. Do NOT write files — orchestrator assembles doc-index.json in Phase 3.","components","<ABS_WORKFLOW>/codebase/doc-index.json#components","","","1","pending"
|
|
86
|
+
"2","Feature Mapper","Group discovered components by domain/functional area using directory proximity, naming patterns, and import relationships. Map features to requirements if <ABS_WORKFLOW>/blueprint/ exists. Return JSON array of feature entries with id (FT-NNN), name, status, component_ids, requirement_ids, phase via output_schema. Do NOT write files.","features","<ABS_WORKFLOW>/codebase/doc-index.json#features","","","1","pending"
|
|
87
|
+
"3","Requirement Linker","If <ABS_WORKFLOW>/blueprint/ exists, scan BLP-*/requirements/REQ-*.md files. Parse requirement metadata (title, priority, acceptance_criteria). Match requirements to features by keyword analysis. Also scan for ADR-*.md architecture decisions. Return JSON arrays for requirements and architecture_decisions via output_schema. Do NOT write files.","requirements","<ABS_WORKFLOW>/codebase/doc-index.json#requirements","","","1","pending"
|
|
88
|
+
"4","Tech Registry Writer","For each component discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/tech-registry/{slug}.md with: ID, type, features, code locations, exported symbols, dependencies. Also write <ABS_WORKFLOW>/codebase/tech-registry/_index.md with the component table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","tech-registry","<ABS_WORKFLOW>/codebase/tech-registry/","1;2;3","1;2;3","2","pending"
|
|
89
|
+
"5","Feature Map Writer","For each feature discovered, use the Write tool to create a markdown documentation file at <ABS_WORKFLOW>/codebase/feature-maps/{slug}.md with: ID, status, phase, requirements, component table. Also write <ABS_WORKFLOW>/codebase/feature-maps/_index.md with the feature table. After all writes, verify every intended file exists with Glob and return file count + absolute paths via output_schema. MUST use the Write tool — files on disk are the deliverable, do NOT return file content as text.","feature-maps","<ABS_WORKFLOW>/codebase/feature-maps/","1;2;3","1;2;3","2","pending"
|
|
89
90
|
```
|
|
90
91
|
|
|
91
92
|
**Path resolution (orchestrator MUST do BEFORE writing tasks.csv)**: substitute `<ABS_WORKFLOW>` with the absolute path to the project's `.workflow/` directory (e.g. `D:/maestro2/.workflow`). Agent Write tool requires absolute paths — passing relative `.workflow/...` literals will fail.
|
|
@@ -101,7 +102,8 @@ id,title,description,doc_dimension,output_path,deps,context_from,wave
|
|
|
101
102
|
| `output_path` | Input | Target output path in .workflow/codebase/ |
|
|
102
103
|
| `deps` | Input | Empty (all independent) |
|
|
103
104
|
| `context_from` | Input | Empty (no cross-task context needed) |
|
|
104
|
-
| `wave` | Computed |
|
|
105
|
+
| `wave` | Computed | 1 (scanners, independent parallel) or 2 (writers, depend on wave 1) |
|
|
106
|
+
| `status` | Lifecycle | Initialized to `pending`, updated to `completed`/`failed` after wave merge |
|
|
105
107
|
|
|
106
108
|
**Output columns** (returned exclusively via `output_schema`, NOT in wave CSV):
|
|
107
109
|
|
|
@@ -124,7 +126,7 @@ Single wave generates `wave-1.csv`. No `prev_context` needed (all tasks independ
|
|
|
124
126
|
3. **Discovery Board is Append-Only**: Generators share findings via NDJSON
|
|
125
127
|
4. **Partial Results OK**: If 3/5 generators succeed, still assemble available docs
|
|
126
128
|
5. **Destructive by Design**: This is a full rebuild -- existing codebase/ is cleared
|
|
127
|
-
6. **
|
|
129
|
+
6. **Two Waves**: Wave 1 (Scanner/Mapper/Linker, independent parallel), Wave 2 (Writers, depend on wave 1 results via context_from)
|
|
128
130
|
7. **Cleanup Temp Files**: Remove wave-1.csv after results are merged
|
|
129
131
|
8. **DO NOT STOP**: Execute until all generators complete or fail
|
|
130
132
|
9. **Absolute Paths Only**: All paths in `description` and `output_path` MUST be absolute before tasks.csv is written. Orchestrator substitutes `<ABS_WORKFLOW>` placeholder; never let it leak into a spawned agent's prompt.
|
|
@@ -182,6 +184,8 @@ Parse `$ARGUMENTS` to extract:
|
|
|
182
184
|
Session ID: `{YYYYMMDD}-rebuild-full`
|
|
183
185
|
Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
|
|
184
186
|
|
|
187
|
+
**Continue mode** (`--continue`): Locate existing session by ID or most recent. Read `tasks.csv`, identify pending/failed rows. Resume from next pending wave — do NOT re-run Phase 1 cleanup. If no session found, list available sessions and exit.
|
|
188
|
+
|
|
185
189
|
### Phase 1: Setup -> CSV
|
|
186
190
|
|
|
187
191
|
**Objective**: Validate prerequisites, prepare directory, detect source dirs, generate tasks.csv.
|
|
@@ -201,11 +205,11 @@ Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
|
|
|
201
205
|
6. **Generate tasks.csv**: 5 rows, all wave 1, no dependencies
|
|
202
206
|
7. **User validation**: Display doc generator breakdown (skip if AUTO_YES)
|
|
203
207
|
|
|
204
|
-
### Phase 2: Wave Execution (
|
|
208
|
+
### Phase 2: Wave Execution (Two Waves)
|
|
205
209
|
|
|
206
|
-
**Objective**: Run
|
|
210
|
+
**Objective**: Run scanners (wave 1) then writers (wave 2) via spawn_agents_on_csv.
|
|
207
211
|
|
|
208
|
-
#### Wave 1:
|
|
212
|
+
#### Wave 1: Scanners (Parallel)
|
|
209
213
|
|
|
210
214
|
Filter master `tasks.csv` for `wave == 1 AND status == pending` → write `wave-1.csv` (no prev_context needed, all independent).
|
|
211
215
|
|
|
@@ -232,6 +236,24 @@ spawn_agents_on_csv({
|
|
|
232
236
|
|
|
233
237
|
Merge `wave-1-results.csv` into master `tasks.csv`: map `result_status` -> master `status`, `result_findings` -> master `findings`, copy `error` as-is. After merge, delete temporary files (`wave-1.csv` and `wave-1-results.csv`).
|
|
234
238
|
|
|
239
|
+
#### Wave 2: Writers (Parallel, depends on Wave 1)
|
|
240
|
+
|
|
241
|
+
Filter master `tasks.csv` for `wave == 2 AND status == pending`. Build `prev_context` from wave 1 findings (scanner/mapper/linker results). Write `wave-2.csv` with `prev_context` column.
|
|
242
|
+
|
|
243
|
+
```javascript
|
|
244
|
+
spawn_agents_on_csv({
|
|
245
|
+
csv_path: `${sessionFolder}/wave-2.csv`,
|
|
246
|
+
id_column: "id",
|
|
247
|
+
instruction: REBUILD_INSTRUCTION,
|
|
248
|
+
max_concurrency: maxConcurrency,
|
|
249
|
+
max_runtime_seconds: 3600,
|
|
250
|
+
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
251
|
+
output_schema: { /* same as wave 1 */ }
|
|
252
|
+
})
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Merge `wave-2-results.csv` into master `tasks.csv`. Delete temporary files.
|
|
256
|
+
|
|
235
257
|
#### Rebuild Worker Contract (REBUILD_INSTRUCTION)
|
|
236
258
|
|
|
237
259
|
```
|
|
@@ -32,7 +32,7 @@ Verify `.workflow/` exists (E001) and `.workflow/codebase/` exists (E002 -- use
|
|
|
32
32
|
|
|
33
33
|
### Step 2: Detect Changes
|
|
34
34
|
|
|
35
|
-
Resolve baseline: `--since` flag > `state.json.codebase_last_refreshed` > `codebase_last_rebuilt` > 7-day fallback.
|
|
35
|
+
Resolve baseline: `--since` flag > `state.json.codebase_last_refreshed` > `codebase_last_rebuilt` > 7-day fallback. Find the baseline commit via `git log --since="{baseline}" --reverse --format="%H" | head -1`. If no commit found, use `HEAD~1`. Then run `git diff --name-only {baseline_commit}..HEAD`. If no changes: W001, exit.
|
|
36
36
|
|
|
37
37
|
### Step 3: Map Changes to Docs
|
|
38
38
|
|
|
@@ -97,11 +97,11 @@ $manage-drift-realign --continue "20260624-drift-realign"
|
|
|
97
97
|
### tasks.csv (Master State)
|
|
98
98
|
|
|
99
99
|
```csv
|
|
100
|
-
id,title,description,scan_scope,output_format,deps,context_from,wave
|
|
101
|
-
"1","Roadmap Scanner","Scan .workflow/roadmap.md and .workflow/state.json for drift against code reality. Read timeline.json for git change context. Detect: phantom_phase (P0), stale_progress (P1), milestone_mismatch (P0), outdated_criteria (P1), dependency_ghost (P1), timeline_impossible (P2). For each finding: verify against code/state.json before reporting. Return JSON array of DriftFinding objects via output_schema.","roadmap","json","","","1"
|
|
102
|
-
"2","Spec Scanner","Scan .workflow/specs/*.md spec-entry blocks for drift against actual code patterns. Read timeline.json hot_paths to focus on high-change areas. Detect: convention_violation (P0), dead_import_pattern (P1), architecture_breach (P0), stale_dependency (P1), naming_drift (P2), test_convention_gap (P2). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","spec","json","","","1"
|
|
103
|
-
"3","Codebase Scanner","Scan .workflow/codebase/*.md and doc-index.json for drift against current code structure. Read timeline.json for git changes. Detect: architecture_outdated (P0), feature_missing (P1), tech_stack_changed (P0), concern_drift (P1), doc_index_stale (P0). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","codebase","json","","","1"
|
|
104
|
-
"4","Artifact Scanner","Scan .workflow/issues/issues.jsonl, .workflow/knowhow/*.md, .workflow/project.md, and state.json accumulated_context for drift. Read timeline.json for git context. Detect: issue_code_ref_dead (P1), issue_stale_open (P1), knowhow_code_ref_dead (P1), orphan_session (P2), project_tech_drift (P0), project_req_drift (P1), accumulated_stale (P1), deferred_resolved (P2). Return JSON array of DriftFinding objects via output_schema.","artifact","json","","","1"
|
|
100
|
+
id,title,description,scan_scope,output_format,deps,context_from,wave,status
|
|
101
|
+
"1","Roadmap Scanner","Scan .workflow/roadmap.md and .workflow/state.json for drift against code reality. Read timeline.json for git change context. Detect: phantom_phase (P0), stale_progress (P1), milestone_mismatch (P0), outdated_criteria (P1), dependency_ghost (P1), timeline_impossible (P2). For each finding: verify against code/state.json before reporting. Return JSON array of DriftFinding objects via output_schema.","roadmap","json","","","1","pending"
|
|
102
|
+
"2","Spec Scanner","Scan .workflow/specs/*.md spec-entry blocks for drift against actual code patterns. Read timeline.json hot_paths to focus on high-change areas. Detect: convention_violation (P0), dead_import_pattern (P1), architecture_breach (P0), stale_dependency (P1), naming_drift (P2), test_convention_gap (P2). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","spec","json","","","1","pending"
|
|
103
|
+
"3","Codebase Scanner","Scan .workflow/codebase/*.md and doc-index.json for drift against current code structure. Read timeline.json for git changes. Detect: architecture_outdated (P0), feature_missing (P1), tech_stack_changed (P0), concern_drift (P1), doc_index_stale (P0). {DEPTH_INSTRUCTION}. Return JSON array of DriftFinding objects via output_schema.","codebase","json","","","1","pending"
|
|
104
|
+
"4","Artifact Scanner","Scan .workflow/issues/issues.jsonl, .workflow/knowhow/*.md, .workflow/project.md, and state.json accumulated_context for drift. Read timeline.json for git context. Detect: issue_code_ref_dead (P1), issue_stale_open (P1), knowhow_code_ref_dead (P1), orphan_session (P2), project_tech_drift (P0), project_req_drift (P1), accumulated_stale (P1), deferred_resolved (P2). Return JSON array of DriftFinding objects via output_schema.","artifact","json","","","1","pending"
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
**Substitutions (orchestrator MUST do BEFORE writing tasks.csv)**:
|
|
@@ -119,6 +119,7 @@ id,title,description,scan_scope,output_format,deps,context_from,wave
|
|
|
119
119
|
| `deps` | Empty (all independent) |
|
|
120
120
|
| `context_from` | Empty (all read timeline.json directly) |
|
|
121
121
|
| `wave` | Always 1 (single wave) |
|
|
122
|
+
| `status` | `pending` / `running` / `completed` / `failed` |
|
|
122
123
|
|
|
123
124
|
**Output columns** (returned exclusively via `output_schema`):
|
|
124
125
|
|
|
@@ -309,8 +310,8 @@ maestro spec conflict list
|
|
|
309
310
|
For spec entries with existing conflict-markers that also appear in scanner findings: merge and elevate to P0.
|
|
310
311
|
|
|
311
312
|
**Step 3.3: Triage**
|
|
312
|
-
- If `--report` →
|
|
313
|
-
- If `--dry-run` → display all findings with suggested actions, skip Phase 4
|
|
313
|
+
- If `--report` → generate report output only (Phase 4 Step 4.3), skip triage and all file mutations (no backups, no action application, no state.json update)
|
|
314
|
+
- If `--dry-run` → display all findings with suggested actions, skip all file mutations in Phase 4 (no backups, no action application, no state.json update, no drift-log.jsonl writes)
|
|
314
315
|
- If `--auto-archive` → auto-apply each finding's `suggested_action` for P1/P2; only P0 gets interactive review
|
|
315
316
|
- Otherwise → interactive triage per finding using `request_user_input`:
|
|
316
317
|
|
|
@@ -340,13 +341,15 @@ Export master `tasks.csv` as `results.csv`.
|
|
|
340
341
|
|
|
341
342
|
### Phase 4: Apply + Report
|
|
342
343
|
|
|
343
|
-
**Step 4.1
|
|
344
|
+
> **Write boundary**: If `--report`, skip directly to Step 4.3 (report generation only). If `--dry-run`, skip Steps 4.1 and 4.2 entirely — no backup, no file mutations, no state.json update. Only Step 4.3 (report) and Step 4.4 (context.md) execute.
|
|
345
|
+
|
|
346
|
+
**Step 4.1: Backup** (skipped by --report and --dry-run)
|
|
344
347
|
```bash
|
|
345
348
|
mkdir -p .workflow/.trash/drift-realign-{timestamp}/
|
|
346
349
|
```
|
|
347
350
|
Copy all affected files + state.json to backup. If backup fails → abort (E005).
|
|
348
351
|
|
|
349
|
-
**Step 4.2: Apply actions**
|
|
352
|
+
**Step 4.2: Apply actions** (skipped by --report and --dry-run)
|
|
350
353
|
|
|
351
354
|
| Action | Implementation |
|
|
352
355
|
|--------|---------------|
|
|
@@ -354,16 +357,16 @@ Copy all affected files + state.json to backup. If backup fails → abort (E005)
|
|
|
354
357
|
| skip | Write drift-log.jsonl entry (action=skipped) |
|
|
355
358
|
| update | Prepend `<!-- DRIFT-TODO: {hint} (DFT-{id}, {date}) -->` to target file |
|
|
356
359
|
| archive | Move file to `.trash/{timestamp}/`, update state.json refs |
|
|
357
|
-
| rebuild | Collect targets; after all other actions:
|
|
360
|
+
| rebuild | Collect targets; after all other actions: suggest `$quality-sync --full` with target list. Require explicit user confirmation before invoking (use `request_user_input`). If declined, log as `action=rebuild_deferred` in drift-log.jsonl |
|
|
358
361
|
|
|
359
|
-
After rebuild: if sync reports major structural changes → suggest $manage-codebase-rebuild.
|
|
362
|
+
After rebuild (if confirmed and executed): if sync reports major structural changes → suggest $manage-codebase-rebuild.
|
|
360
363
|
|
|
361
364
|
Conflict-marker cleanup: for update/archive targets with existing conflict-markers:
|
|
362
365
|
```bash
|
|
363
366
|
maestro spec conflict clear <file> <line>
|
|
364
367
|
```
|
|
365
368
|
|
|
366
|
-
Update state.json: `last_drift_realign = now` (atomic: backup → write → verify).
|
|
369
|
+
Update state.json: `last_drift_realign = now` (atomic: backup → write → verify). Skipped when `--report` or `--dry-run` is active.
|
|
367
370
|
|
|
368
371
|
**Step 4.3: Generate report**
|
|
369
372
|
|
|
@@ -64,7 +64,7 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1–8 (standard mode) or Stage 9
|
|
|
64
64
|
- Component-level pitfalls → `learning` category
|
|
65
65
|
- Quality enforcement rules → `quality` category
|
|
66
66
|
- Wiki: `maestro wiki create --type <type> --slug harvest-<source_type>-<short_id>`
|
|
67
|
-
- Spec:
|
|
67
|
+
- Spec: `$spec-add "<category> <content>"` (single source of truth — always use spec-add for spec routing; do NOT use `maestro wiki append` for spec entries)
|
|
68
68
|
- Issue: append to `issues.jsonl` matching canonical schema, with `source: "harvest"` field (distinguishes from `manage-issue-discover`, which uses `source: "discover"` — required for cross-skill dedup when both write concurrently)
|
|
69
69
|
|
|
70
70
|
**Next steps:** `$manage-wiki health`, `maestro search --type note`, `$wiki-connect --fix`, `$wiki-digest`, `$manage-issue list --source harvest`, `$manage-knowledge-audit --scope spec` (when specs extracted, check for conflicts)
|