maestro-flow 0.3.7 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/learn-decompose.md +3 -3
- package/.claude/commands/learn-follow.md +5 -5
- package/.claude/commands/learn-investigate.md +3 -3
- package/.claude/commands/learn-retro.md +303 -0
- package/.claude/commands/learn-second-opinion.md +3 -3
- package/.claude/commands/maestro-analyze.md +123 -99
- package/.claude/commands/maestro-brainstorm.md +2 -2
- package/.claude/commands/maestro-execute.md +137 -96
- package/.claude/commands/maestro-fork.md +111 -0
- package/.claude/commands/maestro-init.md +6 -6
- package/.claude/commands/maestro-learn.md +74 -298
- package/.claude/commands/maestro-merge.md +77 -0
- package/.claude/commands/maestro-milestone-audit.md +72 -60
- package/.claude/commands/maestro-milestone-complete.md +67 -59
- package/.claude/commands/maestro-milestone-release.md +6 -6
- package/.claude/commands/maestro-plan.md +151 -130
- package/.claude/commands/maestro-quick.md +4 -4
- package/.claude/commands/maestro-roadmap.md +5 -5
- package/.claude/commands/maestro-spec-generate.md +5 -5
- package/.claude/commands/maestro-ui-design.md +3 -3
- package/.claude/commands/maestro-verify.md +106 -87
- package/.claude/commands/maestro.md +10 -4
- package/.claude/commands/manage-codebase-rebuild.md +4 -4
- package/.claude/commands/manage-codebase-refresh.md +1 -1
- package/.claude/commands/manage-harvest.md +5 -5
- package/.claude/commands/manage-issue-discover.md +1 -1
- package/.claude/commands/manage-issue-execute.md +6 -6
- package/.claude/commands/manage-issue.md +6 -6
- package/.claude/commands/manage-learn.md +23 -17
- package/.claude/commands/manage-memory-capture.md +15 -17
- package/.claude/commands/manage-memory.md +3 -3
- package/.claude/commands/manage-status.md +24 -24
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +4 -4
- package/.claude/commands/quality-integration-test.md +4 -4
- package/.claude/commands/quality-refactor.md +3 -3
- package/.claude/commands/quality-retrospective.md +7 -7
- package/.claude/commands/quality-review.md +4 -4
- package/.claude/commands/quality-sync.md +3 -3
- package/.claude/commands/quality-test-gen.md +4 -4
- package/.claude/commands/quality-test.md +9 -9
- package/.claude/commands/spec-add.md +2 -2
- package/.claude/commands/spec-load.md +8 -3
- package/.claude/commands/spec-setup.md +5 -5
- package/.claude/commands/wiki-connect.md +3 -3
- package/.claude/commands/wiki-digest.md +30 -5
- package/.codex/skills/maestro-analyze/SKILL.md +52 -14
- package/.codex/skills/maestro-execute/SKILL.md +27 -26
- package/.codex/skills/maestro-milestone-audit/SKILL.md +103 -209
- package/.codex/skills/maestro-milestone-complete/SKILL.md +149 -158
- package/.codex/skills/maestro-plan/SKILL.md +47 -17
- package/.codex/skills/maestro-roadmap/SKILL.md +3 -2
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +2 -2
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +2 -2
- package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +2 -2
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +1 -1
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +1 -1
- package/README.md +115 -227
- package/README.zh-CN.md +169 -187
- package/bin/maestro-mcp.js +1 -1
- package/chains/_intent-map.json +21 -9
- package/chains/_router.json +30 -77
- package/chains/brainstorm-driven.json +17 -6
- package/chains/full-lifecycle.json +22 -23
- package/chains/milestone-close.json +20 -7
- package/chains/milestone-fork-merge.json +50 -0
- package/chains/roadmap-driven.json +17 -6
- package/chains/spec-driven.json +17 -6
- package/dashboard/dist/assets/{ArtifactsPage-A9yzYtpj.js → ArtifactsPage-DZNCi6tn.js} +12 -7
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +49 -0
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +22 -0
- package/dashboard/dist/assets/CollabPage-B4NAHXS2.js +1 -0
- package/dashboard/dist/assets/ExecutionPanel-CFt4LJyq.js +1 -0
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-CCXHaut3.js → MarkdownRenderer-X4af_WNb.js} +1 -1
- package/dashboard/dist/assets/McpPage-BKfCVIyU.js +21 -0
- package/dashboard/dist/assets/OutputPanel-BlBQFJSW.js +1 -0
- package/dashboard/dist/assets/ProblemsPanel-De3DLvoI.js +1 -0
- package/dashboard/dist/assets/{RequirementBoardPage-CEOvppGn.js → RequirementBoardPage-Bf1trzqs.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-DpnbTEqY.js → RequirementPage-Bllxe2XI.js} +10 -5
- package/dashboard/dist/assets/{SpecsPage-CYqOfFkB.js → SpecsPage-9lwxKT27.js} +2 -2
- package/dashboard/dist/assets/{SupervisorPage-B2sZwkq8.js → SupervisorPage-SusdfHFq.js} +1 -1
- package/dashboard/dist/assets/{TeamsPage-CkZdCAVZ.js → TeamsPage-DsuM6OwC.js} +2 -2
- package/dashboard/dist/assets/TreeBrowser-Q12qobZs.js +6 -0
- package/dashboard/dist/assets/WorkflowPage-D_Fzdy3_.js +6 -0
- package/dashboard/dist/assets/{arrow-left-6fktHyjN.js → arrow-left-Bqtb2hle.js} +1 -1
- package/dashboard/dist/assets/{check-Cbxq2l1-.js → check-u6fGOwQO.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Yts3bi8p.js → chevron-right-Csu22t58.js} +1 -1
- package/dashboard/dist/assets/{circle-4Ci4Xolf.js → circle-CMrkbRNg.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-B25g9BTL.js → circle-alert-c3tH1P4z.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-DzO2BlL7.js → circle-check-big-TDSeWstm.js} +1 -1
- package/dashboard/dist/assets/{circle-check-BA5_XqeV.js → circle-check-gYxxSYuH.js} +1 -1
- package/dashboard/dist/assets/{code-zxwuybO8.js → code-CFN2uX9V.js} +1 -1
- package/dashboard/dist/assets/{columns-3-DV4oeCfU.js → columns-3-38xIDlzy.js} +1 -1
- package/dashboard/dist/assets/{download-CXCyQw8M.js → download-DC7KkKyP.js} +1 -1
- package/dashboard/dist/assets/{folder-Bvjj8Vn9.js → folder-CWq_lAnf.js} +1 -1
- package/dashboard/dist/assets/index-DWG-WrzT.js +231 -0
- package/dashboard/dist/assets/{index-BvScJmJM.js → index-Do71weNR.js} +1 -1
- package/dashboard/dist/assets/index-GUNJodSR.css +1 -0
- package/dashboard/dist/assets/{list-Dj4i9N75.js → list-CgIP_2A-.js} +1 -1
- package/dashboard/dist/assets/{minus-DwlFabsT.js → minus-DYoN5UGk.js} +1 -1
- package/dashboard/dist/assets/{pen-line-D7UzECt6.js → pen-line-Bh_WKYHm.js} +1 -1
- package/dashboard/dist/assets/{proxy-B9XRqHD9.js → proxy-BKxDAKTj.js} +1 -1
- package/dashboard/dist/assets/{search-BQbBTIYl.js → search-SieXnOgr.js} +1 -1
- package/dashboard/dist/assets/{shallow-Clb1Lyd_.js → shallow-Bme1JY57.js} +1 -1
- package/dashboard/dist/assets/{table-BqxCXid2.js → table-llyEtj-7.js} +1 -1
- package/dashboard/dist/assets/terminal-BB3Xfuv5.js +6 -0
- package/dashboard/dist/assets/{trash-2-6rN9B-EQ.js → trash-2-C8f4vFFM.js} +1 -1
- package/dashboard/dist/assets/{zap-DxUhG-gk.js → zap-4uwlzVm0.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -4
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +8 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +20 -10
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js +3 -4
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js +4 -4
- package/dashboard/dist-server/dashboard/src/server/agents/tools/issue-mcp-server.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +4 -3
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js +20 -7
- package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js +4 -4
- package/dashboard/dist-server/dashboard/src/server/execution/wave-executor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/git.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/routes/git.js +79 -0
- package/dashboard/dist-server/dashboard/src/server/routes/git.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js +14 -14
- package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/linear.js +7 -5
- package/dashboard/dist-server/dashboard/src/server/routes/linear.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/workspace.js +43 -0
- package/dashboard/dist-server/dashboard/src/server/routes/workspace.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/state-manager.js +186 -25
- package/dashboard/dist-server/dashboard/src/server/state/state-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js +24 -2
- package/dashboard/dist-server/dashboard/src/server/utils/issue-store.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +4 -7
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.test.js +5 -5
- package/dashboard/dist-server/dashboard/src/shared/constants.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js +4 -4
- package/dashboard/dist-server/dashboard/src/shared/issue-types.test.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.js +7 -1
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/package.json +59 -59
- package/dist/src/cli.js +3 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/{team.d.ts → collab.d.ts} +2 -2
- package/dist/src/commands/collab.d.ts.map +1 -0
- package/dist/src/commands/{team.js → collab.js} +391 -24
- package/dist/src/commands/collab.js.map +1 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +7 -1
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/msg.d.ts.map +1 -1
- package/dist/src/commands/msg.js +4 -3
- package/dist/src/commands/msg.js.map +1 -1
- package/dist/src/hooks/team-monitor.d.ts.map +1 -1
- package/dist/src/hooks/team-monitor.js +16 -0
- package/dist/src/hooks/team-monitor.js.map +1 -1
- package/dist/src/tools/collab-adapter.d.ts +85 -0
- package/dist/src/tools/collab-adapter.d.ts.map +1 -0
- package/dist/src/tools/collab-adapter.js +320 -0
- package/dist/src/tools/collab-adapter.js.map +1 -0
- package/dist/src/tools/namespace-guard.d.ts +2 -0
- package/dist/src/tools/namespace-guard.d.ts.map +1 -1
- package/dist/src/tools/namespace-guard.js +12 -0
- package/dist/src/tools/namespace-guard.js.map +1 -1
- package/dist/src/tools/phase-gate-evaluator.d.ts +45 -0
- package/dist/src/tools/phase-gate-evaluator.d.ts.map +1 -0
- package/dist/src/tools/phase-gate-evaluator.js +42 -0
- package/dist/src/tools/phase-gate-evaluator.js.map +1 -0
- package/dist/src/tools/team-members.d.ts +18 -0
- package/dist/src/tools/team-members.d.ts.map +1 -1
- package/dist/src/tools/team-members.js +50 -0
- package/dist/src/tools/team-members.js.map +1 -1
- package/dist/src/tools/team-tasks.d.ts +120 -0
- package/dist/src/tools/team-tasks.d.ts.map +1 -0
- package/dist/src/tools/team-tasks.js +365 -0
- package/dist/src/tools/team-tasks.js.map +1 -0
- package/dist/src/tools/transition-recorder.d.ts +3 -0
- package/dist/src/tools/transition-recorder.d.ts.map +1 -1
- package/dist/src/tools/transition-recorder.js +52 -1
- package/dist/src/tools/transition-recorder.js.map +1 -1
- package/dist/src/utils/get-version.d.ts.map +1 -1
- package/dist/src/utils/get-version.js +15 -4
- package/dist/src/utils/get-version.js.map +1 -1
- package/package.json +1 -1
- package/templates/config.json +7 -0
- package/templates/worktree-scope.json +10 -0
- package/templates/worktrees.json +27 -0
- package/workflows/analyze.md +86 -36
- package/workflows/brainstorm.md +17 -37
- package/workflows/delegate-usage.md +39 -41
- package/workflows/execute.md +247 -61
- package/workflows/fork.md +309 -0
- package/workflows/init.md +11 -2
- package/workflows/issue.md +66 -7
- package/workflows/maestro-coordinate.codex.md +1 -1
- package/workflows/maestro-coordinate.md +24 -17
- package/workflows/maestro.md +54 -37
- package/workflows/memory.md +2 -1
- package/workflows/merge.md +285 -0
- package/workflows/milestone-audit.md +89 -70
- package/workflows/milestone-complete.md +89 -156
- package/workflows/plan.md +131 -19
- package/workflows/retrospective.md +5 -5
- package/workflows/roadmap.md +12 -4
- package/workflows/spec-generate.md +9 -0
- package/workflows/status.md +76 -27
- package/workflows/ui-design.md +14 -12
- package/workflows/verify.md +44 -8
- package/.claude/commands/learn-retro-decision.md +0 -198
- package/.claude/commands/learn-retro-git.md +0 -160
- package/.claude/commands/maestro-phase-add.md +0 -63
- package/.claude/commands/maestro-phase-transition.md +0 -75
- package/.codex/skills/maestro-phase-add/SKILL.md +0 -154
- package/.codex/skills/maestro-phase-transition/SKILL.md +0 -173
- package/chains/singles/phase-add.json +0 -31
- package/chains/singles/phase-transition.json +0 -23
- package/dashboard/dist/assets/ChatInput-PuCvZZ3y.js +0 -67
- package/dashboard/dist/assets/ChatPage-v19GURYH.js +0 -8
- package/dashboard/dist/assets/CollabPage-I5k_mCbG.js +0 -1
- package/dashboard/dist/assets/KanbanPage-PDDBv5-9.js +0 -16
- package/dashboard/dist/assets/McpPage-CiqXpCHg.js +0 -16
- package/dashboard/dist/assets/TreeBrowser-0VIMWclo.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-Csm23wUS.js +0 -6
- package/dashboard/dist/assets/git-branch-DL8p9kVC.js +0 -6
- package/dashboard/dist/assets/index-11DuhKhc.js +0 -231
- package/dashboard/dist/assets/index-D2Mtyw7I.css +0 -1
- package/dashboard/dist/assets/wrench-BScEJFqC.js +0 -11
- package/dist/src/commands/team.d.ts.map +0 -1
- package/dist/src/commands/team.js.map +0 -1
- package/workflows/phase-add.md +0 -252
- package/workflows/phase-transition.md +0 -399
package/workflows/analyze.md
CHANGED
|
@@ -41,29 +41,60 @@ Quick mode (-q):
|
|
|
41
41
|
## Arguments
|
|
42
42
|
|
|
43
43
|
```
|
|
44
|
-
$ARGUMENTS: "
|
|
44
|
+
$ARGUMENTS: "[phase|topic] [-y] [-c] [-q]"
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
<
|
|
46
|
+
(no args) -- Milestone-wide analysis (requires init + roadmap)
|
|
47
|
+
<phase> -- Phase number (phase-scoped, requires init + roadmap)
|
|
48
|
+
<topic> -- Topic text (adhoc if milestone exists, standalone if not)
|
|
48
49
|
-y / --yes -- Auto mode, skip interactive scoping, auto-deepen
|
|
49
50
|
-c / --continue -- Resume from existing session
|
|
50
51
|
-q / --quick -- Quick mode, skip exploration + scoring, go straight to decision extraction
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
##
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
## Scope Routing
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
// Worktree scope check
|
|
58
|
+
IF file_exists(".workflow/worktree-scope.json"):
|
|
59
|
+
scope = read(".workflow/worktree-scope.json")
|
|
60
|
+
IF $ARGUMENTS matches /^\d+$/ AND parseInt($ARGUMENTS) NOT IN scope.owned_phases:
|
|
61
|
+
ERROR "Phase {$ARGUMENTS} not owned by this worktree. Owned: {scope.owned_phases}"
|
|
62
|
+
EXIT
|
|
63
|
+
|
|
64
|
+
// Auto-bootstrap state.json if missing
|
|
65
|
+
IF NOT file_exists(".workflow/state.json"):
|
|
66
|
+
mkdir -p .workflow/scratch/
|
|
67
|
+
Write minimal state.json: { project: null, status: "active", current_milestone: null,
|
|
68
|
+
current_task_id: null, milestones: [], artifacts: [], last_updated: now() }
|
|
69
|
+
|
|
70
|
+
// Scope determination
|
|
71
|
+
IF $ARGUMENTS is empty:
|
|
72
|
+
IF state.json.current_milestone is non-null AND roadmap.md exists:
|
|
73
|
+
→ scope = "milestone"
|
|
74
|
+
→ milestone_slug = slugify(current_milestone name)
|
|
75
|
+
→ Set OUTPUT_DIR = .workflow/scratch/analyze-{milestone_slug}-{date}/
|
|
76
|
+
ELSE:
|
|
77
|
+
→ ERROR E001 "No args and no roadmap — provide topic text or create roadmap first"
|
|
78
|
+
|
|
79
|
+
ELSE IF $ARGUMENTS matches /^\d+$/:
|
|
80
|
+
IF state.json.current_milestone is non-null AND roadmap.md exists:
|
|
81
|
+
→ scope = "phase"
|
|
82
|
+
→ phase_num = parsed number
|
|
83
|
+
→ phase_slug = resolve from roadmap.md
|
|
84
|
+
→ Set OUTPUT_DIR = .workflow/scratch/analyze-{phase_slug}-{date}/
|
|
85
|
+
ELSE:
|
|
86
|
+
→ ERROR "Phase number requires init + roadmap"
|
|
87
|
+
|
|
88
|
+
ELSE (text argument):
|
|
89
|
+
→ topic_slug = slugify(text, max 40 chars)
|
|
90
|
+
IF state.json.current_milestone is non-null:
|
|
91
|
+
→ scope = "adhoc"
|
|
92
|
+
ELSE:
|
|
93
|
+
→ scope = "standalone"
|
|
94
|
+
→ Set OUTPUT_DIR = .workflow/scratch/analyze-{topic_slug}-{date}/
|
|
95
|
+
|
|
96
|
+
// Create output directory
|
|
97
|
+
mkdir -p {OUTPUT_DIR}
|
|
67
98
|
```
|
|
68
99
|
|
|
69
100
|
## Output Structure
|
|
@@ -89,31 +120,23 @@ Parse $ARGUMENTS to determine mode and flags:
|
|
|
89
120
|
- `-c` present: locate existing session folder (discussion.md exists), resume from last round
|
|
90
121
|
- `-y` present: set AUTO_MODE=true
|
|
91
122
|
- `-q` present: set QUICK_MODE=true (skip Steps 2-7, jump to Step 8: Decision Extraction)
|
|
92
|
-
- Number (e.g., "3") = phase
|
|
93
|
-
- Text (e.g., "microservices vs monolith") =
|
|
94
|
-
- Missing/empty = error E001
|
|
123
|
+
- Number (e.g., "3") = phase scope: resolve phase slug from roadmap, output to scratch/analyze-{phase-slug}-{date}/
|
|
124
|
+
- Text (e.g., "microservices vs monolith") = adhoc/standalone scope: output to scratch/analyze-{slug}-{date}/
|
|
125
|
+
- Missing/empty = milestone scope (if roadmap exists) or error E001
|
|
95
126
|
|
|
96
127
|
**Session initialization:**
|
|
97
128
|
- Session ID: `ANL-{slug}-{YYYY-MM-DD}`
|
|
98
|
-
-
|
|
99
|
-
- Scratch mode output: `.workflow/scratch/analyze-{slug}-{date}/`
|
|
129
|
+
- Output: `OUTPUT_DIR` (always under `.workflow/scratch/`)
|
|
100
130
|
|
|
101
|
-
**Load prior context** (phase
|
|
131
|
+
**Load prior context** (milestone/phase scope):
|
|
102
132
|
1. Read `.workflow/project.md` — project vision, constraints, Validated requirements (already shipped), Active requirements (current scope)
|
|
103
133
|
2. Read `.workflow/roadmap.md` — phase structure and dependencies
|
|
104
|
-
3. Read
|
|
105
|
-
4.
|
|
106
|
-
5.
|
|
107
|
-
6.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
9. Read prior phases' `context.md` files — skip already-decided areas
|
|
111
|
-
10. Read existing `context.md` in this phase (if exists, for continuation)
|
|
112
|
-
11. Load project specs: `specs_content = maestro spec load --category planning`
|
|
113
|
-
Ensures analysis decisions don't conflict with existing architecture constraints.
|
|
114
|
-
12. Read `.workflow/state.json` → `accumulated_context` (key_decisions, deferred items, blockers)
|
|
115
|
-
|
|
116
|
-
**Load prior context** (scratch mode):
|
|
134
|
+
3. Read `.workflow/state.json` → `current_milestone`, `artifacts[]`, `accumulated_context` (key_decisions, deferred items, blockers)
|
|
135
|
+
4. Find prior analyze artifacts from `state.json.artifacts[]` where type=analyze and same milestone → load their `context.md` to skip already-decided areas
|
|
136
|
+
5. Find brainstorm artifacts from `state.json.artifacts[]` where type=brainstorm and same milestone → load `guidance-specification.md` if exists
|
|
137
|
+
6. Load project specs: `specs_content = maestro spec load --category planning`
|
|
138
|
+
|
|
139
|
+
**Load prior context** (adhoc/standalone scope):
|
|
117
140
|
1. Read `.workflow/project.md` (if exists) — project vision, Validated requirements, Active requirements, Key Decisions
|
|
118
141
|
2. Read `.workflow/state.json` (if exists) → `accumulated_context` (key_decisions, deferred, blockers)
|
|
119
142
|
3. Load project specs: `specs_content = maestro spec load --category planning`
|
|
@@ -571,6 +594,33 @@ IF deferred_items.length > 0:
|
|
|
571
594
|
Print: "Created {deferred_items.length} deferred issues for tracking"
|
|
572
595
|
```
|
|
573
596
|
|
|
597
|
+
### Step 8.8: Register Artifact
|
|
598
|
+
|
|
599
|
+
```
|
|
600
|
+
// Register in state.json artifact registry
|
|
601
|
+
Read .workflow/state.json
|
|
602
|
+
next_id = max(artifacts.filter(a => a.type == "analyze").map(a => parseInt(a.id.replace("ANL-","")))) + 1
|
|
603
|
+
// If no analyze artifacts exist: next_id = 1
|
|
604
|
+
|
|
605
|
+
artifact = {
|
|
606
|
+
id: "ANL-{next_id padded to 3}",
|
|
607
|
+
type: "analyze",
|
|
608
|
+
milestone: state.json.current_milestone, // null if standalone
|
|
609
|
+
phase: phase_num, // null if milestone/adhoc/standalone
|
|
610
|
+
scope: scope, // "milestone"|"phase"|"adhoc"|"standalone"
|
|
611
|
+
path: OUTPUT_DIR relative to .workflow/, // e.g. "scratch/analyze-auth-2026-04-20"
|
|
612
|
+
status: "completed",
|
|
613
|
+
depends_on: null,
|
|
614
|
+
harvested: false,
|
|
615
|
+
created_at: session_start_time,
|
|
616
|
+
completed_at: now()
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
state.json.artifacts.push(artifact)
|
|
620
|
+
state.json.last_updated = now()
|
|
621
|
+
Write state.json (atomic: write tmp + rename)
|
|
622
|
+
```
|
|
623
|
+
|
|
574
624
|
### Step 9: Report & Next Step
|
|
575
625
|
|
|
576
626
|
Display summary:
|
package/workflows/brainstorm.md
CHANGED
|
@@ -47,8 +47,8 @@ Phase 3: Single Role Analysis → Detection → Context → Agent → Validation
|
|
|
47
47
|
## Input
|
|
48
48
|
|
|
49
49
|
- `$ARGUMENTS`: topic text (auto mode) or role name (single role mode)
|
|
50
|
-
-
|
|
51
|
-
-
|
|
50
|
+
- All output goes to `.workflow/scratch/brainstorm-{slug}-{date}/`
|
|
51
|
+
- Registers artifact (type=brainstorm) in state.json on completion
|
|
52
52
|
|
|
53
53
|
### Parameters
|
|
54
54
|
|
|
@@ -80,32 +80,21 @@ Phase 3: Single Role Analysis → Detection → Context → Agent → Validation
|
|
|
80
80
|
|
|
81
81
|
### Directory Structure
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
.workflow/phases/{NN}-{slug}/
|
|
86
|
-
├── brainstorm.md # Legacy simple output (if no session)
|
|
87
|
-
├── index.json # Updated timestamps
|
|
88
|
-
└── .brainstorming/ # Full brainstorm session
|
|
89
|
-
├── guidance-specification.md # Phase 2 output
|
|
90
|
-
├── feature-index.json # Phase 4 output
|
|
91
|
-
├── synthesis-changelog.md # Phase 4 audit trail
|
|
92
|
-
├── feature-specs/ # Phase 4 feature specs
|
|
93
|
-
│ ├── F-001-{slug}.md
|
|
94
|
-
│ └── F-00N-{slug}.md
|
|
95
|
-
├── {role}/ # Phase 3 role analyses (immutable)
|
|
96
|
-
│ ├── {role}-context.md
|
|
97
|
-
│ ├── analysis.md
|
|
98
|
-
│ ├── analysis-cross-cutting.md
|
|
99
|
-
│ └── analysis-F-{id}-{slug}.md
|
|
100
|
-
└── synthesis-specification.md # Non-feature mode fallback
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Scratch mode**:
|
|
83
|
+
All brainstorm output goes to scratch:
|
|
104
84
|
```
|
|
105
85
|
.workflow/scratch/brainstorm-{slug}-{date}/
|
|
106
|
-
├──
|
|
107
|
-
|
|
108
|
-
|
|
86
|
+
├── guidance-specification.md # Phase 2 output
|
|
87
|
+
├── feature-index.json # Phase 4 output
|
|
88
|
+
├── synthesis-changelog.md # Phase 4 audit trail
|
|
89
|
+
├── feature-specs/ # Phase 4 feature specs
|
|
90
|
+
│ ├── F-001-{slug}.md
|
|
91
|
+
│ └── F-00N-{slug}.md
|
|
92
|
+
├── {role}/ # Phase 3 role analyses (immutable)
|
|
93
|
+
│ ├── {role}-context.md
|
|
94
|
+
│ ├── analysis.md
|
|
95
|
+
│ ├── analysis-cross-cutting.md
|
|
96
|
+
│ └── analysis-F-{id}-{slug}.md
|
|
97
|
+
└── synthesis-specification.md # Non-feature mode fallback
|
|
109
98
|
```
|
|
110
99
|
|
|
111
100
|
---
|
|
@@ -138,17 +127,8 @@ Parse $ARGUMENTS to determine execution mode:
|
|
|
138
127
|
|
|
139
128
|
**Output Directory Resolution**:
|
|
140
129
|
- Phase mode (number): `.workflow/phases/{NN}-{slug}/.brainstorming/`
|
|
141
|
-
-
|
|
142
|
-
- Existing session: use session
|
|
143
|
-
|
|
144
|
-
**Archive previous brainstorming session** (Phase mode only, skip if `--session` or `--update`):
|
|
145
|
-
```
|
|
146
|
-
PARENT_DIR = parent of output directory (e.g., .workflow/phases/{NN}-{slug}/)
|
|
147
|
-
IF directory exists "${PARENT_DIR}/.brainstorming" AND NOT --session AND NOT --update:
|
|
148
|
-
mkdir -p "${PARENT_DIR}/.history"
|
|
149
|
-
TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
|
|
150
|
-
mv "${PARENT_DIR}/.brainstorming" "${PARENT_DIR}/.history/.brainstorming-${TIMESTAMP}"
|
|
151
|
-
```
|
|
130
|
+
- All output: `.workflow/scratch/brainstorm-{slug}-{date}/`
|
|
131
|
+
- Existing session: use existing session directory
|
|
152
132
|
|
|
153
133
|
---
|
|
154
134
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Delegate Execution Specification
|
|
2
2
|
|
|
3
3
|
<purpose>
|
|
4
|
-
Unified reference for `maestro delegate` —
|
|
4
|
+
Unified reference for `maestro delegate` — synchronous task delegation with broker-managed lifecycle, message injection, and MCP notifications. Superset of `maestro cli` with cancellation and message chaining.
|
|
5
5
|
</purpose>
|
|
6
6
|
|
|
7
7
|
**References**: `~/.maestro/cli-tools.json` (tool config), `~/.maestro/templates/cli/` (protocol + prompt templates)
|
|
@@ -30,9 +30,7 @@ maestro delegate "<PROMPT>" [options]
|
|
|
30
30
|
| `--id <id>` | Execution ID | Auto: `{prefix}-{HHmmss}-{rand4}` |
|
|
31
31
|
| `--resume [id]` | Resume previous session (last if no id) | — |
|
|
32
32
|
| `--includeDirs <dirs>` | Additional directories (comma-separated) | — |
|
|
33
|
-
| `--session <id>` | MCP session ID for completion notifications | Auto-detected |
|
|
34
33
|
| `--backend <type>` | Adapter backend: `direct` or `terminal` (tmux/wezterm) | `direct` |
|
|
35
|
-
| `--async` | Run in background and return immediately | foreground |
|
|
36
34
|
|
|
37
35
|
### Mode Definition (Authoritative)
|
|
38
36
|
|
|
@@ -154,7 +152,7 @@ MODE: analysis
|
|
|
154
152
|
CONTEXT: @src/auth/**/* @src/middleware/auth.ts | Memory: Using bcrypt + JWT
|
|
155
153
|
EXPECTED: Severity matrix, file:line references, remediation snippets, priority ranking
|
|
156
154
|
CONSTRAINTS: Focus on authentication | Ignore test files
|
|
157
|
-
" --to gemini --mode analysis --rule analysis-assess-security-risks --cd "src/auth"
|
|
155
|
+
" --to gemini --mode analysis --rule analysis-assess-security-risks --cd "src/auth"
|
|
158
156
|
```
|
|
159
157
|
</context>
|
|
160
158
|
|
|
@@ -164,6 +162,24 @@ CONSTRAINTS: Focus on authentication | Ignore test files
|
|
|
164
162
|
|
|
165
163
|
<execution>
|
|
166
164
|
|
|
165
|
+
### Calling Convention
|
|
166
|
+
|
|
167
|
+
`maestro delegate` runs synchronously — it blocks until the delegate completes. To avoid blocking the conversation, **always** use `run_in_background: true` on the Bash tool call, then stop output immediately and wait for the background completion callback.
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
Bash({
|
|
171
|
+
command: "maestro delegate \"<PROMPT>\" --to gemini --mode analysis",
|
|
172
|
+
run_in_background: true
|
|
173
|
+
})
|
|
174
|
+
// STOP — do not output anything further
|
|
175
|
+
// Wait for Bash background completion callback to receive results
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Rules:**
|
|
179
|
+
- **Never** use foreground Bash for delegate calls — it blocks the conversation for the entire execution duration
|
|
180
|
+
- After the `Bash(run_in_background: true)` call, **stop immediately** — no follow-up text, no polling, no `delegate status` checks
|
|
181
|
+
- When the background callback arrives, retrieve output with `maestro delegate output <id>`
|
|
182
|
+
|
|
167
183
|
### Execution ID
|
|
168
184
|
|
|
169
185
|
ID prefix: gemini→`gem`, qwen→`qwn`, codex→`cdx`, claude→`cld`, opencode→`opc`
|
|
@@ -173,7 +189,7 @@ Format: `{prefix}-{HHmmss}-{rand4}` (e.g. `gem-143022-a7f2`)
|
|
|
173
189
|
Output to stderr: `[MAESTRO_EXEC_ID=<id>]`
|
|
174
190
|
|
|
175
191
|
```bash
|
|
176
|
-
maestro delegate "analyze code" --to gemini
|
|
192
|
+
maestro delegate "analyze code" --to gemini # auto-ID: gem-143022-a7f2
|
|
177
193
|
maestro delegate "fix bug" --to gemini --mode write --id my-task-1 # custom ID
|
|
178
194
|
```
|
|
179
195
|
|
|
@@ -246,14 +262,6 @@ queued → running → completed
|
|
|
246
262
|
| `inject` | Routes to running worker stdin; non-interactive adapters auto cancel + relaunch | Supplementary context, course correction |
|
|
247
263
|
| `after_complete` | Queues message; relaunches delegate with queued message on completion | Chained tasks, post-processing |
|
|
248
264
|
|
|
249
|
-
### Notification Channels
|
|
250
|
-
|
|
251
|
-
Delegate completion notifies the caller through dual channels:
|
|
252
|
-
|
|
253
|
-
1. **MCP channel** (primary) — push notification with structured meta (exec_id, event_type, status)
|
|
254
|
-
2. **Hook fallback** — JSONL file read by `delegate-monitor` PostToolUse hook
|
|
255
|
-
|
|
256
|
-
Throttling: `status_update` at 10s, `snapshot` at 15s.
|
|
257
265
|
</execution>
|
|
258
266
|
|
|
259
267
|
---
|
|
@@ -275,11 +283,10 @@ Proactively invoke `maestro delegate` when these conditions are met — no user
|
|
|
275
283
|
### Principles
|
|
276
284
|
|
|
277
285
|
- Default `--mode analysis` (safe, read-only)
|
|
278
|
-
-
|
|
286
|
+
- Always `Bash(run_in_background: true)` — stop immediately, wait for callback
|
|
279
287
|
- Tool fallback: `gemini` → `qwen` → `codex`
|
|
280
288
|
- Rule suggestions are guidelines — choose the best fit
|
|
281
289
|
- Use `inject` for supplementary context mid-execution; `after_complete` for chained multi-step tasks
|
|
282
|
-
- Check `delegate status` for snapshot preview instead of polling output
|
|
283
290
|
</execution>
|
|
284
291
|
|
|
285
292
|
---
|
|
@@ -288,20 +295,15 @@ Proactively invoke `maestro delegate` when these conditions are met — no user
|
|
|
288
295
|
|
|
289
296
|
<execution>
|
|
290
297
|
|
|
291
|
-
###
|
|
292
|
-
|
|
293
|
-
```bash
|
|
294
|
-
maestro delegate "analyze auth module" --to gemini --async
|
|
295
|
-
# → [MAESTRO_EXEC_ID=gem-143022-a7f2]
|
|
298
|
+
### Basic Usage
|
|
296
299
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
maestro delegate output
|
|
304
|
-
# → full analysis result
|
|
300
|
+
```
|
|
301
|
+
Bash({
|
|
302
|
+
command: 'maestro delegate "analyze auth module" --to gemini',
|
|
303
|
+
run_in_background: true
|
|
304
|
+
})
|
|
305
|
+
// → STOP, wait for callback
|
|
306
|
+
// → on callback: maestro delegate output <id>
|
|
305
307
|
```
|
|
306
308
|
|
|
307
309
|
### Inject Supplementary Context
|
|
@@ -311,20 +313,16 @@ maestro delegate message gem-143022-a7f2 "Also check src/utils/sanitize.ts"
|
|
|
311
313
|
# → accepted: true, delivery: inject
|
|
312
314
|
```
|
|
313
315
|
|
|
314
|
-
### Chain: Analyze →
|
|
316
|
+
### Chain: Analyze → Fix
|
|
315
317
|
|
|
316
|
-
```bash
|
|
317
|
-
maestro delegate "find SQL injection vulnerabilities" --to gemini --async
|
|
318
|
-
maestro delegate message gem-143022-a7f2 "Fix all critical vulnerabilities" --delivery after_complete
|
|
319
|
-
# → queued, auto-relaunches after analysis completes
|
|
320
318
|
```
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
319
|
+
Bash({
|
|
320
|
+
command: 'maestro delegate "find SQL injection vulnerabilities" --to gemini',
|
|
321
|
+
run_in_background: true
|
|
322
|
+
})
|
|
323
|
+
// → STOP, wait for callback
|
|
324
|
+
// → on callback: chain next step
|
|
325
|
+
maestro delegate message gem-143022-a7f2 "Fix all critical vulnerabilities" --delivery after_complete
|
|
326
|
+
// → queued, relaunches after analysis completes
|
|
329
327
|
```
|
|
330
328
|
</execution>
|