Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Design custom agents from scratch using Claude Agent SDK patterns. Use when building domain-specific agents, designing agents with full SDK control, or creating specialized agents with custom tools and prompts.
.claude/skills/majiayu000-custom-agent-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 48% | 0% |
Design domain-specific agents using Claude Agent SDK patterns.
Guide the design of custom agents that solve domain-specific problems with full SDK control over Context, Model, Prompt, and Tools.
Answer these questions:
Output: Purpose statement (2-3 sentences)
Choose based on task complexity:
| Task Type | Model | Why | | --- | --- | --- | | Simple transformations | Haiku | Fast, cheap | | Balanced tasks | Sonnet | Good trade-off | | Complex reasoning | Opus | Highest quality |
Decision factors:
Choose architecture:
Override (system_prompt=...)
Append (append_system_prompt=...)
System Prompt Template:
markdown# [Agent Name] ## Purpose [Identity and role definition - 2-3 sentences] ## Instructions [Core behaviors - bullet list] - Behavior 1 - Behavior 2 ## Constraints [What the agent must NOT do] ## Examples (if needed) [Input/Output pairs]
Questions to answer:
Tool configuration:
python# Whitelist approach allowed_tools=["Read", "Write", "Bash"] # Blacklist approach disallowed_tools=["WebFetch", "WebSearch", "TodoWrite"] # No default tools disallowed_tools=["*"] # Custom tools mcp_servers={"domain": custom_mcp_server} allowed_tools=["mcp__domain__tool1", "mcp__domain__tool2"]
If security/governance required:
pythonhooks = { "PreToolUse": [ HookMatcher(matcher="Read", hooks=[block_sensitive_files]), HookMatcher(hooks=[log_all_tool_usage]), ] }
| Form | Use When | | --- | --- | | Script | One-off automation, ADWs | | Terminal REPL | Interactive tools | | Backend API | UI integration | | Data Stream | Real-time processing | | Multi-Agent | Complex workflows |
Assemble the ClaudeAgentOptions:
pythonoptions = ClaudeAgentOptions( # Context system_prompt=load_system_prompt("agent_system.md"), # Model model="opus", # Tools allowed_tools=["Read", "Write", "custom_tool"], disallowed_tools=["WebFetch", "WebSearch"], # Custom Tools (if needed) mcp_servers={"domain": domain_mcp_server}, # Governance (if needed) hooks=security_hooks, # Session (if needed) resume=session_id, )
When designing a custom agent, provide:
markdown## Custom Agent Design **Name:** [agent-name] **Purpose:** [1-2 sentences] **Domain:** [area of expertise] ### Configuration **Model:** [haiku/sonnet/opus] - [reason] **System Prompt Architecture:** - Type: [Override/Append] - Reason: [why this choice] **Tool Access:** - Allowed: [list] - Disallowed: [list] - Custom: [list if any] **Governance:** - Hooks: [list if any] - Security: [considerations] **Deployment:** - Form: [script/repl/api/stream/multi-agent] - Reason: [why this form] ### System Prompt [Full system prompt content] ### Implementation Notes [Any special considerations]
| Avoid | Why | Instead | | --- | --- | --- | | Competing with Claude Code | Can't beat general agent | Specialize instead | | Generic system prompts | No domain advantage | Domain-specific | | Too many tools | Context overhead | Minimal tool set | | Missing governance | Security risk | Add hooks | | Override when append works | Loses Claude Code benefits | Use append |
Date: 2025-12-26 Model: claude-opus-4-5-20251101
Other measured skills in the registry, with their headline benchmark lift.