inaday.ai

Build

Claude Code skills vs prompts: I measured 15 real skills

Sam

July 21, 2026 · 5 min read

Time spentan afternoon
Tools usedClaude Code
Result15 production SKILL.md files measured: 49,214 characters total, only 18.9% of that loads by default

I spent an afternoon measuring a Claude Code skill folder, because I wanted a number instead of a theory. The .claude/skills/ directory holds 15 skills that run every day. Their SKILL.md files add up to 49,214 characters, but only 9,321 of those sit in the context window when a session opens. That's 18.9%. The other 81% loads on demand.

This is for anyone who keeps pasting the same wall of instructions into Claude Code. By the end you'll know what a working skill file looks like, how long it should be, and which line does the real work.

One honest catch: I measured characters, not tokens. No API key on this machine for Anthropic's count_tokens, and OpenAI's tokenizer gives the wrong answer for Claude. Characters are the honest unit.

What I wanted to find out (and why)

I wanted to know what the folder version actually costs to keep around. People make the swap to stop re-explaining themselves: a long prompt does its job once, then the session's over and the knowledge goes with it, so every new session starts with the same rules about tone, structure and quality bars, and every session drops a slightly different piece of them. Claude Code is a terminal agent that reads and edits files in your project, and that file access is what makes the folder version possible.

A skill is a directory with one SKILL.md file in it, and that's the entire format.

Claude Code skills vs prompts: what actually changes

The difference is when the text enters the context window. A prompt is in context the moment you paste it, and it stays there for the rest of the session whether it's relevant or not. A skill splits into two pieces: a short description in the YAML frontmatter, and the body underneath it. Anthropic's official skills documentation puts it plainly: skill descriptions are loaded into context so Claude knows what is available, but full skill content only loads when invoked.

So the description is a permanent tenant and the body is a guest. That's the trade, and it's why these 15 skills cost 9,321 characters of standing context instead of 49,214.

The plan: measure instead of guess

The plan was to stop theorising and count. Three questions: how long is a SKILL.md that works, what the descriptions have in common, and how much one skill pulls in when it fires. Every number below came from a script over those 15 files.

How long is a SKILL.md that actually works?

Shorter than I expected. The median file is 40 lines and 439 words. The shortest is 222 words, the longest is 701. None is the sprawling document I assumed a "real" skill would be.

That surprised me, because my instinct with a long prompt is always to add more. In a skill folder the incentive flips. Anything that doesn't need to be in SKILL.md goes into a separate file in the same directory, and Claude reads it only when the task calls for it. The body stays a procedure, not an encyclopedia.

The description is the entire trigger

One line decides whether a skill ever fires, and it's the description. Claude reads every installed skill's description to work out which matches your request, so a vague one means a skill that quietly never activates.

There's a hard number attached to this. The docs state that the combined description and when_to_use text is truncated at 1,536 characters in the skill listing, specifically to reduce context usage. So the description has a budget. The longest one here is 794 characters, which is 52% of the cap. The median is 596. Headroom, but not unlimited: anything past 1,536 characters is text Claude never sees.

The shape is consistent. Across the 15 files, 14 descriptions contain literal quoted trigger phrases, 100 of them in total, and 12 use an explicit "use when" list. They're not written like documentation. They read like a list of things a user might actually type.

SKILL.md description pattern
description: [What the skill does, in one clause]. [How it does it: which files it loads, which steps it runs]. Use when: "first thing a user would type", "second phrasing", "third phrasing". Also fires automatically whenever [the situation that should trigger it], even without the word [obvious keyword].

That last clause is the one that earns its keep. Naming the situation, not just the keyword, is what keeps a skill from sitting idle while you type around it in different words.

Where it went wrong

The failure mode is a skill that exists and never runs, and these 15 files show what causes it. Not one description reads like a table of contents entry. "Writes an article." "Checks SEO." Accurate and useless, because nothing a person actually types sounds like a summary of a feature.

The second thing the files gave away: nobody treats a skill as finished. In this repo 14 commits touch .claude/skills/, and the pattern in them is corrections landing as diffs. One skill grew from a five step process to a six step process after a run produced something thin. With a long prompt that fix lives in someone's head until they forget it. Here it's a two line change in a file that every future run reads. That's another hour saved, every time.

What one skill costs when it fires

A lot more than its description, which is the whole point. The largest skill in the set pulls in 22,327 characters across six files when it activates: its own SKILL.md plus a style guide, an author profile, a template and two reference files. Its description is 794 characters.

That's a factor of 28: twenty eight times the material at zero standing cost until the moment it's relevant. As a single pasted prompt those 22,327 characters would sit in context for the whole session, including the parts that have nothing to do with what I'm doing.

The result

Fifteen skills, 49,214 characters of instructions, 9,321 characters of standing cost. The library keeps growing and the baseline barely moves, because each new skill only adds its description. What isn't solved: nothing tells you a skill failed to trigger. You just get a mediocre answer and have to notice it yourself, which is a stranger kind of debugging than anything in building a landing page in a day or comparing two builders side by side.

Would I do it this way again?

Yes, and I'd start with the description instead of the body. I spent most of the afternoon reading procedures inside SKILL.md files that were already good enough, and every interesting number was attached to the one line that decides whether any of that gets read. Next time: trigger phrases first, steps second.

The other thing I'd change: convert fewer prompts. A prompt you use once a month is fine as a prompt. The ones worth a folder are the ones you've pasted more than three times, because those are the ones where a correction needs somewhere permanent to live. Fair enough if that's only two or three of yours. Good enough ships.

Time: an afternoon of reading and counting

Cost: $0 beyond normal Claude Code usage

Tools: Claude Code, one Python script

Difficulty: 2 out of 5

Start this today

  1. Find a prompt you have pasted into Claude Code more than three times, and save it as .claude/skills/your-name/SKILL.md.
  2. Add YAML frontmatter with a description that quotes three phrasings you would actually type, and keep the whole thing under 1,536 characters.
  3. Open a new session, type one of those phrasings, and check whether the skill fires. If it doesn't, the description is the problem, not the body.

FAQ

Can I use Claude Code skills without writing code?
Yes. A skill is a folder with one markdown file in it, and the file is plain English instructions. The only technical step is creating a directory called .claude/skills/your-skill-name and saving SKILL.md inside it.
How long does it take to convert a prompt into a skill?
Copying the prompt into a SKILL.md file is the fast part. The description is where the thinking goes: in the 15 files I measured, the median is 596 characters and 14 of 15 quote real user phrasings.
What does it cost to run skills in Claude Code?
Nothing beyond your normal Claude Code usage. Skills are local markdown files, so there's no separate fee. They can lower your token spend, because the body of a skill only enters the context window when the skill fires.
Share:XLinkedIn

If you have another hour…

Buildan afternoon · Claude Code, v0, Lovable

Claude Code vs v0 vs No-Code: One Brief, Three Tools

Claude Code vs v0 vs Lovable: I gave three AI tools the same app brief. One I built and measured, two I judged on documented behavior. Here's the winner.

Nova