Guide for creating effective subagents (custom agents). Use when users want to create a new subagent that can be dispatched via Task tool for autonomous work...
Create effective subagents that handle autonomous tasks via the Task tool.
| Aspect | Subagent | Skill |
|---|---|---|
| Invocation | Explicit via Task tool | Auto-triggered by context |
| Context | Isolated (fresh context window) | Shared with parent |
| Complexity | Single .md file | Folder with resources |
| Use case | Autonomous discrete tasks | Guidance and procedures |
| Nesting | Cannot spawn other subagents | Can reference other skills |
Use subagent when:
Use skill when:
agents/
└── agent-name.md
├── YAML frontmatter (metadata)
└── Markdown body (system prompt)
| Field | Required | Description |
|---|---|---|
name |
Yes | Lowercase, hyphens only (e.g., code-reviewer) |
description |
Yes | When to use - this triggers dispatch decisions |
tools |
No | Comma-separated: Bash, Glob, Grep, Read, Edit, Write |
model |
No | sonnet, opus, haiku, or inherit (default: inherit) |
permissionMode |
No | default, acceptEdits, bypassPermissions, plan |
skills |
No | Comma-separated skills to auto-load |
Read-only: Glob, Grep, Read, WebFetch, WebSearch
Write: Edit, Write, NotebookEdit
Execute: Bash
All: * (or omit field)
| Mode | Description |
|---|---|
default |
Normal permission prompts |
acceptEdits |
Auto-accept file edits |
bypassPermissions |
Skip all permission prompts |
plan |
Plan mode - explore but don't modify |
---
name: agent-name
description: When to use this agent. Be specific about triggers.
tools: Tool1, Tool2
model: sonnet
---
# Agent Name
One-line role description.
## Input Required
What the agent expects to receive.
## Process
Step-by-step what the agent does.
## Output Format
Exact format of the response.
## Rules
- Constraints and boundaries
- What to avoid
The description field triggers when the agent is suggested. Include:
# Good
description: Use after completing a task to review code changes. Provide BASE_SHA, HEAD_SHA, and requirements. Returns issues with file:line references.
# Bad
description: Reviews code.
---
name: summarizer
description: Use to summarize long documents or conversations. Provide the content to summarize.
tools: Read
model: haiku
---
# Summarizer
Summarize the provided content in 3-5 bullet points.
Focus on: key decisions, action items, conclusions.
Skip: greetings, filler, obvious context.
See references/subagent-examples.md for complete examples.
scripts/init_subagent.py <agent-name> --path <output-directory>
Creates template agent file with proper structure.