Skills
Skills are modular knowledge packages that teach AI agents when and how to use tools. They're non-executable markdown documentation that provides context to the agent.
Skills vs Tools
- Skills: Provide knowledge and context (markdown files with instructions)
- Tools: Perform actual operations (executable capabilities)
Think of skills as the "manual" and tools as the "functions" the agent can call.
Skill Types
CAPA supports four ways to get skills: inline, GitHub, remote URL, and plugins (see below).
1. Inline Skills
Embed the skill content directly in your capabilities file:
skills:
- id: web-researcher
type: inline
def:
description: Web research skill
requires:
- brave_search
content: |
---
name: web-researcher
description: Search the web for information
---
# Web Researcher
Use the brave_search tool to find current information online.
## When to Use
- User asks for current information
- Need to verify facts
- Research topics {
"skills": [
{
"id": "web-researcher",
"type": "inline",
"def": {
"description": "Web research skill",
"requires": ["brave_search"],
"content": "---\nname: web-researcher\ndescription: Search the web for information\n---\n\n# Web Researcher\n\nUse the brave_search tool to find current information online."
}
}
]
} Best for: Project-specific skills unique to your workflow.
2. GitHub Skills
Fetch skills from GitHub repositories (skills.sh ecosystem):
skills:
- id: web-researcher
type: github
def:
repo: vercel-labs/agent-skills@web-researcher
description: Web research skill from skills.sh
requires:
- brave_search {
"skills": [
{
"id": "web-researcher",
"type": "github",
"def": {
"repo": "vercel-labs/agent-skills@web-researcher",
"description": "Web research skill from skills.sh",
"requires": ["brave_search"]
}
}
]
} Format: owner/repo@skill-name (where skill-name is a subdirectory)
Best for: Well-maintained community skills from the skills.sh ecosystem.
3. Remote Skills
Fetch skill content from any URL:
skills:
- id: custom-skill
type: remote
def:
url: https://example.com/my-skill/SKILL.md
description: Custom remote skill
requires:
- tool1
- tool2 {
"skills": [
{
"id": "custom-skill",
"type": "remote",
"def": {
"url": "https://example.com/my-skill/SKILL.md",
"description": "Custom remote skill",
"requires": ["tool1", "tool2"]
}
}
]
} Best for: Private or custom skills hosted elsewhere.
4. Skills from Plugins
When you add plugins to your capabilities file, their skills are installed automatically when you run capa install. You do not add plugin skills to the skills array by hand; CAPA reads each plugin's manifest and installs its skills alongside your own. Plugin tools are exposed to MCP clients like any other tool.
Skill Structure
Skills use the SKILL.md format with frontmatter:
---
name: skill-name
description: Brief description of what this skill does
---
# Skill Title
Detailed description and instructions for the agent.
## When to Use
- Situation 1
- Situation 2
## How to Use
Instructions on using the associated tools.
## Examples
Example usage scenarios. The requires Field
The requires array specifies which tools this skill needs:
skills:
- id: web-researcher
type: inline
def:
requires:
- brave_search
- web_scrape
content: |
# Content here {
"skills": [
{
"id": "web-researcher",
"type": "inline",
"def": {
"requires": ["brave_search", "web_scrape"],
"content": "# Content here"
}
}
]
} The behavior depends on your toolExposure setting:
- expose-all mode: All tools from all skills are immediately available to the agent.
- on-demand mode: When calling
setup_tools({"skills": ["web-researcher"]}}), CAPA returns the schemas forbrave_searchandweb_scrape. The agent then usescall_toolto invoke them.
Adding Skills from GitHub
Use the capa add command to quickly add skills:
# Add from GitHub
capa add vercel-labs/agent-skills
# Add specific skill from monorepo
capa add vercel-labs/agent-skills@web-researcher
# Add with custom ID
capa add vercel-labs/agent-skills --id my-skill Best Practices
- Keep skills focused: Each skill should have a single, clear purpose
- Document thoroughly: Provide clear instructions on when and how to use tools
- Include examples: Show the agent concrete usage scenarios
- Specify requirements: Always list required tools in the
requiresarray. Only tools that are required by at least one skill (or provided by a plugin) are exposed to MCP clients; tools not in any skill'srequiresare not available. - Use descriptive IDs: Choose clear, kebab-case IDs like
web-researcher
Skills.sh Ecosystem
The skills.sh ecosystem provides a collection of community-maintained skills. Popular repositories include:
vercel-labs/agent-skills- Official collection of agent skills- Many community-contributed skills on GitHub
Related Documentation
- Capabilities File - Overall structure
- Plugins - Skills from remote MCP plugins
- Tools - Learn about defining tools
- GitHub Integration - Adding skills from GitHub