Les skills dans Claude Code
Ce que tu vas apprendre
- Créer un skill personnalisé
- Contrôler quand Claude l’utilise automatiquement
- Organiser templates, scripts et références
- Différencier skills, mémoire et sous-agents
Prérequis
- Claude Code v2.1+
- Avoir lu le guide sur les slash commands
- Comprendre la hiérarchie des fichiers CLAUDE.md
Le concept en 30 secondes
Un skill = un dossier avec un SKILL.md. Il empaquette une expertise réutilisable : revue de code, génération de documentation, déploiement. Claude charge seulement le nom et la description au démarrage (~100 tokens). Le contenu complet n’est lu que quand le skill est déclenché. Tu peux l’invoquer avec /nom-du-skill ou laisser Claude le faire automatiquement.
Étapes
1. Créer un skill basique
mkdir -p .claude/skills/code-review
Fichier .claude/skills/code-review/SKILL.md :
---
name: code-review
description: Revue de code sécurité, performance et qualité. Utilise quand l'utilisateur demande une revue, mentionne la qualité du code, ou travaille sur une PR.
---
# Revue de code
Vérifie dans cet ordre :
1. **Sécurité** : injections, expositions de données, auth manquante
2. **Performance** : complexité algorithmique, requêtes N+1
3. **Qualité** : lisibilité, taille des fonctions (< 50 lignes), gestion d'erreurs
4. **Tests** : couverture des chemins critiques
Format de réponse :
- Issues critiques en premier
- Localisation précise (fichier + ligne)
- Exemple de correction
2. Contrôler qui peut invoquer le skill
Trois modes :
@diagram:cc-skills
Skill avec effets de bord (déploiement, commit) :
---
name: deploy
description: Déploie l'application en production
disable-model-invocation: true
allowed-tools: Bash(npm *), Bash(git *)
---
1. npm test
2. npm run build
3. Déploie
4. Vérifie
Skill de contexte uniquement (pas une action) :
---
name: brand-voice
description: Règles de ton pour les communications. Utilise quand l'utilisateur rédige du contenu public.
user-invocable: false
---
- Ton professionnel mais accessible
- Phrases actives, moins de 20 mots
- "Tu" pour s'adresser au lecteur
3. Ajouter du contexte dynamique
Utilise !`commande` pour injecter le résultat d’une commande shell :
---
name: pr-summary
description: Résume une pull request
context: fork
agent: Explore
---
## Contexte PR
- Diff : !`gh pr diff`
- Fichiers modifiés : !`gh pr diff --name-only`
- Commentaires : !`gh pr view --comments`
## Ta tâche
Résume les changements en 3 lignes max.
Variables disponibles :
| Variable | Valeur |
|---|---|
$ARGUMENTS |
Tous les arguments |
$0, $1 |
Arguments positionnels |
${CLAUDE_SESSION_ID} |
ID de session |
${CLAUDE_SKILL_DIR} |
Dossier du skill |
${CLAUDE_EFFORT} |
Niveau d’effort actuel (v2.1.120+) |
4. Exécuter dans un sous-agent isolé
Ajoute context: fork pour exécuter le skill dans un contexte séparé :
---
name: deep-research
description: Recherche approfondie dans le codebase
context: fork
agent: Explore
---
Recherche $ARGUMENTS :
1. Trouve les fichiers avec Glob/Grep
2. Lis et analyse
3. Résume avec références précises
Types d’agent :
| Agent | Usage |
|---|---|
Explore |
Recherche en lecture seule |
Plan |
Création de plans |
general-purpose |
Tâches générales |
Fix v2.1.145 : un bug de boucle infinie sur
context: forka été corrigé. Mets à jour si tu utilises cette fonctionnalité.
5. Organiser les fichiers annexes
.claude/skills/mon-skill/
├── SKILL.md # Obligatoire, < 500 lignes
├── templates/
│ └── output-format.md
├── examples/
│ └── sample.md
├── references/
│ └── api-spec.md
└── scripts/
└── validate.sh
Les fichiers annexes sont chargés uniquement quand Claude en a besoin (niveau 3). Référence-les avec des chemins relatifs :
Pour le template complet, voir [templates/checklist.md](/templates/claude-code/checklist.md)
6. Lister et recharger les skills
# Liste les skills disponibles
/skills
# Recharge sans redémarrer (v2.1.152+)
/reload-skills
Depuis le shell :
ls ~/.claude/skills/ # Skills personnels
ls .claude/skills/ # Skills projet
7. Résoudre les conflits de priorité
Par défaut, un skill projet écrase un skill personnel du même nom. Change ce comportement dans settings.json :
{
"skillOverrides": "off"
}
Valeurs :
| Valeur | Comportement |
|---|---|
"on" (défaut) |
Le skill projet l’emporte |
"off" |
Le skill personnel l’emporte toujours |
"name-only" |
Match uniquement sur le nom |
"user-invocable-only" |
Seuls les skills invoquables par l’utilisateur sont écrasés |
Vérification
- Le skill apparaît dans
/skills - La description contient des mots-clés déclencheurs
-
disable-model-invocation: truebloque l’auto-invocation -
context: forkisole l’exécution - Les scripts dans
scripts/sont exécutables (chmod +x) -
/reload-skillsdétecte les modifications
Pièges courants
- Skill jamais déclenché → La description est trop vague. Inclus des termes que l’utilisateur dirait naturellement
- Skill déclenché trop souvent → Rends la description plus spécifique, ou ajoute
disable-model-invocation: true - Description trop longue → Budget : 1% de la fenêtre de contexte (max 8000 caractères). Mets les mots-clés importants au début
- Scripts non exécutés → Vérifie
chmod +xetallowed-tools: Bash(...) - Boucle infinie avec fork → Mets à jour en v2.1.145+
Récapitulatif
| Commande/Fichier | Action |
|---|---|
.claude/skills/<nom>/SKILL.md |
Créer un skill projet |
~/.claude/skills/<nom>/SKILL.md |
Créer un skill personnel |
/skills |
Lister les skills |
/reload-skills |
Recharger (v2.1.152+) |
disable-model-invocation: true |
Bloquer l’auto-invocation |
user-invocable: false |
Cacher du menu / |
context: fork |
Exécuter dans un sous-agent |
!`cmd` |
Injecter le résultat d’une commande |
Pour aller plus loin
Inspiré du guide claude-howto de luongnv89 (MIT)