On this page
- Why this matters now
- The production shape of a skill
- Where skills sit in the agent stack
- A reference architecture
- Implementation pattern: treat skills like code
- 1. Write the skill around a real failure mode
- 2. Keep instructions high-signal
- 3. Put deterministic work in scripts
- 4. Version and pin for production
- 5. Test the whole trajectory, not just the text
- Tradeoffs and failure modes
- Rollout guidance
- Practical takeaways
- FAQ
- Are skills just prompts with a folder structure?
- Should a skill replace an MCP server?
- What belongs in a skill versus long-term memory?
- What is the first production guardrail for skills?
- References
Agent skills are becoming the operational boundary between a general model and a production agent. Treat them less like prompt snippets and more like deployable runtime assets: versioned, tested, least-privilege, observable, and rolled out with the same discipline you already apply to tools and services.
Why this matters now
The first wave of agent systems put too much reusable knowledge in system prompts. That worked for demos, but it breaks down when teams need stable behavior across product surfaces, vendors, tenants, and long-running workflows. Anthropic's Agent Skills documentation defines skills as modular capabilities that package instructions, metadata, and optional resources such as scripts and templates, loaded when relevant rather than pasted into every request (Anthropic Agent Skills overview).
That one design choice changes the architecture. Reusable expertise stops being a blob of prompt text hidden in application code. It becomes an artifact a team can review, test, version, and distribute. Anthropic's engineering writeup describes skills as organized folders of instructions, scripts, and resources, closer to an onboarding guide for a new teammate than a one-off prompt trick (Anthropic engineering).
This is arriving at the same time agent runtimes are maturing. OpenAI's Agents SDK separates direct Responses API control from managed runs with loops, handoffs, guardrails, sessions, approvals, and tracing (OpenAI Agents SDK guide). Google ADK frames production agents around structured context management, sessions, memory, tool outputs, artifacts, graph workflows, and deployment choices (Google ADK). The pattern is clear: production agents are no longer just model calls with tools. They are runtimes, and skills are one of the first reusable deployment units for agent behavior.
The production shape of a skill
A good skill has three layers.
First, metadata tells the agent when the skill is relevant. Anthropic's docs describe this metadata as always available, usually through YAML frontmatter with a name and description (Anthropic Agent Skills overview). This is not cosmetic. If discovery metadata is vague, the agent either fails to load the skill or loads it for the wrong job.
Second, the main instruction file contains procedural guidance. The best-practices guide recommends keeping this concise, specific, and tested with real usage rather than turning it into a textbook (Anthropic Skill authoring best practices). This is where many teams overbuild. The model already knows general software concepts. The skill should encode the team's exact workflow, constraints, pitfalls, and verification steps.
Third, additional files and scripts provide progressive disclosure. Anthropic calls this progressive disclosure: the agent can start with metadata, load the main instructions when triggered, then load supporting files or run scripts only when needed (Anthropic engineering). That matters because context is a scarce runtime resource. A 40-page compliance manual should not consume tokens during a simple formatting task, but a compliance-heavy workflow should still be able to retrieve the exact rule it needs.
Where skills sit in the agent stack
Skills are easiest to understand by separating five concerns.
| Layer | Primary question | Production primitive |
|---|---|---|
| Tool/API layer | What can the agent do? | Function tools, hosted tools, MCP servers |
| Runtime layer | How does the agent loop run? | Agent SDKs, handoffs, approvals, sessions, tracing |
| State layer | What should persist across turns or runs? | Conversations, sessions, memory, artifacts |
| Expertise layer | How should the agent perform this class of work? | Skills, playbooks, templates, scripts |
| Governance layer | What is allowed, audited, or blocked? | Guardrails, policy checks, sandboxing, approvals |
MCP and tools expose capabilities. A ticketing MCP server might expose create_issue; a filesystem tool might write a file; a browser tool might click through a QA flow. A skill tells the agent how to run the team's issue triage process, what labels mean, what evidence is required, what not to automate, and how to verify the final state. Anthropic explicitly notes that skills can complement MCP by teaching agents complex workflows involving external tools and software (Anthropic engineering).
This distinction prevents a common architecture mistake: putting workflow policy into tool schemas. Tool schemas should be narrow and stable. Skills can carry the higher-level procedure that changes as the organization learns.
Rule of thumb: if changing the artifact changes the agent's procedure, it is probably a skill. If it changes what the agent can call, it belongs in a tool contract. If it changes what the agent is allowed to do, it belongs in runtime policy.
A reference architecture
flowchart TD
U["User or job trigger"] --> R["Agent runtime"]
R --> D["Skill discovery metadata"]
D --> S["Selected skill instructions"]
S --> X["Optional scripts and references"]
R --> T["Tools and MCP servers"]
R --> G["Guardrails and approvals"]
R --> M["Sessions, memory, artifacts"]
X --> T
T --> O["Observed action result"]
G --> O
M --> R
O --> V["Verification and trace"]
In this architecture, the skill does not own the whole agent. It supplies procedural context to the runtime. The runtime still controls tool execution, state, guardrails, approvals, and traces. That separation is useful because it lets teams update a skill without rewriting the agent loop, and it lets platform engineers enforce runtime policy without editing every skill.
OpenAI's Agents SDK documentation makes a similar separation between direct API usage and managed runtime behavior. It recommends the SDK when teams want the runtime to manage turns, tool execution, guardrails, handoffs, sessions, tracing, or resumable approvals (OpenAI Agents SDK guide). Skills fit naturally into that managed-runtime world as reusable expertise packages.
Implementation pattern: treat skills like code
The production workflow should look closer to a service rollout than a prompt edit.
1. Write the skill around a real failure mode
Start with a task the agent currently handles poorly. Anthropic's engineering post recommends beginning with evaluation, observing where agents struggle, then building skills incrementally to address gaps (Anthropic engineering). Do not create a giant generic skill called engineering. Create narrow skills such as incident-postmortem, pull-request-review, customer-data-export, or terraform-migration-plan.
A good skill description should include both what it does and when to use it. The best-practices guide warns that discovery depends heavily on the description (Anthropic Skill authoring best practices). If the model cannot decide when a skill applies, the skill is not production-ready.
2. Keep instructions high-signal
The model does not need a lecture on what a PDF, PR, or deployment is. It needs the organization's workflow. Include exact commands only where the path is fragile. Use heuristics where judgment is expected. Anthropic's best-practices guide frames this as setting the right degree of freedom for the task: higher freedom for variable judgment work, lower freedom for fragile operations (Anthropic Skill authoring best practices).
3. Put deterministic work in scripts
If a workflow repeatedly sorts, validates, converts, extracts, or checks something, make it executable. Anthropic's engineering post argues that code inside a skill can provide deterministic reliability and avoid spending tokens on operations better handled by traditional code (Anthropic engineering).
That does not mean every skill needs a script. It means skill authors should ask a hard question: which parts of this workflow should be generated, and which should be executed?
4. Version and pin for production
Anthropic's API guide shows that skills can be specified in a container with a source, skill ID, and optional version, and recommends pinning specific versions for production stability (Anthropic Skills in the API). That is the right default. latest is useful for development. Production systems should know exactly which behavior package ran.
Versioning also improves incident response. If a support agent starts producing bad refunds after a skill update, the rollback path should be as boring as reverting a package version.
5. Test the whole trajectory, not just the text
A skill can be syntactically valid and operationally dangerous. Test the complete path: discovery, instruction loading, tool selection, action execution, verification, and final output. If the skill uses scripts, test script errors. If it calls external tools, test permission failures. If it has optional references, test that the agent actually loads them when needed.
This is where runtime traces become important. OpenAI's Agents SDK includes tracing across model calls, tools, agents, guardrails, and handoffs (OpenAI Agents SDK Python docs). Traces let teams see whether a skill changed behavior for the right reason or merely added more text.
Tradeoffs and failure modes
Skills introduce a real supply-chain surface. Anthropic's engineering post warns that malicious skills can add vulnerable code or instructions that cause agents to exfiltrate data or take unintended actions, and recommends auditing less-trusted skills before use (Anthropic engineering). Treat third-party skills the way you treat third-party packages, with source review, sandboxing, and least privilege.
They also complicate data-retention assumptions. Anthropic's docs state that Agent Skills are not eligible for Zero Data Retention and are retained under the feature's standard retention policy (Anthropic Agent Skills overview). If a skill contains customer-specific instructions, regulated workflows, or proprietary scripts, your governance review needs to include where that content is stored and executed. The same review should check surface differences: Anthropic documents different availability and runtime constraints across claude.ai, Claude API, Claude Code, AWS, and Microsoft Foundry (Anthropic Agent Skills overview).
Cache behavior is another quiet production issue. Anthropic's API guide notes that changing the Skills list can break prompt caching (Anthropic Skills in the API). If latency and cost matter, avoid dynamically attaching a different skill set on every request. Prefer stable skill bundles per workflow and route jobs to the right bundle.
Finally, skills are not state. Google ADK's artifacts documentation is a useful contrast: artifacts are named, versioned binary data managed by an artifact service, not stored directly in session state (Google ADK Artifacts). A skill can explain how to process a report. The report itself belongs in an artifact store. A skill can tell the agent how to summarize a customer history. The customer history belongs in a governed data system. Mixing those concerns creates brittle and leaky agents.
Rollout guidance
Use this rollout model for serious deployments.
- Inventory repeated agent work. Find tasks where agents keep needing the same procedural context, examples, verification steps, or scripts.
- Choose one narrow workflow. A skill should have a crisp trigger and owner. If two teams disagree about the process, split the skill or settle the process first.
- Write a minimal SKILL.md. Include discovery metadata, the workflow, pitfalls, verification, and links to optional resources.
- Add deterministic helpers. Put validators, converters, schema checks, or report generators in scripts where they reduce ambiguity.
- Define allowed tools. The skill should not imply access the runtime will not grant. Tool access belongs in the runtime policy.
- Run trajectory evaluations. Test successful runs, missing prerequisites, permission failures, stale references, and unsafe requests.
- Pin versions in production. Use
latestonly in development or controlled canaries. - Observe behavior after release. Watch traces, tool-call diffs, error rates, approval interruptions, cost, latency, and human correction rate.
- Create a rollback path. A skill update should be reversible without redeploying the entire agent service.
Before publishing a skill to a broad agent fleet, require three concrete artifacts: an owner, an evaluation set, and a pinned production version. Without those, the team has shipped behavior without accountability.
The key cultural shift is ownership. A skill should have a maintainer, review path, changelog, and test set. If nobody owns it, it will rot into another hidden prompt blob.
Practical takeaways
Agent skills are useful because they turn tacit operational knowledge into reusable runtime assets. They are risky for the same reason: they can change what agents do. The right response is not to avoid them. It is to move them into the same engineering discipline used for code, tools, policy, and infrastructure.
For senior engineering teams, the decision boundary is simple. If the content describes what an external system can do, put it in a tool or MCP server. If it describes what the agent should remember from prior interactions, put it in state, memory, or artifacts. If it describes how the agent should perform a recurring class of work, make it a skill.
That separation keeps the agent stack understandable. It also makes future changes safer: update capabilities in tools, update state in governed stores, update runtime policy in the agent platform, and update procedural expertise in skills.
FAQ
Are skills just prompts with a folder structure?
No. They include prompt-like instructions, but the important production properties are discovery metadata, progressive disclosure, optional resources, executable scripts, versioning, and distribution. Anthropic's docs describe skills as modular capabilities with metadata, instructions, and optional resources (Anthropic Agent Skills overview).
Should a skill replace an MCP server?
No. MCP and tools expose capabilities and data. Skills teach the agent how to apply procedural expertise around those capabilities. Anthropic describes skills as complementary to MCP for workflows involving external tools and software (Anthropic engineering).
What belongs in a skill versus long-term memory?
Put repeatable procedure in a skill. Put durable user or task state in a governed state layer. Google ADK's artifact model is a useful example of keeping binary outputs in an artifact service rather than stuffing them into session state (Google ADK Artifacts).
What is the first production guardrail for skills?
Audit and pin them. Skills can contain instructions, scripts, and references, so they affect agent behavior and may execute code. Anthropic recommends auditing less-trusted skills and its API guide recommends version pinning for production stability (Anthropic engineering, Anthropic Skills in the API).