← Claude Code Hub
✦ Tip #201 Sep 18, 2026

Claude Code skills: only pay for the ones you actually use

Every skill you have installed gets described to Claude at the start of every turn. Fifty-seven of them is 7,590 tokens riding along with whatever you are actually doing.

A folder tree: the skill at the root is always in the system prompt listing while the one under apps/web is absent until Claude reads a file in that folder

TL;DR A skill in <folder>/.claude/skills/ stays out of the listing until Claude touches a file in that folder, and then it loads on its own without restarting the session. Keep only the ones you use everywhere in your global folder.

Every installed skill holds a line in your system prompt. Not the whole SKILL.md, just its name and its description (truncated at 1,536 characters), but that line ships on every turn whether the skill runs or not.

With two or three skills it does not matter. With fifty-seven it does. This is my machine, running /skill-doctor from the shell:

$ claude -p "/skill-doctor"

Skills loaded this session

  skill                             source               context  uses  last used
  carousel                          userSettings            ~130    0×  never
  tip-board                         userSettings             ~50    0×  never
  figma:figma-generate-design       figma                   ~290    0×  never
  anthropic-skills:computer-use     claude.ai sync          ~320    0×  never
  claude-code-tip                   userSettings             ~30  220×  today
  ...

  context = this skill's one-line listing in the system prompt, included every turn

Fifty-seven rows, 7,590 tokens on every turn, and 5,950 of them belong to skills I have never once invoked. It is a flat toll: you pay it on a two-word prompt exactly as you pay it on a three-hour refactor.

The folder decides who loads

A skill does not have to live in ~/.claude/skills/. It can live inside the folder where it makes sense:

my-repo/
├── .claude/skills/deploy/SKILL.md      ← every session in the repo
└── apps/web/
    └── .claude/skills/storybook/SKILL.md   ← only when you work in there

The one under apps/web/ does not show up in a session started at the root. It is not that it fails to run: it is not in the listing at all, so it costs you nothing. It appears the first time Claude reads or edits a file in that folder, mid-session, with no restart, and stays for the rest of the session.

I tried it with a throwaway skill inside deep/:

Session started at In the listing?
the repo root No
deep/ Yes, from startup
the root, then asked to read deep/nota.txt Yes, it turns up right after that read

That third row is the whole deal: zero cost while you don't need it, there the moment you do.

Moving one

1. See what you are paying

claude -p "/skill-doctor"

The context column is what each row costs you per turn. Start with the ones at that cost the most. The full breakdown, and where each source gets switched off, has its own tip.

2. Put it in its folder

mkdir -p apps/web/.claude/skills/storybook
mv ~/.claude/skills/storybook/SKILL.md apps/web/.claude/skills/storybook/

3. Check it is gone from where it does not belong

cd my-repo && claude -p "/skill-doctor" | grep storybook   # nothing
cd apps/web && claude -p "/skill-doctor" | grep storybook  # there it is

If the nested one ends up sharing a name with one at the root, they do not shadow each other: the listing shows one as probe-widget and the other as deep:probe-widget, path first, colons as separators, so you call whichever you want by name. That is a different case from your personal folder clashing with the project's, where one really does shadow the other, and not in the direction you would guess: the precedence table settles that one.

What this does not fix

The lever only works on skills you own and can move. On my own machine it barely helps: of those 5,950 dead tokens, 370 are mine and 5,120 come from plugins and from skills synced off claude.ai. A plugin cannot be trimmed skill by skill, you disable the whole thing in /plugin, and a synced skill is downloaded again if you delete it locally, so that one is switched off on claude.ai.

Which is why the order matters: diagnose first, then reach for the lever that fits. And if what you want is the whole picture of your window rather than the skills alone, that is /context.

Reference

Where the SKILL.md lives Who loads it
~/.claude/skills/<name>/ Every session you start, in any repo
.claude/skills/<name>/ (project root) Every session in that project
<folder>/.claude/skills/<name>/ Sessions started there or below, plus sessions above it as soon as Claude touches a file in that folder
.claude/skills/<name>/ inside an --add-dir Sessions that add that directory
<plugin>/skills/<name>/ While the plugin is enabled
Synced from claude.ai All of them, until you turn it off on claude.ai

Official docs: Extend Claude with skills

Requirements

  • Nothing external. /skill-doctor needs v2.1.252 or later; everything above was run on v2.1.276.
Free guide

The 51 essentials, as a guide.

One page per tip. Five chapters. What I actually use daily in production. No theory, no fluff.

  • I. Getting started 10 tips
  • II. Awareness 3 tips
  • III. Mastery 22 tips
  • IV. Autonomy 10 tips
  • V. Comparison 6 tips
Are you a professional Web developer?

You'll receive the guide by email · You join the Gravitas newsletter · Unsubscribe anytime

of 51
#

Wmedia · 51 Tips
Free guide · 51 tips · 5 chapters

The 51 essentials, as a guide.

Are you a professional Web developer? · Unsubscribe anytime
Workshop for teams

Multiply your team's output without sacrificing quality: a 6 to 8 hour AI First workshop, online, on the Claude platform.

See the workshop

Want the 51 Claude Code essentials as a guide?