maestro-flow 0.3.11 → 0.3.13
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/CLAUDE.md +7 -0
- package/.claude/agents/conceptual-planning-agent.md +1 -0
- package/.claude/agents/workflow-analyzer.md +113 -114
- package/.claude/agents/workflow-collab-planner.md +143 -144
- package/.claude/agents/workflow-debugger.md +101 -103
- package/.claude/agents/workflow-executor.md +127 -128
- package/.claude/agents/workflow-integration-checker.md +82 -82
- package/.claude/agents/workflow-nyquist-auditor.md +84 -84
- package/.claude/agents/workflow-phase-researcher.md +85 -85
- package/.claude/agents/workflow-plan-checker.md +90 -90
- package/.claude/agents/workflow-planner.md +177 -178
- package/.claude/agents/workflow-roadmapper.md +81 -83
- package/.claude/agents/workflow-verifier.md +118 -119
- package/.claude/commands/learn-retro.md +2 -2
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-analyze.md +10 -2
- package/.claude/commands/maestro-brainstorm.md +2 -1
- package/.claude/commands/maestro-execute.md +21 -4
- package/.claude/commands/maestro-fork.md +133 -111
- package/.claude/commands/maestro-merge.md +85 -77
- package/.claude/commands/maestro-milestone-complete.md +14 -0
- package/.claude/commands/maestro-plan.md +100 -8
- package/.claude/commands/maestro-roadmap.md +113 -2
- package/.claude/commands/maestro-ui-design.md +7 -7
- package/.claude/commands/maestro-update.md +176 -0
- package/.claude/commands/maestro-verify.md +18 -3
- package/.claude/commands/maestro.md +1 -0
- package/.claude/commands/manage-codebase-rebuild.md +0 -1
- package/.claude/commands/manage-harvest.md +1 -1
- package/.claude/commands/manage-learn.md +5 -5
- package/.claude/commands/manage-memory-capture.md +4 -4
- package/.claude/commands/manage-memory.md +1 -1
- package/.claude/commands/manage-wiki.md +62 -0
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +53 -6
- package/.claude/commands/quality-retrospective.md +9 -7
- package/.claude/commands/quality-review.md +39 -7
- package/.claude/commands/quality-sync.md +1 -1
- package/.claude/commands/quality-test-gen.md +5 -4
- package/.claude/commands/quality-test.md +45 -12
- package/.claude/commands/spec-remove.md +51 -0
- package/.claude/commands/spec-setup.md +1 -3
- package/.claude/commands/wiki-connect.md +9 -5
- package/.claude/commands/wiki-digest.md +6 -3
- package/.codex/skills/maestro/SKILL.md +2 -2
- package/.codex/skills/maestro-analyze/SKILL.md +4 -4
- package/.codex/skills/maestro-brainstorm/SKILL.md +4 -4
- package/.codex/skills/maestro-coordinate/SKILL.md +2 -2
- package/.codex/skills/maestro-execute/SKILL.md +15 -5
- package/.codex/skills/maestro-fork/SKILL.md +98 -68
- package/.codex/skills/maestro-init/SKILL.md +5 -4
- package/.codex/skills/maestro-merge/SKILL.md +69 -62
- package/.codex/skills/maestro-milestone-complete/SKILL.md +18 -1
- package/.codex/skills/maestro-plan/SKILL.md +6 -6
- package/.codex/skills/maestro-roadmap/SKILL.md +3 -4
- package/.codex/skills/maestro-spec-generate/SKILL.md +2 -2
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -6
- package/.codex/skills/maestro-verify/SKILL.md +29 -20
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +4 -4
- package/.codex/skills/manage-harvest/SKILL.md +10 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +3 -3
- package/.codex/skills/manage-learn/SKILL.md +3 -2
- package/.codex/skills/manage-memory/SKILL.md +3 -3
- package/.codex/skills/manage-memory-capture/SKILL.md +8 -14
- package/.codex/skills/manage-status/SKILL.md +9 -4
- package/.codex/skills/manage-wiki/SKILL.md +55 -0
- package/.codex/skills/quality-business-test/SKILL.md +8 -6
- package/.codex/skills/quality-debug/SKILL.md +22 -9
- package/.codex/skills/quality-integration-test/SKILL.md +11 -7
- package/.codex/skills/quality-retrospective/SKILL.md +48 -29
- package/.codex/skills/quality-review/SKILL.md +10 -7
- package/.codex/skills/quality-test/SKILL.md +10 -5
- package/.codex/skills/quality-test-gen/SKILL.md +13 -9
- package/.codex/skills/spec-add/SKILL.md +11 -3
- package/.codex/skills/spec-load/SKILL.md +7 -0
- package/.codex/skills/spec-map/SKILL.md +2 -2
- package/.codex/skills/spec-remove/SKILL.md +101 -0
- package/.codex/skills/spec-setup/SKILL.md +4 -8
- package/.codex/skills/wiki-connect/SKILL.md +6 -5
- package/.codex/skills/wiki-digest/SKILL.md +2 -2
- package/README.md +2 -0
- package/README.zh-CN.md +2 -0
- package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
- package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
- package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
- package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
- package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
- package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
- package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
- package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
- package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
- package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
- package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
- package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
- package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
- package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
- package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
- package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
- package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
- package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
- package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
- package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
- package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
- package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
- package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
- package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
- package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
- package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
- package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
- package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +9 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +109 -9
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +49 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +5 -4
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +5 -13
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +97 -155
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.d.ts +11 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +27 -6
- 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 +25 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +148 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +4 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +8 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +80 -38
- 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 +8 -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 +40 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +21 -23
- 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 +33 -3
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +184 -12
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +5 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +27 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
- package/dashboard/dist-server/src/commands/delegate.js +26 -0
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/graph-types.d.ts +11 -1
- package/dashboard/dist-server/src/coordinator/graph-walker.js +29 -2
- package/dashboard/dist-server/src/coordinator/graph-walker.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js +3 -2
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +29 -60
- package/dashboard/dist-server/src/hooks/constants.js +105 -82
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +2 -1
- package/dist/shared/agent-types.d.ts +4 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +26 -0
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +2 -4
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +4 -7
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +29 -18
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +2 -3
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +1 -2
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.js +5 -7
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +3 -6
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +21 -17
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +95 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +75 -11
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/coordinator/graph-types.d.ts +11 -1
- package/dist/src/coordinator/graph-types.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.js +29 -2
- package/dist/src/coordinator/graph-walker.js.map +1 -1
- package/dist/src/coordinator/prompt-assembler.d.ts.map +1 -1
- package/dist/src/coordinator/prompt-assembler.js +3 -2
- package/dist/src/coordinator/prompt-assembler.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +4 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +55 -152
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +29 -60
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +105 -82
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts +3 -0
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +149 -15
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +11 -8
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +284 -179
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/hooks/workspace.d.ts.map +1 -1
- package/dist/src/hooks/workspace.js +2 -1
- package/dist/src/hooks/workspace.js.map +1 -1
- package/dist/src/migrations/_template.d.ts +12 -0
- package/dist/src/migrations/_template.d.ts.map +1 -0
- package/dist/src/migrations/_template.js +55 -0
- package/dist/src/migrations/_template.js.map +1 -0
- package/dist/src/migrations/index.d.ts +14 -0
- package/dist/src/migrations/index.d.ts.map +1 -0
- package/dist/src/migrations/index.js +20 -0
- package/dist/src/migrations/index.js.map +1 -0
- package/dist/src/migrations/run.d.ts +12 -0
- package/dist/src/migrations/run.d.ts.map +1 -0
- package/dist/src/migrations/run.js +119 -0
- package/dist/src/migrations/run.js.map +1 -0
- package/dist/src/migrations/v1-to-v2.d.ts +10 -0
- package/dist/src/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/src/migrations/v1-to-v2.js +71 -0
- package/dist/src/migrations/v1-to-v2.js.map +1 -0
- package/dist/src/tools/merge-validator.d.ts.map +1 -1
- package/dist/src/tools/merge-validator.js +114 -16
- package/dist/src/tools/merge-validator.js.map +1 -1
- package/dist/src/tools/team-activity.d.ts.map +1 -1
- package/dist/src/tools/team-activity.js +22 -0
- package/dist/src/tools/team-activity.js.map +1 -1
- package/dist/src/tools/transition-recorder.d.ts +2 -17
- package/dist/src/tools/transition-recorder.d.ts.map +1 -1
- package/dist/src/tools/transition-recorder.js +6 -3
- package/dist/src/tools/transition-recorder.js.map +1 -1
- package/dist/src/types/index.d.ts +2 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/migration-registry.d.ts +65 -0
- package/dist/src/utils/migration-registry.d.ts.map +1 -0
- package/dist/src/utils/migration-registry.js +117 -0
- package/dist/src/utils/migration-registry.js.map +1 -0
- package/dist/src/utils/state-schema.d.ts +153 -0
- package/dist/src/utils/state-schema.d.ts.map +1 -0
- package/dist/src/utils/state-schema.js +329 -0
- package/dist/src/utils/state-schema.js.map +1 -0
- package/package.json +1 -1
- package/shared/agent-types.ts +4 -0
- package/templates/state.json +17 -39
- package/templates/worktree-scope.json +9 -10
- package/templates/worktrees.json +26 -27
- package/workflows/brainstorm.md +10 -1
- package/workflows/codebase-rebuild.md +2 -12
- package/workflows/debug.md +17 -8
- package/workflows/execute.md +18 -4
- package/workflows/fork.md +52 -37
- package/workflows/init.md +1 -4
- package/workflows/integration-test.md +13 -2
- package/workflows/issue.md +8 -4
- package/workflows/learn.md +25 -10
- package/workflows/maestro.codex.md +8 -1
- package/workflows/maestro.md +13 -3
- package/workflows/memory.md +26 -71
- package/workflows/merge.md +48 -52
- package/workflows/milestone-complete.md +24 -7
- package/workflows/retrospective.md +87 -80
- package/workflows/review.md +11 -5
- package/workflows/specs-remove.md +115 -0
- package/workflows/specs-setup.md +10 -32
- package/workflows/status.md +291 -290
- package/workflows/sync.md +5 -5
- package/workflows/test.md +11 -2
- package/workflows/ui-style.md +8 -2
- package/workflows/verify.md +2 -2
- package/workflows/wiki-connect.md +188 -0
- package/workflows/wiki-digest.md +221 -0
- package/workflows/wiki-manage.md +204 -0
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
- package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
- package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
- package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
- package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
- package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
- package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
- package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
- package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manage-wiki
|
|
3
|
+
description: Wiki knowledge graph management — health dashboard, orphan cleanup, entry search, and graph statistics
|
|
4
|
+
argument-hint: "[health|search|cleanup|stats] [options]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Unified wiki graph management. Health monitoring, interactive search, orphan cleanup, and graph statistics. Day-to-day operations to keep the knowledge graph healthy.
|
|
10
|
+
|
|
11
|
+
Complements `wiki-connect` (link discovery) and `wiki-digest` (synthesis) with operational tooling.
|
|
12
|
+
</purpose>
|
|
13
|
+
|
|
14
|
+
<required_reading>
|
|
15
|
+
@~/.maestro/workflows/wiki-manage.md
|
|
16
|
+
</required_reading>
|
|
17
|
+
|
|
18
|
+
<context>
|
|
19
|
+
$ARGUMENTS — subcommand and optional flags.
|
|
20
|
+
|
|
21
|
+
**Subcommands:**
|
|
22
|
+
| Subcommand | Description |
|
|
23
|
+
|-----------|-------------|
|
|
24
|
+
| `health` | Health dashboard — score, broken links, orphans, hubs (default) |
|
|
25
|
+
| `search <query>` | Interactive BM25 search with follow-up actions |
|
|
26
|
+
| `cleanup` | Find and resolve orphans, broken links, stale entries |
|
|
27
|
+
| `stats` | Graph statistics — type distribution, tag frequency, growth |
|
|
28
|
+
|
|
29
|
+
**Flags:**
|
|
30
|
+
- `--type <type>` — Filter: spec, memory, note, lesson, issue
|
|
31
|
+
- `--fix` — Auto-fix issues during cleanup
|
|
32
|
+
- `--json` — JSON output
|
|
33
|
+
</context>
|
|
34
|
+
|
|
35
|
+
<execution>
|
|
36
|
+
Follow '~/.maestro/workflows/wiki-manage.md' completely.
|
|
37
|
+
</execution>
|
|
38
|
+
|
|
39
|
+
<error_codes>
|
|
40
|
+
| Code | Severity | Description |
|
|
41
|
+
|------|----------|-------------|
|
|
42
|
+
| E001 | fatal | `.workflow/` not initialized |
|
|
43
|
+
| E002 | fatal | No wiki entries found |
|
|
44
|
+
| E003 | error | Invalid subcommand |
|
|
45
|
+
| W001 | warning | Health score below 50 |
|
|
46
|
+
| W002 | warning | Cleanup had partial failures |
|
|
47
|
+
</error_codes>
|
|
48
|
+
|
|
49
|
+
<success_criteria>
|
|
50
|
+
- [ ] Subcommand parsed (health/search/cleanup/stats)
|
|
51
|
+
- [ ] Wiki data loaded via `maestro wiki` CLI
|
|
52
|
+
- [ ] Results displayed in formatted output
|
|
53
|
+
- [ ] If cleanup --fix: issues resolved and delta reported
|
|
54
|
+
- [ ] Next-step suggestions provided
|
|
55
|
+
</success_criteria>
|
|
@@ -51,7 +51,7 @@ $quality-business-test "3 --auto" # skip plan confirmation
|
|
|
51
51
|
|
|
52
52
|
`--auto` skips interactive confirmation of test plan. `--dry-run` extracts scenarios only without execution.
|
|
53
53
|
|
|
54
|
-
**Output**: `{
|
|
54
|
+
**Output**: `{artifact_dir}/.tests/business/business-test-plan.json` + `business-test-report.json` + `business-test-summary.md`
|
|
55
55
|
</context>
|
|
56
56
|
|
|
57
57
|
<invariants>
|
|
@@ -71,8 +71,9 @@ $quality-business-test "3 --auto" # skip plan confirmation
|
|
|
71
71
|
### Step 1: Resolve Target & Load Spec Package
|
|
72
72
|
|
|
73
73
|
1. Parse `$ARGUMENTS` for phase number and flags
|
|
74
|
-
2.
|
|
75
|
-
3.
|
|
74
|
+
2. Resolve `PHASE_DIR` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
75
|
+
3. **Related session discovery**: Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: review → review.json (findings inform which business rules need extra scrutiny), debug → understanding.md (root causes map to specific requirement failures), test → uat.md (prior UAT gaps identify untested business scenarios). Extract conclusions that may affect business test scenario priorities.
|
|
76
|
+
4. Load `index.json` -> find `spec_ref` -> locate `.workflow/.spec/SPEC-xxx/`
|
|
76
77
|
4. **Full mode**: Read `requirements/_index.md` + all `REQ-*.md` + `NFR-*.md` + `architecture/_index.md` + `epics/EPIC-*.md`
|
|
77
78
|
5. **Degraded mode** (no spec package): Read `index.json.success_criteria` + `plan.json` convergence criteria + `.summaries/TASK-*.md`
|
|
78
79
|
6. If `--re-run`: load previous `business-test-report.json`, filter to failed/blocked scenarios
|
|
@@ -129,7 +130,7 @@ Three tiers:
|
|
|
129
130
|
|
|
130
131
|
### Step 5: Generate Test Code (if --gen-code)
|
|
131
132
|
|
|
132
|
-
Detect project tech stack from `.workflow/
|
|
133
|
+
Detect project tech stack from `.workflow/project.md` Tech Stack section or codebase scan.
|
|
133
134
|
|
|
134
135
|
| Stack | L1 | L2 | L3 |
|
|
135
136
|
|-------|----|----|-----|
|
|
@@ -190,7 +191,8 @@ FOR each REQ:
|
|
|
190
191
|
|
|
191
192
|
1. Auto-create issues from failures in `.workflow/issues/issues.jsonl` (each with `req_ref`, `source: "business-test"`)
|
|
192
193
|
2. Report results
|
|
193
|
-
3.
|
|
194
|
+
3. **Register artifact**: Append to `state.json.artifacts[]` with `type: "test"`, `id: TST-NNN`, `path: "scratch/{YYYYMMDD}-business-test-P{N}-{slug}"`, `depends_on: exec_art.id`.
|
|
195
|
+
4. Route next step:
|
|
194
196
|
|
|
195
197
|
| Result | Suggestion |
|
|
196
198
|
|--------|------------|
|
|
@@ -206,7 +208,7 @@ FOR each REQ:
|
|
|
206
208
|
| Code | Severity | Condition | Recovery |
|
|
207
209
|
|------|----------|-----------|----------|
|
|
208
210
|
| E001 | error | Phase number required | Prompt user for phase number |
|
|
209
|
-
| E002 | error | Phase directory not found |
|
|
211
|
+
| E002 | error | Phase directory not found | Resolve via state.json artifact registry |
|
|
210
212
|
| E003 | error | No spec package AND no success_criteria | Run maestro-spec-generate or maestro-plan first |
|
|
211
213
|
| E004 | error | L1 critical failures block L2/L3 | Fix blockers via quality-debug |
|
|
212
214
|
| W001 | warning | Degraded mode (no spec package) | Consider running maestro-spec-generate |
|
|
@@ -52,7 +52,7 @@ Wave-based hypothesis-driven debugging using `spawn_agents_on_csv`. Wave 1 explo
|
|
|
52
52
|
$quality-debug "Login button throws 500 error on click"
|
|
53
53
|
$quality-debug -y "JWT token not refreshed --from-uat 3"
|
|
54
54
|
$quality-debug -c 4 "Navigation crash --from-uat 3 --parallel"
|
|
55
|
-
$quality-debug --continue "debug-jwt-expiry
|
|
55
|
+
$quality-debug --continue "20260318-debug-P3-jwt-expiry"
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
**Flags**:
|
|
@@ -115,7 +115,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
115
115
|
### Session Structure
|
|
116
116
|
|
|
117
117
|
```
|
|
118
|
-
.workflow/.csv-wave/debug-{
|
|
118
|
+
.workflow/.csv-wave/{YYYYMMDD}-debug-P{N}-{slug}/
|
|
119
119
|
+-- tasks.csv
|
|
120
120
|
+-- results.csv
|
|
121
121
|
+-- discoveries.ndjson
|
|
@@ -159,7 +159,7 @@ const bugDescription = $ARGUMENTS
|
|
|
159
159
|
|
|
160
160
|
const slug = bugDescription.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
161
161
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
162
|
-
const sessionId =
|
|
162
|
+
const sessionId = fromUatMatch ? `${dateStr}-debug-P${fromUatMatch[1]}-${slug}` : `${dateStr}-debug-${slug}`
|
|
163
163
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
164
164
|
|
|
165
165
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -179,13 +179,15 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
179
179
|
| `--parallel` flag present | parallel (implies from-uat, one agent per gap cluster) |
|
|
180
180
|
| Neither flag | standalone (gather symptoms interactively) |
|
|
181
181
|
|
|
182
|
-
2. **
|
|
182
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: execute → .summaries/.task/, review → review.json (findings guide hypothesis formation), debug → understanding.md (avoid re-investigation), test → uat.md. Extract conclusions that may affect this debug session.
|
|
183
|
+
|
|
184
|
+
3. **Symptom collection**:
|
|
183
185
|
|
|
184
186
|
| Mode | Source | Action |
|
|
185
187
|
|------|--------|--------|
|
|
186
188
|
| standalone | User input | Ask 5 questions: expected, actual, errors, timeline, reproduction |
|
|
187
|
-
| from-uat |
|
|
188
|
-
| parallel |
|
|
189
|
+
| from-uat | test artifact's uat.md (via registry) | Parse Gaps section, cluster by component |
|
|
190
|
+
| parallel | test artifact's uat.md (via registry) | Same as from-uat, one investigation per cluster |
|
|
189
191
|
|
|
190
192
|
3. **Hypothesis generation**: For each symptom cluster or bug description:
|
|
191
193
|
- Analyze code patterns around affected area
|
|
@@ -322,12 +324,23 @@ spawn_agents_on_csv({
|
|
|
322
324
|
```
|
|
323
325
|
|
|
324
326
|
4. **UAT update** (if --from-uat): For each confirmed hypothesis with fix:
|
|
325
|
-
- Update `{
|
|
327
|
+
- Update `{artifact_dir}/uat.md` gaps with `root_cause`, `fix_direction`, `affected_files`
|
|
326
328
|
|
|
327
329
|
5. **Issue update**: If `.workflow/issues/issues.jsonl` exists:
|
|
328
330
|
- Update matching issues with status `diagnosed`, add `context.suggested_fix` and `context.notes`
|
|
329
331
|
|
|
330
|
-
6. **
|
|
332
|
+
6. **Register artifact** (phase-scoped only): Append to `state.json.artifacts[]` with `type: "debug"`, `id: DBG-NNN`, `path: "scratch/{YYYYMMDD}-debug-P{N}-{slug}"`, `depends_on: triggering_review_id || exec_art.id`. Output directory is independent scratch.
|
|
333
|
+
|
|
334
|
+
7. **Post-debug Knowledge Inquiry** (after root causes confirmed):
|
|
335
|
+
- **Recurring pattern**: If root cause matches a recurring pattern (similar to prior debug sessions):
|
|
336
|
+
→ Ask: "This root cause pattern has appeared before. Should it be documented in `debug-notes.md` to prevent recurrence? (`/spec-add debug`)"
|
|
337
|
+
- **Non-obvious fix**: If fix involved a non-obvious approach or workaround:
|
|
338
|
+
→ Ask: "This fix used a non-obvious strategy. Should it be recorded as a learning? (`/spec-add learning`)"
|
|
339
|
+
- **Architectural gap**: If root cause traces to architectural boundary violation or missing constraint:
|
|
340
|
+
→ Ask: "Root cause points to an architectural gap. Should `architecture-constraints.md` be updated? (`/spec-add arch`)"
|
|
341
|
+
- If user confirms, append `<spec-entry>` to matching category file via `spec-add` mechanism
|
|
342
|
+
|
|
343
|
+
8. **Next step routing**:
|
|
331
344
|
|
|
332
345
|
| Result | Suggestion |
|
|
333
346
|
|--------|------------|
|
|
@@ -337,7 +350,7 @@ spawn_agents_on_csv({
|
|
|
337
350
|
| All inconclusive | Resume with more context or manual investigation |
|
|
338
351
|
| From UAT, all diagnosed | `Skill({ skill: "quality-test", args: "{phase} --auto-fix" })` |
|
|
339
352
|
|
|
340
|
-
|
|
353
|
+
9. Display summary.
|
|
341
354
|
|
|
342
355
|
### Shared Discovery Board Protocol
|
|
343
356
|
|
|
@@ -62,7 +62,7 @@ Linear pipeline test execution using `spawn_agents_on_csv`. Progressive L0 -> L1
|
|
|
62
62
|
$quality-integration-test "3"
|
|
63
63
|
$quality-integration-test -c 4 "3 --max-iterations 8"
|
|
64
64
|
$quality-integration-test -y "3 --target-coverage 90"
|
|
65
|
-
$quality-integration-test --continue "integration-test-
|
|
65
|
+
$quality-integration-test --continue "20260318-integration-test-P3-auth"
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
**Flags**:
|
|
@@ -129,7 +129,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column populated fr
|
|
|
129
129
|
### Session Structure
|
|
130
130
|
|
|
131
131
|
```
|
|
132
|
-
.workflow/.csv-wave/integration-test-{
|
|
132
|
+
.workflow/.csv-wave/{YYYYMMDD}-integration-test-P{N}-{slug}/
|
|
133
133
|
+-- tasks.csv
|
|
134
134
|
+-- results.csv
|
|
135
135
|
+-- discoveries.ndjson
|
|
@@ -183,7 +183,7 @@ const phaseArg = $ARGUMENTS
|
|
|
183
183
|
.trim()
|
|
184
184
|
|
|
185
185
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
186
|
-
const sessionId =
|
|
186
|
+
const sessionId = `${dateStr}-integration-test-P${phaseArg}-${phaseSlug}` // phaseSlug from index.json or roadmap
|
|
187
187
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
188
188
|
|
|
189
189
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -213,9 +213,11 @@ Write(`${sessionFolder}/reflection-log.md`,
|
|
|
213
213
|
|
|
214
214
|
**Decomposition Rules**:
|
|
215
215
|
|
|
216
|
-
1. **Phase resolution**: Resolve `{phaseArg}` to `.workflow/
|
|
216
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
217
217
|
|
|
218
|
-
2. **
|
|
218
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: review → review.json (critical findings inform integration test focus), debug → understanding.md (root causes guide regression test layers), test → uat.md/.tests/ (prior results inform layer priorities). Extract conclusions that may affect integration test strategy.
|
|
219
|
+
|
|
220
|
+
3. **Codebase exploration**:
|
|
219
221
|
- Cross-module imports and dependencies
|
|
220
222
|
- API endpoints and route definitions
|
|
221
223
|
- Database interactions and queries
|
|
@@ -228,7 +230,7 @@ Write(`${sessionFolder}/reflection-log.md`,
|
|
|
228
230
|
- Identify test utilities, fixtures, DB seed scripts
|
|
229
231
|
|
|
230
232
|
4. **Pre-generated test loading**:
|
|
231
|
-
Check `{
|
|
233
|
+
Check `{artifact_dir}/.tests/test-gen-report.json` for tests from `quality-test-gen`. Merge integration/e2e tests into plan (execute but don't re-generate).
|
|
232
234
|
|
|
233
235
|
5. **Layer design**:
|
|
234
236
|
|
|
@@ -455,7 +457,9 @@ Update `state.json` with new strategy and iteration count.
|
|
|
455
457
|
|
|
456
458
|
6. Update `index.json` with integration test status.
|
|
457
459
|
|
|
458
|
-
7.
|
|
460
|
+
7. **Register artifact**: Append to `state.json.artifacts[]` with `type: "test"`, `id: TST-NNN`, `path: "scratch/{YYYYMMDD}-integration-test-P{N}-{slug}"`, `depends_on: exec_art.id`. Output directory is independent scratch.
|
|
461
|
+
|
|
462
|
+
8. Display summary.
|
|
459
463
|
|
|
460
464
|
**Next step routing**:
|
|
461
465
|
|
|
@@ -66,18 +66,27 @@ $quality-retrospective "3 --compare 2 --auto-yes"
|
|
|
66
66
|
When `--auto-yes`: Accept all routing recommendations without prompting. Route all insights automatically.
|
|
67
67
|
|
|
68
68
|
**Storage written**:
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
- `.workflow/specs/
|
|
69
|
+
- `{target_dir}/retrospective.md` -- human-readable record (target_dir resolved via state.json artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`)
|
|
70
|
+
- `{target_dir}/retrospective.json` -- structured record
|
|
71
|
+
- `.workflow/specs/{category-file}.md` -- `<spec-entry>` entries appended to matching category files (one per spec-routed insight)
|
|
72
72
|
- `.workflow/issues/issues.jsonl` -- appended issue rows (`source: "retrospective"`)
|
|
73
73
|
- `.workflow/memory/TIP-*.md` -- memory tips (via `manage-memory-capture` skill)
|
|
74
74
|
- `.workflow/learning/lessons.jsonl` -- append-only insight log
|
|
75
75
|
- `.workflow/learning/learning-index.json` -- updated searchable index
|
|
76
76
|
|
|
77
|
-
**Storage read (never modified)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
**Storage read (never modified)** — all resolved via `state.json.artifacts[]`:
|
|
78
|
+
```
|
|
79
|
+
related = artifacts.filter(a =>
|
|
80
|
+
a.phase === target_phase && a.milestone === current_milestone
|
|
81
|
+
).sort_by(completed_at asc)
|
|
82
|
+
```
|
|
83
|
+
Each artifact's type determines its outputs at `.workflow/{a.path}/`:
|
|
84
|
+
- **execute** → index.json, plan.json, .task/TASK-*.json, .summaries/TASK-*-summary.md
|
|
85
|
+
- **verify** → verification.json
|
|
86
|
+
- **review** → review.json (findings, verdict, severity distribution)
|
|
87
|
+
- **debug** → understanding.md, evidence.ndjson (root causes, fix directions)
|
|
88
|
+
- **test** → uat.md, .tests/ (UAT results, gaps, coverage)
|
|
89
|
+
- Also reads: `.workflow/issues/issues.jsonl`, `.workflow/state.json`
|
|
81
90
|
|
|
82
91
|
### Agent Registry
|
|
83
92
|
|
|
@@ -151,7 +160,7 @@ functions.update_plan({
|
|
|
151
160
|
Validate `--lens` values. If `--compare <M>` present, require single mode.
|
|
152
161
|
|
|
153
162
|
**Stage 2: Validate phase artifacts**. For each target phase:
|
|
154
|
-
- Phase directory `.workflow/
|
|
163
|
+
- Phase directory must exist (resolved via state.json artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`)
|
|
155
164
|
- `index.json` must show `status: "completed"`
|
|
156
165
|
- `.task/` directory must exist with at least one `TASK-*.json`
|
|
157
166
|
- If existing `retrospective.json` found and not `--all`: emit W002, prompt overwrite
|
|
@@ -175,7 +184,7 @@ functions.update_plan({
|
|
|
175
184
|
### Stage 4: Context-Agent Fork + Parallel Lens Analysis
|
|
176
185
|
|
|
177
186
|
**Archive if overwriting**:
|
|
178
|
-
If existing `retrospective.{md,json}` present, move to `{
|
|
187
|
+
If existing `retrospective.{md,json}` present, move to `{artifact_dir}/.history/` with timestamp suffix before spawning.
|
|
179
188
|
|
|
180
189
|
**Step 4a: Spawn context agent**
|
|
181
190
|
```javascript
|
|
@@ -190,13 +199,18 @@ spawn_agent({
|
|
|
190
199
|
---
|
|
191
200
|
|
|
192
201
|
Goal: Load and summarize all phase artifacts for retrospective analysis.
|
|
193
|
-
Phase: ${
|
|
202
|
+
Phase: ${targetPhase}
|
|
194
203
|
|
|
195
204
|
TASK:
|
|
196
|
-
1. Read
|
|
197
|
-
2.
|
|
205
|
+
1. Read .workflow/state.json -- query artifacts[] for all entries matching phase === ${targetPhase} && milestone === current_milestone
|
|
206
|
+
2. For each artifact, load outputs from .workflow/{artifact.path}/:
|
|
207
|
+
- execute artifacts → index.json, plan.json, .task/TASK-*.json, .summaries/TASK-*-summary.md
|
|
208
|
+
- verify artifacts → verification.json
|
|
209
|
+
- review artifacts → review.json (findings, verdict, severity distribution)
|
|
210
|
+
- debug artifacts → understanding.md, evidence.ndjson (root causes, fix directions)
|
|
211
|
+
- test artifacts → uat.md, .tests/ (UAT results, gaps, coverage)
|
|
198
212
|
3. Read .workflow/issues/issues.jsonl -- filter rows with phase link to this phase
|
|
199
|
-
4. Read .workflow/state.json for project context
|
|
213
|
+
4. Read .workflow/state.json for project context (milestones, accumulated_context)
|
|
200
214
|
|
|
201
215
|
EXPECTED: Comprehensive artifact summary covering:
|
|
202
216
|
- Phase goals and outcomes (from plan.json vs verification.json)
|
|
@@ -357,18 +371,21 @@ If `--no-route`: skip this stage.
|
|
|
357
371
|
For each insight in `synthResult.insights`, route based on `routing` field:
|
|
358
372
|
|
|
359
373
|
**Spec routing** (`routing: "spec"`):
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
374
|
+
|
|
375
|
+
Map insight type to spec category: pattern/convention → `coding`, architecture → `arch`, quality → `quality`.
|
|
376
|
+
Append `<spec-entry>` to matching category file:
|
|
377
|
+
|
|
378
|
+
```markdown
|
|
379
|
+
<spec-entry category="{category}" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="retrospective">
|
|
380
|
+
|
|
381
|
+
### <title>
|
|
382
|
+
|
|
383
|
+
<summary>
|
|
384
|
+
|
|
385
|
+
**Evidence:** <evidence_refs>
|
|
386
|
+
**Phase:** <N> | **Lens:** <lens> | **Insight:** <INS-id>
|
|
387
|
+
|
|
388
|
+
</spec-entry>
|
|
372
389
|
+
|
|
373
390
|
+<summary>
|
|
374
391
|
+
|
|
@@ -404,7 +421,7 @@ If `!AUTO_YES`: present routing table and ask confirmation before routing each g
|
|
|
404
421
|
```javascript
|
|
405
422
|
functions.apply_patch:
|
|
406
423
|
*** Begin Patch
|
|
407
|
-
*** Add File:
|
|
424
|
+
*** Add File: <target_dir>/retrospective.json
|
|
408
425
|
+{
|
|
409
426
|
+ "phase": <N>,
|
|
410
427
|
+ "phase_slug": "<slug>",
|
|
@@ -415,7 +432,7 @@ functions.apply_patch:
|
|
|
415
432
|
+ "distilled_insights": <insights_array>,
|
|
416
433
|
+ "routing_summary": <routing_summary>
|
|
417
434
|
+}
|
|
418
|
-
*** Add File:
|
|
435
|
+
*** Add File: <target_dir>/retrospective.md
|
|
419
436
|
+# Retrospective: Phase <N> -- <slug>
|
|
420
437
|
+
|
|
421
438
|
+> Generated: <ISO> | Lenses: technical, process, quality, decision
|
|
@@ -441,7 +458,7 @@ functions.apply_patch:
|
|
|
441
458
|
|
|
442
459
|
Append each insight to `.workflow/learning/lessons.jsonl` and update `learning-index.json`.
|
|
443
460
|
|
|
444
|
-
If `.workflow/specs/learnings.md` already exists, append
|
|
461
|
+
If `.workflow/specs/learnings.md` already exists, append each insight using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`retrospective`). Never create the file — only append if it exists.
|
|
445
462
|
|
|
446
463
|
```javascript
|
|
447
464
|
functions.update_plan({
|
|
@@ -466,7 +483,7 @@ Lenses: technical, process, quality, decision
|
|
|
466
483
|
Insights: <total> (<N> new, <N> duplicates merged)
|
|
467
484
|
|
|
468
485
|
ROUTING:
|
|
469
|
-
Spec
|
|
486
|
+
Spec entries: <N> -> .workflow/specs/{category-file}.md
|
|
470
487
|
Issues: <N> -> .workflow/issues/issues.jsonl
|
|
471
488
|
Memory tips: <N> -> .workflow/memory/TIP-*.md
|
|
472
489
|
Lessons: <N> -> .workflow/learning/lessons.jsonl
|
|
@@ -480,6 +497,8 @@ Next:
|
|
|
480
497
|
$manage-status
|
|
481
498
|
$manage-issue "list --source retrospective"
|
|
482
499
|
$manage-learn "list --phase <N>"
|
|
500
|
+
$manage-wiki health
|
|
501
|
+
$wiki-digest "<phase-topic>"
|
|
483
502
|
```
|
|
484
503
|
</execution>
|
|
485
504
|
|
|
@@ -52,7 +52,7 @@ Wave-based multi-dimensional code review using `spawn_agents_on_csv`. Decomposes
|
|
|
52
52
|
$quality-review "3"
|
|
53
53
|
$quality-review -c 6 "3 --level deep"
|
|
54
54
|
$quality-review -y "3 --dimensions security,performance"
|
|
55
|
-
$quality-review --continue "review-
|
|
55
|
+
$quality-review --continue "20260318-review-P3-auth"
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
**Flags**:
|
|
@@ -119,7 +119,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
119
119
|
### Session Structure
|
|
120
120
|
|
|
121
121
|
```
|
|
122
|
-
.workflow/.csv-wave/review-{
|
|
122
|
+
.workflow/.csv-wave/{YYYYMMDD}-review-P{N}-{slug}/
|
|
123
123
|
+-- tasks.csv
|
|
124
124
|
+-- results.csv
|
|
125
125
|
+-- discoveries.ndjson
|
|
@@ -163,7 +163,7 @@ const phaseArg = $ARGUMENTS
|
|
|
163
163
|
.trim()
|
|
164
164
|
|
|
165
165
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
166
|
-
const sessionId =
|
|
166
|
+
const sessionId = `${dateStr}-review-P${phaseArg}-${phaseSlug}` // phaseSlug from index.json or roadmap
|
|
167
167
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
168
168
|
|
|
169
169
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -175,8 +175,9 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
175
175
|
|
|
176
176
|
**Decomposition Rules**:
|
|
177
177
|
|
|
178
|
-
1. **Phase resolution**: Resolve `{phaseArg}` to `.workflow/
|
|
179
|
-
2. **
|
|
178
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
179
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: execute → .summaries/.task/, review → review.json, debug → understanding.md, test → uat.md. Extract conclusions that may affect this review (prior verdicts, root causes, UAT gaps) and pass as prior quality context to reviewer agents.
|
|
180
|
+
3. **File collection**: Read `.task/TASK-*.json` -> collect all `files[].path` where action != "read"
|
|
180
181
|
3. **Level detection**:
|
|
181
182
|
|
|
182
183
|
| Condition | Level |
|
|
@@ -332,9 +333,11 @@ spawn_agents_on_csv({
|
|
|
332
333
|
| standard | critical + high |
|
|
333
334
|
| deep | critical + high + medium |
|
|
334
335
|
|
|
335
|
-
7. **Phase index update**: Update
|
|
336
|
+
7. **Phase index update**: Update `{artifact_dir}/index.json` with review status.
|
|
336
337
|
|
|
337
|
-
8.
|
|
338
|
+
8. **Register artifact**: Append to `state.json.artifacts[]` with `type: "review"`, `id: REV-NNN`, `path: "scratch/{YYYYMMDD}-review-P{N}-{slug}"`, `depends_on: exec_art.id`. Output directory is independent scratch, not shared with plan.
|
|
339
|
+
|
|
340
|
+
9. Display summary.
|
|
338
341
|
|
|
339
342
|
### Shared Discovery Board Protocol
|
|
340
343
|
|
|
@@ -49,15 +49,15 @@ No auto mode -- UAT is inherently interactive. `--auto-fix` only automates gap c
|
|
|
49
49
|
### Step 1: Resolve Target
|
|
50
50
|
|
|
51
51
|
1. Parse `$ARGUMENTS` for phase number, scratch task ID, or flags
|
|
52
|
-
2. **Phase mode**:
|
|
52
|
+
2. **Phase mode**: resolve `PHASE_DIR` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
53
53
|
3. **Scratch mode**: set `SCRATCH_DIR = .workflow/scratch/{id}/`
|
|
54
54
|
4. Validate target exists and has `verification.json` -- if missing: **E002**
|
|
55
55
|
|
|
56
56
|
### Step 2: Check Active Sessions
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
|
|
60
59
|
find .workflow/scratch -name "uat.md" -type f 2>/dev/null | head -5
|
|
60
|
+
find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
- If active sessions exist and no target specified: display session table, ask user to resume or start new
|
|
@@ -71,7 +71,11 @@ If any smoke fails: **E003** -- abort, suggest Skill({ skill: "quality-debug" })
|
|
|
71
71
|
|
|
72
72
|
### Step 4: Load Verification Context
|
|
73
73
|
|
|
74
|
-
Read from target directory: verification.json, validation.json, index.json, plan.json, `.summaries/TASK-*.md`. Build testable list from user-observable outcomes.
|
|
74
|
+
Read from target directory (resolved via artifact registry): verification.json, validation.json, index.json, plan.json, `.summaries/TASK-*.md`. Build testable list from user-observable outcomes.
|
|
75
|
+
|
|
76
|
+
### Step 4.5: Load Quality Context
|
|
77
|
+
|
|
78
|
+
Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: review → review.json (findings become additional test scenarios), debug → understanding.md (confirmed root causes become regression tests). Extract conclusions that may affect test scenario design.
|
|
75
79
|
|
|
76
80
|
### Step 5: Design Test Scenarios
|
|
77
81
|
|
|
@@ -132,8 +136,9 @@ Read `uat.md`, find first `result: [pending]` test, announce progress, continue
|
|
|
132
136
|
2. Archive previous result artifacts to `.history/`
|
|
133
137
|
3. Write `.tests/test-results.json` and `.tests/coverage-report.json`
|
|
134
138
|
4. Update `index.json` with UAT results
|
|
135
|
-
5.
|
|
136
|
-
6. If issues
|
|
139
|
+
5. **Register artifact**: Append to `state.json.artifacts[]` with `type: "test"`, `id: TST-NNN`, `path: "scratch/{YYYYMMDD}-test-P{N}-{slug}"`, `depends_on: exec_art.id`. Output directory is independent scratch.
|
|
140
|
+
6. If no issues: go to Step 13
|
|
141
|
+
7. If issues found: go to Step 11
|
|
137
142
|
|
|
138
143
|
### Step 11: Auto-Diagnose
|
|
139
144
|
|
|
@@ -49,7 +49,7 @@ Wave-based test generation using `spawn_agents_on_csv`. Each source file/module
|
|
|
49
49
|
$quality-test-gen "3"
|
|
50
50
|
$quality-test-gen -c 4 "3 --type unit"
|
|
51
51
|
$quality-test-gen -y "3 --type e2e --framework vitest"
|
|
52
|
-
$quality-test-gen --continue "
|
|
52
|
+
$quality-test-gen --continue "20260318-testgen-P3-auth"
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**Flags**:
|
|
@@ -113,7 +113,7 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column (empty for w
|
|
|
113
113
|
### Session Structure
|
|
114
114
|
|
|
115
115
|
```
|
|
116
|
-
.workflow/.csv-wave/
|
|
116
|
+
.workflow/.csv-wave/{YYYYMMDD}-testgen-P{N}-{slug}/
|
|
117
117
|
+-- tasks.csv
|
|
118
118
|
+-- results.csv
|
|
119
119
|
+-- discoveries.ndjson
|
|
@@ -158,7 +158,7 @@ const phaseArg = $ARGUMENTS
|
|
|
158
158
|
.trim()
|
|
159
159
|
|
|
160
160
|
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
161
|
-
const sessionId =
|
|
161
|
+
const sessionId = `${dateStr}-testgen-P${phaseArg}-${phaseSlug}` // phaseSlug from index.json or roadmap
|
|
162
162
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
163
163
|
|
|
164
164
|
Bash(`mkdir -p ${sessionFolder}`)
|
|
@@ -170,9 +170,11 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
170
170
|
|
|
171
171
|
**Decomposition Rules**:
|
|
172
172
|
|
|
173
|
-
1. **Phase resolution**: Resolve `{phaseArg}` to `.workflow/
|
|
173
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
174
174
|
|
|
175
|
-
2. **
|
|
175
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for all artifacts matching `phase === target_phase && milestone === current_milestone`. Each artifact's type determines its outputs: review → review.json (critical findings become focused test targets), debug → understanding.md (confirmed root causes become regression test targets), test → uat.md (UAT gaps inform which behaviors need tests). Extract conclusions that may affect test generation priorities.
|
|
176
|
+
|
|
177
|
+
3. **Test infrastructure discovery**:
|
|
176
178
|
- Find config files: `jest.config.*`, `vitest.config.*`, `pytest.ini`, `.mocharc.*`
|
|
177
179
|
- Find existing test files: `*.test.*`, `*.spec.*`, `test_*`
|
|
178
180
|
- Find test utilities: `test-utils.*`, `testHelper*`, `conftest.py`
|
|
@@ -277,9 +279,9 @@ Each agent receives:
|
|
|
277
279
|
|
|
278
280
|
4. **Archive previous artifacts** before writing:
|
|
279
281
|
```
|
|
280
|
-
IF file exists "{
|
|
281
|
-
mkdir -p "{
|
|
282
|
-
mv to "{
|
|
282
|
+
IF file exists "{artifact_dir}/.tests/test-gen-report.json":
|
|
283
|
+
mkdir -p "{artifact_dir}/.history"
|
|
284
|
+
mv to "{artifact_dir}/.history/test-gen-report-{TIMESTAMP}.json"
|
|
283
285
|
```
|
|
284
286
|
|
|
285
287
|
5. Build `test-gen-report.json`:
|
|
@@ -362,7 +364,9 @@ Each agent receives:
|
|
|
362
364
|
|
|
363
365
|
8. Copy `test-gen-report.json` to phase `.tests/` directory.
|
|
364
366
|
|
|
365
|
-
9.
|
|
367
|
+
9. **Register artifact**: Append to `state.json.artifacts[]` with `type: "test"`, `id: TST-NNN`, `path: "scratch/{YYYYMMDD}-testgen-P{N}-{slug}"`, `depends_on: exec_art.id`. Output directory is independent scratch.
|
|
368
|
+
|
|
369
|
+
10. Display summary.
|
|
366
370
|
|
|
367
371
|
**Next step routing**:
|
|
368
372
|
|
|
@@ -15,7 +15,7 @@ $spec-add "arch Use Zod for runtime validation over io-ts"
|
|
|
15
15
|
$spec-add "quality All API endpoints must return structured error objects"
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
**Valid categories**: coding, arch, quality, debug, test, review, learning.
|
|
18
|
+
**Valid categories**: coding, arch, quality, debug, test, review, learning, bug, pattern, decision, rule, validation.
|
|
19
19
|
</purpose>
|
|
20
20
|
|
|
21
21
|
<context>
|
|
@@ -31,6 +31,13 @@ $ARGUMENTS — `<category> <content>` where category selects the target file.
|
|
|
31
31
|
| `test` | `test-conventions.md` |
|
|
32
32
|
| `review` | `review-standards.md` |
|
|
33
33
|
| `learning` | `learnings.md` |
|
|
34
|
+
| `bug` | `learnings.md` |
|
|
35
|
+
| `pattern` | `coding-conventions.md` |
|
|
36
|
+
| `decision` | `architecture-constraints.md` |
|
|
37
|
+
| `rule` | `quality-rules.md` |
|
|
38
|
+
| `validation` | `quality-rules.md` |
|
|
39
|
+
|
|
40
|
+
Extended types (`bug`, `pattern`, `decision`, `rule`, `validation`) are stored in the file of their closest core category but retain their specific category in the `<spec-entry>` tag.
|
|
34
41
|
</context>
|
|
35
42
|
|
|
36
43
|
<execution>
|
|
@@ -38,7 +45,7 @@ $ARGUMENTS — `<category> <content>` where category selects the target file.
|
|
|
38
45
|
### Step 1: Parse Input
|
|
39
46
|
|
|
40
47
|
Extract category (first token) and content (remainder) from arguments.
|
|
41
|
-
- Validate category is one of: coding, arch, quality, debug, test, review, learning (E003 if invalid)
|
|
48
|
+
- Validate category is one of: coding, arch, quality, debug, test, review, learning, bug, pattern, decision, rule, validation (E003 if invalid)
|
|
42
49
|
- Validate content is non-empty (E001 if missing)
|
|
43
50
|
|
|
44
51
|
### Step 2: Validate Specs Directory
|
|
@@ -78,6 +85,7 @@ Append `<spec-entry>` closed-tag block to target file:
|
|
|
78
85
|
Added [{category}] to {target_file}
|
|
79
86
|
Keywords: {kw1}, {kw2}, {kw3}
|
|
80
87
|
Verify: /spec-load --keyword {kw1}
|
|
88
|
+
Remove: /spec-remove <entry-id>
|
|
81
89
|
```
|
|
82
90
|
</execution>
|
|
83
91
|
|
|
@@ -86,7 +94,7 @@ Verify: /spec-load --keyword {kw1}
|
|
|
86
94
|
|------|----------|-------------|
|
|
87
95
|
| E001 | fatal | Category and content are both required |
|
|
88
96
|
| E002 | fatal | `.workflow/specs/` not initialized -- run `Skill({ skill: "spec-setup" })` first |
|
|
89
|
-
| E003 | fatal | Invalid category -- must be one of: coding, arch, quality, debug, test, review, learning |
|
|
97
|
+
| E003 | fatal | Invalid category -- must be one of: coding, arch, quality, debug, test, review, learning, bug, pattern, decision, rule, validation |
|
|
90
98
|
</error_codes>
|
|
91
99
|
|
|
92
100
|
<success_criteria>
|
|
@@ -30,8 +30,15 @@ $spec-load "--category coding --keyword naming"
|
|
|
30
30
|
| `test` | `test-conventions.md` |
|
|
31
31
|
| `review` | `review-standards.md` |
|
|
32
32
|
| `learning` | `learnings.md` |
|
|
33
|
+
| `bug` | `learnings.md` |
|
|
34
|
+
| `pattern` | `coding-conventions.md` |
|
|
35
|
+
| `decision` | `architecture-constraints.md` |
|
|
36
|
+
| `rule` | `quality-rules.md` |
|
|
37
|
+
| `validation` | `quality-rules.md` |
|
|
33
38
|
| `all` (default) | All spec files |
|
|
34
39
|
|
|
40
|
+
Extended types (`bug`, `pattern`, `decision`, `rule`, `validation`) are stored in their closest core category's file but retain their specific category in the `<spec-entry>` tag.
|
|
41
|
+
|
|
35
42
|
**Keyword filtering**: When `--keyword` is provided, only entries with matching keyword in their `<spec-entry keywords="...">` attribute are returned. Legacy entries (heading format) are filtered by text grep.
|
|
36
43
|
</context>
|
|
37
44
|
|
|
@@ -43,7 +43,7 @@ Single-wave parallel execution — 4 independent mapper agents each analyze a di
|
|
|
43
43
|
$spec-map ""
|
|
44
44
|
$spec-map "auth"
|
|
45
45
|
$spec-map -c 4 "api layer"
|
|
46
|
-
$spec-map --continue "map-auth
|
|
46
|
+
$spec-map --continue "20260318-map-auth"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
**Flags**:
|
|
@@ -102,7 +102,7 @@ id,title,description,focus_area,output_file,deps,context_from,wave,status,findin
|
|
|
102
102
|
const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
|
|
103
103
|
const focusArea = $ARGUMENTS.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+/g, '').trim() || 'full'
|
|
104
104
|
const dateStr = new Date(Date.now() + 8*60*60*1000).toISOString().substring(0,10).replace(/-/g,'')
|
|
105
|
-
const sessionId =
|
|
105
|
+
const sessionId = `${dateStr}-map-${focusArea.substring(0,20)}`
|
|
106
106
|
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
107
107
|
|
|
108
108
|
Bash(`mkdir -p ${sessionFolder}`)
|