Unwritten
Catch the files you — or your AI agent — forgot to change. Learns from git history, warns before commit. MCP server + CLI.
Documentation
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 -- reindex2. Register as an MCP server (Claude Code):
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp3. (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-codeThat'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**:
- Background & the research behind it
- Why these thresholds (tested on real data)
- Use: MCP server, CLI, hooks, muting false rules
- Configuration reference
- How it works
- What it does NOT do (yet)
License
Frequently asked questions
What is Unwritten?
Unwritten is Catch the files you — or your AI agent — forgot to change. Learns from git history, warns before commit. MCP server + CLI.
How do I install Unwritten?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is Unwritten open source?
Yes — it is hosted on GitHub at https://github.com/Byggarepop/Unwritten and has 1 stars.
Related MCP tools
Open-source coding agent memory. Records issues, attempts, fixes and decisions, then warns your agent before it repeats an approach that already failed. Native MCP server for Claude Code, Cursor, Antigravity and Codex. 100% local, no cloud, no telemetry. MIT.
AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C# method may be turned into a tool by a single line. Works with Claude Code, Gemini, Copilot, Cursor and any other absolutely for free.
Cut AI token costs 95%+ on code exploration. The leading MCP server for precise, symbol-level GitHub code retrieval via tree-sitter AST. Works with Claude Code, Cursor & any MCP client. 313B+ tokens saved.
Official remote MCP server for Atlassian. Securely connect Jira, Confluence, Jira Service Management, Bitbucket, and Compass to Claude, ChatGPT, Cursor, VS Code, and other AI tools using OAuth 2.1 or API tokens.
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP