SKILL.md vs CLAUDE.md vs System Prompt vs MCP Server
SKILL.md holds instructions an agent loads when a task matches its description, CLAUDE.md and AGENTS.md hold project context loaded at session start, a system prompt travels with every request, and an MCP server exposes tools the model can call. Decide by how often the context must be present and whether the agent has to act on something outside the conversation.
TL;DR
SKILL.md loads in two stages: a name and description at startup, the body on activation. A Prepublish channel skill run on 18 September 2026 produced a 9,623-byte SKILL.md plus three reference files. CLAUDE.md loads at every session start, a system prompt goes out with every request, and MCP tool definitions load as tool schemas.
Try it on your own script
Paste your draft below. You get your hook, structure, and pacing scores, a script-level attention-risk map, and the single biggest issue quoted from your own lines. Free, no login.
Free · No login · See a sample audit first if you prefer.
Key Takeaways
- SKILL.md holds instructions an agent loads on demand, and it loads in two stages: a name and description at startup, the body on activation
- CLAUDE.md and AGENTS.md are project context loaded at session start, and a system prompt travels with every request
- An MCP server exposes tools the model calls
- Choose by how often the context must be present, and whether the agent must act on something outside the conversation
- The Agent Skills specification puts startup metadata at about 100 tokens per skill and recommends an activated SKILL.md body under 5,000 tokens
- Codex stops adding AGENTS.md content to the prompt once the combined size reaches 32 KiB, the default project_doc_max_bytes
Key Statistics
- •The Agent Skills specification puts startup metadata at about 100 tokens per skill and recommends an activated SKILL.md body under 5,000 tokens (agentskills.io, specification, read 19 September 2026).
- •A real Prepublish channel skill run on 18 September 2026 produced a 9,623-byte SKILL.md inside a four-file bundle confirmed with unzip -l (marketing/content-drafts/EVIDENCE.md, section 6).
- •Codex caps the initial skills list at 2 percent of the model context window, or 8,000 characters when the context window is unknown (OpenAI Codex documentation, read 19 September 2026).
- •Codex stops adding AGENTS.md content to the prompt once the combined size reaches 32 KiB, the default project_doc_max_bytes (OpenAI Codex documentation, read 19 September 2026).
- •Claude Code defers MCP tool definitions by default, so only tool names and server instructions load at session start (Claude Code MCP documentation, read 19 September 2026).
In This Guide
SKILL.md vs CLAUDE.md vs System Prompt vs MCP Server
SKILL.md holds instructions an agent loads on demand. CLAUDE.md and AGENTS.md are project context loaded at session start. A system prompt travels with every request. An MCP server exposes tools the model calls. Choose by how often the context must be present, and whether the agent must act on something outside the conversation.
SKILL.md vs CLAUDE.md vs system prompt vs MCP: what each one is
A skill is a directory whose SKILL.md file carries YAML frontmatter with a name and a description, followed by Markdown instructions, with optional scripts/, references/, and assets/ directories beside it (Agent Skills specification, read 19 September 2026).
A project context file is plain Markdown that the client concatenates into the prompt before any work starts. CLAUDE.md is Claude Code's name for it, and AGENTS.md is the cross-tool name with no required fields (agents.md, read 19 September 2026).
A system prompt is the top-level system parameter on an API request, or the account-wide Instructions for Claude and the per-project instructions on claude.ai (Messages API and Claude personalization, both read 19 September 2026).
An MCP server is a program that exposes tools, resources, and prompts over JSON-RPC 2.0, and the model decides when to invoke a tool (MCP specification, revision 2026-07-28, read 19 September 2026).
The comparison table
| SKILL.md | CLAUDE.md or AGENTS.md | System prompt | MCP server | |
|---|---|---|---|---|
| What it is | YAML frontmatter with name and description, plus Markdown instructions; optional scripts/, references/, and assets/ | Plain Markdown instructions with no required fields, concatenated into the prompt | The request-level system string, or account-wide and project instructions in a hosted product | A JSON-RPC 2.0 server exposing tools, resources, and prompts |
| Where it lives | .claude/skills/<name>/SKILL.md, .agents/skills/, .cursor/skills/, .github/skills/, .gemini/skills/ | ./CLAUDE.md, ./.claude/CLAUDE.md, ~/.claude/CLAUDE.md, the managed policy directory; AGENTS.md at the root and in nested folders | In the request payload; in account and project settings on claude.ai | A local process or a remote HTTP endpoint, recorded in the client configuration |
| When it loads | Name and description at startup; body when a task matches the description or the user invokes it | Every session at startup; a nested file loads when the agent reads files in that directory | Every request, ahead of the conversation | The client lists tools at session start; definitions may defer until the model searches |
| Token cost at rest | About 100 tokens per skill for the metadata; activated body recommended under 5,000 tokens | The full file every session; Claude Code targets under 200 lines, Codex stops at 32 KiB combined | The full text is input on every call | Tool names and server instructions only, with definitions deferred by default in Claude Code |
| Who can edit it | Whoever owns the file; commit it for the team or keep it in a personal directory | The repository owner or the user; an organization can deploy a managed copy that individual settings cannot exclude | Whoever writes the client, or the user in product settings | Whoever configures the client; the server author sets the tool list |
| Portability | Open standard, read by Claude Code, Cursor, Codex, Copilot, and Gemini CLI | AGENTS.md travels across clients; CLAUDE.md is Claude Code's own file name | None by default; each API and application has its own field | Open protocol, but each client stores the configuration in its own file |
| What it cannot do | Force a tool call, guarantee activation, or fetch anything by itself | Stay out of context, or scope itself to one task without path-scoped rules | Be versioned with a repository, activate on demand, or carry bundled files | Change how the model reasons about context it already has, or call a tool without host consent |
Sources for the table: Agent Skills specification and Anthropic Agent Skills overview; Claude Code memory, Claude Code skills, and Claude Code MCP; Codex skills and Codex AGENTS.md; Cursor skills, Cursor rules, Copilot agent skills, Copilot repository instructions, Gemini CLI skills and Gemini CLI GEMINI.md; agents.md, Messages API, and the MCP specification 2026-07-28. All read 19 September 2026.
Progressive disclosure, with the numbers
The specification names three levels. At startup the agent loads the name and description of every installed skill, at roughly 100 tokens each. On activation it loads the body, recommended under 5,000 tokens and under 500 lines. Bundled files load only when the agent reads them, so a reference file nobody opens costs nothing (Agent Skills specification, read 19 September 2026).
Anthropic's overview states the same levels and token figures, and adds that scripts run through bash so only their output enters context (Agent Skills overview, read 19 September 2026).
A real bundle shows the shape. The Channel Skill Generator writes a skill from a channel's public videos. A run recorded on 18 September 2026 produced a four-file bundle: SKILL.md at 9,623 bytes plus references/hooks.md, references/titles.md, and references/transcript-excerpts.md, confirmed with unzip -l. The second run produced a 9,395-byte SKILL.md and the third 9.4 KB (marketing/content-drafts/EVIDENCE.md, section 6). The renderer caps the body at 480 lines so the evidence that does not fit moves to the reference files (prepublish-be/internal/domain/entity/channel_skill_render.go). Nothing in the reference files occupies context until a writing assistant opens one.
Two client limits sit on top of the specification. Codex caps the whole initial skills list at 2 percent of the model context window, or 8,000 characters when the window is unknown, and shortens descriptions first when the list is long (Codex skills, read 19 September 2026). Claude Code joins description and when_to_use and truncates the pair at 1,536 characters in its skill listing (Claude Code skills, read 19 September 2026).
Progressive disclosure does not end at activation. Claude Code keeps the rendered SKILL.md in the conversation across later turns, and after auto-compaction it re-attaches the most recent invocation of each skill keeping the first 5,000 tokens, inside a combined budget of 25,000 tokens. Older skills can drop out entirely after compaction.
Three scenarios
A writing-voice brief
Use a skill. A voice brief is procedural, it is long, and it applies when drafting rather than always. It also has natural sub-documents: hooks, titles, and transcript excerpts the agent reads only when it needs an example. That is the layout a channel skill bundle takes, and the layout the specification recommends for a skill with more evidence than fits in 500 lines.
The limit: the agent has to match the description to the task. A brief whose description says "channel voice" without naming when to use it competes with every other installed skill.
A repository convention
Use AGENTS.md or CLAUDE.md, and accept that it costs context every session. Build commands, directory layout, and naming rules apply to nearly every task, so the agent should not have to decide whether to load them. AGENTS.md states the conflict rule plainly: the closest file to the edited file wins, and an explicit chat instruction overrides both (read 19 September 2026).
The limit: the file grows. Claude Code recommends keeping a CLAUDE.md under 200 lines and moving a procedure into a skill once it stops being a fact. Codex silently stops adding files once the combined size reaches 32 KiB (Claude Code memory and Codex AGENTS.md, read 19 September 2026). Past that point the rule you added is not in the prompt, and nothing tells you.
A live data lookup
Use an MCP server. A transcript or a ticket is not in the repository, and a value copied into a context file goes stale by the next session. An MCP server exposes the lookup as a tool the model calls at the moment it needs the answer. Prepublish publishes one at prepublish.ai/mcp for that reason: the transcript is fetched on the call rather than pasted into the prompt.
The limit: the tool definition itself spends context, and the output can be large. Claude Code warns when a single MCP tool output passes 10,000 tokens and limits output to 25,000 by default (Claude Code MCP, read 19 September 2026).
Portability: where each client looks
| Client | Skills | Project context | Scoped instructions |
|---|---|---|---|
| Claude Code | .claude/skills/<name>/SKILL.md, ~/.claude/skills/ | CLAUDE.md, ./.claude/CLAUDE.md, ~/.claude/CLAUDE.md, plus AGENTS.md | .claude/rules/*.md with a paths frontmatter field |
| Cursor | .cursor/skills/, .agents/skills/, plus .claude/skills/ and .codex/skills/ for compatibility | AGENTS.md, described as a simpler alternative to rules | .cursor/rules/<name>.mdc with alwaysApply, description, or globs; a plain .md file there is ignored |
| Codex CLI | .agents/skills/ from the working directory to the repository root, $HOME/.agents/skills, /etc/codex/skills | AGENTS.md and AGENTS.override.md, from ~/.codex down to the working directory | A nested AGENTS.override.md per directory, plus project_doc_fallback_filenames for other file names |
| GitHub Copilot | .github/skills, .claude/skills, .agents/skills, ~/.copilot/skills, ~/.agents/skills | .github/copilot-instructions.md; agents read the nearest AGENTS.md, or a single root CLAUDE.md or GEMINI.md | .github/instructions/NAME.instructions.md with an applyTo glob |
| Gemini CLI | .gemini/skills/ or .agents/skills/ in the workspace, and the same paths under the home directory | GEMINI.md, or another file name set through context.fileName | Just-in-time GEMINI.md discovery in a directory, plus @file.md imports |
Sources, each read 19 September 2026: Claude Code skills and memory; Cursor skills and rules; Codex skills and AGENTS.md; Copilot agent skills and repository instructions; Gemini CLI skills and GEMINI.md, last updated 30 April 2026 and 18 June 2026. Gemini CLI's own skills page records that unpaid-tier and Google One users were moved to Antigravity CLI on 18 June 2026.
The matrix has one practical implication. .agents/skills/ is the directory several clients already scan, so a skill placed there reaches Cursor, Codex, Copilot, and Gemini CLI without a copy. SKILL.md frontmatter is narrower than any single client's. Only name, description, license, compatibility, metadata, and allowed-tools survive the specification. Claude Code adds fields such as disable-model-invocation and paths, and other hosts reject them when a skill is packaged or uploaded (Claude Code skills, read 19 September 2026).
Agent skills vs MCP tools
A skill tells the agent how to work. An MCP server gives it something to call. They combine without overlapping: a skill can tell the agent to check a schema before writing a query, and the MCP server answers the query.
The loading behavior differs. Skill metadata loads at startup and the body on activation. MCP tool names load at startup, and the definitions follow either immediately or on a search. Claude Code defers MCP tool definitions by default through tool search, so only tool names and server instructions occupy context at session start (Claude Code MCP, read 19 September 2026). Its auto mode loads definitions upfront while they total under 10 percent of the context window and defers all of them once they cross that line. A server configured with alwaysLoad puts its tools in context at session start whether or not tool search is on.
The MCP specification also makes tools a different kind of object from a text file. Tools are model-controlled: the model discovers and invokes them, while resources are application-driven and prompts are user-invoked (MCP specification, revision 2026-07-28, read 19 September 2026). The specification requires hosts to obtain explicit user consent before invoking any tool, and tells implementers to treat tool descriptions as untrusted unless the server is trusted.
Limits: skills are instructions, not enforcement
Nothing in the Agent Skills format guarantees compliance. A skill body is text in a prompt, and the model can ignore it, apply half of it, or never see it because the description did not match the request. Claude Code says this in its own documentation: memory and instruction files are context rather than enforced configuration, and blocking an action requires a PreToolUse hook (Claude Code memory, read 19 September 2026).
Activation is the first place a skill can fail. Codex shortens descriptions first when the initial list grows, and may omit some skills from the list with a warning, which means a skill on disk is not always a skill the model knows about. Claude Code shows the same pressure from the other side: the combined description and when_to_use text is truncated at 1,536 characters in the listing, so the words at the end of a long description never reach the model.
Trust is the second limit. Anthropic's overview treats a skill like installing software and tells readers to audit every file in a bundle, because a skill can direct the agent to call tools or run code that the description does not mention. The MCP specification takes a similar position on tools, noting that the protocol cannot enforce its own security principles and that hosts should build consent and authorization flows themselves.
The last limit is that context bought at startup is context unavailable later. A 32 KiB AGENTS.md, a 9,623-byte SKILL.md kept in context after activation, and a dozen always-loaded MCP tool definitions all draw from the same window. The mechanisms differ in when they charge, not in whether they charge.
Frequently asked questions
What is the difference between SKILL.md and CLAUDE.md?
CLAUDE.md loads at the start of every session and stays in context, so the agent reads it whether or not the task needs it. A SKILL.md file loads in two stages: the client puts the name and description in the prompt at startup, then reads the body only when a task matches, as the Agent Skills specification describes (read 19 September 2026). Claude Code documents the same split and recommends moving a CLAUDE.md section into a skill once it becomes a procedure rather than a fact.
When should I use SKILL.md instead of a system prompt?
Use a skill when the instruction applies to some tasks and not others, or when it comes with reference files the agent should read only if needed. Use a system prompt when the rule has to apply to every request, such as output format or a safety constraint. A system prompt is sent with each call and cannot be scoped, while a skill waits on disk at the cost of its name and description.
Is AGENTS.md the same as CLAUDE.md?
They serve the same purpose and use plain Markdown, but they are different file names with different reach. AGENTS.md is the cross-tool format, described on agents.md as being used by over 60,000 open-source projects, and Cursor, Codex, Copilot, and Gemini CLI read it. CLAUDE.md is Claude Code's own name, and Claude Code also reads AGENTS.md files on their own or alongside CLAUDE.md (Claude Code memory documentation, read 19 September 2026).
Do Agent Skills work in Cursor and Codex?
Yes, with client-specific directories. Cursor loads skills from .cursor/skills/ and .agents/skills/, and also reads .claude/skills/ and .codex/skills/ for compatibility (Cursor documentation, read 19 September 2026). Codex scans .agents/skills from the working directory up to the repository root, plus $HOME/.agents/skills and /etc/codex/skills (OpenAI Codex documentation, read 19 September 2026). The frontmatter has to stay inside the specification: fields Claude Code adds are rejected by other hosts.
What is progressive disclosure in Agent Skills?
It means the agent reads a skill in stages instead of all at once. Level one is the name and description, at about 100 tokens per skill. Level two is the SKILL.md body, loaded when the skill activates and recommended under 5,000 tokens. Level three is the bundled files, which cost nothing until the agent reads one. The Agent Skills specification defines the three levels (read 19 September 2026), and Claude Code applies the same model to skills, rules, and MCP tools.
Are MCP tools the same as Agent Skills?
No. A skill is instructions and optional files that shape how the model works. An MCP server is a program that exposes callable tools, resources, and prompts over JSON-RPC 2.0, and the model decides when to invoke a tool. The MCP specification calls tools model-controlled and requires hosts to obtain user consent before invoking one (revision 2026-07-28, read 19 September 2026). A skill can tell the model to use a tool; it cannot make the call itself.
Can a skill force an agent to follow a rule?
No. Skill bodies and project context files are context, not enforced configuration. Claude Code states this directly and points to a PreToolUse hook when an action has to be blocked regardless of what the model decides (Claude Code memory documentation, read 19 September 2026). The model can also fail to activate a skill at all: Codex shortens skill descriptions first when the initial list grows, and may omit skills from that list with a warning (OpenAI Codex documentation, read 19 September 2026). Use hooks, permissions, or CI for enforcement.
Where do skills live in a repository?
Cursor reads .cursor/skills/ and .agents/skills/; GitHub Copilot reads .github/skills, .claude/skills, and .agents/skills; Gemini CLI reads .gemini/skills/ and .agents/skills/; Codex reads .agents/skills. Claude Code reads .claude/skills/<name>/SKILL.md at the project and user level. The .agents/skills path is the interoperable one, because several clients already scan it. Each source is that client's own documentation, read 19 September 2026.
Related Guides
Free tools to put this into practice
Hook Analyzer
Score your first 1-3 sentences
Title Analyzer
Writing rubric + 5 rewrites
Words to Minutes
Script length calculator
Word Counter
Count, reading time, duration
Want to see how this reads on real channels? Browse the channel breakdowns. Each one compares script patterns across a channel's own higher-viewed and lower-viewed uploads, quoted from the transcripts.
See where your next script leaks viewers
Paste your script, get your scores and the biggest leak for free. No login.