Choose appropriate model for custom agent tasks. Use when selecting between Haiku, Sonnet, and Opus for agents, optimizing cost vs quality tradeoffs, or matching model capability to task complexity.
Scanned 2/12/2026
Install via CLI
openskills install melodic-software/claude-code-plugins---
name: model-selection
description: Choose appropriate model for custom agent tasks. Use when selecting between Haiku, Sonnet, and Opus for agents, optimizing cost vs quality tradeoffs, or matching model capability to task complexity.
allowed-tools: Read, Grep, Glob, AskUserQuestion
---
# Model Selection Skill
Choose the right model for custom agent tasks based on complexity, cost, and performance requirements.
## Interactive Model Selection
Use AskUserQuestion to understand requirements and recommend the optimal model:
```yaml
# Question 1: Primary Priority (MCP: CLI best practices - tradeoff selection)
question: "What is your primary priority for this agent?"
header: "Priority"
options:
- label: "Cost Efficiency (Recommended)"
description: "Minimize API costs, high-volume operations"
- label: "Balanced Performance"
description: "Good quality at reasonable cost for most tasks"
- label: "Maximum Quality"
description: "Best results regardless of cost, complex reasoning"
- label: "Lowest Latency"
description: "Real-time responses, user-facing interactions"
# Question 2: Task Complexity (MCP: Agent SDK model selection)
question: "How complex is the task this agent will perform?"
header: "Complexity"
options:
- label: "Simple"
description: "Transformations, extraction, formatting, classification"
- label: "Moderate"
description: "Code generation, analysis, planning, most tasks"
- label: "Complex"
description: "Architecture decisions, multi-step reasoning, critical code"
- label: "Variable"
description: "Mix of simple and complex tasks in one agent"
```
Use these responses to apply the decision tree and recommend the appropriate model.
## Purpose
Guide selection of appropriate Claude model (Haiku, Sonnet, Opus) for custom agent tasks to optimize cost, speed, and quality.
## When to Use
- Designing a new custom agent
- Optimizing existing agent performance
- Balancing cost vs quality
- Meeting specific latency requirements
## Model Overview
| Model | Speed | Cost | Quality | Use Case |
| --- | --- | --- | --- | --- |
| **Haiku** | Fastest | Lowest | Good | Simple tasks, high volume |
| **Sonnet** | Fast | Medium | Very Good | Most tasks, balanced |
| **Opus** | Slowest | Highest | Best | Complex reasoning |
## Selection Decision Tree
```text
START
│
├── Is task simple transformation?
│ └── YES → Haiku
│
├── Is cost the primary concern?
│ └── YES → Haiku (if adequate) or Sonnet
│
├── Is quality critical (no room for error)?
│ └── YES → Opus
│
├── Does task require complex reasoning?
│ └── YES → Opus
│
├── Is latency critical (real-time)?
│ └── YES → Haiku
│
└── DEFAULT → Sonnet (best balance)
```
## Model Selection by Task Type
### Haiku Tasks
Best for:
- Text transformations (uppercase, formatting)
- Simple classification
- Data extraction
- High-volume operations
- Real-time processing
- Pattern matching
```python
# Haiku examples
model="claude-3-5-haiku-20241022"
# Echo agent - simple transformation
# Calculator - straightforward math
# Stream processor - high volume, low complexity
```
### Sonnet Tasks
Best for:
- Code generation
- Code review
- Planning and analysis
- Most custom agents
- Balanced performance
```python
# Sonnet examples
model="claude-sonnet-4-20250514"
# QA agent - codebase analysis
# Builder agent - code implementation
# General-purpose agents
```
### Opus Tasks
Best for:
- Strategic planning
- Complex architectural decisions
- Critical code review
- Multi-step reasoning
- Novel problem solving
```python
# Opus examples
model="claude-opus-4-20250514"
# Planner agent - strategic decisions
# Reviewer agent - critical validation
# Architect agent - system design
```
## Cost Considerations
### Relative Costs
| Model | Input Tokens | Output Tokens | Relative Cost |
| --- | --- | --- | --- |
| Haiku | Low | Low | 1x |
| Sonnet | Medium | Medium | ~10x |
| Opus | High | High | ~30x |
### Cost Optimization Strategies
1. **Start with Haiku**: Test if simpler model is adequate
2. **Use Haiku for preprocessing**: Filter/classify before main task
3. **Reserve Opus for critical paths**: Only where quality is paramount
4. **Monitor costs**: Track `ResultMessage.total_cost_usd`
```python
# Cost tracking
async for message in client.receive_response():
if isinstance(message, ResultMessage):
print(f"Query cost: ${message.total_cost_usd:.6f}")
```
## Speed Considerations
### Latency Profiles
| Model | First Token | Total Time | Throughput |
| --- | --- | --- | --- |
| Haiku | ~500ms | Fast | Highest |
| Sonnet | ~1s | Medium | Good |
| Opus | ~2s | Slower | Lower |
### Speed Optimization
1. **Real-time needs Haiku**: Sub-second response
2. **Interactive needs Sonnet**: Acceptable latency
3. **Batch allows Opus**: Latency less critical
## Quality Considerations
### Capability Differences
| Capability | Haiku | Sonnet | Opus |
| --- | --- | --- | --- |
| Simple reasoning | ✓ | ✓ | ✓ |
| Code generation | Limited | Good | Excellent |
| Complex planning | Poor | Good | Excellent |
| Multi-step reasoning | Limited | Good | Excellent |
| Novel problems | Poor | Adequate | Excellent |
### Quality Requirements
- **Haiku**: Acceptable for well-defined, simple tasks
- **Sonnet**: Good for most development tasks
- **Opus**: Required for critical decisions
## Multi-Model Patterns
### Tiered Processing
```python
# Tier 1: Haiku for classification
classification = await classify_task(task, model="haiku")
# Tier 2: Route to appropriate model
if classification == "simple":
result = await process(task, model="haiku")
elif classification == "complex":
result = await process(task, model="opus")
else:
result = await process(task, model="sonnet")
```
### Multi-Agent with Different Models
```python
# Planner: Opus for strategic decisions
planner_options = ClaudeAgentOptions(
model="claude-opus-4-20250514"
)
# Builder: Sonnet for implementation
builder_options = ClaudeAgentOptions(
model="claude-sonnet-4-20250514"
)
# Reviewer: Opus for critical review
reviewer_options = ClaudeAgentOptions(
model="claude-opus-4-20250514"
)
```
## Output Format
When recommending model selection:
```markdown
## Model Selection
**Task:** [description]
**Recommended Model:** [Haiku/Sonnet/Opus]
### Decision Factors
| Factor | Weight | Assessment |
| --- | --- | --- |
| Complexity | [H/M/L] | [assessment] |
| Cost sensitivity | [H/M/L] | [assessment] |
| Quality requirement | [H/M/L] | [assessment] |
| Latency requirement | [H/M/L] | [assessment] |
### Rationale
[Why this model is appropriate]
### Alternatives
- If cost is concern: [alternative]
- If quality is critical: [alternative]
### Configuration
```
options = ClaudeAgentOptions(
model="[model-id]",
...
)
```text
```
## Selection Checklist
- [ ] Task complexity assessed
- [ ] Cost constraints identified
- [ ] Quality requirements defined
- [ ] Latency requirements considered
- [ ] Model selected with rationale
- [ ] Alternatives documented
## Key Insights
> "Choose wisely: Claude Haiku for simple, fast tasks. Claude Sonnet for balanced performance. Claude Opus for complex reasoning."
Model selection directly impacts:
- User experience (latency)
- Operational cost (tokens)
- Output quality (accuracy)
## Cross-References
- @core-four-custom.md - Model in Core Four
- @custom-agent-design skill - Agent design workflow
- @agent-deployment-forms.md - Deployment considerations
## Version History
- **v1.0.0** (2025-12-26): Initial release
---
## Last Updated
**Date:** 2025-12-26
**Model:** claude-opus-4-5-20251101
No comments yet. Be the first to comment!