Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expert guidance for creating, building, and using Claude Code subagents and the Task tool. Use when working with subagents, setting up agent configurations, understanding how agents work, or using the Task tool to launch specialized agents.
.claude/skills/majiayu000-create-subagents/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 80% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 95% | 0% |
<objective> Subagents are specialized Claude instances that run in isolated contexts with focused roles and limited tool access. This skill teaches you how to create effective subagents, write strong system prompts, configure tool access, and orchestrate multi-agent workflows using the Task tool.
Subagents enable delegation of complex tasks to specialized agents that operate autonomously without user interaction, returning their final output to the main conversation. </objective>
<quick_start> <workflow>
/agents command.claude/agents/) or user-level (~/.claude/agents/)sonnet, opus, haiku, or inherit)</workflow>
<example>
markdown--- name: code-reviewer description: Expert code reviewer. Use proactively after code changes to review for quality, security, and best practices. tools: Read, Grep, Glob, Bash model: sonnet --- <role> You are a senior code reviewer focused on quality, security, and best practices. </role> <focus_areas> - Code quality and maintainability - Security vulnerabilities - Performance issues - Best practices adherence </focus_areas> <output_format> Provide specific, actionable feedback with file:line references. </output_format>
</example> </quick_start>
<file_structure> | Type | Location | Scope | Priority | |------|----------|-------|----------| | Project | .claude/agents/ | Current project only | Highest | | User | ~/.claude/agents/ | All projects | Lower | | Plugin | Plugin's agents/ dir | All projects | Lowest |
Project-level subagents override user-level when names conflict. </file_structure>
<configuration> <field name="name">
</field>
<field name="description">
</field>
<field name="tools">
Read, Write, Edit, Bash, Grep/agents interface to see all available tools</field>
<field name="model">
sonnet, opus, haiku, or inheritinherit: uses same model as main conversation</field> </configuration>
<execution_model> <critical_constraint> Subagents are black boxes that cannot interact with users.
Subagents run in isolated contexts and return their final output to the main conversation. They:
The main conversation sees only the subagent's final report/output. </critical_constraint>
<workflow_design> Designing workflows with subagents:
Use main chat for:
Use subagents for:
Example workflow pattern:
Main Chat: Ask user for requirements (AskUserQuestion)
↓
Subagent: Research API and create documentation (no user interaction)
↓
Main Chat: Review research with user, confirm approach
↓
Subagent: Generate code based on confirmed plan
↓
Main Chat: Present results, handle testing/deployment
</workflow_design> </execution_model>
<system_prompt_guidelines> <principle name="be_specific"> Clearly define the subagent's role, capabilities, and constraints. </principle>
<principle name="use_pure_xml_structure"> Structure the system prompt with pure XML tags. Remove ALL markdown headings from the body.
markdown--- name: security-reviewer description: Reviews code for security vulnerabilities tools: Read, Grep, Glob, Bash model: sonnet --- <role> You are a senior code reviewer specializing in security. </role> <focus_areas> - SQL injection vulnerabilities - XSS attack vectors - Authentication/authorization issues - Sensitive data exposure </focus_areas> <workflow> 1. Read the modified files 2. Identify security risks 3. Provide specific remediation steps 4. Rate severity (Critical/High/Medium/Low) </workflow>
</principle>
<principle name="task_specific"> Tailor instructions to the specific task domain. Don't create generic "helper" subagents.
❌ Bad: "You are a helpful assistant that helps with code" ✅ Good: "You are a React component refactoring specialist. Analyze components for hooks best practices, performance anti-patterns, and accessibility issues." </principle> </system_prompt_guidelines>
<subagent_xml_structure> Subagent.md files are system prompts consumed only by Claude. Like skills and slash commands, they should use pure XML structure for optimal parsing and token efficiency.
<recommended_tags> Common tags for subagent structure:
<role> - Who the subagent is and what it does<constraints> - Hard rules (NEVER/MUST/ALWAYS)<focus_areas> - What to prioritize<workflow> - Step-by-step process<output_format> - How to structure deliverables<success_criteria> - Completion criteria<validation> - How to verify work</recommended_tags>
<intelligence_rules> Simple subagents (single focused task):
Medium subagents (multi-step process):
Complex subagents (research + generation + validation):
</intelligence_rules>
<critical_rule> Remove ALL markdown headings (##, ###) from subagent body. Use semantic XML tags instead.
Keep markdown formatting WITHIN content (bold, italic, lists, code blocks, links).
For XML structure principles and token efficiency details, see @skills/create-agent-skills/references/use-xml-tags.md - the same principles apply to subagents. </critical_rule> </subagent_xml_structure>
<invocation> <automatic> Claude automatically selects subagents based on the description field when it matches the current task. </automatic>
<explicit> You can explicitly invoke a subagent:
> Use the code-reviewer subagent to check my recent changes> Have the test-writer subagent create tests for the new API endpoints</explicit> </invocation>
<background_execution> Subagents can run in the background using the run_in_background parameter, allowing parallel execution while the main conversation continues.
<how_it_works> Starting a background subagent: The Task tool accepts run_in_background: true to launch agents asynchronously:
Task tool call:
- description: "Analyze security vulnerabilities"
- prompt: "Review all authentication code for security issues..."
- subagent_type: "security-reviewer"
- run_in_background: trueThe agent starts immediately and returns an agent_id for tracking. </how_it_works>
<retrieving_results> Getting results with TaskOutput: Use the TaskOutput tool to retrieve results from background agents:
TaskOutput tool call:
- task_id: "agent-12345" # The agent_id from the Task call
- block: true # Wait for completion (default)
- timeout: 30000 # Max wait time in msParameters: | Parameter | Default | Description | |-----------|---------|-------------| | task_id | Required | The agent ID returned from Task tool | | block | true | Wait for completion or check current status | | timeout | 30000 | Max wait time in milliseconds (up to 600000) |
Non-blocking check: Set block: false to check status without waiting:
TaskOutput tool call:
- task_id: "agent-12345"
- block: falseReturns current status: running, completed, or the final result. </retrieving_results>
<parallel_agents> Launching multiple agents in parallel:
To maximize performance, launch multiple independent agents simultaneously:
Single message with multiple Task tool calls:
Task 1:
- description: "Review code quality"
- prompt: "Check code quality..."
- subagent_type: "code-reviewer"
- run_in_background: true
Task 2:
- description: "Run security scan"
- prompt: "Scan for vulnerabilities..."
- subagent_type: "security-scanner"
- run_in_background: true
Task 3:
- description: "Check test coverage"
- prompt: "Analyze test coverage..."
- subagent_type: "test-analyzer"
- run_in_background: trueThen retrieve all results:
TaskOutput calls for each agent_id</parallel_agents>
<when_to_use_background> Use background agents for:
Don't use background for:
Pattern: Parallel Analysis Pipeline
1. Launch multiple analysis agents in background
2. Continue with other work or wait
3. Collect all results
4. Synthesize findings in main conversation</when_to_use_background>
<resuming_agents> Resuming agents: Agents can be resumed using the resume parameter with their agent ID:
Task tool call:
- description: "Continue security review"
- prompt: "Please continue with the remaining files..."
- subagent_type: "security-reviewer"
- resume: "agent-12345" # Previous agent IDThe agent continues with its full previous context preserved. </resuming_agents> </background_execution>
<management> <using_agents_command> Run /agents for an interactive interface to:
</using_agents_command>
<manual_editing> You can also edit subagent files directly:
.claude/agents/subagent-name.md~/.claude/agents/subagent-name.md</manual_editing> </management>
<reference> Core references:
Subagent usage and configuration: references/subagents.md
Writing effective prompts: references/writing-subagent-prompts.md
Advanced topics:
Evaluation and testing: references/evaluation-and-testing.md
Error handling and recovery: references/error-handling-and-recovery.md
Context management: references/context-management.md
Orchestration patterns: references/orchestration-patterns.md
Debugging and troubleshooting: references/debugging-agents.md
</reference>
<success_criteria> A well-configured subagent has:
</success_criteria>
Other measured skills in the registry, with their headline benchmark lift.