claude-agent-sdk
<essential_principles>
Claude Agent SDK Overview
The Claude Agent SDK gives agents the same tools that power Claude Code: file operations, bash commands, web search, and more. Build autonomous agents that read files, run commands, search the web, edit code, and verify their work.
Two Ways to Query
| Function | Session | Best For |
|---|---|---|
query() |
New each time | One-off tasks, automation |
ClaudeSDKClient |
Continuous | Conversations, follow-ups, hooks |
Key Difference: query() is simpler but doesn't support hooks, interrupts, or
custom tools. Use ClaudeSDKClient for advanced features.
Agent Loop Pattern
Agents operate in a feedback loop:
gather context → take action → verify work → repeat
Installation
Python:
uv add claude-agent-sdk
TypeScript:
npm install @anthropic-ai/claude-agent-sdk
Requirements:
- Claude Code CLI installed (
npm install -g @anthropic-ai/claude-code) ANTHROPIC_API_KEYenvironment variable set
Quick Start
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
async for message in query(
prompt="Find and fix bugs in auth.py",
options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"])
):
print(message)
asyncio.run(main())
</essential_principles>
What would you like to do?
- Create a new agent - Build an agent from scratch
- Add custom tools - Create tools with @tool decorator or MCP servers
- Add hooks - Intercept tool calls for logging, validation, or modification
- Configure permissions - Control what tools can do
- Create subagents - Define specialized agents for parallel work
- Control browsers - Chrome extension, dev-browser skill
- Get API reference - Python or TypeScript SDK details
Wait for response before proceeding.
| Response | Load |
|---|---|
| 1, "create", "new", "build" | workflows/create-agent.md |
| 2, "tools", "custom", "@tool" | references/custom-tools.md |
| 3, "hooks", "intercept" | references/hooks.md |
| 4, "permissions", "can_use_tool" | references/permissions.md |
| 5, "subagent", "parallel" | references/subagents.md |
| 6, "browser", "chrome", "automation" | references/browser-control.md |
| 7, "python", "reference" | references/python-sdk.md |
| 7, "typescript", "reference" | references/typescript-sdk.md |
| "built-in", "tools" | references/built-in-tools.md |
| "message", "types" | references/message-types.md |
| "best practices", "patterns" | references/best-practices.md |
| "error", "troubleshoot" | references/troubleshooting.md |
<quick_reference>
ClaudeAgentOptions (Key Fields)
ClaudeAgentOptions(
# Tools
allowed_tools=["Read", "Write", "Bash"], # Built-in tools to enable
disallowed_tools=["WebSearch"], # Tools to block
# Prompts
system_prompt="You are...", # Custom system prompt
# Or use preset: {"type": "preset", "preset": "claude_code", "append": "..."}
# MCP Servers
mcp_servers={"calc": my_server}, # MCP server configs
# Permissions
permission_mode="acceptEdits", # default | acceptEdits | plan | bypassPermissions
can_use_tool=my_handler, # Custom permission callback
# Execution
cwd="/path/to/project", # Working directory
max_turns=10, # Limit iterations
env={"API_KEY": "..."}, # Environment variables
# Advanced
hooks={"PreToolUse": [...]}, # Behavior hooks
agents={"researcher": AgentDef(...)}, # Subagents
sandbox={"enabled": True}, # Sandbox settings
setting_sources=["project"], # Load .claude settings
)
Built-in Tools
| Tool | Purpose |
|---|---|
| Read | Read files (text, images, PDFs, notebooks) |
| Write | Create new files |
| Edit | Modify existing files with search/replace |
| Bash | Run terminal commands |
| Glob | Find files by pattern (**/*.ts) |
| Grep | Search file contents with regex |
| WebSearch | Search the web |
| WebFetch | Fetch and parse web pages |
| Task | Spawn subagents |
| NotebookEdit | Edit Jupyter notebooks |
| TodoWrite | Manage task lists |
| KillShell | Kill background shells |
| ExitPlanMode | Exit planning mode |
Message Types
# All messages
Message = UserMessage | AssistantMessage | SystemMessage | ResultMessage
# Content blocks in AssistantMessage
ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock
Error Types
from claude_agent_sdk import (
CLINotFoundError, # Claude Code CLI not installed
CLIConnectionError, # Connection failed
ProcessError, # CLI process failed
CLIJSONDecodeError, # JSON parsing failed
)
</quick_reference>
<thinking_config>
Thinking & Effort Configuration
Control agent thinking depth via the effort parameter rather than prompt-level instructions like "think carefully":
| Use Case | Effort | Notes |
|---|---|---|
| Quick lookups, simple edits | low | Minimal thinking overhead |
| Standard development | medium | Default for most agents |
| Complex architecture, security | high | Deeper reasoning |
| Deep research, long-horizon | max | Maximum thinking budget |
# Adaptive thinking (recommended for Claude 4.6)
options = ClaudeAgentOptions(
model="claude-opus-4-6", # or claude-sonnet-4-6
# Effort is controlled at the API level, not in the agent options
)
Avoid adding "think carefully" or "be thorough" to agent system prompts—Claude 4.6 calibrates thinking depth automatically based on task complexity.
</thinking_config>
Common Patterns
File Operations Agent
options = ClaudeAgentOptions(
allowed_tools=["Read", "Write", "Edit", "Glob", "Grep"],
permission_mode="acceptEdits",
cwd="/path/to/project"
)
Code Review Agent
options = ClaudeAgentOptions(
allowed_tools=["Read", "Glob", "Grep"], # Read-only
system_prompt="Review code for bugs, security issues, and style"
)
Research Agent
options = ClaudeAgentOptions(
allowed_tools=["WebSearch", "WebFetch", "Write"],
max_turns=20 # Allow more iterations for research
)
Interactive Chat with Tools
async with ClaudeSDKClient(options) as client:
await client.query("What files are in this directory?")
async for msg in client.receive_response():
print(msg)
# Follow-up - Claude remembers context
await client.query("Show me the largest one")
async for msg in client.receive_response():
print(msg)
More from tdimino/claude-code-minoan
academic-research
Search academic papers, build literature reviews, and synthesize research findings — combines Exa MCP (research_paper category, arxiv filtering) with arxiv-mcp-server for paper discovery, download, and deep analysis. Triggers on academic paper, literature review, research synthesis, arxiv, find papers, scholarly search.
70travel-requirements-expert
Plan a trip, create an itinerary, or research a destination through a structured 5-phase workflow---discovery questions, Exa/Firecrawl research, expert detail gathering, and a day-by-day requirements spec. This skill should be used when a user says "plan a trip," "create an itinerary," "help me visit [place]," or needs travel research with specific venues, safety protocols, and dietary accommodations.
67twilio-api
Use this skill when working with Twilio communication APIs for SMS/MMS messaging, voice calls, phone number management, TwiML, webhook integration, two-way SMS conversations, bulk sending, or production deployment of telephony features. Includes official Twilio patterns, production code examples from Twilio-Aldea (provider-agnostic webhooks, signature validation, TwiML responses), and comprehensive TypeScript examples.
65figma-mcp
Convert Figma designs into production-ready code using MCP server tools. Use this skill when users provide Figma URLs, request design-to-code conversion, ask to implement Figma mockups, or need to extract design tokens and system values from Figma files. Works with frames, components, and entire design files to generate HTML, CSS, React, or other frontend code.
61firecrawl
Scrape web pages to clean markdown using Firecrawl v2 — handles JS-heavy pages, site crawls, URL mapping, document parsing (PDF/DOCX/XLSX), LLM-powered extraction, autonomous agent scraping, and post-scrape browser interaction (Interact API). Prefer over WebFetch for quality and completeness. Triggers on scrape URL, fetch page, crawl site, extract content, parse document, web to markdown, DeepWiki, Firecrawl.
51scrapling
Scrape pages locally with anti-bot bypass, TLS impersonation, and adaptive element tracking — no API keys, no cloud. Handles Cloudflare protection, CSS/XPath element extraction, and survives site redesigns. Complements firecrawl (cloud) with 100% local execution. Triggers on Cloudflare bypass, anti-bot scraping, stealth fetch, local scraping, Scrapling.
47