A plugin for Claude Code
Maestro
He never touches the code. That is the point.
Your session gets heavy because it reads everything. Six hundred lines of log, three failed test runs, a whole file you needed one function from. By mid-afternoon the conversation is sludge.
Maestro reads none of it. He sends each job to a worker in its own private copy of your repository — same history, separate folder, your files untouched. The worker reads the mess. Then a different model, from a rival company, has to be convinced before one line lands in your branch.
What comes back to you is a paragraph and a receipt. Your conversation stays clean. That is the whole design.
Panic is a scheduling error. I don’t schedule it.
01 The Trick
Three rules he does not bend.
-
i
He never implements.
Not once. Not “just this small fix.” Every job is written up — what to build, what counts as done — and handed out. He keeps the shape of the work. The workers keep the detail. Neither carries the other’s head full of context.
-
ii
Nobody signs their own work.
The reviewer always comes from a different model family than the author. Claude wrote it, GPT or Gemini reads it. The script that closes a job checks the families itself, and refuses to record a same-family review as independent.
-
iii
“It works” is not a sentence.
It is a command that ran, with an exit code, stamped by the only script allowed to stamp it. Not in the record? It didn’t happen. The record sits on disk in
.maestro/and you can read it without asking anyone.
He will recite them if you ask. He would rather not have to.
02 The Roster
Thirty-one workers. None of them you.
The roster is filled the day you install him and never improvised mid-job. Every job is sized first — recon, mechanical, standard, expert, apex — and the size decides who does the work, at what effort, and which reviewer is strong enough to judge the result.
That routing is written down before anything starts. So when a session dies, the restart reads what was supposed to run instead of guessing.
| Role | Names | What they do |
|---|---|---|
| The Claude builders | executor-claude-mech executor-claude-standard executor-claude executor-fable-low executor-fable | Sonnet 5 for small and standard work, Opus 5 for hard problems and anything with an interface, Fable 5 for escalation and the biggest jobs. |
| The GPT builders | executor-luna executor-terra executor-sol-expert executor-sol-apex | GPT-5.6 via Codex CLI, one rung per size. Ships asleep; the lane opens once it is verified and switched on. |
| The wide-context builder | executor-gemini | Gemini 3.1 Pro. Large context, and the one that spreads authorship around. |
| Reviewers of GPT and Gemini work | reviewer-claude reviewer-claude-expert reviewer-claude-apex | Sonnet 5, Opus 5, Fable 5 — one rung per size, never below the job being judged. Claude Code is the runtime, so this lane is always reachable. |
| Reviewers of Claude and Gemini work | reviewer-terra reviewer-sol-expert-rev reviewer-sol-apex-rev | GPT-5.6 via Codex CLI, one rung per size, asleep with the rest of that lane. |
| Reviewer of Claude and GPT work | reviewer-gemini | Gemini 3.1 Pro. Standard work and below, whoever wrote it; the two biggest sizes never route here. |
| The fallback reviewers | reviewer-degraded-opus reviewer-degraded-sonnet reviewer-degraded-opus-apex reviewer-degraded-fable-apex | For when no rival family is reachable at all: a fresh Claude reviewer on a different Claude model, blind to the author’s transcript. Always labelled, never counted as the real thing. |
| The planner | planner | Turns “fix everything” into numbered jobs with acceptance criteria. |
| The closed room | convergence plan-counterpart | When two workers disagree, two families with no stake in it take independent positions — two passes, no more — and come out with one answer, or bring you both. |
| The context-keeper | context-keeper | Remembers what you meant, not just what you said. Answers the workers so they don’t reach you. |
| The scout | scout | Fast, cheap, reads everything, touches nothing. |
| The researcher | researcher | Comes back with citations or doesn’t come back. |
| The crystallizer | crystallizer | Reads the whole pile so nobody else has to; hands back one page. |
| The recorder | handoff-recorder | Writes down how the session ended. Every ending, one entry, no poetry. |
| The fleet medic | fleet-medic | Checks the roster against what is actually running: alive, dead, or pretending. |
| Oscar | maestro | Dispatches. Implements nothing. There is a law against it. |
Sixteen agent files hold every role above — several share one file and differ only in the model and effort the routing hands them.
03 The Record
Not in the record? It didn’t happen.
This is the one point he is severe about. The file below only ever grows — nothing is edited, nothing is quietly dropped — and it is the session’s memory. A claim without a stamp beside it is gossip.
01 {"seq":41,"kind":"mission-open","payload":{"mission_id":"m-014","title":"rate-limit /export"}}
02 {"seq":42,"kind":"route","payload":{"phase":"author","task_class":"standard","resolved_seat":"executor-claude-standard","reserved_review":{"seat":"reviewer-gemini"}}}
03 {"seq":43,"kind":"gate","payload":{"cmd":"npm test","exit_code":1}}
04 {"seq":44,"kind":"revise-verdict","payload":{"seat":"reviewer-gemini","detail":"round 1"}}
05 {"seq":45,"kind":"gate","payload":{"cmd":"npm test","exit_code":0}}
06 {"seq":46,"kind":"stop","payload":{"stop_state":"DONE","reporter":"maestro"}}
Six lines. The whole morning. Line 02 was written before the worker existed — who would do the job and who would judge it, decided and recorded first. A gate line is a command that ran and the code it exited with, so line 03 is a failure — kept at exactly the same volume as the success on line 05. Every line also carries a timestamp and an id, trimmed here for width.
04 Recovery
Close the laptop whenever you like.
Mid-sentence, out of context, in a temper — it makes no difference. Send every worker home at midnight if you want to. At dawn, fresh workers read the record, check the roster against what is actually still running, and resume at the exact step where the work stopped.
A restart is bookkeeping. Not re-planning.
Why that works
Every worker commits after each coherent step, in its own copy of the repo, and writes one line saying where it got to:
{ step, done_evidence, next }
So the cost of a crash is set by how finely the work was cut up — never by how large the job was.
05 Review
Convince a stranger, or it doesn’t land.
Whoever wrote it does not get to approve it. The reviewer comes from a different model family than the author, and the closing script works out both families from the routing config rather than believing what the record says about itself.
When no rival family is reachable at all, the work is not held hostage to that: review drops to a fresh Claude reviewer with no access to the author’s transcript, usually on a different Claude model. That is a lower bar and it is named as one — recorded as degraded-path, counted separately, never called independent.
-
claude
plans, reviews, paints
reviewed by gpt · gemini
-
gpt
implements, reviews — ships asleep
reviewed by claude · gemini
-
gemini
large context, rotation
reviewed by claude · gpt
And when they can’t agree
- 1 The reviewer says revise. The same worker picks it back up — same session, same memory. Twice at most, because a third round is rarely new information.
- 2 Someone tries a genuinely different approach. Not the same idea in new words: if it can’t be said as “instead of A, try B,” it will fail the same way.
- 3 Two families with no stake in the argument take independent positions, then reconcile. Two passes, hard cap.
- 4 Small disagreements park with their evidence and the work moves on. Only a foundational one reaches you — with both positions quoted, because a summarised disagreement is a decided one.
One exception, deliberate: confusion about what you meant skips all of it and arrives straight away, as one precise question. Guessing your intent is how a session ships the wrong thing, beautifully.
06 Install
Two commands. Then ask for something.
1 Engage him.
claude plugin marketplace add Fredasterehub/maestro
claude plugin install maestro@maestro
Installed once, at user scope — every session is met at the door. claude plugin update maestro@maestro when a new version lands.
2 Clear the field.
Remove any competing orchestration layer from your global CLAUDE.md first. Two of them in one session will spend it arguing about who is in charge.
3 Ask for something.
There is no setup interview. State appears in .maestro/ on first use, and /maestro:doctor will tell you the truth about your install without changing a thing.
/maestro:statusneeds you · just landed · still moving · waiting in line/maestro:handoffeverything worth keeping, moved somewhere durable/maestro:doctorinstall and state health/maestro:auditthe record read back at you: revise rates, first-pass rate by size, degraded reviews, workers lost in service
07 The Trees
Nothing is built where you are sitting.
Every job goes out to its own private copy of the repository — same history, separate folder — and nothing comes back until a reviewer from another family signs for it.
Then the close proves the landing rather than trusting it. Your branch has to carry the exact reviewed commit, or a squash with that commit’s fingerprint; nothing else may ride in under the same signature, and a repository with uncommitted changes does not close at all.