MITBenAHammond/code-auditor-mcp

Code Auditor

Code Auditor はコードベース全体を読み、何が間違っているかを伝えます——ファイルの間にしか存在しない問題も含めて。スキルを 1 つインストールすれば、エージェントが編集のたびにその状態を保ちます。

どこでもインストールできる 2 つのコマンド:

npm install -g code-auditor-mcp
code-audit install --agent all

Claude Code、Cursor、Codex、Gemini CLI、そして SKILL.md 対応エージェントすべてに対応。Claude Code と Codex ではブロッキングフック、その他は MCP レポート。 code-audit install --list で対応マトリクスを表示。

仕組み

コードベースを引き継いだ? 数か月触っていなかったものに戻ってきた? 急いで作ったものの、中身が分からなくなった? まず一度監査して全体像をつかみ、あとはエージェントが編集のたびにきれいに保ちます。どちらの場合も分析は決定的です。

コードをきれいにする

code-audit audit

TypeScript、JavaScript、Go、CSS/SCSS のプロジェクトに対して実行すると、構造化された完全なレポート——ルールごとに 1 つのリーディングが得られます。本当の問題を修正し、残りをベースライン化して、まっさらな状態から始めましょう。

  1. 決定的であり、モデル任せではない

    tree-sitter と ast-grep が分析を行うため、どのモデルを使っても、モデルを使わなくても、リーディングは毎回同じです。

  2. 行動につなげられるレポート

    HTML · JSON · CSV · SARIF 2.1.0

    カバレッジパネルが何を測定したかを示し、その後に各リーディングのファイル、行番号、重大度、ルール ID、メッセージが続きます。既知の問題を負債としてベースライン化すれば、新しい問題だけが浮き上がります。

きれいな状態を保つ

code-audit changed

インストール後、エージェントは直前に変更したファイルだけを監査します。ブロッキング重大度のリーディング——デフォルトは critical と warning——はリポジトリに到達する前に検出・修正されます。コードベース全体を読み直さないため、モデルコストも低く抑えられます。

  1. スキルをインストール

    code-audit install --agent claude

    SKILL.md と PostToolUse フックをエージェントに追加します — Claude Code と Codex に対応。

  2. diff を監査

    code-audit changed --json

    プロジェクト全体ではなく、変更されたファイルだけを対象にします。フックは Write と Edit のたびに発火します。

  3. ブロッキングのリーディングは編集をブロック

    hardcoded-secret · critical · src/login.ts:52

    エージェントはルール ID、重大度、ファイル、行、メッセージを読み取り、修正します。ブロッキングのリーディングがないコードだけがリポジトリに届きます。ブロックする重大度は .codeauditor.json の gateSeverities で設定できます。

TypeScript、JavaScript、Go、CSS/SCSS — tree-sitter と ast-grep の文法で解析。

検出できるもの

TypeScript、JavaScript、Go、CSS/SCSS を対象とする 10 のアナライザーと 3 つのクロス言語アナライザー。以下の各例は実際のコードベースからの実際のリーディングで、ほとんどは単一のファイルからは見えません。

N+1 クエリ

for (const org of orgs) { await db.select().from(organizations) }

ループが反復ごとに 1 つのクエリを発行するパターン。実際のクエリモジュールの階層走査で見つかりました。ノードごとにデータベースへの往復が発生します。

死んだモジュール

compliance-enhanced.ts — 563 lines, 0 external importers

563 行、外部からのインポートゼロ、より新しい兄弟モジュールに取って代わられながらもまだツリーに残っています。何も参照していないため、誰も気づきません。

削除されたテーブルがまだ参照される

SELECT * FROM generation_queue // dropped in migration 0198

マイグレーションでテーブルが削除されたのに、8 か所の呼び出しサイトがまだ参照しています。スキーマは先に進みましたが、コードは進んでいません。

ハードコードされた資格情報

page.type('#password', 'vyy8AUVvish34Fq')

平文のパスワードがスクリプトに置かれ、いつリリースされてもおかしくありません。実行しなくても、ファイルを読むだけで見つかります。

全カタログ — 10 のアナライザーと 3 つのクロス言語

SOLID 原則

5 つの原則を機械的に徹底。

DRY

コピペを負債になる前に検出。

データアクセスとセキュリティ

SQL インジェクション、テナントリーク、N+1。

ドキュメント品質

未文書のエクスポートは未来のバグ。

React ベストプラクティス

レビューをすり抜けるミス。

スキーマ認識

存在しない列を参照するクエリ。

不変条件ルール

チームのルールを強固な不変条件として徹底。

スキーマ定義
クロス言語

スキーマとコードが食い違うとき。

API 契約
クロス言語

契約に対するエンドポイント、フィールド、認証。

依存グラフ
クロス言語

循環、結合、ハブ、孤立。

スタイル

トークンのドリフト、z-index の乱立。

規約

コードの慣習を読み取り、逸脱を検出。

クロスドメイン

境界をまたいで初めて見えるもの。

編集ごとに、diff をスコープ

エージェントは code-audit changed を、プロジェクト全体ではなく直前に変更したファイルに対して実行します。各アナライザーは、ファイル、行、重大度、ルール ID、そしてエージェントが読んで修正できるメッセージという構造化されたリーディングを返します。

JSON 出力
SARIF 2.1.0 出力
CSV 出力
HTML 出力

やらないこと

あらかじめ正直に述べる 3 つの境界です。

修正は書かない

報告するだけです。修正するのは人——またはエージェントです。Code Auditor は何がどこで間違っているかを伝えますが、あなたのコードを修正することはありません。

リンターの代替ではない

ESLint や Prettier などと併用してください。リンターは 1 つのファイルを読み、Code Auditor はコードベース全体を読みます。答える問いが違います。

サイズ規則は閾値であり、評決ではない

関数の長さ、引数の数、クラスサイズ——これらは調整可能な測定値であり、評価ではありません。リーディングです:行動の順序であって、コードへの評決ではありません。