- Solve a specific, repeatable task
- Have clear instructions Claude can follow
- Include examples when helpful
- Define when they should be used
- Focus on one workflow rather than trying to do everything
Skills follow the Agent Skills specification — see the specification for more in-depth information.
Directory structure
A skill is a directory containing at minimum aSKILL.md file:
name field in your SKILL.md.
Creating a SKILL.md file
The SKILL.md file must start with YAML frontmatter containing required metadata, followed by markdown instructions.
Required fields
SKILL.md
Markdown body
After the frontmatter, write markdown instructions for Claude. Include:- Step-by-step procedures
- Examples of inputs and outputs
- Templates or formatting requirements
- Edge cases to handle
SKILL.md under 500 lines. Move detailed reference material to separate files.
Complete example
SKILL.md
Adding resources
For content too detailed forSKILL.md, add files to your skill directory:
references/: Additional documentation Claude can read when neededassets/: Templates, images, lookup tables, schemasscripts/: Executable code (see below)
SKILL.md so Claude knows when to load them. Keep files focused—smaller files mean less context usage.
Adding scripts
Skills can include executable code in Python, JavaScript/Node.js, or Bash. Place scripts in thescripts/ directory.
Claude can install packages from standard repositories (PyPI, npm) when loading skills. Declare dependencies in your frontmatter:
SKILL.md
Packaging your skill
To upload a skill to Claude:- Ensure the directory name matches your skill’s
namefield - Create a ZIP file containing the skill directory
Testing your skill
Before uploading
- Review
SKILL.mdfor clarity - Verify the description accurately reflects when Claude should use the skill
- Check that all referenced files exist
- Validate using
skills-ref validate ./my-skill(validation tool)
After uploading
- Enable the skill in Settings > Capabilities
- Try prompts that should trigger it
- Review Claude’s thinking to confirm it’s loading the skill
- Iterate on the description if Claude isn’t using it when expected
Best practices
Keep it focused: Create separate skills for different workflows. Multiple focused skills compose better than one large skill. Write clear descriptions: Be specific about when the skill applies. Include keywords that help Claude identify relevant tasks. Start simple: Begin with markdown instructions before adding scripts. Use examples: Include example inputs and outputs to help Claude understand what success looks like. Test incrementally: Test after each significant change. Leverage composability: Claude can use multiple skills together automatically.Security considerations
- Don’t hardcode sensitive information (API keys, passwords)
- Review any downloaded skills before enabling them
- Use MCP connections for external service access