| name | claude-agent-sdk |
| description | Comprehensive knowledge of Claude Agent SDK architecture, tools, hooks, skills, and production patterns. Auto-activates for agent building, SDK integration, tool design, and MCP server tasks. |
| version | 1.0.0 |
| last_updated | Sat Nov 15 2025 00:00:00 GMT+0000 (Coordinated Universal Time) |
| source_urls | https://docs.claude.com/en/docs/agent-sdk/overview, https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk, https://docs.claude.com/en/docs/agent-sdk/skills, https://github.com/kenneth-liao/claude-agent-sdk-intro |
| activation_keywords | agent sdk, claude agent, sdk tools, agent hooks, mcp server, subagent, agent loop, agent permissions, agent skill |
| auto_activate | true |
| token_budget | 4500 |
Claude Agent SDK - Comprehensive Skill
Overview
The Claude Agent SDK is Anthropic's official framework for building production-ready AI agents with Claude. It provides a high-level abstraction over the Messages API, handling the agent loop, tool orchestration, context management, and extended-thinking patterns automatically.
When to Use the Agent SDK
Use the Agent SDK when:
- Building autonomous agents that need to use tools iteratively
- Implementing agentic workflows with verification and iteration
- Creating subagent hierarchies for complex task decomposition
- Integrating MCP (Model Context Protocol) servers for standardized tools
- Need production patterns like hooks, permissions, and context management
Don't use when:
- Simple single-turn API calls suffice (use Messages API directly)
- No tool use required (standard chat)
- Custom agent loop logic needed (SDK loop is opinionated)
Language Support
- Python:
claude-agentspackage (recommended for most use cases) - TypeScript:
@anthropics/agent-sdkpackage (Node.js environments)
Both implementations share the same core concepts and API patterns.
Quick Start
Installation
Python:
pip install claude-agents
TypeScript:
npm install @anthropics/agent-sdk
Authentication
Set your API key as an environment variable:
export ANTHROPIC_API_KEY="your-api-key-here"
Or pass it explicitly in code:
from claude_agents import Agent
agent = Agent(api_key="your-api-key-here")
Basic Agent Creation
Python Example:
from claude_agents import Agent
# Create agent with default settings
agent = Agent(
model="claude-sonnet-4-5-20250929",
system="You are a helpful assistant focused on accuracy."
)
# Run simple task
result = agent.run("What is 2+2?")
print(result.response)
TypeScript Example:
import { Agent } from '@anthropics/agent-sdk';
const agent = new Agent({
model: "claude-sonnet-4-5-20250929",
system: "You are a helpful assistant focused on accuracy."
});
const result = await agent.run("What is 2+2?");
console.log(result.response);
First Tool Example
Tools extend agent capabilities with external functions:
Python:
from claude_agents import Agent
from claude_agents.tools import Tool
# Define custom tool
def get_weather(location: str) -> dict:
"""Get weather for a location."""
return {"location": location, "temp": 72, "condition": "sunny"}
weather_tool = Tool(
name="get_weather",
description="Get current weather for a location",
input_schema={
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
},
function=get_weather
)
# Agent with custom tool
agent = Agent(
model="claude-sonnet-4-5-20250929",
tools=[weather_tool]
)
result = agent.run("What's the weather in San Francisco?")
print(result.response)
Core Concepts Reference
The Agent Loop
The SDK manages a complete agent loop automatically:
- Input Processing: User message + system prompt + tools
- Model Invocation: Claude generates response (text or tool calls)
- Tool Execution: SDK executes requested tools, handles results
- Iteration: Results fed back to model, continues until completion
- Output: Final response with full conversation history
Key Properties:
- Automatic iteration until task completion or max turns
- Built-in error handling and retry logic
- Context management with automatic compaction options
- Token budget tracking and optimization
Context Management
The SDK manages conversation context automatically:
Context Components:
- System prompt (persistent instructions)
- Conversation history (user messages + assistant responses)
- Tool definitions (available capabilities)
- Tool results (execution outputs)
Subagents for Context Isolation:
# Spawn subagent with isolated context
with agent.subagent(
system="You are a code reviewer focused on security.",
tools=[security_scan_tool]
) as reviewer:
review = reviewer.run("Review this code for vulnerabilities: ...")
# Subagent context doesn't pollute parent
Context Compaction: When approaching token limits, the SDK can automatically summarize earlier conversation turns while preserving critical information.
Tools System
Tools are the agent's interface to external capabilities.
Built-in Tools:
bash: Execute shell commandsread_file: Read file contentswrite_file: Write data to filesedit_file: Modify existing filesglob: File pattern matchinggrep: Content search
Custom Tool Schema:
Tool(
name="tool_name", # Unique identifier
description="What it does", # Clear capability description
input_schema={ # JSON Schema for parameters
"type": "object",
"properties": {...},
"required": [...]
},
function=callable # Python function or async function
)
MCP Integration: The SDK can use Model Context Protocol (MCP) servers as tool providers:
from claude_agents import Agent
from claude_agents.mcp import MCPClient
# Connect to MCP server
mcp_client = MCPClient("npx", ["-y", "@modelcontextprotocol/server-filesystem"])
agent = Agent(
model="claude-sonnet-4-5-20250929",
mcp_clients=[mcp_client]
)
Permissions System
Control which tools agents can access:
Allowed Tools (Whitelist):
agent = Agent(
model="claude-sonnet-4-5-20250929",
tools=[tool1, tool2, tool3, tool4],
allowed_tools=["tool1", "tool2"] # Only these can be used
)
Disallowed Tools (Blacklist):
agent = Agent(
model="claude-sonnet-4-5-20250929",
tools=[tool1, tool2, tool3],
disallowed_tools=["tool3"] # All except tool3
)
Permission Modes:
"strict": Agent MUST get permission before tool use (via hooks)"permissive": Agent can use allowed tools freely (default)
Hooks System
Hooks provide lifecycle event interception for observability, validation, and control.
Available Hooks:
PreToolUseHook: Before tool execution (validation, logging, blocking)PostToolUseHook: After tool execution (logging, result modification)PreSubagentStartHook: Before subagent spawns (context setup)PostSubagentStopHook: After subagent completes (result processing)
Basic Hook Example:
from claude_agents.hooks import PreToolUseHook
class LoggingHook(PreToolUseHook):
async def execute(self, context):
print(f"Tool: {context.tool_name}")
print(f"Args: {context.tool_input}")
return context # Allow execution
agent = Agent(
model="claude-sonnet-4-5-20250929",
hooks=[LoggingHook()]
)
Blocking Tool Use:
class ValidationHook(PreToolUseHook):
async def execute(self, context):
if context.tool_name == "bash" and "rm -rf" in context.tool_input.get("command", ""):
raise PermissionError("Destructive command blocked")
return context
Common Patterns
File Operations
from claude_agents import Agent
agent = Agent(
model="claude-sonnet-4-5-20250929",
allowed_tools=["read_file", "write_file", "glob"]
)
result = agent.run(
"Read all Python files in ./src and create a summary in summary.md"
)
Code Execution
agent = Agent(
model="claude-sonnet-4-5-20250929",
allowed_tools=["bash"]
)
result = agent.run(
"Run the test suite and analyze any failures"
)
Agentic Search (Gather-Act Pattern)
# Agent automatically gathers information iteratively
search_agent = Agent(
model="claude-sonnet-4-5-20250929",
tools=[web_search_tool, read_url_tool]
)
result = search_agent.run(
"Research the latest developments in quantum computing and summarize key papers"
)
Subagent Delegation
main_agent = Agent(model="claude-sonnet-4-5-20250929")
# Delegate specialized task to subagent
with main_agent.subagent(
system="You are an expert data analyzer.",
tools=[analyze_csv_tool, plot_tool]
) as analyzer:
analysis = analyzer.run("Analyze sales_data.csv and create visualizations")
# Results available to main agent
main_agent.run(f"Based on this analysis: {analysis.response}, what actions should we take?")
Error Handling
from claude_agents import Agent, AgentError
agent = Agent(model="claude-sonnet-4-5-20250929")
try:
result = agent.run("Your task here", max_turns=10)
except AgentError as e:
print(f"Agent failed: {e}")
print(f"Turns completed: {e.turns_completed}")
print(f"Last message: {e.last_message}")
Verification Pattern
# Agent can self-verify results
agent = Agent(
model="claude-sonnet-4-5-20250929",
tools=[calculator_tool, verify_tool]
)
result = agent.run(
"Calculate the compound interest for $10000 at 5% for 10 years. "
"Verify your calculation by computing it a second way."
)
Navigation Guide
When to Read Supporting Files
reference.md - Read when you need:
- Deep understanding of agent loop internals
- Complete API reference for all SDK features
- Detailed tool schema specifications
- Permission and security configuration options
- Comprehensive hooks reference with all event types
- Skills system implementation details
examples.md - Read when you need:
- Working code examples for specific patterns
- Tool implementation templates
- Hook implementation examples
- Advanced patterns (subagents, verification, error recovery)
- Integration examples with existing systems
patterns.md - Read when you need:
- Production-ready architectural patterns
- Agent loop optimization strategies (Gather, Act, Verify, Iterate)
- Context management best practices
- Tool design principles
- Security patterns and anti-patterns
- Performance optimization techniques
drift-detection.md - Read when you need:
- Understanding how this skill stays current
- Implementing drift detection for other skills
- Update workflow and validation processes
- Self-validation mechanisms
Integration with Amplihack
The Agent SDK skill integrates with the Amplihack framework:
Creating Amplihack Agents with SDK:
# In .claude/agents/amplihack/specialized/my_agent.md
# Use Agent SDK patterns for tool-using agents
from claude_agents import Agent
from claude_agents.tools import Tool
def create_specialized_agent():
return Agent(
model="claude-sonnet-4-5-20250929",
system="<agent_role_from_md>",
tools=[...], # Custom tools for this agent
hooks=[...] # Logging, validation hooks
)
Using MCP Servers in Amplihack:
# Integrate MCP tools into Amplihack workflow
from claude_agents.mcp import MCPClient
mcp_client = MCPClient("npx", ["-y", "@modelcontextprotocol/server-github"])
agent = Agent(
model="claude-sonnet-4-5-20250929",
mcp_clients=[mcp_client]
)
# Agent can now use GitHub MCP tools
result = agent.run("Create a GitHub issue for the bug we just found")
Hooks for Amplihack Observability:
# Log all agent actions to Amplihack runtime logs
class AmplihackLoggingHook(PreToolUseHook):
async def execute(self, context):
log_to_amplihack_runtime(
session_id=get_current_session(),
tool=context.tool_name,
input=context.tool_input
)
return context
Quick Reference
Essential Commands
# Basic agent
agent = Agent(model="claude-sonnet-4-5-20250929")
result = agent.run("task")
# With tools
agent = Agent(model="...", tools=[tool1, tool2])
# With permissions
agent = Agent(model="...", allowed_tools=["tool1"])
# With hooks
agent = Agent(model="...", hooks=[LogHook()])
# Subagent
with agent.subagent(system="...") as sub:
result = sub.run("subtask")
# MCP integration
from claude_agents.mcp import MCPClient
mcp = MCPClient("npx", ["-y", "mcp-server-name"])
agent = Agent(model="...", mcp_clients=[mcp])
Common Tool Patterns
# File operations
tools=["read_file", "write_file", "glob"]
# Code execution
tools=["bash"]
# All built-in
tools=["bash", "read_file", "write_file", "edit_file", "glob", "grep"]
Token Budget Recommendations
- Simple tasks: 4K-8K tokens
- Complex tasks: 16K-32K tokens
- Research/analysis: 64K-128K tokens
- Maximum context: 200K tokens (model dependent)
Next Steps
- Start Simple: Create a basic agent with built-in tools
- Add Custom Tools: Implement tools for your specific domain
- Add Hooks: Implement logging and validation
- Use Subagents: Delegate specialized tasks
- Integrate MCP: Use standardized tool servers
- Optimize: Tune context, permissions, and verification patterns
For complete API details, see reference.md.
For working code, see examples.md.
For production patterns, see patterns.md.