97d565e3cd
* feat: add mem-search skill with progressive disclosure architecture Add comprehensive mem-search skill for accessing claude-mem's persistent cross-session memory database. Implements progressive disclosure workflow and token-efficient search patterns. Features: - 12 search operations (observations, sessions, prompts, by-type, by-concept, by-file, timelines, etc.) - Progressive disclosure principles to minimize token usage - Anti-patterns documentation to guide LLM behavior - HTTP API integration for all search functionality - Common workflows with composition examples Structure: - SKILL.md: Entry point with temporal trigger patterns - principles/: Progressive disclosure + anti-patterns - operations/: 12 search operation files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add CHANGELOG entry for mem-search skill Document mem-search skill addition in Unreleased section with: - 100% effectiveness compliance metrics - Comparison to previous search skill implementation - Progressive disclosure architecture details - Reference to audit report documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add mem-search skill audit report Add comprehensive audit report validating mem-search skill against Anthropic's official skill-creator documentation. Report includes: - Effectiveness metrics comparison (search vs mem-search) - Critical issues analysis for production readiness - Compliance validation across 6 key dimensions - Reference implementation guidance Result: mem-search achieves 100% compliance vs search's 67% 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: Add comprehensive search architecture analysis document - Document current state of dual search architectures (HTTP API and MCP) - Analyze HTTP endpoints and MCP search server architectures - Identify DRY violations across search implementations - Evaluate the use of curl as the optimal approach for search - Provide architectural recommendations for immediate and long-term improvements - Outline action plan for cleanup, feature parity, DRY refactoring * refactor: Remove deprecated search skill documentation and operations * refactor: Reorganize documentation into public and context directories Changes: - Created docs/public/ for Mintlify documentation (.mdx files) - Created docs/context/ for internal planning and implementation docs - Moved all .mdx files and assets to docs/public/ - Moved all internal .md files to docs/context/ - Added CLAUDE.md to both directories explaining their purpose - Updated docs.json paths to work with new structure Benefits: - Clear separation between user-facing and internal documentation - Easier to maintain Mintlify docs in dedicated directory - Internal context files organized separately 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Enhance session management and continuity in hooks - Updated new-hook.ts to clarify session_id threading and idempotent session creation. - Modified prompts.ts to require claudeSessionId for continuation prompts, ensuring session context is maintained. - Improved SessionStore.ts documentation on createSDKSession to emphasize idempotent behavior and session connection. - Refined SDKAgent.ts to detail continuation prompt logic and its reliance on session.claudeSessionId for unified session handling. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Alex Newman <thedotmack@gmail.com>
303 lines
11 KiB
Markdown
303 lines
11 KiB
Markdown
# Agent Skills in the SDK
|
|
|
|
> Extend Claude with specialized capabilities using Agent Skills in the Claude Agent SDK
|
|
|
|
## Overview
|
|
|
|
Agent Skills extend Claude with specialized capabilities that Claude autonomously invokes when relevant. Skills are packaged as `SKILL.md` files containing instructions, descriptions, and optional supporting resources.
|
|
|
|
For comprehensive information about Skills, including benefits, architecture, and authoring guidelines, see the [Agent Skills overview](/en/docs/agents-and-tools/agent-skills/overview).
|
|
|
|
## How Skills Work with the SDK
|
|
|
|
When using the Claude Agent SDK, Skills are:
|
|
|
|
1. **Defined as filesystem artifacts**: Created as `SKILL.md` files in specific directories (`.claude/skills/`)
|
|
2. **Loaded from filesystem**: Skills are loaded from configured filesystem locations. You must specify `settingSources` (TypeScript) or `setting_sources` (Python) to load Skills from the filesystem
|
|
3. **Automatically discovered**: Once filesystem settings are loaded, Skill metadata is discovered at startup from user and project directories; full content loaded when triggered
|
|
4. **Model-invoked**: Claude autonomously chooses when to use them based on context
|
|
5. **Enabled via allowed\_tools**: Add `"Skill"` to your `allowed_tools` to enable Skills
|
|
|
|
Unlike subagents (which can be defined programmatically), Skills must be created as filesystem artifacts. The SDK does not provide a programmatic API for registering Skills.
|
|
|
|
<Note>
|
|
**Default behavior**: By default, the SDK does not load any filesystem settings. To use Skills, you must explicitly configure `settingSources: ['user', 'project']` (TypeScript) or `setting_sources=["user", "project"]` (Python) in your options.
|
|
</Note>
|
|
|
|
## Using Skills with the SDK
|
|
|
|
To use Skills with the SDK, you need to:
|
|
|
|
1. Include `"Skill"` in your `allowed_tools` configuration
|
|
2. Configure `settingSources`/`setting_sources` to load Skills from the filesystem
|
|
|
|
Once configured, Claude automatically discovers Skills from the specified directories and invokes them when relevant to the user's request.
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
import asyncio
|
|
from claude_agent_sdk import query, ClaudeAgentOptions
|
|
|
|
async def main():
|
|
options = ClaudeAgentOptions(
|
|
cwd="/path/to/project", # Project with .claude/skills/
|
|
setting_sources=["user", "project"], # Load Skills from filesystem
|
|
allowed_tools=["Skill", "Read", "Write", "Bash"] # Enable Skill tool
|
|
)
|
|
|
|
async for message in query(
|
|
prompt="Help me process this PDF document",
|
|
options=options
|
|
):
|
|
print(message)
|
|
|
|
asyncio.run(main())
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
|
|
for await (const message of query({
|
|
prompt: "Help me process this PDF document",
|
|
options: {
|
|
cwd: "/path/to/project", // Project with .claude/skills/
|
|
settingSources: ["user", "project"], // Load Skills from filesystem
|
|
allowedTools: ["Skill", "Read", "Write", "Bash"] // Enable Skill tool
|
|
}
|
|
})) {
|
|
console.log(message);
|
|
}
|
|
```
|
|
</CodeGroup>
|
|
|
|
## Skill Locations
|
|
|
|
Skills are loaded from filesystem directories based on your `settingSources`/`setting_sources` configuration:
|
|
|
|
* **Project Skills** (`.claude/skills/`): Shared with your team via git - loaded when `setting_sources` includes `"project"`
|
|
* **User Skills** (`~/.claude/skills/`): Personal Skills across all projects - loaded when `setting_sources` includes `"user"`
|
|
* **Plugin Skills**: Bundled with installed Claude Code plugins
|
|
|
|
## Creating Skills
|
|
|
|
Skills are defined as directories containing a `SKILL.md` file with YAML frontmatter and Markdown content. The `description` field determines when Claude invokes your Skill.
|
|
|
|
**Example directory structure**:
|
|
|
|
```bash theme={null}
|
|
.claude/skills/processing-pdfs/
|
|
└── SKILL.md
|
|
```
|
|
|
|
For complete guidance on creating Skills, including SKILL.md structure, multi-file Skills, and examples, see:
|
|
|
|
* [Agent Skills in Claude Code](https://code.claude.com/docs/skills): Complete guide with examples
|
|
* [Agent Skills Best Practices](/en/docs/agents-and-tools/agent-skills/best-practices): Authoring guidelines and naming conventions
|
|
|
|
## Tool Restrictions
|
|
|
|
<Note>
|
|
The `allowed-tools` frontmatter field in SKILL.md is only supported when using Claude Code CLI directly. **It does not apply when using Skills through the SDK**.
|
|
|
|
When using the SDK, control tool access through the main `allowedTools` option in your query configuration.
|
|
</Note>
|
|
|
|
To restrict tools for Skills in SDK applications, use the `allowedTools` option:
|
|
|
|
<Note>
|
|
Import statements from the first example are assumed in the following code snippets.
|
|
</Note>
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
options = ClaudeAgentOptions(
|
|
setting_sources=["user", "project"], # Load Skills from filesystem
|
|
allowed_tools=["Skill", "Read", "Grep", "Glob"] # Restricted toolset
|
|
)
|
|
|
|
async for message in query(
|
|
prompt="Analyze the codebase structure",
|
|
options=options
|
|
):
|
|
print(message)
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
// Skills can only use Read, Grep, and Glob tools
|
|
for await (const message of query({
|
|
prompt: "Analyze the codebase structure",
|
|
options: {
|
|
settingSources: ["user", "project"], // Load Skills from filesystem
|
|
allowedTools: ["Skill", "Read", "Grep", "Glob"] // Restricted toolset
|
|
}
|
|
})) {
|
|
console.log(message);
|
|
}
|
|
```
|
|
</CodeGroup>
|
|
|
|
## Discovering Available Skills
|
|
|
|
To see which Skills are available in your SDK application, simply ask Claude:
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
options = ClaudeAgentOptions(
|
|
setting_sources=["user", "project"], # Load Skills from filesystem
|
|
allowed_tools=["Skill"]
|
|
)
|
|
|
|
async for message in query(
|
|
prompt="What Skills are available?",
|
|
options=options
|
|
):
|
|
print(message)
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
for await (const message of query({
|
|
prompt: "What Skills are available?",
|
|
options: {
|
|
settingSources: ["user", "project"], // Load Skills from filesystem
|
|
allowedTools: ["Skill"]
|
|
}
|
|
})) {
|
|
console.log(message);
|
|
}
|
|
```
|
|
</CodeGroup>
|
|
|
|
Claude will list the available Skills based on your current working directory and installed plugins.
|
|
|
|
## Testing Skills
|
|
|
|
Test Skills by asking questions that match their descriptions:
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
options = ClaudeAgentOptions(
|
|
cwd="/path/to/project",
|
|
setting_sources=["user", "project"], # Load Skills from filesystem
|
|
allowed_tools=["Skill", "Read", "Bash"]
|
|
)
|
|
|
|
async for message in query(
|
|
prompt="Extract text from invoice.pdf",
|
|
options=options
|
|
):
|
|
print(message)
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
for await (const message of query({
|
|
prompt: "Extract text from invoice.pdf",
|
|
options: {
|
|
cwd: "/path/to/project",
|
|
settingSources: ["user", "project"], // Load Skills from filesystem
|
|
allowedTools: ["Skill", "Read", "Bash"]
|
|
}
|
|
})) {
|
|
console.log(message);
|
|
}
|
|
```
|
|
</CodeGroup>
|
|
|
|
Claude automatically invokes the relevant Skill if the description matches your request.
|
|
|
|
## Troubleshooting
|
|
|
|
### Skills Not Found
|
|
|
|
**Check settingSources configuration**: Skills are only loaded when you explicitly configure `settingSources`/`setting_sources`. This is the most common issue:
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
# Wrong - Skills won't be loaded
|
|
options = ClaudeAgentOptions(
|
|
allowed_tools=["Skill"]
|
|
)
|
|
|
|
# Correct - Skills will be loaded
|
|
options = ClaudeAgentOptions(
|
|
setting_sources=["user", "project"], # Required to load Skills
|
|
allowed_tools=["Skill"]
|
|
)
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
// Wrong - Skills won't be loaded
|
|
const options = {
|
|
allowedTools: ["Skill"]
|
|
};
|
|
|
|
// Correct - Skills will be loaded
|
|
const options = {
|
|
settingSources: ["user", "project"], // Required to load Skills
|
|
allowedTools: ["Skill"]
|
|
};
|
|
```
|
|
</CodeGroup>
|
|
|
|
For more details on `settingSources`/`setting_sources`, see the [TypeScript SDK reference](/en/docs/agent-sdk/typescript#settingsource) or [Python SDK reference](/en/docs/agent-sdk/python#settingsource).
|
|
|
|
**Check working directory**: The SDK loads Skills relative to the `cwd` option. Ensure it points to a directory containing `.claude/skills/`:
|
|
|
|
<CodeGroup>
|
|
```python Python theme={null}
|
|
# Ensure your cwd points to the directory containing .claude/skills/
|
|
options = ClaudeAgentOptions(
|
|
cwd="/path/to/project", # Must contain .claude/skills/
|
|
setting_sources=["user", "project"], # Required to load Skills
|
|
allowed_tools=["Skill"]
|
|
)
|
|
```
|
|
|
|
```typescript TypeScript theme={null}
|
|
// Ensure your cwd points to the directory containing .claude/skills/
|
|
const options = {
|
|
cwd: "/path/to/project", // Must contain .claude/skills/
|
|
settingSources: ["user", "project"], // Required to load Skills
|
|
allowedTools: ["Skill"]
|
|
};
|
|
```
|
|
</CodeGroup>
|
|
|
|
See the "Using Skills with the SDK" section above for the complete pattern.
|
|
|
|
**Verify filesystem location**:
|
|
|
|
```bash theme={null}
|
|
# Check project Skills
|
|
ls .claude/skills/*/SKILL.md
|
|
|
|
# Check personal Skills
|
|
ls ~/.claude/skills/*/SKILL.md
|
|
```
|
|
|
|
### Skill Not Being Used
|
|
|
|
**Check the Skill tool is enabled**: Confirm `"Skill"` is in your `allowedTools`.
|
|
|
|
**Check the description**: Ensure it's specific and includes relevant keywords. See [Agent Skills Best Practices](/en/docs/agents-and-tools/agent-skills/best-practices#writing-effective-descriptions) for guidance on writing effective descriptions.
|
|
|
|
### Additional Troubleshooting
|
|
|
|
For general Skills troubleshooting (YAML syntax, debugging, etc.), see the [Claude Code Skills troubleshooting section](https://code.claude.com/docs/skills#troubleshooting).
|
|
|
|
## Related Documentation
|
|
|
|
### Skills Guides
|
|
|
|
* [Agent Skills in Claude Code](https://code.claude.com/docs/skills): Complete Skills guide with creation, examples, and troubleshooting
|
|
* [Agent Skills Overview](/en/docs/agents-and-tools/agent-skills/overview): Conceptual overview, benefits, and architecture
|
|
* [Agent Skills Best Practices](/en/docs/agents-and-tools/agent-skills/best-practices): Authoring guidelines for effective Skills
|
|
* [Agent Skills Cookbook](https://github.com/anthropics/claude-cookbooks/tree/main/skills): Example Skills and templates
|
|
|
|
### SDK Resources
|
|
|
|
* [Subagents in the SDK](/en/docs/agent-sdk/subagents): Similar filesystem-based agents with programmatic options
|
|
* [Slash Commands in the SDK](/en/docs/agent-sdk/slash-commands): User-invoked commands
|
|
* [SDK Overview](/en/docs/agent-sdk/overview): General SDK concepts
|
|
* [TypeScript SDK Reference](/en/docs/agent-sdk/typescript): Complete API documentation
|
|
* [Python SDK Reference](/en/docs/agent-sdk/python): Complete API documentation
|