Unwritten
La porción gratuita y nativa de agente del acoplamiento de cambios.
Documentación
Unwritten
Detecta los archivos que — tú o tu agente de IA — olvidaste cambiar. Unwritten aprende
de tu historial de git qué archivos suelen cambiar juntos y avisa cuando falta uno
en tu edición: "cambiaste OrderService.cs pero no
OrderServiceTests.cs, y cambian juntos el 94% de las veces." A estos
compañeros faltantes los llama huecos, y cada aviso incluye su puntuación
de confianza y ejemplos reales de commits como prueba.
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.
Funciona como un servidor MCP para que los agentes de codificación con IA (Claude Code, Copilot) puedan revisar
sus propias ediciones a mitad de sesión, y como una CLI para hooks de pre-commit.
Un dotnet tool execute, un índice en .unwritten/, sin servidor, sin suscripción,
sin tokens.
Funciona en cualquier lenguaje. Las reglas a nivel de archivo solo necesitan el historial de git, por lo que la detección de huecos funciona igual en Python, TypeScript, Go o repositorios mixtos. Los repositorios C# además obtienen reglas a nivel de método y filtrado de ediciones cosméticas; los archivos JSON obtienen filtrado de ruido a nivel de clave. Ejecutar la herramienta requiere el .NET SDK (10+), pero los repositorios que analiza pueden ser de cualquier tipo.
Inicio rápido
Desde la raíz de tu repositorio:
- Prepara el índice (opcional — cada comando lo construye en el primer uso y lo mantiene actualizado por sí mismo; esto solo hace que la primera consulta sea rápida).
dotnet tool execute Unwritten --yes -- reindex
- Regístrate como servidor MCP (Claude Code):
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
- (Recomendado si usas Claude Code) Haz que la verificación sea determinista — un hook de pre-commit de git y un hook de Stop de Claude Code que devuelven los huecos fallidos al agente antes de que se haga un commit:
dotnet tool execute Unwritten --yes -- install-hook --git --claude-code
Eso es todo — tu agente ahora puede llamar a check_holes después de editar, y los hooks
detectan los casos en los que se olvida de hacerlo.
Video explicativo
https://github.com/user-attachments/assets/4ae7a22d-c611-458f-8c48-08f87eca1d29
Míralo en acción
stats muestra lo que la herramienta ha aprendido — aquí, un par de archivos acoplado lo suficientemente
fuerte (confianza ≥ 0.7) como para bloquear un commit si falta uno de los lados:

Después de editar uno de los archivos de ese par, check avisa que su compañero
falta y explica las tres formas de resolverlo — actualizar el compañero,
hacer el commit de todos modos, o silenciar la regla:

Con el hook de pre-commit instalado, la misma verificación se ejecuta automáticamente en cada commit y lo bloquea mientras el compañero siga faltando:

Documentación
Todo lo demás está en docs/README.md:
- Antecedentes y la investigación detrás de esto
- Por qué estos umbrales (probados con datos reales)
- Uso: servidor MCP, CLI, hooks, silenciar reglas falsas
- Referencia de configuración
- Cómo funciona
- Lo que NO hace (aún)