Skills
Attach reusable, filesystem-based expertise to your agent for domain-specific workflows.
Skills are reusable, filesystem-based resources that give your agent domain-specific expertise: workflows, context, and best practices that turn a general-purpose agent into a specialist. Unlike prompts (conversation-level instructions for one-off tasks), skills load on demand, only impacting the context window when needed.
You can attach two types of skill. Both work the same way: your agent invokes them automatically when they are relevant to the task.
- Pre-built Anthropic skills: Common document tasks such as PowerPoint, Excel, Word, and PDF handling.
- Custom skills: Skills you author and upload to your workspace.
To learn how to author custom skills, see Agent Skills and Skill authoring best practices. This page assumes you already have skills available in your workspace or are using Anthropic pre-built skills.
All Managed Agents API requests require the managed-agents-2026-04-01 beta header. The SDK sets the beta header automatically.
Attach skills to an agent
Attach skills when creating an agent. Each session supports up to 20 skills total, counted across every agent in the session (see Multiagent sessions).
Each entry in the skills array uses the following fields:
| Field | Description |
|---|---|
type | Either anthropic for pre-built skills or custom for workspace-authored skills. |
skill_id | The skill identifier. For Anthropic skills, use the short name (for example, xlsx). For custom skills, use the skill_* ID returned at creation. |
version | Custom skills only. Pin to a specific version or use latest. |
agent=$(curl -sS https://api.anthropic.com/v1/agents \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
--json @- <<'EOF'
{
"name": "Financial Analyst",
"model": "claude-opus-4-7",
"system": "You are a financial analysis agent.",
"skills": [
{"type": "anthropic", "skill_id": "xlsx"},
{"type": "custom", "skill_id": "skill_abc123", "version": "latest"}
]
}
EOF
)
ant beta:agents create <<'YAML'
name: Financial Analyst
model: claude-opus-4-7
system: You are a financial analysis agent.
skills:
- type: anthropic
skill_id: xlsx
- type: custom
skill_id: skill_abc123
version: latest
YAML
agent = client.beta.agents.create(
name="Financial Analyst",
model="claude-opus-4-7",
system="You are a financial analysis agent.",
skills=[
{
"type": "anthropic",
"skill_id": "xlsx",
},
{
"type": "custom",
"skill_id": "skill_abc123",
"version": "latest",
},
],
)
const agent = await client.beta.agents.create({
name: "Financial Analyst",
model: "claude-opus-4-7",
system: "You are a financial analysis agent.",
skills: [
{
type: "anthropic",
skill_id: "xlsx"
},
{
type: "custom",
skill_id: "skill_abc123",
version: "latest"
}
]
});
var agent = await client.Beta.Agents.Create(new()
{
Name = "Financial Analyst",
Model = BetaManagedAgentsModel.ClaudeOpus4_7,
System = "You are a financial analysis agent.",
Skills =
[
new BetaManagedAgentsAnthropicSkillParams { Type = BetaManagedAgentsAnthropicSkillParamsType.Anthropic, SkillID = "xlsx" },
new BetaManagedAgentsCustomSkillParams { Type = BetaManagedAgentsCustomSkillParamsType.Custom, SkillID = "skill_abc123", Version = "latest" },
],
});
agent, err := client.Beta.Agents.New(ctx, anthropic.BetaAgentNewParams{
Name: "Financial Analyst",
Model: anthropic.BetaManagedAgentsModelConfigParams{
ID: "claude-opus-4-7",
},
System: anthropic.String("You are a financial analysis agent."),
Skills: []anthropic.BetaManagedAgentsSkillParamsUnion{
{OfAnthropic: &anthropic.BetaManagedAgentsAnthropicSkillParams{
SkillID: "xlsx",
Type: anthropic.BetaManagedAgentsAnthropicSkillParamsTypeAnthropic,
}},
{OfCustom: &anthropic.BetaManagedAgentsCustomSkillParams{
SkillID: "skill_abc123",
Type: anthropic.BetaManagedAgentsCustomSkillParamsTypeCustom,
Version: anthropic.String("latest"),
}},
},
})
if err != nil {
panic(err)
}
_ = agent
var agent = client.beta().agents().create(
AgentCreateParams.builder()
.name("Financial Analyst")
.model(BetaManagedAgentsModel.CLAUDE_OPUS_4_7)
.system("You are a financial analysis agent.")
.addSkill(
BetaManagedAgentsAnthropicSkillParams.builder()
.type(BetaManagedAgentsAnthropicSkillParams.Type.ANTHROPIC)
.skillId("xlsx")
.build()
)
.addSkill(
BetaManagedAgentsCustomSkillParams.builder()
.type(BetaManagedAgentsCustomSkillParams.Type.CUSTOM)
.skillId("skill_abc123")
.version("latest")
.build()
)
.build()
);
$agent = $client->beta->agents->create(
name: 'Financial Analyst',
model: 'claude-opus-4-7',
system: 'You are a financial analysis agent.',
skills: [
['type' => 'anthropic', 'skill_id' => 'xlsx'],
['type' => 'custom', 'skill_id' => 'skill_abc123', 'version' => 'latest'],
],
);
agent = client.beta.agents.create(
name: "Financial Analyst",
model: "claude-opus-4-7",
system_: "You are a financial analysis agent.",
skills: [
{type: "anthropic", skill_id: "xlsx"},
{type: "custom", skill_id: "skill_abc123", version: "latest"}
]
)