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
|
@@ -9,7 +9,7 @@ This is a **post-execution analysis** workflow. It reads only — until the rout
|
|
|
9
9
|
## Prerequisites
|
|
10
10
|
|
|
11
11
|
- `.workflow/` initialized (`.workflow/state.json` exists)
|
|
12
|
-
- At least one phase
|
|
12
|
+
- At least one completed phase (via artifact registry in state.json)
|
|
13
13
|
- Target phase has been executed (has `.task/` and `.summaries/`)
|
|
14
14
|
- `maestro delegate` available (used for the four lens analyses via Agent calls)
|
|
15
15
|
|
|
@@ -61,18 +61,26 @@ This is a **post-execution analysis** workflow. It reads only — until the rout
|
|
|
61
61
|
|
|
62
62
|
```
|
|
63
63
|
candidates = []
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
|
|
65
|
+
Read .workflow/state.json → state
|
|
66
|
+
artifacts = state.artifacts ?? []
|
|
67
|
+
|
|
68
|
+
// Resolve completed phases from artifact registry
|
|
69
|
+
phaseNums = [...new Set(artifacts.map(a => a.phase).filter(Boolean))]
|
|
70
|
+
FOR each phaseNum in phaseNums:
|
|
71
|
+
execArt = artifacts.find(a => a.type === 'execute' && a.phase === phaseNum && a.status === 'completed')
|
|
72
|
+
IF execArt:
|
|
73
|
+
artifact_dir = ".workflow/" + execArt.path
|
|
74
|
+
has_retro = file exists at "{artifact_dir}/retrospective.json"
|
|
68
75
|
candidates.push({
|
|
69
|
-
number:
|
|
70
|
-
slug: slug,
|
|
71
|
-
title:
|
|
72
|
-
completed_at:
|
|
76
|
+
number: phaseNum,
|
|
77
|
+
slug: execArt.slug ?? "phase-" + phaseNum,
|
|
78
|
+
title: execArt.title ?? execArt.slug ?? "Phase " + phaseNum,
|
|
79
|
+
completed_at: execArt.completed_at,
|
|
73
80
|
has_retro: has_retro,
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
phase_dir: artifact_dir,
|
|
82
|
+
gaps: 0,
|
|
83
|
+
review_verdict: "—"
|
|
76
84
|
})
|
|
77
85
|
```
|
|
78
86
|
|
|
@@ -103,34 +111,43 @@ FOR each .workflow/phases/{NN}-{slug}/index.json:
|
|
|
103
111
|
|
|
104
112
|
If overwriting existing retrospective.json:
|
|
105
113
|
```
|
|
106
|
-
mkdir -p "{phase_dir}/.history"
|
|
114
|
+
mkdir -p "{candidate.phase_dir}/.history" // phase_dir is artifact_dir from registry
|
|
107
115
|
TIMESTAMP = format(now(), "YYYY-MM-DDTHH-mm-ss")
|
|
108
|
-
mv "{phase_dir}/retrospective.json" "{phase_dir}/.history/retrospective-{TIMESTAMP}.json"
|
|
109
|
-
mv "{phase_dir}/retrospective.md" "{phase_dir}/.history/retrospective-{TIMESTAMP}.md"
|
|
116
|
+
mv "{candidate.phase_dir}/retrospective.json" "{candidate.phase_dir}/.history/retrospective-{TIMESTAMP}.json"
|
|
117
|
+
mv "{candidate.phase_dir}/retrospective.md" "{candidate.phase_dir}/.history/retrospective-{TIMESTAMP}.md"
|
|
110
118
|
```
|
|
111
119
|
|
|
112
120
|
---
|
|
113
121
|
|
|
114
122
|
## Stage 3: load_artifacts (per phase)
|
|
115
123
|
|
|
116
|
-
For each selected phase, build the in-memory artifacts bundle:
|
|
124
|
+
For each selected phase (using `candidate.phase_dir` resolved in Stage 2), build the in-memory artifacts bundle:
|
|
117
125
|
|
|
118
126
|
```
|
|
127
|
+
phase_dir = candidate.phase_dir // already resolved from artifact registry (e.g. .workflow/scratch/plan-auth-2026-04-20)
|
|
128
|
+
|
|
119
129
|
artifacts = {
|
|
120
130
|
phase_num: NN,
|
|
121
131
|
phase_slug: slug,
|
|
122
|
-
|
|
123
|
-
index: read
|
|
132
|
+
artifact_dir: artifact_dir,
|
|
133
|
+
index: read "{artifact_dir}/index.json" or null,
|
|
124
134
|
state: read .workflow/state.json,
|
|
125
|
-
plan: read "{
|
|
126
|
-
verification: read "{
|
|
127
|
-
review: read "{
|
|
128
|
-
uat: read "{
|
|
129
|
-
task_summaries: read all "{
|
|
130
|
-
task_jsons: read all "{
|
|
135
|
+
plan: read "{artifact_dir}/plan.json" or null,
|
|
136
|
+
verification: read "{artifact_dir}/verification.json" or null,
|
|
137
|
+
review: read "{artifact_dir}/review.json" or null,
|
|
138
|
+
uat: read "{artifact_dir}/uat.md" or null,
|
|
139
|
+
task_summaries: read all "{artifact_dir}/.summaries/TASK-*-summary.md",
|
|
140
|
+
task_jsons: read all "{artifact_dir}/.task/TASK-*.json",
|
|
131
141
|
phase_issues: filter ".workflow/issues/issues.jsonl" + ".workflow/issues/issue-history.jsonl"
|
|
132
142
|
where issue.phase_ref == phase_slug or issue.phase_ref == NN,
|
|
133
|
-
prior_retro:
|
|
143
|
+
prior_retro: null
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Resolve --compare target
|
|
147
|
+
IF --compare M:
|
|
148
|
+
compareArt = state.artifacts.find(a => a.type === 'execute' && a.phase === M)
|
|
149
|
+
IF compareArt:
|
|
150
|
+
artifacts.prior_retro = read ".workflow/" + compareArt.path + "/retrospective.json"
|
|
134
151
|
}
|
|
135
152
|
```
|
|
136
153
|
|
|
@@ -206,12 +223,12 @@ the project's spec / note / issue stores.
|
|
|
206
223
|
- Completed at: {index.completed_at}
|
|
207
224
|
|
|
208
225
|
## Artifacts (read these from disk)
|
|
209
|
-
- Plan: {
|
|
210
|
-
- Verification: {
|
|
211
|
-
- Review: {
|
|
212
|
-
- UAT notes: {
|
|
213
|
-
- Task summaries: {
|
|
214
|
-
- Task JSONs: {
|
|
226
|
+
- Plan: {artifact_dir}/plan.json
|
|
227
|
+
- Verification: {artifact_dir}/verification.json
|
|
228
|
+
- Review: {artifact_dir}/review.json
|
|
229
|
+
- UAT notes: {artifact_dir}/uat.md
|
|
230
|
+
- Task summaries: {artifact_dir}/.summaries/
|
|
231
|
+
- Task JSONs: {artifact_dir}/.task/
|
|
215
232
|
- Phase issues: .workflow/issues/issues.jsonl (filter phase_ref == "{phase_slug}")
|
|
216
233
|
- Project state: .workflow/state.json (decisions, deferred)
|
|
217
234
|
|
|
@@ -248,7 +265,7 @@ Return ONLY a single JSON object, no prose, matching this schema:
|
|
|
248
265
|
"title": "Short imperative title",
|
|
249
266
|
"summary": "1–3 sentences a future planner can act on",
|
|
250
267
|
"confidence": "high|medium|low",
|
|
251
|
-
"evidence_refs": ["{
|
|
268
|
+
"evidence_refs": ["{artifact_dir}/verification.json#gaps[2]", "..."],
|
|
252
269
|
"routed_to": "spec|note|issue|none",
|
|
253
270
|
"tags": ["..."]
|
|
254
271
|
}
|
|
@@ -422,10 +439,10 @@ retrospective = {
|
|
|
422
439
|
| {INS-id} | note | ... |
|
|
423
440
|
```
|
|
424
441
|
|
|
425
|
-
Write both files:
|
|
442
|
+
Write both files (phase_dir already resolved in Stage 2):
|
|
426
443
|
```
|
|
427
|
-
Write "{
|
|
428
|
-
Write "{
|
|
444
|
+
Write "{artifact_dir}/retrospective.json"
|
|
445
|
+
Write "{artifact_dir}/retrospective.md"
|
|
429
446
|
```
|
|
430
447
|
|
|
431
448
|
---
|
|
@@ -454,46 +471,31 @@ Accept all? [Y/n/i for individual]
|
|
|
454
471
|
|
|
455
472
|
#### Target: spec
|
|
456
473
|
|
|
457
|
-
|
|
474
|
+
Route spec-routed insights as `<spec-entry>` entries into the appropriate category file. Map insight type to category:
|
|
475
|
+
- `pattern` / `convention` → `coding`
|
|
476
|
+
- `adr-candidate` / architecture → `arch`
|
|
477
|
+
- quality-related → `quality`
|
|
458
478
|
|
|
459
479
|
```
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
spec_file = ".workflow/specs/SPEC-retro-{phase_num}-{INS_id}-{slug}.md"
|
|
463
|
-
|
|
464
|
-
Write spec_file:
|
|
465
|
-
---
|
|
466
|
-
status: draft
|
|
467
|
-
type: pattern | convention | adr-candidate
|
|
468
|
-
source: retrospective
|
|
469
|
-
source_phase: {NN}
|
|
470
|
-
source_insight: {INS_id}
|
|
471
|
-
created_at: {now ISO}
|
|
472
|
-
tags: {insight.tags}
|
|
473
|
-
confidence: {insight.confidence}
|
|
474
|
-
---
|
|
475
|
-
|
|
476
|
-
# {insight.title}
|
|
480
|
+
category = map_insight_to_category(insight.type)
|
|
481
|
+
target_file = category_to_file(category) # e.g., coding → coding-conventions.md
|
|
477
482
|
|
|
478
|
-
|
|
483
|
+
keywords = extract_keywords(insight.title + insight.summary) # 3-5 domain-specific terms
|
|
479
484
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
into a full spec via `/maestro-spec-generate` if it warrants project-wide adoption.
|
|
485
|
+
Append to .workflow/specs/{target_file}:
|
|
486
|
+
<spec-entry category="{category}" keywords="{keywords}" date="{YYYY-MM-DD}" source="retrospective">
|
|
483
487
|
|
|
484
|
-
|
|
488
|
+
### {insight.title}
|
|
485
489
|
|
|
486
|
-
{insight.summary}
|
|
490
|
+
{insight.summary}
|
|
487
491
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
{FOR ref in evidence_refs:} - `{ref}`{END FOR}
|
|
492
|
+
**Evidence:** {FOR ref in evidence_refs:} `{ref}` {END FOR}
|
|
493
|
+
**Phase:** {NN} ({phase_slug}) | **Lens:** {lens} | **Insight:** {INS_id} | **Confidence:** {insight.confidence}
|
|
491
494
|
|
|
492
|
-
|
|
495
|
+
</spec-entry>
|
|
496
|
+
```
|
|
493
497
|
|
|
494
|
-
|
|
495
|
-
- Should existing code be migrated to this pattern, or is it forward-only?
|
|
496
|
-
- What is the failure mode if this pattern is violated?
|
|
498
|
+
If the target file does not exist, create it with category frontmatter first (same as `spec-add` on-demand creation).
|
|
497
499
|
|
|
498
500
|
## Routing trail
|
|
499
501
|
|
|
@@ -502,7 +504,7 @@ into a full spec via `/maestro-spec-generate` if it warrants project-wide adopti
|
|
|
502
504
|
- Insight: {INS_id}
|
|
503
505
|
- Confidence: {confidence}
|
|
504
506
|
|
|
505
|
-
insight.routed_id = "
|
|
507
|
+
insight.routed_id = "{category_file}#INS-{INS_id}" # e.g., coding-conventions.md#INS-a1b2c3d4
|
|
506
508
|
```
|
|
507
509
|
|
|
508
510
|
#### Target: note
|
|
@@ -522,7 +524,7 @@ Capture the returned TIP-{id} from the skill output.
|
|
|
522
524
|
insight.routed_id = "TIP-{captured_id}"
|
|
523
525
|
```
|
|
524
526
|
|
|
525
|
-
If the skill call cannot be intercepted to capture the ID, fall back to writing the tip file directly using the schema in `workflows/memory.md` Part B Step 3 (Tip mode), and update `
|
|
527
|
+
If the skill call cannot be intercepted to capture the ID, fall back to writing the tip file directly using the schema in `workflows/memory.md` Part B Step 3 (Tip mode), and update `wiki-index.json` per Step 4.
|
|
526
528
|
|
|
527
529
|
#### Target: issue
|
|
528
530
|
|
|
@@ -667,19 +669,24 @@ Write .workflow/learning/learning-index.json
|
|
|
667
669
|
|
|
668
670
|
### Backward-compat append to specs/learnings.md
|
|
669
671
|
|
|
670
|
-
Append learnings to `.workflow/specs/learnings.md` (shared with milestone-complete's learning extraction)
|
|
672
|
+
Append learnings to `.workflow/specs/learnings.md` (shared with milestone-complete's learning extraction) using `<spec-entry>` closed-tag format:
|
|
671
673
|
|
|
672
674
|
```
|
|
673
675
|
IF .workflow/specs/learnings.md exists:
|
|
674
676
|
FOR each insight:
|
|
675
|
-
|
|
676
|
-
|
|
677
|
+
keywords = extract_keywords(insight.title + insight.summary) # 3-5 domain-specific terms
|
|
678
|
+
Append:
|
|
679
|
+
<spec-entry category="learning" keywords="{keywords}" date="{YYYY-MM-DD}" source="retrospective">
|
|
680
|
+
|
|
681
|
+
### {title}
|
|
677
682
|
|
|
678
683
|
{summary}
|
|
679
|
-
Phase: {NN} |
|
|
684
|
+
Phase: {NN} | Lens: {lens} | Insight: {INS_id}
|
|
685
|
+
|
|
686
|
+
</spec-entry>
|
|
680
687
|
```
|
|
681
688
|
|
|
682
|
-
If the file does not exist, create it with a `## Entries` header.
|
|
689
|
+
If the file does not exist, create it with category frontmatter and a `## Entries` header.
|
|
683
690
|
|
|
684
691
|
---
|
|
685
692
|
|
|
@@ -694,14 +701,14 @@ Lenses run: {lenses joined by ", "}
|
|
|
694
701
|
Insights: {count}
|
|
695
702
|
|
|
696
703
|
Routing summary:
|
|
697
|
-
|
|
704
|
+
Spec entries: {N} → .workflow/specs/{category-file}.md
|
|
698
705
|
Notes saved: {N} → .workflow/memory/TIP-*
|
|
699
706
|
Issues opened: {N} → .workflow/issues/issues.jsonl
|
|
700
707
|
Lessons logged: {N} → .workflow/learning/lessons.jsonl
|
|
701
708
|
|
|
702
709
|
Files:
|
|
703
|
-
{
|
|
704
|
-
{
|
|
710
|
+
{artifact_dir}/retrospective.md
|
|
711
|
+
{artifact_dir}/retrospective.json
|
|
705
712
|
|
|
706
713
|
Next steps (suggested):
|
|
707
714
|
Skill({ skill: "manage-status" }) — Review project state
|
|
@@ -770,12 +777,12 @@ Total issues: {sum}
|
|
|
770
777
|
"summary": "Refresh-on-use prevents replay attacks. Implemented in src/auth/refresh.ts; should become a project-wide convention.",
|
|
771
778
|
"confidence": "high",
|
|
772
779
|
"evidence_refs": [
|
|
773
|
-
".workflow/
|
|
774
|
-
".workflow/
|
|
780
|
+
".workflow/scratch/plan-auth-2026-04-15/verification.json#gaps[2]",
|
|
781
|
+
".workflow/scratch/plan-auth-2026-04-15/.summaries/TASK-005-summary.md:42"
|
|
775
782
|
],
|
|
776
783
|
"tags": ["auth", "jwt", "security"],
|
|
777
784
|
"routed_to": "spec",
|
|
778
|
-
"routed_id": "
|
|
785
|
+
"routed_id": "coding-conventions.md#INS-a1b2c3d4"
|
|
779
786
|
}
|
|
780
787
|
],
|
|
781
788
|
"routing_recommendations": [
|
|
@@ -790,7 +797,7 @@ Total issues: {sum}
|
|
|
790
797
|
One JSON object per line:
|
|
791
798
|
|
|
792
799
|
```json
|
|
793
|
-
{"id":"INS-a1b2c3d4","phase":1,"phase_slug":"01-auth","lens":"technical","category":"pattern","title":"JWT refresh tokens must rotate on every use","summary":"...","confidence":"high","tags":["auth","jwt","security"],"evidence_refs":["..."],"routed_to":"spec","routed_id":"
|
|
800
|
+
{"id":"INS-a1b2c3d4","phase":1,"phase_slug":"01-auth","lens":"technical","category":"pattern","title":"JWT refresh tokens must rotate on every use","summary":"...","confidence":"high","tags":["auth","jwt","security"],"evidence_refs":["..."],"routed_to":"spec","routed_id":"coding-conventions.md#INS-a1b2c3d4","source":"retrospective","captured_at":"2026-04-11T10:00:00Z"}
|
|
794
801
|
```
|
|
795
802
|
|
|
796
803
|
### learning-index.json
|
|
@@ -811,7 +818,7 @@ One JSON object per line:
|
|
|
811
818
|
"phase_slug": "01-auth",
|
|
812
819
|
"confidence": "high",
|
|
813
820
|
"routed_to": "spec",
|
|
814
|
-
"routed_id": "
|
|
821
|
+
"routed_id": "coding-conventions.md#INS-a1b2c3d4"
|
|
815
822
|
}
|
|
816
823
|
],
|
|
817
824
|
"_metadata": {
|
package/workflows/review.md
CHANGED
|
@@ -15,10 +15,16 @@ Tiered multi-dimensional code review with parallel agents, severity classificati
|
|
|
15
15
|
|
|
16
16
|
```
|
|
17
17
|
Input: <phase> argument (number or slug)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
|
|
19
|
+
Read .workflow/state.json → state
|
|
20
|
+
artifacts = state.artifacts ?? []
|
|
21
|
+
|
|
22
|
+
IF number: art = artifacts.find(a => a.type === 'execute' && a.phase === number)
|
|
23
|
+
IF slug: art = artifacts.find(a => a.type === 'execute' && a.slug?.includes(slug))
|
|
24
|
+
IF art: PHASE_DIR = ".workflow/" + art.path
|
|
25
|
+
ELSE: ERROR "Phase not found in artifact registry"
|
|
26
|
+
|
|
27
|
+
Validate execution has occurred (tasks_completed > 0 or .task/ exists)
|
|
22
28
|
```
|
|
23
29
|
|
|
24
30
|
---
|
|
@@ -574,7 +580,7 @@ Verdict: {PASS | WARN | BLOCK}
|
|
|
574
580
|
Issues Created: {count}
|
|
575
581
|
|
|
576
582
|
Files:
|
|
577
|
-
{
|
|
583
|
+
{artifact_dir}/review.json
|
|
578
584
|
|
|
579
585
|
Next steps:
|
|
580
586
|
{suggested_next_command}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Spec Remove Workflow
|
|
2
|
+
|
|
3
|
+
Remove a `<spec-entry>` block from a specs container file. Symmetric with `specs-add.md`.
|
|
4
|
+
|
|
5
|
+
Uses `maestro wiki remove-entry` for atomic removal — the entry is deleted from the markdown file and the unified wiki index is auto-updated by WikiIndexer.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- `.workflow/specs/` initialized (at least one specs file exists)
|
|
12
|
+
- `maestro wiki` CLI available
|
|
13
|
+
- Entry ID known (use `maestro wiki list --type spec` to discover)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Argument Shape
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/spec-remove spec-learnings-003 → remove entry 003 from learnings.md
|
|
21
|
+
/spec-remove spec-coding-conventions-001 → remove entry 001 from coding-conventions.md
|
|
22
|
+
/spec-remove spec-quality-rules-005 -y → remove without confirmation
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Flag | Effect |
|
|
26
|
+
|------|--------|
|
|
27
|
+
| `<entry-id>` | Required. The spec sub-node ID to remove |
|
|
28
|
+
| `-y` / `--yes` | Skip confirmation prompt |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Stage 1: Parse Input
|
|
33
|
+
|
|
34
|
+
1. Extract entry ID from arguments
|
|
35
|
+
2. Validate non-empty (E001 if missing)
|
|
36
|
+
3. Check `.workflow/specs/` exists (E002 if not)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Stage 2: Lookup Entry
|
|
41
|
+
|
|
42
|
+
1. Run `maestro wiki get <entry-id> --json` to fetch entry metadata
|
|
43
|
+
2. Validate entry exists (E003 if not found)
|
|
44
|
+
3. Validate entry is a spec sub-node — must have:
|
|
45
|
+
- `type` = "spec"
|
|
46
|
+
- `parent` field set (sub-nodes have parent pointing to container)
|
|
47
|
+
- If not a sub-node, error E004
|
|
48
|
+
4. Extract: title, category, keywords, container file path, body preview
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Stage 3: Confirm Removal
|
|
53
|
+
|
|
54
|
+
Display entry details for user confirmation:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
== Spec Entry to Remove ==
|
|
58
|
+
ID: {entry-id}
|
|
59
|
+
Title: {title}
|
|
60
|
+
Category: {category}
|
|
61
|
+
Keywords: {keywords}
|
|
62
|
+
Container: .workflow/specs/{filename}
|
|
63
|
+
Preview: {first 80 chars of body}
|
|
64
|
+
|
|
65
|
+
Remove this entry? [y/N]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If `-y` flag: skip confirmation.
|
|
69
|
+
If user declines: abort with "Cancelled."
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Stage 4: Remove Entry
|
|
74
|
+
|
|
75
|
+
Execute removal via wiki CLI:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
maestro wiki remove-entry <entry-id>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This command:
|
|
82
|
+
1. Reads the container file
|
|
83
|
+
2. Locates the `<spec-entry>` block by index position
|
|
84
|
+
3. Removes the block (including opening tag, body, closing tag)
|
|
85
|
+
4. Writes the updated file
|
|
86
|
+
5. WikiIndexer auto-updates `.workflow/wiki-index.json`
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Stage 5: Verify & Report
|
|
91
|
+
|
|
92
|
+
1. Verify entry no longer appears: `maestro wiki get <entry-id>` should return not-found
|
|
93
|
+
2. Display confirmation:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
== Entry Removed ==
|
|
97
|
+
ID: {entry-id}
|
|
98
|
+
From: .workflow/specs/{filename}
|
|
99
|
+
Remaining: {remaining entry count} entries in {filename}
|
|
100
|
+
|
|
101
|
+
To verify: maestro wiki list --type spec --category {category}
|
|
102
|
+
To re-add: /spec-add {category} {content}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Error Codes
|
|
108
|
+
|
|
109
|
+
| Code | Severity | Condition | Recovery |
|
|
110
|
+
|------|----------|-----------|----------|
|
|
111
|
+
| E001 | fatal | Entry ID required | Usage: `/spec-remove <entry-id>` |
|
|
112
|
+
| E002 | fatal | `.workflow/specs/` not initialized | Run `/spec-setup` first |
|
|
113
|
+
| E003 | fatal | Entry ID not found in wiki index | Check ID with `maestro wiki list --type spec` |
|
|
114
|
+
| E004 | fatal | Entry is not a spec sub-node | Only `<spec-entry>` sub-nodes can be removed this way |
|
|
115
|
+
| W001 | warning | Container file empty after removal | File kept but has no entries |
|
package/workflows/specs-setup.md
CHANGED
|
@@ -52,28 +52,7 @@ Framework detection (from dependency files):
|
|
|
52
52
|
spring --> Java Spring
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
### Step 3:
|
|
56
|
-
|
|
57
|
-
Output: `.workflow/project-tech.json`
|
|
58
|
-
|
|
59
|
-
```json
|
|
60
|
-
{
|
|
61
|
-
"detected_at": "{ISO timestamp}",
|
|
62
|
-
"languages": ["TypeScript", "..."],
|
|
63
|
-
"frameworks": ["Next.js", "..."],
|
|
64
|
-
"package_manager": "npm | yarn | pnpm | ...",
|
|
65
|
-
"build_system": "tsc | webpack | vite | ...",
|
|
66
|
-
"test_framework": "jest | vitest | pytest | ...",
|
|
67
|
-
"linter": "eslint | prettier | ...",
|
|
68
|
-
"architecture": {
|
|
69
|
-
"type": "monorepo | single-package | ...",
|
|
70
|
-
"entry_points": ["src/index.ts", "..."],
|
|
71
|
-
"key_directories": ["src/", "lib/", "..."]
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Step 4: Detect Code Patterns
|
|
55
|
+
### Step 3: Detect Code Patterns
|
|
77
56
|
|
|
78
57
|
Scan source files for coding conventions:
|
|
79
58
|
|
|
@@ -85,9 +64,9 @@ Formatting: Check for .prettierrc, .editorconfig, eslint config
|
|
|
85
64
|
File naming: kebab-case vs camelCase vs PascalCase for source files
|
|
86
65
|
```
|
|
87
66
|
|
|
88
|
-
### Step
|
|
67
|
+
### Step 4: Generate Core Files (always created)
|
|
89
68
|
|
|
90
|
-
####
|
|
69
|
+
#### 4a: coding-conventions.md
|
|
91
70
|
|
|
92
71
|
Output: `.workflow/specs/coding-conventions.md`
|
|
93
72
|
|
|
@@ -124,7 +103,7 @@ Auto-generated from project analysis. Update manually as patterns evolve.
|
|
|
124
103
|
{empty section for spec-add entries}
|
|
125
104
|
```
|
|
126
105
|
|
|
127
|
-
####
|
|
106
|
+
#### 4b: architecture-constraints.md
|
|
128
107
|
|
|
129
108
|
Output: `.workflow/specs/architecture-constraints.md`
|
|
130
109
|
|
|
@@ -156,7 +135,7 @@ Auto-generated from project structure. Update manually as architecture evolves.
|
|
|
156
135
|
{empty section for spec-add entries}
|
|
157
136
|
```
|
|
158
137
|
|
|
159
|
-
####
|
|
138
|
+
#### 4c: learnings.md
|
|
160
139
|
|
|
161
140
|
Output: `.workflow/specs/learnings.md`
|
|
162
141
|
|
|
@@ -175,9 +154,9 @@ Add entries with: `/spec-add learning <description>`
|
|
|
175
154
|
{empty -- entries added via spec-add}
|
|
176
155
|
```
|
|
177
156
|
|
|
178
|
-
### Step
|
|
157
|
+
### Step 5: Generate Optional Files (when signals detected)
|
|
179
158
|
|
|
180
|
-
####
|
|
159
|
+
#### 5a: quality-rules.md (when linter config or CI detected)
|
|
181
160
|
|
|
182
161
|
Output: `.workflow/specs/quality-rules.md`
|
|
183
162
|
|
|
@@ -193,7 +172,7 @@ category: quality
|
|
|
193
172
|
{empty -- entries added via spec-add}
|
|
194
173
|
```
|
|
195
174
|
|
|
196
|
-
####
|
|
175
|
+
#### 5b: test-conventions.md (when test framework or test files detected)
|
|
197
176
|
|
|
198
177
|
Scan existing test files for conventions (framework, naming, directory structure, patterns).
|
|
199
178
|
|
|
@@ -225,16 +204,15 @@ Auto-generated from project analysis. Update manually as patterns evolve.
|
|
|
225
204
|
{empty section for spec-add entries}
|
|
226
205
|
```
|
|
227
206
|
|
|
228
|
-
####
|
|
207
|
+
#### 5c: debug-notes.md and review-standards.md
|
|
229
208
|
|
|
230
209
|
These are NOT created during setup. They are created on demand when `spec-add debug` or `spec-add review` is first used.
|
|
231
210
|
|
|
232
|
-
### Step
|
|
211
|
+
### Step 6: Summary
|
|
233
212
|
|
|
234
213
|
Display what was created:
|
|
235
214
|
```
|
|
236
215
|
Specs initialized:
|
|
237
|
-
.workflow/project-tech.json -- Tech stack analysis
|
|
238
216
|
.workflow/specs/coding-conventions.md (category: coding)
|
|
239
217
|
.workflow/specs/architecture-constraints.md (category: arch)
|
|
240
218
|
.workflow/specs/learnings.md (category: learning)
|