Your team wants Claude to follow the same multi-step process for writing release notes, loaded only when someone asks for release notes. What fits best?
Why C is the answer
A Skill that holds the instructions and loads on demand
A Skill packages task instructions and loads them when needed. MCP is for connecting external systems, and pasting it into every prompt spends tokens on every request.
In detail
- A Skill packages instructions and loads them only when they are needed.
- That suits a process used occasionally, because it costs nothing on other requests.
- A clear description helps Claude load the Skill at the right time.
Use case
An illustrative scenario, not a real incident.
A team writes release notes the same way each month. As a Skill, the steps load only when someone asks for release notes, so other requests do not pay for them.
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{"What do you need?"}
Q -->|"Instructions for a task"| A0["Skill"]
Q -->|"Access to an external system"| A1["MCP server"]
Q -->|"A rule for every request"| A2["System prompt"]Key point: Skills load task instructions only when needed.
Why the other options are wrong
- A. A paragraph added to every system prompt
- A paragraph in every system prompt spends tokens on every request.
- B. A custom tool that returns the instructions as JSON
- A custom tool would add code and a call just to return text a Skill already holds.
- D. An MCP server exposing a write_release_notes tool
- MCP connects external systems. This is a set of instructions.

