Aller au contenu principal
Intermédiaire12 min

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: fork a é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: true bloque l’auto-invocation
  • context: fork isole l’exécution
  • Les scripts dans scripts/ sont exécutables (chmod +x)
  • /reload-skills dé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 +x et allowed-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)