Unwritten

A fatia gratuita e nativa de agentes do acoplamento de mudanças.

Documentação

Unwritten

NuGet Downloads License: MIT

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:

  1. 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
  1. Registre como servidor MCP (Claude Code):
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
  1. (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:

Index stats showing one high-confidence file pair

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:

check reporting a missing companion file with resolution options

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:

Pre-commit hook blocking a commit on a missing companion file

Documentação

Todo o resto está em docs/README.md:

Licença

MIT