FREE GUIDE · NO EMAIL NEEDED · THE FULL PLAYBOOK

Day one.
From nothing to
your own agency OS.

How to sign up, install Claude Code in VS Code, and build the first files that turn it from a chatbot into your agency's operating system. Every template on this page is the simplified version of what actually runs my agency. Copy it, rename it, make it yours.

~60 min to first skill $20 to start 0 lines of code 0 emails to read this

01 · SIGN UP

Ten minutes and twenty dollars

One thing to get right before you spend money: the free Claude plan does not include Claude Code. You can chat with Claude on the free plan all day, but the tool this guide is about needs a paid plan. That trips up more people than anything else on this page.

The Claude pricing page showing Free, Pro and Max plans side by side. The Pro plan's feature list includes the line 'Includes Claude Code'; the Free plan's list does not.

Look at the Pro column: "Includes Claude Code". The Free column has no such line. That's the whole decision.

01

Go to claude.com and pick Pro

Pro is $20/month billed monthly, or $17/month if you pay for the year. It includes Claude Code. Start here, not on Max. You do not know your usage yet.

(My screenshot shows euros because I'm in Europe. You'll see your own currency.)

02

Move to Max only when Pro starts stopping you

Max starts at $100/month and gives you 5x or 20x Pro's usage. The signal to upgrade is simple: you're hitting limits mid-task on a normal working day. Not before. I run Max because I'm in it all day, every day. On day one you are not.

03

Ignore the API for now

There's a pay-per-use API option billed by the token. It's the right answer for automated jobs running on a server without a human watching. It is the wrong answer for learning, because a slow afternoon of exploring can quietly cost more than a month of Pro. Subscription first.

What you're actually buying. Not "an AI subscription". You're renting a junior who works at 3am, never forgets a checklist, and will do the 40 minutes of clicking that you keep pushing to tomorrow. The whole rest of this guide is about writing down what you want that junior to know.

02 · INSTALL

VS Code, then Claude Code inside it

Claude Code is a tool that lives in a folder on your computer. You need somewhere to see that folder and its files. That's VS Code: a free code editor from Microsoft. You are not going to write code in it. You're going to use it as the window your agency's files live in.

The Visual Studio Code homepage with a large 'Download for Windows' button in the centre.

code.visualstudio.com. One button. It detects your machine, so it says Mac if you're on a Mac.

Install it, open it, and you're halfway. Now the extension.

The Claude Code for VS Code extension page on the Visual Studio Marketplace, published by Anthropic with a verified badge, showing over 20 million installs and a green Install button.

Check the publisher says Anthropic with the blue verified tick. There are copycats.

01

Install the extension

In VS Code press Ctrl+Shift+X (Cmd+Shift+X on Mac) to open Extensions, search "Claude Code", and click Install. You need VS Code 1.98 or newer, which you will have if you just downloaded it.

02

Open it and sign in

Click the spark icon in the top-right of the editor, or ✱ Claude Code in the bottom-right status bar (that one works even with no file open). A sign-in screen appears. It opens your browser, you approve, you're in. No API key, no config file.

03

Also install the terminal version

This is the step people miss. The extension ships its own private copy for the chat panel, but it does not put the claude command in your terminal. Some things (and most of what I'll show you later) are easier from the terminal. Run the one-liner below once and you have both.

Windows — PowerShell
irm https://claude.ai/install.ps1 | iex
macOS / Linux — Terminal
curl -fsSL https://claude.ai/install.sh | bash

Then check it worked. In VS Code, open a terminal with Ctrl+` and run:

check the install
claude --version
claude doctor

Windows people: you do not need WSL, and you do not need Node.js. Both used to be required and half the tutorials online still say so. The installer above is self-contained and updates itself in the background. The one thing worth adding is Git for Windows, which is optional but gives Claude a better shell to work in.

Now make a folder for your agency, anywhere you like, and open it in VS Code (File → Open Folder). An empty folder is fine. That folder is about to become your operating system.

03 · THE STEP EVERYONE SKIPS

Talk to it first. Build nothing.

Here's how I actually started, and it's the opposite of what every tutorial tells you. I didn't design a system. I just talked to it. For weeks. Real client work, out loud, one problem at a time. "Here are this month's numbers, what's wrong." "Write the update email for this client." "Why is this campaign's cost per lead climbing."

The structure came later, and it came from noticing. The third time I asked for the same thing and typed the same corrections, that was the signal. Not a plan. A repeat.

Doodle: a person talks to a laptop, notices the same request three times, and writes it down as a document.

The only rule that matters on day one: talk, notice the repeat, then write it down.

This matters more than it sounds, because it's the difference between a setup that fits your agency and a setup you copied from a stranger on YouTube. Including me. The templates further down this page are shaped like my agency. If you install them before you've felt the problems they solve, you'll be maintaining someone else's system.

The rule I'd tattoo on a beginner: never write a skill for something you haven't done by hand three times. The first time you learn the shape of the job. The second time you notice what's fixed and what changes. The third time you can describe it precisely enough to be worth writing down. Write it on the first go and you'll automate your own guesswork.

So spend your first session doing real work, badly, by conversation. Ask it to write something you'd normally write. Correct it. Notice what you had to correct. Those corrections are the actual raw material for everything below.

Two things worth knowing while you're talking to it:

04 · THE FIRST FILE

CLAUDE.md, your agency's constitution

Once you've noticed your corrections repeating, they need somewhere to live. That's CLAUDE.md: one markdown file in the root of your folder that gets read at the start of every single session. It's the difference between explaining your agency every morning and explaining it once.

Doodle: an open book labelled CLAUDE.MD sits above three folders labelled SKILLS, AGENTS and CLIENTS, with an arrow showing it governs all of them.

One rulebook at the top. Everything underneath inherits it.

Everything in it should be a rule you'd give a new hire on their first morning. Not documentation. Not a description of your business for its own sake. Rules that change what the work looks like. Here's a starter, cut down from my real one and rewritten for a small agency. Fill in the angle brackets and delete anything that isn't true for you.

CLAUDE.md  ·  in the root of your agency folder

CLAUDE.md
# <Your Agency>: operating rules

Read this before doing any work in this folder. These rules override your defaults.

## What we are

<One sentence. Who you serve, what you sell.>
Example: "A 6-person paid ads agency in Manchester. We run Meta and Google for
home service businesses (roofers, plumbers, HVAC) doing 1M-10M a year."

## Structure

clients/<Client>/CLIENT.md      the facts about one client
clients/<Client>/brand-dna.md   their colors, fonts, voice, proof
.claude/skills/<name>/SKILL.md  a procedure we run the same way every time
.claude/agents/<name>.md        a specialist with judgment

## Conventions

- Never invent a number. Every stat, price, guarantee or claim in client-facing
  work must already exist in that client's CLIENT.md. If it is not there, ask
  me. Do not estimate, do not round up, do not "for example".
- Client work goes in clients/<Client>/. Never the root, never a temp folder.
- Before asking me for a client's account IDs or details, read their CLIENT.md
  first. It is probably already in there.
- <Your language rule. e.g. "All copy is British English.">

## Voice

- Number before adjective. "Booked 41 jobs last month" beats "great results".
- Short sentences. One idea each.
- Banned words: unlock, elevate, seamless, hassle-free, game-changer,
  revolutionize, "in today's fast-paced world".
- No em-dashes. Use commas or full stops.
- Read it aloud. If a real client would not say it on the phone to a customer,
  rewrite it.

## Output and delivery

- Give me the link the moment a document or file is created. Never wait to be
  asked for it.
- One summary at the end of a task. No "working on it" filler messages.
- If something failed, say so and show me the actual error. Never report a task
  as done when it is not.

## Diagnosis protocol

Before telling me why something happened (leads dropped, a script broke, a
number looks wrong):
1. Name the data you are going to check.
2. Actually check it.
3. Then tell me the cause.
Never guess out loud. One unverified theory costs us a full round trip.

## Verification: prove it, don't declare it

Before you tell me a task is done:
- Made a file? Read it back. Confirm it exists and is not empty.
- Reported a number? Recompute it once from the source.
- Published or sent something? Re-fetch it and confirm the live state.
Running the command is not evidence. The result is.

## When you are unsure

Ask me. One good question up front beats an hour of confident wrong work.

Keep it short

Under 200 lines. This gets read every session, so every line costs you. A rule nobody follows because it's buried in paragraph nine is worse than no rule.

Rules, not description

"We're a full-service agency committed to excellence" changes nothing. "Never invent a number" changes every deliverable. If a line wouldn't change the output, cut it.

Add to it when you correct

Every time you fix the same thing twice, that fix belongs in here. This file should grow for a month, then mostly stop.

/init exists, but

There's a command that auto-writes this file by reading your folder. On an empty agency folder it has nothing to read. Write it yourself. It's twenty minutes and it's the most valuable twenty minutes here.

05 · THE STRUCTURE

Four folders. That's the whole thing.

People imagine this part is complicated. It isn't. My workspace runs five businesses and about 25 clients, and it's still just this shape, repeated.

your-agency/ ├── CLAUDE.md ← the rulebook. Read every session. ├── clients/ │ └── acme-roofing/ │ ├── CLIENT.md ← the facts. Nothing invented past this. │ └── brand-dna.md ← colors, fonts, voice, proof └── .claude/ ├── skills/ │ └── client-update/ │ └── SKILL.md ← a procedure └── agents/ └── media-buyer.md ← a specialist

The .claude/ folder is the only part with a name you can't choose. The dot at the front means your computer hides it by default; VS Code shows it anyway. Skills go in .claude/skills/<name>/SKILL.md, agents go in .claude/agents/<name>.md. Those exact paths matter. Everything else is yours.

Before the first skill, make one CLIENT.md, for your best client. This is the file that stops the single worst AI failure mode: confidently inventing proof. A made-up stat in a client's ad is not a typo, it's a phone call you don't want.

clients/acme-roofing/CLIENT.md

CLIENT.md
# Acme Roofing: client facts

Last verified: 2026-07-15 · Sources: acmeroofing.co.uk, onboarding call

## The business

- What they sell: <pitched roof replacement, flat roof repair>
- Who buys: <homeowners 45+, own their home, 20+ year old roof>
- Average job value: <4,800>
- Close rate on a good lead: <1 in 4>
- Service area: <45 min radius of Manchester>

## Verified proof stack

ONLY these numbers may appear in copy. If a claim is not in this table, it does
not exist. Do not estimate one. Ask me and I will go and find it.

| Claim              | Value                | Source        |
|--------------------|----------------------|---------------|
| Years in business  | 12                   | homepage      |
| Roofs completed    | 3,400+               | about page    |
| Google rating      | 4.8 from 212 reviews | Google profile|
| Guarantee          | 10 year workmanship  | services page |
| Response time      | same day callback    | owner, verbal |

## The offer

- What we run: <free roof health check, no obligation quote>
- The hook: <photos of your roof you cannot see from the ground>
- What happens after a lead: <office calls within 1 hour, books survey>

## Access

- Owner: <name>, <email>, <mobile>
- Meta ad account: <id>
- Google Ads: <id>

## Do not

- <Never mention a competitor by name.>
- <No prices in the ad. Owner's rule, he wants the conversation.>
- <Never use stock photos of American houses. He gets emails about it.>

Why the table earns its keep. One line in CLAUDE.md says every number must come from here. Now "write me an ad for Acme" produces "4.8 from 212 reviews, 10 year guarantee" instead of a plausible, fluent, completely fabricated "trusted by thousands since 2003". You only have to build this once per client, and every piece of work after it inherits the discipline.

06 · YOUR FIRST SKILL

A procedure it runs the same way every time

A skill is a markdown file that teaches one job. Not a clever prompt: a written procedure, the way you'd write it for a new hire who is quick but knows nothing about your agency. Once it exists, you type /client-update, or just describe the job, and it runs the same way every time. No re-explaining. No drift.

Doodle: a checklist labelled SKILLS DO on the left, a thinking figure labelled AGENTS DECIDE on the right, split by a dividing line.

Hold onto this one. It's the concept the whole system rests on.

Pick the job you did three times last week and resented every time. For most agency owners that's the weekly client update, so that's what I'll give you. It needs no integrations, no API keys, nothing but the file.

client-update

.claude/skills/client-update/SKILL.md

Turns raw numbers into the weekly email, in the client's language rather than ad-platform language. The part that makes it good is step 2: it refuses to report clicks when the client thinks in booked jobs.

SKILL.md
---
name: client-update
description: Write the weekly client update email from raw performance numbers.
  Use when the user pastes figures for a client, says "weekly update for X",
  "write the update", or "send X their numbers".
---

Input: a client name, plus this week's numbers. The user pastes them or points
you at the file.

1. READ clients/<Client>/CLIENT.md FIRST.
   You need their offer, average job value, close rate and the owner's name.
   If that file does not exist, stop and ask for it. Do not proceed on guesses.

2. DO THE MATH THE CLIENT ACTUALLY CARES ABOUT.
   Never lead with spend, clicks, impressions or CTR. Owners do not think in
   those. Translate first:
   - leads          → likely booked jobs (use the close rate from CLIENT.md)
   - cost per lead  → cost per booked job
   - spend          → revenue at their average job value
   If a number you need to do this is missing, ask for it. Never assume one.

3. WRITE THE EMAIL. This order, nothing added:
   - Subject: the single most important number this week. Never "Weekly Update".
   - First line: the result, one sentence, in their language.
   - The numbers: 3 lines maximum, this week against last week. No table.
   - What we changed: 1-2 lines, plain English, no platform jargon.
   - What we are doing next week: 1-2 lines.
   - One question, only if you genuinely have one. Otherwise end.
   Under 150 words total. They read this on a phone, between jobs, in a van.

4. RULES
   - Every number comes from what the user gave you or from CLIENT.md.
     Invent nothing. Estimate nothing.
   - A bad week gets reported in the FIRST line, not buried in the third
     paragraph. Say what you are changing about it. Owners forgive bad weeks.
     They do not forgive finding out late.
   - No adjectives on numbers. "41 leads", never "an impressive 41 leads".
   - No em-dashes. No exclamation marks.

5. BEFORE YOU DELIVER, CHECK:
   Could the owner forward this to their accountant, who has no context, and
   have it still make sense? If not, rewrite it.

Output the email as plain text, ready to paste. Then, on one line below it,
tell me which number you would watch next week and why.

The frontmatter is the trigger

That description between the dashes is how it knows when to reach for this file. Write it as the words you'd actually say, including the sloppy ones. That's why mine lists three phrasings.

Say what NOT to do

Half of a good skill is prohibitions. "No table", "never lead with spend", "no adjectives on numbers". Rules against things are what stop the drift back to generic.

End with a check

Step 5 is a test the work has to pass before you see it. Every skill I have ends with one. It's the cheapest quality jump available.

Write it by talking

Fastest way to your second skill: do the job by conversation, get it right, then say "turn what we just did into a skill at .claude/skills/<name>/SKILL.md". It writes its own procedure. You edit.

07 · YOUR FIRST AGENT

A specialist you'd argue with

Skills do. Agents decide. That's the whole distinction, and once it lands the rest is obvious.

A skill is for a job with a right way to do it. An agent is for a job that needs an opinion: "should we scale this or kill it", "why is this client's cost per lead climbing", "is this copy any good". You write the persona once, with its standards and its refusals, and it applies them consistently instead of telling you what you want to hear.

The other half of the point is boring and important: an agent gets its own context window. When it goes off and reads three months of campaign data, that mess stays in its head, not your session's. You get the conclusion back. That's why my heavy work is agents, not skills.

media-buyer

.claude/agents/media-buyer.md

Judgment on paid media. Note how much of it is rules about what it must NOT do. That's deliberate: an agent that will not change your ad account, and will not guess at data it hasn't read, is one you can actually trust with a question.

media-buyer.md
---
name: media-buyer
description: Paid media judgment. Use whenever the question is "what should we
  do about <client or campaign>", "why is our cost per lead up", "should we
  scale or kill this", or any paid media question that needs a call rather than
  a number.
tools: Read, Grep, Glob, WebFetch
model: opus
---

You are a media buyer with ten years across Meta and Google for lead generation
businesses. You have opinions and you commit to them. You would rather be
wrong and specific than right and vague.

## How you diagnose

Work down this list and STOP at the first broken stage. Most "the ads don't
work" problems are not ad problems:

1. Offer. Would a stranger want this, at this price, right now?
2. Creative. Does it stop the right person and say one clear thing?
3. Targeting and budget. Is it getting enough data to learn anything?
4. Landing page. Does the click keep the promise the ad made?
5. Speed to lead. How fast does an actual human call them back?

Stage 5 is broken far more often than stage 2, and nobody ever checks it first.

## Your rules

- Never recommend a change without naming the number that made you recommend it.
- One change at a time per ad set. Two changes and you have learned nothing.
- Do not kill a campaign before it has spent 3x the target cost per lead with
  nothing to show. Do not scale one on two days of data.
- Scale 20-30% at a time. Doubling the budget resets the learning.
- If cost per lead is fine but the client is unhappy, the problem is lead
  quality or speed to lead. Check those before you touch a budget.
- "Test more creative" is not a recommendation. Name the angle and say why.

## What you must never do

- Never change an ad account. You recommend, a human executes. Say exactly what
  you would change, where, and what you expect to happen.
- Never guess at data you could read. If you have not seen the numbers, say
  "I need X to answer this" and stop. A confident wrong theory costs a day.
- Never hand over five options. Give one recommendation and one alternative,
  and say which you would do and why.

## Your output, every time

- The call: what to do, one sentence.
- Why: the number that drove it.
- What you expect: the outcome that would prove you right, and by when.
- What would change your mind.

If the honest answer is "the data does not say yet, wait N more days", say
exactly that. It is a real answer and it is often the right one.

Test it the way you'd test a new hire. Give it a campaign you already know the answer to and see if it argues with you. If it agrees with everything you say, the persona isn't strong enough yet. Add the refusals it's missing. An agent that never pushes back is a very expensive mirror.

08 · WIRING THEM TOGETHER

The skill calls the agent

Here's where it stops being a folder of files and starts being a system. A skill is a procedure. Somewhere inside most procedures is a step that needs judgment. So the skill does the steps and hands that one step to the agent.

Doodle: a brief fans out to three agents, whose work converges into a magnifying glass check, then out to a flag marked ship.

Brief in, specialists out, one check before anything ships.

Take the two files you just made. client-update has a step called "what we're doing next week". That's not a procedure, that's a call. So let the media buyer make it. Add this to the bottom of the skill:

.claude/skills/client-update/SKILL.md — appended
6. FOR THE "WHAT WE ARE DOING NEXT WEEK" LINE, ASK THE MEDIA BUYER.
   Hand the media-buyer agent this week's numbers and the client's CLIENT.md,
   and ask for one recommendation. Use its call as the next-week line, in one
   plain sentence with no jargon.
   If it says the data does not support a call yet, write that instead. "We are
   leaving it alone another week and here is why" is a legitimate update and
   clients respect it more than invented activity.

That's orchestration. Not a framework, not a diagram with boxes. One file asking another for the part it isn't qualified to do. Stack a few of those and you get the thing in the /goal guide: one command, twenty-four deliverables, because every piece knows who to ask.

Parallel is free

Independent work runs at the same time. "Analyse these four clients" is four agents at once, not four in a queue. This is where the hours actually come back.

Context stays clean

Each agent's mess lives in its own head. Your main session gets the conclusion. That's why a big job doesn't collapse halfway through.

Keep the pieces narrow

The instinct is one giant skill that does everything. It always gets worse. Narrow pieces, composed, beat one big prompt every single time.

Humans keep the switch

My campaigns get built automatically and land PAUSED. A person flips them live. Constraints like that are why this is safe to hand to a team.

09 · THE TWO THINGS THAT COMPOUND

Memory and proof

Everything so far is setup. These two are why it gets better instead of staying flat.

Memory: stop teaching it the same lesson

Claude Code keeps notes across sessions, on its own, in a memory file. You can read and edit it with the /memory command. Most people never touch it, which wastes the single easiest improvement available.

The habit: when you correct something that will come up again, say so out loud. Not "no, use British spelling" but "remember that all copy for this client is British English". One is a correction. The other is a correction that sticks. After a month of that, the corrections mostly stop.

What goes where. A rule for your whole agency goes in CLAUDE.md, where your team can see it. A lesson from a specific mess goes in memory. If you'd want a new hire to read it on day one, it's CLAUDE.md. If it's "the thing that broke last Tuesday and why", it's memory.

Proof: never let it mark its own homework

The most expensive habit an AI has is reporting a job done because it ran the command, not because it checked the result. It'll tell you the file's written, the report's sent, the page is live. Sometimes it isn't.

The verification block in the CLAUDE.md above is the general fix. For anything that matters, add a specific one to the skill itself, as its last step:

the last step of any skill that matters
FINAL STEP: PROVE IT, DO NOT DECLARE IT.

Before reporting this task done, verify the actual result, not the action:
- Wrote a file?      Read it back. Confirm it exists and is not empty.
- Reported a number? Recompute it once from the source. Do they match?
- Sent or published? Re-fetch it and confirm the live state says so.
- Made an image?     Look at it. Is the text spelled right? Is it legible?

If a check fails, fix it and re-check. Maximum 2 attempts. Then tell me loudly
what is broken. A flagged gap costs me a minute. A quiet failure costs a client.

Two paragraphs of text. It's the difference between output you have to check and output you can send.

10 · YOUR FIRST WEEK

The order that actually works

If you do this in the wrong order you'll build a beautiful system for a problem you don't have. This is the order I'd give my own team.

Day 1

Talk. Build nothing.

Sign up, install, then do real work by conversation for an hour. Write no files. Notice what you keep correcting.

Day 2

CLAUDE.md + one client

Write the rulebook from yesterday's corrections. Then one CLIENT.md, for your best client, with the real proof table.

Day 3

Your first skill

The job you did three times last week and resented. Only that one. Run it, fix what annoys you, run it again.

Day 4

Your first agent

The question you ask most that needs an opinion. Give it standards and refusals. Argue with it until it pushes back.

Day 5

Wire them

Have the skill hand its judgment step to the agent. That's the whole idea, at the smallest possible scale.

Week 2+

One skill per repeat

Never build ahead. Every new skill earns its place by being a thing you actually did three times. That's it. That's the loop.

The failure I see most. Someone reads a page like this, gets excited, and spends a weekend building forty skills for an agency that needed four. Then none get used, because none came from a real repeat, and the whole thing gets abandoned by Wednesday. My setup has ~50 skills because it took two years and 25 clients to earn 50 skills. On day one I had one file.

When the loop above feels boring, you're ready for the next one: pointing a single command at a whole client and letting it build the campaign end to end.

Next guide · free

The /goal Guide: one command, a full client launch

How one prompt produced 24 client deliverables in an afternoon: two landing pages, a brand book, a strategy, 8 ad statics and 3 video ads. The exact prompt, how the loop works, and five more copy-paste skills.

read the guide →
ia_ — updates

$ subscribe --to "the next drop"
# New guides, new skills, new teardowns like this one, when they ship.
# No spam. No gate. This page stays free either way.

✓ subscribed. next drop lands in your inbox.

unsubscribe = one reply. we read those.

DONE-FOR-YOU

Or skip the two years

Everything on this page is the self-serve version, and it genuinely works if you do it. The Install is the done-for-you one: your skills, your agents, your clients, built into your agency in 30 days by an operator who runs one.