Maestro Ralph
--- name: maestro-ralph description: Use when the optimal command sequence is unclear and needs automated state-based determina…
---
name: maestro-ralph
description: Use when the optimal command sequence is unclear and needs automated state-based determination
argument-hint: "<intent> [-y] | status | continue"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
- Skill
- AskUserQuestion
---
<purpose>
Closed-loop decision engine for the maestro workflow lifecycle.
Reads project state → infers position → builds adaptive chain → delegates execution.
Entry points:
- **`/maestro-ralph "intent"`** — New session: infer → decompose → build → emit /goal prompt(如有 decomposition)→ dispatch ralph-execute
- **`/maestro-ralph continue`** — Wrapper; dispatches to ralph-execute(首选直接 `/maestro-ralph-execute` 推进 step)
- **`/maestro-ralph status`** — Display session progress
> 推进规则:**step 推进由 `/maestro-ralph-execute` 负责**;ralph 仅在 build / decision 评估时介入。decision 节点由 ralph-execute 自动 `Skill("maestro-ralph")` handoff,无需用户手动切换。
Initial decomposition (S_DECOMPOSE): boundary-clarified via ≤3 questions for broad intents (重构/全面/迁移/重写). 写入 status.json 的 `boundary_contract` / `execution_criteria` / `task_decomposition`,附 `/goal` prompt。
Step kinds:
- **执行 step**: ralph-execute 调 `Bash("maestro ralph next")` 加载 command .md + required_reading 全文,按 stdout 内联执行
- **decision step**: `step.decision` 字段非空;回 ralph 评估(CLI 只读分析)
Key difference from maestro coordinator:
- maestro: static chain → one-time selection → runs all steps
- ralph: living chain → decision nodes re-evaluate → chain grows/shrinks dynamically
Session: `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json`
Mutual invocation with `/maestro-ralph-execute` forms a self-perpetuating work loop.
### Execution Flow
/maestro-ralph "intent" ─▶ ralph infer → decompose → build chain
│ resolves command_path per step
│ writes status.json
│ emits /goal prompt
▼
ralph-execute ◀─┐ 执行 step → maestro ralph next + inline + ralph complete
│ │ decision step → Skill("maestro-ralph")
└─────────┘ CLI writes step.completion_confirmed
loop until all completion_confirmed | paused
</purpose>
<context>
$ARGUMENTS — intent text, flags, or keywords.
**Parse:**
-y flag → auto_confirm = true .md/.txt path → input_doc (supplementary context only, NEVER substitutes lifecycle stages) Remaining → intent
**State files:**
- `.workflow/state.json` — artifact registry, milestones, phases
- `.workflow/roadmap.md` — milestone/phase structure
- `.workflow/.maestro/ralph-*/status.json` — ralph session state
</context>
<invariants>
1. **Ralph never executes steps** — only creates sessions and evaluates decisions
2. **Handoff via Skill("maestro-ralph-execute")** — 创建 session 后始终自动 handoff;decision 评估后始终 handoff
3. **Decision delegates read-only** — `maestro delegate --role analyze --mode analysis`
4. **执行 step 通过 `maestro ralph next` CLI 加载并内联执行**(详见 invariant 8)
5. **status.json 是唯一真源** — 不生成 markdown 清单或侧文件
6. **每个 step 必须 `completion_confirmed: true`** — 由 `maestro ralph complete N --status DONE`(或 DONE_WITH_CONCERNS)写入;CLI 是唯一合法写入路径
7. **command_path 在 A_BUILD_STEPS 解析** — 通过 `maestro ralph skills --json --quiet` 预校验(project 覆盖 global),命中即写绝对路径到 status.json;未命中标 `command_scope = "missing"`
8. **执行 step 加载契约** — 由 `maestro ralph next` CLI 在执行期完成:解析 frontmatter + `<required_reading>` + `<deferred_reading>`,自动读取 required 文件全文并拼入 prompt;缺失 required → 退出码 1(E007),pause session。ralph build 阶段只通过 `maestro ralph skills` 校验路径存在性,不读 .md 内容
9. **Decomposition is outcome-oriented** — sub-goals 为可观测交付,禁止 lifecycle 复刻;`/goal` 用户绑定,ralph 输出提示词后继续 handoff,用户可在执行过程中随时输入 `/goal`
10. **planning_mode governs arg granularity** — `unified` → skill args 无 `{phase}`;`independent` → 含 `{phase}`
11. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` 按 unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
</invariants>
<state_machine>
<states>
S_PARSE_ROUTE — 解析参数、路由入口 PERSIST: —
S_STATUS — 显示 session 进度 PERSIST: —
S_CONTINUE — 恢复执行 PERSIST: —
S_RESOLVE_PHASE — 解析 phase + phase_is_new + D-007 milestone PERSIST: session.phase, session.phase_is_new, session.milestone
S_INFER — 基于已解析 phase 推断 lifecycle_position PERSIST: session.lifecycle_position
S_RESOLVE_SCOPE — 读 macro analyze conclusions.scope_verdict PERSIST: session.scope_verdict, session.analyze_macro_id
S_QUALITY_MODE — 决定质量管线模式 PERSIST: session.quality_mode
S_PLANNING_MODE — 决定统一/独立规划模式 PERSIST: session.planning_mode
S_DECOMPOSE — 边界澄清、写执行准则+子目标清单 PERSIST: session.boundary_contract, .execution_criteria, .task_decomposition
S_BUILD_CHAIN — 构建步骤链 PERSIST: session.steps[]
S_CREATE_SESSION — 写 status.json PERSIST: session (全量)
S_CONFIRM — 用户确认 PERSIST: —
S_DISPATCH — 移交 maestro-ralph-execute PERSIST: —
S_DECISION_EVAL — 委托评估质量门 PERSIST: —
S_APPLY_VERDICT — 应用裁决 + 插入命令 PERSIST: session.steps[], session.passed_gates[]
S_FALLBACK — 请求用户输入 PERSIST: —
</states>
<transitions>
S_PARSE_ROUTE:
→ S_STATUS WHEN: intent == "status"
→ S_CONTINUE WHEN: intent == "continue"
→ S_DECISION_EVAL WHEN: running session with decision step in "running" status
→ S_RESOLVE_PHASE WHEN: intent is non-empty ← phase 必须先于 position
→ S_FALLBACK WHEN: no intent AND no running session
S_STATUS:
→ END DO: A_SHOW_STATUS
S_CONTINUE:
→ S_DISPATCH WHEN: running session found
→ S_FALLBACK WHE
Maintain Maestro Ralph?
Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.
[Maestro Ralph on getagentictools](https://getagentictools.com/loops/fidstyle-for-each-unmet-sub-goal-g-n-scoped-to-target-phase?ref=badge) npx agentictools info loops/fidstyle-for-each-unmet-sub-goal-g-n-scoped-to-target-phase The second line is the CLI lookup for this page — handy in READMEs and docs.