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:
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "Hello Claude",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Available slash commands:", message.slash_commands);
    // Example output: ["clear", "compact", "context", "usage"]
  }
}

Slash Commands senden

Senden Sie Slash Commands, indem Sie sie in Ihre Eingabeaufforderung einbeziehen, genau wie normalen Text:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Send a slash command
for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "result" && message.subtype === "success") {
    console.log("Command executed:", message.result);
  }
}

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:
import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
  prompt: "/compact",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "compact_boundary") {
    console.log("Compaction completed");
    console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);
    console.log("Trigger:", message.compact_metadata.trigger);
  }
}

/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 .claude/commands/refactor.md:
Refactor the selected code to improve readability and maintainability.
Focus on clean code principles and best practices.
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: Run security vulnerability scan
model: claude-opus-4-7
---

Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities
- Exposed credentials
- Insecure configurations

Benutzerdefinierte Commands im SDK verwenden

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

// Use a custom command
for await (const message of query({
  prompt: "/refactor src/auth/login.ts",
  options: { maxTurns: 3 }
})) {
  if (message.type === "assistant") {
    console.log("Refactoring suggestions:", message.message);
  }
}

// Custom commands appear in the slash_commands list
for await (const message of query({
  prompt: "Hello",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    // Will include both built-in and custom commands
    console.log("Available commands:", message.slash_commands);
    // Example: ["clear", "compact", "context", "usage", "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-number] [priority]
description: Fix a GitHub issue
---

Fix issue #$0 with priority $1.
Check the issue description and implement the necessary changes.
Verwendung im SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Pass arguments to custom command
for await (const message of query({
  prompt: "/fix-issue 123 high",
  options: { maxTurns: 5 }
})) {
  // Command will process with $0="123" and $1="high"
  if (message.type === "result" && message.subtype === "success") {
    console.log("Issue fixed:", message.result);
  }
}

Bash-Befehlsausführung

Benutzerdefinierte Befehle können Bash-Befehle ausführen und deren Ausgabe einbeziehen: Erstellen Sie .claude/commands/git-commit.md:
---
allowed-tools: Bash(git add *), Bash(git status *), Bash(git commit *)
description: Create a git commit
---

## Context

- Current status: !`git status`
- Current diff: !`git diff HEAD`

## Task

Create a git commit with appropriate message based on the changes.

Dateireferenzen

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

Review the following configuration files for issues:
- Package config: @package.json
- TypeScript config: @tsconfig.json
- Environment config: @.env

Check for security issues, outdated dependencies, and misconfigurations.

Organisation mit Namensräumen

Organisieren Sie Befehle in Unterverzeichnissen für bessere Struktur:
.claude/commands/
├── frontend/
   ├── component.md      # Creates /component (project:frontend)
   └── style-check.md     # Creates /style-check (project:frontend)
├── backend/
   ├── api-test.md        # Creates /api-test (project:backend)
   └── db-migrate.md      # Creates /db-migrate (project:backend)
└── review.md              # Creates /review (project)
Das Unterverzeichnis wird in der Befehlsbeschreibung angezeigt, 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: Comprehensive code review
---

## Changed Files
!`git diff --name-only HEAD~1`

## Detailed Changes
!`git diff HEAD~1`

## Review Checklist

Review the above changes for:
1. Code quality and readability
2. Security vulnerabilities
3. Performance implications
4. Test coverage
5. Documentation completeness

Provide specific, actionable feedback organized by priority.

Test Runner-Befehl

Erstellen Sie .claude/commands/test.md:
---
allowed-tools: Bash, Read, Edit
argument-hint: [test-pattern]
description: Run tests with optional pattern
---

Run tests matching pattern: $ARGUMENTS

1. Detect the test framework (Jest, pytest, etc.)
2. Run tests with the provided pattern
3. If tests fail, analyze and fix them
4. Re-run to verify fixes
Verwenden Sie diese Befehle über das SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";

// Run code review
for await (const message of query({
  prompt: "/code-review",
  options: { maxTurns: 3 }
})) {
  // Process review feedback
}

// Run specific tests
for await (const message of query({
  prompt: "/test auth",
  options: { maxTurns: 5 }
})) {
  // Handle test results
}

Siehe auch