delegation-detail
Skill2 starsChanged 35 days agoMITView on GitHub
Use before writing any Agent brief or deciding whether to delegate, split or fan out work - brief shape (files to read first, what you left alone), when delegating pays, unit cap, parallel launch, liveness of a running delegate, impl loop and review/browser gates before a commit.
In this repository21 other files it gives its agents.
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 52
When routing an implementation part, check whether it splits into N units of the same agent type, and fan out when all three hold: (1) the …
- Distinctive: line 70
Read-only or measurement units have no count cap.
- Distinctive: line 91
Not for read-only delegates, prose, layout, file moves or config edits.
- Very specific: line 99
Never to a low-effort agent: a low-effort implementer repeated the same wrong quantifier and missed boundary cases, all gate-green.
- Distinctive: line 110
Brief against decision: Before launching a brief that carries a decision from the user, write one line: "brief says X, user said Y".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Delegation detail
How to brief, size, launch and gate delegates. The routed agents ship with the plugin and
are named aidex:<name> in subagent_type: aidex:artifact-sonnet, aidex:backlog-filer,
aidex:bugfix-opus, aidex:figure-sonnet, aidex:gate-runner, aidex:impl-sonnet,
aidex:lookup-sonnet, aidex:research-sonnet, aidex:review-diff-opus,
aidex:smoke-sonnet, aidex:synthesis-sonnet, aidex:task-general,
aidex:verify-browser-opus, aidex:verify-browser-sonnet.
The brief
A brief names paths, never "the file we discussed": goal, where to work, what to read first, what is forbidden, how to verify, what to return. Use a fresh agent always; a fork only when what the task needs exists nowhere but in this conversation (a fork costs several times a fresh agent). Two parts are load-bearing; keep them as named sections, not sentences in a paragraph:
- "Files to read first", as the brief's own first step. The same sentence buried in a lead paragraph is not acted on; as a named first step the canon actually gets read.
- "what you deliberately left alone", inside what to return: every defect or edge the delegate saw and did not touch, one line each, no fix. A delegate is fresh by construction, and a fresh context is the one that lacks the caution a long session builds up, so this section is what restores it, for a small extra cost. Say it in your own session's work too while the context is still young.
When delegating pays
A delegate costs a brief (about one turn) plus a short reply. Doing the work here costs every call times the current context depth, and that output is re-read on every later turn. So: delegate when re-reading your context costs more than a brief. Early in a session, with a small context, keep a short job here unless the part is itself token-heavy (a transcript sweep, a long command's output). Late in a session, or on a model that charges a lot to re-read context, the balance flips and delegating is cheaper. This skill states the principle, not a per-model depth table: prices change and the numbers behind such a table are the owner's own ledger.
Unit cap
One delegate, one unit of at most about 80 turns. A plan phase or one backlog item, never "phase 4 plus propagation". A bigger unit is cut into serial delegates, or parallel ones on disjoint files. A delegate's own context grows every turn, so long runs cost more per turn and lose more than short ones; most of the observed loss was in delegates of 120+ turns, which is why the cap matters more than any depth floor.
Cut by size, not only by kind
When routing an implementation part, check whether it splits into N units of the same agent type, and fan out when all three hold: (1) the units touch disjoint files and share no stateful gate; (2) each is a real unit on its own, roughly 25+ turns with its own test; (3) time matters now - someone is waiting or the next step is blocked on it. Any condition missing: one delegate. The main session makes this cut; no coordinator agent does (it pays its own context cost and cannot spawn).
Parallel launch
Independent units always launch together. Units that are already separate - read-only ones, or ones on disjoint files sharing no database, port, browser or other stateful gate - go out in one message, whatever their size or urgency. The three conditions above govern only whether to split ONE unit; launching units that would be delegated anyway costs no extra tokens. Before every launch, one line: what this unit reads that another pending unit writes; if anything, it waits for that hand-back.
- Writers get one worktree each; this session integrates them in order. Never let a delegate commit.
- Read-only or measurement units have no count cap.
- ONE browser unit at a time: the shared browser page is global state.
- Writers in worktrees: soft cap of three, because this session reviews and integrates them serially.
Liveness
"Is it still alive" is answered by reading the delegates' transcripts or the harness's
agent status view (0 tokens), never by pinging the agent with SendMessage, and never used
to decide it finished; only its own hand-back says that. Check when the user asks, or once a
delegate passes about 30 minutes of wall time, then every 15 minutes. Stale means a tool
past its timeout by a minute, or 15 minutes with no record while waiting on the model:
stop it with TaskStop and relaunch the same brief. Almost every delegate that looks hung
is waiting on its own shell command; the agent definitions forbid sleep-poll loops for that
reason.
Gates before a commit
- Predicate shape goes to
aidex:review-diff-opusfirst: a diff that adds or moves a comparison, a quantifier, a boundary or a null/empty branch inside a predicate. Gate-green diffs of exactly this shape hid the defects found in review, whatever model wrote them. Not for read-only delegates, prose, layout, file moves or config edits. - A diff that changes what a screen does goes through the browser before the commit:
aidex:smoke-sonnetfor behaviour (the flow the diff touched),aidex:verify-browser-sonnetfor measurable appearance,aidex:verify-browser-opusfor judgment-only appearance. The diff reviewer reads predicates and cannot see UI behaviour.
Implementation goes to aidex:impl-sonnet at medium effort
Never to a low-effort agent: a low-effort implementer repeated the same wrong quantifier and
missed boundary cases, all gate-green. aidex:review-diff-opus stays on opus and stays
mandatory for the predicate shape; it is the net. Lookups and syntheses keep a cheap
model at low effort. The line is the task, not the model: anything whose correctness a
gate cannot check goes to a medium-effort agent and through aidex:review-diff-opus.
The impl loop while someone waits
Most of the wall time per answer is serial review, E2E inside the implementer and a brief that narrowed the decision, not code writing. Five moves:
- Brief against decision. Before launching a brief that carries a decision from the user, write one line: "brief says X, user said Y". Fix any narrowing before launch.
- No E2E in an impl brief. "Tests that must pass" names the changed tests, the affected
selection, the type check and lint. E2E specs the change hits run on
aidex:gate-runneronce per merge, in parallel with the review. - On an impl hand-back, launch together:
aidex:review-diff-opus(when its shape applies) andaidex:gate-runnerfor E2E (at merge). A DO NOT SHIP verdict goes back to the same impl agent throughSendMessage, never a fresh one. - The review brief carries the diff's file:line list and the prior round's verdict, so the reviewer starts where the last one stopped. It may still read beyond the list.
- One answered page, one impl brief. Answers to one consultation round go out as one brief, never one per answer.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

