A Claude skill is a reusable bundle of instructions and, if needed, supporting files. The steps to add one depend on where you want to use it: upload it in the Claude app, save it in a Claude Code skills folder, or manage and invoke it through the Claude API. These are separate workflows—not one installation that automatically applies everywhere. (support.claude.com)
Choose where to add the skill
- Claude app: Choose this for a workflow you want available in Claude chats. You can upload a personal skill; Team and Enterprise owners can also provision skills for their organization. Skills require code execution to be enabled. (
support.claude.com) - Claude Code: Choose this for a workflow you want available while working in a terminal or code project. Save a
SKILL.mdin a personal or project skills directory, then invoke it by name or let Claude use it when relevant. (code.claude.com) - Claude API: Choose this when your application needs to upload or reference a skill and call it in Messages API requests. Anthropic describes API skills as beta and requires the code execution tool; use a model that supports it. (
support.claude.com)
1. Prepare a simple skill
Start with one repeatable task. Write what the skill should do, when it should be used, the steps to follow, and what a good result looks like. Anthropic recommends focused skills with clear instructions and examples where useful. (support.claude.com)
For example, create a folder called meeting-prep containing SKILL.md:
---
name: meeting-prep
description: Prepare a concise briefing for an upcoming meeting from an agenda and background notes.
---
# Meeting prep
When asked to prepare for a meeting:
1. Use the agenda and notes the user provides.
2. List key context, open questions, and suggested talking points.
3. Do not invent missing names, dates, or facts; flag what needs confirmation.
## Output
Return a concise briefing with sections for Context, Open questions, and Talking points.
Keep the description specific: it should help distinguish the intended task from nearby ones. If the skill grows, add supporting files and point to them from SKILL.md. Test it with a request that should match and one that should not; revise the instructions if the result is wrong. These are practical checks, not a guarantee that Claude will choose a skill on every similar prompt.
2. Add a skill in the Claude app
- Enable code execution. On individual Free, Pro, Max, and Ultra plans, check Settings → Capabilities and enable Code execution and file creation (called Create and edit files in the updated Settings layout). On Team or Enterprise, an owner may need to enable the relevant capabilities under Organization settings → Plugins & skills → Policy. (
support.claude.com) - Prepare the skill folder. Include
SKILL.mdand any supporting files. To upload through organization settings, Anthropic specifies a.zipcontaining a skill with aSKILL.mdfile. (support.claude.com) - Open
Customize → Skillsand upload the skill. Anthropic’s help center says individual users can upload personal skills from this area. Follow the upload prompt to select your skill package. (support.claude.com) - Check that it is enabled. In
Customize → Skills, make sure the skill is switched on. Then ask Claude for the task it describes and inspect the response against your expected format.
For an organization-wide upload, an owner can go to Organization settings → Plugins & skills → Add → Upload a skill and select the ZIP. Anthropic says a provisioned skill becomes available in users’ skill lists; those skills can also load in Claude Code for people signed in with their Claude account. (support.claude.com)
3. Add a skill in Claude Code
- Create a folder for the skill and put
SKILL.mdinside it. - Save it in one of these locations:
- Personal:
~/.claude/skills/meeting-prep/SKILL.md - Project:
.claude/skills/meeting-prep/SKILL.md
- Personal:
- Start Claude Code in the relevant project. Invoke the skill by typing
/meeting-prep, or ask for meeting preparation in ordinary language and see whether Claude uses it when relevant. Claude Code documents both direct invocation and automatic use when relevant. (code.claude.com)
Use the personal location for a skill you want across your projects; use the project location when you want to keep it with a repository and share it with teammates. Project files can be committed to Git, while files under ~/.claude are personal configuration. (code.claude.com)
4. Use a skill in a production Claude API integration
The API route is different from app upload or Claude Code file setup. The official API documentation describes this workflow:
- Prepare and upload the skill. Create a skill package with
SKILL.md. The Skills API’sPOST /v1/skillsendpoint accepts files; Anthropic specifies that uploaded files share a top-level directory and thatSKILL.mdmust be at that directory’s root. The endpoint returns a skill object with an ID. (platform.claude.com) - Use the returned ID in a Messages API request. Add the skill under
container.skills, withtype: "custom"and yourskill_id. A version can also be specified; the API guide documentslatestas an option. (platform.claude.com) - Enable code execution. Skills run through the Messages API’s code execution tool. Use a model listed as supporting that tool, and check the official quickstart for the complete request setup for your language and use case. (
platform.claude.com) - Verify before deployment. Confirm that skill creation returns an ID, then make a test Messages request that asks for the skill’s task. Check the response for the expected content or artifact before relying on the workflow in production.
The documented skill reference has this shape:
{
"container": {
"skills": [
{
"type": "custom",
"skill_id": "YOUR_SKILL_ID",
"version": "latest"
}
]
}
}
Treat this as the skill portion of the request, not a complete Messages API body: the model, code execution tool configuration, authentication, and other request fields depend on the API setup. Use Anthropic’s Skills API reference and API quickstart for the complete, current request details. Custom skills are private to the workspace that manages them, so make sure your production credentials use the intended workspace. (platform.claude.com)
If the skill does not work
- In the Claude app: Check that code execution is enabled, the skill is switched on, and your organization permits skills if you use a managed account. (
support.claude.com) - In Claude Code: Check that
SKILL.mdis in the personal or project skills directory you intended. Try the slash command directly to distinguish an invocation issue from a matching issue. (code.claude.com) - In the API: Check the returned skill ID, the
typevalue (customfor your uploaded skill), the selected version, and whether code execution is enabled for a supported model. (platform.claude.com) - On any surface: Compare a matching test request with a plausible non-matching request. If the skill activates but produces the wrong result, revise its steps or output requirements; if it is not used, make its intended task clearer and test again.
Quick answer: upload a skill under Customize → Skills for the Claude app, save SKILL.md under ~/.claude/skills/<name>/ or <project>/.claude/skills/<name>/ for Claude Code, or upload it through the Skills API and reference its ID in container.skills for an API application. Keep the setup and tests specific to the surface you chose.
Sources
Use skills in Claude — Claude Help Center
How to create custom skills — Claude Help Center
Provision and manage skills for your organization — Claude Help Center
Browse skills, connectors, and plugins in one directory — Claude Help Center
Extend Claude with skills — Claude Code Docs
Explore the .claude directory — Claude Code Docs
Using Agent Skills with the API — Claude Platform Docs
Create Skill — Claude API Reference
Create a Message — Claude API Reference
Get started with Agent Skills in the API — Claude Platform Docs
