The Claude Agent SDK skill system gives agents domain-specific expertise by packaging instructions, scripts, and resources into filesystem-based directories that agents discover and load on demand.
TL;DR
Teams that keep pasting the same guidance into agent prompts waste tokens and get inconsistent behavior. Claude Agent SDK skills package reusable instructions, scripts, and workflows into directories that agents discover and load on demand, making domain expertise portable, versionable, and easier to apply across sessions. Pairing skills with a coordination layer like Intent keeps multiple skill-equipped agents aligned on a single living spec, preventing drift across parallel sessions.
Why Reusable Skills Matter for Production Agents
Every team building production agents runs into the same friction: the agent that writes excellent API endpoints forgets the team's error-handling conventions on its next session. Manually pasting the same instructions into every prompt wastes tokens and breaks down the moment a second engineer joins the project.
The Claude Agent SDK addresses this through skills, which are self-contained directories of instructions and resources that agents discover at startup and load only when relevant. Anthropic's engineering team describes skill authoring as an onboarding guide for agents, and the analogy holds. Skills capture the institutional knowledge senior engineers carry that the model lacks, including company-specific conventions, deployment procedures, and architectural patterns absent from any public training corpus.
This guide covers skill definition, multi-skill composition, team-wide sharing and versioning, and how skills compare to adjacent abstractions like tools and agents. The closing sections walk through how Intent uses these patterns to coordinate skill-equipped agents at scale across agentic development environments.
Intent runs multiple skill-equipped agents in parallel against a living spec, so domain expertise stays portable across coordinator, implementor, and verifier roles.
Free tier available · VS Code extension · Takes 2 minutes
What Are SDK Skills: Reusable Agent Capabilities
Claude Agent SDK skills are organized folders of instructions, scripts, and resources that agents discover and load dynamically to perform specific tasks. Prompts work as conversation-level instructions for one-off tasks, while skills persist as filesystem artifacts that load on demand and remove the need to repeat the same guidance across multiple conversations.
Skills work across Claude.ai, Claude Code, the Claude Agent SDK, and the Claude Developer Platform Messages API, though deployment modes differ. Claude Code loads skills from the filesystem, while the Messages API accepts skills as request-scoped parameters with their own limits (see the FAQ for details). Anthropic has also published the skill format as an open standard with the stated goal of cross-platform portability.
Three-Level Progressive Disclosure Architecture
The defining mechanism of reusable Claude SDK skills is staged loading. Content enters the agent's context in three tiers to minimize token consumption, scaling from cheap metadata at startup to full resource bundles only when a task actually needs them. The table below summarizes what gets loaded at each level and the cost involved:
| Level | When Loaded | Token Cost | Content |
|---|---|---|---|
| Level 1: Metadata | Always, at agent startup | ~100 tokens per skill | name + description from YAML frontmatter |
| Level 2: Instructions | When skill triggered by user request | Under 5,000 tokens | SKILL.md body: instructions, workflows, best practices |
| Level 3+: Resources | As needed during execution | Variable | Bundled resources and code loaded progressively as needed |
The loading sequence works as follows, per Anthropic's agent skills overview: at startup, the system prompt includes short metadata like "PDF Processing - Extract text and tables from PDF files..." When a user request matches, the agent reads the full SKILL.md instructions. Supporting files, including reference docs and utility scripts, load only if the task requires them. When Claude invokes a skill, the system loads the SKILL.md instructions into the conversation context.
This staged architecture is what makes large skill libraries practical. An agent can scan 50 skill descriptions at startup for roughly 5,000 tokens total, then pay full context cost only for the two or three skills relevant to the current task.
Defining a Skill: Interface, Tools, and Context Requirements
A skill definition consists of a SKILL.md file using YAML frontmatter for metadata, followed by Markdown instructions. The canonical directory structure packages everything the skill needs:
Minimal Valid Skill
The simplest functional skill requires only a SKILL.md with frontmatter:
This file is stored at ~/.claude/skills/explain-code/SKILL.md for personal scope or .claude/skills/explain-code/SKILL.md for project scope.
Frontmatter Interface Contract
Anthropic's docs describe required skill frontmatter fields such as name and description, with examples and community resources also referencing additional optional fields. The fields below summarize what each one controls and whether it ships in the official documentation:
| Field | Required | Description |
|---|---|---|
| name | No | Lowercase letters, numbers, hyphens only (max 64 chars). Uses directory name if omitted. |
| description | Recommended | What the skill does AND when to use it. Combined with when_to_use. |
| when_to_use | No | Additional invocation context. Appended to description in listing. |
| argument-hint | No | Hint shown in autocomplete (e.g., [issue-number], [filename] [format]). |
| arguments | No | Named positional arguments for $name substitution. |
| allowed-tools | No | Tools the agent can use without asking permission when this skill is active. |
| model | No | Model override for this skill's turn only. |
| context | No | fork runs the skill in a forked subagent context. |
| disable-model-invocation | No | true prevents the agent from auto-loading the skill. Default: false. |
| user-invocable | No | false hides the skill from the / slash command menu. Default: true. |
Skill Scope and Precedence
Skills can be loaded and used together, though Anthropic's public documentation does not substantiate the specific scope hierarchy or name-collision precedence described here. The conventional layout teams use in practice maps three scope levels to filesystem locations:
| Scope | Path | Applies To |
|---|---|---|
| Enterprise | See managed settings | All users in your organization |
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | All your projects |
| Project | .claude/skills/<skill-name>/SKILL.md | This project only |
Note: This precedence ordering reflects community convention rather than a formally documented Anthropic specification. Verify against the Claude Code release in use before relying on collision behavior.
Pattern: Pre-Approved Tool Binding
Tool permissions and invocation behavior depend on the specific Claude interface and configuration:
The documented Claude skills and tools configuration governs pre-approval behavior, so the undocumented Bash(git add *) pattern shown above is illustrative only. Other tools remain callable under normal permission settings.
Pattern: Shell Preprocessing for Dynamic Context
The ! prefix syntax (community convention, not formally specified in Anthropic's official documentation) is used by some Claude Code workflows to execute commands before the skill content reaches the agent, injecting live data:
Each !command`` executes before the skill content is sent to the agent. Output replaces the placeholder, so the agent receives a fully rendered prompt with actual PR data. Teams relying on this pattern should test it against their current Claude Code version, since behavior may change without notice.
Enabling Skills in the Agent SDK
To activate skill discovery programmatically, include "Skill" in allowed_tools and set setting_sources:
The setting_sources parameter governs where settings files are discovered, including the locations from which skills are loaded. By default, the SDK does not look for settings files, CLAUDE.md, or skills.
Composing Skills: Stacking Capabilities Across Agents
Composition in the Claude Agent SDK is declarative: skills live in folders that Claude can load when needed based on their descriptions. As Anthropic describes the model, skills are composable resources that extend Claude's capabilities. The way teams stack those resources determines whether multiple skills coexist in one context window or get distributed across specialist agents.
Deterministic Composition via Subagents
For workflows requiring specific skill combinations, the skills: array in subagent definitions preloads the full skill content into the subagent's context at startup, removing the need to discover and load those skills during execution:
Subagents do not inherit skills from the parent conversation, so engineers must list them explicitly. Whether skills with disable-model-invocation: true can be preloaded via this mechanism is not clearly documented; the field is specified as preventing auto-invocation, but its interaction with explicit subagent preloading is unconfirmed in Anthropic's official docs and should be verified before relying on either behavior.
Orchestrator Pattern: Skill-Specialized Subagents
Anthropic's multi-agent pattern uses an orchestrator-worker design where a lead agent coordinates the process and delegates tasks to specialized subagents that operate in parallel. The same coordinator-implementor-verifier shape shows up in Intent's three-agent architecture, where each specialist holds its own skill set scoped to a step in the spec.
Each subagent operates with an isolated context window. Subagents in the Claude Agent SDK have isolated contexts, but the SDK documentation does not clearly guarantee that skills loaded in one subagent stay invisible to another such as code-reviewer and api-developer. Only the subagent's return value crosses back to the orchestrator. Multiple subagents can run in parallel, which is the same property open-source agent orchestrators lean on for git-worktree-based isolation.
Context Sharing Boundaries
Composition strategy dictates whether skills coexist in shared context or live in separate sandboxes. The four mechanisms below cover the common patterns and the workflows each one fits best:
| Mechanism | Context Boundary | Best For |
|---|---|---|
| Multiple skills in one agent | Shared: all skills coexist in same context window | Skills that need to reference each other |
| Skills in separate subagents | Isolated: subagents don't see each other's skill context | Independent parallel workstreams |
| Explicit cross-boundary coordination | May be needed for sequential skills | Sequential skills needing intermediate state |
| Managed Agent sessions | Persistent across runs | Long-running multi-session workflows |
When teams use an orchestrator pattern, isolating skills per subagent reduces cross-contamination between tasks while preserving a clean return channel back to the coordinator. Intent applies this same isolation by giving each specialist agent its own git worktree, keeping per-agent skill stacks scoped without polluting the coordinator's view of the spec.
Managing Skill Conflicts
Principled frameworks for multi-skill conflict resolution remain an open research problem. Current mitigations include writing non-overlapping trigger conditions in skill descriptions, using subagent isolation as a structural conflict resolver, and including explicit precedence statements within SKILL.md files. For example: "If both X and Y conventions apply, follow X for authentication endpoints and Y for data endpoints."
Intent handles conflicts at the coordination layer. The Coordinator agent decomposes the spec into tasks before delegating, so conflicting skills land in different specialists and never compete inside one context.
Free tier available · VS Code extension · Takes 2 minutes
in src/utils/helpers.ts:42
Sharing and Versioning Skills Across Teams
Skill libraries only deliver value when teams ship them like the rest of the codebase: in version control, with semantic versioning, and behind real test gates. The four practices below cover the lifecycle from authoring through production rollout.
Package Skills as Self-Describing Directories
Each skill should be a self-contained, independently deployable directory stored in version control. The SKILL.md manifest contains both human-readable documentation and the runtime instructions the agent loads when the skill is invoked. Supporting .py or script files handle tool-level logic, keeping the manifest focused on behavioral guidance.
Apply Semantic Versioning with Environment Promotion
Version skills by change type:
- Patch (x.x.N): Bug fixes to instructions, clarifications that do not change behavior
- Minor (x.N.x): New capabilities added, backward-compatible
- Major (N.x.x): Breaking changes such as renamed fields, removed workflows, or changed trigger conditions
Pair semantic versioning with staging and production environment tags to promote skill versions through environments without requiring code changes, decoupling promotion from deployment.
Treat Skill Testing as a CI/CD Gate
Skills require the same testing rigor as production code. The Promptfoo provider docs support the Claude Agent SDK directly:
The Anthropic skills repository includes a skill-creator skill with at least one specialized subagent for quality evaluation: agents/grader.md for assertion evaluation.
Scale Governance Patterns
Team skill libraries typically need governance rules as they grow. Common patterns include naming conventions to prevent collisions, required YAML frontmatter, and standardized workflow structure within each skill directory. Intent's living specifications complement this by anchoring skill changes to the actual implementation state, so version bumps reflect real behavioral shifts and stay in sync with what shipped.
Skills vs Tools vs Agents: When to Use Each Abstraction
The three abstractions in the agent skills SDK serve distinct roles. Choosing the wrong one for a given problem produces predictable failure modes.
Tools are atomic, callable functions with a fixed interface and no internal decision-making. A tool executes a single operation and returns a result, analogous to system calls.
Skills sit higher in the stack than tools. Where a tool defines what an agent can execute, a skill shapes how the agent approaches a class of problems by encoding domain-specific knowledge, procedural conventions, and multi-step behavioral patterns. A skill may invoke tools but extends them with applicability logic, multi-step sequencing, and termination criteria.
Agents are autonomous decision-making entities where LLMs direct their own processes, dynamically selecting tools while maintaining control over how they accomplish tasks.
The matrix below maps each abstraction to its operational properties, which is what most engineers use to decide which one fits a given problem:
| Criterion | Tool | Skill | Agent/Subagent |
|---|---|---|---|
| Statefulness | Stateless, discrete operation | No state; shapes reasoning | Stateful across steps |
| Decision-making | None: fixed interface | Guides agent reasoning | LLM directs its own process |
| Execution path | Single operation, single result | Multi-step with termination criteria | Open-ended, unpredictable length |
| Context cost | Tool definition in context window | Only metadata at startup (~100 tokens) | Full LLM invocation per step |
| Reusability | Across any agent in any context | Across agents where domain applies | Via orchestration patterns |
The diagnostic rule: if the abstraction executes an action, it is a tool. If it shapes how the agent reasons about a domain, it is a skill. If it must dynamically decide which tools to use and in what order, it is an agent.
Anthropic's guidance on building effective agents applies here. For many applications, a lightweight approach using strong prompting, retrieval, and in-context examples is sufficient without a full agentic workflow. Teams should reach for agents only when workflows genuinely require dynamic, unpredictable decision-making.
How Intent Coordinates Skill-Equipped Agents at Scale
Intent is a desktop workspace for spec-driven development that uses a three-agent architecture (coordinator, implementors/specialists, and verifier) aligned with the skill composition patterns described above. The sections below break down how Intent layers BYOA flexibility, per-task model routing, and skill-driven specialists into a single coordinated workspace.
Three-Layer Modularity Architecture
Intent separates agent identity, model selection, and skill loading into independent layers, so teams can swap any one of them without rewriting the others. The result is a workspace where existing Claude Code or Codex subscriptions plug into the same orchestration layer that runs Auggie.
| Layer | Mechanism | Flexibility |
|---|---|---|
| Agent layer | BYOA (Bring Your Own Agent): swap between Auggie, Claude Code, Codex, OpenCode | Teams bring existing subscriptions |
| Model layer | Per-task model routing: Opus for complex architecture, Sonnet for rapid iteration, Haiku for lightweight tasks, GPT per task type | Match model cost to task complexity |
| Capability layer | Agent Skills (SKILL.md): domain-specific skills loaded on-demand | Skills authored once, portable across agents |
Because Intent supports Auggie, Claude Code, Codex, and OpenCode through its BYOA model, teams with existing Claude Code subscriptions can use their agent directly in Intent's orchestration layer.
Living Specifications as Coordination
Intent's living specifications address a limitation that static requirements and skill libraries cannot fully capture: coordination that must stay synchronized as work evolves during execution. Static AGENTS.md or CLAUDE.md files load at startup and do not change during execution. Living specs update as agents discover new requirements and complete work, keeping every agent aligned with the actual implementation state as it evolves past the initial plan.
Isolation Without Fragmentation
Each Intent task runs in an isolated git worktree, providing filesystem-level isolation that prevents agents from conflicting during parallel execution. The three-role agent model (Coordinator, Implementor, Verifier) maps cleanly to the orchestrator pattern from the Claude Agent SDK: specialist agents execute with their own skill sets in isolated contexts, while the Coordinator synthesizes results against the living specification.
For teams that want skill-equipped agents running across the full SDLC instead of inside a single workspace, Augment Cosmos (currently in research preview) extends this orchestration model into a shared agent runtime with tenant memory and event-driven triggers from tools like Linear, Slack, and GitHub.
Start With One Reusable Skill Your Team Uses Weekly
The core tension in agent skill management is between flexibility and consistency: teams need skills that are reusable across agents and projects while remaining specific enough to encode genuine institutional knowledge. The starting point is packaging one workflow the team repeats weekly into a SKILL.md with clear trigger conditions, testing it with Promptfoo, and committing it alongside the codebase it serves.
Once that first skill earns its keep, the next question is how to coordinate skill-equipped agents working in parallel without losing track of the spec they share.
Intent organizes coordinator, implementor, and verifier agents around a living specification so each specialist's skills stay aligned with the actual implementation state.
Free tier available · VS Code extension · Takes 2 minutes
FAQ
Related
Written by

Ani Galstian
Ani writes about enterprise-scale AI coding tool evaluation, agentic development security, and the operational patterns that make AI agents reliable in production. His guides cover topics like AGENTS.md context files, spec-as-source-of-truth workflows, and how engineering teams should assess AI coding tools across dimensions like auditability and security compliance