Accueil / Étendre : compétences, MCP, sous-agents, hooks, plugins
Créer une skill qui devient aussi une commande
Une commande personnalisée et une skill sont désormais le même mécanisme : un fichier .claude/commands/nom.md et un dossier .claude/skills/nom/SKILL.md produisent tous deux la commande /nom avec le même comportement, et pour une skill personnelle ou de projet, c'est le nom du dossier, pas le champ name du frontmatter, qui devient le nom de la commande.
Une commande personnalisée et une skill sont devenues le même mécanisme. Un fichier .claude/commands/deploy.md et un dossier .claude/skills/deploy/SKILL.md produisent tous les deux la commande /deploy, avec le même comportement à l'exécution : les anciens fichiers de commandes continuent de fonctionner sans rien changer, et la forme en dossier est désormais recommandée pour ce qui dépasse une simple instruction, parce qu'elle peut embarquer des fichiers de support à côté du texte.
Où vit une skill, et jusqu'où elle porte
Une skill personnelle vit dans ~/.claude/skills/nom-de-la-skill/SKILL.md et reste disponible dans tous les projets ouverts depuis ce compte. Une skill de projet vit dans .claude/skills/nom-de-la-skill/SKILL.md et ne s'applique qu'à ce dépôt précis, c'est elle qu'on verse au contrôle de version pour la partager avec une équipe. Deux autres emplacements existent, l'un pour une skill fournie par l'entreprise, l'autre pour une skill livrée dans un plugin, chacun avec sa propre priorité en cas de nom partagé entre plusieurs sources. Le choix de l'emplacement se fait donc avant l'écriture, en se demandant qui doit voir cette commande : soi seul sur tous ses projets, ou toute une équipe sur ce dépôt précis.
Le frontmatter et la substitution d'arguments
Dans le frontmatter, seul le champ description est vraiment recommandé, tous les autres restent facultatifs, y compris name. Pour une skill personnelle ou de projet, ce champ ne sert que d'étiquette d'affichage, sans déterminer le nom de la commande, qui vient du nom du dossier ; dans une skill de plugin en revanche, name fixe le dernier segment de la commande, le préfixe du plugin restant devant. Dans le corps du fichier, $ARGUMENTS reçoit tout ce que l'utilisateur a tapé après la commande, comme une seule chaîne ; l'indexation est à base zéro, $0 reçoit le premier mot, $1 le deuxième, et ainsi de suite, $ARGUMENTS[N] étant la forme longue équivalente à $N ; et un argument déclaré par son nom dans le frontmatter se lit directement par $nom-declare dans le texte.
# Exemple illustratif, sur un dossier de démonstration
mkdir -p demo-commande/resumer-pr
cat > demo-commande/resumer-pr/SKILL.md <<'EOF'
---
description: Resume une pull request a partir de son numero, pour preparer une revue rapide.
arguments:
- name: numero_pr
---
Resume la pull request numero $numero_pr en trois points : ce qui change,
ce que ca casse potentiellement, ce qui reste a tester.
EOF
Cette fusion simplifie un choix qui, quelques mois plus tôt, obligeait à trancher entre deux fichiers voisins dès le départ. Elle ne dispense pas de choisir le bon emplacement, personnel ou projet, ni d'écrire une description assez précise pour que la skill se déclenche au bon moment sans intervention : c'est justement ce mécanisme de déclenchement, déjà posé dans apprendre un workflow à Claude, qui décide si le travail d'écriture sert à quelque chose. Une commande qui existe mais que personne ne pense à taper, faute d'une description qui aurait pu la déclencher automatiquement, rend exactement le même service que si elle n'avait jamais été écrite.
Skill personnelle contre skill de projet
| Emplacement d'une skill | Chemin du fichier | Projets couverts | Ce qu'on verse au contrôle de version |
|---|---|---|---|
| Skill personnelle | ~/.claude/skills/nom/SKILL.md | Tous les projets ouverts depuis ce compte | Reste hors du dépôt du projet en cours |
| Skill de projet | .claude/skills/nom/SKILL.md | Ce dépôt précis seulement | Se verse au dépôt pour être partagée avec l'équipe |
De la commande tapée au texte substitué
Une développeuse ouvre un ancien fichier .claude/commands/deploy.md écrit plusieurs mois plus tôt dans son projet, tape la commande /deploy dans une session Claude Code, et Claude applique le contenu de ce fichier à la lettre.
Écrivez en une phrase ce que cette situation établit, et en une phrase ce qu'elle n'établit pas.
Ce que cela établit : Ce résultat établit que l'ancien mécanisme de commande en fichier .claude/commands continue de fonctionner sur un fichier existant, même longtemps après son écriture.
Ce que cela n’établit pas : Il n'établit pas quel emplacement choisir pour une commande écrite aujourd'hui, puisque seul le fonctionnement d'un fichier déjà en place a été constaté.
Les trois calibrages faux les plus courants
- Trop large Ce résultat montre que l'ancien mécanisme de commandes reste la forme recommandée pour écrire une nouvelle automatisation aujourd'hui.
- Trop étroit Ce résultat ne prouve rien puisqu'une seule commande a été testée sur un seul projet.
- À côté Ce résultat montre que la développeuse connaissait le contenu exact du fichier avant de taper la commande.
- Un fichier .claude/commands/nom.md et un dossier .claude/skills/nom/SKILL.md produisent la même commande avec le même comportement, les anciens fichiers continuent de fonctionner sans conversion.
- Pour une skill personnelle ou de projet, le nom de la commande vient du nom du dossier, pas du champ name du frontmatter, qui ne sert que d'étiquette d'affichage ; dans une skill de plugin, name fixe le dernier segment de la commande.
- Une skill personnelle sous ~/.claude/skills s'applique à tous les projets du compte, une skill de projet sous .claude/skills ne s'applique qu'au dépôt où elle est versée.
- $ARGUMENTS reçoit toute la chaîne tapée après la commande ; l'indexation par mot part de zéro, $0 est le premier mot et $1 le deuxième, et un argument nommé dans le frontmatter se lit par son propre nom dans le corps.
Choisissez un geste que vous répétez dans votre travail, écrivez-le dans un fichier .claude/skills/mon-geste/SKILL.md avec un frontmatter description d'une phrase et le corps des instructions, puis invoquez-le par /mon-geste dans une session pour confirmer qu'il s'exécute.
Chaque affirmation datable de cette leçon renvoie ici au texte public qui la porte. Une source qui ne s’ouvre pas ne prouve rien.
- Claude Code, skills, indexation des arguments à base zéro et nom de commande selon la portée consultée le 2026-09-02