Les commandes slash fournissent un moyen de contrôler les sessions Claude Code avec des commandes spéciales qui commencent par /. Ces commandes peuvent être envoyées via le SDK pour effectuer des actions comme effacer l’historique de conversation, compacter les messages, ou obtenir de l’aide.

Découvrir les Commandes Slash Disponibles

Le SDK Claude Code fournit des informations sur les commandes slash disponibles dans le message d’initialisation du système. Accédez à ces informations lorsque votre session démarre :
import { query } from "@anthropic-ai/claude-code";

for await (const message of query({
  prompt: "Bonjour Claude",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Commandes slash disponibles :", message.slash_commands);
    // Exemple de sortie : ["/compact", "/clear", "/help"]
  }
}

Envoyer des Commandes Slash

Envoyez des commandes slash en les incluant dans votre chaîne de prompt, comme du texte normal :
import { query } from "@anthropic-ai/claude-code";

// Envoyer une commande slash
for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "result") {
    console.log("Commande exécutée :", message.result);
  }
}

Commandes Slash Courantes

/compact - Compacter l’Historique de Conversation

La commande /compact réduit la taille de votre historique de conversation en résumant les messages plus anciens tout en préservant le contexte important :
import { query } from "@anthropic-ai/claude-code";

for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "compact_boundary") {
    console.log("Compactage terminé");
    console.log("Jetons pré-compactage :", message.compact_metadata.pre_tokens);
    console.log("Déclencheur :", message.compact_metadata.trigger);
  }
}

/clear - Effacer la Conversation

La commande /clear démarre une nouvelle conversation en effaçant tout l’historique précédent :
import { query } from "@anthropic-ai/claude-code";

// Effacer la conversation et recommencer
for await (const message of query({
  prompt: "/clear",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Conversation effacée, nouvelle session démarrée");
    console.log("ID de session :", message.session_id);
  }
}

Créer des Commandes Slash Personnalisées

En plus d’utiliser les commandes slash intégrées, vous pouvez créer vos propres commandes personnalisées qui sont disponibles via le SDK. Les commandes personnalisées sont définies comme des fichiers markdown dans des répertoires spécifiques, similaire à la façon dont les sous-agents sont configurés.

Emplacements des Fichiers

Les commandes slash personnalisées sont stockées dans des répertoires désignés selon leur portée :
  • Commandes de projet : .claude/commands/ - Disponibles uniquement dans le projet actuel
  • Commandes personnelles : ~/.claude/commands/ - Disponibles dans tous vos projets

Format de Fichier

Chaque commande personnalisée est un fichier markdown où :
  • Le nom du fichier (sans l’extension .md) devient le nom de la commande
  • Le contenu du fichier définit ce que fait la commande
  • Le frontmatter YAML optionnel fournit la configuration

Exemple de Base

Créez .claude/commands/refactor.md :
Refactorisez le code sélectionné pour améliorer la lisibilité et la maintenabilité.
Concentrez-vous sur les principes de code propre et les meilleures pratiques.
Cela crée la commande /refactor que vous pouvez utiliser via le SDK.

Avec Frontmatter

Créez .claude/commands/security-check.md :
---
allowed-tools: Read, Grep, Glob
description: Exécuter un scan de vulnérabilités de sécurité
model: claude-3-5-sonnet-20241022
---

Analysez la base de code pour les vulnérabilités de sécurité incluant :
- Risques d'injection SQL
- Vulnérabilités XSS
- Identifiants exposés
- Configurations non sécurisées

Utiliser les Commandes Personnalisées dans le SDK

Une fois définies dans le système de fichiers, les commandes personnalisées sont automatiquement disponibles via le SDK :
import { query } from "@anthropic-ai/claude-code";

// Utiliser une commande personnalisée
for await (const message of query({
  prompt: "/refactor src/auth/login.ts",
  options: { maxTurns: 3 }
})) {
  if (message.type === "assistant") {
    console.log("Suggestions de refactorisation :", message.message);
  }
}

// Les commandes personnalisées apparaissent dans la liste slash_commands
for await (const message of query({
  prompt: "Bonjour",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    // Inclura à la fois les commandes intégrées et personnalisées
    console.log("Commandes disponibles :", message.slash_commands);
    // Exemple : ["/compact", "/clear", "/help", "/refactor", "/security-check"]
  }
}

Fonctionnalités Avancées

Arguments et Espaces Réservés

Les commandes personnalisées supportent les arguments dynamiques en utilisant des espaces réservés : Créez .claude/commands/fix-issue.md :
---
argument-hint: [numéro-issue] [priorité]
description: Corriger une issue GitHub
---

Corrigez l'issue #$1 avec la priorité $2.
Vérifiez la description de l'issue et implémentez les changements nécessaires.
Utilisez dans le SDK :
import { query } from "@anthropic-ai/claude-code";

// Passer des arguments à une commande personnalisée
for await (const message of query({
  prompt: "/fix-issue 123 high",
  options: { maxTurns: 5 }
})) {
  // La commande traitera avec $1="123" et $2="high"
  if (message.type === "result") {
    console.log("Issue corrigée :", message.result);
  }
}

Exécution de Commandes Bash

Les commandes personnalisées peuvent exécuter des commandes bash et inclure leur sortie : Créez .claude/commands/git-commit.md :
---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
description: Créer un commit git
---

## Contexte

- Statut actuel : !`git status`
- Diff actuel : !`git diff HEAD`

## Tâche

Créez un commit git avec un message approprié basé sur les changements.

Références de Fichiers

Incluez le contenu des fichiers en utilisant le préfixe @ : Créez .claude/commands/review-config.md :
---
description: Réviser les fichiers de configuration
---

Révisez les fichiers de configuration suivants pour les problèmes :
- Configuration du package : @package.json
- Configuration TypeScript : @tsconfig.json
- Configuration d'environnement : @.env

Vérifiez les problèmes de sécurité, les dépendances obsolètes, et les mauvaises configurations.

Organisation avec Espaces de Noms

Organisez les commandes dans des sous-répertoires pour une meilleure structure :
.claude/commands/
├── frontend/
   ├── component.md      # Crée /component (projet:frontend)
   └── style-check.md     # Crée /style-check (projet:frontend)
├── backend/
   ├── api-test.md        # Crée /api-test (projet:backend)
   └── db-migrate.md      # Crée /db-migrate (projet:backend)
└── review.md              # Crée /review (projet)
Le sous-répertoire apparaît dans la description de la commande mais n’affecte pas le nom de la commande lui-même.

Exemples Pratiques

Commande de Révision de Code

Créez .claude/commands/code-review.md :
---
allowed-tools: Read, Grep, Glob, Bash(git diff:*)
description: Révision de code complète
---

## Fichiers Modifiés
!`git diff --name-only HEAD~1`

## Changements Détaillés
!`git diff HEAD~1`

## Liste de Vérification de Révision

Révisez les changements ci-dessus pour :
1. Qualité et lisibilité du code
2. Vulnérabilités de sécurité
3. Implications de performance
4. Couverture de tests
5. Complétude de la documentation

Fournissez des commentaires spécifiques et exploitables organisés par priorité.

Commande d’Exécution de Tests

Créez .claude/commands/test.md :
---
allowed-tools: Bash, Read, Edit
argument-hint: [motif-test]
description: Exécuter des tests avec motif optionnel
---

Exécutez les tests correspondant au motif : $ARGUMENTS

1. Détectez le framework de test (Jest, pytest, etc.)
2. Exécutez les tests avec le motif fourni
3. Si les tests échouent, analysez et corrigez-les
4. Ré-exécutez pour vérifier les corrections
Utilisez ces commandes via le SDK :
import { query } from "@anthropic-ai/claude-code";

// Exécuter une révision de code
for await (const message of query({
  prompt: "/code-review",
  options: { maxTurns: 3 }
})) {
  // Traiter les commentaires de révision
}

// Exécuter des tests spécifiques
for await (const message of query({
  prompt: "/test auth",
  options: { maxTurns: 5 }
})) {
  // Gérer les résultats de test
}

Voir Aussi