Claude-skill-registry claude-agent-sdk-agent-creation
Use when creating or configuring Claude AI agents using the Agent SDK. Covers agent initialization, configuration, and basic setup patterns.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/claude-agent-sdk-agent-creation" ~/.claude/skills/majiayu000-claude-skill-registry-claude-agent-sdk-agent-creation-fee1bf && rm -rf "$T"
manifest:
skills/data/claude-agent-sdk-agent-creation/SKILL.mdsource content
Claude Agent SDK - Agent Creation
Creating and configuring AI agents using the Claude Agent SDK with TypeScript.
Core Agent Initialization
Basic Agent Creation
import { Agent } from '@anthropic-ai/claude-agent-sdk'; const agent = new Agent({ model: 'claude-3-5-sonnet-20241022', // Latest model systemPrompt: 'You are a helpful assistant specialized in...', settingSources: ['project'], // Load .claude/CLAUDE.md from project allowedTools: ['read_file', 'write_file', 'list_files'], });
Configuration Options
System Prompts
// Direct system prompt const agent = new Agent({ systemPrompt: 'You are an expert code reviewer...', }); // Load from CLAUDE.md const agent = new Agent({ settingSources: ['project'], // Loads ./.claude/CLAUDE.md }); // User-level memory const agent = new Agent({ settingSources: ['user'], // Loads ~/.claude/CLAUDE.md });
Tool Permissions
// Allow specific tools const agent = new Agent({ allowedTools: [ 'read_file', 'write_file', 'list_files', 'grep', 'bash', ], }); // Block specific tools const agent = new Agent({ disallowedTools: ['bash', 'web_search'], }); // Permission modes const agent = new Agent({ permissionMode: 'strict', // Require explicit approval });
Agent Directory Structure
Required Structure
project/ ├── .claude/ │ ├── CLAUDE.md # Project memory │ ├── agents/ │ │ └── specialist.md # Subagent definitions │ ├── skills/ │ │ └── my-skill/ │ │ └── SKILL.md # Skill definitions │ └── commands/ │ └── my-command.md # Slash commands └── src/ └── index.ts # Your code
Authentication
Environment Variables
# Anthropic API (primary) export ANTHROPIC_API_KEY="sk-ant-..." # Alternative providers export AWS_ACCESS_KEY_ID="..." export AWS_SECRET_ACCESS_KEY="..." export AWS_REGION="us-east-1" # Google Vertex AI export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json" # Azure export AZURE_OPENAI_API_KEY="..." export AZURE_OPENAI_ENDPOINT="..."
SDK Configuration
// Anthropic direct const agent = new Agent({ apiKey: process.env.ANTHROPIC_API_KEY, }); // Amazon Bedrock const agent = new Agent({ provider: 'bedrock', model: 'anthropic.claude-3-5-sonnet-20241022-v2:0', });
Best Practices
Always Specify Model
// Good const agent = new Agent({ model: 'claude-3-5-sonnet-20241022', }); // Avoid: relying on default model const agent = new Agent({});
Use Explicit Setting Sources
// Good const agent = new Agent({ settingSources: ['project'], }); // Avoid: unclear memory source const agent = new Agent({ systemPrompt: '...', });
Separate Project and User Memory
// Project-specific context const projectAgent = new Agent({ settingSources: ['project'], }); // User preferences const userAgent = new Agent({ settingSources: ['user'], });
Anti-Patterns
Don't Hardcode API Keys
// Bad const agent = new Agent({ apiKey: 'sk-ant-hardcoded-key', }); // Good const agent = new Agent({ apiKey: process.env.ANTHROPIC_API_KEY, });
Don't Mix Conflicting Permissions
// Bad: contradictory permissions const agent = new Agent({ allowedTools: ['read_file', 'write_file'], disallowedTools: ['read_file'], // Conflict! }); // Good: clear permissions const agent = new Agent({ allowedTools: ['read_file'], });
Related Skills
- tool-integration: Working with tools and MCP servers
- context-management: Managing agent context and memory