Unwritten

La porción gratuita y nativa de agente del acoplamiento de cambios.

Documentación

Unwritten

NuGet Downloads License: MIT

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:

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

Index stats showing one high-confidence file pair

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:

check reporting a missing companion file with resolution options

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:

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

Documentación

Todo lo demás está en docs/README.md:

Licencia

MIT