04 - Slash commands : les commandes /
Transformer un prompt que tu retapes chaque semaine en une commande que tu invoques en trois lettres.
Temps de lecture : 13 min | Niveau : Intermediaire
Ce que tu sauras faire apres
- Connaitre les commandes integrees qui servent vraiment tous les jours.
- Creer ta propre commande avec un fichier
SKILL.md. - Passer des arguments a ta commande et injecter la sortie d'une commande shell.
- Restreindre les outils qu'une commande peut utiliser.
- Ecrire une commande
/review-sqlprete a l'emploi pour tes modeles dbt.
1. Deux familles de commandes
Quand tu tapes /, tu vois deux choses melangees :
- Les commandes integrees : elles executent une logique fixe, codee dans Claude Code. Exemples :
/help,/compact,/login. - Les skills : ce sont des prompts. Elles donnent a Claude des instructions detaillees et le laissent orchestrer le travail avec ses outils. Une skill n'est chargee en contexte que quand elle est invoquee.
Tes commandes personnalisees sont des skills. C'est ce qui rend l'extension si simple : tu ecris du Markdown, pas du code.
2. Les commandes integrees a connaitre
Il en existe des dizaines. Voici celles qui changent ton quotidien.
Gerer le contexte
| Commande | Ce qu'elle fait |
|---|---|
/clear [nom] | Demarre une nouvelle conversation avec un contexte vide |
/compact [instructions] | Libere du contexte en resumant la conversation |
/context [all] | Visualise l'utilisation actuelle du contexte |
/btw [question] | Pose une question de cote, sans l'ajouter a la conversation |
/rewind [cible] | Ramene le code et la conversation a un point de sauvegarde |
Comprendre et configurer
| Commande | Ce qu'elle fait |
|---|---|
/help | Affiche l'aide et les commandes disponibles |
/init | Initialise le projet avec un guide CLAUDE.md |
/memory | Edite les fichiers CLAUDE.md et gere la memoire automatique |
/permissions | Gere les regles allow, ask et deny |
/hooks | Consulte la configuration des hooks |
/config ou /settings | Ouvre l'interface de reglages |
/status | Affiche l'etat de la session |
/doctor | Lance un diagnostic qui detecte et corrige les problemes |
/model [modele] | Change de modele |
/effort [niveau] | Regle le niveau d'effort |
Travailler
| Commande | Ce qu'elle fait |
|---|---|
/plan [description] | Entre en plan mode |
/diff | Passe en revue les changements de ton repertoire de travail |
/code-review [niveau] [--fix] [--comment] | Revue d'un diff ou d'une PR pour trouver des bugs |
/review | Alias de /code-review |
/security-review [niveau] [--fix] | Verifie le diff pour des vulnerabilites |
/simplify [instructions] | Relit le code modifie et applique les simplifications (qualite, pas chasse aux bugs) |
/verify | Lance ton application et verifie sur l'appli qui tourne que le changement marche |
/subtask [nom] | Confie une tache annexe a un sous-agent |
/agents | Rappelle comment creer et gerer des sous-agents (.claude/agents/) |
/batch <instruction> | Repartit un gros changement sur 5 a 30 sous-agents, un worktree chacun. Demande un depot Git |
Divers utiles
| Commande | Ce qu'elle fait |
|---|---|
/add-dir <chemin> | Ajoute un dossier de travail pour la session |
/cd <chemin> | Deplace la session vers un autre dossier de travail |
/resume | Change de conversation depuis la session |
/branch [nom] | Cree une branche de la conversation courante |
/export [fichier] | Exporte la conversation en texte brut |
/cost ou /usage | Affiche l'usage de tokens et les couts |
/mcp | Gere les connexions aux serveurs MCP |
/fewer-permission-prompts | Construit une liste d'autorisations pour reduire les prompts |
Les commandes ne sont reconnues qu'au debut d'un message. Tape / puis des lettres pour filtrer, et Tab pour completer.
Deux nuances honnetes.
- Plusieurs de ces commandes ne sont pas codees en dur : ce sont des skills livrees avec Claude Code (
/code-review,/security-review,/verify,/simplify,/doctor,/batch,/fewer-permission-prompts). Elles fonctionnent exactement comme celles que tu vas ecrire en section 3.- La disponibilite depend de ta plateforme, de ton plan et de ton environnement. La liste qui fait foi chez toi, c'est celle de
/help.
3. Creer ta propre commande
Ou mettre le fichier
| Portee | Chemin | Charge dans |
|---|---|---|
| Personnel | ~/.claude/skills/<nom>/SKILL.md | Tous tes projets sur cette machine |
| Projet | .claude/skills/<nom>/SKILL.md | Ce depot (commite-le pour le partager) |
| Imbrique | <sous-dossier>/.claude/skills/<nom>/SKILL.md | Les sessions dans ou sous ce dossier |
| Plugin | <plugin>/skills/<nom>/SKILL.md | Invoquee via /nom-plugin:nom-skill |
L'ancien format .claude/commands/<nom>.md fonctionne toujours, avec le meme frontmatter (sauf les champs name et paths). Le format skill est prefere parce qu'il autorise des fichiers annexes dans le dossier de la skill.
La structure minimale
---
name: ma-commande
description: Ce que fait cette commande
---
Tes instructions pour Claude, en Markdown.Tu l'invoques avec /ma-commande. Si tu omets name, c'est le nom du dossier qui sert.
Les champs de frontmatter les plus utiles
| Champ | A quoi il sert |
|---|---|
name | Nom de la commande dans le menu / (defaut : nom du dossier) |
description | Quand Claude doit utiliser cette skill |
when_to_use | Contexte de declenchement supplementaire |
disable-model-invocation | true : toi seul peux l'invoquer, Claude ne la lance pas tout seul |
user-invocable | false : seul Claude peut l'invoquer (connaissance de fond) |
allowed-tools | Pre-approuve des outils pour ce tour |
disallowed-tools | Retire des outils tant que la skill est active |
argument-hint | Indice d'autocompletion, par exemple [nom-du-modele] |
arguments | Arguments positionnels nommes |
paths | Motifs glob qui limitent l'activation automatique |
model | Force un modele pour cette skill |
effort | Force un niveau d'effort |
context | fork pour tourner dans un sous-agent isole |
agent | Type de sous-agent (Explore, Plan, general-purpose, ou un nom perso) |
shell | bash (defaut) ou powershell pour les commandes ! |
Sur Windows, si tu utilises des commandes PowerShell dans ta skill, pense a
shell: powershell.
Les arguments
Tu appelles /ma-commande argument1 argument2. Dans le fichier :
| Placeholder | Remplace par |
|---|---|
$ARGUMENTS | Tous les arguments tels que tapes |
$ARGUMENTS[N] ou $N | L'argument a l'index N (base 0) |
$nom | Un argument nomme, declare dans arguments |
${CLAUDE_PROJECT_DIR} | La racine du projet |
${CLAUDE_SKILL_DIR} | Le dossier qui contient SKILL.md |
${CLAUDE_SESSION_ID} | L'identifiant de la session courante |
${CLAUDE_EFFORT} | Le niveau d'effort courant |
Exemple avec des arguments nommes :
---
name: migre-modele
arguments: [modele, source, cible]
argument-hint: "[nom-modele] [ancienne-source] [nouvelle-source]"
---
Migre le modele $modele de la source $source vers $cible.
Reference : ${CLAUDE_PROJECT_DIR}/docs/conventions-dbt.mdAppel : /migre-modele fct_ventes raw_legacy raw_v2
Pour ecrire un vrai symbole dollar suivi d'un chiffre, echappe-le : \$1.00 donne $1.00.
Injecter la sortie d'une commande shell avec !
C'est la fonctionnalite la plus puissante. La commande tourne avant que Claude ne voie le contenu de la skill, et sa sortie remplace le placeholder.
Forme en ligne :
## Etat actuel
!`git diff HEAD`
## Version de dbt
!`dbt --version`Forme multi-lignes :
## Environnement
```!
git status --short
uv pip list | head -20
```Regles a connaitre :
- Le
!doit etre en debut de ligne ou precede d'un espace. - La sortie est inseree comme du texte brut. La substitution se fait une seule fois, la sortie n'est pas re-analysee.
- La commande est verifiee contre tes regles de permission. Une commande refusee interrompt l'invocation avec
Shell command permission check failed. - Le delai par defaut est de 2 minutes par commande.
- Un code de sortie non nul fait echouer l'invocation. Exception : le code
1des commandes de recherche ou de comparaison (grep,find,diff,git diff) est traite comme un resultat normal. Pour les autres, ajoute|| truea la fin. - Desactivable globalement avec le reglage
"disableSkillShellExecution": true.
Pre-approuver des outils avec allowed-tools
Pour eviter une demande d'autorisation a chaque appel de ta commande :
---
name: commit
description: Prepare et cree un commit
disable-model-invocation: true
allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)
---L'autorisation se termine au message suivant. Tes regles deny restent prioritaires.
4. Exemple complet : /review-sql
Une commande de revue pour tes modeles dbt. Cree .claude/skills/review-sql/SKILL.md dans ton depot et commite-le : toute l'equipe en profite.
---
name: review-sql
description: Revue d'un modele dbt : lisibilite, performance BigQuery, tests, conventions
argument-hint: "[nom-du-modele]"
disable-model-invocation: true
allowed-tools: Bash(dbt compile *) Bash(dbt ls *) Read Grep Glob
---
## Fichier a relire
Le modele demande est : $ARGUMENTS
Trouve son fichier `.sql` sous `dbt/models/` et son entree dans le `.yml` du meme dossier.
## SQL compile
!`cd dbt && dbt compile --select $ARGUMENTS --target dev 2>&1 | tail -40`
## Conventions du projet
@dbt/CONVENTIONS.md
## Ta mission
Relis le modele et produis un rapport en 4 sections, dans cet ordre.
### 1. Correction
- Jointures : y a-t-il un risque de duplication de lignes ? Verifie la cardinalite
attendue de chaque jointure.
- `NULL` : les `LEFT JOIN` suivis d'un filtre `WHERE` sur la table de droite annulent la
jointure externe. Signale chaque cas.
- Types : signale tout cast implicite, surtout sur les montants et les dates.
- Fuseaux : toute colonne de date doit etre en UTC.
### 2. Performance BigQuery
- Le modele scanne-t-il une table partitionnee sans filtre sur la colonne de partition ?
- Y a-t-il un `SELECT *` sur une table large ?
- Une CTE est-elle materialisee plusieurs fois alors qu'elle pourrait etre un modele
intermediaire ?
- Ordre des jointures : la plus grosse table doit venir en premier.
### 3. Tests
- Liste les tests declares dans le `.yml`.
- Dis lesquels manquent : `unique` et `not_null` sur la cle primaire au minimum,
`relationships` sur chaque cle etrangere, `accepted_values` sur les colonnes de statut.
- Ecris les blocs YAML manquants, prets a coller.
### 4. Conventions
- Verifie le respect de `dbt/CONVENTIONS.md` : nommage, `{{ ref() }}`, suffixes de colonnes.
## Format de sortie
Pour chaque point : le numero de ligne, le probleme en une phrase, puis le correctif en
bloc de code. Classe par gravite : BLOQUANT, IMPORTANT, MINEUR.
Si un point est correct, ne le mentionne pas. Ne fais pas de remarques de style.Appel :
/review-sql fct_commandesUne variante plus legere : /explique-table
---
name: explique-table
description: Explique une table ou un modele en langage metier
argument-hint: "[nom-table-ou-modele]"
---
Table demandee : $ARGUMENTS
1. Trouve la definition : un modele dbt sous `dbt/models/`, une source dans un `.yml`,
ou une table citee dans `src/`.
2. Explique en langage **metier**, pas technique :
- a quelle question metier cette table repond
- quelle est la granularite (une ligne = quoi exactement ?)
- d'ou viennent les donnees, en remontant jusqu'aux sources brutes
- quelles colonnes sont des cles, lesquelles sont des mesures
3. Liste les pieges : colonnes qui peuvent etre NULL, doublons possibles, colonnes
obsoletes encore presentes.
4. Termine par trois exemples de requetes SQL typiques sur cette table.
Ecris pour quelqu'un qui connait le metier mais pas le code.5. AVANT / APRES
AVANT : a chaque revue, tu retapes un long prompt de memoire. Il est different a chaque fois, tu oublies la moitie des points, et ton collegue n'a pas le meme.
APRES : /review-sql fct_commandes. Toujours les memes 4 sections, le SQL compile est injecte automatiquement, et les conventions du projet sont rappelees. Le fichier est dans Git, donc toute l'equipe utilise la meme grille.
Pourquoi c'est mieux ? Tu as transforme une connaissance dans ta tete en un artefact versionne, relisable et ameliorable par l'equipe.
Template de skill pret a copier
---
name: [NOM_DE_TA_COMMANDE]
description: [CE_QU_ELLE_FAIT_EN_UNE_PHRASE]
argument-hint: "[CE_QUE_L_UTILISATEUR_DOIT_TAPER]"
disable-model-invocation: true
allowed-tools: [OUTILS_A_PRE_APPROUVER, par exemple Bash(make test) Read Grep]
---
## Contexte automatique
!`[COMMANDE_SHELL_QUI_DONNE_LE_CONTEXTE]`
## Ta mission
Cible : $ARGUMENTS
1. [ETAPE_1]
2. [ETAPE_2]
3. [ETAPE_3]
## Format de sortie
[DECRIS_EXACTEMENT_LA_FORME_ATTENDUE]
[DIS_CE_QU_IL_NE_FAUT_PAS_FAIRE]6. Deux details qui evitent des surprises
Detection des changements a chaud. Claude Code surveille les dossiers de skills pendant la session : ~/.claude/skills/, .claude/skills/ du projet, et ceux des dossiers ajoutes avec --add-dir. Seuls les changements de texte dans SKILL.md sont detectes. Si tu crees un dossier de skills qui n'existait pas au demarrage, lance /reload-skills.
Conflits de noms. Quand plusieurs skills ont le meme nom, l'ordre est : entreprise > personnel > projet. Une skill locale remplace une skill fournie par defaut. Une skill de plugin est accessible sous /nom-plugin:nom-skill.
A retenir
- Les commandes integrees executent une logique fixe ; tes commandes sont des skills, du simple Markdown.
- Une commande vit dans
~/.claude/skills/<nom>/SKILL.md(personnel) ou.claude/skills/<nom>/SKILL.md(projet, commite). $ARGUMENTS,$1,$nompassent des arguments ;!en debut de ligne injecte la sortie d'une commande shell.allowed-toolspre-approuve des outils pour le tour ;disable-model-invocation: truereserve la commande a toi.- Une commande commitee dans Git, c'est une grille de revue partagee par toute l'equipe.
/reload-skillssi tu viens de creer un dossier de skills en cours de session.
Sources
- Claude Code - Extend Claude with skills
- Claude Code - Commands (liste complete)
- Claude Code - Best practices
- Claude Code - Configure permissions
- Claude Code - Run parallel sessions with worktrees
Liens verifies le 26 septembre 2026. Note : /docs/en/slash-commands renvoie desormais vers la page Skills ci-dessus, c'est pourquoi elle n'apparait qu'une fois.