Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Intent-to-chain planner over the canonical Session/Run lifecycle
.claude/skills/catlog22-maestro/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 211% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 631% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 509% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 415% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 756% | 0% |
<required_reading> @~/.maestro/workflows/run-mode.md @~/.maestro/workflows/orchestrator-run-loop.md @~/.maestro/prepare/maestro.md @~/.maestro/workflows/codex-run-mode.md </required_reading>
If any required file above was not expanded into context by the host, or its content is no longer in context, Read it explicitly before executing the state machine.
<deferred_reading>
--amend</deferred_reading>
<purpose> Turn a user intent into the initial Skill chain, create one canonical topic Session through maestro session open --chain <commands...> (no chain-file), then execute the shared Run loop. Static versus dynamic is not a Session or command mode: each Skill contract decides whether it emits a typed chain proposal. For new intents, use this command. For policy-driven execution over existing Sessions, use /maestro-ralph. </purpose>
<interface> Only these user flags are accepted:
-y — skip all confirmation/clarification interactions, use default choices. Does NOT change data semantics (no auto-deferred decisions). Never bypasses: high-risk classification, confidence <60, ambiguity requiring user input, failed gates, or drift escalation.-c — continue the unique live compatible Session.--amend — amend that Session's goal; remaining text is the change request.Execution always dispatches run-executor (the default behavior); this never changes Session type or chain semantics.
All other text is intent. Unknown flags are not silently reinterpreted. Platform, roadmap, quality, template reuse, parallelism and adversarial depth are inferred. </interface>
<invariants>
maestro session open "<objective>" --id <slug> --chain <commands...> before allocating a step Run.boundary_contract and outcome-oriented goals; later orchestrators consume rather than overwrite them.chain-proposal/1.0.maestro run complete ... --advance --verdict done|done_with_concerns; decision steps only through fenced maestro run decide.maestro run ....-y never bypasses high risk, low confidence, ambiguity, failed gates or drift escalation./maestro-next may route here but never appears inside the chain.automatic, execute it and re-read the receipt in the same turn; suggest_only is Runtime passivity, not a reason to end the turn.</invariants>
<state_machine>
<states> S_PARSE — parse intent and flags S_CONTINUE — locate the unique live Session S_AMEND — audited goal amendment S_CLASSIFY — select the smallest sufficient initial chain S_DECOMPOSE — derive boundary, criteria and observable goals S_CREATE — open via session open --chain S_CONFIRM — confirm classification unless -y S_RUN_LOOP — execute orchestrator-run-loop.md S_FALLBACK — request missing intent or disambiguation </states>
<transitions> S_PARSE: → S_AMEND WHEN: --amend → S_CONTINUE WHEN: -c → S_CLASSIFY WHEN: intent present → S_FALLBACK OTHERWISE
S_CONTINUE: → S_RUN_LOOP WHEN: exactly one live compatible Session → S_FALLBACK WHEN: Session has an open decision gate or a stuck Run (suggest /maestro-ralph -c for audited recovery) → S_FALLBACK WHEN: none or multiple
S_AMEND: → S_RUN_LOOP WHEN: shared amend protocol committed → END WHEN: cancelled or blocked
S_CLASSIFY: → S_RUN_LOOP WHEN: existing compatible Session found (do not rebuild) → S_DECOMPOSE WHEN: multi-step chain → S_CREATE WHEN: narrow/single-step chain → S_FALLBACK WHEN: confidence < 60
S_DECOMPOSE → S_CREATE S_CREATE → S_RUN_LOOP WHEN: -y AND risk ≠ high AND confidence ≥ 60 S_CREATE → S_CONFIRM WHEN: -y AND (risk == high OR confidence < 60) S_CREATE → S_CONFIRM OTHERWISE S_CREATE → S_FALLBACK WHEN: creation fails (delete temp file, report error) S_CONFIRM → S_RUN_LOOP WHEN: confirmed S_CONFIRM → S_CLASSIFY WHEN: revised (maestro re-classifies the revised intent from scratch because a changed intent may reshape the chain; ralph returns to S_BUILD instead since its chain shape is already fixed) S_CONFIRM → END WHEN: cancelled </transitions>
<actions>
Read deferred maestro.md. Record matched evidence, excluded alternatives and confidence before creation.
Minimum chain rules:
| Intent evidence | Initial chain | |---|---| | narrow fix/change | analyze → plan → execute → review/test as required | | broad rewrite/migration | analyze-macro → scope decision → plan/roadmap path | | brainstorm/explore | brainstorm, then only Skill-proposed continuation | | stress/grill | grill, then only Skill-proposed continuation | | formal specification | blueprint → plan path | | existing compatible Session | do not rebuild; enter shared loop |
Roadmap is inferred only for multi-release evidence. Quality depth follows project specs, UI evidence needs frontend verification, and every executable command is resolved by Run Runtime.
For broad intent, ask at most 3 questions covering scope, constraints and observable done criteria; broad ambiguity is not skipped by -y. (broad = affects ≥3 modules OR requires cross-package interface changes OR ≥2 of 3 decomposition questions remain unanswered.) Produce:
json{ "boundary_contract": { "in_scope": [], "out_of_scope": [], "constraints": [], "definition_of_done": "" }, "decomposition": { "execution_criteria": [], "goals": [{ "id": "G1", "goal": "", "boundary": "", "done_when": "", "evidence": "", "lifecycle": [], "status": "pending" }], "changelog": [] } }
Goals describe outcomes, not lifecycle stages.
Assemble and create per prepare/maestro.md §1–§4 (specs precheck, Skill-name prevalidation, chain assembly, creation). Maestro-specific policy:
prepare/maestro.md (required_reading); if it is not in context, Read that file directly. In v3 the same prepare guidance is injected into the run next / run create birth packet (guidance-snapshot/1.0) — prepare is embedded in the Run, not a standalone run prepare step./maestro-ralph; route there when the work needs it.)Use read-only maestro run recall plus maestro session status --session {session_id} --json. A Session with an open decision gate or a stuck Run is out of scope here — report it and route to /maestro-ralph -c for audited recovery (S_FALLBACK); completed/archived Sessions are terminal. Multiple live candidates require explicit selection.
Read ralph-amend-goal.md, use maestro session status --session {session_id} --json for the snapshot, perform read-only impact analysis, confirm, then apply the amendment through a chain-aware typed proposal: goal/decomposition metadata is committed with fenced maestro session chain insert|replace (per-step --goal-ref / --stage / --decision-ref). session meta update is session/1.x/2.0 compatibility-only and must not be used in the canonical branch. Any pending-tail change must come from a planning Skill proposal.
</actions>
</state_machine>
<task_tracking>
时机与操作(plan 是 session 权威状态的 UI 镜像,不替代 session 状态):
| 时机 | 操作 | 示例 | |------|------|------| | Session 创建后 | update_plan 初始化步骤清单 | update_plan({ plan: [{ step: "Step {index}: {step.skill}", status: "pending" }, ...] }) | | Step 派发时 | update_plan 标记当前 step | update_plan({ plan: [..., 当前 step status: "in_progress"] }) | | Step 完成时 | update_plan 标记完成 | update_plan({ plan: [..., 该 step status: "completed"] }) | | Step 失败时 | update_plan + explanation 说明 | update_plan({ explanation: "Step {index} failed: {reason}", plan: [...] }) |
</task_tracking>
<success_criteria>
-y, -c, --amend.run next → brief → execute → run check → run complete --advance; decision nodes use run decide.session chain insert|replace|skip).maestro run ... lifecycle commands.</success_criteria>
session/1.x/2.x Compatibility BranchThe v2 command surface is deprecated / compatibility-only for explicitly selected old CLI/schema (see run-mode.md Legacy session/1.x/2.x Compatibility Branch): maestro session create --chain-file, maestro session done --verdict, maestro session decide, maestro session meta update, and the standalone run prepare dispatcher are never used by the canonical flow above. Normal orchestration calls only the v3 surface: session open/status/list/chain insert|replace|skip/complete, run next/create/brief/check/complete --advance/decide/transition/cancel, and knowledge stage/review/promote.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 28,167 | 35,312 | +25% | 1 | 1 | 0% | 5,548 | 2,958 | -47% | 0 | 0 | — |
case-02 | fail→fail | 4,906 | 9,693 | +98% | 1 | 1 | 0% | 512 | 3,186 | +522% | 0 | 0 | — |
case-03 | fail→fail | 13,982 | 10,373 | -26% | 1 | 1 | 0% | 2,107 | 3,326 | +58% | 0 | 0 | — |
case-04 | fail→fail | 5,797 | 10,157 | +75% | 1 | 1 | 0% | 206 | 3,004 | +1358% | 0 | 0 | — |
case-05 | fail→pass | 15,089 | 28,540 | +89% | 1 | 1 | 0% | 2,533 | 7,877 | +211% | 0 | 0 | — |
case-06 | fail→fail | 13,091 | 14,559 | +11% | 1 | 1 | 0% | 1,663 | 4,164 | +150% | 0 | 0 | — |
case-07 | pass→fail | 15,793 | 10,329 | -35% | 1 | 1 | 0% | 1,825 | 2,952 | +62% | 0 | 0 | — |
case-08 | fail→fail | 33,869 | 25,612 | -24% | 1 | 1 | 0% | 5,687 | 3,039 | -47% | 0 | 0 | — |
case-09 | fail→fail | 3,277 | 14,105 | +330% | 1 | 1 | 0% | 317 | 3,125 | +886% | 0 | 0 | — |
case-10 | fail→pass | 13,142 | 53,664 | +308% | 1 | 1 | 0% | 772 | 5,641 | +631% | 0 | 0 | — |
case-11 | pass→pass | 8,708 | 5,893 | -32% | 1 | 1 | 0% | 1,219 | 3,393 | +178% | 0 | 0 | — |
case-12 | fail→pass | 7,234 | 7,615 | +5% | 1 | 1 | 0% | 629 | 3,829 | +509% | 0 | 0 | — |
case-13 | fail→pass | 6,577 | 15,556 | +137% | 1 | 1 | 0% | 887 | 4,564 | +415% | 0 | 0 | — |
case-14 | fail→fail | 10,707 | 10,468 | -2% | 1 | 1 | 0% | 1,721 | 4,565 | +165% | 0 | 0 | — |
case-15 | pass→fail | 6,748 | 12,944 | +92% | 1 | 1 | 0% | 815 | 3,525 | +333% | 0 | 0 | — |
case-16 | fail→fail | 10,181 | 18,733 | +84% | 1 | 1 | 0% | 877 | 3,251 | +271% | 0 | 0 | — |
case-17 | fail→pass | 4,562 | 15,444 | +239% | 1 | 1 | 0% | 529 | 4,530 | +756% | 0 | 0 | — |
case-18 | pass→fail | 8,462 | 9,820 | +16% | 1 | 1 | 0% | 1,082 | 3,098 | +186% | 0 | 0 | — |
case-19 | fail→fail | 12,143 | 16,317 | +34% | 1 | 1 | 0% | 2,128 | 3,322 | +56% | 0 | 0 | — |
case-20 | fail→fail | 21,635 | 9,265 | -57% | 1 | 1 | 0% | 2,455 | 3,199 | +30% | 0 | 0 | — |
case-21 | fail→fail | 8,370 | 12,230 | +46% | 1 | 1 | 0% | 292 | 3,533 | +1110% | 0 | 0 | — |
case-22 | fail→fail | 9,483 | 9,848 | +4% | 1 | 1 | 0% | 392 | 4,034 | +929% | 0 | 0 | — |
case-23 | pass→pass | 8,466 | 16,728 | +98% | 1 | 1 | 0% | 1,135 | 3,960 | +249% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 8 counted toward the lift figure. The other 15 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 8 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | -5% |
Other measured skills in the registry, with their headline benchmark lift.