Unwritten

Registre officiel Outils de développement

Catches files and C# members you forgot to change, learned from your repo's git history

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NUGET package Unwritten
Claude Code
claude mcp add unwritten -- dnx Unwritten@0.4.6 --yes
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "unwritten": {
            "command": "dnx",
            "args": [
                "Unwritten@0.4.6",
                "--yes"
            ]
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Unwritten
  2. Quick start
  3. Explanatory video
  4. See it in action
  5. Documentation
  6. License

Unwritten

Catch the files you — or your AI agent — forgot to change. Unwritten learns from your git history which files usually change together and warns when one is missing from your edit: "you changed OrderService.cs but not OrderServiceTests.cs, and they change together 94% of the time." It calls these missing companions holes, and every warning comes with its confidence score and real example commits as proof.

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.

It runs as an MCP server so AI coding agents (Claude Code, Copilot) can check their own edits mid-session, and as a CLI for pre-commit hooks. One dotnet tool execute, an index in .unwritten/, no server, no subscription, no tokens.

Works on any language. File-level rules only need git history, so hole detection works the same on Python, TypeScript, Go, or mixed repos. C# repos additionally get method-level rules and cosmetic-edit filtering; JSON files get key-level noise filtering. Running the tool requires the .NET SDK (10+), but the repos it analyzes can be anything.

Quick start

From your repo's root:

  1. Warm up the index (optional — every command builds it on first use and keeps it current by itself; this just makes the first query fast).
dotnet tool execute Unwritten --yes -- reindex
  1. Register as an MCP server (Claude Code):
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
  1. (Recommended if using Claude Code) Make the check deterministic — a git pre-commit hook and a Claude Code Stop hook that feeds failing holes back to the agent before a commit is made:
dotnet tool execute Unwritten --yes -- install-hook --git --claude-code

That's it — your agent can now call check_holes after editing, and the hooks catch the cases where it forgets to.

Explanatory video

https://github.com/user-attachments/assets/4ae7a22d-c611-458f-8c48-08f87eca1d29

See it in action

stats shows what the tool has learned — here, one file pair coupled strongly enough (confidence ≥ 0.7) to block a commit if one side is missing:

After editing one file of that pair, check warns that its companion is missing and spells out the three ways to resolve it — update the companion, commit anyway, or mute the rule:

With the pre-commit hook installed, the same check runs automatically on every commit and blocks it while the companion is still missing:

Documentation

Everything else lives in docs/README.md:

License

MIT

Questions fréquentes

Qu'est-ce que Unwritten ?

Catches files and C# members you forgot to change, learned from your repo's git history

Comment installer Unwritten ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add unwritten -- dnx Unwritten@0.4.6 --yes. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Unwritten ?

Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.

Unwritten est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Unwritten ?

Il est publié par Byggarepop. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.