Agent Skills erweitern die Fähigkeiten von Claude durch organisierte Ordner mit Anweisungen, Skripten und Ressourcen. Diese Anleitung zeigt Ihnen, wie Sie sowohl vorgefertigte als auch benutzerdefinierte Skills mit der Claude API verwenden.
Für die vollständige API-Referenz einschließlich Request/Response-Schemas und aller Parameter siehe:
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Erstellen Sie Ihren ersten Skill
Best Practices für die Erstellung von Skills
Für einen tieferen Einblick in die Architektur und reale Anwendungen von Agent Skills lesen Sie den Engineering-Blogbeitrag: Equipping agents for the real world with Agent Skills.
Skills integrieren sich mit der Messages API über das Code-Ausführungs-Tool. Ob Sie vorgefertigte Skills verwenden, die von Anthropic verwaltet werden, oder benutzerdefinierte Skills, die Sie hochgeladen haben, die Integrationsform ist identisch: Beide erfordern Code-Ausführung und verwenden die gleiche container-Struktur.
Skills integrieren sich unabhängig von der Quelle identisch in die Messages API. Sie geben Skills im Parameter container mit einer skill_id, einem type und einer optionalen version an, und sie werden in der Code-Ausführungsumgebung ausgeführt.
Sie können Skills aus zwei Quellen verwenden:
| Aspekt | Anthropic Skills | Benutzerdefinierte Skills |
|---|---|---|
| Type-Wert | anthropic | custom |
| Skill-IDs | Kurznamen: pptx, xlsx, docx, pdf | Generiert: skill_01AbCdEfGhIjKlMnOpQrStUv |
| Versionsformat | Datumsbasiert: 20251013 oder latest | Epoch-Zeitstempel: 1759178010641129 oder latest |
| Verwaltung | Vorgefertigt und von Anthropic gepflegt | Upload und Verwaltung über Skills API |
| Verfügbarkeit | Für alle Benutzer verfügbar | Privat für Ihren Workspace |
Beide Skill-Quellen werden vom List Skills Endpoint zurückgegeben (verwenden Sie den Parameter source zum Filtern). Die Integrationsform und die Ausführungsumgebung sind identisch. Der einzige Unterschied ist, woher die Skills kommen und wie sie verwaltet werden.
Um Skills zu verwenden, benötigen Sie:
code-execution-2025-08-25 - Aktiviert Code-Ausführung (erforderlich für Skills)skills-2025-10-02 - Aktiviert Skills APIfiles-api-2025-04-14 - Zum Hochladen/Herunterladen von Dateien zum/vom ContainerSkills werden mit dem Parameter container in der Messages API angegeben. Sie können bis zu 8 Skills pro Anfrage einschließen.
Die Struktur ist für Anthropic und benutzerdefinierte Skills identisch. Geben Sie den erforderlichen type und skill_id an, und schließen Sie optional version ein, um an eine bestimmte Version gebunden zu sein:
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"}],
)Wenn Skills Dokumente erstellen (Excel, PowerPoint, PDF, Word), geben sie file_id-Attribute in der Antwort zurück. Sie müssen die Files API verwenden, um diese Dateien herunterzuladen.
So funktioniert es:
file_id für jede erstellte DateiBeispiel: Erstellen und Herunterladen einer Excel-Datei
Zusätzliche Files API-Operationen:
client = anthropic.Anthropic()
file_id = "file_abc123"
# Datei-Metadaten abrufen
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")
# Alle Dateien auflisten
files = client.beta.files.list(betas=["files-api-2025-04-14"])
for file in files.data:
print(f"{file.filename} - {file.created_at}")
# Eine Datei löschen
client.beta.files.delete(file_id=file_id, betas=["files-api-2025-04-14"])Vollständige Details zur Files API finden Sie in der Files API-Dokumentation.
Verwenden Sie denselben Container über mehrere Nachrichten hinweg, indem Sie die Container-ID angeben:
# Erste Anfrage erstellt Container
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"}],
)
# Konversation mit demselben Container fortsetzen
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, # Container wiederverwenden
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)Skills können Operationen ausführen, die mehrere Durchläufe erfordern. Behandeln Sie pause_turn Stop-Gründe:
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 für lange Operationen behandeln
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"}],
)Die Antwort kann einen pause_turn Stop-Grund enthalten, der anzeigt, dass die API eine langfristige Skill-Operation unterbrochen hat. Sie können die Antwort in einer nachfolgenden Anfrage unverändert bereitstellen, um Claude seinen Durchlauf fortsetzen zu lassen, oder Sie können den Inhalt ändern, wenn Sie die Konversation unterbrechen und zusätzliche Anleitung geben möchten.
Kombinieren Sie mehrere Skills in einer einzelnen Anfrage, um komplexe Workflows zu bewältigen:
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"}],
)Laden Sie Ihren benutzerdefinierten Skill hoch, um ihn in Ihrem Workspace verfügbar zu machen. Sie können entweder einen Verzeichnispfad oder einzelne Dateiobjekte hochladen.
# 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-02Anforderungen:
name: Maximal 64 Zeichen, nur Kleinbuchstaben/Zahlen/Bindestriche, keine XML-Tags, keine reservierten Wörter („anthropic", „claude")description: Maximal 1024 Zeichen, nicht leer, keine XML-TagsFür vollständige Request-/Response-Schemas siehe die API-Referenz zum Erstellen von Skills.
Rufen Sie alle Skills ab, die in Ihrem Workspace verfügbar sind, einschließlich vordefinierter Skills von Anthropic und Ihrer benutzerdefinierten Skills. Verwenden Sie den Parameter source, um nach Skill-Typ zu filtern:
# List all Skills
ant beta:skills list
# List only custom Skills
ant beta:skills list --source customSiehe die API-Referenz zum Auflisten von Skills für Paginierungs- und Filteroptionen.
Rufen Sie Details zu einem bestimmten Skill ab:
ant beta:skills retrieve \
--skill-id skill_01AbCdEfGhIjKlMnOpQrStUvUm eine Skill zu löschen, müssen Sie zunächst alle ihre Versionen löschen:
# 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/nullDer Versuch, eine Skill mit vorhandenen Versionen zu löschen, gibt einen 400-Fehler zurück.
Skills unterstützen Versionsverwaltung, um Updates sicher zu verwalten:
Von Anthropic verwaltete Skills:
20251013Benutzerdefinierte Skills:
1759178010641129"latest", um immer die neueste Version zu erhalten# 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
YAMLWeitere Details finden Sie in der API-Referenz für Skill-Versionserstellung.
Wenn Sie Skills in einem Container angeben:
/skills/{directory}/ kopiertDie progressive Offenlegungsarchitektur gewährleistet eine effiziente Kontextnutzung: Claude lädt vollständige Skill-Anweisungen nur bei Bedarf.
Marke & Kommunikation
Projektmanagement
Geschäftsbetrieb
Inhaltserstellung
Datenanalyse
Entwicklung & Automatisierung
Kombinieren Sie Excel und benutzerdefinierte DCF-Analyse-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: Maximal 64 Zeichen, nur Kleinbuchstaben/Zahlen/Bindestriche, keine XML-Tags, keine reservierten Wörterdescription: Maximal 1024 Zeichen, nicht leer, keine XML-TagsSkills werden im Code-Execution-Container mit diesen Einschränkungen ausgeführt:
Weitere Informationen finden Sie in der Code-Execution-Tool-Dokumentation zu verfügbaren Paketen.
Kombinieren Sie Skills, wenn Aufgaben mehrere Dokumenttypen oder Domänen betreffen:
Gute Anwendungsfälle:
Vermeiden Sie:
Für die Produktion:
# Pin to specific versions for stability
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "1759178010641129", # Specific version
}
]
}Für die Entwicklung:
# Use latest for active development
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest", # Always get newest
}
]
}Beachten Sie beim Verwenden von Prompt-Caching, dass das Ändern der Skills-Liste in Ihrem Container den Cache bricht:
# 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"}],
)Für optimale Caching-Leistung sollten Sie Ihre Skills-Liste über Anfragen hinweg konsistent halten.
Behandeln Sie Skill-bezogene Fehler elegant:
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 sind nicht durch ZDR-Vereinbarungen abgedeckt. Skill-Definitionen und Ausführungsdaten werden gemäß der Standard-Datenspeicherungsrichtlinie von Anthropic beibehalten.
Für ZDR-Berechtigung über alle Funktionen hinweg siehe API und Datenspeicherung.
Vollständige API-Referenz mit allen Endpunkten
Best Practices zum Schreiben effektiver Skills
Erfahren Sie mehr über die Code-Ausführungsumgebung
Was this page helpful?