agent-design
Skill2 starsChanged 3 months agoMITView on GitHub
How to build an AI agent that actually works — start with a decision-map that forces a singular outcome (or splits into multiple agents), design one in-session, then optionally fan out parked agents in parallel after confirm. Locks Task · Context · Memory · Eval. Use when designing, building, reviewing, or debugging an LLM agent, subagent, tool-using assistant, or skill. For the fill-in template see reference/agent-spec-template.md.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- mariomile/builder-ostheir own version, first seen Nov 1, 2026
- xiaolai/cc-suitetheir own version, first seen Oct 19, 2026
- bingyue/fde-skillstheir own version, first seen Oct 13, 2026
- The-Utopia-Studio/skillstheir own version, first seen Oct 13, 2026
- nimadorostkar/Claude-Skills-collectiontheir own version, first seen Oct 13, 2026
- BULDEE/ai-craftsman-superpowerstheir own version, first seen Sep 21, 2026
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- wibus-wee/cradle-app★ 75same name
- nahid-sparktales/agent-dispatcher★ 59same name
- xiaolai/cc-suite★ 56same name
- BULDEE/ai-craftsman-superpowers★ 35same name
- nimadorostkar/Claude-Skills-collection★ 33same name
- The-Utopia-Studio/skills★ 6same name
- bingyue/fde-skills★ 5same name
- Minions-Land/Soup_Drinking★ 4same name
- tienenwu/fables★ 4same name
- gmanch94/claude-code-aidlc-template★ 2same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository2 other files it gives its agents.
- dual-tool-handoffSkill
- render-checkSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 8 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 10 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
Do this before filling the pillars.
- Distinctive: line 51
After the split list is on screen, ask once:
- Distinctive: line 62
Keep designing the in-session agent here (pillars + spec).
- Distinctive: line 66
Use whatever launcher this runtime supports (try in order.
- Distinctive: line 72
Neither available: do not fake parallelism — fall back to the park list and tell the user the runtime can’t spawn.
- Distinctive: line 121
Prefer a precise, structured hand-off over a document dump.
- Distinctive: line 143
Prefer an *independent* grader from the generator.
- Distinctive: line 156
Run the decision map (section 0) until you have one outcome (or a split list).
“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent design — decision map, then four pillars
Most "I'm not good at building agents" is really "I build them by feel and can't predict whether the next one will be good." The fix is to name the method.
A working agent is four things, and a weak agent is usually missing one:
Task · Context · Memory · Eval.
But first: one agent = one outcome. If you can name two outcomes that succeed or fail independently, you have two agents — each gets its own design pass.
0. Decision map — singular outcome or split
Do this before filling the pillars. Completion criterion: either (a) one singular DONE/FAILED pair locked, or (b) an explicit split list, this session designs one, and parked agents are either fan-out-spawned after confirm or left for later re-entry.
Steps
- Draft the singular outcome in one sentence (what "this agent worked" means).
- List aspects that feel like separate focuses (intake, summarize, notify, …).
- Smell test each aspect: same DONE/FAILED as the draft outcome?
- Same → keep inside this agent.
- Independent success/fail → split into a separate agent name + its DONE.
- Emit one of:
- One agent — proceed to pillars below for that outcome.
- Multiple agents — print the full split table (name · DONE · FAILED). Pick one to design in this session (recommend the dependency-root). Park the rest. Then run §0b Fan-out before or while continuing pillars for the in-session agent.
- Fog vs size:
- One outcome, still foggy (open decisions) → stay in the decision map; resolve open questions one at a time until the outcome is sharp.
- One outcome, too big for one run → still one agent design; use handoff/memory across runs — do not invent a second agent unless the outcome splits.
0b. Fan-out (parked agents → parallel sessions)
Never spawn without an explicit user confirm. Silent fan-out is a failure mode.
After the split list is on screen, ask once:
Spawn parked agents in parallel now? (yes / no — default no)
If no
Print the park list with a one-liner each: Re-enter /agent-design for <name> — DONE: …
Continue pillars for the in-session agent only.
If yes
- Keep designing the in-session agent here (pillars + spec).
- For each parked agent, launch one parallel session whose only job is
/agent-designfor that agent — already locked DONE/FAILED, skip re-smell of the parent mega-job, go straight to pillars + spec. - Use whatever launcher this runtime supports (try in order; stop at first that works):
- Cursor: Task / background subagent — one task per parked agent; prompt must
include agent name, DONE, FAILED, and “run agent-design pillars only; write the
filled spec to a path the user names (default
.scratch/agent-design/<name>.md).” - Claude Code:
claude --bg --name "agent-design:<name>" "<prompt as above>"(or the host’s equivalent background-agent API). - Neither available: do not fake parallelism — fall back to the park list and tell the user the runtime can’t spawn; they re-enter manually.
- Cursor: Task / background subagent — one task per parked agent; prompt must
include agent name, DONE, FAILED, and “run agent-design pillars only; write the
filled spec to a path the user names (default
- Report back: table of parked agent → session id / job name / output path (or “queued”).
- Each parallel session must produce its own filled
reference/agent-spec-template.md(or the agreed path). Do not merge specs into one mega-doc.
Prompt template for each spawned session:
Run /agent-design for agent "<name>" only.
DONE when: <…>
FAILED when: <…>
Parent split context (read-only): <one-line list of sibling agents>.
Skip mega-job smell test; pillars + filled spec only.
Write the completed spec to .scratch/agent-design/<name>.mdWhen not to use this skill
- You already have a locked one-job agent and only need to implement it.
- You want a whole-product roadmap (use a planning/wayfinding skill instead).
- Optional: if you use wayfinder for large multi-decision efforts, chart there first — then return here to design each agent. This skill does not vendor or require wayfinder.
Failure modes
- Mega-agent: multiple DONEs in one spec → split, then fan-out or re-enter.
- Premature pillars: filling Task before the smell test → rewind to step 3.
- Silent fan-out: spawning without listing the split and getting yes → always surface the list and wait for confirm.
- Fake parallelism: claiming sessions launched when no Task/
claude --bg/equivalent ran → say so and fall back to park list.
1. Task — one job, with a bright line for done and failed
An agent needs to know when it's finished and when it has failed, without you. The #1 failure mode is unbounded scope ("fix everything") — it never converges and you can't tell success from drift.
- Give it one job, stated as an optimization target or a deliverable, not a vibe.
- Define the done condition and the failure condition explicitly.
- Diagnostic: Can the agent tell, on its own, when it's done and when it's failed?
2. Context — the minimum that makes the right move obvious
Context engineering beats prompt engineering. Hand the agent exactly the map it needs — no more (burns tokens, dilutes attention), no less (it guesses).
- Prefer a precise, structured hand-off over a document dump.
- Decide what's preloaded vs fetched just-in-time.
- Diagnostic: What's the smallest context that makes the right action obvious — and is each piece preloaded or fetched on demand?
3. Memory — what persists across runs, with a write/read/supersede discipline
Memory is not a junk drawer.
- Decide what must persist between runs vs what's ephemeral to one run.
- Define the write, read, and supersession rules. Supersession is often a safety property — a stale fact that should have been overridden is a bug.
- Audience-scope memory: who/what is allowed to see each piece.
- Diagnostic: What must it remember, who may see it, and what makes a new fact override an old one?
4. Eval — how you know it's good, and how it improves
An agent without an eval is a vibe; an agent with one is a system.
- Deterministic agents: tests / assertions.
- Generative agents: a rubric over a gold set. A bright line can be merge-blocking.
- Prefer an independent grader from the generator.
- Diagnostic: What rubric or test tells you this agent regressed?
Patterns that recur in good agents
- Propose-then-confirm for anything that mutates.
- Reversible + audited.
- Scoped tools (least privilege).
- Guardrails against known failure modes.
- Eval-as-contract for fixers — failing test = definition of done.
The fix for "good by feel"
- Run the decision map (section 0) until you have one outcome (or a split list).
- On a split: design one here; confirm before fan-out (§0b).
- Fill the agent spec + pre-flight checklist in
reference/agent-spec-template.md.
Worked example (product-agnostic)
User wants: "an agent that intakes support tickets, drafts a reply, and posts to Slack."
Decision map smell test:
| Agent | DONE |
| ticket-intake | structured ticket object |
| reply-drafter | draft meeting tone rubric |
| slack-poster | message posted (propose→confirm) |
Independent DONEs → three agents. This session designs ticket-intake. Ask:
“Spawn reply-drafter and slack-poster in parallel now?” — on yes, launch two
background sessions with the prompt template; on no, print the park list.
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.

