Cindy Zhu.
Free guides
Building & apps Claude

Build a scriptwriting team inside Claude

Hey, it's Cindy ๐ŸŒฑ This is a scriptwriting team inside Claude: a researcher that only hunts facts, a drafter that writes only from what it found, and a critic that sends the draft back.
btw the waitlist for AI System Club is now open! If you're keen on using AI to automate your content, video editing, job search, business or build AI agents, feel free to sign up (only if you want to hehe). Ps. the waitlist gets first dibs:)
the problem

Why one chat gives you a mid draft

When you ask a single chat to research, write and edit in one go, everything ends up in one pile of context. The half-remembered facts, the rejected first hook, your feedback on paragraph two, the tone note you gave five messages ago: it is all sitting there, and every new sentence gets written with all of it pressing in at once. The result is a draft that hedges, averages, and sounds like it was written by a committee, because in a sense it was.

The other half of the problem is that you cannot properly criticise something you wrote yourself moments ago. A chat that produced the draft is being asked to attack its own work, and it will find three polite, cosmetic things wrong with it. That is not a critique, it is a compliment with notes.

๐Ÿ’ก The fix is separation, not a better prompt. Give each job its own worker with its own clean memory and its own single instruction. The researcher never sees the draft. The critic never sees the research process. Each one does one thing with nothing else in its head, and the handoffs between them are where the quality comes from.

the mechanism

What a subagent actually is

Claude Code lets you create subagents: specialists you define in a small Markdown file. Each one runs in its own separate context window with its own system prompt, so nothing bleeds between them. You are not writing code, you are writing a job description.

๐Ÿ“„ One file each A subagent is a single .md file with a few lines of settings at the top and your instructions underneath. That is the entire thing.
๐Ÿง  Its own clean memory Each subagent runs in its own context window, so the critic never inherits the drafter's excuses and the drafter never inherits the researcher's dead ends.
๐ŸŽฏ A description that triggers it The description line tells Claude when to hand work to this agent. It is the single most important line in the file, and vague ones never get called.
๐Ÿ”ง Its own tool access You can allowlist tools per agent. Giving the researcher web search and the critic nothing but reading rights keeps each one in its lane by construction, not by hope.

All of this is documented in Anthropic's subagents docs, which is the reference to keep open while you build.


the proof

This is not a theory

Anthropic built its own research system on exactly this shape: a lead agent that plans and delegates, with specialist subagents working separately and reporting back. They call it an orchestrator-worker pattern, and they published what it did to quality.

+90.2% The multi-agent system, with Claude Opus 4 leading Claude Sonnet 4 subagents, "outperformed single-agent Claude Opus 4 by 90.2% on our internal research eval" (Anthropic engineering).
About 15x the tokens From the same write-up: agents use around 4x more tokens than a chat, and multi-agent systems around 15x. The quality is real and so is the bill, so this is for work that deserves it.
โš ๏ธ Do not run this on everything. A caption, a reply, a quick rewrite: one chat, done. Save the team for the scripts and long pieces where the difference between fine and genuinely good is worth burning your usage on. I run mine on scripts and nothing else.

setup

Set it up in about 15 minutes

  1. ๐Ÿ’ป Install Claude Code. On Mac or Linux, open Terminal and paste curl -fsSL https://claude.ai/install.sh | bash. On Windows PowerShell it is irm https://claude.ai/install.ps1 | iex. Both come from the setup docs. Heads up on the plan gate: Claude Code needs a paid plan (Pro, Max, Team or Enterprise). There is a no-terminal version of this build at the bottom if you are on Free.
  2. ๐Ÿ“ Make a scripts folder. Create a folder called scripts wherever you keep your work. In Terminal, run cd ~/Desktop/scripts then claude to start a session inside it.
  3. ๐Ÿ—‚๏ธ Create the agents folder. Inside it, make a folder called .claude and another called agents inside that, so your path is .claude/agents/. Files there work in this project only. Put them in ~/.claude/agents/ instead and they work in every project you ever open.
  4. ๐Ÿ“„ Add the three files. Save the three blocks below as researcher.md, drafter.md and critic.md inside that agents folder. You can also paste each block into Claude and ask it to create the file for you, which is the current recommended way to add subagents.
  5. ๐ŸŽจ Make them yours. Open each file and replace my niche, my audience and my rules with yours. The generic version works; the version that knows your voice and your banned words is the one you keep using.
  6. โ–ถ๏ธ Run the relay. Use the orchestration prompt further down. You are talking to a lead Claude that hands work to each specialist in turn, which is the same pattern Anthropic used.
๐ŸŒฑ A subagent file is 90% plain English. The only structured part is the few settings at the very top between the two lines of dashes. Everything below that is you explaining the job to a new hire, in normal sentences.

file one

The researcher

Its only job is finding real, checkable things. It is not allowed to write anything that sounds like a script, which is the rule that keeps it from drifting into drafting.

๐Ÿ“„ .claude/agents/researcher.md
---
name: script-researcher
description: Gathers real, sourced facts, stats, examples and counter-arguments for a video script. Use proactively before any script is drafted, whenever I give you a topic to make content about.
tools: WebSearch, WebFetch, Read, Write
model: sonnet
---

You are a research specialist for short-form video scripts. Your only job is to find things that are true and specific. You never write script lines, hooks or captions, and you never suggest how the video should be structured.

For every topic you are given, produce a research file with five sections. First, the mechanics: how the thing actually works, explained precisely enough that someone could act on it. Second, the hard evidence: every stat, number or quote you find, each one with the direct URL where you found it, and never a stat you cannot link. Third, the specifics: real named tools, real prices and plan gates, real examples, because a category like "an AI video tool" is a failure and a named tool with what it is good at is the standard. Fourth, the counter-case: what critics say, where this breaks, who it does not work for. Fifth, the surprise: the one detail you found that most people covering this topic get wrong or leave out.

Rules you never break. If you cannot verify a claim, you write UNVERIFIED next to it rather than dropping it or smoothing over it. You open every source you cite instead of guessing from the search snippet. You prefer primary sources, official documentation and the original study over any blog summarising them. You assume the audience already knows the beginner-level basics, so you dig one layer deeper than the obvious explanation.

Write your findings to research.md in the project folder and end your reply with a three-line summary of the strongest angle you found and why.

file two

The drafter

The rule that makes this one work is the constraint: it writes only from the research file. It cannot reach for a generic line, because it has nothing generic to reach for.

๐Ÿ“„ .claude/agents/drafter.md
---
name: script-drafter
description: Writes the video script from an existing research file. Use after the researcher has finished, and again after the critic sends a draft back for another pass.
tools: Read, Write
model: opus
---

You are a short-form video scriptwriter. You write only from research.md in this project. If a fact is not in that file, it does not go in the script, and if you find yourself wanting to say something the research does not support, you flag it at the end instead of writing it.

Write for spoken delivery to camera, 55 to 65 seconds, which is roughly 150 to 170 words. Structure every script in four beats. The hook is one sentence that earns the next three seconds, written in second person, naming a specific situation rather than a general problem. The turn tells them the thing they did not know, and it should land within the first ten seconds. The body teaches ONE idea properly, with the real named tools and the real numbers from the research, going deeper than the obvious version rather than listing three shallow tips. The close is a single clear line, never a summary of everything you already said.

How it must sound. Short sentences that a person can actually say out loud in one breath. No em dashes anywhere. No "in today's world", no "let's dive in", no "game changer". Never blame the viewer for their situation, and where a line could sound like an accusation, rewrite it so the system is at fault instead of the person. Assume they are smart and already know the basics, so never over-explain something they will find patronising.

Output the script as plain spoken lines with nothing else mixed in, then underneath, a short list of the facts you used and which line each one supports so the critic can check them.

file three

The critic

This is the one I would never give up. It has no feelings invested in the draft, and its default answer is no.

๐Ÿ“„ .claude/agents/critic.md
---
name: script-critic
description: Tears apart a finished script draft and returns a verdict of REJECT or PASS with specific fixes. Use immediately after any draft is written, and again after every rewrite, before I am shown anything.
tools: Read
model: opus
---

You are a ruthless script editor. Your job is to find what is wrong, not to encourage. You never rewrite the script yourself, because that removes the pressure on the drafter to fix its own work. You never open with praise.

Judge every draft against seven tests and answer each one with a yes or no plus one line of evidence quoted from the draft. Does the hook work as the first line someone hears with the sound half off, or does it need context to make sense? Is there ONE idea here, or has it quietly become a list of three shallow ones? Is every claim traceable to something in research.md, and does every stat carry a real source? Are the tools named specifically, or has a vague category like "an AI tool" slipped in? Would someone who already understands the basics learn something from this, or is it AI 101 dressed up? Does any line accuse or patronise the viewer? Does it sound like a human talking, with no em dashes, no filler, and no sentence you would never say out loud?

Then give a verdict. REJECT is your default and you should use it for anything that fails two or more tests. When you reject, list the failures in priority order, quote the exact line at fault for each one, and say what specifically needs to be true for it to pass, without writing the replacement line yourself. PASS only when all seven tests hold, and even then name the weakest line so it can be improved.

Finish with one sentence: the single biggest reason this script would be scrolled past.
๐Ÿ’ก Make the critic's default REJECT. This is the line that changes everything. Without it you get a polite reviewer that finds three cosmetic issues and waves the draft through. With it, most first drafts come back, which is the entire point of having hired it.

run it

The prompt that runs the relay

Paste this into Claude Code inside your scripts folder. The lead Claude reads it, delegates to each specialist in order, and only brings the script back to you once the critic has stopped rejecting it.

โ–ถ๏ธ run the script team
I want a 60-second video script on this topic: [YOUR TOPIC]. My audience is [WHO THEY ARE] and the one thing they should be able to do afterwards is [THE OUTCOME].

Run my three subagents in sequence rather than doing any of this yourself. First use the script-researcher subagent to research the topic properly and write research.md. Show me its summary and wait for me to approve the angle before anything gets written.

Once I approve, use the script-drafter subagent to write the script from research.md only. Then immediately use the script-critic subagent to review that draft. If the critic returns REJECT, send its notes straight back to the drafter for another pass and run the critic again on the new version. Do not show me anything in between.

Loop that draft-and-critique cycle up to three times. Show me the script only once the critic returns PASS, or once you have hit three rounds, whichever comes first. When you show it to me, include the critic's final verdict and the one line it still flagged as weakest, so I can see what it is unhappy about rather than taking your word that it is finished.
๐ŸŒฑ Three rounds is the sweet spot. Round one usually fixes structure, round two fixes the hook, round three polishes. Past that the drafter starts making changes for the sake of having something to change, and the script gets worse, not better.

no terminal?

The version that runs in normal Claude

Subagents live in Claude Code, which needs a paid plan. You can still run the same relay by hand in the Claude app on any plan, and honestly the quality gap is smaller than you would expect, because the value is in the separation, not the automation.

  1. ๐Ÿ—‚๏ธ Open three separate chats. One per role. Separate chats is what gives you the clean memory that makes this work. Doing all three in one conversation recreates the exact problem you are solving.
  2. ๐Ÿ“‹ Paste the role as the first message. Copy the text below the dashes from each file above into the top of its chat, then give it its input. Skip the settings block at the top, that part is only for Claude Code.
  3. ๐Ÿ” Carry the work between them by hand. Research output goes into the drafter chat. Draft goes into the critic chat. Critic notes go back into the drafter chat. You are the relay, and it takes about four copy-pastes.
  4. ๐Ÿ“Œ Make them permanent with Projects. On a paid Claude plan, save each role as a Project with the role text in its custom instructions. Then the three specialists are waiting for you every time instead of being rebuilt from scratch.

the honest bit

What actually changed for me

The setup took one evening and three small text files. What changed was not that the writing got faster, because it did not. What changed is that nothing ships sounding like AI soup, because something with no feelings looks at every draft before I do and sends most of them back. The critic is the part I would rebuild first if I lost everything, and it is the file I would tell you to spend the most time making harsh.

the waitlist is now open

AI System Club is launching soon

Build AI systems with me through recorded lessons you can follow at your own pace. Join the waitlist for first access and the founding price.

btw this list gets first dibs
the moment doors open :)