Aller au contenu
Développement medium

Claude Code : skills pour transformer les tâches répétitives en routines réutilisables

10 min de lecture

Logo Claude Code - skills pour routines réutilisables

Vous retapez la même suite d’étapes à chaque fois : valider le projet, préparer une PR, faire une revue de diff. Ces procédures n’ont rien à faire dans CLAUDE.md (qui décrit des faits) ni dans .claude/rules/ (qui scope des règles). Leur bon endroit : les skills. Un skill est un SKILL.md rangé dans .claude/skills/<nom>/, invocable par /nom, que Claude ou vous pouvez déclencher quand le besoin apparaît.

  • Créer un skill projet invocable par /nom
  • Choisir entre invocation automatique et manuelle (disable-model-invocation)
  • Passer des arguments à un skill avec $ARGUMENTS
  • Savoir quand une procédure devient un skill (vs rester dans CLAUDE.md)

Dans quel contexte utiliser cette fonctionnalité ?

Section intitulée « Dans quel contexte utiliser cette fonctionnalité ? »
  • Vous retapez la même procédure (validation, préparation de PR, audit)
  • Une section de CLAUDE.md a dérivé vers une liste d’étapes à suivre
  • Vous voulez une routine partagée par l’équipe, invocable d’un simple /
  • Vous voulez éviter que Claude déclenche seul une action à effet (déploiement, commit)

Un skill est un dossier avec un SKILL.md à l’intérieur. Les skills projet vivent dans .claude/skills/<nom>/ et sont partagés par git.

lab-claude/
├── .claude/
│ └── skills/
│ ├── valider/
│ │ └── SKILL.md
│ └── prep-pr/
│ └── SKILL.md
└── ...

Le SKILL.md a deux parties : un frontmatter YAML qui indique à Claude quand le skill est pertinent, et un corps Markdown qui décrit la procédure.

ChampEffet
nameNom de la commande /nom (sinon dérivé du dossier)
descriptionGuide Claude pour décider quand charger le skill automatiquement
disable-model-invocationtrue pour n’autoriser que l’invocation manuelle /nom
allowed-toolsOutils pré-approuvés pendant l’exécution du skill
argument-hintHint d’autocomplétion pour les arguments
pathsGlob pour charger automatiquement le skill quand Claude touche un fichier matché
ContenuBon endroit
Fait global (“on utilise FastAPI, Ruff, pytest”)CLAUDE.md
Règle ciblée (“les tests utilisent TestClient”).claude/rules/tests.md
Procédure à exécuter (“lance ruff, pytest, résume le diff”).claude/skills/<nom>/SKILL.md

Si vous écrivez “1. puis 2. puis 3.”, c’est un skill.

Objectif : deux skills utiles au quotidien — /valider (validation complète) et /prep-pr (préparation d’une PR).

  1. Créez le dossier du skill

    Fenêtre de terminal
    cd ~/Projets/lab-claude
    mkdir -p .claude/skills/valider
  2. Écrivez SKILL.md

    ---
    name: valider
    description: Valide lab-claude avec ruff et pytest, résume les erreurs en priorité
    disable-model-invocation: true
    allowed-tools: Bash(uv run ruff *) Bash(uv run pytest *)
    ---
    Valide le projet en deux étapes et résume.
    1. Lance `uv run ruff check .` et note les erreurs (type et fichier)
    2. Lance `uv run pytest -q` et note les tests en échec
    3. Résume en 3 points :
    - Statut global (vert / rouge)
    - Premier blocage à traiter
    - Commande exacte pour reproduire le blocage
    Ne modifie aucun fichier. Si tout est vert, confirme en une ligne.
  3. Testez dans une session

    Fenêtre de terminal
    claude

    Puis :

    /valider

Pourquoi disable-model-invocation: true ici : /valider est déclenché à la demande. Vous ne voulez pas que Claude lance la validation complète de son propre chef en plein milieu d’une exploration.

  1. Créez le skill

    Fenêtre de terminal
    mkdir -p .claude/skills/prep-pr
  2. Écrivez SKILL.md

    ---
    name: prep-pr
    description: Prépare une PR pour lab-claude : diff, résumé, message de commit suggéré
    disable-model-invocation: true
    argument-hint: "[cible] optionnel, sinon main"
    allowed-tools: Bash(git diff *) Bash(git log *) Bash(git status)
    ---
    Prépare une PR contre la branche cible (par défaut `main`).
    Cible : $ARGUMENTS
    1. `git status` pour vérifier que rien n'est en attente
    2. `git diff <cible>...HEAD --stat` pour lister les fichiers touchés
    3. `git log <cible>..HEAD --oneline` pour lister les commits
    4. Résume en 5 points max :
    - Intention (quoi, pourquoi)
    - Fichiers significatifs modifiés
    - Ce qui reste à tester manuellement
    - Un titre de PR (≤ 70 caractères)
    - Un corps de PR en 3 bullets
    Ne propose pas `git push`. Le push reste une action humaine.
  3. Testez

    /prep-pr
    /prep-pr develop
FrontmatterVous invoquezClaude invoqueQuand utiliser
défautouiouiSkill sans effet de bord, Claude peut décider
disable-model-invocation: trueouinonActions à effet (/valider, /prep-pr, /commit)
user-invocable: falsenonouiConnaissance de fond jamais invoquée à la main

Règle simple : si le skill change l’état du projet ou engage l’équipe, mettez disable-model-invocation: true.

$ARGUMENTS reçoit tout ce qui suit le nom du skill. Pour des arguments positionnels : $0, $1, $2.

---
name: resume-fichier
description: Résume un fichier du projet en 5 points
---
Résume $ARGUMENTS en 5 points maximum, sans le modifier.

Usage : /resume-fichier app/main.py.

Le champ allowed-tools évite les prompts pendant l’exécution du skill. Il complète le allow du settings.json pour les commandes spécifiques à la procédure.

SymptômeCause probableCorrection
/<nom> introuvableFrontmatter incorrect ou dossier au mauvais endroitVérifier .claude/skills/<nom>/SKILL.md exactement
Claude ne déclenche jamais le skill autodescription trop vagueAjouter des mots-clés d’usage réel
Claude déclenche le skill trop souventdescription trop largeRestreindre, ou passer à disable-model-invocation: true
Le skill redemande une autorisationCommande non listée dans allowed-toolsCompléter allowed-tools avec le motif exact
Skill invoqué mais ignoré ensuiteContenu traité comme guide, pas comme tâcheFormuler en impératif (“Lance”, “Résume”), pas descriptif
  • J’ai créé au moins un skill projet dans .claude/skills/<nom>/SKILL.md
  • Le skill s’invoque avec /<nom> et fait ce qu’il promet
  • J’ai choisi disable-model-invocation selon le risque
  • J’ai distingué skill (procédure) vs rule (règle ciblée) vs CLAUDE.md (fait global)
  • allowed-tools reflète les outils réellement utilisés
  • Un skill capture une procédure invocable à la demande
  • disable-model-invocation: true pour tout ce qui a un effet ou engage
  • Skills (procédure) / rules (règle) / CLAUDE.md (fait global) : trois cases distinctes
  • Les skills sont partagés par git, donc accessibles à toute l’équipe
  • Gardez SKILL.md sous 500 lignes et déportez le détail dans des fichiers annexes

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn