代理技能使用專業功能擴展 Claude,Claude 會在相關時自動調用這些技能。技能被打包為 SKILL.md 文件,包含說明、描述和可選的支持資源。
有關技能的全面信息,包括優勢、架構和編寫指南,請參閱代理技能概述。
使用 Claude 代理 SDK 時,技能具有以下特點:
.claude/skills/)中創建為 SKILL.md 文件settingSources(TypeScript)或 setting_sources(Python)以從文件系統加載技能"Skill" 添加到您的 allowed_tools 以啟用技能與子代理(可以以編程方式定義)不同,技能必須創建為文件系統工件。SDK 不提供用於註冊技能的編程 API。
默認行為:默認情況下,SDK 不加載任何文件系統設置。要使用技能,您必須在選項中明確配置 settingSources: ['user', 'project'](TypeScript)或 setting_sources=["user", "project"](Python)。
要在 SDK 中使用技能,您需要:
allowed_tools 配置中包含 "Skill"settingSources/setting_sources 以從文件系統加載技能配置完成後,Claude 會自動從指定目錄發現技能,並在與用戶請求相關時調用它們。
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())根據您的 settingSources/setting_sources 配置,技能從文件系統目錄加載:
.claude/skills/):通過 git 與您的團隊共享 - 當 setting_sources 包含 "project" 時加載~/.claude/skills/):跨所有項目的個人技能 - 當 setting_sources 包含 "user" 時加載技能定義為包含具有 YAML 前置事項和 Markdown 內容的 SKILL.md 文件的目錄。description 字段確定 Claude 何時調用您的技能。
示例目錄結構:
.claude/skills/processing-pdfs/
└── SKILL.md有關創建技能的完整指導,包括 SKILL.md 結構、多文件技能和示例,請參閱:
SKILL.md 中的 allowed-tools 前置事項字段僅在直接使用 Claude Code CLI 時受支持。通過 SDK 使用技能時不適用。
使用 SDK 時,通過查詢配置中的主 allowedTools 選項控制工具訪問。
要在 SDK 應用程序中限制技能的工具,請使用 allowedTools 選項:
假設第一個示例中的導入語句在以下代碼片段中。
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)要查看 SDK 應用程序中可用的技能,只需詢問 Claude:
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)Claude 將根據您當前的工作目錄和已安裝的插件列出可用的技能。
通過提出與技能描述相匹配的問題來測試技能:
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)如果描述與您的請求相匹配,Claude 會自動調用相關技能。
檢查 settingSources 配置:只有在明確配置 settingSources/setting_sources 時才會加載技能。這是最常見的問題:
# 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"]
)有關 settingSources/setting_sources 的更多詳細信息,請參閱 TypeScript SDK 參考或 Python SDK 參考。
檢查工作目錄:SDK 相對於 cwd 選項加載技能。確保它指向包含 .claude/skills/ 的目錄:
# 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"]
)有關完整模式,請參閱上面的「在 SDK 中使用技能」部分。
驗證文件系統位置:
# Check project Skills
ls .claude/skills/*/SKILL.md
# Check personal Skills
ls ~/.claude/skills/*/SKILL.md檢查技能工具是否已啟用:確認 "Skill" 在您的 allowedTools 中。
檢查描述:確保它具體且包含相關關鍵字。有關編寫有效描述的指導,請參閱代理技能最佳實踐。
有關一般技能故障排除(YAML 語法、調試等),請參閱 Claude Code 技能故障排除部分。