AI Guides › Playbooks
By Nigel Guy · 7 min read
The usual way to build "a team of AI employees" is to write one enormous brief, call it a manager, and hand it everything: find the leads, write the replies, check the facts, send the emails. It feels efficient because there is only one thing to set up. It fails quietly, because when the output is wrong you cannot tell which duty went wrong, and the same agent that wrote the draft is the one marking its own homework.
The rule: every agent gets exactly one job, one set of tools that job needs and nothing else, and one file it hands over to the next agent. If you cannot say the job in one sentence, it is two agents.
This topic comes from a creator's description of four agents each running a business task daily. We could not verify that setup, its roles or its results, so none of it is repeated here. What follows is the durable, checkable part: how to split work across single-job agents using features documented by Anthropic for Claude Code, and a clearly hypothetical example to show the mechanism.
A Crew Card is a one-page table with one row per agent. Fill in every cell before you build anything. A blank cell means the agent is not ready.
| Cell | What goes in it | Why it exists |
|---|---|---|
| Job | One sentence, one verb | Stops scope creep |
| Reads | The single file or folder it takes in | Defines the handover in |
| Writes | The single file it produces | Defines the handover out |
| Tools | Only what the job needs | Limits damage if it misbehaves |
| Cannot | The one thing it must never do | Your guardrail, written down |
| Stop rule | When it stops and says "blocked" | Prevents guessing |
"Reads the day's enquiries and sorts them into a list" is a job. "Handles customer stuff" is a department. If your sentence needs "and", split it.
This is the part people skip. In Claude Code, a subagent starts fresh. According to the subagent documentation it receives its own system prompt, the task message from the main session, your CLAUDE.md files and a git status snapshot. It does not receive your conversation history. So an agent cannot "just know" what the previous agent concluded. Make each agent write its result to a named file, and make the next agent read that file. A handover you can open and read is also a handover you can audit.
Subagents are Markdown files with YAML frontmatter, stored in .claude/agents/ for one project or ~/.claude/agents/ for all your projects. Only name and description are required. The tools field restricts what the agent can use, disallowedTools removes some, and model lets you pick a cheaper model for simple jobs. Anything it should not touch, leave off the list. A checking agent usually needs read-only tools; a drafting agent needs to write files but not send anything.
Write it in the body of the agent file, in plain words, and repeat it in the stop rule. Here is a reusable brief for one agent. Fill in the square brackets.
You are the [AGENT_ROLE] for [BUSINESS_NAME], a [BUSINESS_TYPE] based in the UK.
Your single job: [ONE_SENTENCE_JOB]. You do nothing else.
Input: read only [INPUT_FILE_OR_FOLDER].
Output: write only [OUTPUT_FILE], using this format:
[OUTPUT_FORMAT, for example a table with columns Item, Status, Reason]
A good result looks like this: [DEFINITION_OF_DONE].
Rules:
1. Follow this order: [STEP_1], then [STEP_2], then [STEP_3].
2. Never [THE_ONE_THING_YOU_MUST_NOT_DO].
3. If the input file is missing, empty or unclear, write "BLOCKED: [reason]" to the output file and stop. Do not guess or invent missing details.
4. Mark anything you are not sure of as "UNSURE" rather than filling the gap.
Before you finish, check: did I only use the input file, did I produce every column in the format, and did I mark every uncertain item? Fix any gap, then stop.
Make one agent whose only job is to read the drafter's output against the input and list problems. Give it read-only tools and no write access to the draft. An agent that can both write and approve is not a check.
Claude Code gives you three documented options. Pick by where the work has to happen.
| Option | Runs on | Needs your machine on? | Minimum interval |
|---|---|---|---|
| Routines (cloud) | Anthropic-managed cloud | No | 1 hour |
| Desktop scheduled task | Your machine | Yes | 1 minute |
/loop in a session |
Your machine, open session | Yes | 1 minute |
Routines are in research preview at time of writing, so behaviour and limits may change. They are available on Pro, Max, Team and Enterprise plans; check the plan page for the current £ price at checkout. You create them at claude.ai/code/routines or with /schedule in the CLI. Two traps from the documentation: a routine runs autonomously with no permission prompts, and all your connected connectors are included by default, so remove every connector the routine does not need. Also, a green status only means the session started and exited without an infrastructure error, not that the task succeeded; open the run and read what happened.
Recurring /loop tasks expire after seven days, so do not treat them as permanent.
Imagine a small UK online shop selling printed tea towels, run by one person. The scenario is invented for illustration.
| Agent | Job | Reads | Writes | Cannot |
|---|---|---|---|---|
| Sorter | Sorts today's customer emails into order, delivery, complaint and other | inbox/today.md |
work/sorted.md |
Reply to anyone |
| Drafter | Writes a reply draft for each sorted item | work/sorted.md |
work/drafts.md |
Promise refunds or dates |
| Checker | Compares each draft with the original email and the shop's returns policy | work/drafts.md, policy.md |
work/review.md |
Edit the drafts |
| Packer | Turns approved drafts into a one-page morning summary for the owner | work/review.md |
out/morning.md |
Send anything |
The day runs in order. Early morning, a routine or scheduled task starts the Sorter. Each agent finishes and leaves its file. The Checker flags a draft that offers a refund the policy does not allow. The owner reads morning.md with a coffee and sends the replies by hand. Nobody has to watch, but nothing leaves the building unreviewed.
The trap is the handover that looks fine. If the Sorter quietly mislabels a complaint as "other", every downstream agent works perfectly on the wrong input, and the Checker only compares drafts to the sorted list. Fix this by giving the Checker the original source too, and by having the Sorter count items in and items out. A mismatch in the count is your cheapest alarm.
A second trap is nesting. By default, subagents can spawn further subagents up to three layers deep. If you did not design that, remove the Agent tool from the agent's tools list so each one finishes its own work.
memory field exists, but a crew that remembers things you cannot see is harder to audit. Add it only where one specific job needs it.