maestro-flow 0.4.13 → 0.4.15

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.
Files changed (55) hide show
  1. package/.agents/skills/maestro/SKILL.md +11 -31
  2. package/.agents/skills/maestro-brainstorm/SKILL.md +2 -2
  3. package/.agents/skills/maestro-ralph/SKILL.md +58 -51
  4. package/.agents/skills/maestro-ralph-execute/SKILL.md +48 -56
  5. package/.agents/skills/maestro-verify/SKILL.md +1 -1
  6. package/.agy/skills/maestro/SKILL.md +11 -31
  7. package/.agy/skills/maestro-brainstorm/SKILL.md +2 -2
  8. package/.agy/skills/maestro-ralph/SKILL.md +58 -51
  9. package/.agy/skills/maestro-ralph-execute/SKILL.md +48 -56
  10. package/.agy/skills/maestro-verify/SKILL.md +1 -1
  11. package/.claude/commands/maestro-brainstorm.md +2 -2
  12. package/.claude/commands/maestro-ralph-execute.md +48 -56
  13. package/.claude/commands/maestro-ralph.md +58 -51
  14. package/.claude/commands/maestro-verify.md +1 -1
  15. package/.claude/commands/maestro.md +11 -31
  16. package/dist/src/commands/hooks.d.ts +30 -3
  17. package/dist/src/commands/hooks.d.ts.map +1 -1
  18. package/dist/src/commands/hooks.js +138 -11
  19. package/dist/src/commands/hooks.js.map +1 -1
  20. package/dist/src/commands/install-backend.d.ts +49 -4
  21. package/dist/src/commands/install-backend.d.ts.map +1 -1
  22. package/dist/src/commands/install-backend.js +163 -53
  23. package/dist/src/commands/install-backend.js.map +1 -1
  24. package/dist/src/commands/install.d.ts.map +1 -1
  25. package/dist/src/commands/install.js +45 -10
  26. package/dist/src/commands/install.js.map +1 -1
  27. package/dist/src/commands/uninstall.d.ts.map +1 -1
  28. package/dist/src/commands/uninstall.js +25 -38
  29. package/dist/src/commands/uninstall.js.map +1 -1
  30. package/dist/src/core/manifest.d.ts +43 -0
  31. package/dist/src/core/manifest.d.ts.map +1 -1
  32. package/dist/src/core/manifest.js +37 -1
  33. package/dist/src/core/manifest.js.map +1 -1
  34. package/dist/src/tui/install-ui/ExecutionView.d.ts.map +1 -1
  35. package/dist/src/tui/install-ui/ExecutionView.js +13 -5
  36. package/dist/src/tui/install-ui/ExecutionView.js.map +1 -1
  37. package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
  38. package/dist/src/tui/install-ui/InstallExecution.js +87 -45
  39. package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
  40. package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -1
  41. package/dist/src/tui/uninstall-ui/UninstallFlow.js +12 -28
  42. package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -1
  43. package/package.json +1 -1
  44. package/workflows/analyze.md +6 -6
  45. package/workflows/brainstorm.md +5 -5
  46. package/workflows/debug.md +4 -4
  47. package/workflows/harvest.md +1 -1
  48. package/workflows/init.md +1 -1
  49. package/workflows/plan.md +1 -1
  50. package/workflows/quick.md +4 -4
  51. package/workflows/refactor.md +3 -3
  52. package/workflows/retrospective.md +3 -3
  53. package/workflows/ui-design.md +1 -1
  54. package/workflows/ui-style.md +1 -1
  55. package/workflows/verify.md +1 -1
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: maestro
3
3
  description: Auto-route intent to optimal command chain
4
- argument-hint: "<intent> [-y] [-c] [--dry-run] [--exec auto|cli|internal] [--tool <name>] [--super]"
4
+ argument-hint: "<intent> [-y] [-c] [--dry-run] [--super]"
5
5
  allowed-tools:
6
6
  - read_file
7
7
  - write_file
@@ -42,18 +42,16 @@ $ARGUMENTS — user intent text, or special keywords.
42
42
  - `-y` / `--yes` — Auto mode: skip clarification, skip confirmation, auto-skip on errors
43
43
  - `-c` / `--continue` — Resume previous session
44
44
  - `--dry-run` — Show chain without executing
45
- - `--exec <mode>` — `auto` (default), `cli`, `internal`
46
- - `--tool <name>` — CLI tool for delegates (default: claude)
47
45
  - `--super` — Read and follow `maestro-super.md`
48
46
  </context>
49
47
 
50
48
  <invariants>
51
49
  1. **All chains dispatch via maestro-ralph-execute** — maestro never executes steps directly
52
50
  2. **Session before execution** — status.json created before any step runs
53
- 3. **Auto flags only to supporting commands** unlisted commands execute as-is
51
+ 3. **Auto flag pass-through** 仅当用户传入 `-y` 时透传 `-y` skill args
54
52
  4. **Decomposition contract shared with maestro-ralph** — broad/lifecycle intents run S_DECOMPOSE producing the SAME additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`)。Reference maestro-ralph `A_DECOMPOSE_TASKS`
55
53
  5. **status.json 唯一真源** — 不生成 `goal-checklist.md` 或外部清单
56
- 6. **Default step type = internal** — chain 内每个 step 解析 `command_scope`/`command_path`(全局优先 `~/.claude/commands/{name}.md`,fallback 项目)
54
+ 6. **执行步骤统一 Read .md 内联** — chain 内每个执行 step 解析 `command_scope`/`command_path`(全局优先 `~/.claude/commands/{name}.md`,fallback 项目),由 ralph-execute `read_file({command_path})` 内联执行;CLI 仅在 decision 节点做只读分析
57
55
  7. **Topology awareness** — chain catalog 含 brainstorm / blueprint / analyze-macro(text) / analyze(numeric phase) / roadmap / plan(三路径) / execute / verify / ...;scope_verdict 路由由 ralph 在 `post-analyze-scope` 决定
58
56
  8. **D-007 milestone 反查** — 数字 phase 步骤的 `milestone_id` 由 `state.json.milestones[].phase_slugs` 反查得出
59
57
  9. **每个 step 必须 `completion_confirmed: true`** — 基于 `--- COMPLETION STATUS ---` 的 `STATUS: DONE`
@@ -143,7 +141,7 @@ S_FALLBACK:
143
141
  - 数字 phase 上下文 → `analyze {phase}` → `plan {phase}` → `execute {phase}` → `verify {phase}` → quality pipeline
144
142
  - 已有 analyze artifact 想直达执行 → `plan --from analyze:{ANL_ID}` → execute → verify
145
143
  - 已有 blueprint artifact → `plan --from blueprint:{BLP_ID}` → execute → verify
146
- 4. 每个 step 默认 `type: "internal"`;解析 `command_scope` + `command_path`(全局优先 fallback 项目);写入 `step.stage` / `step.scope` / `step.source_artifact_ref`(如 `--from` 注入时)
144
+ 4. 执行 step 解析 `command_scope` + `command_path`(全局优先 fallback 项目);写入 `step.stage` / `step.scope` / `step.source_artifact_ref`(如 `--from` 注入时)。decision 节点通过 `step.decision` 字段标识
147
145
 
148
146
  ### A_CLARIFY
149
147
 
@@ -159,9 +157,9 @@ S_FALLBACK:
159
157
  3. 派生 `execution_criteria` + `task_decomposition`(每个 sub-goal 含 `done_when` + `evidence` + `lifecycle` + `completion_confirmed: false`)
160
158
  4. **status.json 唯一真源**:写入 `boundary_contract` / `execution_criteria` / `task_decomposition`;不生成 markdown 清单
161
159
  5. 在最后一个 evidence-producing stage(verify/review/test)之后、`milestone-complete` 之前追加 `decision:post-goal-audit`。ralph-execute 在该节点按需动态生长 `steps[]`
162
- 6. **输出 `/goal` 绑定提示词:**
160
+ 6. **输出 `/goal` 绑定提示词(不阻塞,用户可在执行过程中随时输入):**
163
161
  ```
164
- 📋 任务分解完成。复制下面一行设定目标,会话在子目标全部达成前不停:
162
+ 📋 任务分解完成。可随时复制下面一行设定目标(执行过程中输入即可):
165
163
 
166
164
  /goal 目标达成条件: {session_dir}/status.json 中 task_decomposition[*].status == "done" 且 task_decomposition[*].completion_confirmed == true 且 steps[*].completion_confirmed == true。未达成时:阅读 {session_dir}/status.json 取得 execution_criteria / boundary_contract / task_decomposition / steps 作为行动手册,调用 /maestro-ralph continue 推进;严禁手动执行 skill 或越界修改 status.json.boundary_contract.out_of_scope。
167
165
  ```
@@ -175,13 +173,14 @@ S_FALLBACK:
175
173
  "session_id", "source": "maestro", "intent", "task_type", "chain_name",
176
174
  "phase", "phase_is_new": false, "milestone": "",
177
175
  "scope_verdict": null, "analyze_macro_id": null, "blueprint_id": null,
178
- "auto_mode": false, "exec_mode": "auto", "cli_tool": "claude",
176
+ "auto_mode": false, "cli_tool": "claude", // cli_tool: decision 节点 delegate 评估时的 CLI 工具
179
177
  "context": { "scratch_dir": null, "plan_dir": null, "analysis_dir": null,
180
178
  "brainstorm_dir": null, "blueprint_dir": null, "issue_id": null },
181
179
  "steps": [{
182
- "index": 0, "type": "internal|external|decision",
180
+ "index": 0,
183
181
  "skill": "", "args": "",
184
182
  "stage": "", "scope": null,
183
+ "decision": null, // 非 null → decision 节点;null → 执行节点
185
184
  "command_scope": "global|project|missing|null",
186
185
  "command_path": "~/.claude/commands/{name}.md | .claude/commands/{name}.md | null",
187
186
  "milestone_id": null, "source_artifact_ref": null,
@@ -205,25 +204,6 @@ S_FALLBACK:
205
204
 
206
205
  <appendix>
207
206
 
208
- ### Auto-Yes Flag Map
209
-
210
- | Command | Auto Flag | Effect |
211
- |---------|-----------|--------|
212
- | maestro-init | `-y` | Skip interactive questioning |
213
- | maestro-analyze | `-y` | Skip scoping, auto-deepen |
214
- | maestro-brainstorm | `-y` | Skip questions, use defaults |
215
- | maestro-blueprint | `-y` | Skip interview, use recommended defaults |
216
- | maestro-roadmap | `-y` | Skip questions (create/revise/review) |
217
- | maestro-impeccable | `-y` | Auto-select design variant + skip confirmations |
218
- | maestro-plan | `-y` | Skip confirmations and clarification |
219
- | maestro-execute | `-y` | Skip confirmations, blocked auto-continue |
220
- | quality-auto-test | `-y` | Skip plan confirmation |
221
- | quality-test | `-y --auto-fix` | Auto-trigger gap-fix loop |
222
- | quality-retrospective | `-y` | Accept all routing recommendations |
223
- | maestro-milestone-complete | `-y` | Skip knowledge promotion |
224
-
225
- Unlisted commands have no auto flags.
226
-
227
207
  ### Error Codes
228
208
 
229
209
  | Code | Severity | Description | Recovery |
@@ -248,8 +228,8 @@ Unlisted commands have no auto flags.
248
228
  - [ ] status.json 唯一真源;无 markdown 清单;post-goal-audit 节点在 decomposed 时追加;/goal 提示词以 status.json 为判据
249
229
  - [ ] Chain selected and confirmed (or auto-confirmed)
250
230
  - [ ] Session dir created with status.json before execution; decomposition fields additive-only
251
- - [ ] 每个 step 含 `command_scope` + `command_path` + `completion_confirmed` 字段
252
- - [ ] Auto flags propagated to supporting commands only
231
+ - [ ] 执行 step 含 `command_scope` + `command_path` + `completion_confirmed` 字段;decision step 通过 `step.decision` 字段标识
232
+ - [ ] 用户传入 `-y` 时透传到 skill args
253
233
  - [ ] All chains dispatched via maestro-ralph-execute
254
234
  - [ ] Low-complexity intents routed to maestro-quick
255
235
  - [ ] (super) Requirements validated before roadmap
@@ -14,7 +14,7 @@ allowed-tools:
14
14
  <!-- Open-standard mirror generated by scripts/build-agents-standard.mjs — do not edit; re-run after editing .claude/ source. -->
15
15
 
16
16
  <purpose>
17
- Unified brainstorming combining interactive framework generation, multi-role parallel analysis, cross-role review, and resolution writeback. Two modes: Auto (full pipeline: guidance-specification → parallel {role}/ multi-file analysis → cross-role-reviewer compares Decision Digests for conflicts/gaps/synergies → user-confirmed resolutions patched into role files + logged in guidance §12) and Single Role (individual role analysis for an existing session). Outputs structured artifacts in `.workflow/scratch/brainstorm-{slug}-{date}/` ready for downstream planning (roadmap / analyze / blueprint consume `guidance-specification.md`).
17
+ Unified brainstorming combining interactive framework generation, multi-role parallel analysis, cross-role review, and resolution writeback. Two modes: Auto (full pipeline: guidance-specification → parallel {role}/ multi-file analysis → cross-role-reviewer compares Decision Digests for conflicts/gaps/synergies → user-confirmed resolutions patched into role files + logged in guidance §12) and Single Role (individual role analysis for an existing session). Outputs structured artifacts in `.workflow/scratch/{YYYYMMDD}-brainstorm-{slug}/` ready for downstream planning (roadmap / analyze / blueprint consume `guidance-specification.md`).
18
18
  </purpose>
19
19
 
20
20
  <required_reading>
@@ -32,7 +32,7 @@ $ARGUMENTS -- topic text for auto mode, or role name for single role mode.
32
32
 
33
33
  **Auto mode**: topic text (e.g., "Build real-time collaboration platform") triggers full pipeline.
34
34
  **Single role mode**: valid role name (e.g., "system-architect") runs one role analysis.
35
- **All output** goes to `.workflow/scratch/brainstorm-{slug}-{YYYYMMDD}/` (orchestrator MUST resolve this to an absolute path before passing to sub-agents).
35
+ **All output** goes to `.workflow/scratch/{YYYYMMDD}-brainstorm-{slug}/` (orchestrator MUST resolve this to an absolute path before passing to sub-agents).
36
36
  **Artifact registration**: On completion, registers artifact (type=brainstorm) in state.json.
37
37
  **Output boundary**: ALL file writes MUST target `{output_dir}/` or `.workflow/state.json` only. NEVER modify source code or files outside these paths.
38
38
  **Produced files**: `guidance-specification.md`, `design-research.md` (optional), `{role}/analysis.md` + `{role}/analysis-F-*.md` + `{role}/findings-*.md` (per selected role).
@@ -19,16 +19,17 @@ Closed-loop decision engine for the maestro workflow lifecycle.
19
19
  Reads project state → infers position → builds adaptive chain → delegates execution.
20
20
 
21
21
  Entry points:
22
- - **`/maestro-ralph "intent"`** — New session: infer → decompose → build → execute
23
- - **`/maestro-ralph continue`** — Resume via maestro-ralph-execute
22
+ - **`/maestro-ralph "intent"`** — New session: infer → decompose → build → emit /goal prompt(如有 decomposition)→ dispatch ralph-execute
23
+ - **`/maestro-ralph continue`** — Wrapper; dispatches to ralph-execute(首选直接 `/maestro-ralph-execute` 推进 step)
24
24
  - **`/maestro-ralph status`** — Display session progress
25
25
 
26
+ > 推进规则:**step 推进由 `/maestro-ralph-execute` 负责**;ralph 仅在 build / decision 评估时介入。decision 节点由 ralph-execute 自动 `invoke_skill("maestro-ralph")` handoff,无需用户手动切换。
27
+
26
28
  Initial decomposition (S_DECOMPOSE): boundary-clarified via ≤3 questions for broad intents (重构/全面/迁移/重写). 写入 status.json 的 `boundary_contract` / `execution_criteria` / `task_decomposition`,附 `/goal` prompt。
27
29
 
28
- Node types:
29
- - **internal** (default): ralph-execute `read_file({command_path})` 命令 .md,按内容内联执行
30
- - **decision**: ralph 评估
31
- - **external**: 仅在显式声明时使用(`maestro delegate --to claude`)
30
+ Step kinds:
31
+ - **执行 step**: ralph-execute `read_file({command_path})` 命令 .md,按内容内联执行
32
+ - **decision step**: `step.decision` 字段非空;回 ralph 评估(CLI 只读分析)
32
33
 
33
34
  Key difference from maestro coordinator:
34
35
  - maestro: static chain → one-time selection → runs all steps
@@ -45,8 +46,8 @@ Mutual invocation with `/maestro-ralph-execute` forms a self-perpetuating work l
45
46
  │ writes status.json
46
47
  │ emits /goal prompt
47
48
 
48
- ralph-execute ◀─┐ internal → read_file(command_path) inline
49
- │ │ decision → invoke_skill("maestro-ralph")
49
+ ralph-execute ◀─┐ 执行 step → read_file(command_path) inline
50
+ │ │ decision step → invoke_skill("maestro-ralph")
50
51
  └─────────┘ writes step.completion_confirmed
51
52
  loop until all completion_confirmed | paused
52
53
  ```
@@ -70,15 +71,16 @@ Remaining → intent
70
71
 
71
72
  <invariants>
72
73
  1. **Ralph never executes steps** — only creates sessions and evaluates decisions
73
- 2. **Handoff via invoke_skill("maestro-ralph-execute")** — at session creation and after decision evaluation
74
+ 2. **Handoff via invoke_skill("maestro-ralph-execute")** — 创建 session 后始终自动 handoff;decision 评估后始终 handoff
74
75
  3. **Decision delegates read-only** — `maestro delegate --role analyze --mode analysis`
75
- 4. **Default type = internal** `external` 仅显式标注时出现,build 不默认生成
76
+ 4. **执行 step 通过 Read 命令 .md 内联执行**
76
77
  5. **status.json 是唯一真源** — 不生成 markdown 清单或侧文件
77
78
  6. **每个 step 必须 `completion_confirmed: true`** — 基于 `--- COMPLETION STATUS ---` 的 `STATUS: DONE`;缺失则视为未完成
78
79
  7. **command_path 在 A_BUILD_STEPS 解析** — 全局优先 `~/.claude/commands/{name}.md`,fallback 项目 `.claude/commands/{name}.md`,写入 status.json
79
- 8. **Decomposition is outcome-oriented**sub-goals 为可观测交付,禁止 lifecycle 复刻;`/goal` 用户绑定,ralph 只发提示词
80
- 9. **planning_mode governs arg granularity** — `unified` skill args `{phase}`;`independent` `{phase}`
81
- 10. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
80
+ 8. **执行 step 加载契约**ralph-execute `command_path` 后,必须解析并加载该命令 `<required_reading>` 引用的所有文件("入口 + workflow"形式的核心),并把 `<deferred_reading>` 路径记录到 `step.deferred_reads`;加载完成后输出 `✓ skill {name} 加载完成`。ralph 在 build 阶段只解析路径,不读 .md 内容
81
+ 9. **Decomposition is outcome-oriented** — sub-goals 为可观测交付,禁止 lifecycle 复刻;`/goal` 用户绑定,ralph 输出提示词后继续 handoff,用户可在执行过程中随时输入 `/goal`
82
+ 10. **planning_mode governs arg granularity** — `unified` skill args `{phase}`;`independent` → 含 `{phase}`
83
+ 11. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` 按 unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
82
84
  </invariants>
83
85
 
84
86
  <state_machine>
@@ -148,8 +150,8 @@ S_BUILD_CHAIN:
148
150
  → S_CREATE_SESSION DO: A_BUILD_STEPS
149
151
 
150
152
  S_CREATE_SESSION:
151
- → S_CONFIRM WHEN: not auto_confirm DO: A_CREATE_SESSION
152
- → S_DISPATCH WHEN: auto_confirm DO: A_CREATE_SESSION
153
+ → S_CONFIRM WHEN: not auto_confirm DO: A_CREATE_SESSION
154
+ → S_DISPATCH WHEN: auto_confirm DO: A_CREATE_SESSION
153
155
 
154
156
  S_CONFIRM:
155
157
  → S_DISPATCH WHEN: user selects "Proceed"
@@ -159,7 +161,7 @@ S_CONFIRM:
159
161
  S_DISPATCH:
160
162
  → END DO: invoke_skill({ skill: "maestro-ralph-execute" })
161
163
 
162
- S_DECISION_EVAL:
164
+ S_DECISION_EVAL: (decision 节点 == `step.decision` 非空,下述 gate 名取自该字段)
163
165
  → S_APPLY_VERDICT WHEN: quality-gate (post-verify, post-business-test, post-review, post-test)
164
166
  DO: A_DELEGATE_EVALUATE
165
167
  → S_APPLY_VERDICT WHEN: goal-gate (post-goal-audit)
@@ -198,7 +200,7 @@ S_FALLBACK:
198
200
 
199
201
  1. Find latest ralph session (by created_at)
200
202
  2. Display: Session, Status, Position, Progress, Current step
201
- 3. List steps: [✓] completion_confirmed, [▸] current, [ ] pending, [◆] decision;附 `command_scope`(global/project) + `command_path`
203
+ 3. List steps: [✓] completion_confirmed, [▸] current, [ ] pending, [◆] decision(`step.decision` 非空);执行 step 附 `command_scope`(global/project) + `command_path`
202
204
  4. If `task_decomposition` present (absent → skip):
203
205
  ```
204
206
  Sub-goals ({done}/{total}) source: {session_dir}/status.json#/task_decomposition
@@ -378,24 +380,26 @@ narrow → derive defaults from intent + codebase, skip questions.
378
380
 
379
381
  Generate steps from `session.lifecycle_position` to `milestone-complete`.
380
382
 
381
- | Stage | invoke_skill(independent) | invoke_skill(unified) | Type | Decision after | quality_mode |
382
- |-------|---------------------|-----------------|------|----------------|--------------|
383
- | brainstorm | `maestro-brainstorm "{intent}"` | *(same)* | internal | — | all |
384
- | blueprint | `maestro-blueprint "{intent}"` | *(same)* | internal | — | all |
385
- | init | `maestro-init` | *(same)* | internal | — | all |
386
- | analyze-macro | `maestro-analyze "{intent}"` | *(same)* | internal | `post-analyze-scope` | all |
387
- | roadmap | `maestro-roadmap --from analyze:{analyze_macro_id}` | *(same)* | internal | — | all |
388
- | analyze | `maestro-analyze {phase}` | `maestro-analyze` | internal | — | all |
389
- | plan | `maestro-plan {phase}` *(scope=phase)* / `maestro-plan --from analyze:{analyze_macro_id}` *(scope=standalone)* / `maestro-plan --from blueprint:{blueprint_id}` *(scope=standalone)* | `maestro-plan` | internal | — | all |
390
- | execute | `maestro-execute {phase}` | `maestro-execute` | internal | — | all |
391
- | verify | `maestro-verify {phase}` | `maestro-verify` | internal | `post-verify` | all |
392
- | business-test | `quality-auto-test {phase}` | `quality-auto-test` | internal | `post-business-test` | full only |
393
- | review | `quality-review {phase}` | `quality-review` | internal | `post-review` | all (quick: append `--tier quick`) |
394
- | test-gen | `quality-auto-test {phase}` | `quality-auto-test` | internal | — | full / standard if coverage<80% |
395
- | test | `quality-test {phase}` | `quality-test` | internal | `post-test` | full, standard |
396
- | milestone-audit | `maestro-milestone-audit` | *(same)* | internal | — | all |
397
- | goal-audit | *(decision-only)* | *(same)* | decision | `post-goal-audit` | all (only if decomposed) |
398
- | milestone-complete | `maestro-milestone-complete` | *(same)* | internal | `post-milestone` | all |
383
+ | Stage | invoke_skill(independent) | invoke_skill(unified) | Decision after | quality_mode |
384
+ |-------|---------------------|-----------------|----------------|--------------|
385
+ | brainstorm | `maestro-brainstorm "{intent}"` | *(same)* | — | all |
386
+ | blueprint | `maestro-blueprint "{intent}"` | *(same)* | — | all |
387
+ | init | `maestro-init` | *(same)* | — | all |
388
+ | analyze-macro | `maestro-analyze "{intent}"` | *(same)* | `post-analyze-scope` | all |
389
+ | roadmap | `maestro-roadmap --from analyze:{analyze_macro_id}` | *(same)* | — | all |
390
+ | analyze | `maestro-analyze {phase}` | `maestro-analyze` | — | all |
391
+ | plan | `maestro-plan {phase}` *(scope=phase)* / `maestro-plan --from analyze:{analyze_macro_id}` *(scope=standalone)* / `maestro-plan --from blueprint:{blueprint_id}` *(scope=standalone)* | `maestro-plan` | — | all |
392
+ | execute | `maestro-execute {phase}` | `maestro-execute` | — | all |
393
+ | verify | `maestro-verify {phase}` | `maestro-verify` | `post-verify` | all |
394
+ | business-test | `quality-auto-test {phase}` | `quality-auto-test` | `post-business-test` | full only |
395
+ | review | `quality-review {phase}` | `quality-review` | `post-review` | all (quick: append `--tier quick`) |
396
+ | test-gen | `quality-auto-test {phase}` | `quality-auto-test` | — | full / standard if coverage<80% |
397
+ | test | `quality-test {phase}` | `quality-test` | `post-test` | full, standard |
398
+ | milestone-audit | `maestro-milestone-audit` | *(same)* | — | all |
399
+ | goal-audit | *(decision-only)* | *(same)* | `post-goal-audit` | all (only if decomposed) |
400
+ | milestone-complete | `maestro-milestone-complete` | *(same)* | `post-milestone` | all |
401
+
402
+ > 所有执行 stage 统一通过 Read .md 内联执行;decision 节点单独作为独立 step 插入(见规则 4)。
399
403
 
400
404
  **Build rules (按顺序应用):**
401
405
 
@@ -403,17 +407,18 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
403
407
  1. **起点**:从 `session.lifecycle_position` 开始
404
408
  2. **跳过已完成**:跳过当前 milestone+phase 下已有 completed artifact 的 stage(按 `session.phase` 过滤);unified 按 milestone 过滤
405
409
  3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
406
- 4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ type: "decision", decision: "<gate>", retry_count: 0, max_retries: 2 }`
410
+ 4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
407
411
  5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(verify/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
408
412
  6. **终点硬约束**:chain 以 `milestone-complete` 结尾
409
413
  7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
410
414
  8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
411
- 9. **command_path 解析**(每个非 decision step):
415
+ 9. **command_path 解析**(每个执行 step,decision 节点跳过):
412
416
  - 取 skill 名(args 前的第一个 token)
413
417
  - 全局优先:`~/.claude/commands/{name}.md` 存在 → `command_scope = "global"`
414
418
  - Fallback:`.claude/commands/{name}.md` 存在 → `command_scope = "project"`
415
419
  - 两者都缺 → `command_scope = "missing"`, `command_path = null`,A_CREATE_SESSION 报错 E006
416
- 10. **每个 step 初始化** `completion_confirmed: false`, `completion_status: null`, `completion_evidence: null`
420
+ - **不在 build 阶段读取 .md 内容**;`<required_reading>` / `<deferred_reading>` 解析与加载由 ralph-execute A_EXEC_STEP 负责(保持入口/工作流分离)
421
+ 10. **每个 step 初始化** `completion_confirmed: false`, `completion_status: null`, `completion_evidence: null`, `deferred_reads: []`
417
422
  11. **scope_verdict gating**(仅当 chain 起点 = `analyze-macro`):
418
423
  - `scope_verdict ∈ {medium, small}` → 跳过 `roadmap` + `analyze` 两 stage;`plan` 选 standalone 列(`--from analyze:{analyze_macro_id}`),不带 `{phase}`
419
424
  - `scope_verdict == large` → 保留 `roadmap` + `analyze`;`plan` 选 phase 列(`{phase}`)
@@ -431,7 +436,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
431
436
  1. Validate: 所有 step 的 `command_scope != "missing"`;否则 raise E006 + 列出缺失 skill
432
437
  2. Write `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json` (Appendix: Session Schema)
433
438
  3. Display chain overview:每步显示 `{index}. {skill} [{type}] [{command_scope}]`
434
- 4. If `task_decomposition` present: display the **Goal Prompt block** (Appendix: Goal Prompt Template)
439
+ 4. If `task_decomposition` present: display **Goal Prompt block** (Appendix),不阻塞流程,继续 handoff
435
440
 
436
441
  ### A_DELEGATE_EVALUATE
437
442
 
@@ -606,12 +611,14 @@ Runs only when `task_decomposition` present.
606
611
  "analysis_dir": null, "brainstorm_dir": null, "blueprint_dir": null },
607
612
  "steps": [{
608
613
  "index": 0,
609
- "type": "internal|external|decision",
610
- "skill": "",
614
+ "skill": "", // 执行 step 有值;decision 节点为空字符串/null
611
615
  "args": "",
612
616
  "stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|verify|...
613
617
  "scope": null, // "phase"|"standalone"|"milestone"|null(plan 等需要)
614
- "command_scope": "global|project|missing|null",
618
+ "decision": null, // 非 null → decision 节点(值为 gate 名,如 "post-verify");null → 执行 step
619
+ "retry_count": 0, // decision 节点专用
620
+ "max_retries": 2, // decision 节点专用
621
+ "command_scope": "global|project|missing|null", // 执行 step;decision 节点固定 null
615
622
  "command_path": "~/.claude/commands/{name}.md | .claude/commands/{name}.md | null",
616
623
  "milestone_id": null, // D-007 反查注入;仅含 {phase} 占位符的 step 有
617
624
  "source_artifact_ref": null, // "analyze:ANL-xxx" | "blueprint:BLP-xxx" | null
@@ -620,7 +627,8 @@ Runs only when `task_decomposition` present.
620
627
  "completion_confirmed": false,
621
628
  "completion_status": null,
622
629
  "completion_evidence": null,
623
- "completed_at": null
630
+ "completed_at": null,
631
+ "deferred_reads": [] // 由 ralph-execute A_EXEC_STEP 解析 .md 时填充
624
632
  }],
625
633
  "waves": [], "current_step": 0,
626
634
 
@@ -642,7 +650,7 @@ Runs only when `task_decomposition` present.
642
650
 
643
651
  ### Fix-Loop Templates
644
652
 
645
- 所有插入 step 默认 `type: "internal"`,按 A_BUILD_STEPS 规则 9 解析 `command_path` + `command_scope`。
653
+ 所有插入的执行 step A_BUILD_STEPS 规则 9 解析 `command_path` + `command_scope`;`decision:*` 条目为 decision 节点(`step.decision` 字段)。
646
654
 
647
655
  **post-verify:**
648
656
  ```
@@ -704,14 +712,12 @@ decision:post-goal-audit {retry+1}
704
712
  链路概览后逐字显示(仅当 decomposition 已产出):
705
713
 
706
714
  ```
707
- 📋 任务分解完成。复制下面一行设定目标,会话在子目标全部达成前不停:
708
-
709
- /goal 目标达成条件: {session_dir}/status.json 中 task_decomposition[*].status == "done" 且 task_decomposition[*].completion_confirmed == true 且 steps[*].completion_confirmed == true。未达成时:阅读 {session_dir}/status.json 取得 execution_criteria / boundary_contract / task_decomposition / steps 作为行动手册,调用 /maestro-ralph continue 推进;严禁手动执行 skill 或越界修改 status.json.boundary_contract.out_of_scope。
715
+ 📋 任务分解完成。可随时复制以下 /goal 设定终止条件(执行过程中输入即可):
710
716
 
711
- 随后运行 /maestro-ralph continue 立即开始执行。
717
+ /goal 直到 {session_dir}/status.json 的 task_decomposition[*] 与 steps[*] 全部 completion_confirmed=true 才停。每轮以 status.json 为唯一行动手册,通过 /maestro-ralph-execute 推进 step;decision 节点由其自动 handoff 回 ralph 评估。禁止手动执行 skill 或修改 boundary_contract.out_of_scope。
712
718
  ```
713
719
 
714
- `/goal` 由用户输入;ralph 只输出此提示词。判据以 status.json 为权威。
720
+ `/goal` 由用户输入;ralph 输出提示词后继续 handoff,不阻塞。
715
721
 
716
722
  ### Error Codes
717
723
 
@@ -743,8 +749,9 @@ decision:post-goal-audit {retry+1}
743
749
  - [ ] quality_mode 由 A_DETERMINE_QUALITY_MODE 决定,过滤 build steps
744
750
  - [ ] Decomposition: broad intent ≤3 question clarify;narrow auto-derive
745
751
  - [ ] status.json 唯一真源:boundary_contract + execution_criteria + task_decomposition;无外部清单
746
- - [ ] 每个 step 默认 `type: "internal"`,含 `command_scope` + `command_path`(全局优先 fallback 项目)
747
- - [ ] 每个 step `completion_confirmed` + `completion_status` + `completion_evidence`(初始 false/null)
752
+ - [ ] 执行 step `command_scope` + `command_path`(全局优先 fallback 项目);decision step 通过 `step.decision` 字段标识
753
+ - [ ] Ralph build 阶段只解析路径,不读 .md 内容;`<required_reading>` 加载由 ralph-execute A_EXEC_STEP 完成
754
+ - [ ] 每个 step 含 `completion_confirmed` + `completion_status` + `completion_evidence` + `deferred_reads`(初始 false/null/[])
748
755
  - [ ] 每个 sub-goal 含 `completion_confirmed`(初始 false)
749
756
  - [ ] post-goal-audit decision 仅在 decomposed 时插入,位于 milestone-complete 之前
750
757
  - [ ] Unmet sub-goals 动态 grow steps[](goal_ref tagged);max retries → escalate
@@ -31,28 +31,29 @@ Remaining → session_id (if matches maestro-* or ralph-*)
31
31
  ```
32
32
  Also read `session.auto_mode` from status.json — if true, treat as `-y`.
33
33
 
34
- **Node types:**
34
+ **Step kinds:**
35
35
 
36
- | Type | Execution | Flow after |
37
- |------|-----------|------------|
38
- | decision (ralph-only) | `invoke_skill("maestro-ralph")` | Execution ends here |
39
- | internal (default) | `read_file({file_path: step.command_path})` + 内联解释执行 | Self-invoke next |
40
- | external (opt-in) | `maestro delegate --to claude --mode write` (STOP → callback) | Self-invoke next |
36
+ | Kind | Identifier | Execution | Flow after |
37
+ |------|-----------|-----------|------------|
38
+ | decision step | `step.decision` 非空 | `invoke_skill("maestro-ralph")` | Execution ends here |
39
+ | 执行 step | `step.decision == null` | `read_file({file_path: step.command_path})` + 内联解释执行 | Self-invoke next |
41
40
 
42
41
  HARD RULES:
43
- - internal step:优先通过 `read_file({command_path})` 把命令 .md 加载进当前会话,再按内容执行;不要对 internal step 使用 `invoke_skill({skill})` 调用
44
- - decision 节点例外:A_EXEC_DECISION 必须使用 `invoke_skill({ skill: "maestro-ralph" })` 进行 handoff(这是 decision 节点的唯一允许用法)
45
- - `command_path` ralph A_BUILD_STEPS 写入 status.json;ralph-execute 不再自行解析(缺失 → 报错 E002)
46
- - external 仅在 `step.type == "external"` 显式声明时使用,并 always append `-y` prompt args
42
+ - 执行 step:通过 `read_file({command_path})` 把命令 .md 加载进当前会话,再按内容执行
43
+ - **必须遵循 `<required_reading>` / `<deferred_reading>` 标签**:命令 .md 通常采用"入口 + workflow"形式,主体逻辑放在 workflow 文件中并通过 `<required_reading>` 引用;缺失 required_reading 视为加载失败
44
+ - decision step:A_EXEC_DECISION 通过 `invoke_skill({ skill: "maestro-ralph" })` handoff ralph 评估
45
+ - `command_path` ralph A_BUILD_STEPS 写入 status.json(缺失 报错 E002)
47
46
  - 每个 step 必须产出 `--- COMPLETION STATUS ---` 块,否则视为 NEEDS_RETRY
48
47
  </context>
49
48
 
50
49
  <invariants>
51
- 1. **Internal = Read + inline** — 通过 Read 读取 `step.command_path`,按其指令在当前 session 内执行
52
- 2. **External = explicit only** — `step.type == "external"` 才走 delegate;默认绝不发起
53
- 3. **必须显式 completion confirmation** — 每个 step 完成时需有 `STATUS: DONE` 且写入 `step.completion_confirmed = true`
54
- 4. **Self-invocation chain** — 持续直到全部 `completion_confirmed` paused
55
- 5. **status.json 每步骤后写盘** — resume-safe
50
+ 1. **执行 = Read + inline** — 通过 Read 读取 `step.command_path`,按其指令在当前 session 内执行
51
+ 2. **Required reading must be loaded** — 命令 .md 中的 `<required_reading>` 引用的所有文件必须立即 Read;缺一 → 视为加载失败,pause session(E007)
52
+ 3. **Deferred reading recorded only** — `<deferred_reading>` 列出的文件路径需记录,执行过程按需 Read;不在加载阶段读取
53
+ 4. **Skill loaded confirmation** — 所有 required_reading 加载完成后必须输出一行确认:`✓ skill {step.skill} 加载完成 (required: N, deferred: M)`
54
+ 5. **必须显式 completion confirmation** — 每个 step 完成时需有 `STATUS: DONE` 且写入 `step.completion_confirmed = true`
55
+ 6. **Self-invocation chain** — 持续直到全部 `completion_confirmed` 或 paused
56
+ 7. **status.json 每步骤后写盘** — resume-safe
56
57
  </invariants>
57
58
 
58
59
  <state_machine>
@@ -78,11 +79,9 @@ S_RESOLVE_ARGS:
78
79
  → S_EXECUTE DO: A_RESOLVE_ARGS
79
80
 
80
81
  S_EXECUTE:
81
- → END WHEN: step.type == "decision" DO: A_EXEC_DECISION
82
- → S_POST_EXEC WHEN: step.type == "internal" + success DO: A_EXEC_INTERNAL
83
- → S_HANDLE_FAIL WHEN: step.type == "internal" + failure DO: A_EXEC_INTERNAL
84
- → END WHEN: step.type == "external" DO: A_EXEC_EXTERNAL
85
- (STOP after background delegate; on callback → S_POST_EXEC or S_HANDLE_FAIL)
82
+ → END WHEN: step.decision != null DO: A_EXEC_DECISION
83
+ → S_POST_EXEC WHEN: step.decision == null + success DO: A_EXEC_STEP
84
+ → S_HANDLE_FAIL WHEN: step.decision == null + failure DO: A_EXEC_STEP
86
85
 
87
86
  S_POST_EXEC:
88
87
  → S_LOCATE DO: A_MARK_COMPLETE + invoke_skill("maestro-ralph-execute")
@@ -151,40 +150,30 @@ Write enriched args back to status.json.
151
150
  ### A_EXEC_DECISION
152
151
 
153
152
  1. Mark step running, write status.json
154
- 2. Display: `[{index}/{total}] ◆ {decision} Retry: {retry}/{max}`
153
+ 2. Display: `[{index}/{total}] ◆ {step.decision} Retry: {retry}/{max}`
155
154
  3. `invoke_skill({ skill: "maestro-ralph" })` — ralph 评估 + handoff
156
155
  4. 执行在此结束
157
156
 
158
- ### A_EXEC_INTERNAL
157
+ ### A_EXEC_STEP
159
158
 
160
159
  1. Validate `step.command_path != null`;否则 raise E002,pause session
161
160
  2. Mark step running, write status.json
162
- 3. Display: `[{index}/{total}] {step.skill} [internal · {step.command_scope}]`
163
- 4. `read_file({ file_path: step.command_path })` — 把命令 .md 全文加载进当前会话(prefer Read over Skill for internal steps;decision 节点另行使用 Skill 见 A_EXEC_DECISION)
164
- 5. 解析 frontmatter `argument-hint` `<purpose>/<state_machine>/<actions>` 等指令块
165
- 6. 计算 `effective_args`:`step.args` + auto flag(`auto ? (flag_map[step.skill] || "") : ""`)
166
- 7. 按读到的指令在本会话中**内联执行**:调用允许的工具完成命令所规定的工作,不再发起 delegate
167
- 8. 执行结束:要求最后一段必须包含 `--- COMPLETION STATUS ---` 块(见 A_MARK_COMPLETE)
168
- 9. Return success / failure
169
-
170
- **Auto flag map**: 所有 lifecycle skill → `-y`; `quality-test` → `-y --auto-fix`; 未列出 → 无 flag
171
-
172
- ### A_EXEC_EXTERNAL
173
-
174
- 仅当 `step.type == "external"` 时使用(默认链路不产生)。
175
-
176
- 1. Mark step running, write status.json
177
- 2. Display: `[{index}/{total}] ⚡ {step.skill} [external]`
178
- 3. 始终在 prompt 内追加 `-y`(delegate session 非交互):`flag = flag_map[step.skill] || "-y"`
179
- 4. Execute:
161
+ 3. Display: `[{index}/{total}] {step.skill} [{step.command_scope}]`
162
+ 4. `read_file({ file_path: step.command_path })` — 把命令 .md 全文加载进当前会话
163
+ 5. **解析 reading 标签**("入口 + workflow"形式核心步骤):
164
+ - 抽取 frontmatter `argument-hint` / `allowed-tools`
165
+ - 抽取 `<required_reading>` 块的所有 `@path` 引用 → 立刻 `read_file({ file_path: <expanded path> })` 加载(`~/` / `@~/` 展开为用户主目录);任一文件缺失或读取失败 → raise E007,pause session
166
+ - 抽取 `<deferred_reading>` 块的所有路径 仅记录到 `step.deferred_reads = [...]`,执行阶段按需 Read
167
+ - 抽取 `<purpose>/<context>/<state_machine>/<execution>/<actions>` 等指令块
168
+ 6. **加载完成确认**:required_reading 全部成功 Read 后,输出一行:
180
169
  ```
181
- shell({
182
- command: `maestro delegate "/${step.skill} ${effective_args}" --to claude --mode write`,
183
- run_in_background: true, timeout: 600000
184
- })
185
- STOP — wait for callback.
170
+ ✓ skill {step.skill} 加载完成 (required: {N}, deferred: {M})
186
171
  ```
187
- 5. On callback: 把回调输出视为 step 的执行结果 S_POST_EXEC / S_HANDLE_FAIL
172
+ 其中 N = required_reading 引用数,M = deferred_reading 路径数(缺省块按 0 计)
173
+ 7. 计算 `effective_args`:`step.args` + (`auto ? " -y" : ""`)
174
+ 8. 按读到的指令在本会话中**内联执行**:调用允许的工具完成命令所规定的工作;执行过程中如触发 deferred_reading 引用的资源 → 按需 Read
175
+ 9. 执行结束:要求最后一段必须包含 `--- COMPLETION STATUS ---` 块(见 A_MARK_COMPLETE)
176
+ 10. Return success / failure
188
177
 
189
178
  ### A_MARK_COMPLETE
190
179
 
@@ -229,14 +218,14 @@ Write enriched args back to status.json.
229
218
  Session: {session_id} [{source}]
230
219
  Steps: {completed}/{total} confirmed: {confirmed}/{completed}
231
220
 
232
- [✓] 0. maestro-plan 1 [internal · global]
233
- [✓] 1. maestro-execute 1 [internal · project]
234
- [✓] 2. maestro-verify 1 [internal · global]
221
+ [✓] 0. maestro-plan 1 [global]
222
+ [✓] 1. maestro-execute 1 [project]
223
+ [✓] 2. maestro-verify 1 [global]
235
224
  [✓] 3. ◆ post-verify [decision]
236
225
  ...
237
226
  ============================================================
238
227
  ```
239
- Icons: `✓` confirmed, `—` skipped, `✗` failed, `◆` decision, `⚡` external
228
+ Icons: `✓` confirmed, `—` skipped, `✗` failed, `◆` decision
240
229
 
241
230
  </actions>
242
231
 
@@ -249,20 +238,23 @@ Write enriched args back to status.json.
249
238
  | Code | Severity | Description | Recovery |
250
239
  |------|----------|-------------|----------|
251
240
  | E001 | error | No running session found | Suggest /maestro or /maestro-ralph |
252
- | E002 | error | step.command_path missing for internal step | Pause, ask ralph to rebuild step |
241
+ | E002 | error | step.command_path missing for 执行 step | Pause, ask ralph to rebuild step |
253
242
  | E003 | error | status.json corrupt | Show path, manual check |
254
- | E004 | error | Delegate failed + user abort | Mark paused, suggest resume |
255
243
  | E005 | error | COMPLETION STATUS block missing | Trigger NEEDS_RETRY |
244
+ | E007 | error | required_reading file 缺失或读取失败 | List missing paths, pause session |
256
245
  | W001 | warning | Step completed with concerns | Log and continue |
246
+ | W002 | warning | command .md 无 `<required_reading>` 标签 | 直接执行 .md 主体,跳过加载阶段 |
257
247
 
258
248
  ### Success Criteria
259
249
 
260
250
  - [ ] Session discovery covers maestro-* and ralph-*
261
- - [ ] `-y` parsed from args 或 session.auto_mode
251
+ - [ ] `-y` parsed from args 或 session.auto_mode;auto=true 时透传 `-y` 到 skill args
262
252
  - [ ] Placeholders resolved;per-skill enrichment 正确
263
- - [ ] Decision 节点 invoke_skill("maestro-ralph") handoff
264
- - [ ] Internal 节点通过 read_file({step.command_path}) 内联执行,禁止 invoke_skill()
265
- - [ ] External 仅在显式声明时走 delegate,prompt 必带 `-y`
253
+ - [ ] Decision 节点(`step.decision != null`)invoke_skill("maestro-ralph") handoff
254
+ - [ ] 执行 step 通过 read_file({step.command_path}) 内联执行
255
+ - [ ] 执行 step Read 后必须解析并加载 `<required_reading>` 引用的文件;缺失 → E007 pause
256
+ - [ ] `<deferred_reading>` 仅记录路径到 `step.deferred_reads`,执行阶段按需 Read
257
+ - [ ] required_reading 加载完成后输出 `✓ skill {name} 加载完成 (required: N, deferred: M)`
266
258
  - [ ] 每个 step 强制 `--- COMPLETION STATUS ---`;缺失 → NEEDS_RETRY
267
259
  - [ ] step.completion_confirmed = true 仅在 STATUS: DONE/DONE_WITH_CONCERNS 时设置
268
260
  - [ ] step.completion_evidence 记录 artifact path / 输出节选
@@ -21,7 +21,7 @@ Verify execution results through three complementary methods:
21
21
  3. **Nyquist test coverage validation** — requirement-to-test mapping with gap classification
22
22
 
23
23
  Supports dual-level verification:
24
- - **Single plan**: `verify --dir scratch/plan-xxx` — verifies one plan, writes `verification.json` into plan dir
24
+ - **Single plan**: `verify --dir scratch/{YYYYMMDD}-plan-xxx` — verifies one plan, writes `verification.json` into plan dir
25
25
  - **Milestone**: `verify` (no args) — aggregates all execute artifacts for current milestone into `scratch/{YYYYMMDD}-verify-M{N}-{slug}/milestone-verification.json`
26
26
 
27
27
  Registers VRF artifact in state.json on completion.