~/VibeHandbook
PDF grátis

Ferramentas de agente

docs.claude.com

Hooks

O que é

Pense em uma luz com sensor de movimento: ela acende sozinha no instante em que alguém passa por perto, sem que ninguém precise se lembrar de apertar o interruptor. Um hook funciona da mesma forma. Um hook é um comando seu que roda automaticamente em um ponto específico do ciclo de vida de um agente — antes de ele executar um comando de , depois de editar um arquivo, quando uma sessão começa, e assim por diante. Hooks permitem observar e controlar o que o agente faz usando scripts comuns, em vez de confiar que ele vai se lembrar de uma regra sozinho. Eles são a camada de aplicação (enforcement) de um harness de codificação.

Pontos fortes

  • Determinístico: um hook roda todas as vezes, então uma regra não pode ser esquecida ou contornada.
  • Escrito como shell ou scripts simples, então você pode fazer qualquer coisa que sua máquina consiga fazer.
  • Pode bloquear uma ação, não só registrá-la — um hook de pré-comando pode recusar um comando perigoso.
  • Ótimo para guardrails (proteções): formatar ao salvar, rodar testes após edições, buscar segredos antes de um .

Contrapartidas

  • Um hook é código de verdade que roda automaticamente, então um hook com bugs pode quebrar o fluxo de trabalho.
  • Hooks lentos adicionam latência a cada evento que os dispara.
  • Eles disparam com base em padrões, então um hook amplo demais pode interferir em ações legítimas.
  • Mais configuração e mais um lugar para olhar quando algo se comporta de forma inesperada.

Quando usar

Use hooks quando você quiser uma garantia sólida sobre o comportamento do agente — formatação automática, execução obrigatória de testes, bloqueio de comandos destrutivos ou registro de cada ação — em vez de depender da conformidade voluntária do agente.

Encaixe no vibe coding

Hooks são a forma de manter um agente seguro enquanto ele se move rápido. O agente propõe; o hook aplica (enforce). Um hook de "antes de executar" que bloqueia rm -rf ou um hook de "depois de editar" que roda o verificador de tipos transforma um assistente solto em um que fisicamente não consegue pular seus guardrails.

// run the formatter after every file edit
{
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit", "command": "npx prettier --write $FILE" }
    ]
  }
}