Initial commit
This commit is contained in:
327
skills/working-with-claude-code/references/migration-guide.md
Normal file
327
skills/working-with-claude-code/references/migration-guide.md
Normal file
@@ -0,0 +1,327 @@
|
||||
# Migrate to Claude Agent SDK
|
||||
|
||||
> Guide for migrating the Claude Code TypeScript and Python SDKs to the Claude Agent SDK
|
||||
|
||||
## Overview
|
||||
|
||||
The Claude Code SDK has been renamed to the **Claude Agent SDK** and its documentation has been reorganized. This change reflects the SDK's broader capabilities for building AI agents beyond just coding tasks.
|
||||
|
||||
## What's Changed
|
||||
|
||||
| Aspect | Old | New |
|
||||
| :------------------------- | :----------------------------- | :------------------------------- |
|
||||
| **Package Name (TS/JS)** | `@anthropic-ai/claude-code` | `@anthropic-ai/claude-agent-sdk` |
|
||||
| **Python Package** | `claude-code-sdk` | `claude-agent-sdk` |
|
||||
| **Documentation Location** | Claude Code docs → SDK section | API Guide → Agent SDK section |
|
||||
|
||||
<Note>
|
||||
**Documentation Changes:** The Agent SDK documentation has moved from the Claude Code docs to the API Guide under a dedicated [Agent SDK](/en/api/agent-sdk/overview) section. The Claude Code docs now focus on the CLI tool and automation features.
|
||||
</Note>
|
||||
|
||||
## Migration Steps
|
||||
|
||||
### For TypeScript/JavaScript Projects
|
||||
|
||||
**1. Uninstall the old package:**
|
||||
|
||||
```bash theme={null}
|
||||
npm uninstall @anthropic-ai/claude-code
|
||||
```
|
||||
|
||||
**2. Install the new package:**
|
||||
|
||||
```bash theme={null}
|
||||
npm install @anthropic-ai/claude-agent-sdk
|
||||
```
|
||||
|
||||
**3. Update your imports:**
|
||||
|
||||
Change all imports from `@anthropic-ai/claude-code` to `@anthropic-ai/claude-agent-sdk`:
|
||||
|
||||
```typescript theme={null}
|
||||
// Before
|
||||
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-code";
|
||||
|
||||
// After
|
||||
import {
|
||||
query,
|
||||
tool,
|
||||
createSdkMcpServer,
|
||||
} from "@anthropic-ai/claude-agent-sdk";
|
||||
```
|
||||
|
||||
**4. Update package.json dependencies:**
|
||||
|
||||
If you have the package listed in your `package.json`, update it:
|
||||
|
||||
```json theme={null}
|
||||
// Before
|
||||
{
|
||||
"dependencies": {
|
||||
"@anthropic-ai/claude-code": "^1.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
// After
|
||||
{
|
||||
"dependencies": {
|
||||
"@anthropic-ai/claude-agent-sdk": "^0.1.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
That's it! No other code changes are required.
|
||||
|
||||
### For Python Projects
|
||||
|
||||
**1. Uninstall the old package:**
|
||||
|
||||
```bash theme={null}
|
||||
pip uninstall claude-code-sdk
|
||||
```
|
||||
|
||||
**2. Install the new package:**
|
||||
|
||||
```bash theme={null}
|
||||
pip install claude-agent-sdk
|
||||
```
|
||||
|
||||
**3. Update your imports:**
|
||||
|
||||
Change all imports from `claude_code_sdk` to `claude_agent_sdk`:
|
||||
|
||||
```python theme={null}
|
||||
# Before
|
||||
from claude_code_sdk import query, ClaudeCodeOptions
|
||||
|
||||
# After
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions
|
||||
```
|
||||
|
||||
**4. Update type names:**
|
||||
|
||||
Change `ClaudeCodeOptions` to `ClaudeAgentOptions`:
|
||||
|
||||
```python theme={null}
|
||||
# Before
|
||||
from claude_agent_sdk import query, ClaudeCodeOptions
|
||||
|
||||
options = ClaudeCodeOptions(
|
||||
model="claude-sonnet-4-5"
|
||||
)
|
||||
|
||||
# After
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions
|
||||
|
||||
options = ClaudeAgentOptions(
|
||||
model="claude-sonnet-4-5"
|
||||
)
|
||||
```
|
||||
|
||||
**5. Review [breaking changes](#breaking-changes)**
|
||||
|
||||
Make any code changes needed to complete the migration.
|
||||
|
||||
## Breaking changes
|
||||
|
||||
<Warning>
|
||||
To improve isolation and explicit configuration, Claude Agent SDK v0.1.0 introduces breaking changes for users migrating from Claude Code SDK. Review this section carefully before migrating.
|
||||
</Warning>
|
||||
|
||||
### Python: ClaudeCodeOptions renamed to ClaudeAgentOptions
|
||||
|
||||
**What changed:** The Python SDK type `ClaudeCodeOptions` has been renamed to `ClaudeAgentOptions`.
|
||||
|
||||
**Migration:**
|
||||
|
||||
```python theme={null}
|
||||
# BEFORE (v0.0.x)
|
||||
from claude_agent_sdk import query, ClaudeCodeOptions
|
||||
|
||||
options = ClaudeCodeOptions(
|
||||
model="claude-sonnet-4-5",
|
||||
permission_mode="acceptEdits"
|
||||
)
|
||||
|
||||
# AFTER (v0.1.0)
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions
|
||||
|
||||
options = ClaudeAgentOptions(
|
||||
model="claude-sonnet-4-5",
|
||||
permission_mode="acceptEdits"
|
||||
)
|
||||
```
|
||||
|
||||
**Why this changed:** The type name now matches the "Claude Agent SDK" branding and provides consistency across the SDK's naming conventions.
|
||||
|
||||
### System prompt no longer default
|
||||
|
||||
**What changed:** The SDK no longer uses Claude Code's system prompt by default.
|
||||
|
||||
**Migration:**
|
||||
|
||||
<CodeGroup>
|
||||
```typescript TypeScript theme={null}
|
||||
// BEFORE (v0.0.x) - Used Claude Code's system prompt by default
|
||||
const result = query({ prompt: "Hello" });
|
||||
|
||||
// AFTER (v0.1.0) - Uses empty system prompt by default
|
||||
// To get the old behavior, explicitly request Claude Code's preset:
|
||||
const result = query({
|
||||
prompt: "Hello",
|
||||
options: {
|
||||
systemPrompt: { type: "preset", preset: "claude_code" }
|
||||
}
|
||||
});
|
||||
|
||||
// Or use a custom system prompt:
|
||||
const result = query({
|
||||
prompt: "Hello",
|
||||
options: {
|
||||
systemPrompt: "You are a helpful coding assistant"
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
```python Python theme={null}
|
||||
# BEFORE (v0.0.x) - Used Claude Code's system prompt by default
|
||||
async for message in query(prompt="Hello"):
|
||||
print(message)
|
||||
|
||||
# AFTER (v0.1.0) - Uses empty system prompt by default
|
||||
# To get the old behavior, explicitly request Claude Code's preset:
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions
|
||||
|
||||
async for message in query(
|
||||
prompt="Hello",
|
||||
options=ClaudeAgentOptions(
|
||||
system_prompt={"type": "preset", "preset": "claude_code"} # Use the preset
|
||||
)
|
||||
):
|
||||
print(message)
|
||||
|
||||
# Or use a custom system prompt:
|
||||
async for message in query(
|
||||
prompt="Hello",
|
||||
options=ClaudeAgentOptions(
|
||||
system_prompt="You are a helpful coding assistant"
|
||||
)
|
||||
):
|
||||
print(message)
|
||||
```
|
||||
</CodeGroup>
|
||||
|
||||
**Why this changed:** Provides better control and isolation for SDK applications. You can now build agents with custom behavior without inheriting Claude Code's CLI-focused instructions.
|
||||
|
||||
### Settings Sources No Longer Loaded by Default
|
||||
|
||||
**What changed:** The SDK no longer reads from filesystem settings (CLAUDE.md, settings.json, slash commands, etc.) by default.
|
||||
|
||||
**Migration:**
|
||||
|
||||
<CodeGroup>
|
||||
```typescript TypeScript theme={null}
|
||||
// BEFORE (v0.0.x) - Loaded all settings automatically
|
||||
const result = query({ prompt: "Hello" });
|
||||
// Would read from:
|
||||
// - ~/.claude/settings.json (user)
|
||||
// - .claude/settings.json (project)
|
||||
// - .claude/settings.local.json (local)
|
||||
// - CLAUDE.md files
|
||||
// - Custom slash commands
|
||||
|
||||
// AFTER (v0.1.0) - No settings loaded by default
|
||||
// To get the old behavior:
|
||||
const result = query({
|
||||
prompt: "Hello",
|
||||
options: {
|
||||
settingSources: ["user", "project", "local"]
|
||||
}
|
||||
});
|
||||
|
||||
// Or load only specific sources:
|
||||
const result = query({
|
||||
prompt: "Hello",
|
||||
options: {
|
||||
settingSources: ["project"] // Only project settings
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
```python Python theme={null}
|
||||
# BEFORE (v0.0.x) - Loaded all settings automatically
|
||||
async for message in query(prompt="Hello"):
|
||||
print(message)
|
||||
# Would read from:
|
||||
# - ~/.claude/settings.json (user)
|
||||
# - .claude/settings.json (project)
|
||||
# - .claude/settings.local.json (local)
|
||||
# - CLAUDE.md files
|
||||
# - Custom slash commands
|
||||
|
||||
# AFTER (v0.1.0) - No settings loaded by default
|
||||
# To get the old behavior:
|
||||
from claude_agent_sdk import query, ClaudeAgentOptions
|
||||
|
||||
async for message in query(
|
||||
prompt="Hello",
|
||||
options=ClaudeAgentOptions(
|
||||
setting_sources=["user", "project", "local"]
|
||||
)
|
||||
):
|
||||
print(message)
|
||||
|
||||
# Or load only specific sources:
|
||||
async for message in query(
|
||||
prompt="Hello",
|
||||
options=ClaudeAgentOptions(
|
||||
setting_sources=["project"] # Only project settings
|
||||
)
|
||||
):
|
||||
print(message)
|
||||
```
|
||||
</CodeGroup>
|
||||
|
||||
**Why this changed:** Ensures SDK applications have predictable behavior independent of local filesystem configurations. This is especially important for:
|
||||
|
||||
* **CI/CD environments** - Consistent behavior without local customizations
|
||||
* **Deployed applications** - No dependency on filesystem settings
|
||||
* **Testing** - Isolated test environments
|
||||
* **Multi-tenant systems** - Prevent settings leakage between users
|
||||
|
||||
<Note>
|
||||
**Backward compatibility:** If your application relied on filesystem settings (custom slash commands, CLAUDE.md instructions, etc.), add `settingSources: ['user', 'project', 'local']` to your options.
|
||||
</Note>
|
||||
|
||||
## Why the Rename?
|
||||
|
||||
The Claude Code SDK was originally designed for coding tasks, but it has evolved into a powerful framework for building all types of AI agents. The new name "Claude Agent SDK" better reflects its capabilities:
|
||||
|
||||
* Building business agents (legal assistants, finance advisors, customer support)
|
||||
* Creating specialized coding agents (SRE bots, security reviewers, code review agents)
|
||||
* Developing custom agents for any domain with tool use, MCP integration, and more
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you encounter any issues during migration:
|
||||
|
||||
**For TypeScript/JavaScript:**
|
||||
|
||||
1. Check that all imports are updated to use `@anthropic-ai/claude-agent-sdk`
|
||||
2. Verify your package.json has the new package name
|
||||
3. Run `npm install` to ensure dependencies are updated
|
||||
|
||||
**For Python:**
|
||||
|
||||
1. Check that all imports are updated to use `claude_agent_sdk`
|
||||
2. Verify your requirements.txt or pyproject.toml has the new package name
|
||||
3. Run `pip install claude-agent-sdk` to ensure the package is installed
|
||||
|
||||
See the [Troubleshooting](/en/docs/claude-code/troubleshooting) guide for common issues.
|
||||
|
||||
## Next Steps
|
||||
|
||||
* Explore the [Agent SDK Overview](/en/api/agent-sdk/overview) to learn about available features
|
||||
* Check out the [TypeScript SDK Reference](/en/api/agent-sdk/typescript) for detailed API documentation
|
||||
* Review the [Python SDK Reference](/en/api/agent-sdk/python) for Python-specific documentation
|
||||
* Learn about [Custom Tools](/en/api/agent-sdk/custom-tools) and [MCP Integration](/en/api/agent-sdk/mcp)
|
||||
Reference in New Issue
Block a user