Cloud Explainers

Why AI Agent Skills Beat Giant Prompts

AI agent skills9 min videoPublished Nov 1, 2026

Why agent skills beat giant prompts, measured: we gave Claude Code a small coffee roaster's 12-procedure support handbook twice, once as one giant CLAUDE.md and once as 12 skills, and counted the tokens every model request read. We see what a model request carries (the context window), why a long CLAUDE.md is read on every request and followed less reliably, what a skill is (a folder with SKILL.md: name, description, instructions), how it loads only when a job matches (progressive disclosure), how a script inside a skill runs without its code entering the context, how both grow with every procedure, and what skills cost: an extra step to load, so with a small handbook one prompt reads fewer tokens in total.

Why AI Agent Skills Beat Giant Prompts: the full diagram
The whole picture, from the video's recap.

One email, twelve procedures

Your AI agent's instructions file keeps growing, and every request the agent makes carries all of it, even when the job needs one page. Kettle & Bean, a small coffee roaster, gave its support agent the whole handbook: 12 procedures, 3,221 words. A customer writes about a torn bag. The agent needs one procedure, and reads all 12. By the end of this video, you'll know what an agent skill is, how it loads only what a job needs, what that saves, and when one big prompt is still fine.

Everything here is a real run. The agent is Claude Code, Anthropic's coding agent, run with nothing else loaded. Here's the handbook: an always-on part, then twelve procedures, from late orders to press requests. From those same words, we built two agents: one with the whole handbook in a single prompt, and one with skills.

Our lab: Claude Code
skills-lab$ lsagent		giant		handbook	scripts
build		grow		mail		skills
Our lab: Claude Code
skills-lab$ ls handbook00-always.md		05-wholesale.md		10-loyalty.md
01-late-orders.md	06-subscriptions.md	11-data-requests.md
02-damaged-parcel.md	07-gift-cards.md	12-press.md
03-refunds.md		08-address-changes.md
04-allergens.md		09-grinder-warranty.md

What the model reads

First, what does the model actually read? Each time an agent thinks, it sends the model one request, and that request carries everything the model knows at that moment: the agent's own instructions and tools, your project's instructions file, CLAUDE.md, and the job itself. That's the context window. It's measured in tokens: small pieces of words.

What the model reads: diagram from the video

We gave each agent the smallest job there is: reply with just ok. No handbook at all: 7,215 tokens. The giant prompt: 13,402. Skills: 8,089.

Our lab: Claude Code
skills-lab$ ./agent --none "Reply with just: ok"ok
(model requests: 1 · context each: 7,215 tokens · read in total: 7,215)
Our lab: Claude Code
skills-lab$ ./agent --giant "Reply with just: ok"ok
(model requests: 1 · context each: 13,402 tokens · read in total: 13,402)
Our lab: Claude Code
skills-lab$ ./agent --skills "Reply with just: ok"ok
(model requests: 1 · context each: 8,089 tokens · read in total: 8,089)

Without a handbook, the 7,215 tokens are the agent's own instructions and tools. The giant prompt added 6,187 tokens to that one request, for a job that needed none of it. The skills added 874.

What the model reads: diagram from the video

The giant prompt

Here's the giant prompt: 3,221 words in one CLAUDE.md file, twelve procedures, one after another. Claude Code reads this file at the start of every session, and from then on it's part of every request.

Our lab: Claude Code
skills-lab$ wc -w giant/CLAUDE.md    3221 giant/CLAUDE.md
Our lab: Claude Code
skills-lab$ grep '^## ' giant/CLAUDE.md## Late orders
## Damaged on arrival
## Refunds
## Allergens and ingredients
## Wholesale quotes
## Subscriptions
## Gift cards
## Address changes
## Equipment warranty
## Loyalty points ("Beans")
## Personal data requests
## Press, partners and sponsorship

Now a real email. Lena's bag arrived torn, and beans spilled all over the box. The giant-prompt agent writes a good reply: it asks for two photos, sends a new bag by express, and says there's nothing to send back. That's the damaged-parcel procedure, followed exactly. One request: 13,467 tokens.

Our lab: Claude Code
skills-lab$ cat mail/torn-bag.txtOrder 2207, Ethiopia Yirgacheffe 1 kg, delivered yesterday. The customer, Lena, writes: the bag arrived torn and beans spilled all over the box. Write the reply.
Our lab: Claude Code
skills-lab$ ./agent --giant mail/torn-bag.txtSubject: Your torn bag of Ethiopia Yirgacheffe

Hi Lena,

Thank you for letting us know. I'm so sorry your bag arrived torn. That's not how we want your beans to reach you.

Could you send one photo of the bag and one of the box? As soon as we have them, a new 1 kg bag of Ethiopia Yirgacheffe goes out by express, at no cost to you.

If the spilled beans are clean, feel free to keep them or compost them. There's nothing to send back to us.

Sam, Kettle & Bean

---
Note for you (not part of the reply): add the label DAMAGE to the ticket for order 2207. I held the replacement until the photos arrive, because I don't have Lena's order history. If they've ordered from us 3 or more times before, you can send the replacement straight away and ask for the photos afterwards. In that case, change the second paragraph.
(model requests: 1 · context each: 13,467 tokens · read in total: 13,467)

But look at what it read to get there. One procedure was useful. The other eleven, refunds, allergens, wholesale prices, gift cards and the rest, came along for nothing, and they come along on every email.

The giant prompt: diagram from the video

And size costs more than tokens. Anthropic's own Claude Code guide says to aim for under two hundred lines per CLAUDE.md file, because longer files consume more context and reduce adherence: the model follows them less reliably. Researchers at Chroma measured a wider version of this, called context rot: as the input grows, models get less reliable, even on simple tasks.

The giant prompt: diagram from the video

What a skill is

The second agent has the same twelve procedures, as skills. A skill is a folder with one required file, SKILL.md: here are twelve folders, one per procedure. Its CLAUDE.md keeps only the three rules that matter on every email: who we are, how to sign, and never share one customer's details with another.

Our lab: Claude Code
skills-lab$ ls skills/.claude/skillsaddress-changes		gift-cards		press-and-partners
allergens		grinder-warranty	refunds
damaged-parcel		late-orders		subscriptions
data-requests		loyalty-points		wholesale-quotes
Our lab: Claude Code
skills-lab$ cat skills/CLAUDE.mdYou answer customer emails for Kettle & Bean, a small online coffee roaster.
Write warm, short replies in plain text. Sign every reply "Sam, Kettle & Bean".
Never share one customer's details with another customer.

At the top of each SKILL.md, between two lines of dashes, are a short name and a description: what the skill does, and when to use it. Below that comes the procedure itself, the same words as in the giant prompt.

Our lab: Claude Code
skills-lab$ head -4 skills/.claude/skills/damaged-parcel/SKILL.md---
name: damaged-parcel
description: How to handle a parcel or product that arrived damaged, torn, crushed, leaking or with a broken seal. Use for any email about damage on arrival.
---

How a skill loads

Here's how a skill loads. At the start, the agent gives the model only each skill's name and description. Lena's email arrives. The model sees that damaged-parcel matches it, and asks the agent for that skill, because a model can't open files by itself. The agent reads the full SKILL.md and adds it to the context. Only then does the model write the reply. Anthropic calls this progressive disclosure.

How a skill loads: diagram from the video

The same email, with skills. Loaded skill: damaged-parcel, chosen by the model itself. The reply asks for the same two photos and sends the same new bag. Two requests this time: 8,155 tokens, then 8,930 with the procedure added. Each one is smaller than the giant prompt's 13,467.

Our lab: Claude Code
skills-lab$ ./agent --skills mail/torn-bag.txt[loaded skill: damaged-parcel]
Here's the reply for Lena:

Subject: Your Yirgacheffe order 2207

Hi Lena,

I'm so sorry your bag arrived torn. That's not how we want your beans to reach you. Thank you for letting us know.

Could you send one photo of the bag and one of the box? We need both for the carrier claim. As soon as we have them, a new 1 kg bag of Ethiopia Yirgacheffe goes out by express, at no cost to you.

If the beans that spilled in the box are clean, you're welcome to enjoy them or compost them. There's nothing to send back.

Thanks again, and sorry for the trouble.

Sam, Kettle & Bean

Two notes for you:
- I didn't see Lena's order history. If they've ordered from us 3 or more times before, the policy says to send the replacement straight away and ask for the photos afterwards. In that case, change the second paragraph.
- The skill says to add the DAMAGE label to the ticket. I can't reach your ticket system from here, so please add it yourself.
(model requests: 2 · context each: 8,155, 8,930 tokens · read in total: 17,085)

Side by side. The same reply. The giant prompt read all twelve procedures in one request; the skills agent read one, over two smaller requests. But notice the total: the skills agent read more, 17,085 tokens against 13,467, because loading the skill took an extra step. We'll come back to that.

How a skill loads: diagram from the video

Scripts inside skills

A skill can carry files too. The refunds skill has a script next to it: the refund rules, written as code. Tom wants a refund on an opened bag, delivered nine days ago. The agent loads the refunds skill, then runs the script with his numbers. The script decides: fifteen dollars back, or thirty in store credit.

Our lab: Claude Code
skills-lab$ find skills/.claude/skills/refunds -type fskills/.claude/skills/refunds/scripts/refund.py
skills/.claude/skills/refunds/SKILL.md
Our lab: Claude Code
skills-lab$ ./agent --skills mail/refund.txt[loaded skill: refunds]
[ran: python3 .claude/skills/refunds/scripts/refund.py --price 30.00 --days 9 --opened yes]
Hi Tom,

Thanks for letting us know, and I'm sorry the Colombia Sugarcane decaf wasn't to your taste. Since the bag was opened and arrived 9 days ago, you have two options. You can have $15.00 (50%) back to your original payment method. The money should reach your bank in 3–5 working days. Or you can take the full $30.00 as store credit, which is added to your account right away, so you could try a different roast.

Tell me which you'd prefer and I'll set it up.

Sam, Kettle & Bean
(model requests: 3 · context each: 8,158, 8,818, 8,978 tokens · read in total: 25,954)

That's the third level. Anthropic describes skills in three levels: the name and description, always there, about a hundred tokens each; the instructions, loaded when a job matches; and files and scripts, opened only when needed. A script runs, and only its output enters the context, never its code. A giant prompt can point to a script too, but a skill keeps the code right next to the steps that use it.

Scripts inside skills: diagram from the video

As the handbook grows

Now the real reason this matters. We rebuilt both agents with zero, four, eight and all twelve procedures, and sent the same tiny request each time. Each procedure in the giant prompt added about 498 tokens to every request. As a skill, about 56: just its name and description.

As the handbook grows: diagram from the video

Twelve procedures is small, and real handbooks keep growing. At the rates we measured, a hundred procedures would put about 57 thousand tokens into every request with a giant prompt, and about 13 thousand with skills, before the job even starts.

As the handbook grows: diagram from the video

A busy morning

One more test: a busy morning. Five emails in one go: a late parcel, a café asking for wholesale prices, a nut allergy question, a refund, and a subscription pause. The skills agent loaded five skills, one per email. The giant-prompt agent loaded nothing: it already had everything.

Our lab: Claude Code
skills-lab$ cat mail/inbox.txtHere are this morning's 5 customer emails. Write a reply to each, one after another.
1) Order 2213, shipped by domestic standard 9 working days ago, still not here. Customer: Ravi.
2) Café Lumen asks for a wholesale price for about 25 kg a month of the house blend.
3) Mia asks: is your coffee safe for my son, who has a nut allergy?
4) Order 2215, Kenya AA 500 g, $30.00, delivered 3 days ago, unopened. Customer Jo wants a refund.
5) Dan asks to pause his subscription for 2 months.
Our lab: Claude Code
skills-lab$ ./agent --skills mail/inbox.txt --no-reply[loaded skill: late-orders]
[loaded skill: wholesale-quotes]
[loaded skill: allergens]
[loaded skill: refunds]
[loaded skill: subscriptions]
[ran: python3 .claude/skills/refunds/scripts/refund.py --price 30.00 --days 3 --opened no]
(model requests: 3 · context each: 8,282, 11,960, 12,251 tokens · read in total: 32,493)
Our lab: Claude Code
skills-lab$ ./agent --giant mail/inbox.txt --no-reply[ran: python3 scripts/refund.py --price 30.00 --days 3 --opened no]
(model requests: 2 · context each: 13,596, 14,292 tokens · read in total: 27,888)

Five of the twelve procedures were needed. The other seven, like gift cards and warranties, were never opened. The skills agent's requests grew a little as each skill was added, but every one stayed smaller than the giant prompt's, which carried the whole handbook both times.

A busy morning: diagram from the video

What skills cost

Skills aren't free, though. On this morning's five emails, the skills agent read more in total: 32,493 tokens against 27,888. That's because loading a skill is an extra step: the model has to ask for it, and every extra request reads the whole context again.

What skills cost: diagram from the video

Two more limits. The model picks a skill from its description alone, so the description must say what the skill does and when to use it, as Anthropic's guide puts it. And a skill is advice, like any prompt: nothing forces the model to follow it. Rules that must always hold belong in code, like the refund script.

What skills cost: diagram from the video

With a handbook this small, one prompt still reads fewer tokens in total for a short job. Skills pull ahead as it grows, because every request reads the whole prompt again. So here's how to split a growing prompt. A few short rules every job needs stay in CLAUDE.md. Procedures that only some jobs need become skills, each with a clear description. Exact math and checks go into scripts inside those skills.

What skills cost: diagram from the video

Recap

Let's recap. A giant prompt is read on every request: every procedure, whether the job needs it or not, and the longer it gets, the less reliably the model follows it. A skill shows the model only its name and description, until a job needs it. In our lab, each procedure cost 498 tokens per request in the prompt, and 56 as a skill. Keep the always-on rules short, and turn the rest of the handbook into skills.

If seeing what your agent really reads was useful, subscribing helps a small channel bring you the next lab.

Every reply and every token count in this video came from a real run in our lab. Thanks for watching Cloud Explainers.

Sources

Demos: real runs of Claude Code on a made-up coffee shop's handbook, on our own machine; the shop, its customers and orders are invented. Watch the full video on YouTube.

More videos

Claude & the Claude Developer Platform9 min

Claude API vs Claude Pro: Why Your Subscription Doesn't Include It

Linux10 min

Linux Cron Jobs Will Finally Make Sense After This

Cybersecurity10 min

Security Logs Will Finally Make Sense After This

Cybersecurity8 min

How to Fix a Security Leak: An API Key Pushed to GitHub

DNS9 min

DNS Will Finally Make Sense After This

Cybersecurity9 min

Never Ignore a Security Update

Auth (OAuth, JWT)9 min

Two-Factor Authentication Will Finally Make Sense

Networking8 min

Never Expose a Database to the Internet

Cybersecurity10 min

SSH Keys vs Passwords: Which Is Safer for Security?

Linux10 min

The 5 Levels of Linux Boot: From Power On to Login

Networking12 min

The 5 Levels of Network Firewalls

Cybersecurity10 min

Password Security: Why Hackers Crack Weak Passwords

Linux9 min

Why Your Linux Server Runs Out of Memory

Networking10 min

HTTP vs HTTPS: What Actually Changes on Your Network

Linux12 min

Every Linux File Permission You Need to Know

Linux10 min

Linux Processes vs Threads: When Each One Wins

Networking11 min

The OSI Model Will Finally Make Sense After This

Git11 min

The 7 Levels of Git

Networking10 min

Every Network Troubleshooting Command You Need

Cybersecurity10 min

Hashing vs Encryption in Cybersecurity: When Each One Wins

Networking11 min

Why the Internet Ran Out of IP Addresses

Linux11 min

Linux Package Managers: apt vs Snap vs Flatpak

Python9 min

Why Python Is Slow (and When It Doesn't Matter)

Networking11 min

TCP vs UDP: When Each One Wins

Linux8 min

Stop Running Linux as Root (Do This Instead)

Linux11 min

Linux Users and Groups Will Finally Make Sense

Cybersecurity9 min

Why Phishing Beats Good Security (and How to Spot It)

Docker12 min

The 7 Levels of Docker

AI agents & MCP12 min

AI Agents Will Finally Make Sense After This

Git8 min

Stop Using git push --force (Use This Instead)

AI agent skills10 min

Agent Skills vs MCP: When Each One Wins

Networking12 min

Networking Will Finally Make Sense After This

Linux12 min

Every Linux Command You Actually Need

Cybersecurity12 min

The 7 Levels of Cybersecurity

System design12 min

Every System Design Concept You Need, in One Diagram

PostgreSQL10 min

Why PostgreSQL Ignores Your Index