← BLOG
Tutorial

Automatize Seu Fluxo de Dev com Claude Code Hooks

Hooks permitem rodar comandos shell quando o Claude Code toma ações específicas. Auto-formate ao salvar, bloqueie edições perigosas ou injete contexto automaticamente.

Claude Code Hooks são comandos shell que executam automaticamente em resposta a eventos. Quando o Claude Code edita um arquivo, roda um comando ou inicia uma sessão, seus hooks disparam. Isso permite construir guardrails, impor padrões e automatizar setup repetitivo sem intervenção manual.

Quais eventos de hook estão disponíveis?

EventoQuando disparaUso comum
PreToolUseAntes do Claude executar uma ferramentaBloquear operações perigosas, validar inputs
PostToolUseDepois do Claude executar uma ferramentaAuto-formatar arquivos editados, rodar linters
NotificationQuando Claude envia uma notificaçãoRegistrar em arquivo, enviar para Slack
SessionStartQuando uma nova sessão começaInjetar contexto, verificar ambiente
ConfigChangeQuando configurações mudamValidar configuração

Como criar um hook?

Use o menu interativo ou edite o settings.json diretamente:

bash
# Setup interativo de hook
claude /hooks

# Ou edite settings.json diretamente
# Projeto: .claude/settings.json
# Global: ~/.claude/settings.json

Aqui está um settings.json com hooks configurados:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\"",
        "description": "Auto-formatar arquivos editados com Prettier"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "echo $CLAUDE_FILE_PATH | grep -q \\.env && echo 'BLOQUEADO: Não pode editar arquivos .env' && exit 1 || exit 0",
        "description": "Bloquear edições em arquivos .env"
      }
    ],
    "SessionStart": [
      {
        "command": "cat .claude/context-injection.md",
        "description": "Injetar contexto adicional no início da sessão"
      }
    ]
  }
}

Quais são os hooks mais úteis?

1. Auto-formatar ao editar

Rode Prettier, Black ou gofmt toda vez que o Claude Code edita um arquivo:

json
// Hook PostToolUse
{
  "matcher": "Edit|Write",
  "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
}

2. Bloquear edições em arquivos sensíveis

Impeça o Claude Code de modificar arquivos de ambiente, segredos ou configs críticas:

json
// Hook PreToolUse
{
  "matcher": "Edit|Write",
  "command": "echo $CLAUDE_FILE_PATH | grep -qE \"\\.env|\\.secret|credentials\" && exit 1 || exit 0"
}

3. Re-injetar contexto após compactação

Quando o Claude Code compacta sua janela de contexto, detalhes importantes podem ser perdidos. Um hook pode re-injetar informações críticas:

json
// Hook PostToolUse para compactação
{
  "matcher": "Compact",
  "command": "cat .claude/critical-context.md"
}
TIP

Comece com o hook de auto-formatação. É o hook de maior valor com menor risco. Quando estiver confortável, adicione proteção de arquivos e injeção de contexto.

Perguntas frequentes

Um hook pode bloquear o Claude Code de fazer algo?+
Sim. Hooks PreToolUse podem sair com código 1 para bloquear a ação. O Claude Code verá a mensagem de bloqueio e tentará uma abordagem diferente. É assim que você cria guardrails para operações sensíveis.
Hooks funcionam no modo headless?+
Sim. Hooks executam em todos os modos incluindo headless (CI/CD). Isso os torna úteis para impor padrões em pipelines automatizadas onde nenhum humano está revisando cada ação.
Quais variáveis de ambiente estão disponíveis nos hooks?+
Hooks recebem contexto através de variáveis de ambiente como $CLAUDE_FILE_PATH (o arquivo sendo editado), $CLAUDE_TOOL_NAME (a ferramenta sendo usada) e $CLAUDE_SESSION_ID. As variáveis exatas dependem do tipo de evento.
Hooks podem deixar o Claude Code mais lento?+
Sim, se o comando do hook for lento. Mantenha hooks rápidos (menos de 1 segundo). Evite hooks que fazem requisições de rede ou rodam builds pesados. Use logging assíncrono se precisar rastrear ações sem bloquear.
TODOS OS POSTSINICIAR CURSO GRÁTIS →