Overview
Skills are self-contained directories that provide agents with domain-specific instructions, guidelines, and reference material. Each skill is defined by aSKILL.md file with YAML frontmatter and a markdown body.
When activated, a skill’s instructions are injected directly into the agent’s task prompt — giving the agent expertise without requiring any code changes.
Skills are NOT tools. This is the most common point of confusion.
- Skills inject instructions and context into the agent’s prompt. They tell the agent how to think about a problem.
- Tools give the agent callable functions to take action (search, read files, call APIs).
Quick Start
1. Create a Skill Directory
2. Write Your SKILL.md
3. Attach to an Agent
Skills + Tools: Working Together
Here are common patterns showing how skills and tools complement each other:Pattern 1: Skills Only (Domain Expertise, No Actions Needed)
Use when the agent needs specific instructions but doesn’t need to call external services:Pattern 2: Tools Only (Actions, No Special Expertise)
Use when the agent needs to take action but doesn’t need domain-specific instructions:Pattern 3: Skills + Tools (Expertise AND Actions)
The most common real-world pattern. The skill provides how to approach the work; tools provide what the agent can do:Pattern 4: Skills + MCPs
Skills work alongside MCP servers the same way they work with tools:Pattern 5: Skills + Apps
Skills can guide how an agent uses platform integrations:Crew-Level Skills
Skills can be set on a crew to apply to all agents:SKILL.md Format
Frontmatter Fields
| Field | Required | Description |
|---|---|---|
name | Yes | 1–64 chars. Lowercase alphanumeric and hyphens. Must match directory name. |
description | Yes | 1–1024 chars. Describes what the skill does and when to use it. |
license | No | License name or reference to a bundled license file. |
compatibility | No | Max 500 chars. Environment requirements (products, packages, network). |
metadata | No | Arbitrary string key-value mapping. |
allowed-tools | No | Space-delimited list of pre-approved tools. Experimental. |
Directory Structure
name field in SKILL.md. The scripts/, references/, and assets/ directories are available on the skill’s path for agents that need to reference files directly.
Pre-loading Skills
For more control, you can discover and activate skills programmatically:How Skills Are Loaded
Skills use progressive disclosure — only loading what’s needed at each stage:| Stage | What’s loaded | When |
|---|---|---|
| Discovery | Name, description, frontmatter fields | discover_skills() |
| Activation | Full SKILL.md body text | activate_skill() |
skills=["./skills"]), skills are automatically discovered and activated. The progressive loading only matters when using the programmatic API.
Skills vs Knowledge
Both skills and knowledge modify the agent’s prompt, but they serve different purposes:| Aspect | Skills | Knowledge |
|---|---|---|
| What it provides | Instructions, procedures, guidelines | Facts, data, information |
| How it’s stored | Markdown files (SKILL.md) | Embedded in vector store (ChromaDB) |
| How it’s retrieved | Entire body injected into prompt | Semantic search finds relevant chunks |
| Best for | Methodology, checklists, style guides | Company docs, product info, reference data |
| Set via | skills=["./skills"] | knowledge_sources=[source] |
Common Questions
Do I need to set skills AND tools?
Do I need to set skills AND tools?
It depends on your use case. Skills and tools are independent — you can use either, both, or neither.
- Skills alone: When the agent needs expertise but no external actions (e.g., writing with style guidelines)
- Tools alone: When the agent needs actions but no special methodology (e.g., simple web search)
- Both: When the agent needs expertise AND actions (e.g., security audit with specific checklists AND ability to scan code)
Do skills automatically provide tools?
Do skills automatically provide tools?
No. The
allowed-tools field in SKILL.md is experimental metadata only — it does not provision or inject any tools. You must always set tools separately via tools=[], mcps=[], or apps=[].What happens if I set the same skill on both an agent and its crew?
What happens if I set the same skill on both an agent and its crew?
The agent-level skill takes priority. Skills are deduplicated by name — the agent’s skills are processed first, so if the same skill name appears at both levels, the agent’s version is used.
How large can a SKILL.md body be?
How large can a SKILL.md body be?
There’s a soft warning at 50,000 characters, but no hard limit. Keep skills focused and concise for best results — large prompt injections can dilute the agent’s attention.
