TRILHA 3

πŸͺ Anatomia dos 18 hooks

Mapa completo do ciclo de vida do Claude Code. Conhecer todos os hooks β€” mesmo os que voce nao vai usar β€” evita reinventar a roda.

6
Modulos
36
Topicos
~4h
Duracao
Tecnico
Nivel
3.1~40 min

⏳ Ciclo de vida de uma sessao

Os 18 pontos onde Claude Code pode chamar um hook seu. Mapa visual completo.

O que e:

Hooks que rodam antes da primeira mensagem do usuario. SessionStart, CurrentDir detection, env setup.

Por que aprender:

E aqui que voce injeta identidade e contexto. Ponto de maior alavancagem.

Conceitos-chave:

Session initialization, warm-up hooks.

O que e:

Hook que dispara antes de cada mensagem do usuario ser enviada ao modelo.

Por que aprender:

E o hook mais poderoso para injecao dinamica: contexto por pergunta.

Conceitos-chave:

Per-turn injection, dynamic context.

O que e:

Hooks antes e depois de cada tool call (Read, Write, Bash, etc.). Permite validar ou registrar.

Por que aprender:

Uteis para compliance (bloquear Bash perigoso) ou logging. Pouco usados para memoria.

Conceitos-chave:

Tool lifecycle, gate and observe.

O que e:

PreCompact: antes do resumo. PostCompact: depois. A janela de sobrevivencia e no Pre.

Por que aprender:

Sem PreCompact, voce perde contexto critico toda vez que a sessao passa de ~170k tokens.

Conceitos-chave:

Survival hook, re-injection window.

O que e:

Roda quando voce fecha a sessao. Usado para comprimir working memory e atualizar contexto.

Por que aprender:

SessionEnd e onde a promotion 3-strikes e a sumarizacao via Gemini acontecem.

Conceitos-chave:

End-of-life, post-session jobs.

O que e:

Diagrama temporal com todos os 18 pontos marcados, agrupados por fase. Memorize as 5 fases.

Por que aprender:

Diagramado, voce escolhe o hook certo em segundos ao inves de ler documentacao.

Conceitos-chave:

Lifecycle map, mental model.

Ver Completo
3.2~40 min

πŸ—‚οΈ Taxonomia: tabela de consulta rapida

Cada um dos 18 hooks com: quando dispara, payload, caso de uso tipico.

O que e:

Dois hooks que delimitam a sessao. Os pilares para memoria persistente.

Por que aprender:

O par SessionStart/End e a base do "injeta no comeco, aprende no fim".

Conceitos-chave:

Bookend pattern, session boundaries.

O que e:

UserPromptSubmit dispara antes do modelo responder. Stop apos cada resposta completa.

Por que aprender:

Injecao dinamica por turno usa UserPromptSubmit. Avaliacao pos-resposta usa Stop.

Conceitos-chave:

Turn-level, per-message.

O que e:

Antes e depois de cada ferramenta executada. Permite validar, registrar ou bloquear.

Por que aprender:

Usados para compliance e observabilidade. Para memoria, raramente.

Conceitos-chave:

Tool gating, exec observability.

O que e:

Hook que dispara na transicao para compactacao. Unico do seu grupo.

Por que aprender:

E a unica forma deterministica de sobreviver a compactacao.

Conceitos-chave:

Compaction gate.

O que e:

Hooks de eventos laterais: notificacoes ao usuario, eventos de IDE, etc.

Por que aprender:

Raramente tocam em memoria, mas conhece-los evita confusao.

Conceitos-chave:

Peripheral hooks, IDE integration.

O que e:

Tabela de 18 linhas com: nome, quando dispara, payload principal, output esperado, caso de uso.

Por que aprender:

Sera sua referencia daqui em diante. Marque ou imprima.

Conceitos-chave:

Reference table, cheat sheet.

Ver Completo
3.3~40 min

βš™οΈ Schema do settings.json

Onde viver, qual a estrutura, permissoes e ordem de resolucao.

O que e:

Tres niveis: /etc, ~/.claude, .claude no projeto. Merge com precedencia.

Por que aprender:

Coloque memoria pessoal em user, memoria de projeto em project.

Conceitos-chave:

Scope resolution, merge order.

O que e:

Chave "hooks" com objeto por evento. Cada evento recebe array de matchers + commands.

Por que aprender:

Sem saber a estrutura, voce erra no primeiro try e perde tempo.

Conceitos-chave:

Matcher array, command spec.

O que e:

Hooks rodam comandos bash. Deve haver lista de allow para comandos confiaveis, deny para perigosos.

Por que aprender:

Hook com comando inesperado pode ser prompt-injected. Permissoes mitigam.

Conceitos-chave:

Command allowlist, injection defense.

O que e:

Matcher filtra: "so dispara se a tool e Bash", "so se prompt contem X". Hooks sem matcher rodam sempre.

Por que aprender:

Matchers evitam disparar hook toda hora, economizando tempo e tokens.

Conceitos-chave:

Conditional firing, matcher syntax.

O que e:

Arquivo real com 3 hooks (SessionStart, PreCompact, UserPromptSubmit), cada linha comentada.

Por que aprender:

Copiar exemplo funcional e mais rapido que ler docs.

Conceitos-chave:

Reference config, annotated sample.

O que e:

(1) path relativo que nao resolve, (2) env vars ausentes, (3) JSON com trailing comma, (4) permissoes faltando.

Por que aprender:

Conhecer as 4 armadilhas economiza horas de debug.

Conceitos-chave:

Debugging gotchas, path resolution.

Ver Completo
3.4~40 min

πŸ“¬ Payload: stdin, stdout, additionalContext

Como seu hook recebe dados e como responde. A interface que define o que e possivel.

O que e:

Claude Code escreve JSON no stdin do comando. Campos comuns: session_id, cwd, hook_event_name, transcript_path.

Por que aprender:

Saber o schema do input define o que seu hook pode decidir.

Conceitos-chave:

Hook input, JSON schema.

O que e:

Voce escreve JSON no stdout. Campos uteis: additionalContext (texto injetado), decision (allow/deny).

Por que aprender:

additionalContext e o mecanismo central de injecao de memoria.

Conceitos-chave:

Hook output, additionalContext.

O que e:

0 = sucesso. 1 = erro recuperavel. 2 = bloqueio duro (cancela tool). Controle fino via exit + stderr.

Por que aprender:

Exit 2 e o unico jeito deterministico de bloquear acoes em hooks de tool.

Conceitos-chave:

Exit semantics, control flow.

O que e:

String retornada nesse campo e anexada ao prompt do proximo turno. E assim que memoria entra.

Por que aprender:

90% da Trilha 4 e sobre o que colocar nesse campo e quando.

Conceitos-chave:

Context injection, prompt augmentation.

O que e:

Hooks tem timeout (tipicamente 10-30s). Se estourar, Claude continua sem o output.

Por que aprender:

Scripts que chamam API (Gemini) precisam ter timeout proprio menor que o do hook.

Conceitos-chave:

Hook timeout, graceful fallback.

O que e:

Hook e so um programa bash ou script. Teste com echo do JSON de input. Rapido, sem precisar rodar Claude.

Por que aprender:

Ciclo de feedback curto e a diferenca entre hook que funciona e hook que voce desiste.

Conceitos-chave:

Local testing, pipe input.

Ver Completo
3.5~30 min

⚑ Hooks sincronos vs assincronos

Quando seu hook bloqueia Claude e quando nao. Decisao arquitetural que importa.

O que e:

Hooks que retornam additionalContext sao sincronos. Claude bloqueia ate receber resposta.

Por que aprender:

Define que voce precisa de scripts rapidos nesses pontos.

Conceitos-chave:

Blocking hook, latency budget.

O que e:

SessionEnd e alguns outros podem disparar processo em background. Claude nao espera.

Por que aprender:

Tarefas pesadas (chamada Gemini, indexacao) devem ser async no SessionEnd.

Conceitos-chave:

Async, background job.

O que e:

Dentro do hook sincrono, voce roda o trabalho pesado em background com nohup ... & e retorna imediato.

Por que aprender:

Padrao resolve o melhor de dois mundos.

Conceitos-chave:

Decoupling, nohup.

O que e:

Hook sincrono >500ms = experiencia ruim. >2s = Claude parece travado. Mantenha <100ms.

Por que aprender:

Otimizar sync vale mais que adicionar features.

Conceitos-chave:

Perf budget, UX impact.

O que e:

Se duas sessoes escrevem no mesmo context.md, voce precisa de flock ou fila. Simples mas essencial.

Por que aprender:

Corrupcao de memoria e o pior bug pra diagnosticar.

Conceitos-chave:

File locking, race conditions.

O que e:

SessionStart: sync (precisa do contexto). PreCompact: sync. SessionEnd: async (nao bloqueia proxima sessao).

Por que aprender:

Decidir certo desde o comeco evita refatorar depois.

Conceitos-chave:

Rule of thumb, hook discipline.

Ver Completo
3.6~30 min

πŸ› Depuracao e logging de hooks

Como saber se seu hook disparou, o que ele recebeu e o que retornou.

O que e:

No inicio do hook: echo "$(date) $input" >> ~/.claude/hook.log.

Por que aprender:

Log simples resolve 90% dos "por que nao disparou?".

Conceitos-chave:

Append log, minimal trace.

O que e:

Em outro terminal: tail -f ~/.claude/hook.log. Veja cada disparo em tempo real.

Por que aprender:

Feedback loop de 1 segundo para validar hooks.

Conceitos-chave:

Live tailing.

O que e:

Use echo "info" >&2 para exibir debug no proprio Claude.

Por que aprender:

Feedback inline, sem trocar de janela.

Conceitos-chave:

stderr visibility.

O que e:

Prepare um JSON de exemplo salvo em arquivo. Rode cat input.json | ./hook.sh antes de plugar no Claude.

Por que aprender:

Testa 10x mais rapido que via Claude Code.

Conceitos-chave:

Dev loop, mocked input.

O que e:

Hook incrementa contador em arquivo por evento. Voce ve taxa e distribuicao ao longo do dia.

Por que aprender:

Metrica revela padrao inesperado (ex: PreCompact disparando mais do que voce esperava).

Conceitos-chave:

Event counting.

O que e:

Lista: permission denied, script nao executavel, JSON invalido, path relativo, env var ausente, etc.

Por que aprender:

Ter checklist salva 80% do tempo de debug.

Conceitos-chave:

Runbook, common failures.

Ver Completo
← Trilha 2Trilha 4: 3 hooks criticos β†’