I comandi slash forniscono un modo per controllare le sessioni di Claude Code con comandi speciali che iniziano con /. Questi comandi possono essere inviati attraverso l’SDK per eseguire azioni come cancellare la cronologia delle conversazioni, compattare i messaggi o ottenere aiuto.

Scoprire i Comandi Slash Disponibili

L’SDK di Claude Code fornisce informazioni sui comandi slash disponibili nel messaggio di inizializzazione del sistema. Accedi a queste informazioni quando la tua sessione inizia:
import { query } from "@anthropic-ai/claude-code";

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: ["/compact", "/clear", "/help"]
  }
}

Inviare Comandi Slash

Invia i comandi slash includendoli nella tua stringa di prompt, proprio come il testo normale:
import { query } from "@anthropic-ai/claude-code";

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

Comandi Slash Comuni

/compact - Compattare la Cronologia delle Conversazioni

Il comando /compact riduce la dimensione della cronologia delle tue conversazioni riassumendo i messaggi più vecchi preservando il contesto importante:
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("Compaction completed");
    console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);
    console.log("Trigger:", message.compact_metadata.trigger);
  }
}

/clear - Cancellare la Conversazione

Il comando /clear inizia una conversazione fresca cancellando tutta la cronologia precedente:
import { query } from "@anthropic-ai/claude-code";

// Clear conversation and start fresh
for await (const message of query({
  prompt: "/clear",
  options: { maxTurns: 1 }
})) {
  if (message.type === "system" && message.subtype === "init") {
    console.log("Conversation cleared, new session started");
    console.log("Session ID:", message.session_id);
  }
}

Creare Comandi Slash Personalizzati

Oltre a utilizzare i comandi slash integrati, puoi creare i tuoi comandi personalizzati che sono disponibili attraverso l’SDK. I comandi personalizzati sono definiti come file markdown in directory specifiche, simile a come sono configurati i subagenti.

Posizioni dei File

I comandi slash personalizzati sono memorizzati in directory designate basate sul loro ambito:
  • Comandi di progetto: .claude/commands/ - Disponibili solo nel progetto corrente
  • Comandi personali: ~/.claude/commands/ - Disponibili in tutti i tuoi progetti

Formato del File

Ogni comando personalizzato è un file markdown dove:
  • Il nome del file (senza estensione .md) diventa il nome del comando
  • Il contenuto del file definisce cosa fa il comando
  • Il frontmatter YAML opzionale fornisce la configurazione

Esempio Base

Crea .claude/commands/refactor.md:
Refactor the selected code to improve readability and maintainability.
Focus on clean code principles and best practices.
Questo crea il comando /refactor che puoi utilizzare attraverso l’SDK.

Con Frontmatter

Crea .claude/commands/security-check.md:
---
allowed-tools: Read, Grep, Glob
description: Run security vulnerability scan
model: claude-3-5-sonnet-20241022
---

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

Utilizzare Comandi Personalizzati nell’SDK

Una volta definiti nel filesystem, i comandi personalizzati sono automaticamente disponibili attraverso l’SDK:
import { query } from "@anthropic-ai/claude-code";

// 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: ["/compact", "/clear", "/help", "/refactor", "/security-check"]
  }
}

Funzionalità Avanzate

Argomenti e Segnaposto

I comandi personalizzati supportano argomenti dinamici utilizzando segnaposto: Crea .claude/commands/fix-issue.md:
---
argument-hint: [issue-number] [priority]
description: Fix a GitHub issue
---

Fix issue #$1 with priority $2.
Check the issue description and implement the necessary changes.
Utilizza nell’SDK:
import { query } from "@anthropic-ai/claude-code";

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

Esecuzione di Comandi Bash

I comandi personalizzati possono eseguire comandi bash e includere il loro output: Crea .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.

Riferimenti ai File

Includi il contenuto dei file utilizzando il prefisso @: Crea .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.

Organizzazione con Namespace

Organizza i comandi in sottodirectory per una migliore struttura:
.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)
La sottodirectory appare nella descrizione del comando ma non influisce sul nome del comando stesso.

Esempi Pratici

Comando di Revisione del Codice

Crea .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.

Comando di Esecuzione Test

Crea .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
Utilizza questi comandi attraverso l’SDK:
import { query } from "@anthropic-ai/claude-code";

// 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
}

Vedi Anche