Anthropic's Agent Skills format lets a Claude based agent store reusable, specialized procedures as a folder of instructions, scripts, and reference material, and load them only when a task actually calls for them. This paper reviews Agent Skills as a system, drawing entirely on Anthropic's own published documentation, blog posts, and repository materials, to describe what a Skill contains, how its progressive disclosure loading mechanism works, and how it relates to three adjacent mechanisms already available to a Claude based agent: the Model Context Protocol, subagents, and plugins. The review finds a three level loading architecture, always loaded name and description metadata, full instructions loaded only once a Skill is matched to a request, and supporting scripts or reference files loaded only as those instructions call for them, documented to scale to hundreds of installed Skills without a proportional context cost, and a division of labor across the four mechanisms in which each addresses a distinct concern (procedural knowledge, external connectivity, execution isolation, and packaged distribution) rather than competing to solve the same problem. The review also surfaces two documented inconsistencies in Anthropic's own token cost estimates for the loading levels, and one exception to the format's otherwise cross surface portability claim tied to Claude Code specific frontmatter fields. The paper concludes that Agent Skills is best understood as a narrow, complementary addition to an existing toolkit rather than a replacement for any part of it, and notes that its documented exclusion from Zero Data Retention coverage warrants direct verification by any organization operating under federal or similarly regulated data handling requirements before deployment against regulated data.
Introduction
Large language model agents increasingly serve as the operational layer for real world software tasks, from writing and reviewing code to filling regulatory forms and orchestrating multi step workflows. Anthropic's own engineering writing observes that when Claude operates as an agent across long running or complex tasks, its core reasoning ability alone is not sufficient; it also needs procedural knowledge, the specific conventions of a codebase, the correct sequence of operations for a workflow, or the completed template for a recurring output. Without a mechanism to carry that expertise across sessions, an agent effectively starts every session from a blank slate, repeating the same explanations and reconstructing the same context each time a task recurs.
This shortfall carries a direct operational cost. Two levers govern how much specialized capability a model based agent can bring to a task: retraining or fine tuning the model itself, an expensive and slow process, and augmenting the model's context at run time. Context augmentation is the practical lever available to most teams, but every token added to a system prompt or a tool definition is a token unavailable for the actual task, and every additional capability loaded up front increases the chance that irrelevant instructions crowd out what a specific request actually needs. As the number of distinct tasks an agent is expected to handle grows into the hundreds, loading full instructions for every one of them at the start of a conversation becomes impractical.
Anthropic's response to this problem, introduced in October 2025 and extended through the end of that year, is Agent Skills: folders of instructions, scripts, and other resources, packaged behind a single required file named SKILL.md, that Claude loads only when a task calls for them, and that are portable across Claude's consumer app, its command line tool Claude Code, and its developer facing API. This paper examines Agent Skills as a system: what a Skill contains, the mechanism by which Claude decides when to load one and how much of it to load, and how the design compares with the adjacent mechanisms, namely the Model Context Protocol, subagents, plugins, and conventional system prompts, that a builder might otherwise reach for. The aim is to give a reader who has not yet used Skills a concrete and verifiable account of how the architecture works and why it was built this way, grounded throughout in Anthropic's own published documentation rather than in secondary description.
Background
Before Agent Skills, three mechanisms already existed for extending what a Claude based agent could do, and each addresses a different piece of the same underlying problem.
The most direct mechanism is a static system prompt, or in Claude Code specifically, a checked in CLAUDE.md file read at the start of every session. This approach is simple and requires no additional infrastructure, but it does not scale well as the number of task specific conventions grows. Anthropic's own guidance on context engineering describes the context window as a finite and shared resource, noting that agents perform best when they discover relevant context incrementally rather than holding everything in view at once. A single always loaded instruction file that tries to cover many specialized tasks pushes against this constraint directly: every token spent on a rule for a task the current request does not touch is a token unavailable for the request that is actually in front of the model, and it is repeated in full on every single session regardless of relevance.
The Model Context Protocol (MCP), released as an open standard, addresses a different gap: it lets an agent connect to external tools and live data sources, for example a database, a ticketing system, or an internal API, through a standardized server interface. Anthropic's own comparison of the two mechanisms is direct about the boundary: MCP provides connectivity, while the question of how to use that connectivity well, in what order, under what conditions, with what fallback, is left largely unaddressed by the protocol itself. An agent connected to a dozen MCP servers still has to be told, somehow, when a given tool applies and how its outputs should be composed with everything else the agent is doing, and that procedural layer has not had a standard home.
Subagents, a Claude Code specific mechanism, address workload isolation rather than knowledge packaging: a subagent runs a task in a separate context window, which keeps a noisy or exploratory operation from polluting the main conversation, but the reusable expertise a subagent might apply to that task still has to be defined somewhere else. Plugins, meanwhile, are Anthropic's packaging and distribution layer; a plugin can bundle commands, hooks, MCP servers, and skills together for installation as a single unit, but a plugin is not itself a format for expressing procedural knowledge. Anthropic's own reference documentation states plainly that a plugin contributes context through its skills, agents, and hooks, not through a CLAUDE.md style file of its own.
None of these mechanisms, static instructions, external tool connectivity, isolated execution, or packaged distribution, was designed to answer the specific question this paper takes up: how an agent should store and progressively load the accumulated, reusable expertise for a specific, recurring task, in a form that survives across sessions and across the different surfaces on which Claude runs. Agent Skills is Anthropic's answer to that specific question, built to sit alongside, not replace, each of the mechanisms above.
Agent Skills Framework
Skills package procedural knowledge as a self contained folder whose only required member is a single file, SKILL.md, written with YAML frontmatter followed by a Markdown body. Anthropic's own template repository ships a minimal example consisting of nothing more than a name field, a description field, and a body placeholder reading "Insert instructions below," which is deliberately the smallest possible Skill: everything else described in this section is optional structure a Skill can add as its instructions grow.
The SKILL.md File and Frontmatter
Two frontmatter fields are required everywhere Skills run: name, limited to 64 characters of lowercase letters, numbers, and hyphens, and description, limited to 1024 characters, which must state both what the Skill does and when it should be used. Claude Code recognizes a substantially larger set of optional fields on top of these two, among them allowed-tools and disallowed-tools to scope which tools a Skill may invoke, disable-model-invocation and user-invocable to control whether a Skill can be triggered automatically, by the user directly through a slash command, or both, model and effort to override the reasoning configuration for a Skill's own execution, and context: fork to run a Skill in an isolated context rather than the main conversation. Outside Claude Code, in claude.ai uploads and in the Skills API, only six fields are valid at all: name, description, license, compatibility, metadata, and allowed-tools; any Claude Code specific field included in a Skill deployed through those surfaces produces a hard validation error rather than being silently ignored. A Skill of any complexity is expected to extend beyond the single SKILL.md file into a small bundle, typically scripts in a scripts/ folder, longer form documentation in a references/ folder, and static assets or templates in an assets/ folder, all referenced from the SKILL.md body rather than loaded automatically. Anthropic's authoring guidance is explicit that SKILL.md itself should stay under roughly 500 lines, with anything longer moved into one of those supporting files.
The Progressive Disclosure Loading Model
The mechanism that makes a large library of Skills practical is what Anthropic calls progressive disclosure, described through the analogy of a manual that opens with a table of contents, proceeds to specific chapters, and only then reaches a detailed appendix. Concretely, Anthropic's documentation describes three loading levels. At level one, the name and description of every installed Skill are loaded into the system prompt at startup, at a documented cost of roughly 100 tokens per Skill, giving Claude just enough information to recognize when a Skill might apply without paying the cost of its full content. At level two, once a Skill is judged relevant to the request in front of it, Claude reads the SKILL.md body from the file system using its own command line tool, bringing the instructions into the context window at a stated cost of under 5,000 tokens. At level three and beyond, any scripts or reference files the SKILL.md body points to are read or executed only as the instructions direct, and when a script is executed, only its output enters the context window, never the script's own source code.
It is worth noting plainly, for a reader checking this account against Anthropic's own materials, that the documentation is not perfectly internally consistent on the exact token figures. A separate Claude blog post describes the same three levels with different estimates, approximately 50 tokens for metadata and approximately 500 tokens for the SKILL.md body, against the 100 and under 5,000 token figures given on the primary architecture overview page. Both sources agree on the shape of the mechanism; they disagree on the specific numbers, and this paper reports that disagreement rather than silently choosing one figure as authoritative.
Discovery and Invocation
Discovery is primarily automatic: Claude compares an incoming request against the loaded description metadata for every installed Skill and decides for itself which, if any, are relevant, the same matching process that governs whether zero, one, or several Skills load for a single request. Claude Code adds an explicit invocation path on top of this automatic one, through the disable-model-invocation and user-invocable frontmatter fields described above, so that a Skill author can restrict a given Skill to model only use, user only use through an explicit slash command, or leave both paths open. The Skills API adds a third variant: a developer must explicitly attach a Skill to a request through a container.skills parameter before Claude can use it at all, after which Claude still decides autonomously, within that request, whether the attached Skill is actually relevant, a hybrid of explicit attachment and autonomous use that differs from both the fully automatic discovery in Claude apps and the flag based control available in Claude Code.
Portability Across Surfaces
Anthropic states directly that Skills use the same format across Claude's consumer apps, Claude Code, and the developer API, summarized as building a Skill once and using it everywhere. This claim holds at the level of the SKILL.md format itself, but it comes with a documented exception worth stating precisely rather than glossing over: the Claude Code specific frontmatter fields described above, hooks, disable-model-invocation, and several others, are not part of the six field set recognized outside Claude Code, so a Skill written to take advantage of Claude Code specific behavior will not carry that behavior, and in some cases will not even validate, if deployed unmodified through the API or claude.ai. Portability, in other words, applies cleanly to the baseline Skill format and only partially to the richer feature set available in any one surface.
Design Rationale
The central design bet behind Agent Skills is that procedural knowledge should be organized around when it is needed rather than loaded in full at every session, and the case for that bet rests on three claims Anthropic makes explicitly: efficiency, composability, and portability.
The efficiency claim follows directly from the token costs reported in the previous section. Loading only name and description metadata for every installed Skill, at a cost on the order of a hundred tokens each, means an agent can carry a library described as running into the hundreds of Skills without spending meaningful context budget on any Skill it never actually uses in a given session. This is a direct application of a broader context engineering principle Anthropic has articulated separately, that an agent's context window functions as a shared, finite resource best treated as a public good rather than a place to accumulate every instruction that might someday be relevant. Compared against a single, ever growing system prompt or CLAUDE.md file, the practical difference is that the cost of a Skill's full instructions is paid only by the sessions that actually trigger it, not by every session regardless of relevance.
The composability claim is that Claude can stack multiple Skills within a single task and coordinate their use, rather than a builder having to anticipate every combination of capabilities a request might need and write a single monolithic instruction set to cover it. This mirrors the same modular design pressure that produced the small, single purpose tools philosophy in a much older systems context: many narrow, well described units are easier to combine correctly than one broad unit is to keep correct as it grows.
The portability claim, that a Skill written once runs unmodified across Claude's consumer app, Claude Code, and the API, is the least architecturally novel of the three but arguably the most operationally significant for an organization standardizing on Claude across more than one surface. As already noted, this claim is accurate for the baseline six field format and only partially accurate once a Skill uses Claude Code specific fields, so an organization building Skills for use across surfaces should treat the baseline format, not the full Claude Code feature set, as its actual portability contract.
Table 1 summarizes how Skills relate to the three adjacent mechanisms discussed in Background, drawing directly on Anthropic's own comparison of Skills against MCP together with its documentation of subagents and plugins.
Mechanism | What it provides | When it loads | Best suited for |
Agent Skills | Procedural knowledge, packaged as instructions plus optional scripts and references | On demand, matched against task description | Recurring, specialized tasks with a defined procedure |
Model Context Protocol | Connectivity to external tools and live data | Tool definitions loaded upfront, per connected server | Reaching a system or dataset the model cannot otherwise access |
Subagents | An isolated context window for a delegated task | Invoked explicitly for that task | Keeping exploratory or noisy work out of the main conversation |
Plugins | Packaging and distribution for commands, hooks, MCP servers, and Skills together | At install time, per component | Shipping a bundle of the above as a single installable unit |
The comparison suggests a fairly clean division of labor rather than genuine competition between mechanisms. Anthropic's own framing of the decision between Skills and MCP, that a procedure a builder would explain to a person is a Skill while an actual system the agent must reach is MCP, generalizes reasonably well to the other two rows in the table: a subagent is chosen for isolation, a plugin for distribution, and a Skill for the specific knowledge that either of the other two might need in order to act well once it is invoked.
One design consequence deserves a compliance oriented note given how the format is likely to be adopted inside regulated environments. Anthropic's documentation states plainly that Agent Skills, unlike some other parts of the platform, is not covered by Zero Data Retention arrangements, and that skill definitions and execution data are instead retained under Anthropic's standard data retention policy. For an organization operating under federal contracting or similarly regulated data handling obligations, this is a materially different retention posture from a Zero Data Retention covered feature, and it should be verified directly against current Anthropic policy, rather than assumed, before any Skill handling regulated or sensitive data is deployed in such an environment. This paper flags the exception; it does not resolve it, since the applicable compliance determination depends on the specific regulatory regime and contract in question, and is outside this paper's own scope.
Experimental Setup
This paper is a documentation grounded technical review rather than an experiment on running code, so reproducibility here means a reader independently locating and confirming the same primary sources this paper cites, rather than rerunning a measurement. The material below states plainly which facts are drawn from Anthropic's own primary documentation and which, if any, are not, following the same evidentiary standard a clinical methods section applies to a named instrument.
All claims in this paper about SKILL.md structure, frontmatter fields, the progressive disclosure loading levels, discovery and invocation behavior, and the relationship between Skills, MCP, subagents, and plugins are drawn from domains Anthropic itself owns and operates: anthropic.com, claude.com, docs.claude.com, support.claude.com, and the anthropics organization on GitHub. One exception is noted directly: Anthropic's own materials repeatedly point to agentskills.io/specification as the canonical Agent Skills specification, but this review could not independently confirm that agentskills.io is an Anthropic owned domain from the pages available to it, so any figure or claim traceable only to that domain is marked secondary below and was not used as the sole support for any claim in this paper.
Three further limits of this review are stated directly rather than left implicit. First, two of Anthropic's own pages report different token cost estimates for the same progressive disclosure levels, as already noted in the Agent Skills Framework section; this paper reports both figures rather than resolving the discrepancy, since resolving it would require access to Anthropic's internal measurement methodology, which is not publicly documented. Second, the publish date of one cited blog post could not be confirmed with certainty during this review and should be verified against the live page before being cited elsewhere. Third, numeric claims that appeared only in summaries not published by Anthropic itself, for example a specific active Skill count limit, were deliberately excluded from this paper rather than reported as fact, consistent with this review's rule of favoring primary sources over secondary ones wherever the two disagree or where a claim could not be confirmed on an Anthropic owned page at all.
Sources consulted
Anthropic. "Introducing Agent Skills." https://www.anthropic.com/news/skills (October 16, 2025; updated December 18, 2025). Primary. Supports the definition of Skills, the efficiency, composability, and portability claims, and cross surface availability.
Anthropic Engineering. "Equipping agents for the real world with Agent Skills." https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills. Primary. Supports the progressive disclosure analogy, the three level loading description, and the discovery mechanism.
Claude Blog. "Building agents with Skills: Equipping agents for specialized work." https://claude.com/blog/building-agents-with-skills-equipping-agents-for-specialized-work. Primary, though this review could not confirm its publish date with certainty. Supports the problem statement and an alternate set of token cost estimates.
Anthropic Docs. "Agent Skills overview." https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview. Primary. Supports frontmatter field limits, the three level token cost table, the Zero Data Retention exception, and the SKILL.md length guidance.
Anthropic Docs. "Agent Skills best practices." https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices. Primary. Supports the context window as a shared resource framing and the 500 line guidance.
Anthropic Docs. "Skills guide (Build with Claude)." https://docs.claude.com/en/docs/build-with-claude/skills-guide. Primary. Supports the six field portability limit, the API attachment model, and API level size and count limits.
Anthropic Docs. "Claude Code Skills." https://docs.claude.com/en/docs/claude-code/skills. Primary. Supports the full Claude Code frontmatter field set and the six field validation error outside Claude Code.
Anthropic Docs. "Agent SDK Skills." https://docs.claude.com/en/docs/agent-sdk/skills. Primary. Supports the statement that Claude Code specific fields do not carry over to other surfaces.
Anthropic GitHub. "anthropics/skills README." https://github.com/anthropics/skills/blob/main/README.md. Primary. Supports the base definition of a Skill as a folder.
Anthropic GitHub. "anthropics/skills template SKILL.md." https://raw.githubusercontent.com/anthropics/skills/main/template/SKILL.md. Primary. Supports the minimal Skill example.
Claude Blog. "Extending Claude's capabilities with skills and MCP servers." https://claude.com/blog/extending-claude-capabilities-with-skills-mcp-servers (December 19, 2025). Primary. Supports the Skills versus MCP comparison and decision rule.
Anthropic Docs. "Claude Code subagents." https://docs.claude.com/en/docs/claude-code/sub-agents. Primary. Supports the Skills versus subagents distinction.
Anthropic Docs. "Claude Code plugins reference." https://docs.claude.com/en/docs/claude-code/plugins-reference. Primary. Supports the Skills versus plugins distinction.
Anthropic Engineering. "Effective context engineering for AI agents." https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents (September 29, 2025). Primary. Supports the context window scarcity framing that predates and motivates the Skills specific application of progressive disclosure.
Claude Support. "Use Skills in Claude." https://support.claude.com/en/articles/12512180-use-skills-in-claude. Primary. Supports the automatic discovery description and enterprise level administration.
Agent Skills specification. https://agentskills.io/specification. Secondary, provenance unresolved. Referenced only because Anthropic's own materials point to it as a canonical specification; not used as the sole support for any claim in this paper.
Results
Two structural results follow directly from the architecture described above: one about the shape of a single Skill invocation, and one about how Skills divide labor against the three adjacent mechanisms already discussed.

Figure 1 traces what happens inside the context window over the lifetime of a single request that triggers one Skill, based directly on the sequence Anthropic's own architecture documentation describes.
No diagram type detected matching given configuration for text: No diagram type detected matching given configuration for text:
The diagram shows why the architecture scales the way Anthropic claims it does. Only the top step, name and description for every installed Skill, is paid on every single request regardless of relevance. The middle step is paid once per request that actually matches a Skill. The bottom step is paid only when the matched Skill's own instructions call for it, and even then only the output of a script, never the script itself, reaches the context window. An agent library measured in the hundreds of Skills is therefore only as expensive, in context terms, as the number of Skills actually triggered in a given request, not the number installed.
The second result is the division of labor already summarized in Table 1 of the Design Rationale section. Read across the four mechanisms, no single row subsumes another: a Skill supplies a procedure, MCP supplies a connection, a subagent supplies isolation, and a plugin supplies a way to ship several of these components together. Anthropic's own documentation describes builders combining these rather than choosing exactly one, for example a Skill that itself calls tools exposed by an MCP server without duplicating that server's own connectivity. The practical implication for a builder deciding how to extend a Claude based agent is that the four questions, what to know, what to reach, what to isolate, and what to ship, are separable, and the architecture reviewed in this paper answers only the first of them.
Conclusion
Agent Skills answers a narrow but previously unaddressed question in the Claude ecosystem: how an agent should store and progressively load the specific, recurring procedural knowledge a task needs, in a form that survives across sessions and travels unmodified across Claude's consumer app, Claude Code, and its API. The architecture's three level progressive disclosure model, metadata always in context, full instructions loaded only on a matched trigger, and supporting scripts or references loaded only as instructions call for them, is the mechanism that makes this practical at the scale of hundreds of installed Skills, and it sits alongside, rather than in competition with, the Model Context Protocol, subagents, and plugins already available to a builder. The clearest remaining gap this review can name is the two conflicting token cost figures Anthropic's own documentation reports for the same loading levels; resolving that gap would require Anthropic's internal measurement methodology, which is not currently public, and until it is, a builder estimating context budget for a Skill heavy deployment should treat the published figures as directionally, not precisely, reliable. Given that Agent Skills is documented as falling outside Zero Data Retention coverage, any organization bound by federal or comparable regulatory data handling requirements should confirm current retention terms directly with Anthropic before deploying Skills against regulated data, a compliance determination this paper flags but does not itself make.
Acknowledgements
This review was prepared entirely from publicly available Anthropic documentation, blog posts, and repository materials, with no external funding. AI assisted search tooling was used to locate and cross check the primary sources listed above; every source cited was independently verified against the URL given rather than accepted from the search tooling's summary alone.