skills changedmanaged-agents/skills
Nearest release: v2.1.238, published under an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+40added
Lines−35removed
From line
1
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits21to this page, all time
The whole hunk
from line 1, old and new numbered
/
from line 1
11---
22title: Skills
33url: https://platform.claude.com/docs/en/managed-agents/skills
4description: Attach reusable, filesystem-based expertise to your agent for domain-specific workflows.
4description: Attach pre-built or custom skills to an agent in Claude Managed Agents to give it reusable, filesystem-based expertise for domain-specific workflows.
55---
66
77Skills 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. Each skill you add incurs a modest cost on the session's context window, adding instructions and metadata that help the model use the skill. Learn more in the [Agent Skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) overview.
from line 21
2121
2222A custom skill is a directory containing a `SKILL.md` file plus any supporting files, uploaded to your workspace as a zip archive or as individual files. Creating the skill returns the `skill_*` ID you reference when attaching it to an agent. Anthropic pre-built skills are already available in every workspace and don't require this step. To use only pre-built skills, skip to [Attach skills to an agent](https://platform.claude.com/docs/en/managed-agents/skills#attach-skills-to-an-agent).
2323
24The Skills API doesn't require a beta header. The cURL example still sends `anthropic-beta: skills-2025-10-02`, and the CLI and SDK `beta` commands add it automatically; requests that include it continue to work unchanged.
24The Skills API doesn't require a beta header. Requests that still send `anthropic-beta: skills-2025-10-02` keep working and return the earlier response fields.
2525
26These examples omit the optional `display_title` field, so the skill's title is derived from `SKILL.md`. An explicitly passed `display_title` must be unique among the custom skills in your workspace.
26These examples omit the optional `display_name` field, so the skill's display name is derived from the `name` field in `SKILL.md`. An explicit `display_name` can be up to 255 characters and doesn't need to be unique within your workspace.
2727
2828<CodeGroup defaultLanguage="CLI">
2929 ```bash cURL
from line 30
3030 curl -X POST "https://api.anthropic.com/v1/skills" \
3131 -H "x-api-key: $ANTHROPIC_API_KEY" \
3232 -H "anthropic-version: 2023-06-01" \
33 -H "anthropic-beta: skills-2025-10-02" \
3433 -F "files[]=@example_skill.zip"
3534 ```
3635
3736 ```bash CLI
38 ant beta:skills create \
37 ant skills create \
3938 --file example_skill.zip
4039 ```
4140
from line 44
4544
4645 client = anthropic.Anthropic()
4746
48 skill = client.beta.skills.create(
47 skill = client.skills.create(
4948 files=files_from_dir("example_skill"),
5049 )
5150
5251 print(f"Created skill: {skill.id}")
53 print(f"Latest version: {skill.latest_version}")
52 print(f"Latest version: {skill.latest_version_id}")
5453 ```
5554
5655 ```typescript TypeScript
from line 59
6059
6160 const client = new Anthropic();
6261
63 const skill = await client.beta.skills.create({
62 const skill = await client.skills.create({
6463 files: [await toFile(fs.createReadStream("example_skill.zip"), "example_skill.zip")]
6564 });
6665
6766 console.log(`Created skill: ${skill.id}`);
68 console.log(`Latest version: ${skill.latest_version}`);
67 console.log(`Latest version: ${skill.latest_version_id}`);
6968 ```
7069
7170 ```csharp C#
7271 using System.IO;
7372 using Anthropic;
74 using Anthropic.Models.Beta.Skills;
73 using Anthropic.Models.Skills;
7574
7675 AnthropicClient client = new();
7776
from line 81
8281 ],
8382 };
8483
85 var skill = await client.Beta.Skills.Create(parameters);
84 var skill = await client.Skills.Create(parameters);
8685
8786 Console.WriteLine($"Created skill: {skill.ID}");
88 Console.WriteLine($"Latest version: {skill.LatestVersion}");
87 Console.WriteLine($"Latest version: {skill.LatestVersionID}");
8988 ```
9089
9190 ```go Go
from line 109
110109 }
111110 defer zipFile.Close()
112111
113 skill, err := client.Beta.Skills.New(context.TODO(), anthropic.BetaSkillNewParams{
112 skill, err := client.Skills.New(context.TODO(), anthropic.SkillNewParams{
114113 Files: []io.Reader{zipFile},
115114 })
116115 if err != nil {
from line 117
118117 }
119118
120119 fmt.Printf("Created skill: %s\n", skill.ID)
121 fmt.Printf("Latest version: %s\n", skill.LatestVersion)
120 fmt.Printf("Latest version: %s\n", skill.LatestVersionID)
122121 }
123122 ```
124123
from line 125
126125 import com.anthropic.client.AnthropicClient;
127126 import com.anthropic.client.okhttp.AnthropicOkHttpClient;
128127 import com.anthropic.core.MultipartField;
129 import com.anthropic.models.beta.skills.SkillCreateParams;
130 import com.anthropic.models.beta.skills.SkillCreateResponse;
128 import com.anthropic.models.skills.Skill;
129 import com.anthropic.models.skills.SkillCreateParams;
131130 import java.io.IOException;
132131 import java.io.InputStream;
133132 import java.nio.file.Files;
from line 143
144143 .build())
145144 .build();
146145
147 SkillCreateResponse skill = client.beta().skills().create(params);
146 Skill skill = client.skills().create(params);
148147
149148 IO.println("Created skill: " + skill.id());
150 IO.println("Latest version: " + skill.latestVersion().orElseThrow());
149 IO.println("Latest version: " + skill.latestVersionId());
151150 }
152151 ```
153152
from line 173
174173
175174 client = Anthropic::Client.new
176175
177 skill = client.beta.skills.create(
176 skill = client.skills.create(
178177 files: [
179178 File.open("example_skill.zip", "rb")
180179 ]
from line 180
181180 )
182181
183182 puts "Created skill: #{skill.id}"
184 puts "Latest version: #{skill.latest_version}"
183 puts "Latest version: #{skill.latest_version_id}"
185184 ```
186185</CodeGroup>
187186
188To list, retrieve, delete, and version custom skills, see [Managing custom skills](https://platform.claude.com/docs/en/build-with-claude/skills-guide#managing-custom-skills). For the full request and response schemas, see the [Create Skill API reference](https://platform.claude.com/docs/en/api/beta/skills/create). Skill bundles upload directly to the Skills API rather than through the [Files API](https://platform.claude.com/docs/en/build-with-claude/files).
187To list, retrieve, delete, and version custom skills, see [Managing custom skills](https://platform.claude.com/docs/en/build-with-claude/skills-guide#managing-custom-skills). For the full request and response schemas, see the [Create Skill API reference](https://platform.claude.com/docs/en/api/skills/create). Skill bundles upload directly to the Skills API rather than through the [Files API](https://platform.claude.com/docs/en/build-with-claude/files).
189188
190189## Attach skills to an agent
191190
from line 222
223222 )
224223 ```
225224
226 ```bash CLI
227 ant beta:agents create <<'YAML'
228 name: Financial Analyst
229 model: claude-opus-5
230 system: You are a financial analysis agent.
231 skills:
232 - type: anthropic
233 skill_id: xlsx
234 - type: custom
235 skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
236 version: latest
237 YAML
238 ```
225 <MultiFileExample language="cli" label="CLI">
226 ```bash CLI
227 ant beta:agents create < agent.yaml
228 ```
229
230 <File filename="agent.yaml">
231 ```yaml
232 name: Financial Analyst
233 model: claude-opus-5
234 system: You are a financial analysis agent.
235 skills:
236 - type: anthropic
237 skill_id: xlsx
238 - type: custom
239 skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
240 version: latest
241 ```
242 </File>
243 </MultiFileExample>
239244
240245 ```python Python
241246 agent = client.beta.agents.create(
No line in this hunk matches that.