465 lines
8.8 KiB
Markdown
465 lines
8.8 KiB
Markdown
# Subagents Patterns
|
|
|
|
Guide to designing and orchestrating specialized subagents.
|
|
|
|
---
|
|
|
|
## What Are Subagents?
|
|
|
|
Specialized agents with:
|
|
- **Specific expertise** - Focused domain knowledge
|
|
- **Custom tools** - Only tools they need
|
|
- **Different models** - Match capability to task cost
|
|
- **Dedicated prompts** - Tailored instructions
|
|
|
|
---
|
|
|
|
## When to Use Subagents
|
|
|
|
### ✅ Use Subagents When:
|
|
|
|
- Task requires different expertise areas
|
|
- Some subtasks need different models (cost optimization)
|
|
- Tool access should be restricted per role
|
|
- Clear separation of concerns needed
|
|
- Multiple steps with specialized knowledge
|
|
|
|
### ❌ Don't Use Subagents When:
|
|
|
|
- Single straightforward task
|
|
- All work can be done by one agent
|
|
- Overhead of orchestration > benefit
|
|
- Tools/permissions don't vary
|
|
|
|
---
|
|
|
|
## AgentDefinition Structure
|
|
|
|
```typescript
|
|
type AgentDefinition = {
|
|
description: string; // When to use this agent
|
|
prompt: string; // System prompt for agent
|
|
tools?: string[]; // Allowed tools (optional)
|
|
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit'; // Model (optional)
|
|
}
|
|
```
|
|
|
|
### Field Guidelines
|
|
|
|
**description**:
|
|
- Clear, action-oriented
|
|
- When to invoke this agent
|
|
- 1-2 sentences
|
|
- Examples: "Run test suites", "Deploy to production"
|
|
|
|
**prompt**:
|
|
- Agent's role and behavior
|
|
- Instructions and constraints
|
|
- What to do and what not to do
|
|
- Can be detailed (100-500 tokens)
|
|
|
|
**tools**:
|
|
- If omitted, inherits all tools from main agent
|
|
- Use to restrict agent to specific tools
|
|
- Examples: `["Read", "Grep"]` for read-only
|
|
|
|
**model**:
|
|
- `"haiku"` - Fast, cost-effective ($0.25/$1.25 per MTok)
|
|
- `"sonnet"` - Balanced ($3/$15 per MTok)
|
|
- `"opus"` - Maximum capability ($15/$75 per MTok)
|
|
- `"inherit"` - Use main agent's model
|
|
- If omitted, inherits main agent's model
|
|
|
|
---
|
|
|
|
## Design Patterns
|
|
|
|
### Pattern 1: DevOps Pipeline
|
|
|
|
```typescript
|
|
agents: {
|
|
"test-runner": {
|
|
description: "Run automated test suites and verify coverage",
|
|
prompt: `You run tests.
|
|
|
|
Execute:
|
|
- Unit tests
|
|
- Integration tests
|
|
- End-to-end tests
|
|
|
|
FAIL if any tests fail. Report clear errors.`,
|
|
tools: ["Bash", "Read"],
|
|
model: "haiku" // Fast, cost-effective
|
|
},
|
|
|
|
"security-checker": {
|
|
description: "Security audits and vulnerability scanning",
|
|
prompt: `You check security.
|
|
|
|
Scan for:
|
|
- Exposed secrets
|
|
- Dependency vulnerabilities
|
|
- Permission issues
|
|
- OWASP compliance
|
|
|
|
Block deployment if critical issues found.`,
|
|
tools: ["Read", "Grep", "Bash"],
|
|
model: "sonnet" // Balance for analysis
|
|
},
|
|
|
|
"deployer": {
|
|
description: "Application deployment and rollbacks",
|
|
prompt: `You deploy applications.
|
|
|
|
Process:
|
|
1. Deploy to staging
|
|
2. Verify health checks
|
|
3. Deploy to production
|
|
4. Create rollback plan
|
|
|
|
ALWAYS have rollback ready.`,
|
|
tools: ["Bash", "Read"],
|
|
model: "sonnet" // Reliable for critical ops
|
|
}
|
|
}
|
|
```
|
|
|
|
### Pattern 2: Code Review Workflow
|
|
|
|
```typescript
|
|
agents: {
|
|
"syntax-checker": {
|
|
description: "Check syntax, formatting, and linting",
|
|
prompt: `You check syntax and formatting.
|
|
|
|
Run:
|
|
- ESLint
|
|
- Prettier
|
|
- TypeScript type checking
|
|
|
|
Report all violations clearly.`,
|
|
tools: ["Bash", "Read"],
|
|
model: "haiku" // Fast checks
|
|
},
|
|
|
|
"logic-reviewer": {
|
|
description: "Review logic, algorithms, and architecture",
|
|
prompt: `You review code logic.
|
|
|
|
Check:
|
|
- Algorithmic correctness
|
|
- Edge cases
|
|
- Performance issues
|
|
- Design patterns
|
|
|
|
Suggest improvements.`,
|
|
tools: ["Read", "Grep"],
|
|
model: "sonnet" // Complex analysis
|
|
},
|
|
|
|
"security-reviewer": {
|
|
description: "Review for security vulnerabilities",
|
|
prompt: `You review security.
|
|
|
|
Check:
|
|
- SQL injection
|
|
- XSS vulnerabilities
|
|
- Authentication bypass
|
|
- Data exposure
|
|
|
|
FAIL on critical issues.`,
|
|
tools: ["Read", "Grep"],
|
|
model: "sonnet" // Security expertise
|
|
}
|
|
}
|
|
```
|
|
|
|
### Pattern 3: Content Generation
|
|
|
|
```typescript
|
|
agents: {
|
|
"researcher": {
|
|
description: "Research topics and gather information",
|
|
prompt: `You research topics.
|
|
|
|
Gather:
|
|
- Relevant information
|
|
- Latest trends
|
|
- Best practices
|
|
- Examples
|
|
|
|
Provide comprehensive research.`,
|
|
tools: ["WebSearch", "WebFetch", "Read"],
|
|
model: "haiku" // Fast research
|
|
},
|
|
|
|
"writer": {
|
|
description: "Write content based on research",
|
|
prompt: `You write content.
|
|
|
|
Write:
|
|
- Clear, engaging prose
|
|
- Well-structured
|
|
- Audience-appropriate
|
|
- Fact-based
|
|
|
|
Use research provided.`,
|
|
tools: ["Write", "Read"],
|
|
model: "sonnet" // Quality writing
|
|
},
|
|
|
|
"editor": {
|
|
description: "Edit and polish content",
|
|
prompt: `You edit content.
|
|
|
|
Check:
|
|
- Grammar and spelling
|
|
- Clarity and flow
|
|
- Consistency
|
|
- Formatting
|
|
|
|
Polish to perfection.`,
|
|
tools: ["Read", "Edit"],
|
|
model: "sonnet" // Quality editing
|
|
}
|
|
}
|
|
```
|
|
|
|
### Pattern 4: Incident Response
|
|
|
|
```typescript
|
|
agents: {
|
|
"incident-detector": {
|
|
description: "Detect and triage incidents",
|
|
prompt: `You detect incidents.
|
|
|
|
Monitor:
|
|
- Error rates
|
|
- Response times
|
|
- System health
|
|
- Alerts
|
|
|
|
Assess severity and impact.`,
|
|
tools: ["Bash", "Read"],
|
|
model: "haiku" // Fast detection
|
|
},
|
|
|
|
"root-cause-analyzer": {
|
|
description: "Analyze root cause of incidents",
|
|
prompt: `You analyze root causes.
|
|
|
|
Investigate:
|
|
- Logs
|
|
- Metrics
|
|
- Recent changes
|
|
- Dependencies
|
|
|
|
Identify exact cause.`,
|
|
tools: ["Bash", "Read", "Grep"],
|
|
model: "sonnet" // Deep analysis
|
|
},
|
|
|
|
"fix-implementer": {
|
|
description: "Implement fixes for incidents",
|
|
prompt: `You implement fixes.
|
|
|
|
Fix:
|
|
- Apply patches
|
|
- Rollback changes
|
|
- Update config
|
|
- Deploy hotfixes
|
|
|
|
Verify fix resolves issue.`,
|
|
tools: ["Read", "Edit", "Bash"],
|
|
model: "sonnet" // Careful fixes
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Orchestration Strategies
|
|
|
|
### Sequential Execution
|
|
|
|
Main agent coordinates agents in order:
|
|
|
|
```
|
|
test-runner → security-checker → deployer
|
|
```
|
|
|
|
**Use when**: Steps must happen in order
|
|
|
|
### Parallel Execution
|
|
|
|
Main agent delegates to multiple agents at once:
|
|
|
|
```
|
|
test-runner
|
|
security-checker } in parallel
|
|
code-reviewer
|
|
```
|
|
|
|
**Use when**: Steps are independent
|
|
|
|
### Conditional Execution
|
|
|
|
Main agent decides which agents to use based on context:
|
|
|
|
```
|
|
if (tests fail) → test-fixer
|
|
if (security issue) → security-fixer
|
|
if (all pass) → deployer
|
|
```
|
|
|
|
**Use when**: Different paths needed
|
|
|
|
---
|
|
|
|
## Model Selection Strategy
|
|
|
|
### Cost vs Capability
|
|
|
|
| Model | Cost (in/out) | Speed | Use For |
|
|
|-------|---------------|-------|---------|
|
|
| Haiku | $0.25/$1.25 | Fastest | Monitoring, simple checks |
|
|
| Sonnet | $3/$15 | Medium | Code review, analysis |
|
|
| Opus | $15/$75 | Slowest | Complex reasoning |
|
|
|
|
### Optimization Tips
|
|
|
|
```typescript
|
|
// ✅ Good: Match model to task
|
|
agents: {
|
|
"monitor": { model: "haiku" }, // Simple checks
|
|
"reviewer": { model: "sonnet" }, // Analysis
|
|
"architect": { model: "opus" } // Complex design
|
|
}
|
|
|
|
// ❌ Bad: Opus for everything
|
|
agents: {
|
|
"monitor": { model: "opus" }, // Wasteful
|
|
"reviewer": { model: "opus" }, // Wasteful
|
|
"simple-task": { model: "opus" } // Wasteful
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Tool Restriction Patterns
|
|
|
|
### Read-Only Agent
|
|
|
|
```typescript
|
|
{
|
|
description: "Analyze code without modifications",
|
|
tools: ["Read", "Grep", "Glob"],
|
|
model: "haiku"
|
|
}
|
|
```
|
|
|
|
### Write-Only Agent
|
|
|
|
```typescript
|
|
{
|
|
description: "Generate new files",
|
|
tools: ["Write"],
|
|
model: "sonnet"
|
|
}
|
|
```
|
|
|
|
### Modify Agent
|
|
|
|
```typescript
|
|
{
|
|
description: "Edit existing files",
|
|
tools: ["Read", "Edit"],
|
|
model: "sonnet"
|
|
}
|
|
```
|
|
|
|
### Full Access Agent
|
|
|
|
```typescript
|
|
{
|
|
description: "Complete control",
|
|
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"],
|
|
model: "sonnet"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Communication Between Agents
|
|
|
|
Agents communicate through the main agent:
|
|
|
|
```
|
|
Main Agent: "Run tests"
|
|
↓
|
|
Test Runner: "Tests passed"
|
|
↓
|
|
Main Agent: "Deploy to staging"
|
|
↓
|
|
Deployer: "Deployed to staging"
|
|
↓
|
|
Main Agent: "Verify health"
|
|
↓
|
|
Monitor: "Health checks passing"
|
|
↓
|
|
Main Agent: "Deploy to production"
|
|
```
|
|
|
|
**No direct agent-to-agent communication**.
|
|
|
|
---
|
|
|
|
## Best Practices
|
|
|
|
### ✅ Do
|
|
|
|
- Give agents clear, specific roles
|
|
- Match model to task complexity
|
|
- Restrict tools per agent's needs
|
|
- Write detailed prompts with constraints
|
|
- Use descriptive agent names
|
|
- Test agents independently
|
|
- Monitor which agents are invoked
|
|
|
|
### ❌ Don't
|
|
|
|
- Create overlapping responsibilities
|
|
- Use Opus for simple tasks
|
|
- Give all agents all tools
|
|
- Write vague prompts
|
|
- Use generic names like "agent1"
|
|
- Skip testing in isolation
|
|
- Assume agents will coordinate perfectly
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Agent Not Invoked
|
|
|
|
**Problem**: Main agent doesn't call subagent
|
|
|
|
**Solution**: Improve `description` to be more specific
|
|
|
|
### Wrong Agent Invoked
|
|
|
|
**Problem**: Main agent calls incorrect subagent
|
|
|
|
**Solution**: Make descriptions more distinct
|
|
|
|
### Agent Lacks Capability
|
|
|
|
**Problem**: Agent can't complete task
|
|
|
|
**Solution**: Add required tools or upgrade model
|
|
|
|
---
|
|
|
|
**For more details**: See SKILL.md
|
|
**Examples**: templates/subagents-orchestration.ts
|