Agent Skills расширяют возможности Claude через организованные папки инструкций, скриптов и ресурсов. Это руководство показывает, как использовать как готовые, так и пользовательские Skills с Claude API.
Для полного справочника API, включая схемы запросов/ответов и все параметры, см.:
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Создайте свой первый Skill
Лучшие практики для создания Skills
Для глубокого погружения в архитектуру и реальные приложения Agent Skills прочитайте пост в инженерном блоге: Equipping agents for the real world with Agent Skills.
Skills интегрируются с Messages API через инструмент выполнения кода. Независимо от того, используете ли вы готовые Skills, управляемые Anthropic, или пользовательские Skills, которые вы загрузили, форма интеграции идентична: обе требуют выполнения кода и используют одну и ту же структуру container.
Skills интегрируются одинаково в Messages API независимо от источника. Вы указываете Skills в параметре container с skill_id, type и опциональной version, и они выполняются в среде выполнения кода.
Вы можете использовать Skills из двух источников:
| Аспект | Anthropic Skills | Пользовательские Skills |
|---|---|---|
| Значение Type | anthropic | custom |
| Skill IDs | Короткие имена: pptx, xlsx, docx, pdf | Сгенерированные: skill_01AbCdEfGhIjKlMnOpQrStUv |
| Формат версии | На основе даты: 20251013 или latest | Временная метка эпохи: 1759178010641129 или latest |
| Управление | Готовые и поддерживаемые Anthropic | Загрузка и управление через Skills API |
| Доступность | Доступны всем пользователям | Приватные для вашего рабочего пространства |
Оба источника Skills возвращаются конечной точкой List Skills (используйте параметр source для фильтрации). Форма интеграции и среда выполнения идентичны. Единственное различие - это источник Skills и способ их управления.
Для использования Skills вам нужно:
code-execution-2025-08-25 - Включает выполнение кода (требуется для Skills)skills-2025-10-02 - Включает Skills APIfiles-api-2025-04-14 - Для загрузки/скачивания файлов в/из контейнераSkills указываются с помощью параметра container в Messages API. Вы можете включить до 8 Skills в один запрос.
Структура идентична для Anthropic и пользовательских Skills. Укажите требуемые type и skill_id, и опционально включите version для привязки к конкретной версии:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "anthropic", "skill_id": "pptx", "version": "latest"}]
},
messages=[
{"role": "user", "content": "Create a presentation about renewable energy"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Когда Skills создают документы (Excel, PowerPoint, PDF, Word), они возвращают атрибуты file_id в ответе. Вы должны использовать Files API для загрузки этих файлов.
Как это работает:
file_id для каждого созданного файлаПример: создание и загрузка файла Excel
Дополнительные операции Files API:
client = anthropic.Anthropic()
file_id = "file_abc123"
# Get file metadata
file_info = client.beta.files.retrieve_metadata(
file_id=file_id, betas=["files-api-2025-04-14"]
)
print(f"Filename: {file_info.filename}, Size: {file_info.size_bytes} bytes")
# List all files
files = client.beta.files.list(betas=["files-api-2025-04-14"])
for file in files.data:
print(f"{file.filename} - {file.created_at}")
# Delete a file
client.beta.files.delete(file_id=file_id, betas=["files-api-2025-04-14"])Для полной информации о Files API см. документацию Files API.
Повторно используйте один и тот же контейнер в нескольких сообщениях, указав ID контейнера:
# Первый запрос создает контейнер
response1 = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}]
},
messages=[{"role": "user", "content": "Analyze this sales data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Продолжить разговор с тем же контейнером
messages = [
{"role": "user", "content": "Analyze this sales data"},
{"role": "assistant", "content": response1.content},
{"role": "user", "content": "What was the total revenue?"},
]
response2 = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response1.container.id, # Повторно использовать контейнер
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Навыки могут выполнять операции, требующие нескольких оборотов. Обрабатывайте причины остановки pause_turn:
messages = [{"role": "user", "content": "Process this large dataset"}]
max_retries = 10
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
]
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Обработать pause_turn для долгих операций
for i in range(max_retries):
if response.stop_reason != "pause_turn":
break
messages.append({"role": "assistant", "content": response.content})
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"id": response.container.id,
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Ответ может включать причину остановки pause_turn, которая указывает, что API приостановил долгоживущую операцию Skill. Вы можете предоставить ответ как есть в последующем запросе, чтобы позволить Claude продолжить свой ход, или изменить контент, если вы хотите прервать разговор и предоставить дополнительное руководство.
Объедините несколько Skills в одном запросе для обработки сложных рабочих процессов:
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{"type": "anthropic", "skill_id": "xlsx", "version": "latest"},
{"type": "anthropic", "skill_id": "pptx", "version": "latest"},
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
},
]
},
messages=[
{"role": "user", "content": "Analyze sales data and create a presentation"}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Загрузите свой пользовательский Skill, чтобы сделать его доступным в вашем рабочем пространстве. Вы можете загружать, используя либо путь к каталогу, либо отдельные объекты файлов.
# Option 1: Upload individual files (one --file flag per file)
ant beta:skills create \
--display-title "Financial Analysis" \
--file financial_skill/SKILL.md \
--file financial_skill/analyze.py \
--beta skills-2025-10-02
# Option 2: Upload a zip archive
ant beta:skills create \
--display-title "Financial Analysis" \
--file financial_analysis_skill.zip \
--beta skills-2025-10-02Требования:
name: Максимум 64 символа, только строчные буквы/цифры/дефисы, без XML-тегов, без зарезервированных слов ("anthropic", "claude")description: Максимум 1024 символа, не пусто, без XML-теговДля полных схем запроса/ответа см. справочник API Create Skill.
Получите все Skills, доступные в вашем рабочем пространстве, включая как встроенные Skills от Anthropic, так и ваши пользовательские Skills. Используйте параметр source для фильтрации по типу skill:
# List all Skills
ant beta:skills list
# List only custom Skills
ant beta:skills list --source customСм. справочник API List Skills для параметров пагинации и фильтрации.
Получите информацию о конкретном Skill:
ant beta:skills retrieve \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUvЧтобы удалить навык, необходимо сначала удалить все его версии:
# Step 1: Delete all versions
ant beta:skills:versions list \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv \
--transform version --format yaml \
| tr -d '"' \
| while read -r VERSION; do
ant beta:skills:versions delete \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv \
--version "$VERSION" >/dev/null
done
# Step 2: Delete the Skill
ant beta:skills delete \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv >/dev/nullПопытка удалить навык с существующими версиями возвращает ошибку 400.
Навыки поддерживают управление версиями для безопасного управления обновлениями:
Навыки, управляемые Anthropic:
20251013Пользовательские навыки:
1759178010641129"latest" для получения самой последней версии# Create a new version
VERSION_NUMBER=$(ant beta:skills:versions create \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUv \
--file updated_skill/SKILL.md \
--transform version --format yaml)
# Use specific version
ant beta:messages create \
--beta code-execution-2025-08-25 \
--beta skills-2025-10-02 <<YAML
model: claude-opus-4-7
max_tokens: 4096
container:
skills:
- type: custom
skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
version: $VERSION_NUMBER
messages:
- role: user
content: Use updated Skill
tools:
- type: code_execution_20250825
name: code_execution
YAML
# Use latest version
ant beta:messages create \
--beta code-execution-2025-08-25 \
--beta skills-2025-10-02 <<'YAML'
model: claude-opus-4-7
max_tokens: 4096
container:
skills:
- type: custom
skill_id: skill_01AbCdEfGhIjKlMnOpQrStUv
version: latest
messages:
- role: user
content: Use latest Skill version
tools:
- type: code_execution_20250825
name: code_execution
YAMLПолные сведения см. в справочнике API создания версии навыка.
Когда вы указываете навыки в контейнере:
/skills/{directory}/Архитектура прогрессивного раскрытия обеспечивает эффективное использование контекста: Claude загружает полные инструкции навыков только при необходимости.
Бренд и коммуникации
Управление проектами
Бизнес-операции
Создание контента
Анализ данных
Разработка и автоматизация
Объедините Excel и пользовательский анализ DCF Skills:
# Create custom DCF analysis Skill
from anthropic.lib import files_from_dir
dcf_skill = client.beta.skills.create(
display_title="DCF Analysis",
files=files_from_dir("/path/to/dcf_skill"),
betas=["skills-2025-10-02"],
)
# Use with Excel to create financial model
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{"type": "anthropic", "skill_id": "xlsx", "version": "latest"},
{"type": "custom", "skill_id": dcf_skill.id, "version": "latest"},
]
},
messages=[
{
"role": "user",
"content": "Build a DCF valuation model for a SaaS company with the attached financials",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)name: максимум 64 символа, только строчные буквы/цифры/дефисы, без XML-тегов, без зарезервированных словdescription: максимум 1024 символа, не пусто, без XML-теговSkills работают в контейнере выполнения кода со следующими ограничениями:
Смотрите документацию инструмента выполнения кода для доступных пакетов.
Объедините Skills, когда задачи включают несколько типов документов или доменов:
Хорошие варианты использования:
Избегайте:
Для производства:
# Pin to specific versions for stability
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "1759178010641129", # Specific version
}
]
}Для разработки:
# Use latest for active development
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest", # Always get newest
}
]
}При использовании кэширования подсказок обратите внимание, что изменение списка Skills в вашем контейнере нарушает кэш:
# First request creates cache
response1 = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=[
"code-execution-2025-08-25",
"skills-2025-10-02",
"prompt-caching-2024-07-31",
],
container={
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}]
},
messages=[{"role": "user", "content": "Analyze sales data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Adding/removing Skills breaks cache
response2 = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=[
"code-execution-2025-08-25",
"skills-2025-10-02",
"prompt-caching-2024-07-31",
],
container={
"skills": [
{"type": "anthropic", "skill_id": "xlsx", "version": "latest"},
{
"type": "anthropic",
"skill_id": "pptx",
"version": "latest",
}, # Cache miss
]
},
messages=[{"role": "user", "content": "Create a presentation"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Для лучшей производительности кэширования держите список Skills согласованным во всех запросах.
Обрабатывайте ошибки, связанные с Skills, корректно:
client = anthropic.Anthropic()
try:
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
betas=["code-execution-2025-08-25", "skills-2025-10-02"],
container={
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest",
}
]
},
messages=[{"role": "user", "content": "Process data"}],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
except anthropic.BadRequestError as e:
if "skill" in str(e):
print(f"Skill error: {e}")
# Handle skill-specific errors
else:
raiseAgent Skills не охватываются соглашениями ZDR. Определения Skills и данные выполнения хранятся в соответствии со стандартной политикой хранения данных Anthropic.
Для соответствия требованиям ZDR для всех функций см. API и хранение данных.
Полный справочник API со всеми конечными точками
Лучшие практики написания эффективных Skills
Узнайте об окружении выполнения кода
Was this page helpful?