Hooks do plugin
Compatível com dr3.4.25
Hooks são scripts que o Claude Code executa automaticamente em resposta a eventos da sessão. O plugin registra 12 deles em 7 eventos, cobrindo o ciclo inteiro — do início da sessão ao backup antes da compactação de contexto. É por causa deles que o plugin funciona sem você rodar nada: estrutura criada, contexto injetado, ações rastreadas.
O que roda em cada evento
Seção intitulada “O que roda em cada evento”| Evento | Script | O que faz |
|---|---|---|
| SessionStart | dr_session_start.py | Inicialização em 3 módulos. init_project: cria o que falta da estrutura .dr_ai/ a cada sessão e sincroniza os materiais do framework em ~/.claude/ (templates, statusline) só na primeira instalação, quando a versão muda ou quando falta um desses arquivos; também configura a statusline, verifica os servidores LSP e, se habilitado, instala o RTK nessa mesma sincronização, quando falta o binário ou o hook. load_context: injeta a localização e a versão do plugin, as configurações de .dr_ai/settings.json, o provedor git e as primeiras 100 linhas de .dr_ai/docs/CODE_SUMMARY.md. project_rules: sincroniza as regras do plugin em .claude/rules/ do projeto, um arquivo por tema, que o Claude Code carrega nativamente (veja O diretório .dr_ai); avisa quando ainda existe um .dr_ai/docs/RULES.md antigo, que não é mais carregado |
| SessionStart | export_plugin_env.py | Exporta DR_PLUGIN_ROOT para o shell da sessão, para que as skills chamem os scripts do plugin por caminho absoluto |
| PreToolUse (Task) | codebase_inject.py | Injeta no prompt dos subagentes os artefatos do codebase map adequados ao tipo de agente e, quando o prompt cita uma task, o bloco de contexto dessa task |
| PreToolUse (Grep, Glob, Read, WebFetch, WebSearch e Bash) | pre_tool_hints.py | Dicas pontuais, no máximo duas vezes cada por sessão: usar LSP para símbolos, evitar arquivos gerados, ler o codebase map antes de varrer o código, consultar referências locais antes da web, avisos de RTK. No Bash, roda antes dois guards que bloqueiam: o de mensagens de commit (código em commit_msg_guard.py, chamado de dentro deste hook) recusa commits, merges, tags e PRs cuja mensagem contenha atribuição de IA (Co-Authored-By de Claude/Anthropic, “Generated with”, URLs claude.ai), devolvendo a lista de violações para reescrita; o de stash impede subagentes (exceto os agentes de git) de rodar git stash (stash list e stash show passam), que mexeria nas alterações dos outros agentes na mesma árvore |
| PreToolUse (Bash) | compact_flags.py | Reescreve comandos simples para a forma de saída compacta (por exemplo, git status vira git status --porcelain=v1 -b); não age quando o RTK já vai reescrever o comando |
| PostToolUse (edições) | codebase_staleness.py | Marca artefatos do codebase map como desatualizados quando os arquivos-fonte mudam |
| PostToolUse (Task) | task-tracker.py | Registra cada subagente executado (tipo, descrição, modelo) em .dr_ai/tasks/agents-completions.json, mantendo os 50 mais recentes |
| PostToolUse (Bash) | bash-tracker.py | Registra os comandos bash executados em .dr_ai/logs/bash-executions.jsonl, exceto os scripts internos do fluxo de tasks |
| Stop / SubagentStop | stop.py / subagent_stop.py | Registram o fim do agente principal e dos subagentes; o Stop também grava o registro de fim (finish_*.md) de uma execução de task iniciada nos últimos 10 minutos |
| PreCompact | pre_compact.py | Backup do transcript em .dr_ai/logs/transcript_backups/ antes da compactação de contexto, ligado por padrão e com retenção de 7 dias (preferences.transcript_backup_retention_days) |
| UserPromptSubmit | user_prompt_submit.py | Registra o prompt do usuário (truncado em 200 caracteres por padrão, ajustável em preferences.prompt_log_max_chars) e marca o início de uma execução de task quando o prompt começa com /dr:execute, /dr:fast-execute, /dr:spawn, /dr:fix, /dr:implement ou /dr:change |
A pasta hooks/scripts/ do plugin tem outros arquivos que não são hooks registrados: módulos auxiliares chamados por estes (como commit_msg_guard.py, lsp_bootstrap.py e command_shortcuts.py, usados pelo início de sessão ou pelas dicas) e post_tool_use.py, que não está ligado a nenhum evento.
Ajustes
Seção intitulada “Ajustes”Os três módulos do início de sessão são habilitáveis individualmente em .dr_ai/settings.json (hooks.session_start: init_project, load_context, project_rules, todos ligados por padrão); preferences.manage_project_settings: false também desliga a sincronização das regras. Outras chaves de preferences no mesmo arquivo: log_hooks: false desliga os logs, inclusive o histórico de comandos em bash-executions.jsonl, compact_flags: false desliga a reescrita de flags compactas e auto_backup: false desliga o backup antes da compactação. Os logs ficam em .dr_ai/logs/, um arquivo JSONL por hook por dia (hook-<nome>-<AAAAMMDD>.jsonl).
Ver também
Seção intitulada “Ver também”- O diretório .dr_ai — a estrutura que o SessionStart cria
- Codebase map — os artefatos injetados nos subagentes
- /dr:git:ship — o ciclo git protegido pelo guard

