
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
Catches the files you — or your AI agent — forgot to change: learns from git history which files change together and warns when one is missing from your edit. MCP server + pre-commit CLI.
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.
From your repo's root:
dotnet tool execute Unwritten --yes -- reindex
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
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.
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:

Everything else lives in docs/README.md:
FAQs
Catches the files you — or your AI agent — forgot to change: learns from git history which files change together and warns when one is missing from your edit. MCP server + pre-commit CLI.
We found that Unwritten demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.