# Sub Agents

> How to create and use specialized subagents in Claude Code for task delegation. Use when user asks about creating specialized agents, delegating tasks, agent configuration, or subagent features.

- Skill: `majiayu000/sub-agents-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/sub-agents-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/sub-agents-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/sub-agents-2

---


# Subagents

## Overview
Subagents are specialized AI assistants that Claude Code can delegate tasks to. Each operates with its own context window, custom system prompt, and configurable tool access.

## Key Features

**Context Management**: Each subagent operates in its own context, preventing pollution of the main conversation

**Specialization**: Task-specific configurations enable higher success rates on designated work

**Reusability**: Once created, subagents work across different projects and teams

**Flexible Permissions**: Individual tool access control per subagent

## Quick Start

1. Run `/agents` command
2. Select "Create New Agent"
3. Choose project-level or user-level scope
4. Define purpose, select tools, customize system prompt
5. Save and invoke automatically or explicitly

## Configuration

### File Locations
- **Project subagents**: `.claude/agents/`
- **User subagents**: `~/.claude/agents/`
- Project-level takes precedence over user-level

### File Format
Markdown with YAML frontmatter containing:
- `name`: Unique identifier
- `description`: Purpose and invocation guidance
- `tools`: Optional comma-separated list
- `model`: Optional model alias (sonnet/opus/haiku) or 'inherit'

### Example Structure
```yaml
---
name: code-reviewer
description: Expert code review specialist. Use proactively after code changes.
tools: Read, Grep, Glob, Bash
model: inherit
---

Your system prompt explaining the subagent's role and approach...
```

## Available Tools

When configuring subagents, you can grant access to these tools via the `tools` field in frontmatter:

### Tools That Require Permission

**Bash** - Executes shell commands in your environment
- Use for: Running tests, git commands, build scripts
- Example: `Bash`

**Edit** - Makes targeted edits to specific files
- Use for: Code modifications, refactoring
- Example: `Edit`

**NotebookEdit** - Modifies Jupyter notebook cells
- Use for: Data science workflows, notebook updates
- Example: `NotebookEdit`

**SlashCommand** - Runs a custom slash command
- Use for: Invoking user-defined commands
- Example: `SlashCommand`

**WebFetch** - Fetches content from a specified URL
- Use for: Documentation lookup, API calls
- Example: `WebFetch`

**WebSearch** - Performs web searches with domain filtering
- Use for: Finding current information, research
- Example: `WebSearch`

**Write** - Creates or overwrites files
- Use for: Generating new files, reports
- Example: `Write`

### Tools That Don't Require Permission

**Glob** - Finds files based on pattern matching
- Use for: Finding files by name pattern
- Example: `Glob`

**Grep** - Searches for patterns in file contents
- Use for: Code search, pattern matching
- Example: `Grep`

**NotebookRead** - Reads and displays Jupyter notebook contents
- Use for: Analyzing notebooks
- Example: `NotebookRead`

**Read** - Reads the contents of files
- Use for: Code review, analysis
- Example: `Read`

**Task** - Runs a sub-agent to handle complex, multi-step tasks
- Use for: Delegating to other specialized agents
- Example: `Task`

**TodoWrite** - Creates and manages structured task lists
- Use for: Planning and tracking work
- Example: `TodoWrite`

### Configuring Tool Access

**Grant all tools:**
```yaml
tools: Bash, Edit, Read, Write, Glob, Grep, WebFetch, WebSearch
```

**Grant minimal tools (read-only):**
```yaml
tools: Read, Glob, Grep
```

**Grant specific tools for specialized tasks:**
```yaml
tools: Read, Bash, TodoWrite  # For a test runner agent
```

**Omit tools field to inherit from parent:**
```yaml
# No tools field - uses same tools as main Claude instance
```

## Usage Patterns

**Automatic Delegation**: Claude recognizes matching tasks and invokes appropriate subagents

**Explicit Invocation**: Request specific subagents via natural language commands like "Use the debugger subagent to investigate this error"

## Example Subagents

### Code Reviewer
Reviews code for quality, security, and maintainability. Provides feedback categorized by priority (critical/warnings/suggestions).

### Debugger
Specializes in root cause analysis. Captures error messages, isolates failures, and implements minimal fixes.

### Data Scientist
Handles SQL queries and data analysis. Writes optimized queries and provides data-driven recommendations.

## Best Practices

- Generate initial subagents with Claude, then customize
- Design focused subagents with single responsibilities
- Write detailed system prompts with specific instructions
- Limit tool access to necessary functions only
- Version control project-level subagents

## Advanced Usage

**Chaining**: Combine multiple subagents for complex workflows

**Dynamic Selection**: Claude intelligently chooses subagents based on task context and description fields

**Performance**: Subagents preserve main context but may add latency during initial context gathering

## CLI Configuration

Define subagents dynamically with `--agents` flag accepting JSON objects for session-specific or automation-based configurations.

