Write a Claude Code Skill That Loads Only When It's Needed: SKILL.md Step by Step A developer outlined a step-by-step method for packaging recurring release-notes procedures as a Claude Code skill, using a .claude/skills/release-notes/SKILL.md file, a bundled commits.sh script, and a style reference that load only when the task triggers. The approach exploits Anthropic's three-tier Agent Skills loading model, where only a skill's name and description sit in context at startup (roughly 100 tokens each) while the SKILL.md body and bundled files load on demand, with script output rather than code entering context. The writeup notes that once invoked, a skill's content stays in the conversation for the rest of the session. Open your CLAUDE.md and scroll. Somewhere past the build commands there is a section called "Cutting a release": how to find the last tag, which commit types to drop, the heading order, the tone. Forty lines you need maybe twice a month. They sit in the context window for every turn of every session, including the afternoon you spend fixing a CSS bug. That is how CLAUDE.md works by design. Claude Code reads it at the start of every session https://code.claude.com/docs/en/memory , and the same page tells you to target under 200 lines per file and to move "a multi-step procedure" into a skill instead. A skill's body stays on disk until Claude decides the task needs it. The only part in context up front is a name and a one-paragraph description. Move that procedure into a Claude Code https://code.claude.com/docs/en/overview skill: a SKILL.md , a bundled script, and a style reference that loads only when the notes get written. Anthropic's Agent Skills overview https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview splits a skill into three levels, each loaded at a different time: | Level | When it loads | Cost per the docs | |---|---|---| | name + description | Always, at startup | About 100 tokens per skill | | SKILL.md body | When the skill triggers | Under 5k tokens | | Bundled files and scripts | When read or run | Nothing until accessed | Scripts get an extra discount. When Claude runs a bundled script, only its output enters context https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview , not the code. So the deterministic work listing commits, grouping them belongs in a script, and the judgment which commits a user cares about belongs in markdown. One caveat before you move everything out of CLAUDE.md. Once a skill is invoked, its content stays in the conversation https://code.claude.com/docs/en/skills for the rest of the session, and Claude Code does not re-read the file on later turns. So the saving is in the sessions that never touch releases. In the release session itself, the body sits in context from the moment the skill fires. Only the index card is always on the desk. The folder and the drawer open when the task needs them. Project skills live in .claude/skills/