Pular para o conteúdo

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.

EventoScriptO que faz
SessionStartdr_session_start.pyInicializaçã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
SessionStartexport_plugin_env.pyExporta 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.pyInjeta 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.pyDicas 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.pyReescreve 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.pyMarca artefatos do codebase map como desatualizados quando os arquivos-fonte mudam
PostToolUse (Task)task-tracker.pyRegistra cada subagente executado (tipo, descrição, modelo) em .dr_ai/tasks/agents-completions.json, mantendo os 50 mais recentes
PostToolUse (Bash)bash-tracker.pyRegistra os comandos bash executados em .dr_ai/logs/bash-executions.jsonl, exceto os scripts internos do fluxo de tasks
Stop / SubagentStopstop.py / subagent_stop.pyRegistram 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
PreCompactpre_compact.pyBackup 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)
UserPromptSubmituser_prompt_submit.pyRegistra 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.

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).