Slash-Befehle bieten eine Möglichkeit, Claude Code-Sitzungen mit speziellen Befehlen zu steuern, die mit / beginnen. Diese Befehle können über das SDK gesendet werden, um Aktionen wie das Löschen des Gesprächsverlaufs, das Komprimieren von Nachrichten oder das Abrufen von Hilfe durchzuführen.

Verfügbare Slash-Befehle entdecken

Das Claude Code SDK stellt Informationen über verfügbare Slash-Befehle in der Systeminitialisierungsnachricht bereit. Greifen Sie auf diese Informationen zu, wenn Ihre Sitzung startet:
import { query } from "@anthropic-ai/claude-code";

for await (const message of query({
  prompt: "Hallo Claude",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Verfügbare Slash-Befehle:", message.slash_commands);
    // Beispielausgabe: ["/compact", "/clear", "/help"]
  }
}

Slash-Befehle senden

Senden Sie Slash-Befehle, indem Sie sie in Ihren Prompt-String einschließen, genau wie normalen Text:
import { query } from "@anthropic-ai/claude-code";

// Einen Slash-Befehl senden
for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "result") {
    console.log("Befehl ausgeführt:", message.result);
  }
}

Häufige Slash-Befehle

/compact - Gesprächsverlauf komprimieren

Der /compact-Befehl reduziert die Größe Ihres Gesprächsverlaufs, indem er ältere Nachrichten zusammenfasst und dabei wichtigen Kontext bewahrt:
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("Komprimierung abgeschlossen");
    console.log("Token vor Komprimierung:", message.compact_metadata.pre_tokens);
    console.log("Auslöser:", message.compact_metadata.trigger);
  }
}

/clear - Gespräch löschen

Der /clear-Befehl startet ein neues Gespräch, indem er den gesamten vorherigen Verlauf löscht:
import { query } from "@anthropic-ai/claude-code";

// Gespräch löschen und neu beginnen
for await (const message of query({
  prompt: "/clear",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Gespräch gelöscht, neue Sitzung gestartet");
    console.log("Sitzungs-ID:", message.session_id);
  }
}

Benutzerdefinierte Slash-Befehle erstellen

Zusätzlich zur Verwendung eingebauter Slash-Befehle können Sie Ihre eigenen benutzerdefinierten Befehle erstellen, die über das SDK verfügbar sind. Benutzerdefinierte Befehle werden als Markdown-Dateien in bestimmten Verzeichnissen definiert, ähnlich wie Subagenten konfiguriert werden.

Dateispeicherorte

Benutzerdefinierte Slash-Befehle werden in bestimmten Verzeichnissen basierend auf ihrem Geltungsbereich gespeichert:
  • Projektbefehle: .claude/commands/ - Nur im aktuellen Projekt verfügbar
  • Persönliche Befehle: ~/.claude/commands/ - In allen Ihren Projekten verfügbar

Dateiformat

Jeder benutzerdefinierte Befehl ist eine Markdown-Datei, bei der:
  • Der Dateiname (ohne .md-Erweiterung) zum Befehlsnamen wird
  • Der Dateiinhalt definiert, was der Befehl tut
  • Optionale YAML-Frontmatter bietet Konfiguration

Grundlegendes Beispiel

Erstellen Sie .claude/commands/refactor.md:
Refaktorisieren Sie den ausgewählten Code, um Lesbarkeit und Wartbarkeit zu verbessern.
Konzentrieren Sie sich auf Clean Code-Prinzipien und bewährte Praktiken.
Dies erstellt den /refactor-Befehl, den Sie über das SDK verwenden können.

Mit Frontmatter

Erstellen Sie .claude/commands/security-check.md:
---
allowed-tools: Read, Grep, Glob
description: Sicherheitsvulnerabilitätsscan ausführen
model: claude-3-5-sonnet-20241022
---

Analysieren Sie die Codebasis auf Sicherheitsvulnerabilitäten einschließlich:
- SQL-Injection-Risiken
- XSS-Vulnerabilitäten
- Exponierte Anmeldedaten
- Unsichere Konfigurationen

Benutzerdefinierte Befehle im SDK verwenden

Sobald sie im Dateisystem definiert sind, sind benutzerdefinierte Befehle automatisch über das SDK verfügbar:
import { query } from "@anthropic-ai/claude-code";

// Einen benutzerdefinierten Befehl verwenden
for await (const message of query({
  prompt: "/refactor src/auth/login.ts",
  options: { maxTurns: 3 }
})) {
  if (message.type === "assistant") {
    console.log("Refaktorisierungsvorschläge:", message.message);
  }
}

// Benutzerdefinierte Befehle erscheinen in der slash_commands-Liste
for await (const message of query({
  prompt: "Hallo",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    // Wird sowohl eingebaute als auch benutzerdefinierte Befehle enthalten
    console.log("Verfügbare Befehle:", message.slash_commands);
    // Beispiel: ["/compact", "/clear", "/help", "/refactor", "/security-check"]
  }
}

Erweiterte Funktionen

Argumente und Platzhalter

Benutzerdefinierte Befehle unterstützen dynamische Argumente mit Platzhaltern: Erstellen Sie .claude/commands/fix-issue.md:
---
argument-hint: [issue-nummer] [priorität]
description: Ein GitHub-Issue beheben
---

Beheben Sie Issue #$1 mit Priorität $2.
Überprüfen Sie die Issue-Beschreibung und implementieren Sie die notwendigen Änderungen.
Verwendung im SDK:
import { query } from "@anthropic-ai/claude-code";

// Argumente an benutzerdefinierten Befehl übergeben
for await (const message of query({
  prompt: "/fix-issue 123 hoch",
  options: { maxTurns: 5 }
})) {
  // Befehl wird mit $1="123" und $2="hoch" verarbeitet
  if (message.type === "result") {
    console.log("Issue behoben:", message.result);
  }
}

Bash-Befehlsausführung

Benutzerdefinierte Befehle können Bash-Befehle ausführen und deren Ausgabe einschließen: Erstellen Sie .claude/commands/git-commit.md:
---
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
description: Einen Git-Commit erstellen
---

## Kontext

- Aktueller Status: !`git status`
- Aktueller Diff: !`git diff HEAD`

## Aufgabe

Erstellen Sie einen Git-Commit mit angemessener Nachricht basierend auf den Änderungen.

Dateireferenzen

Schließen Sie Dateiinhalte mit dem @-Präfix ein: Erstellen Sie .claude/commands/review-config.md:
---
description: Konfigurationsdateien überprüfen
---

Überprüfen Sie die folgenden Konfigurationsdateien auf Probleme:
- Paket-Konfiguration: @package.json
- TypeScript-Konfiguration: @tsconfig.json
- Umgebungs-Konfiguration: @.env

Prüfen Sie auf Sicherheitsprobleme, veraltete Abhängigkeiten und Fehlkonfigurationen.

Organisation mit Namensräumen

Organisieren Sie Befehle in Unterverzeichnissen für bessere Struktur:
.claude/commands/
├── frontend/
   ├── component.md      # Erstellt /component (projekt:frontend)
   └── style-check.md     # Erstellt /style-check (projekt:frontend)
├── backend/
   ├── api-test.md        # Erstellt /api-test (projekt:backend)
   └── db-migrate.md      # Erstellt /db-migrate (projekt:backend)
└── review.md              # Erstellt /review (projekt)
Das Unterverzeichnis erscheint in der Befehlsbeschreibung, beeinflusst aber nicht den Befehlsnamen selbst.

Praktische Beispiele

Code-Review-Befehl

Erstellen Sie .claude/commands/code-review.md:
---
allowed-tools: Read, Grep, Glob, Bash(git diff:*)
description: Umfassendes Code-Review
---

## Geänderte Dateien
!`git diff --name-only HEAD~1`

## Detaillierte Änderungen
!`git diff HEAD~1`

## Review-Checkliste

Überprüfen Sie die obigen Änderungen auf:
1. Codequalität und Lesbarkeit
2. Sicherheitsvulnerabilitäten
3. Leistungsauswirkungen
4. Testabdeckung
5. Dokumentationsvollständigkeit

Geben Sie spezifisches, umsetzbares Feedback nach Priorität organisiert.

Test-Runner-Befehl

Erstellen Sie .claude/commands/test.md:
---
allowed-tools: Bash, Read, Edit
argument-hint: [test-muster]
description: Tests mit optionalem Muster ausführen
---

Tests ausführen, die dem Muster entsprechen: $ARGUMENTS

1. Test-Framework erkennen (Jest, pytest, etc.)
2. Tests mit dem bereitgestellten Muster ausführen
3. Falls Tests fehlschlagen, analysieren und beheben
4. Erneut ausführen, um Korrekturen zu verifizieren
Verwenden Sie diese Befehle über das SDK:
import { query } from "@anthropic-ai/claude-code";

// Code-Review ausführen
for await (const message of query({
  prompt: "/code-review",
  options: { maxTurns: 3 }
})) {
  // Review-Feedback verarbeiten
}

// Spezifische Tests ausführen
for await (const message of query({
  prompt: "/test auth",
  options: { maxTurns: 5 }
})) {
  // Testergebnisse behandeln
}

Siehe auch