Unwritten
A fatia gratuita e nativa de agentes do acoplamento de mudanças.
Documentação
Unwritten
Pegue os arquivos que você — ou seu agente de IA — esqueceu de alterar. O Unwritten aprende com seu histórico do git quais arquivos costumam mudar juntos e avisa quando um está faltando na sua edição: "você alterou OrderService.cs mas não OrderServiceTests.cs, e eles mudam juntos 94% das vezes." Ele chama esses companheiros ausentes de buracos, e cada aviso vem com sua pontuação de confiança e commits de exemplo reais como prova.
1 possible hole(s):
src/Orders/OrderServiceTests.cs
expected because you changed src/Orders/OrderService.cs
confidence 0.826 (90 co-changes in 100 changes)
e.g. 3f2a1c9 Add surcharge handling to freight calculation
FAIL: at least one hole at confidence >= 0.70.
Ele roda como um servidor MCP para que agentes de codificação de IA (Claude Code, Copilot) possam verificar suas próprias edições durante a sessão, e como uma CLI para hooks de pre-commit. Um dotnet tool execute, um índice em .unwritten/, sem servidor, sem assinatura, sem tokens.
Funciona em qualquer linguagem. Regras de nível de arquivo só precisam do histórico do git, então a detecção de buracos funciona da mesma forma em Python, TypeScript, Go ou repositórios mistos. Repositórios C# recebem adicionalmente regras de nível de método e filtragem de edições cosméticas; arquivos JSON recebem filtragem de ruído em nível de chave. Executar a ferramenta requer o .NET SDK (10+), mas os repositórios que ela analisa podem ser qualquer coisa.
Início rápido
Na raiz do seu repositório:
- Aqueça o índice (opcional — todo comando o constrói no primeiro uso e o mantém atualizado sozinho; isso apenas torna a primeira consulta rápida).
dotnet tool execute Unwritten --yes -- reindex
- Registre como servidor MCP (Claude Code):
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
- (Recomendado se usar Claude Code) Torne a verificação determinística — um hook de pre-commit do git e um hook Stop do Claude Code que devolvem buracos falhos ao agente antes que um commit seja feito:
dotnet tool execute Unwritten --yes -- install-hook --git --claude-code
É isso — seu agente agora pode chamar check_holes após editar, e os hooks capturam os casos em que ele esquece.
Vídeo explicativo
https://github.com/user-attachments/assets/4ae7a22d-c611-458f-8c48-08f87eca1d29
Veja em ação
stats mostra o que a ferramenta aprendeu — aqui, um par de arquivos acoplado com força suficiente (confiança ≥ 0,7) para bloquear um commit se um lado estiver faltando:

Depois de editar um arquivo desse par, check avisa que seu companheiro está faltando e explica as três maneiras de resolver — atualizar o companheiro, commitar mesmo assim ou silenciar a regra:

Com o hook de pre-commit instalado, a mesma verificação roda automaticamente em todo commit e o bloqueia enquanto o companheiro ainda estiver faltando:

Documentação
Todo o resto está em docs/README.md:
- Contexto e a pesquisa por trás
- Por que esses limites (testados em dados reais)
- Uso: servidor MCP, CLI, hooks, silenciando regras falsas
- Referência de configuração
- Como funciona
- O que ele NÃO faz (ainda)