415 lines
7.7 KiB
Markdown
415 lines
7.7 KiB
Markdown
# Agent Skills
|
|
|
|
Create, manage, and share Skills to extend Claude's capabilities in Claude Code.
|
|
|
|
## What Are Agent Skills?
|
|
|
|
Agent Skills are modular capabilities that extend Claude's functionality. Each Skill packages:
|
|
- Instructions and procedural knowledge
|
|
- Metadata (name, description)
|
|
- Optional resources (scripts, templates, references)
|
|
|
|
Skills are automatically discovered and used by Claude when relevant to the task.
|
|
|
|
## Skill Structure
|
|
|
|
### Basic Structure
|
|
```
|
|
.claude/skills/
|
|
└── my-skill/
|
|
├── skill.md # Instructions (required)
|
|
└── skill.json # Metadata (required)
|
|
```
|
|
|
|
### With Resources
|
|
```
|
|
.claude/skills/
|
|
└── my-skill/
|
|
├── skill.md
|
|
├── skill.json
|
|
├── scripts/ # Executable code
|
|
├── references/ # Documentation
|
|
└── assets/ # Templates, images
|
|
```
|
|
|
|
## Creating Skills
|
|
|
|
### skill.json
|
|
Metadata and configuration:
|
|
|
|
```json
|
|
{
|
|
"name": "my-skill",
|
|
"description": "Brief description of when to use this skill",
|
|
"version": "1.0.0",
|
|
"author": "Your Name"
|
|
}
|
|
```
|
|
|
|
**Key fields:**
|
|
- `name`: Unique identifier (kebab-case)
|
|
- `description`: When Claude should activate this skill
|
|
- `version`: Semantic version
|
|
- `author`: Creator name or org
|
|
|
|
### skill.md
|
|
Main instructions for Claude:
|
|
|
|
```markdown
|
|
# Skill Name
|
|
|
|
Description of what this skill does.
|
|
|
|
## When to Use This Skill
|
|
|
|
Specific scenarios when Claude should activate this skill.
|
|
|
|
## Instructions
|
|
|
|
Step-by-step instructions for Claude to follow.
|
|
|
|
## Examples
|
|
|
|
Concrete examples of skill usage.
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### Clear Activation Criteria
|
|
Define exactly when the skill should be used:
|
|
|
|
**Good:**
|
|
```
|
|
Use when creating React components with TypeScript and Tailwind CSS.
|
|
```
|
|
|
|
**Bad:**
|
|
```
|
|
Use for frontend development.
|
|
```
|
|
|
|
### Concise Instructions
|
|
Focus on essential information, avoid duplication:
|
|
|
|
**Good:**
|
|
```
|
|
1. Create component file in src/components/
|
|
2. Use TypeScript interfaces for props
|
|
3. Apply Tailwind classes for styling
|
|
```
|
|
|
|
**Bad:**
|
|
```
|
|
First you need to think about creating a component,
|
|
then maybe you should consider...
|
|
```
|
|
|
|
### Actionable Guidance
|
|
Provide clear steps Claude can follow:
|
|
|
|
**Good:**
|
|
```
|
|
Run `npm test` to validate implementation.
|
|
```
|
|
|
|
**Bad:**
|
|
```
|
|
You might want to test things.
|
|
```
|
|
|
|
### Include Examples
|
|
Show concrete input/output examples:
|
|
|
|
```markdown
|
|
## Examples
|
|
|
|
Input: "Create button component"
|
|
Output: Creates src/components/Button.tsx with props interface
|
|
```
|
|
|
|
### Scope Limitation
|
|
Keep skills focused on specific domains:
|
|
|
|
**Good:**
|
|
- `api-testing` - Testing REST APIs
|
|
- `db-migrations` - Database schema changes
|
|
|
|
**Bad:**
|
|
- `general-development` - Everything
|
|
|
|
## Resource Types
|
|
|
|
### Scripts (`scripts/`)
|
|
Executable code for deterministic tasks:
|
|
|
|
```
|
|
scripts/
|
|
├── format-code.py
|
|
├── generate-types.js
|
|
└── run-tests.sh
|
|
```
|
|
|
|
**When to use:**
|
|
- Repeated code generation
|
|
- Deterministic transformations
|
|
- External tool integrations
|
|
|
|
### References (`references/`)
|
|
Documentation loaded into context as needed:
|
|
|
|
```
|
|
references/
|
|
├── api-docs.md
|
|
├── schemas.md
|
|
└── workflows.md
|
|
```
|
|
|
|
**When to use:**
|
|
- API documentation
|
|
- Database schemas
|
|
- Domain knowledge
|
|
- Detailed workflows
|
|
|
|
### Assets (`assets/`)
|
|
Files used in output:
|
|
|
|
```
|
|
assets/
|
|
├── templates/
|
|
│ └── component-template.tsx
|
|
├── icons/
|
|
└── configs/
|
|
```
|
|
|
|
**When to use:**
|
|
- Templates
|
|
- Boilerplate code
|
|
- Images, icons
|
|
- Configuration files
|
|
|
|
## Using Skills via API
|
|
|
|
### TypeScript Example
|
|
```typescript
|
|
import Anthropic from '@anthropic-ai/sdk';
|
|
|
|
const client = new Anthropic({
|
|
apiKey: process.env.ANTHROPIC_API_KEY
|
|
});
|
|
|
|
const response = await client.messages.create({
|
|
model: 'claude-sonnet-4-5-20250929',
|
|
max_tokens: 4096,
|
|
skills: [
|
|
{
|
|
type: 'custom',
|
|
custom: {
|
|
name: 'document-creator',
|
|
description: 'Creates professional documents',
|
|
instructions: 'Follow corporate style guide...'
|
|
}
|
|
}
|
|
],
|
|
messages: [{
|
|
role: 'user',
|
|
content: 'Create a project proposal'
|
|
}]
|
|
});
|
|
```
|
|
|
|
### Python Example
|
|
```python
|
|
from anthropic import Anthropic
|
|
|
|
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
|
|
|
|
response = client.messages.create(
|
|
model="claude-sonnet-4-5-20250929",
|
|
max_tokens=4096,
|
|
skills=[
|
|
{
|
|
"type": "custom",
|
|
"custom": {
|
|
"name": "code-reviewer",
|
|
"description": "Reviews code for quality and security",
|
|
"instructions": "Check for common issues..."
|
|
}
|
|
}
|
|
],
|
|
messages=[{
|
|
"role": "user",
|
|
"content": "Review this code"
|
|
}]
|
|
)
|
|
```
|
|
|
|
## Skill Discovery
|
|
|
|
Claude automatically discovers skills:
|
|
|
|
1. **Global skills**: `~/.claude/skills/`
|
|
2. **Project skills**: `.claude/skills/`
|
|
3. **Plugin skills**: From installed plugins
|
|
|
|
Skills are activated when:
|
|
- Task matches skill description
|
|
- User explicitly invokes skill
|
|
- Context suggests skill is relevant
|
|
|
|
## Managing Skills
|
|
|
|
### List Skills
|
|
```bash
|
|
claude skills list
|
|
```
|
|
|
|
### Test Skill
|
|
```bash
|
|
claude --skill my-skill "test task"
|
|
```
|
|
|
|
### Share Skill
|
|
```bash
|
|
# Package skill
|
|
cd .claude/skills/my-skill
|
|
tar -czf my-skill.tar.gz .
|
|
|
|
# Or create plugin
|
|
# See references/hooks-and-plugins.md
|
|
```
|
|
|
|
### Install Skill
|
|
```bash
|
|
# Manual installation
|
|
cd .claude/skills/
|
|
tar -xzf my-skill.tar.gz
|
|
```
|
|
|
|
## Example Skills
|
|
|
|
### API Testing Skill
|
|
|
|
**skill.json:**
|
|
```json
|
|
{
|
|
"name": "api-testing",
|
|
"description": "Test REST APIs with automated requests",
|
|
"version": "1.0.0",
|
|
"author": "Team"
|
|
}
|
|
```
|
|
|
|
**skill.md:**
|
|
```markdown
|
|
# API Testing
|
|
|
|
Test REST APIs with comprehensive validation.
|
|
|
|
## When to Use
|
|
|
|
Use when testing API endpoints, validating responses, or
|
|
creating API test suites.
|
|
|
|
## Instructions
|
|
|
|
1. Read API documentation from references/api-docs.md
|
|
2. Use scripts/test-api.py for making requests
|
|
3. Validate response status, headers, body
|
|
4. Generate test report
|
|
|
|
## Examples
|
|
|
|
Request: "Test the /users endpoint"
|
|
Actions:
|
|
- Read references/api-docs.md for endpoint spec
|
|
- Run scripts/test-api.py --endpoint /users
|
|
- Validate response matches schema
|
|
- Report results
|
|
```
|
|
|
|
### Database Migration Skill
|
|
|
|
**skill.json:**
|
|
```json
|
|
{
|
|
"name": "db-migrations",
|
|
"description": "Create and manage database migrations",
|
|
"version": "1.0.0"
|
|
}
|
|
```
|
|
|
|
**skill.md:**
|
|
```markdown
|
|
# Database Migrations
|
|
|
|
Create safe, reversible database schema changes.
|
|
|
|
## When to Use
|
|
|
|
Use when modifying database schema, adding tables,
|
|
or changing column definitions.
|
|
|
|
## Instructions
|
|
|
|
1. Review current schema in references/schema.md
|
|
2. Create migration file in migrations/
|
|
3. Include both up and down migrations
|
|
4. Test migration on development database
|
|
5. Update references/schema.md
|
|
|
|
## Migration Template
|
|
|
|
See assets/migration-template.sql for standard format.
|
|
```
|
|
|
|
## Progressive Disclosure
|
|
|
|
Keep skill.md concise (<200 lines) by:
|
|
|
|
1. **Core instructions** in skill.md
|
|
2. **Detailed docs** in references/
|
|
3. **Executable code** in scripts/
|
|
4. **Templates** in assets/
|
|
|
|
Example structure:
|
|
```markdown
|
|
# My Skill
|
|
|
|
Brief overview.
|
|
|
|
## When to Use
|
|
|
|
Clear activation criteria.
|
|
|
|
## Instructions
|
|
|
|
High-level steps that reference:
|
|
- references/detailed-workflow.md
|
|
- scripts/automation.py
|
|
- assets/template.tsx
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Skill Not Activating
|
|
- Check description specificity
|
|
- Verify skill.json format
|
|
- Ensure skill.md has clear activation criteria
|
|
|
|
### Resource Not Found
|
|
- Verify file paths in skill.md
|
|
- Check directory structure
|
|
- Use relative paths from skill root
|
|
|
|
### Conflicting Skills
|
|
- Make descriptions more specific
|
|
- Use unique names
|
|
- Scope skills narrowly
|
|
|
|
## See Also
|
|
|
|
- Skill creation guide: https://docs.claude.com/claude-code/skills
|
|
- Best practices: https://docs.claude.com/agents-and-tools/agent-skills/best-practices
|
|
- API usage: `references/api-reference.md`
|
|
- Plugin system: `references/hooks-and-plugins.md`
|