Files
2025-11-29 17:52:01 +08:00

122 lines
4.1 KiB
Markdown

---
description: Create a new custom subagent for specialized tasks
argument-hint: [name] [description]
---
# /create-agent
## Purpose
Create a new custom subagent (skill) for specialized tasks with proper configuration and system prompts.
## Contract
**Inputs:**
- `$1` — AGENT_NAME (lowercase, kebab-case, e.g., "code-reviewer")
- `$2` — DESCRIPTION (when this agent should be invoked, e.g., "Expert code reviewer. Use proactively after code changes.")
- `--user` — Create user-level agent in `~/.claude/agents/` (default: project-level in `.claude/agents/`)
- `--tools` — Comma-separated list of tools (e.g., "Read,Grep,Glob,Bash")
- `--model` — Model to use: "sonnet", "opus", "haiku", or "inherit" (default: sonnet)
**Outputs:**
- `STATUS=<CREATED|EXISTS|FAIL> PATH=<path> AGENT=<name>`
## Instructions
1. **Validate inputs:**
- Agent name must be lowercase, kebab-case only
- Description must be non-empty and descriptive
- If `--tools` specified, validate tool names against available tools
- If `--model` specified, validate it's one of: sonnet, opus, haiku, inherit
2. **Determine file location:**
- Default: `.claude/agents/{AGENT_NAME}.md` (project-level)
- With `--user`: `~/.claude/agents/{AGENT_NAME}.md` (user-level)
- Create directory if it doesn't exist
3. **Check for existing agent:**
- If file exists, output `STATUS=EXISTS` and exit
- Recommend using `/agents` command to edit existing agents
4. **Generate agent file content:**
```markdown
---
name: {AGENT_NAME}
description: {DESCRIPTION}
tools: {TOOLS} # Optional - only include if specified
model: {MODEL} # Optional - only include if specified
---
You are a specialized agent for {purpose based on description}.
When invoked:
1. Understand the specific task or problem
2. Analyze the relevant context
3. Execute your specialized function
4. Provide clear, actionable results
Key responsibilities:
- {Responsibility 1 based on description}
- {Responsibility 2 based on description}
- {Responsibility 3 based on description}
Best practices:
- Be focused and efficient
- Provide specific, actionable feedback
- Document your reasoning
- Follow established patterns and conventions
For each task:
- Explain your approach
- Show your work
- Highlight key findings or changes
- Suggest next steps if applicable
```
5. **Write the file:**
- Create the agent file with proper frontmatter
- Ensure proper formatting and indentation
- Set appropriate file permissions
6. **Output result:**
- Print: `STATUS=CREATED PATH={path} AGENT={name}`
- Provide usage example: `Use the {name} agent to...`
## Examples
### Basic project-level agent
```bash
/create-skill code-reviewer "Expert code review specialist. Use proactively after code changes."
# Output: STATUS=CREATED PATH=.claude/agents/code-reviewer.md AGENT=code-reviewer
```
### User-level agent with specific tools
```bash
/create-skill debugger "Debugging specialist for errors and test failures" --user --tools "Read,Edit,Bash,Grep,Glob"
# Output: STATUS=CREATED PATH=~/.claude/agents/debugger.md AGENT=debugger
```
### Agent with specific model
```bash
/create-skill data-scientist "Data analysis expert for SQL queries and insights" --tools "Bash,Read,Write" --model "sonnet"
# Output: STATUS=CREATED PATH=.claude/agents/data-scientist.md AGENT=data-scientist
```
## Constraints
- Idempotent: Won't overwrite existing agents
- No network access required
- Agent names must follow naming conventions
- Tools list must match available Claude Code tools
- Model must be valid alias or 'inherit'
## Best Practices
- Use descriptive, action-oriented descriptions
- Include "use PROACTIVELY" in description for automatic invocation
- Start with Claude-generated agents via `/agents` for complex cases
- Limit tools to only what the agent needs
- Design focused agents with single, clear responsibilities
- Add to version control for team collaboration
## Related Commands
- `/agents` - Interactive interface for managing agents (recommended for editing)
- Use created agents: "Use the {name} agent to..."
- Invoke explicitly: "Ask the {name} agent to investigate..."