agt
Skill1 starsChanged 20 days agoMITView on GitHub
Multi-agent coding orchestrator. `/agt <task>` detects the level (low, medium, heavy), runs the cheapest crew that does the job (planner, executors, reviewers, each on the right model), opens one reviewed PR per slice (merging on green only with `integration: auto`) or escalates, closes every pane it opened, and ends on one card. `/agt next` builds the next backlog item. Typed only.
In this repository5 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- agentille-claude-mdSkill
- agentille-initSkill
- agentille-projectSkill
- stormSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 2 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 53
Profile: Read ~/.agentille/profile.json.
- Distinctive: line 56
Solo steps aside: Do the task yourself: no run dir, no agents (no reviewer either), no card.
- Very specific: line 63
Run dir: Create ~/.agentille/state/run-<id>/ and keep it.
- Distinctive: line 72
Never build a plan the last review did not approve.
- Very specific: line 76
Report, then the card: Write report.md once, never print it, then print the final card (display.md).
- Very specific: line 80
Every agentille:agentille-* dispatch prompt starts with one line:
- Very specific: line 112
After a compaction the mod's hook prints an [agt re-entry] block with the run id and each slice's state from ledger.json: start from it, …
≈ “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
agentille — /agt
One command. Do it yourself when it is small, fan out when it is not, merge or escalate, close everything you opened, end on one card.
Words
- The lead: you, the session that runs
/agt. The agents and panes you dispatch are workers. - Slice: one file-disjoint part of the task, built by one executor on its own branch and worktree.
- Level: how big the crew is: low, medium or heavy ("Levels"). Transport: how its workers run:
solo,subagent,panesorworkflow. Recon: the run's first line, which names both. - The mod: agentille's code that runs inside Claude Code. It routes models, draws the live views, carries messages between panes and closes finished panes.
/agtworks without it. - Band: the mod's live status block above the prompt: one row per agent of the run, and
⚑flags. - Wire: the mod's messages between panes. A pane worker that finishes sends its result to the lead as a message. Harvest: reading a finished worker's answer (its wire message or answer file); its pane closes right after.
- Card: the run's final summary, at most 8 lines (
display.md→ "Final card"). - ⚑: a flag for something that needs the person: on the band as it happens (a REVISE, a FAIL, a blocked pane) and on the card's
⚑line (escalated, PR ready, a P0/P1 left). - Formation: an optional run shape that changes how workers relate: gauntlet, duel or relay (
formations.md). Gauntlet: the formation where an adversary writes tests that try to break a slice before it integrates. - Squad: a group of extra specialist reviewers that joins when the repo matches its signals (
squads.md). - Ladder: the escalation ladder: a role's model or effort climbs after a REVISE or a failed fix (
routing.md→ "Escalation ladder"). - B0: the planner's first, sequential step that lands the files ≥2 slices share (a lockfile, schema, types) before any parallel slice; frozen like a relay contract.
Levels
The first word may force a level; otherwise detect it. First match wins.
| # | Condition | Level · how |
| 1 | first word is low, medium or heavy | that level (the risk gate below still applies) |
| 2 | first word is next | factory loop: factory.md → "/agt next" |
| 3 | verb is review | low · subagent: reviewers in parallel, in the background |
| 4 | verb is debug | low · subagent: the executor's debug loop |
| 5 | ALL hold: one sentence, no architectural verb (refactor, design, architect, migrate, redesign, restructure), no list of deliverables, no auth/money/data words (routing.md → "Risk words": a login form is not auth) | low · solo |
| 6 | ≥2 file-disjoint slices AND (any slice is ≥~30 min of work, needs its own dev server, simulator or browser, or there are >3 slices) | heavy · panes in Herdr or tmux, else workflow (transport-workflow.md), else subagent waves |
| 7 | ≥2 file-disjoint slices, each small | medium · subagent |
| 8 | otherwise | Stage 2 classify (routing.md) |
- low: solo, or one executor plus the reviewers its diff needs. A forced
lowon a multi-slice task builds the slices one after another with one executor. - medium: planner, then up to 3 executor subagents at once (each in its own worktree), then the review fan-out.
- heavy: planner, then one pane per slice through
spawn_pane(transport-panes.md), at most 3 at once like medium. Planners and reviewers stay subagents. Slices merge one at a time. Heavy differs from medium by panes, not by width: a real session per slice in its own worktree, the live wire, and resume. A task that asks for Codex workers runs heavy (transport-panes.md→ "Codex workers"). - Risk gate: auth, money or data work (
routing.md→ "Risk words") never runs solo, and runs the gauntlet when the repo has a test runner (formations.md). A screen merely named login or checkout isrisk=none. - Two flags:
--fable(routing.md→ "Escalation ladder") and--local, which runs this one /agt asintegration: localwhatever the profile says,projects[]entries included: each slice is built on its own branch and merged into the branch you were on with a merge commit; nothing is pushed and no PR is opened. The mod holds it for you and your subagents; say it in each pane worker's task. Older flags still work: "Deprecated" at the end.
Print the recon line before anything else: recon: <level> · <transport> · <one-clause reason>, where transport is solo, subagent, panes or workflow (display.md → "Mid-run lines").
The contract
- Profile. Read
~/.agentille/profile.json. Missing or unreadable → defaults (deliveryStyle: direct,tone: peer-to-peer,preTaskQuestioning: ambiguous-only,thinkingDepth: complex-only); never stop. With no voice keys (name,role,deliveryStyle,tone,preTaskQuestioning,neverDo) and no~/.agentille/state/.tip-shown, printtip: /agentille-init makes agents sound like youonce and create that marker, unless the mod draws (display.md). - Level. Resolve it with "Levels" and print the recon line.
- Solo steps aside. Do the task yourself: no run dir, no agents (no reviewer either), no card.
Before the push (under
local, before you report), review your own full diff once: it does what the task asked, nothing outside it changed, and the check you ran (build, test or the real command) passed. Fix what you find in place and re-run that check. The fix lands on a newfix/<slug>branch, oragt/<slug>when the current branch is a feature branch. It lands on the current branch only when the person's typed words name it, and never on main. Underprit opens a PR; every other mode works asfactory.md→ "Integrate" says. A solo bug follows the executor's loop: reproduce with the real command and quote the failing line, form one hypothesis ("X because Y"), make the smallest change, re-run. Three misses → stop, name the assumption that may be wrong, and say so. Never try a fourth blind fix. This is the executor's own rule (agents/agentille-executor.md→ "Debugging");/agt debugruns the full loop. - Clarify only when genuinely ambiguous (never with
preTaskQuestioning: never; up front withalways). Explore first; ask at most 3 questions, each with a recommended default. - Roster, formation, models →
routing.md. Start every dispatch with the header below, plus the profile prefix unless every value is a default. - Run dir. Create
~/.agentille/state/run-<id>/and keep it. When a planner ran, write its CONTEXT-PACK tocontext-pack.mdthere. Give each executor only its slice pluscheckpoint: ~/.agentille/state/run-<id>/checkpoint-<name>.md. - Scout, plan, then review it.
- Scouts are optional, on medium and heavy only. Send them when the task names no files and the planner would have to map unfamiliar ground in ≥3 areas.
- Send at most 3
Exploresubagents withmodel: haiku, as one message of background calls. Each gets one question ("which files wire X?") and answers in ≤15 lines of paths and facts. Hand their answers to the planner underSCOUTS:. - The plan carries numbered ACCEPTANCE criteria. The plan-reviewer is skipped on
thinkingDepth=quickand for a ≤3-step fully sequential plan (routing.md→ "Roster"), and that plan builds as written. APPROVE → build. - A first REVISE → re-plan, then review again.
- A second REVISE → re-plan once more. Send that third plan to the plan-reviewer one last time on Opus: one call, with
size=largein its header (so the mod routes it to Opus) andmodel: opus. - A third REVISE stops the run before any build. The card's first line is
✗ plan not approved after 3 reviews. Its⚑line is⚑ plan not approved: <reason 1> · <reason 2> · <reason 3>, one clause per REVISE. - Never build a plan the last review did not approve.
- Build, then review, in dependency order, pipelined: review each finished slice while the others build. Every reviewer a slice needs goes out in ONE message as parallel background
Agentcalls. Fix rounds resume the same executor (factory.md→ "Fix rounds"). - Gate and integrate. P0/P1 block. Then the escalate checklist decides merge or ⚑ (
factory.md→ "Gate" and "Integrate"). The profile setsintegration, and a repo can only lower it. Remove each slice's worktree once the gate decides (factory.md→ "Worktree lifecycle"). - Close everything. Close each
agt-<run>-*pane the moment its answer is harvested, then confirm the run lists zero panes (transport-panes.md→ "Harvest, then close").TaskStopevery subagent once nothing will message it again, and any still listed before the card (factory.md→ "Stop finished subagents"). - Report, then the card. Write
report.mdonce, never print it, then print the final card (display.md). That card is the only end-of-run output.
Dispatch header
Every agentille:agentille-* dispatch prompt starts with one line:
[agt run=<id> size=<small|large> risk=<none|auth|money|data> work=<build|fix|diagnose|review|research> fable=<auto|forced> formation=<none|duel|gauntlet|relay> slice=<slug>]
size=large: plan ≥6 steps or a shared contract, a third plan's review, or a diff with logic in >1 file, >~150 LoC, or a public API/schema change.risk:routing.md→ "Risk words" (sessions, tokens, guards →auth; payments, webhooks →money; migrations →data; a form or page with no such logic →none).work=is the work type:work=fixon every fix round, including aSendMessageto the kept executor (aRESUME:after an early stop stayswork=build);diagnosefor the read-only root-cause planner. The older spellingmode=is still read the same way.fable=forcedonly when the user typed--fable.slice=<slug>(lowercase, ≤24 chars) names the slice: its executor, adversary and reviewers share it. Omit it for planning roles and single-slice runs.
With the mod loaded it routes model + effort from this line. Still pass model: every time: the skill must work with mods off.
Profile prefix (skip it when every value is a default and neverDo is empty; add the third line only when preTaskQuestioning or thinkingDepth is not its default, with both values):
User: <name> (<role>). Avoid: <neverDo, verbatim>.
Communicate: <deliveryStyle>, <tone>.
Ask: <preTaskQuestioning>. Depth: <thinkingDepth>.Hard rules
- Honor
neverDo(a worker knows only what its prompt carries). Absolute; pass it verbatim into every dispatch. - Review gate: P0/P1 block; P2/P3 advisory (a P0/P1 that ships is a defect the person finds after the card called it done). Fix every P0/P1 and confirm the fix. If it cannot or should not be fixed, put it on the card's
⚑line; never call it shipped. - Never commit to
maindirectly (a direct commit skips the review gate and the person's integration mode). Work lands through a branch and a PR or a local merge (factory.md→ "Integrate"). - Never let an agent push through context pressure (an agent near a full window writes subtly worse code). An executor that reports
CONTEXT …is replaced by a fresh one seeded from its checkpoint and slice. - At most 3 executors at once (each is a full session, ~500–700 MB as a pane, and slices still merge one at a time). Batch the rest in waves; the mod refuses a fourth executor subagent (
agt ✗ … a 4th executor at once is refused) and flags it on the band. - Executor is never Haiku (it writes the code that ships); Haiku only classifies and scouts (read-only). Fable comes only from the ladder or
--fable(Fable costs about twice Opus). - Foreground when it gates (the next step cannot start without that result, and independent ones lose nothing by going out together). A dispatch whose result feeds the next step runs in the foreground; independent dispatches go out as one message of background calls, then one wait.
- Mods off still works (the skill also runs where the mod is off or cannot draw, such as
claude -p). The mod only adds the band, routing, the wire between panes and the automatic pane cleanup. What the lead does itself without it:no-mod.md. - Never close a pane you did not open (a pane the person opened holds their own work). The
agt-prefix is ownership. - Re-enter from the files, not from memory (a compaction's summary can drop which slices are done and which are still building). Do it after a compaction or a
/clear, and whenever you cannot name the current slice and its state. Before the next dispatch, re-read the sections you need of this file,routing.mdandfactory.md. Then readrun-<id>/context-pack.md, the mod'sledger.jsonandrouting.jsonlwhen present, andgit log $BASE..<branch>for each slice branch still there. After a compaction the mod's hook prints an[agt re-entry]block with the run id and each slice's state fromledger.json: start from it, then read the files above. - Never re-dispatch a finished slice (a lead that lost its place after a compaction would rebuild finished work). A slice is done when its branch has a PR (
gh pr list --head <branch> --state all) or is merged into$BASE. A deleted branch whose merge is ingit log $BASEcounts as merged. A slice whose executor report underrun-<id>/agents/carriesVERIFICATION:is built: it goes to review, not to a new executor.
Deprecated
Still honored when typed, never suggested:
--mode solo|subagent|panes|herdr(= low|medium|heavy|heavy),--plan(stop after the plan review; "go" resumes it),--formation <f>(that formation): each deprecated; removed in 4.0.0.- In the dispatch header,
mode=forwork=andpiece=forslice=: deprecated; removed in 4.0.0.
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.

