Repository navigation
Hook tab pendencias reminder
Esta página explica o hook tab_pendencias_reminder.py de forma didática. Se algum termo for novo, consulte o Glossário.
Um hook (gancho automático) é um pequeno programa que dispara sozinho em um momento específico, sem você pedir. O bigtech traz 6 hooks; este é um deles.
O tab-pendencias-reminder cuida da tabela de tarefas do projeto (o arquivo TODO.md). Ele faz duas coisas, sempre como lembrete leve:
- Quando a tabela ainda não existe num projeto que já teve o porte medido, ele sugere criá-la rodando a skill /tab_pendencias.
- Quando a tabela já existe, ele vigia se ela está defasada (esquecida, sem ser atualizada) e avisa para você dar uma revisada.
O nome significa "lembrete de tabela de pendências". "Tabela de pendências" é a lista do que falta fazer no projeto, ordenada para evitar retrabalho (veja a Skill: /tab_pendencias). "Defasagem" aqui quer dizer: a tabela ficou para trás em relação ao trabalho que de fato aconteceu no projeto.
O hook tem três situações em que pode aparecer. Elas se dividem entre dois momentos: o início da sessão (SessionStart) e cada mensagem que você envia (UserPromptSubmit).
Este é o comportamento histórico. No SessionStart, o lembrete aparece quando as duas condições são verdadeiras ao mesmo tempo:
- O projeto já foi classificado pela /bigtech: existe o arquivo marcador
.bigtech-portena raiz. - O projeto ainda não tem o arquivo
TODO.mdna raiz.
Se faltar o marcador .bigtech-porte, este hook fica calado: quem lembra, nesse caso, é o bigtech-porte-reminder. Assim que o TODO.md é criado, este lembrete de criação para de aparecer.
Quando o TODO.md já existe, no SessionStart o hook mede o quanto a tabela está atrasada. Para isso ele consulta o histórico do git (a ferramenta que registra a história das mudanças do projeto) e calcula duas coisas:
-
Quantos commits foram feitos desde a última vez que o
TODO.mdfoi alterado. Um "commit" é um ponto salvo na história do projeto. - Quantos dias se passaram desde esse último toque na tabela.
Se esses números passarem dos limiares configurados, o hook avisa que a tabela pode estar defasada e sugere revisá-la. A ideia é simples: se muita coisa mudou no código mas a tabela de tarefas ficou parada, ela provavelmente não reflete mais a realidade.
Quando o TODO.md existe e você está há várias horas na mesma sessão, o hook dá um nudge (cutucão gentil) único pedindo que você revise e reordene a tabela. Esse gatilho roda no UserPromptSubmit, ou seja, é avaliado quando você envia mensagens. Por isso o hook agora dispara em dois eventos (SessionStart e UserPromptSubmit), e não só no início.
Os limiares têm valores embutidos que funcionam bem na maioria dos casos, então você não precisa configurar nada. Se quiser personalizar, crie um arquivo .tab-staleness.json na raiz do projeto com qualquer um destes campos:
-
commits: quantos commits sem tocar noTODO.mdjá contam como defasagem. -
dias: quantos dias sem tocar noTODO.mdjá contam como defasagem. -
modo:"e"exige os dois limiares juntos (commits e dias) para avisar;"ou"basta um dos dois. -
horas_sessao: depois de quantas horas de sessão o nudge de revisão aparece. -
off: se fortrue, desliga os gatilhos de defasagem (2) e de sessão longa (3). O lembrete de criar a tabela (1) continua funcionando.
O hook apenas avisa; ele nunca cria nem reordena a tabela sozinho. Quem inicia a skill /tab_pendencias é a thread principal (a conversa com você), porque os agentes especialistas não têm a ferramenta que dispara skills. Quando você roda a /tab_pendencias, a skill gera ou reorganiza o TODO.md com as tarefas na ordem recomendada (por dependência e por valor, agrupadas em ondas).
Para medir a defasagem, o hook executa comandos de consulta do git (como git rev-list e git log), com argumentos fixos e sem passar por um shell. Ele só lê o histórico: não grava nada no repositório, não acessa a rede e não altera arquivos. É um comportamento benigno, detalhado no SECURITY.md do projeto.
Este hook foi feito para nunca interromper a sessão. Ele é apenas um lembrete: sempre termina sem erro e nunca bloqueia o turno. Se algo der errado (não há git, o projeto não é um repositório, a saída do git veio diferente do esperado), ele simplesmente não mostra nada. Esse comportamento se chama fail-open: na dúvida, deixa passar.
- O bigtech-porte-reminder é o passo anterior: lembra de medir o porte quando ele ainda não foi classificado. Este aqui assume a vez logo depois, quando o porte já existe.
- O bigtech-session-init também roda no início da sessão, para carregar os manuais e avisar de compatibilidade.
- O bigtech-reinforce faz o reforço do modo a cada mensagem; este aqui, no UserPromptSubmit, faz só o nudge de sessão longa.
Veja também a Skill: /tab_pendencias e o Uso no dia a dia. Voltar para a Home.