Une commande slash personnalisée est un fichier Markdown que Claude Code développe en invite quand vous tapez son nom. Cet atelier met six commandes dans .claude/commands/, montre comment les arguments et le front matter fonctionnent, et les garde en dehors de l’alias bundlé /review. Les drapeaux quotidiens et les fichiers de mémoire sont dans l’aide-mémoire Claude Code.
Commandes de projet et commandes personnelles
Les commandes personnalisées ont été fusionnées dans les skills. Un fichier à .claude/commands/deploy.md et un skill à .claude/skills/deploy/SKILL.md créent tous deux /deploy. Les fichiers de commande existants continuent de fonctionner. Les skills ajoutent un dossier pour les scripts d’aide et quelques champs que les fichiers de commande ignorent. Utilisez un fichier de commande quand le flux de travail entier s’adapte à un fichier Markdown. Utilisez un skill quand vous avez besoin de ces fichiers supplémentaires.
| Portée | Chemin | Charge dans |
|---|---|---|
| Projet | .claude/commands/<file>.md dans le dépôt |
Sessions dans ce dépôt. Committez le fichier |
| Personnel | ~/.claude/commands/<file>.md |
Tous vos projets sur cette machine |
La référence du répertoire liste commands/*.md comme projet et global, pareil que les skills. Les fichiers globaux vivent sous ~/.claude/. Sur Windows, ce répertoire est %USERPROFILE%\.claude.
Quand deux définitions partagent un nom de commande, la résolution suit les skills :
| Conflit | Ce que /name exécute |
|---|---|
| Personnel et projet | Celui personnel |
| Un skill et un fichier de commande | Le skill |
| Votre skill et un skill bundlé | Votre skill remplace la commande bundlée, et les alias bundlés restent sur l’original |
/review est un alias du /code-review bundlé. Un skill de projet nommé code-review remplace /code-review uniquement. Taper /review exécute toujours la révision bundlée. La commande de révision dans cet atelier est /team:review donc le nom est sans ambiguïté.
Les fichiers de commande ne sont pas regardés à l’intérieur des répertoires que vous avez ajoutés avec --add-dir. Redémarrez la session après l’avoir édité là. Les fichiers dans le .claude/commands/ du projet dans lequel vous avez commencé se chargent avec la session.
Les sessions cloud ne lisent pas ~/.claude/skills/ depuis votre ordinateur portable. Une commande personnelle sous ~/.claude/commands/ est un outil de terminal local. Committez les commandes de projet quand l’équipe devrait les partager.
Arguments
Tout ce qui suit le nom de la commande est la chaîne d’argument.
| Placeholder | Se développe en |
|---|---|
$ARGUMENTS |
La chaîne complète telle que tapée. Si le fichier ne lit jamais d’arguments, Claude Code ajoute une ligne ARGUMENTS: de toute façon |
$ARGUMENTS[0], $0 |
Premier argument |
$ARGUMENTS[1], $1 |
Deuxième argument |
Le guillemotage est de style shell. /explain "session cookie" src/auth définit $0 à session cookie et $1 à src/auth. $ARGUMENTS reste le texte brut, guillemets inclus tels que vous les avez tapés.
argument-hint n’est que l’indice d’autocomplétion. Il n’analyse rien.
argument-hint: "[path]"
Une valeur que l’utilisateur tape et qui elle-même contient $1 ou $ARGUMENTS est insérée comme texte littéral. Claude Code ne développe pas les placeholders à l’intérieur de l’argument.
Front matter qui change le comportement
Les fichiers de commande acceptent le front matter de skill sauf name et paths. La commande que vous tapez vient du chemin du fichier. Une clé name dans un fichier de commande est ignorée.
| Champ | Ce pour quoi l’utiliser |
|---|---|
description |
Une ligne. Claude peut correspondre cela et charger la commande quand disable-model-invocation est faux |
argument-hint |
Indice dans le menu /, par exemple [path] |
allowed-tools |
Les outils qui ignorent l’invite de permission pour le tour qui a invoqué la commande. Séparés par l’espace, virgule ou liste YAML |
model |
Modèle pour le reste de ce tour. Mêmes valeurs que /model, ou inherit. Le modèle de session revient sur le prochain message |
disable-model-invocation |
true cache la commande de l’utilisation automatique. Vous la lancez toujours avec /name |
allowed-tools ne supprime pas les autres outils. Il pré-approuve ceux que vous listez, puis l’octroi se termine quand vous envoyez le message suivant. Le corps de la commande reste dans la conversation. Vérifiez ce champ avant de faire confiance à une commande que quelqu’un d’autre a committée : une commande de dépôt peut s’accorder une large règle Bash.
Définissez disable-model-invocation: true sur tout ce qui a un effet secondaire, y compris les assistants de commit et les refactorages. Laissez-le désactivé uniquement quand vous voulez que Claude tire la commande parce que la description a correspondu au chat.
model: haiku sur une commande explain garde ce tour sur l’alias plus petit sans changer /model pour la session. Un alias que votre organisation a bloqué est ignoré et le modèle de session reste.
Namespacing avec des sous-dossiers
Un fichier dans un sous-répertoire de .claude/commands/ obtient une commande avec deux-points. Chaque segment de dossier devient un segment :, puis le nom du fichier sans .md.
| Fichier | Commande |
|---|---|
.claude/commands/explain.md |
/explain |
.claude/commands/team/review.md |
/team:review |
.claude/commands/frontend/component.md |
/frontend:component |
La même règle s’applique sous ~/.claude/commands/. Utilisez un dossier quand le nom court est déjà un built-in ou un alias bundlé. Les commandes de plugin ajoutent le nom du plugin en face, tel que /my-plugin:db:migrate, qui est un namespace séparé des dossiers de votre projet.
Six commandes que vous pouvez copier
Créez le dossier, puis un fichier par section. Chaque commande définit disable-model-invocation: true pour qu’elle s’exécute quand vous la tapez.
mkdir -p .claude/commands/team
Révision : /team:review
Fichier : .claude/commands/team/review.md
---
description: Review the current diff for bugs, missing tests, and risky config
argument-hint: "[optional path or topic]"
disable-model-invocation: true
allowed-tools: Read, Grep, Glob, Bash(git status *), Bash(git diff *), Bash(git log *)
model: sonnet
---
Review the working tree. Stay inside $ARGUMENTS when that text names a path or topic.
Otherwise review the full diff.
Read `git status`, `git diff`, and the last five commits for style.
Report only issues you can point at with a file and a reason.
Group findings as blocking, should-fix, and optional.
Do not edit files. Do not propose a commit.
Exécutez /team:review ou /team:review src/billing. La commande bundlée /review n’est pas modifiée.
Test : /test
Fichier : .claude/commands/test.md
---
description: Run the project tests and summarize failures
argument-hint: "[optional test path or name]"
disable-model-invocation: true
allowed-tools: Read, Grep, Glob, Bash(npm test*), Bash(pytest*)
---
Run the tests. If $ARGUMENTS is non-empty, pass it through as a path or a test name filter.
Prefer the runner this repo already uses. Read the README or package manifest before inventing a command.
When something fails, quote the assertion and name the file.
When everything passes, say so in one line and stop.
/test exécute la suite. /test tests/test_auth.py l’affine. Cette commande demande à Claude d’exécuter les tests. Un hook qui les exécute après chaque modification est un mécanisme différent, couvert dans les hooks.
Message de commit : /commit-msg
Fichier : .claude/commands/commit-msg.md
La commande brouille un message. Elle n’octroie pas git commit.
---
description: Draft a commit message from the current diff
argument-hint: "[optional scope hint]"
disable-model-invocation: true
allowed-tools: Bash(git status *), Bash(git diff *), Bash(git log *)
model: haiku
---
Look at status, the unstaged and staged diff, and recent commit subjects.
Write one commit message.
Subject: imperative, 72 characters or fewer.
Body: only if the diff needs a reason that the subject cannot carry.
Use this scope hint when it is present: $ARGUMENTS
Print the message in a single fenced block.
Do not stage files. Do not create a commit.
/commit-msg auth pousse le sujet vers ce domaine. Copiez le bloc dans git commit vous-même, ou demandez dans un message de suivi si vous voulez que Claude se commette après que vous ayez lu le message.
Expliquez : /explain
Fichier : .claude/commands/explain.md
---
description: Explain a file, symbol, or diff in plain language
argument-hint: "[path or symbol]"
disable-model-invocation: true
allowed-tools: Read, Grep, Glob
model: haiku
---
Explain $ARGUMENTS.
Start with what it does in two sentences.
Then the inputs and outputs, then one sharp edge a caller can hit.
Quote short snippets. Link symbols to the file you read.
If $ARGUMENTS is empty, ask which file to open.
/explain @src/worker.py fonctionne toujours parce que @ est la mention de fichier habituelle de l’aide-mémoire. $ARGUMENTS reçoit le texte que vous avez tapé après /explain.
Refactoriser : /refactor
Fichier : .claude/commands/refactor.md
---
description: Refactor a named file or symbol without changing behavior
argument-hint: "[path or symbol]"
disable-model-invocation: true
allowed-tools: Read, Grep, Glob, Edit, Write, Bash(npm test*), Bash(pytest*)
model: sonnet
---
Refactor $ARGUMENTS. Keep behavior the same.
Before editing, state the change in three lines: what moves, what stays, how you will check.
Touch only the files required for that change.
After editing, run the smallest test command that covers the change.
If you cannot find a test, say so and stop before a wide rewrite.
L’octroi de allowed-tools dure pour le tour qui a commencé par /refactor. Le message suivant demande à nouveau la permission sous vos règles normales.
Docs : /docs
Fichier : .claude/commands/docs.md
---
description: Update the docs that match a code change
argument-hint: "[path or topic]"
disable-model-invocation: true
allowed-tools: Read, Grep, Glob, Edit, Write
model: haiku
---
Update documentation so it matches the current code for $ARGUMENTS.
Prefer an existing doc file over a new one.
Describe the behavior a caller can observe.
Do not add a changelog entry unless the repo already keeps one next to this feature.
If code and docs disagree, trust the code and say which line you used.
Une ligne ! dans le fichier
Le mode shell interactif, le ! que vous tapez dans l’invite, est séparé de cela. Une ligne dans un fichier de commande qui commence par ! suivie d’une commande dans backticks s’exécute pendant que la commande est développée. Claude voit la sortie de la commande, pas le texte de la commande.
Current status:
!`git status --short`
Cet injection s’exécute via l’outil shell, et vos règles de permission s’appliquent toujours. Définissez disableSkillShellExecution à true dans les paramètres quand la politique doit remplacer ces lignes par une notice désactivée. Les skills synchronisés à partir d’un compte claude.ai ne exécutent pas ces commandes sur votre machine.
Utilisez l’injection quand l’invite est inutile sans données en direct, tel que git diff. Utilisez allowed-tools plus les instructions quand Claude doit choisir la commande.
Quand une commande est le mauvais outil
Une commande charge son corps dans la conversation principale et la laisse là. C’est ce que vous voulez pour une checklist que vous allez continuer à discuter.
Déplacez le travail vers un sous-agent quand l’exploration inonderait le chat avec des résultats de recherche. Déplacez-le vers un hook quand il doit s’exécuter à chaque édition que quelqu’un se souvienne ou non de la commande slash. Les faits qui restent appartiennent à chaque session CLAUDE.md, que l’aide-mémoire expose. Une commande est une procédure réutilisable au sein d’une session agentique plus longue, pas un deuxième fichier de mémoire.
Après avoir ajouté les fichiers, ouvrez une nouvelle invite et tapez / puis team pour confirmer que /team:review est listé. Si une commande est manquante, la session a été démarrée en mode bare ou avec les paramètres du projet désactivés, ou le nom de fichier entre en collision avec un built-in réservé. Renommez-le ou mettez-le dans un sous-dossier.
FAQ
Où vont les commandes slash Claude Code personnalisées ?
Mettez un fichier Markdown dans .claude/commands/ pour le partager avec le dépôt, ou dans ~/.claude/commands/ pour l’utiliser dans chaque projet sur votre machine. Le nom du fichier devient la commande. Sur Windows, ~/.claude est %USERPROFILE%\.claude. Un répertoire de skill à .claude/skills/<name>/SKILL.md crée le même type de commande /name et gagne s’il existe les deux.
Comment passer des arguments à une commande slash Claude Code ?
Le texte après le nom de la commande est la chaîne d’argument. Dans le fichier, $ARGUMENTS se développe en la chaîne entière. $0 ou $ARGUMENTS[0] est le premier mot, et $1 est le deuxième. Enveloppez une valeur multi-mot entre guillemets quand vous invoquez la commande. argument-hint dans le front matter est l’indice d’autocomplétion, tel que [path].
Quelle est la différence entre une commande de projet et une commande utilisateur ?
Un fichier sous le .claude/commands/ du dépôt a une portée de projet et est destiné à être committé. Un fichier sous ~/.claude/commands/ est personnel et se charge dans tous vos projets locaux. Les commandes utilisent le même mécanisme que les skills : une définition personnelle remplace une définition de projet quand les noms de commande correspondent, et un skill remplace un fichier de commande avec le même nom.
Pourquoi ma commande /review exécute toujours la révision intégrée ?
/review est l’alias du skill bundlé /code-review. Un skill personnalisé nommé code-review remplace /code-review et ne remplace pas cet alias. Nommez votre checklist quelque chose d’autre, ou mettez-la dans un sous-dossier pour que la commande soit /team:review.
Quelles clés du front matter une commande accepte-t-elle ?
Les fichiers de commande acceptent les champs de skill sauf name et paths, qui sont ignorés. Les plus utiles sont description, argument-hint, allowed-tools, model et disable-model-invocation. Vous invoquez le fichier par son chemin sous commands/, pas par une clé name.
Comment ce guide a été vérifié
Rédigé à la main à partir de la documentation officielle, chaque commande revérifiée, puis relu une seconde fois avant publication. Dernière relecture le .
Sources officielles consultées pour cet article

