Zum Hauptinhalt springen
Slash Commands 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 Komprimieren von Kontext, das Auflisten der Kontextnutzung oder das Aufrufen benutzerdefinierter Befehle auszuführen. Nur Befehle, die ohne ein interaktives Terminal funktionieren, können über das SDK versendet werden; die system/init-Nachricht listet die in Ihrer Sitzung verfügbaren auf.

Verfügbare Slash Commands entdecken

Das Claude Agent SDK stellt Informationen über verfügbare Slash Commands in der Systeminitalisierungsnachricht bereit. Greifen Sie auf diese Informationen zu, wenn Ihre Sitzung startet:

Slash Commands senden

Senden Sie Slash Commands, indem Sie sie in Ihre Eingabeaufforderung einbeziehen, genau wie normalen Text. Befehle, die auf der Konversationsverlauf wirken, wie /compact, benötigen vorherige Nachrichten zum Arbeiten, daher fragen die folgenden Beispiele zunächst eine Frage und senden dann den Befehl als Folgemaßnahme zur gleichen Konversation:
Eine Abfrage kann mit einem Fehler-Ergebnis enden, beispielsweise wenn das Limit maxTurns / max_turns erreicht wird, bevor die Arbeit abgeschlossen ist. Die endgültige Ergebnisnachricht hat dann is_error: true und einen Fehler-Subtyp wie error_max_turns statt success.Nach dem Ausgeben dieser endgültigen Ergebnisnachricht wirft das SDK einen Fehler, da der CLI-Prozess mit einem Nicht-Null-Code beendet wird.Umhüllen Sie die Schleife in einem try/catch in TypeScript oder try/except in Python, wenn Ihr Befehl das Limit erreichen könnte, wie in Single Message Input gezeigt, oder setzen Sie maxTurns hoch genug, damit die Arbeit abgeschlossen wird. In Python fangen Sie Exception: Das SDK zeigt Fehler-Ergebnisse als einfache Exception.

Häufige Slash Commands

/compact - Konversationsverlauf komprimieren

Der /compact-Befehl reduziert die Größe Ihres Konversationsverlaufs, indem er ältere Nachrichten zusammenfasst und dabei wichtigen Kontext bewahrt. Die Komprimierung benötigt eine vorhandene Konversation mit mindestens zwei vorherigen Austauschvorgängen zum Zusammenfassen. Dieses Beispiel zeigt zunächst eine Konversation, komprimiert sie dann und liest die compact_boundary-Systemnachricht, die das Ergebnis meldet:
Eine compact_boundary-Nachricht kommt nur an, wenn die Komprimierung ausgeführt wurde. Wenn es nichts zu zusammenfassen gibt, meldet /compact stattdessen den Grund: Der Durchlauf endet immer noch mit einem success-Ergebnis, es wird keine compact_boundary-Nachricht ausgegeben, und der Ergebnistext enthält die Nachricht, zum Beispiel Not enough messages to compact. nach einem einzelnen kurzen Austausch. Ein neuer einmaliger query()-Aufruf startet mit leerem Kontext, daher verwenden Sie dieses Muster in einer Sitzung mit vorherigen Durchläufen, zum Beispiel im Streaming-Eingabemodus oder beim Fortsetzen einer Sitzung.

/clear - Konversationskontext zurücksetzen

Der /clear-Befehl setzt die Konversation auf einen leeren Kontext zurück, sodass nachfolgende Eingabeaufforderungen ohne vorherigen Konversationsverlauf starten. Die vorherige Konversation bleibt auf der Festplatte gespeichert und kann durch Übergabe ihrer Sitzungs-ID an die resume-Option wieder aufgerufen werden. Dies ist nützlich im Streaming-Eingabemodus, in dem Sie mehrere Eingabeaufforderungen über eine einzelne Verbindung senden. Für einmalige query()-Aufrufe startet jeder Aufruf bereits mit leerem Kontext, daher hat das Senden von /clear keine praktische Auswirkung; starten Sie stattdessen eine neue query().
/clear im SDK erfordert Claude Code v2.1.117 oder später. In früheren Versionen wird es aus slash_commands weggelassen.

Benutzerdefinierte Slash Commands erstellen

Zusätzlich zur Verwendung integrierter Slash Commands 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.
Das .claude/commands/-Verzeichnis ist das Legacy-Format. Das empfohlene Format ist .claude/skills/<name>/SKILL.md, das die gleiche Slash-Command-Aufrufe (/name) plus autonome Aufrufe durch Claude unterstützt. Siehe Skills für das aktuelle Format. Die CLI unterstützt weiterhin beide Formate, und die folgenden Beispiele bleiben für .claude/commands/ genau.

Dateispeicherorte

Benutzerdefinierte Slash Commands werden in bestimmten Verzeichnissen basierend auf ihrem Umfang gespeichert:
  • Projektbefehle: .claude/commands/ - Nur im aktuellen Projekt verfügbar (Legacy; bevorzugen Sie .claude/skills/)
  • Persönliche Befehle: ~/.claude/commands/ - Verfügbar in allen Ihren Projekten (Legacy; bevorzugen Sie ~/.claude/skills/)

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 das .claude/commands-Verzeichnis in Ihrem Projekt, falls es nicht vorhanden ist, und erstellen Sie dann .claude/commands/refactor.md:
Dies erstellt den /refactor-Befehl, den Sie über das SDK verwenden können.

Mit Frontmatter

Erstellen Sie .claude/commands/security-check.md:

Benutzerdefinierte Commands im SDK verwenden

Sobald sie im Dateisystem definiert sind, sind benutzerdefinierte Befehle automatisch über das SDK verfügbar:

Erweiterte Funktionen

Argumente und Platzhalter

Benutzerdefinierte Befehle unterstützen dynamische Argumente mit Platzhaltern: Erstellen Sie .claude/commands/fix-issue.md:
Verwendung im SDK:

Bash-Befehlsausführung

Benutzerdefinierte Befehle können Bash-Befehle ausführen und deren Ausgabe einbeziehen: Erstellen Sie .claude/commands/git-commit.md:

Dateireferenzen

Beziehen Sie Dateiinhalte mit dem @-Präfix ein: Erstellen Sie .claude/commands/review-config.md:

Organisation mit Namensräumen

Organisieren Sie Befehle in Unterverzeichnissen für bessere Struktur:
Das Unterverzeichnis wird in der Befehlsbeschreibung angezeigt, beeinflusst aber nicht den Befehlsnamen selbst.

Praktische Beispiele

Pull-Request-Review-Befehl

Erstellen Sie .claude/commands/review-pr.md:
Claude Code enthält gebündelte code-review- und verify-Skills. Wenn Sie einen benutzerdefinierten Befehl nach einem von ihnen benennen, z. B. .claude/commands/code-review.md, überschattet Ihr Befehl den gebündelten Skill und slash_commands listet den Namen einmal auf.

Test Runner-Befehl

Erstellen Sie .claude/commands/test.md:
Verwenden Sie diese Befehle über das SDK:

Siehe auch