maestro-flow 0.3.9 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/workflow-collab-planner.md +1 -1
- package/.claude/agents/workflow-executor.md +1 -1
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -1
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +1 -1
- package/.claude/commands/maestro-analyze.md +46 -3
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-execute.md +14 -0
- package/.claude/commands/maestro-plan.md +16 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue-discover.md +2 -2
- package/.claude/commands/manage-issue.md +5 -5
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +335 -0
- package/.codex/skills/maestro-analyze/SKILL.md +84 -75
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +233 -0
- package/.codex/skills/maestro-coordinate/SKILL.md +167 -278
- package/.codex/skills/maestro-execute/SKILL.md +435 -438
- package/.codex/skills/maestro-fork/SKILL.md +68 -0
- package/.codex/skills/maestro-init/SKILL.md +171 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +62 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +66 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +34 -31
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +93 -105
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +93 -104
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +14 -11
- package/README.zh-CN.md +14 -11
- package/chains/issue-lifecycle.json +13 -13
- package/chains/singles/issue-analyze.json +3 -3
- package/chains/singles/issue-execute.json +3 -3
- package/chains/singles/issue-plan.json +3 -3
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.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/issue-types.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
- package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +21 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +92 -12
- package/dashboard/dist-server/src/hooks/constants.js +151 -16
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +5 -0
- package/dist/src/commands/collab.d.ts +1 -34
- package/dist/src/commands/collab.d.ts.map +1 -1
- package/dist/src/commands/collab.js +8 -76
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +5 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +115 -10
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +3 -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 +5 -1
- 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 +7 -3
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
- package/dist/src/hooks/constants.d.ts +92 -12
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +151 -16
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +2 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +2 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
- package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
- package/dist/src/hooks/guards/preflight-guard.js +95 -0
- package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/index.d.ts +1 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/preflight-core.d.ts +37 -0
- package/dist/src/hooks/preflight-core.d.ts.map +1 -0
- package/dist/src/hooks/preflight-core.js +86 -0
- package/dist/src/hooks/preflight-core.js.map +1 -0
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +8 -17
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +269 -112
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/i18n/locales/en.d.ts.map +1 -1
- package/dist/src/i18n/locales/en.js +5 -0
- package/dist/src/i18n/locales/en.js.map +1 -1
- package/dist/src/i18n/locales/zh.d.ts.map +1 -1
- package/dist/src/i18n/locales/zh.js +5 -0
- package/dist/src/i18n/locales/zh.js.map +1 -1
- package/dist/src/i18n/types.d.ts +5 -0
- package/dist/src/i18n/types.d.ts.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/collab-adapter.d.ts +17 -0
- package/dist/src/tools/collab-adapter.d.ts.map +1 -1
- package/dist/src/tools/collab-adapter.js +138 -0
- package/dist/src/tools/collab-adapter.js.map +1 -1
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts +24 -0
- package/dist/src/tools/merge-validator.d.ts.map +1 -0
- package/dist/src/tools/merge-validator.js +220 -0
- package/dist/src/tools/merge-validator.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/dist/src/types/index.d.ts +5 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/package.json +2 -1
- package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
- package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
- package/templates/search-tools.md +1 -1
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +471 -471
- package/workflows/cli-tools-usage.md +44 -27
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/delegate-usage.md +3 -3
- package/workflows/execute.md +1 -1
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +343 -343
- package/workflows/issue-analyze.md +6 -2
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue-execute.md +6 -3
- package/workflows/issue-plan.md +5 -2
- package/workflows/maestro-coordinate.codex.md +281 -470
- package/workflows/maestro-coordinate.md +14 -14
- package/workflows/maestro-link-coordinate.md +2 -2
- package/workflows/maestro.codex.md +710 -0
- package/workflows/maestro.md +10 -11
- package/workflows/map.md +111 -111
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +1 -1
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/.claude/commands/manage-issue-analyze.md +0 -62
- package/.claude/commands/manage-issue-execute.md +0 -73
- package/.claude/commands/manage-issue-plan.md +0 -62
- package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
- package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
- package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
package/workflows/maestro.md
CHANGED
|
@@ -531,9 +531,9 @@ const chainMap = {
|
|
|
531
531
|
'memory_capture': [{ cmd: 'manage-memory-capture', args: '"{description}"' }],
|
|
532
532
|
'issue': [{ cmd: 'manage-issue', args: '"{description}"' }],
|
|
533
533
|
'issue_discover': [{ cmd: 'manage-issue-discover', args: '"{description}"' }],
|
|
534
|
-
'issue_analyze': [{ cmd: '
|
|
535
|
-
'issue_plan': [{ cmd: '
|
|
536
|
-
'issue_execute': [{ cmd: '
|
|
534
|
+
'issue_analyze': [{ cmd: 'maestro-analyze', args: '--gaps "{description}"' }],
|
|
535
|
+
'issue_plan': [{ cmd: 'maestro-plan', args: '--gaps' }],
|
|
536
|
+
'issue_execute': [{ cmd: 'maestro-execute', args: '' }],
|
|
537
537
|
'memory': [{ cmd: 'manage-memory', args: '"{description}"' }],
|
|
538
538
|
'quick': [{ cmd: 'maestro-quick', args: '"{description}"' }],
|
|
539
539
|
'fork': [{ cmd: 'maestro-fork', args: '-m {milestone_num}' }],
|
|
@@ -614,15 +614,15 @@ const chainMap = {
|
|
|
614
614
|
],
|
|
615
615
|
// Issue lifecycle chains (with quality gates)
|
|
616
616
|
'issue-full': [
|
|
617
|
-
{ cmd: '
|
|
618
|
-
{ cmd: '
|
|
619
|
-
{ cmd: '
|
|
617
|
+
{ cmd: 'maestro-analyze', args: '--gaps {issue_id}' },
|
|
618
|
+
{ cmd: 'maestro-plan', args: '--gaps' },
|
|
619
|
+
{ cmd: 'maestro-execute', args: '' },
|
|
620
620
|
{ cmd: 'quality-review', args: '--scope {affected_files}' },
|
|
621
621
|
{ cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }
|
|
622
622
|
],
|
|
623
623
|
'issue-quick': [
|
|
624
|
-
{ cmd: '
|
|
625
|
-
{ cmd: '
|
|
624
|
+
{ cmd: 'maestro-plan', args: '--gaps' },
|
|
625
|
+
{ cmd: 'maestro-execute', args: '' },
|
|
626
626
|
{ cmd: 'manage-issue', args: 'close {issue_id} --resolution fixed' }
|
|
627
627
|
]
|
|
628
628
|
};
|
|
@@ -669,7 +669,6 @@ function resolvePhase(intent_analysis, project_state) {
|
|
|
669
669
|
|
|
670
670
|
// 5. Chain doesn't need phase (init, status, memory, issue, etc.)
|
|
671
671
|
const noPhaseCommands = ['manage-status', 'manage-issue', 'manage-issue-discover',
|
|
672
|
-
'manage-issue-analyze', 'manage-issue-plan', 'manage-issue-execute',
|
|
673
672
|
'maestro-init', 'maestro-spec-generate', 'maestro-fork', 'maestro-merge',
|
|
674
673
|
'maestro-roadmap', 'spec-setup', 'manage-memory', 'manage-memory-capture', 'manage-learn',
|
|
675
674
|
'manage-codebase-rebuild', 'manage-codebase-refresh', 'maestro-milestone-audit',
|
|
@@ -939,8 +938,8 @@ Shows how structured extraction routes common inputs — especially cases where
|
|
|
939
938
|
| `"这个问题需要看看"` | `{analyze, bug}` | analyze | maestro-analyze |
|
|
940
939
|
| `"创建一个 issue 跟踪"` | `{manage, issue}` | issue | manage-issue |
|
|
941
940
|
| `"discover issues"` | `{explore, issue}` | issue_discover | manage-issue-discover |
|
|
942
|
-
| `"analyze issue ISS-xxx"` | `{analyze, issue, ISS-xxx}` | issue_analyze |
|
|
943
|
-
| `"plan issue ISS-xxx"` | `{plan, issue, ISS-xxx}` | issue_plan |
|
|
941
|
+
| `"analyze issue ISS-xxx"` | `{analyze, issue, ISS-xxx}` | issue_analyze | maestro-analyze --gaps |
|
|
942
|
+
| `"plan issue ISS-xxx"` | `{plan, issue, ISS-xxx}` | issue_plan | maestro-plan --gaps |
|
|
944
943
|
| `"brainstorm notification system"` | `{explore, feature}` | brainstorm | brainstorm-driven |
|
|
945
944
|
| `"spec generate user auth"` | `{create, spec}` | spec_generate | spec-driven |
|
|
946
945
|
| `"ui design landing page"` | `{create, ui}` | ui_design | ui-design-driven |
|
package/workflows/map.md
CHANGED
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
# Workflow: map
|
|
2
|
-
|
|
3
|
-
Codebase scanning with parallel mapper agents.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Step 1: Pre-check
|
|
8
|
-
|
|
9
|
-
1. Check if `.workflow/research/` already exists with documents:
|
|
10
|
-
- If documents exist and are recent (< 7 days):
|
|
11
|
-
- Ask user: "Codebase map exists. Refresh or skip?"
|
|
12
|
-
- "refresh" → continue to Step 2 (overwrite)
|
|
13
|
-
- "skip" → exit with route suggestions
|
|
14
|
-
- If documents are stale or missing → continue to Step 2
|
|
15
|
-
|
|
16
|
-
2. Create `.workflow/research/` directory if it does not exist.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Step 2: Spawn Parallel Mapper Agents
|
|
21
|
-
|
|
22
|
-
Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
Agent 1: tech focus
|
|
26
|
-
Scan: package.json, go.mod, requirements.txt, build files, dependencies
|
|
27
|
-
Output: .workflow/research/STACK.md
|
|
28
|
-
Content: languages, frameworks, build tools, key dependencies, versions
|
|
29
|
-
|
|
30
|
-
Agent 2: arch focus
|
|
31
|
-
Scan: directory structure, module boundaries, entry points, data flow
|
|
32
|
-
Output: .workflow/research/ARCHITECTURE.md
|
|
33
|
-
Content: architecture style, layer separation, module graph, key abstractions
|
|
34
|
-
|
|
35
|
-
Agent 3: features focus
|
|
36
|
-
Scan: routes, handlers, components, services, models
|
|
37
|
-
Output: .workflow/research/FEATURES.md
|
|
38
|
-
Content: feature inventory, feature-to-file mapping, completeness assessment
|
|
39
|
-
|
|
40
|
-
Agent 4: concerns focus
|
|
41
|
-
Scan: error handling, logging, tests, config, security, performance
|
|
42
|
-
Output: .workflow/research/PITFALLS.md
|
|
43
|
-
Content: tech debt, missing tests, security gaps, performance concerns, known issues
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
|
|
47
|
-
|
|
48
|
-
**Load project specs for mapper context:**
|
|
49
|
-
```
|
|
50
|
-
specs_content = maestro spec load --category
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Agent spawn pattern:**
|
|
54
|
-
```
|
|
55
|
-
For each agent (1-4) in parallel:
|
|
56
|
-
Agent({
|
|
57
|
-
subagent_type: "workflow-codebase-mapper",
|
|
58
|
-
prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
|
|
59
|
-
Project specs for reference: ${specs_content}
|
|
60
|
-
Write directly to the file. Return only a confirmation with line count.",
|
|
61
|
-
run_in_background: false
|
|
62
|
-
})
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## Step 3: Verification
|
|
68
|
-
|
|
69
|
-
After all 4 agents complete:
|
|
70
|
-
|
|
71
|
-
1. Verify all documents exist with content:
|
|
72
|
-
```
|
|
73
|
-
.workflow/research/STACK.md — exists, >10 lines
|
|
74
|
-
.workflow/research/ARCHITECTURE.md — exists, >10 lines
|
|
75
|
-
.workflow/research/FEATURES.md — exists, >10 lines
|
|
76
|
-
.workflow/research/PITFALLS.md — exists, >10 lines
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
2. If any document is missing or empty:
|
|
80
|
-
- Log which agent failed
|
|
81
|
-
- Re-spawn that specific agent (max 1 retry per agent)
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## Step 4: Summary
|
|
86
|
-
|
|
87
|
-
1. Create `.workflow/research/SUMMARY.md`:
|
|
88
|
-
- Read all 4 documents
|
|
89
|
-
- Write a consolidated executive summary covering:
|
|
90
|
-
- Tech stack overview (from STACK.md)
|
|
91
|
-
- Architecture highlights (from ARCHITECTURE.md)
|
|
92
|
-
- Feature inventory count (from FEATURES.md)
|
|
93
|
-
- Top 3 concerns (from PITFALLS.md)
|
|
94
|
-
- Recommendations for next steps
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Step 5: Commit and Route
|
|
99
|
-
|
|
100
|
-
1. If git repo: commit `.workflow/research/` with message `"chore: map codebase"`
|
|
101
|
-
|
|
102
|
-
2. Display summary:
|
|
103
|
-
```
|
|
104
|
-
Codebase mapped successfully.
|
|
105
|
-
Documents: 5 files in .workflow/research/
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
3. Route next steps based on project state:
|
|
109
|
-
- No `.workflow/state.json` → "Run `/workflow:init` to initialize project"
|
|
110
|
-
- Has state, no roadmap → "Run `/workflow:init` to create roadmap"
|
|
111
|
-
- Has roadmap → "Run `/workflow:plan {next_phase}` to start planning"
|
|
1
|
+
# Workflow: map
|
|
2
|
+
|
|
3
|
+
Codebase scanning with parallel mapper agents.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Pre-check
|
|
8
|
+
|
|
9
|
+
1. Check if `.workflow/research/` already exists with documents:
|
|
10
|
+
- If documents exist and are recent (< 7 days):
|
|
11
|
+
- Ask user: "Codebase map exists. Refresh or skip?"
|
|
12
|
+
- "refresh" → continue to Step 2 (overwrite)
|
|
13
|
+
- "skip" → exit with route suggestions
|
|
14
|
+
- If documents are stale or missing → continue to Step 2
|
|
15
|
+
|
|
16
|
+
2. Create `.workflow/research/` directory if it does not exist.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Step 2: Spawn Parallel Mapper Agents
|
|
21
|
+
|
|
22
|
+
Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Agent 1: tech focus
|
|
26
|
+
Scan: package.json, go.mod, requirements.txt, build files, dependencies
|
|
27
|
+
Output: .workflow/research/STACK.md
|
|
28
|
+
Content: languages, frameworks, build tools, key dependencies, versions
|
|
29
|
+
|
|
30
|
+
Agent 2: arch focus
|
|
31
|
+
Scan: directory structure, module boundaries, entry points, data flow
|
|
32
|
+
Output: .workflow/research/ARCHITECTURE.md
|
|
33
|
+
Content: architecture style, layer separation, module graph, key abstractions
|
|
34
|
+
|
|
35
|
+
Agent 3: features focus
|
|
36
|
+
Scan: routes, handlers, components, services, models
|
|
37
|
+
Output: .workflow/research/FEATURES.md
|
|
38
|
+
Content: feature inventory, feature-to-file mapping, completeness assessment
|
|
39
|
+
|
|
40
|
+
Agent 4: concerns focus
|
|
41
|
+
Scan: error handling, logging, tests, config, security, performance
|
|
42
|
+
Output: .workflow/research/PITFALLS.md
|
|
43
|
+
Content: tech debt, missing tests, security gaps, performance concerns, known issues
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
|
|
47
|
+
|
|
48
|
+
**Load project specs for mapper context:**
|
|
49
|
+
```
|
|
50
|
+
specs_content = maestro spec load --category arch
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Agent spawn pattern:**
|
|
54
|
+
```
|
|
55
|
+
For each agent (1-4) in parallel:
|
|
56
|
+
Agent({
|
|
57
|
+
subagent_type: "workflow-codebase-mapper",
|
|
58
|
+
prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
|
|
59
|
+
Project specs for reference: ${specs_content}
|
|
60
|
+
Write directly to the file. Return only a confirmation with line count.",
|
|
61
|
+
run_in_background: false
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 3: Verification
|
|
68
|
+
|
|
69
|
+
After all 4 agents complete:
|
|
70
|
+
|
|
71
|
+
1. Verify all documents exist with content:
|
|
72
|
+
```
|
|
73
|
+
.workflow/research/STACK.md — exists, >10 lines
|
|
74
|
+
.workflow/research/ARCHITECTURE.md — exists, >10 lines
|
|
75
|
+
.workflow/research/FEATURES.md — exists, >10 lines
|
|
76
|
+
.workflow/research/PITFALLS.md — exists, >10 lines
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
2. If any document is missing or empty:
|
|
80
|
+
- Log which agent failed
|
|
81
|
+
- Re-spawn that specific agent (max 1 retry per agent)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Step 4: Summary
|
|
86
|
+
|
|
87
|
+
1. Create `.workflow/research/SUMMARY.md`:
|
|
88
|
+
- Read all 4 documents
|
|
89
|
+
- Write a consolidated executive summary covering:
|
|
90
|
+
- Tech stack overview (from STACK.md)
|
|
91
|
+
- Architecture highlights (from ARCHITECTURE.md)
|
|
92
|
+
- Feature inventory count (from FEATURES.md)
|
|
93
|
+
- Top 3 concerns (from PITFALLS.md)
|
|
94
|
+
- Recommendations for next steps
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Step 5: Commit and Route
|
|
99
|
+
|
|
100
|
+
1. If git repo: commit `.workflow/research/` with message `"chore: map codebase"`
|
|
101
|
+
|
|
102
|
+
2. Display summary:
|
|
103
|
+
```
|
|
104
|
+
Codebase mapped successfully.
|
|
105
|
+
Documents: 5 files in .workflow/research/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
3. Route next steps based on project state:
|
|
109
|
+
- No `.workflow/state.json` → "Run `/workflow:init` to initialize project"
|
|
110
|
+
- Has state, no roadmap → "Run `/workflow:init` to create roadmap"
|
|
111
|
+
- Has roadmap → "Run `/workflow:plan {next_phase}` to start planning"
|
|
@@ -1,176 +1,176 @@
|
|
|
1
|
-
# Workflow: milestone-complete
|
|
2
|
-
|
|
3
|
-
Archive completed milestone, move artifacts to history, and prepare for next.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Step 1: Validation
|
|
8
|
-
|
|
9
|
-
1. Read `.workflow/state.json`:
|
|
10
|
-
- Determine target milestone (from $ARGUMENTS or current_milestone)
|
|
11
|
-
- If no milestone: ERROR E001
|
|
12
|
-
|
|
13
|
-
2. Check milestone audit status:
|
|
14
|
-
- Read `.workflow/milestones/{milestone}/audit-report.md` if exists
|
|
15
|
-
- If no audit report:
|
|
16
|
-
- WARN: "No audit report found. Run `/maestro-milestone-audit` first."
|
|
17
|
-
- Ask user: "Complete without audit?"
|
|
18
|
-
- If NO → exit
|
|
19
|
-
- If verdict is FAIL: ERROR E002
|
|
20
|
-
|
|
21
|
-
3. Verify all artifacts completed:
|
|
22
|
-
```
|
|
23
|
-
milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
|
|
24
|
-
incomplete = milestone_artifacts.filter(a => a.status != "completed")
|
|
25
|
-
IF incomplete.length > 0:
|
|
26
|
-
ERROR E003: "Incomplete artifacts: {list ids and statuses}"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Step 2: Create Milestone Archive
|
|
32
|
-
|
|
33
|
-
1. Create archive directory:
|
|
34
|
-
```
|
|
35
|
-
mkdir -p .workflow/milestones/{milestone}/artifacts/
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
2. Snapshot roadmap:
|
|
39
|
-
```
|
|
40
|
-
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
3. Archive scratch directories:
|
|
44
|
-
```
|
|
45
|
-
FOR each artifact IN milestone_artifacts:
|
|
46
|
-
IF directory exists at .workflow/{artifact.path}:
|
|
47
|
-
cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Step 2.5: Load Existing Learnings
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
existing_learnings = maestro spec load --category
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Check existing entries to avoid duplicates when appending in Step 3.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Step 3: Extract Learnings
|
|
63
|
-
|
|
64
|
-
1. For each execute artifact, read `.summaries/` and `reflection-log.md` if exists:
|
|
65
|
-
- Extract strategy adjustments
|
|
66
|
-
- Extract patterns discovered
|
|
67
|
-
- Extract pitfalls encountered
|
|
68
|
-
|
|
69
|
-
2. Aggregate learnings and append to `.workflow/specs/learnings.md`:
|
|
70
|
-
```
|
|
71
|
-
For each strategy adjustment:
|
|
72
|
-
### [YYYY-MM-DD HH:mm] decision: {summary}
|
|
73
|
-
{content}
|
|
74
|
-
Milestone: {milestone} | Source: milestone-complete
|
|
75
|
-
|
|
76
|
-
For each pattern:
|
|
77
|
-
### [YYYY-MM-DD HH:mm] pattern: {summary}
|
|
78
|
-
{content}
|
|
79
|
-
Milestone: {milestone} | Source: milestone-complete
|
|
80
|
-
|
|
81
|
-
For each pitfall:
|
|
82
|
-
### [YYYY-MM-DD HH:mm] bug: {summary}
|
|
83
|
-
{content}
|
|
84
|
-
Milestone: {milestone} | Source: milestone-complete
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Step 4: Update State
|
|
90
|
-
|
|
91
|
-
1. Archive artifact entries to milestone_history:
|
|
92
|
-
```json
|
|
93
|
-
{
|
|
94
|
-
"milestone_history": [
|
|
95
|
-
{
|
|
96
|
-
"id": "{milestone}",
|
|
97
|
-
"name": "{milestone_name}",
|
|
98
|
-
"status": "completed",
|
|
99
|
-
"completed_at": "{now}",
|
|
100
|
-
"archive_path": "milestones/{milestone}/",
|
|
101
|
-
"archived_artifacts": [ ...all milestone artifacts entries... ]
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
2. Clear artifacts array (remove milestone-affiliated entries):
|
|
108
|
-
```
|
|
109
|
-
state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
3. Advance to next milestone:
|
|
113
|
-
```
|
|
114
|
-
next_milestone = state.json.milestones.find(m => m.status == "pending")
|
|
115
|
-
IF next_milestone:
|
|
116
|
-
state.json.current_milestone = next_milestone.id
|
|
117
|
-
next_milestone.status = "active"
|
|
118
|
-
ELSE:
|
|
119
|
-
state.json.current_milestone = null
|
|
120
|
-
state.json.status = "completed"
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
4. Write state.json (atomic)
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## Step 5: Clean Scratch
|
|
128
|
-
|
|
129
|
-
Remove archived scratch directories:
|
|
130
|
-
```
|
|
131
|
-
FOR each artifact IN archived_artifacts:
|
|
132
|
-
IF directory exists at .workflow/{artifact.path}:
|
|
133
|
-
rm -rf .workflow/{artifact.path}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## Step 6: Generate Summary
|
|
139
|
-
|
|
140
|
-
Write `.workflow/milestones/{milestone}/summary.md`:
|
|
141
|
-
```markdown
|
|
142
|
-
# Milestone: {milestone} — {name}
|
|
143
|
-
|
|
144
|
-
**Completed**: {date}
|
|
145
|
-
**Artifacts**: {count} (analyze: {n}, plan: {n}, execute: {n}, verify: {n})
|
|
146
|
-
|
|
147
|
-
## Key Outcomes
|
|
148
|
-
{extracted from audit report + learnings}
|
|
149
|
-
|
|
150
|
-
## Learnings
|
|
151
|
-
{top patterns and pitfalls}
|
|
152
|
-
|
|
153
|
-
## Next Milestone
|
|
154
|
-
{next milestone name and first phase, or "Project complete"}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Update `.workflow/project.md` Context section with milestone summary.
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Step 7: Report
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
=== MILESTONE COMPLETE ===
|
|
165
|
-
Milestone: {milestone} ({name})
|
|
166
|
-
Artifacts: {count} archived
|
|
167
|
-
Learnings: {learnings_count} extracted
|
|
168
|
-
|
|
169
|
-
Archive: .workflow/milestones/{milestone}/
|
|
170
|
-
Next: {next_milestone or "Project complete"}
|
|
171
|
-
|
|
172
|
-
Next steps:
|
|
173
|
-
/maestro-milestone-release -- Cut a release
|
|
174
|
-
/maestro-analyze -- Start next milestone
|
|
175
|
-
/manage-status -- View project state
|
|
176
|
-
```
|
|
1
|
+
# Workflow: milestone-complete
|
|
2
|
+
|
|
3
|
+
Archive completed milestone, move artifacts to history, and prepare for next.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Validation
|
|
8
|
+
|
|
9
|
+
1. Read `.workflow/state.json`:
|
|
10
|
+
- Determine target milestone (from $ARGUMENTS or current_milestone)
|
|
11
|
+
- If no milestone: ERROR E001
|
|
12
|
+
|
|
13
|
+
2. Check milestone audit status:
|
|
14
|
+
- Read `.workflow/milestones/{milestone}/audit-report.md` if exists
|
|
15
|
+
- If no audit report:
|
|
16
|
+
- WARN: "No audit report found. Run `/maestro-milestone-audit` first."
|
|
17
|
+
- Ask user: "Complete without audit?"
|
|
18
|
+
- If NO → exit
|
|
19
|
+
- If verdict is FAIL: ERROR E002
|
|
20
|
+
|
|
21
|
+
3. Verify all artifacts completed:
|
|
22
|
+
```
|
|
23
|
+
milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
|
|
24
|
+
incomplete = milestone_artifacts.filter(a => a.status != "completed")
|
|
25
|
+
IF incomplete.length > 0:
|
|
26
|
+
ERROR E003: "Incomplete artifacts: {list ids and statuses}"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 2: Create Milestone Archive
|
|
32
|
+
|
|
33
|
+
1. Create archive directory:
|
|
34
|
+
```
|
|
35
|
+
mkdir -p .workflow/milestones/{milestone}/artifacts/
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
2. Snapshot roadmap:
|
|
39
|
+
```
|
|
40
|
+
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
3. Archive scratch directories:
|
|
44
|
+
```
|
|
45
|
+
FOR each artifact IN milestone_artifacts:
|
|
46
|
+
IF directory exists at .workflow/{artifact.path}:
|
|
47
|
+
cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Step 2.5: Load Existing Learnings
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
existing_learnings = maestro spec load --category learning
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Check existing entries to avoid duplicates when appending in Step 3.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 3: Extract Learnings
|
|
63
|
+
|
|
64
|
+
1. For each execute artifact, read `.summaries/` and `reflection-log.md` if exists:
|
|
65
|
+
- Extract strategy adjustments
|
|
66
|
+
- Extract patterns discovered
|
|
67
|
+
- Extract pitfalls encountered
|
|
68
|
+
|
|
69
|
+
2. Aggregate learnings and append to `.workflow/specs/learnings.md`:
|
|
70
|
+
```
|
|
71
|
+
For each strategy adjustment:
|
|
72
|
+
### [YYYY-MM-DD HH:mm] decision: {summary}
|
|
73
|
+
{content}
|
|
74
|
+
Milestone: {milestone} | Source: milestone-complete
|
|
75
|
+
|
|
76
|
+
For each pattern:
|
|
77
|
+
### [YYYY-MM-DD HH:mm] pattern: {summary}
|
|
78
|
+
{content}
|
|
79
|
+
Milestone: {milestone} | Source: milestone-complete
|
|
80
|
+
|
|
81
|
+
For each pitfall:
|
|
82
|
+
### [YYYY-MM-DD HH:mm] bug: {summary}
|
|
83
|
+
{content}
|
|
84
|
+
Milestone: {milestone} | Source: milestone-complete
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Step 4: Update State
|
|
90
|
+
|
|
91
|
+
1. Archive artifact entries to milestone_history:
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"milestone_history": [
|
|
95
|
+
{
|
|
96
|
+
"id": "{milestone}",
|
|
97
|
+
"name": "{milestone_name}",
|
|
98
|
+
"status": "completed",
|
|
99
|
+
"completed_at": "{now}",
|
|
100
|
+
"archive_path": "milestones/{milestone}/",
|
|
101
|
+
"archived_artifacts": [ ...all milestone artifacts entries... ]
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
2. Clear artifacts array (remove milestone-affiliated entries):
|
|
108
|
+
```
|
|
109
|
+
state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
3. Advance to next milestone:
|
|
113
|
+
```
|
|
114
|
+
next_milestone = state.json.milestones.find(m => m.status == "pending")
|
|
115
|
+
IF next_milestone:
|
|
116
|
+
state.json.current_milestone = next_milestone.id
|
|
117
|
+
next_milestone.status = "active"
|
|
118
|
+
ELSE:
|
|
119
|
+
state.json.current_milestone = null
|
|
120
|
+
state.json.status = "completed"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
4. Write state.json (atomic)
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Step 5: Clean Scratch
|
|
128
|
+
|
|
129
|
+
Remove archived scratch directories:
|
|
130
|
+
```
|
|
131
|
+
FOR each artifact IN archived_artifacts:
|
|
132
|
+
IF directory exists at .workflow/{artifact.path}:
|
|
133
|
+
rm -rf .workflow/{artifact.path}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 6: Generate Summary
|
|
139
|
+
|
|
140
|
+
Write `.workflow/milestones/{milestone}/summary.md`:
|
|
141
|
+
```markdown
|
|
142
|
+
# Milestone: {milestone} — {name}
|
|
143
|
+
|
|
144
|
+
**Completed**: {date}
|
|
145
|
+
**Artifacts**: {count} (analyze: {n}, plan: {n}, execute: {n}, verify: {n})
|
|
146
|
+
|
|
147
|
+
## Key Outcomes
|
|
148
|
+
{extracted from audit report + learnings}
|
|
149
|
+
|
|
150
|
+
## Learnings
|
|
151
|
+
{top patterns and pitfalls}
|
|
152
|
+
|
|
153
|
+
## Next Milestone
|
|
154
|
+
{next milestone name and first phase, or "Project complete"}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Update `.workflow/project.md` Context section with milestone summary.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Step 7: Report
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
=== MILESTONE COMPLETE ===
|
|
165
|
+
Milestone: {milestone} ({name})
|
|
166
|
+
Artifacts: {count} archived
|
|
167
|
+
Learnings: {learnings_count} extracted
|
|
168
|
+
|
|
169
|
+
Archive: .workflow/milestones/{milestone}/
|
|
170
|
+
Next: {next_milestone or "Project complete"}
|
|
171
|
+
|
|
172
|
+
Next steps:
|
|
173
|
+
/maestro-milestone-release -- Cut a release
|
|
174
|
+
/maestro-analyze -- Start next milestone
|
|
175
|
+
/manage-status -- View project state
|
|
176
|
+
```
|
package/workflows/plan.md
CHANGED
|
@@ -100,7 +100,7 @@ mkdir -p {OUTPUT_DIR}/.task/
|
|
|
100
100
|
|
|
101
101
|
3. **Load project specs**
|
|
102
102
|
```
|
|
103
|
-
specs_content = maestro spec load --category
|
|
103
|
+
specs_content = maestro spec load --category arch
|
|
104
104
|
```
|
|
105
105
|
Pass to planner agent as project constraints context.
|
|
106
106
|
|