---
name: agent-definition-creation
description: >
Use this skill when creating or refining Claude Code sub-agent definitions. Helps design specialized
AI assistants with proper YAML frontmatter, system prompts, tool access, and example-driven descriptions.
Automatically invoked when user requests "create an agent", "design a sub-agent", "make a specialist",
or mentions agent development. Ensures agents follow Anthropic best practices with focused responsibilities,
discovery-optimized descriptions, and proper tool restrictions.
allowed-tools: Read, Write, Edit, Grep, Glob, mcp__Conventions__search_conventions, mcp__Conventions__get_convention
---
# Agent Definition Creation Skill
This skill helps create production-ready Claude Code sub-agent definitions following Anthropic's official specifications and best practices.
## Core Principles
### 1. Single Responsibility
Each agent should have ONE clear purpose. Avoid creating multipurpose agents that try to do everything.
**Good**: `postgres-expert` - PostgreSQL database management and optimization
**Bad**: `database-expert` - All databases (too broad)
### 2. Discovery-Optimized Descriptions
The `description` field is critical for Claude to discover when to use your agent. Include:
- **What**: Clear statement of capabilities
- **When**: Specific scenarios that trigger usage
- **Examples**: Concrete usage patterns with user/assistant dialogue
- **Trigger terms**: Keywords users might mention
### 3. Tool Restriction Strategy
Grant only necessary tools following principle of least privilege:
- **Omit `tools` field**: Inherits all tools from main conversation (use for general-purpose agents)
- **Specify tools list**: Grant specific tools (use for focused/security-sensitive agents)
### 4. Model Selection
Choose the right model for the task:
- **`sonnet`**: Default choice for most agents (balanced performance/cost)
- **`opus`**: Complex reasoning, architecture decisions, critical tasks
- **`haiku`**: Simple, repetitive tasks with clear patterns
- **`inherit`**: Match parent conversation's model
## Agent Structure
```yaml
---
name: agent-identifier
description: >
Primary description with capabilities and use cases.
Examples:
Context: Situation description
user: "User request example"
assistant: "I'll use the agent-name to handle this task."
Explanation of why this agent is appropriate.
Context: Another scenario
user: "Different request pattern"
assistant: "Let me use the agent-name for this."
Another use case explanation.
tools: Tool1, Tool2, Tool3 # Optional - omit to inherit all tools
model: sonnet # Optional - sonnet, opus, haiku, or inherit
color: "#hexcolor" # Optional - UI color coding
---
System prompt content starts here.
You are a [role description] specializing in [domain].
## Core Responsibilities
- List key responsibilities
- Be specific and actionable
- Include success criteria
## Approach
- Describe methodology
- Include examples
- Reference best practices
## Constraints
- Limitations and boundaries
- Security considerations
- Performance requirements
```
## File Naming & Location
**Project-level** (shared with team):
- Location: `.claude/agents/`
- Format: `agent-name.md`
- Example: `.claude/agents/postgres-expert.md`
**User-level** (personal, cross-project):
- Location: `~/.claude/agents/`
- Format: `agent-name.md`
- Example: `~/.claude/agents/custom-reviewer.md`
**Naming conventions**:
- Use lowercase letters and hyphens only
- Be descriptive but concise
- Avoid generic names like "helper" or "assistant"
## Required Fields
### name
Unique identifier using lowercase alphanumeric characters and hyphens.
```yaml
name: fastapi-expert # Good
name: FastAPI Expert # Bad - no spaces or capitals
name: expert # Bad - too generic
```
### description
Natural language explanation with examples. This is THE MOST IMPORTANT FIELD.
**Structure**:
1. **Primary statement**: What the agent does (1-2 sentences)
2. **Use cases**: Specific scenarios (bullet points or prose)
3. **Examples**: 2-4 concrete user/assistant dialogues with commentary
4. **Trigger terms**: Keywords for discovery
**Example**:
```yaml
description: >
Expert in PostgreSQL database management, optimization, and architecture. Specializes in
query performance tuning, schema design, replication, and PostgreSQL 16+ advanced features.
Use PROACTIVELY for database optimization, slow queries, or schema design tasks.
Examples:
Context: User needs query optimization
user: "My PostgreSQL queries are slow"
assistant: "I'll use the postgres-expert agent to analyze and optimize your queries."
Query performance is a core competency, so this agent is appropriate.
```
## Optional Fields
### tools
Comma-separated list of allowed tools. Omit to inherit all tools from main conversation.
**When to restrict**:
- Security-sensitive agents (limit file access, bash execution)
- Focused agents that only need specific capabilities
- Agents that should not modify code (Read, Grep, Glob only)
**Common tool sets**:
```yaml
# Read-only analysis
tools: Read, Grep, Glob, Bash(git :*)
# Code modification
tools: Read, Write, Edit, MultiEdit, Grep, Glob
# Research and planning
tools: Read, Grep, Glob, WebFetch, WebSearch
# Full-stack development
tools: Read, Write, Edit, MultiEdit, Bash, Grep, Glob, WebSearch
```
### model
Specify model for this agent. Options: `sonnet`, `opus`, `haiku`, `inherit`
```yaml
model: sonnet # Default - balanced performance
model: opus # Complex reasoning, architecture
model: haiku # Simple, fast tasks
model: inherit # Match parent conversation
```
### color
Hex color for UI identification (optional, cosmetic).
```yaml
color: "#d79921" # Yellow
color: "#458588" # Blue
color: "#cc241d" # Red
```
## System Prompt Best Practices
### 1. Role Definition
Start with a clear role statement:
```markdown
You are an expert PostgreSQL database administrator and architect specializing in
performance optimization, schema design, and high-availability configurations.
```
### 2. Responsibilities Section
List concrete, actionable responsibilities:
```markdown
## Core Responsibilities
### Query Optimization
- Analyze EXPLAIN plans and execution statistics
- Recommend index strategies for slow queries
- Identify and fix N+1 query problems
- Optimize JOIN operations and subqueries
### Schema Design
- Design normalized schemas following 3NF principles
- Implement efficient indexing strategies
- Set up row-level security (RLS) for multi-tenancy
- Create database migrations with zero downtime
```
### 3. Approach Section
Describe methodology with examples:
```markdown
## Approach
When optimizing queries:
1. Request the slow query and current execution plan
2. Analyze EXPLAIN ANALYZE output for bottlenecks
3. Recommend specific index additions or query rewrites
4. Provide before/after performance metrics
5. Explain the reasoning behind each optimization
```
### 4. Examples & Code Snippets
Include working examples:
```markdown
## Example: Index Optimization
For a slow query like:
\`\`\`sql
SELECT users.*, orders.total
FROM users
JOIN orders ON users.id = orders.user_id
WHERE orders.created_at > NOW() - INTERVAL '30 days';
\`\`\`
Recommend:
\`\`\`sql
CREATE INDEX idx_orders_created_user
ON orders(created_at, user_id)
INCLUDE (total);
\`\`\`
```
### 5. Constraints & Boundaries
Define what the agent should NOT do:
```markdown
## Constraints
- Never recommend dropping production indexes without analyzing dependencies
- Always suggest testing schema changes in staging first
- Do not execute destructive operations without explicit confirmation
- Require EXPLAIN ANALYZE output before optimization recommendations
```
## Agent Archetypes
### Research/Analysis Agents
**Characteristics**:
- Read-only tool access (Read, Grep, Glob)
- Focus on investigation and reporting
- No code modification
**Example**: Code reviewer, security auditor, documentation analyzer
### Development Agents
**Characteristics**:
- Full editing tools (Read, Write, Edit, MultiEdit)
- Language/framework-specific expertise
- Can run tests and builds
**Example**: Python expert, React specialist, FastAPI architect
### Infrastructure Agents
**Characteristics**:
- Bash access for system commands
- Docker, cloud CLI tools
- Configuration file manipulation
**Example**: Docker engineer, Terraform specialist, K8s expert
### Orchestration Agents
**Characteristics**:
- Task delegation capabilities
- High-level planning
- Multi-agent coordination
**Example**: Project planner, workflow coordinator
## Testing Your Agent
After creating an agent definition:
1. **Test discovery**: Ask natural language questions that should trigger the agent
```
User: "Help me optimize my PostgreSQL query"
Expected: Claude invokes postgres-expert agent
```
2. **Verify tool access**: Ensure the agent can access specified tools
3. **Check boundaries**: Confirm the agent stays within its defined scope
4. **Review examples**: Ensure example scenarios accurately represent usage
## Common Mistakes to Avoid
❌ **Too broad scope**
```yaml
name: backend-expert
description: Expert in all backend technologies
```
✅ **Focused scope**
```yaml
name: fastapi-expert
description: Expert in FastAPI async Python API development
```
❌ **Generic description**
```yaml
description: Helps with database tasks
```
✅ **Specific description with examples**
```yaml
description: >
PostgreSQL expert for query optimization, schema design, and replication.
Use for slow queries, database architecture, or production scaling.
Examples: [concrete user/assistant dialogues]
```
❌ **No tool restrictions when needed**
```yaml
# Security audit agent with full write access - dangerous!
tools: # Inherits all tools including Edit, Write, Bash
```
✅ **Appropriate tool restrictions**
```yaml
# Security audit agent - read-only access
tools: Read, Grep, Glob, Bash(git :*)
```
❌ **Missing examples in description**
```yaml
description: Expert in React development
```
✅ **Examples included**
```yaml
description: >
Expert in React development...
Examples:
Context: User needs component optimization
user: "My dashboard re-renders too often"
assistant: "I'll use the react-expert to profile and optimize rendering."
Performance optimization is a core competency.
```
## Advanced Features
### Resumable Agents
Each agent execution gets a unique `agentId`. You can resume previous agent conversations:
```
User: "Resume agent execution abc123 and continue the analysis"
```
Transcripts are stored separately and can be continued with full context.
### Proactive Usage
Include phrases in description to encourage automatic invocation:
- "Use PROACTIVELY when..."
- "MUST BE USED for..."
- "Automatically invoke for..."
### CLI Configuration
Dynamic agent creation without files:
```bash
claude --agents '{"name": "temp-agent", "description": "...", "tools": "Read,Grep"}'
```
## Resources
Reference the examples directory for:
- Complete agent definitions across different domains
- Real-world system prompts with proven effectiveness
- Tool restriction patterns for various use cases
- Discovery-optimized description templates
---
**Next Steps**: After creating an agent definition, test it with natural language queries to verify Claude discovers and invokes it appropriately. Refine the description based on actual usage patterns.