Unwritten について
Unwrittenは、リポジトリのgit履歴からファイルの同時変更パターンを学び、変更漏れの可能性がある関連ファイルやC#メンバーを検出します。MCP経由でコーディングエージェントから利用でき、CLIやコミットフックでも動作し、警告には信頼度と例示コミットが付きます。
主な機能
- 01git履歴から同時変更パターンを学習
- 02関連ファイルやメンバーの変更漏れを検出
- 03信頼度と例示コミットを表示
- 04あらゆる言語のリポジトリをファイル単位で分析
- 05C#メンバー検査とJSONノイズ除去
- 06MCP、CLI、フックで実行
活用シーン
- 01コミット前にエージェントの編集を確認
- 02実装ファイル変更時のテスト漏れを検出
- 03pre-commitフックでリポジトリを検査
MCP 対応
MCPサーバーとして動作し、コーディングエージェントが`check_holes`を呼び出して編集内容を検査できます。CLIやフックによる検査にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Unwritten
自分や AI エージェントが変更し忘れたファイルを見つけます。 Unwritten は git の履歴から、どのファイルが一緒に変更されることが多いかを学習し、編集対象から漏れているファイルがあると警告します。「OrderService.cs を変更しましたが、OrderServiceTests.cs は変更していません。この 2 つは 94% の確率で一緒に変更されています」という具合です。こうした変更漏れのあるファイルを 穴 と呼び、すべての警告に確信度スコアと、証拠となる実際のコミット例を添えます。
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.
AI コーディングエージェント(Claude Code、Copilot)がセッション中に自分の編集内容を確認できるよう、MCP サーバーとして動作します。また、コミット前フック用の CLI としても使えます。dotnet tool execute を 1 回実行すれば、.unwritten/ にインデックスが作成されます。サーバーもサブスクリプションもトークンも不要です。
どの言語でも使えます。 ファイル単位のルールには git の履歴しか必要ないため、Python、TypeScript、Go、または複数の言語が混在するリポジトリでも、同じように変更漏れを検出できます。C# リポジトリでは、さらにメソッド単位のルールと表面的な編集のフィルタリングが利用できます。JSON ファイルでは、キー単位でノイズをフィルタリングできます。ツールの実行には .NET SDK(10 以降)が必要ですが、分析対象のリポジトリはどのようなものでもかまいません。
クイックスタート
リポジトリのルートから実行します。
- インデックスを事前に準備します(任意です。どのコマンドも初回実行時にインデックスを作成し、その後は自動で最新の状態に保つため、これは最初のクエリを速くするだけです)。
dotnet tool execute Unwritten --yes -- reindex
- MCP サーバーとして登録します(Claude Code)。
claude mcp add unwritten -- dotnet tool execute Unwritten --yes -- mcp
- (Claude Code を使用する場合に推奨)チェックを確実に実行できるようにします。git の pre-commit フックと Claude Code の Stop フックを使い、コミット前に失敗した穴をエージェントにフィードバックします。
dotnet tool execute Unwritten --yes -- install-hook --git --claude-code
これで完了です。エージェントは編集後に check_holes を呼び出せるようになり、フックによって変更し忘れを検出できます。
解説動画
https://github.com/user-attachments/assets/4ae7a22d-c611-458f-8c48-08f87eca1d29
動作例
stats を実行すると、ツールが学習した内容が表示されます。ここでは、ファイルのペアが 1 つ、コミットをブロックするほど強く連動しています(確信度 ≥ 0.7)。片方の変更が漏れている場合にブロックされます。

そのペアの片方を編集すると、もう一方のファイルが漏れていると check が警告し、対処方法を 3 つ示します。もう一方も更新する、変更をコミットする、またはルールを無効にする、のいずれかです。

pre-commit フックをインストールすると、同じチェックがすべてのコミットで自動的に実行され、もう一方のファイルが漏れている間はコミットがブロックされます。

ドキュメント
その他の内容はすべて docs/README.md にあります。
- 背景と、このツールの着想となった研究
- このしきい値を採用した理由(実データでの検証)
- 使い方:MCP サーバー、CLI、フック、誤ったルールの無効化
- 設定リファレンス
- 仕組み
- このツールでできないこと(現時点)
License
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。