Programmatic agent definitions for the Claude Agent SDK in TypeScript and Python. Use when creating agents for SDK-based applications rather than filesystem-based Claude Code.
Provides programmatic agent definitions for the Claude Agent SDK in TypeScript and Python. Use when creating agents for SDK-based applications instead of filesystem-based Claude Code.
/plugin marketplace add mgd34msu/goodvibes-plugin/plugin install goodvibes@goodvibes-marketThis skill inherits all available tools. When active, it can use any tool Claude has access to.
For SDK-based applications, agents can be defined programmatically instead of as markdown files.
import { query, ClaudeAgentOptions, AgentDefinition } from "@anthropic-ai/claude-agent-sdk";
const options: ClaudeAgentOptions = {
// Parent agent needs Task tool to invoke subagents
allowed_tools: ["Read", "Grep", "Glob", "Edit", "Write", "Bash", "Task"],
agents: {
"code-reviewer": {
description: "Security-focused code reviewer. Use PROACTIVELY for auth code.",
prompt: `You are a security code reviewer specializing in authentication
and authorization code. You identify vulnerabilities, suggest fixes,
and ensure best practices are followed.
## Focus Areas
- Authentication flows
- Session management
- Input validation
- Access control
## Output Format
Provide findings as:
1. Severity (Critical/High/Medium/Low)
2. Location (file:line)
3. Issue description
4. Recommended fix`,
tools: ["Read", "Grep", "Glob"], // Read-only access
model: "opus"
},
"test-runner": {
description: "Runs tests and analyzes failures. Use when tests need to be executed.",
prompt: `You run test suites and analyze failures. You identify root causes
and suggest fixes for failing tests.`,
// Omit tools to inherit all from parent
model: "sonnet"
}
}
};
// Execute with agents
for await (const message of query({
prompt: "Review the authentication module for security issues",
options
})) {
console.log(message);
}
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition
options = ClaudeAgentOptions(
allowed_tools=["Read", "Grep", "Glob", "Edit", "Write", "Bash", "Task"],
agents={
"code-reviewer": AgentDefinition(
description="Security-focused code reviewer. Use PROACTIVELY for auth code.",
prompt="""You are a security code reviewer specializing in authentication
and authorization code. You identify vulnerabilities, suggest fixes,
and ensure best practices are followed.
## Focus Areas
- Authentication flows
- Session management
- Input validation
- Access control""",
tools=["Read", "Grep", "Glob"],
model="opus"
),
"test-runner": AgentDefinition(
description="Runs tests and analyzes failures. Use when tests need to be executed.",
prompt="You run test suites and analyze failures.",
# tools omitted = inherit all
model="sonnet"
)
}
)
async def main():
async for message in query(
prompt="Review the authentication module",
options=options
):
print(message)
asyncio.run(main())
type AgentDefinition = {
description: string; // Required: When to invoke (routing key)
prompt: string; // Required: System prompt content
tools?: string[]; // Optional: Allowed tools (omit = inherit all)
model?: 'sonnet' | 'opus' | 'haiku' | 'inherit'; // Optional: Model override
}
| Aspect | Filesystem (.claude/agents/) | SDK (programmatic) |
|---|---|---|
| Format | Markdown with YAML frontmatter | TypeScript/Python objects |
| Loading | Automatic from directory | Passed in options |
| Prompt | Markdown body | String in prompt field |
| Use case | Claude Code CLI | Custom SDK applications |
When a user may use either approach, provide both:
.claude/agents/{name}.mdThis ensures compatibility with both Claude Code CLI and custom SDK applications.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.