Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Long-running iterative cycle — one entry, six modes (debug|improve|planex|review|security|ui). Shared archaeology/audit → fix → verify → generalize → discover → persist skeleton with mode-specific dimensions. User-invoked campaign entry; single-step fixes route via /maestro-next
.claude/skills/catlog22-maestro-odyssey/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 194% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 430% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 316% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 220% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 326% | 0% |
<required_reading> @~/.maestro/workflows/run-mode.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 any step.
<deferred_reading>
</deferred_reading>
<purpose> Long-running, evidence-driven iterative cycle. A single entry dispatches to one of six modes; all share the same skeleton — discovery → domain audit → fix → verify → generalize → discover siblings → persist knowledge — and iterate exhaustively until the mode's exit condition is met or escalation is required. </purpose>
<mode_dispatch>
Mode selection precedence: explicit --mode <name> > intent keyword auto-detection > request_user_input (Normal) / error E000 (-y).
Auto-detection from <intent> keywords (first match wins, ordered):
Keyword matching: case-insensitive substring match against the intent text. Multi-word keywords require all words present (not necessarily adjacent). First matching row wins (ordered by specificity).
| Keywords in intent | Detected mode | |--------------------|---------------| | bug, crash, error, broken, fails, regression, race, leak, "why does" | debug | | requirement, implement, build, add feature, I need to implement, I need to build, I need to add, deliver feature, user story | planex | | ui, visual, layout, style, component, page, responsive, a11y, accessibility, UI design, visual design, design system, design tokens | ui | | security audit, OWASP, vulnerability, CVE, secrets scan, STRIDE, threat model, supply chain, dependency audit, dependencies, supply chain audit | security | | improve, optimize, performance, refactor quality, reliability, observability | improve | | review, audit, code check, check the code, inspect the code, inspect changes, "look over", zero-residual | review |
Ambiguous / no match → Normal: request_user_input (6-way mode pick) | -y: E000.
Mode registry:
| Mode | Purpose | Discovery phases | Audit phase | Fix→verify pair | Unique states | |------|---------|------------------|-------------|-----------------|---------------| | debug | Symptom → root cause → fix → confirm | ARCHAEOLOGY, EXPLORE | DIAGNOSE (hypothesis test) | FIX → CONFIRM | ESCALATE_DIAGNOSIS | | improve | 6-dimension quality audit → diagnose → fix | SURVEY | AUDIT (6 dims) + DIAGNOSE | FIX → VERIFY | ESCALATE_DIAGNOSIS | | planex | Requirement → plan → execute → verify loop | (none) | PLAN + EXECUTE | (EXECUTE) → VERIFY → FIX loop | — | | review | Multi-dimension deep review → zero-residual fix | ARCHAEOLOGY, EXPLORE | REVIEW (4+ dims) | FIX → CONFIRM | — | | security | Read-only tiered security audit → severity matrix | RECON | SCAN (OWASP + deps + secrets + CI/CD + STRIDE + git) | (none — read-only) | — | | ui | Visual survey → 6-dim audit → diverge → fix | SURVEY | AUDIT (6 dims) + DIVERGE | FIX → VERIFY | — |
CONFIRM and VERIFY are synonymous — both refer to the post-fix validation phase. Mode workflow files use mode-specific naming; semantics are identical.
The back half is identical across all modes: GENERALIZE → DISCOVER → RECORD → END (see odyssey-base.md §Shared Back-Half).
On mode resolved: read the deferred workflow file for that mode + odyssey-base.md, then execute.
</mode_dispatch>
<context> $ARGUMENTS
Universal flags: --mode <name> mode selector | --skip-fix audit/diagnose only, skip fix+verify | --skip-generalize skip GENERALIZE+DISCOVER | -y skip all confirmation interactions (including delegate/agent confirmations in execution phases), use default choices; decisions skipped this way are recorded as deferred; never bypasses mode ambiguity (E000), INTAKE gate blockers, escalation | -c resume the most recent unfinished Session of the SAME mode via exact Session resolution: locate it with maestro session list --json + maestro session status --session {session_id} --json (both read-only), re-attach context with maestro session resume-view and the brief-result/3.0 Resume Packet via run brief (exact invocation per run-mode.md), then continue the chain with fenced maestro run next / run check / run complete --advance. If --mode conflicts with the resumed Session's mode → E003 (mode mismatch); no history → ignore -c, create new Session | --heartbeat /loop periodic progress
Mode-scoped flags:
| Flag | Modes | Description | Default | |------|-------|-------------|---------| | --template <name> | debug, planex | Predefined strategy/criteria template | — | | --dimensions <list> | improve, review, ui | Audit dimension subset | all | | --fix-threshold <sev> | improve, review, ui | Severity cutoff (critical\|high\|medium\|low\|all) | all | | --tier quick\|standard\|deep | security | Audit depth tier | standard | | --max-iterations N | planex | Max verify-fix cycles before escalation | 3 | | --method agent\|cli\|auto | planex | Task execution method | auto | | --executor <tool> | planex | Explicit CLI executor | first enabled | | --skip-verify | planex | Skip post-execution validation gate | false |
--skip-fix applicability: security mode ignores (read-only, no fix phase); planex skips FIX loop but retains EXECUTE+VERIFY; debug/review/improve/ui skip FIX+VERIFY/CONFIRM. --skip-fix + --skip-verify on planex = PLAN only (no execution).
Mode-scoped flags passed to inapplicable mode: emit W008 warning and ignore the flag.
Session creation: follow run-mode.md exactly. Negotiate capabilities, then open a new Session with maestro session open "<objective>" --id {slug} --chain odyssey-<mode> --participant {participant_id} --actor {actor_id} --request-id {request_id} --reason "<reason>" [--evidence <ref> ...] --json (or resolve an existing compatible Session read-only via session status), then dispatch the mode step with fenced maestro run next --session {session_id} ... --json (chain) or self-start with maestro run create odyssey-<mode> [args...] --session {session_id} ... --json passing the mode arguments. Never abbreviate or omit the Session locator, the orchestration_revision/Run revision fence, or the --participant/--actor identity in an executable command.
Session: {run_dir}/outputs/ Output: session.json | evidence.ndjson | understanding.md | explore.json (debug/review only)
Output boundary: ALL session artifacts MUST target the run outputs directory ({run_dir}/outputs/) only. .workflow/state.json and all sessions/<sid>/ protocol files are runtime-owned — a workflow never writes them. Source code modifications during fix/execute phases are in-scope but MUST be committed per action. NEVER write session artifacts outside {run_dir}/outputs/.
session.json — shared core + mode fields:
json{ "mode": "debug|improve|planex|review|security|ui", "target": "", "dimensions": [], "patterns": [], "confirmation": null, "generalization_stats": null, "cross_phase_loops": 0 }
Each mode extends the core — see the mode's workflow file for session fields.
Commit convention: "odyssey-{mode}({slug}): {STATE} — {summary}" (mode = active mode short name; review mode uses odyssey-review).
</context>
<invariants> All base invariants apply (evidence append-only, session-as-state, phase goal tracking, auto-commit per action). Additionally:
skip_generalize == true. Prior-phase convergence, "no findings / all verified / zero remaining," or context pressure are NOT valid skip reasons. The phase itself determines whether patterns exist.--mode improve.</invariants>
<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>
<self_iteration> Self-iteration (logic in odyssey-base.md) applies to each mode's discovery + audit + GENERALIZE stages:
| Mode | Self-iterating stages | |------|----------------------| | debug | S_ARCHAEOLOGY, S_EXPLORE, S_DIAGNOSE, S_GENERALIZE | | improve | S_SURVEY, S_AUDIT, S_DIAGNOSE, S_GENERALIZE | | planex | S_PLAN, S_VERIFY, S_GENERALIZE | | review | S_ARCHAEOLOGY, S_EXPLORE, S_REVIEW, S_FIX, S_GENERALIZE | | security | S_RECON, S_SCAN, S_GENERALIZE | | ui | S_SURVEY, S_AUDIT, S_DIVERGE, S_GENERALIZE | </self_iteration>
<execution> Follow base execution discipline completely. On entry: resolve mode (§mode_dispatch), then read the deferred workflow file for that mode + odyssey-base.md, and run that mode's state machine. All modes converge on the Shared Back-Half in odyssey-base.md.
remaining_actionable == 0 OR loops >= max_loops with per-item reasons logged; discover goal marked. Unclassified hits = BLOCKED.Mode-specific phase gates (Discovery, Audit, FIX, VERIFY/CONFIRM) are defined in each mode's workflow file.
</execution>
<error_codes> | Code | Severity | Condition | Recovery | |------|----------|-----------|----------| | E000 | error | Mode unresolved (-y, ambiguous intent, no --mode) | Provide --mode | | E001 | error | No target / no requirement (planex) / no issue (debug) | Provide target or -c | | E002 | error | Target path not found | Check path | | E003 | error | -c mode mismatch (resumed session is different mode) | Use correct --mode or omit -c | | E004 | error | Mode workflow file not found (~/.maestro/workflows/odyssey-{mode}.md) | Verify workflow installation or select another mode | | W001 | warning | No relevant git history / no dependency manifest / no design system | Proceed with defaults | | W002 | warning | Some dimension agents failed / 3 retries exhausted | Partial coverage / INCONCLUSIVE | | W003 | warning | Archaeology agent or delegate failure (debug/review) | Proceed with available results, log failed agent | | W004 | warning | Generalization 0 hits after full 3-layer scan | Advance to S_RECORD (requires all 3 layers attempted with evidence) | | W005 | warning | Pending decisions | Filter evidence phase=decision | | W006 | warning | No CLI tools (debug/review explore) | Skip explore | | W007 | warning | planex CLI review regression concern | Review before next iteration | | W008 | warning | Mode-scoped flag ignored (not applicable to resolved mode) | Remove flag or use correct mode | </error_codes>
<success_criteria>
-y no blocking prompts</success_criteria>
<next_step_routing> | Condition | Next | |-----------|------| | Single-file mechanical fix discovered | /maestro-companion "<fix>" | | Discovery issues created | /maestro-issue list --source {mode}-odyssey | | Deeper debug needed (from any mode) | /maestro-odyssey <finding> --mode debug | | Security findings need remediation | /maestro-odyssey <finding> --mode improve | | Formal review of changes | /maestro-odyssey <changed-files> --mode review | | UI-related findings | /maestro-odyssey <component> --mode ui | | Document pattern | /maestro-learn decompose <module> | | Second opinion | /maestro-learn consult <understanding.md> | | Related question | /maestro-learn investigate "<question>" | | Design/perf/arch pattern to persist | /maestro-spec add ui\|coding\|arch "..." | | Pending decisions | Filter evidence phase=decision status=pending | </next_step_routing>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,026 | 6,092 | +21% | 1 | 1 | 0% | 305 | 4,427 | +1351% | 0 | 0 | — |
case-02 | fail→fail | 11,017 | 7,878 | -28% | 1 | 1 | 0% | 976 | 4,801 | +392% | 0 | 0 | — |
case-03 | fail→fail | 16,378 | 5,345 | -67% | 1 | 1 | 0% | 2,425 | 4,286 | +77% | 0 | 0 | — |
case-04 | fail→fail | 16,592 | 8,472 | -49% | 1 | 1 | 0% | 3,017 | 4,221 | +40% | 0 | 0 | — |
case-05 | fail→fail | 8,898 | 16,667 | +87% | 1 | 1 | 0% | 889 | 4,988 | +461% | 0 | 0 | — |
case-06 | fail→pass | 12,124 | 11,695 | -4% | 1 | 1 | 0% | 1,759 | 5,173 | +194% | 0 | 0 | — |
case-07 | fail→fail | 13,528 | 12,860 | -5% | 1 | 1 | 0% | 1,155 | 5,526 | +378% | 0 | 0 | — |
case-08 | fail→fail | 4,111 | 6,997 | +70% | 1 | 1 | 0% | 647 | 4,491 | +594% | 0 | 0 | — |
case-09 | fail→pass | 7,209 | 10,240 | +42% | 1 | 1 | 0% | 1,120 | 5,937 | +430% | 0 | 0 | — |
case-10 | fail→pass | 7,513 | 3,112 | -59% | 1 | 1 | 0% | 1,094 | 4,551 | +316% | 0 | 0 | — |
case-11 | fail→pass | 10,665 | 4,587 | -57% | 1 | 1 | 0% | 1,466 | 4,687 | +220% | 0 | 0 | — |
case-12 | fail→pass | 7,358 | 2,695 | -63% | 1 | 1 | 0% | 1,045 | 4,454 | +326% | 0 | 0 | — |
case-13 | fail→fail | 2,527 | 10,252 | +306% | 1 | 1 | 0% | 325 | 4,667 | +1336% | 0 | 0 | — |
case-14 | pass→pass | 14,896 | 11,218 | -25% | 1 | 1 | 0% | 2,258 | 5,678 | +151% | 0 | 0 | — |
case-15 | pass→pass | 5,965 | 7,538 | +26% | 1 | 1 | 0% | 932 | 5,171 | +455% | 0 | 0 | — |
case-16 | pass→fail | 14,030 | 7,708 | -45% | 1 | 1 | 0% | 2,248 | 4,651 | +107% | 0 | 0 | — |
case-17 | pass→fail | 17,837 | 7,650 | -57% | 1 | 1 | 0% | 3,101 | 4,369 | +41% | 0 | 0 | — |
case-18 | pass→fail | 12,169 | 8,338 | -31% | 1 | 1 | 0% | 1,693 | 4,325 | +155% | 0 | 0 | — |
case-19 | fail→fail | 3,770 | 6,467 | +72% | 1 | 1 | 0% | 524 | 4,513 | +761% | 0 | 0 | — |
case-20 | fail→fail | 4,192 | 7,400 | +77% | 1 | 1 | 0% | 563 | 4,419 | +685% | 0 | 0 | — |
case-21 | fail→fail | 7,265 | 10,164 | +40% | 1 | 1 | 0% | 771 | 4,777 | +520% | 0 | 0 | — |
case-22 | fail→pass | 15,930 | 3,052 | -81% | 1 | 1 | 0% | 2,227 | 4,411 | +98% | 0 | 0 | — |
case-23 | fail→pass | 14,298 | 2,481 | -83% | 1 | 1 | 0% | 1,992 | 4,344 | +118% | 0 | 0 | — |
case-24 | pass→pass | 12,090 | 3,757 | -69% | 1 | 1 | 0% | 1,842 | 4,534 | +146% | 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. 24 cases were attempted, and 14 counted toward the lift figure. The other 10 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 +17 percentage points is the difference between those two pass rates over the 14 comparable cases. 4 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.
Other measured skills in the registry, with their headline benchmark lift.