SKILL.md token cost: what loads at startup and what loads on demand
Skill files (SKILL.md) are often described as free context because they are only loaded when needed.
That is partly true, and the part that is not true is where the tokens go. Here is what each tool loads and when,
so you can budget a library of skills without guessing.
Skills: metadata first, body on demand
Anthropic's skill documentation describes progressive disclosure. At startup, only the name and
description from each skill's frontmatter are loaded into the system prompt. The agent reads the
SKILL.md body only when a skill becomes relevant, and reads any extra files it links only as needed.
Scripts can be run without loading their contents, so only their output costs tokens.
| Part of a skill | When it costs tokens |
|---|---|
name + description | Every session, for every installed skill |
SKILL.md body | Only when the skill is triggered, then for the rest of that conversation |
| Linked reference files | Only when the agent reads them |
| Scripts | Output only, not the script text, if the agent runs rather than reads them |
What that means for your budget
- Descriptions are the always-on cost. Fifty skills with 80-token descriptions put about 4,000 tokens in every session before you type anything. The documented limit is 1,024 characters per description, so a long one is a real cost multiplied by your skill count.
- A loaded body stays loaded. Once a skill triggers, its body competes with your conversation history for the rest of the session. The documentation recommends keeping the body under 500 lines and splitting the rest into linked files.
- Vague descriptions cost twice. A description that does not say what the skill does and when to use it makes the agent load the wrong skill or skip the right one.
- Keep links one level deep. A linked file that links to another file may only be partly read, so the agent can end up with an incomplete answer after spending the tokens.
Cursor rules: the type decides the cost
Cursor project rules work differently. Its rules documentation lists four rule types, and when each one is included decides whether you pay for it on every request:
| Rule type | Frontmatter | Token cost |
|---|---|---|
| Always Apply | alwaysApply: true | Every chat session |
| Apply to Specific Files | globs set | When a matching file is in context |
| Apply Intelligently | description only | When the agent decides it is relevant |
| Apply Manually | none of the three | Only when you @-mention it |
Cursor also recommends keeping each rule under 500 lines and referencing files instead of pasting their contents.
A referenced file such as @service-template.ts is not inlined into the prompt, because the agent reads
it with its tools when it needs it.
A simple way to budget
- Separate always-on from on-demand. Always-on means your
AGENTS.mdorCLAUDE.md, rules withalwaysApply: true, and every skill description. - Weigh the always-on part first. Paste those files into Clogmeter to see token counts and the share of a 32k, 128k or 200k window.
- Weigh each skill body separately. A 3,000-token body that triggers often is a bigger problem than a 6,000-token one that triggers once a month.
- Move rarely used guidance down a level. From
AGENTS.mdinto a skill, from a skill body into a linked file, from an always-on rule into a glob or description rule.
Exact loading behaviour differs between tools and versions. The tables above follow Anthropic's Agent Skills best-practices page and Cursor's rules documentation, so check the current docs for your tool before relying on a detail.
Quick check
Count a skill or rules file with the Cursor rules token counter or the AGENTS.md / CLAUDE.md token counter, and check Cursor frontmatter with the .mdc validator. The full inspector also flags duplicate and conflicting rules.
Open Clogmeter and weigh your instruction files → Free, browser-only. Token counts, duplicates, conflicts, trimmed export — nothing uploaded.