manage-agents
skillCreates, modifies, and manages Claude Code subagents by writing agent files with YAML frontmatter, system prompts, and tool configurations. Use when you need to "create an agent", "modify an agent", "set up a specialist", "I need an agent for [task]", "agent to handle [domain]", or "configure agent tools". Covers agent file format, YAML frontmatter, system prompts, tool restrictions, MCP integration, model selection, and testing.
apm::install
apm install @dawiddutoit/manage-agentsapm::allowed-tools
ReadWriteGrepGlobBash
apm::skill.md
---
name: manage-agents
description: |
Creates, modifies, and manages Claude Code subagents by writing agent files with YAML frontmatter,
system prompts, and tool configurations. Use when you need to "create an agent", "modify an agent",
"set up a specialist", "I need an agent for [task]", "agent to handle [domain]", or "configure
agent tools". Covers agent file format, YAML frontmatter, system prompts, tool restrictions,
MCP integration, model selection, and testing.
allowed-tools:
- Read
- Write
- Grep
- Glob
- Bash
---
# Manage Agents
Create and manage specialized Claude Code subagents with custom capabilities, tool access, and expertise domains.
**Use this skill when you need to:**
- Create new subagents for specialized tasks
- Modify existing agent configurations
- Set up domain experts (Python, Neo4j, Testing, etc.)
- Configure tool access and MCP server permissions
- Understand agent structure and best practices
## Quick Start
To create a new agent:
1. **Understand the Need**: What specialized capability or domain expertise is needed?
2. **Choose Location**: Project-level (.claude/agents/) or user-level (~/.claude/agents/)
3. **Define Configuration**: Name, description, model, tools, and permissions
4. **Write System Prompt**: Clear instructions for the agent's specialized role
5. **Test & Validate**: Invoke with @agent-name and verify behavior
## Table of Contents
### Core Sections
- [Instructions](#instructions)
- [Step 1: Analyze Requirements](#step-1-analyze-requirements) - Determine expertise domain, tool needs, and location
- [Step 2: Create Agent File](#step-2-create-agent-file) - Choose project vs user location
- [Step 3: Write Agent Configuration](#step-3-write-agent-configuration) - YAML frontmatter template
- [Step 4: Configure Tool Access](#step-4-configure-tool-access) - Explicit tools, all tools, or no tools
- [Step 5: Configure MCP Access](#step-5-configure-mcp-access) - Specific servers, all servers, or all resources
- [Step 6: Select Model](#step-6-select-model) - Sonnet, Opus, or Haiku based on complexity
- [Step 7: Write System Prompt](#step-7-write-system-prompt) - Clear, actionable, quality-focused instructions
- [Step 8: Test the Agent](#step-8-test-the-agent) - Verify behavior and tool access
- [Step 9: Document Integration](#step-9-document-integration) - Update dispatch.md and CLAUDE.md
- [Common Patterns](#common-patterns)
- [Pattern 1: Domain Expert](#pattern-1-domain-expert) - Read-only analysis and recommendations
- [Pattern 2: Code Generator](#pattern-2-code-generator) - Write access with quality gates
- [Pattern 3: Orchestrator](#pattern-3-orchestrator) - Planning agent that delegates
- [Pattern 4: Quality Guardian](#pattern-4-quality-guardian) - Read-only validation
- [Pattern 5: Integration Specialist](#pattern-5-integration-specialist) - MCP-focused agent
### Supporting Resources
- [Configuration Reference](./references/reference.md) - Complete field documentation
### Utility Scripts
- [Agent Detection](./scripts/agent_detector_example.py) - Detect @agent-name patterns in prompts
- [Agent Memory Creation](./scripts/create_agent_memories_simple.py) - Create MCP memory entries for agents
- [Agent Validation](./scripts/validate_agent.py) - Validate agent file format and configuration
### Advanced Topics
- [Troubleshooting](#troubleshooting)
- [Agent not appearing in autocomplete](#agent-not-appearing-in-autocomplete)
- [Tool access denied](#tool-access-denied)
- [Agent behavior incorrect](#agent-behavior-incorrect)
- [Integration issues](#integration-issues)
- [Validation](#validation) - Validate agent files with script
- [Quality Checklist](#quality-checklist) - Pre-finalization checklist
- [Advanced: Agent Chaining](#advanced-agent-chaining) - Agent-to-agent delegation
- [Advanced: Dynamic Selection](#advanced-dynamic-selection) - Autonomous agent selection
- [Integration with This Project](#integration-with-this-project) - Project-specific guidance
## Instructions
### Step 1: Analyze Requirements
Before creating an agent, determine:
- **Expertise Domain**: What specialized knowledge does this agent need?
- **Tool Requirements**: Which tools should be allowed/restricted?
- **Context Needs**: Does it need access to project files, memory, or MCP servers?
- **Location**: Project-specific (.claude/agents/) or user-wide (~/.claude/agents/)?
- **Model Selection**: Does this need Sonnet, Opus, or Haiku?
### Step 2: Create Agent File
**Project Agent** (checked into git):
```bash
# Location: .claude/agents/my-specialist.md
```
**User Agent** (personal, not in git):
```bash
# Location: ~/.claude/agents/my-specialist.md
```
**Priority**: Project agents override user agents with the same name.
### Step 3: Write Agent Configuration
Use this template:
```yaml
---
name: agent-name
description: Clear description of what this agent does and when to use it
model: claude-sonnet-4
tools:
- Read
- Write
- Grep
- Glob
- Bash
mcp_servers:
- server-name
allow_all_tools: false
allow_all_mcp_servers: false
allow_mcp_resources_from_all_servers: false
---
# Agent Name - Specialized Role
You are a specialized agent focused on [domain/task]. Your expertise includes:
- [Key capability 1]
- [Key capability 2]
- [Key capability 3]
## Your Responsibilities
1. **[Primary Responsibility]**: Clear description
2. **[Secondary Responsibility]**: Clear description
3. **[Quality Standards]**: What standards you uphold
## Tools Available
You have access to:
- [Tool 1]: [How to use it]
- [Tool 2]: [How to use it]
- [MCP Server]: [What it provides]
## Workflow
When invoked, follow these steps:
1. [Step 1]
2. [Step 2]
3. [Step 3]
## Quality Gates
Before completing work:
- [ ] [Quality check 1]
- [ ] [Quality check 2]
- [ ] [Quality check 3]
## Integration with Skills
You can leverage these skills:
- [Skill 1]: [When to use]
- [Skill 2]: [When to use]
## Best Practices
- [Practice 1]
- [Practice 2]
- [Practice 3]
## Examples
[Provide concrete examples of your work]
```
### Step 4: Configure Tool Access
**Option 1: Explicit Tool List** (Recommended)
```yaml
tools:
- Read
- Write
- Grep
- Glob
allow_all_tools: false
```
**Option 2: Allow All Tools**
```yaml
allow_all_tools: true
```
**Option 3: No Tools** (Analysis/planning only)
```yaml
tools: []
allow_all_tools: false
```
### Step 5: Configure MCP Access
**Option 1: Specific MCP Servers** (Recommended)
```yaml
mcp_servers:
- project-watch-mcp
- memory
allow_all_mcp_servers: false
```
**Option 2: All MCP Servers**
```yaml
allow_all_mcp_servers: true
```
**Option 3: All MCP Resources** (Use sparingly)
```yaml
allow_mcp_resources_from_all_servers: true
```
### Step 6: Select Model
Choose based on task complexity:
- **claude-sonnet-4**: Default, balanced performance (most agents)
- **claude-opus-4**: Complex reasoning, critical decisions
- **claude-haiku-3-5**: Fast, simple tasks, high volume
**Default if not specified**: claude-sonnet-4
### Step 7: Write System Prompt
The content after YAML frontmatter is the system prompt. Make it:
1. **Specific**: Define clear responsibilities and scope
2. **Actionable**: Include step-by-step workflows
3. **Quality-Focused**: Define standards and validation criteria
4. **Integrated**: Reference skills, tools, and project patterns
5. **Example-Rich**: Show concrete examples of expected work
### Step 8: Test the Agent
**Interactive Testing:**
Invoke the agent in Claude:
```bash
@agent-name please [task description]
```
**Programmatic Testing:**
Test agents from command line using CLI tools:
```bash
# Quick test with claude_ask.py
python3 .claude/tools/agents/claude_ask.py agent-name "test question"
# Quiet mode (just the answer)
python3 .claude/tools/agents/claude_ask.py -q agent-name "test question"
# JSON output for validation
python3 .claude/tools/agents/claude_ask.py --json agent-name "test question"
# With timeout for complex tasks
python3 .claude/tools/agents/claude_ask.py agent-name "complex task" --timeout 120
```
**For complete documentation on CLI testing tools, see:**
- CLI testing tools documentation available in project's .claude/tools/agents/ directory
Verify:
- [ ] Agent appears in autocomplete
- [ ] Agent has correct tool access
- [ ] Agent follows its system prompt
- [ ] Agent produces expected quality
- [ ] Agent integrates with skills correctly
- [ ] Agent responds correctly via CLI tools
### Step 9: Document Integration
If this is a project agent, document in relevant files:
- Add to agent dispatch documentation if available
- Reference in project CLAUDE.md if core to workflow
- Update skills that should integrate with this agent
## Configuration Reference
For complete configuration field documentation, see [references/reference.md](./references/reference.md).
## Examples
For practical agent examples and patterns, see the utility scripts section and references/reference.md for detailed configuration examples.
### Working with Agent Detection
The [scripts/agent_detector_example.py](scripts/agent_detector_example.py) script demonstrates patterns for detecting agents in hooks or tools:
**The example demonstrates:**
- Using `detect_agent()` to identify agent mentions in user prompts
- Getting available agents and patterns with `get_available_agents()`
- Pattern matching for agent invocation (e.g., `@unit-tester`)
- Integration points for hooks that need agent awareness
**Run the example:**
```bash
cd /Users/dawiddutoit/projects/play/temet-run/.claude
./.venv/bin/python3 skills/manage-agents/scripts/agent_detector_example.py
```
The script uses the shared `.claude/` environment pattern:
```python
# Setup: Add .claude to path for skill_utils
sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent))
from skill_utils import ensure_path_setup, get_project_root
ensure_path_setup()
# Now import from the shared environment
import yaml
```
This pattern allows the script to access dependencies installed in `.claude/pyproject.toml` without duplicating virtual environments.
### Creating Agent Core Memories
The [scripts/create_agent_memories_simple.py](scripts/create_agent_memories_simple.py) script demonstrates programmatic memory creation:
**The example demonstrates:**
- Extracting agent names and descriptions from agent files
- Connecting to the memory MCP server using FastMCP client
- Creating core memory entries for all agents (`agent-{name}-core`)
- Batch processing of agent directory
**Run the example:**
```bash
cd /Users/dawiddutoit/projects/play/temet-run/.claude
uv sync --extras mcp # Install MCP dependencies (if not already done)
./.venv/bin/python3 skills/manage-agents/scripts/create_agent_memories_simple.py
```
**Prerequisites:**
- Neo4j memory server running
- MCP dependencies installed via `uv sync --extras mcp`
- Environment variables set: NEO4J_URL, NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_DATABASE
The script also uses the shared `.claude/` environment pattern, allowing it to access `yaml` and `fastmcp` dependencies without duplicating virtual environments.
## Common Patterns
### Pattern 1: Domain Expert
Specialized knowledge agent with read-only access for analysis and recommendations.
### Pattern 2: Code Generator
Write access with quality gates, focused on specific code patterns.
### Pattern 3: Orchestrator
High-level planning agent that delegates to other agents.
### Pattern 4: Quality Guardian
Read-only validation agent that checks against standards.
### Pattern 5: Integration Specialist
MCP-focused agent with access to specific external tools.
## Troubleshooting
**Agent not appearing in autocomplete:**
- Check file is in .claude/agents/ or ~/.claude/agents/
- Verify YAML frontmatter is valid
- Ensure name field matches filename (without .md)
**Tool access denied:**
- Check tools list in frontmatter
- Verify allow_all_tools setting
- Ensure MCP servers are configured correctly
**Agent behavior incorrect:**
- Review system prompt clarity
- Check for conflicting instructions
- Verify model selection is appropriate
**Integration issues:**
- Ensure skills referenced are available
- Check MCP server connections
- Verify project context is accessible
## Validation
Use the [scripts/validate_agent.py](scripts/validate_agent.py) script to check agent files:
```bash
cd /Users/dawiddutoit/projects/play/temet-run/.claude
./.venv/bin/python3 skills/manage-agents/scripts/validate_agent.py agents/my-agent.md
```
The validation script checks:
- Valid YAML frontmatter syntax
- Required fields (name, description)
- Valid tool names and model selection
- Name matches filename
- Description quality (includes trigger terms)
- Non-empty system prompt
## Quality Checklist
Before finalizing an agent:
- [ ] YAML frontmatter is valid and complete
- [ ] Description is clear and includes trigger terms
- [ ] Tool access is appropriate (least privilege)
- [ ] System prompt is specific and actionable
- [ ] Quality gates are defined
- [ ] Examples are provided
- [ ] Integration points are documented
- [ ] Agent tested with sample invocation
- [ ] Documentation updated (if project agent)
## Advanced: Agent Chaining
Agents can invoke other agents:
```markdown
For implementation, delegate to @implementer:
@implementer please create the service class with proper dependency injection
```
**Best Practice**: Use chaining for clear separation of concerns (planning → implementation → testing).
## Advanced: Dynamic Selection
Let Claude choose the right agent:
```markdown
"I need help with Neo4j queries"
→ Claude autonomously selects @neo4j-expert based on description
```
**Requirement**: Agent descriptions must include trigger terms and use cases.
## Integration with This Project
When creating agents for project-watch-mcp:
1. **Align with Architecture**: Reference Clean Architecture layers in system prompt
2. **Follow Quality Standards**: Integrate quality gates (pyright, vulture, pytest, ruff)
3. **Use Project Patterns**: Reference ServiceResult, fail-fast, configuration injection
4. **Leverage Project Tools**: Access to MCP tools, log_analyzer.py, check_all.sh
5. **Reference Documentation**: Link to ARCHITECTURE.md, ADRs, CLAUDE.md
## Resources
- **Detailed Reference**: [references/reference.md](./references/reference.md)
- **Utility Scripts**:
- [Agent Detector](./scripts/agent_detector_example.py) - Detect agent mentions in prompts
- [Memory Creation](./scripts/create_agent_memories_simple.py) - Create agent memory entries
- [Validation](./scripts/validate_agent.py) - Validate agent files