You keep long release procedures in CLAUDE.md, and every session pays for them even when nobody releases. What is the better home?
Why D is the answer
A skill, whose body loads only when used
CLAUDE.md content loads every session. A skill's body loads only when it is used, so long procedures for occasional tasks fit better there.
In detail
- CLAUDE.md content loads in every session.
- A skill's body loads only when it is used.
- That makes skills the right home for long procedures used now and then.
- Keep a short pointer in CLAUDE.md if people need to know it exists.
Use case
An illustrative scenario, not a real incident.
A release checklist sits in CLAUDE.md and loads in every session, yet releases happen monthly. As a skill, it loads only during a release.
See it in different ways
flowchart LR A["CLAUDE.md"] --> B["Loaded in every session"] C["Skill"] --> D["Body loads only when used"]
flowchart LR A["User CLAUDE.md"] --> D["Context for the session"] B["Project CLAUDE.md"] --> D C["CLAUDE.local.md"] --> D E["Skill body"] -.->|"Only when used"| D
flowchart TD
Q{"How often is it needed?"}
Q -->|"Every session"| A0["CLAUDE.md"]
Q -->|"Occasionally"| A1["A skill"]Key point: CLAUDE.md is for every session, and skills are for some.
Why the other options are wrong
- A. The user message of each session, pasted in by whoever runs the release
- Pasting it relies on people remembering, and it drifts.
- B. A longer system prompt
- A longer system prompt has the same cost on every request.
- C. A comment in the source code
- Claude would have to find a comment, and it is not a shared procedure.

