Pular para o conteúdo principal
Slash commands fornecem uma maneira de controlar sessões do Claude Code com comandos especiais que começam com /. Esses comandos podem ser enviados através do SDK para executar ações como compactar contexto, listar uso de contexto ou invocar comandos personalizados. Apenas comandos que funcionam sem um terminal interativo são despachados através do SDK; a mensagem system/init lista os disponíveis em sua sessão.

Descobrindo Slash Commands Disponíveis

O Claude Agent SDK fornece informações sobre slash commands disponíveis na mensagem de inicialização do sistema. Acesse essas informações quando sua sessão começar:

Enviando Slash Commands

Envie slash commands incluindo-os em sua string de prompt, assim como texto regular. Comandos que atuam no histórico de conversas, como /compact, precisam de mensagens anteriores para funcionar, então os exemplos abaixo fazem uma pergunta primeiro e depois enviam o comando como um acompanhamento para a mesma conversa:
Uma query pode terminar com um resultado de erro, por exemplo quando o limite maxTurns / max_turns é atingido antes do trabalho ser concluído. A mensagem de resultado final então tem is_error: true e um subtipo de erro como error_max_turns em vez de success.Após produzir essa mensagem de resultado final, o SDK lança um erro, porque o processo CLI sai com um código diferente de zero.Envolva o loop em um try/catch em TypeScript ou try/except em Python se seu comando puder atingir o limite, como mostrado em Single Message Input, ou defina maxTurns alto o suficiente para o trabalho ser concluído. Em Python, capture Exception: o SDK apresenta resultados de erro como uma Exception simples.

Slash Commands Comuns

/compact - Compactar histórico de conversa

O comando /compact reduz o tamanho do seu histórico de conversa resumindo mensagens antigas enquanto preserva contexto importante. A compactação precisa de uma conversa existente com pelo menos duas trocas anteriores para resumir. Este exemplo tem uma conversa primeiro, depois a compacta e lê a mensagem do sistema compact_boundary que relata o resultado:
Uma mensagem compact_boundary só chega quando a compactação foi executada. Sem nada para resumir, /compact relata o motivo em vez de gerar um erro: a execução ainda termina com um resultado success, nenhuma mensagem compact_boundary é emitida, e o texto do resultado carrega a mensagem, por exemplo Not enough messages to compact. após uma única troca curta. Uma chamada query() única e nova começa com contexto vazio, então use este padrão em uma sessão com turnos anteriores, por exemplo no modo de entrada em streaming ou ao retomar uma sessão.

/clear - Redefinir contexto de conversa

O comando /clear redefine a conversa para um contexto vazio, para que os prompts subsequentes comecem sem nenhum histórico de conversa anterior. A conversa anterior permanece no disco e pode ser retomada passando seu ID de sessão para a opção resume. Isso é útil no modo de entrada em streaming, onde você envia múltiplos prompts em uma única conexão. Para chamadas query() únicas, cada chamada já começa com contexto vazio, então enviar /clear não tem efeito prático; inicie uma nova query() em vez disso.
/clear no SDK requer Claude Code v2.1.117 ou posterior. Em versões anteriores, ele é omitido de slash_commands.

Criando Slash Commands Personalizados

Além de usar slash commands integrados, você pode criar seus próprios comandos personalizados que estão disponíveis através do SDK. Comandos personalizados são definidos como arquivos markdown em diretórios específicos, similar a como subagentes são configurados.
O diretório .claude/commands/ é o formato legado. O formato recomendado é .claude/skills/<name>/SKILL.md, que suporta a mesma invocação de slash command (/name) mais invocação autônoma pelo Claude. Veja Skills para o formato atual. O CLI continua suportando ambos os formatos, e os exemplos abaixo permanecem precisos para .claude/commands/.

Localizações de Arquivo

Slash commands personalizados são armazenados em diretórios designados baseado em seu escopo:
  • Comandos de projeto: .claude/commands/ - Disponíveis apenas no projeto atual (legado; prefira .claude/skills/)
  • Comandos pessoais: ~/.claude/commands/ - Disponíveis em todos seus projetos (legado; prefira ~/.claude/skills/)

Formato de Arquivo

Cada comando personalizado é um arquivo markdown onde:
  • O nome do arquivo (sem extensão .md) se torna o nome do comando
  • O conteúdo do arquivo define o que o comando faz
  • Frontmatter YAML opcional fornece configuração

Exemplo Básico

Crie o diretório .claude/commands em seu projeto se ele não existir, então crie .claude/commands/refactor.md:
Isso cria o comando /refactor que você pode usar através do SDK.

Com Frontmatter

Crie .claude/commands/security-check.md:

Usando Slash Commands Personalizados no SDK

Uma vez definidos no sistema de arquivos, comandos personalizados estão automaticamente disponíveis através do SDK:

Recursos Avançados

Argumentos e Placeholders

Comandos personalizados suportam argumentos dinâmicos usando placeholders: Crie .claude/commands/fix-issue.md:
Use no SDK:

Execução de Comando Bash

Comandos personalizados podem executar comandos bash e incluir sua saída: Crie .claude/commands/git-commit.md:

Referências de Arquivo

Inclua conteúdos de arquivo usando o prefixo @: Crie .claude/commands/review-config.md:

Organização com Namespacing

Organize comandos em subdiretórios para melhor estrutura:
O subdiretório aparece na descrição do comando mas não afeta o nome do comando em si.

Exemplos Práticos

Comando de Revisão de Pull Request

Crie .claude/commands/review-pr.md:
Claude Code inclui skills code-review e verify agrupados. Se você nomear um comando personalizado após um deles, por exemplo .claude/commands/code-review.md, seu comando sobrescreve o skill agrupado e slash_commands lista o nome uma vez.

Comando Test Runner

Crie .claude/commands/test.md:
Use esses comandos através do SDK:

Veja Também