Was this page helpful?
Les Agent Skills étendent les capacités de Claude grâce à des dossiers organisés contenant des instructions, des scripts et des ressources. Ce guide vous montre comment utiliser à la fois les Skills pré-construits et les Skills personnalisés avec l'API Claude.
Pour la référence API complète incluant les schémas de requête/réponse et tous les paramètres, consultez :
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Créez votre premier Skill
Meilleures pratiques pour la création de Skills
Pour une plongée profonde dans l'architecture et les applications réelles des Agent Skills, lisez l'article du blog d'ingénierie : Equipping agents for the real world with Agent Skills.
Les Skills s'intègrent à l'API Messages via l'outil d'exécution de code. Que vous utilisiez des Skills pré-construits gérés par Anthropic ou des Skills personnalisés que vous avez téléchargés, la forme d'intégration est identique : les deux nécessitent l'exécution de code et utilisent la même structure container.
Les Skills s'intègrent de manière identique dans l'API Messages quelle que soit leur source. Vous spécifiez les Skills dans le paramètre container avec un skill_id, un type et une version optionnelle, et ils s'exécutent dans l'environnement d'exécution de code.
Vous pouvez utiliser les Skills de deux sources :
| Aspect | Skills Anthropic | Skills personnalisés |
|---|---|---|
| Valeur Type | anthropic | custom |
| IDs des Skills | Noms courts : pptx, xlsx, docx, pdf | Générés : skill_01AbCdEfGhIjKlMnOpQrStUv |
| Format de version | Basé sur la date : 20251013 ou latest | Timestamp d'époque : 1759178010641129 ou latest |
Les deux sources de Skills sont retournées par le point de terminaison List Skills (utilisez le paramètre source pour filtrer). La forme d'intégration et l'environnement d'exécution sont identiques. La seule différence est la provenance des Skills et la façon dont ils sont gérés.
Pour utiliser les Skills, vous avez besoin de :
code-execution-2025-08-25 - Active l'exécution de code (requis pour les Skills)skills-2025-10-02 - Active l'API Skillsfiles-api-2025-04-14 - Pour télécharger/télécharger des fichiers vers/depuis le conteneurLes Skills sont spécifiés à l'aide du paramètre container dans l'API Messages. Vous pouvez inclure jusqu'à 8 Skills par requête.
La structure est identique pour les Skills Anthropic et personnalisés. Spécifiez le type et le skill_id requis, et incluez optionnellement version pour épingler une version spécifique :
Lorsque les Skills créent des documents (Excel, PowerPoint, PDF, Word), ils retournent des attributs file_id dans la réponse. Vous devez utiliser l'API Files pour télécharger ces fichiers.
Fonctionnement :
file_id pour chaque fichier crééExemple : Création et téléchargement d'un fichier Excel
Opérations supplémentaires de l'API Files :
Pour plus de détails sur l'API Files, consultez la documentation de l'API Files.
Réutilisez le même conteneur sur plusieurs messages en spécifiant l'ID du conteneur :
Les Skills peuvent effectuer des opérations qui nécessitent plusieurs tours. Gérez les raisons d'arrêt pause_turn :
La réponse peut inclure une raison d'arrêt pause_turn, qui indique que l'API a mis en pause une opération Skill longue. Vous pouvez fournir la réponse telle quelle dans une requête ultérieure pour laisser Claude continuer son tour, ou modifier le contenu si vous souhaitez interrompre la conversation et fournir des conseils supplémentaires.
Combinez plusieurs compétences dans une seule demande pour gérer des flux de travail complexes :
Téléchargez votre compétence personnalisée pour la rendre disponible dans votre espace de travail. Vous pouvez télécharger en utilisant soit un chemin de répertoire, soit des objets de fichiers individuels.
Exigences :
name : Maximum 64 caractères, lettres minuscules/chiffres/tirets uniquement, pas de balises XML, pas de mots réservés (« anthropic », « claude »)description : Maximum 1024 caractères, non vide, pas de balises XMLPour les schémas complets de demande/réponse, consultez la référence API Créer une compétence.
Récupérez toutes les compétences disponibles dans votre espace de travail, y compris les compétences prédéfinies Anthropic et vos compétences personnalisées. Utilisez le paramètre source pour filtrer par type de compétence :
Consultez la référence API Énumérer les compétences pour les options de pagination et de filtrage.
Obtenez les détails d'une compétence spécifique :
Pour supprimer une Skill, vous devez d'abord supprimer toutes ses versions :
Toute tentative de suppression d'une Skill avec des versions existantes retourne une erreur 400.
Les Skills supportent le versioning pour gérer les mises à jour de manière sécurisée :
Skills gérées par Anthropic :
20251013Skills personnalisées :
1759178010641129"latest" pour toujours obtenir la version la plus récenteConsultez la référence API Créer une version de Skill pour plus de détails.
Lorsque vous spécifiez des Skills dans un conteneur :
/skills/{directory}/L'architecture de divulgation progressive garantit une utilisation efficace du contexte : Claude ne charge les instructions complètes de Skill que lorsque cela est nécessaire.
Marque et communications
Gestion de projet
Opérations commerciales
Création de contenu
Analyse de données
Développement et automatisation
Combinez Excel et l'analyse DCF personnalisée Skills :
name : Maximum 64 caractères, lettres minuscules/chiffres/tirets uniquement, pas de balises XML, pas de mots réservésdescription : Maximum 1024 caractères, non vide, pas de balises XMLLes Skills s'exécutent dans le conteneur d'exécution de code avec ces limitations :
Consultez la documentation de l'outil d'exécution de code pour les paquets disponibles.
Combinez les Skills lorsque les tâches impliquent plusieurs types de documents ou domaines :
Bons cas d'usage :
À éviter :
Pour la production :
# Pin to specific versions for stability
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "1759178010641129", # Specific version
}
]
}Pour le développement :
# Use latest for active development
container = {
"skills": [
{
"type": "custom",
"skill_id": "skill_01AbCdEfGhIjKlMnOpQrStUv",
"version": "latest", # Always get newest
}
]
}Lors de l'utilisation de la mise en cache des invites, notez que la modification de la liste des Skills dans votre conteneur casse le cache :
Pour les meilleures performances de mise en cache, gardez votre liste de Skills cohérente entre les requêtes.
Gérez les erreurs liées aux Skills avec élégance :
Les Agent Skills ne sont pas couverts par les arrangements ZDR. Les définitions de Skills et les données d'exécution sont conservées conformément à la politique standard de rétention des données d'Anthropic.
Pour l'admissibilité ZDR dans toutes les fonctionnalités, consultez Rétention des données et API.
| Pré-construits et maintenus par Anthropic |
| Téléchargez et gérez via API Skills |
| Disponibilité | Disponibles pour tous les utilisateurs | Privés à votre espace de travail |
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"}],
)client = anthropic.Anthropic()
file_id = "file_abc123"
# Obtenir les métadonnées du fichier
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")
# Lister tous les fichiers
files = client.beta.files.list(betas=["files-api-2025-04-14"])
for file in files.data:
print(f"{file.filename} - {file.created_at}")
# Supprimer un fichier
client.beta.files.delete(file_id=file_id, betas=["files-api-2025-04-14"])# La première requête crée un conteneur
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"}],
)
# Continuer la conversation avec le même conteneur
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, # Réutiliser le conteneur
"skills": [{"type": "anthropic", "skill_id": "xlsx", "version": "latest"}],
},
messages=messages,
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)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"}],
)
# Gérer pause_turn pour les opérations longues
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"}],
)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"}],
)# 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# List all Skills
ant beta:skills list
# List only custom Skills
ant beta:skills list --source customant 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# 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# 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"}],
)# 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"}],
)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:
raiseEn savoir plus sur l'environnement d'exécution de code