Judges Panel について
Judges Panelは、AI生成コードをセキュリティ、コスト、コンプライアンスなどの観点で確認するチーム向けのコード評価サーバーです。オフラインのパターン照合とAST解析にLLMによるレビューを組み合わせ、CLI、API、CIにも対応します。
主な機能
- 0145種類の専門コード評価
- 02オフラインのパターン照合とAST解析
- 03LLMによる詳細レビュー
- 04200超の決定的な自動修正パッチ
- 05CLI、API、CIワークフロー
活用シーン
- 01リリース前のAI生成コードレビュー
- 02セキュリティやハードコードされた秘密情報の検出
- 03プルリクエストCIでのコード検査
MCP 対応
stdioで動作するMCPサーバーとして、VS CodeやClaude DesktopなどのMCPクライアントにコード評価機能と専門家ペルソナのプロンプトを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Judges Panel
AI 生成コードを評価する45 の専門分野に特化した判定者によるパネルを提供する MCP(Model Context Protocol)サーバーです。レビュー対象のプロジェクトを問わず、独立した品質ゲートとして機能します。決定論的なパターンマッチングと AST 解析(即時実行、オフライン、LLM 呼び出しゼロ)と、AI アシスタントが 45 のすべての分野で専門家のペルソナに基づく分析を実行できる LLM を活用した詳細レビュー用プロンプトを組み合わせています。
主な特長:
- リリース判断、平易な言葉でのリスク概要、優先順位付けされた修正を確認できる **App Builder Workflow(3 ステップ)**のデモを含みます。デモを試すをご覧ください。
- ポリシープロファイル、エビデンスの調整、専門分野からのフィードバック、信頼度スコア、確実性に関するレポートを備えた V2 のコンテキスト対応評価を含みます。
- リポジトリをクローンして完全な審査を実行し、統合された Markdown レポートを出力する パブリックリポジトリ URL レポート機能を含みます。
- 200 件以上の決定論的な自動修正パッチ(
src/patches/index.tsを参照)に加え、LLM を活用した詳細レビューを提供します。
🧪
printHelp内の多くのコマンドは、試験段階またはロードマップ上のものです。デフォルトでは、GA コマンドのみを表示します。スタブを表示するには、JUDGES_SHOW_EXPERIMENTAL=1を設定してください。まだ接続されていない場合があります。
🔰 パッケージ
- CLI:
@kevinrabun/judges-cli→ バイナリjudges(npx @kevinrabun/judges-cli eval --file app.tsを使用)。- MCP/API:
@kevinrabun/judges→ プログラム用 API + MCP サーバー(npm install @kevinrabun/judges)。- VS Code 拡張機能:
vscode-extension/をご覧ください。- GitHub Action:
uses: KevinRabun/judges@main(CI クイックスタートを参照)。
クイックスタート
CLI(単発実行)
# Using the CLI package (recommended)
npx @kevinrabun/judges-cli eval --file src/app.ts
# Show GA commands only (default)
npx @kevinrabun/judges-cli --help
# Show experimental/roadmap commands
echo "JUDGES_SHOW_EXPERIMENTAL=1" >> $GITHUB_ENV
npx @kevinrabun/judges-cli --help
# License scan (supply-chain & license compliance)
npx @kevinrabun/judges-cli license-scan --dir .
CLI と API の違い: Judges をアプリに組み込む(MCP/API)場合は、
@kevinrabun/judgesをインストールしてください。コマンドラインでは、@kevinrabun/judges-cli(バイナリjudges)を使用してください。
GitHub Action
name: Judges
on: [pull_request, push]
jobs:
judges:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: KevinRabun/judges@main
with:
path: .
diff-only: true # evaluate only changed lines in PRs (default true)
fail-on-findings: true # fail on critical/high findings
upload-sarif: true # upload SARIF to GitHub Code Scanning
プログラム用 API(MCP サーバーを含む)
npm install @kevinrabun/judges
import { evaluateCode } from "@kevinrabun/judges/api";
const verdict = evaluateCode("const password = 'ProdSecret';", "typescript");
console.log(verdict.overallVerdict, verdict.overallScore);
MCP サーバー
MCP サーバーは stdio 上で動作し、MCP クライアント(VS Code、Claude Desktop など)によって起動されます。
MCP 設定(例:mcp.json)で設定してください。
{
"servers": {
"judges": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@kevinrabun/judges"]
}
}
}
または、サーバーを直接実行します。
npx @kevinrabun/judges
# Starts the MCP server on stdio
設定ファイル:
.judgesrc.json(expandEnvPlaceholdersによる${ENV_VAR}の置換をサポート)。設定を参照してください。
なぜ Judges なのか?
AI コードジェネレーター(Copilot、Cursor、Claude、ChatGPT など)はコードを素早く書きますが、安全でないデフォルト設定、認証の欠如、ハードコードされたシークレット、不十分なエラー処理を日常的に生成します。人間のレビュアーがこうした問題の一部を見つけることはできますが、45 の観点を一貫してレビューできる人はいません。
| ESLint / Biome | SonarQube | Semgrep / CodeQL | Judges | |
|---|---|---|---|---|
| 対象範囲 | スタイル+一部のバグ | バグ+コードの問題点 | セキュリティパターン | 45 の領域:セキュリティ、コスト、コンプライアンス、アクセシビリティ、API 設計、クラウド、UX、… |
| AI 生成コードへの特化 | なし | なし | 一部対応 | AI の出力で起こる失敗パターンに特化して構築 |
| セットアップ | プロジェクトごとに設定 | サーバー+スキャナー | クラウドまたはローカル | コマンド 1 つ:npx @kevinrabun/judges-cli eval file.ts |
| 自動修正パッチ | 一部あり | なし | なし | 200 件以上の決定論的パッチ — 即座に適用、オフラインで動作 |
| 非技術者向けの出力 | なし | ダッシュボード | なし | What/Why/Next を含む平易な言葉での検出結果 |
| MCP ネイティブ | なし | なし | なし | はい — Copilot、Claude、Cursor 内で動作 |
| SARIF 出力 | なし | あり | あり | はい — GitHub Code Scanning にアップロード |
| コスト | 無料 | $$$$ | 無料/有料 | 無料/MIT |
Judges はリンターの代わりではありません — リンターが対応しない観点をカバーします。認証戦略、データ主権、コストパターン、アクセシビリティ、フレームワーク固有のアンチパターン、複数ファイルにまたがるアーキテクチャ上の問題などです。
クイックスタート
前提条件:Node.js >=18(>=20 推奨)、
npxが利用可能であること。judgesCLI バイナリは @kevinrabun/judges-cli に含まれています(推奨)。また、npx @kevinrabun/judgesでも動作します。パッケージ:
- CLI:
npm install -g @kevinrabun/judges-cli(またはnpx @kevinrabun/judges-cli ...)- MCP/API:
npm install @kevinrabun/judges
MCP サーバーとプログラムから利用する API には @kevinrabun/judges を使用してください。ターミナルコマンド judges を使う場合は @kevinrabun/judges-cli を使用してください。
今すぐ試す(リポジトリのクローンは不要)
# Install the CLI globally
npm install -g @kevinrabun/judges-cli
# Evaluate any file
judges eval src/app.ts
# Pipe from stdin
cat api.py | judges eval --language python
# Single judge
judges eval --judge cybersecurity server.ts
# SARIF output for CI
judges eval --file app.ts --format sarif > results.sarif
# HTML report with severity filters and dark/light theme
judges eval --file app.ts --format html > report.html
# Fail CI on findings (exit code 1)
judges eval --fail-on-findings src/api.ts
# Suppress known findings via baseline
judges eval --baseline baseline.json src/api.ts
# Use a named preset
judges eval --preset security-only src/api.ts
# Use a config file
judges eval --config .judgesrc.json src/api.ts
# Set a minimum score threshold (exit 1 if below)
judges eval --min-score 80 src/api.ts
# One-line summary for scripts
judges eval --summary src/api.ts
# Agentic skills (orchestrated judge sets)
judges skill ai-code-review --file src/app.ts
judges skill security-review --file src/api.ts --format json
judges skill release-gate --file src/app.ts
judges skills # list available skills
> Full catalog: [`docs/skills.md`](docs/skills.md)
# List all 45 judges
judges list
その他の CLI コマンド
# Interactive project setup wizard
judges init
# Preview auto-fix patches (dry run)
judges fix src/app.ts
# Apply patches directly
judges fix src/app.ts --apply
# License compliance scan (copyleft/unknown detection)
judges license-scan --format json --risk high
# Watch mode — re-evaluate on file save
judges watch src/
# Project-level report (local directory)
judges report . --format html --output report.html
# Evaluate a unified diff (pipe from git diff)
git diff HEAD~1 | judges diff
# Analyze dependencies for supply-chain risks
judges deps --path . --format json
# Run GitHub App server (zero-config PR reviews)
judges app serve --port 4567
# Run GitHub PR review (gh CLI required)
judges review --pr 123 --repo owner/name --diff-only
# Auto-tune presets and configs
judges tune --dir . --apply
# Create a baseline file to suppress known findings
judges baseline create --file src/api.ts -o baseline.json
# Generate CI template files
judges ci-templates --provider github
judges ci-templates --provider gitlab
judges ci-templates --provider azure
judges ci-templates --provider bitbucket
# Generate per-judge rule documentation
judges docs
judges docs --judge cybersecurity
judges docs --output docs/
# Install shell completions
judges completions bash # eval "$(judges completions bash)"
judges completions zsh
judges completions fish
judges completions powershell
# Install pre-commit hook
judges hook install
# Uninstall pre-commit hook
judges hook uninstall
🔎 ヒント:CLI のヘルプには、デフォルトで GA コマンドのみが表示されるようになりました。実験的/ロードマップ上のコマンドを表示するには、次を実行してください。
JUDGES_SHOW_EXPERIMENTAL=1 judges --help
GitHub App(セルフホスト可能な Webhook)
設定不要の PR レビュアーを GitHub App として実行します。
# Run the webhook server locally
judges app serve --port 4567
必須の環境変数:
JUDGES_APP_ID– GitHub App IDJUDGES_PRIVATE_KEYまたはJUDGES_PRIVATE_KEY_PATH– PEM 秘密鍵JUDGES_WEBHOOK_SECRET– 署名検証シークレット
任意:
JUDGES_MIN_SEVERITY(デフォルト:medium)JUDGES_MAX_COMMENTS(デフォルト:25)JUDGES_TEST_DRY_RUN=1を設定すると、テスト中のライブネットワーク呼び出しを回避できます
ローカルテストでは、ngrok http 4567 を使って http://localhost:4567/webhook を公開し、それに合わせて GitHub App の Webhook URL を設定できます。
GitHub Actions で使用する
設定不要で Judges を CI パイプラインに追加できます。
# .github/workflows/judges.yml
name: Judges Code Review
on: [pull_request]
jobs:
judges:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write # only if using upload-sarif
steps:
- uses: actions/checkout@v4
- uses: KevinRabun/judges@main
with:
path: src/api.ts # file or directory
format: text # text | json | sarif | markdown
upload-sarif: true # upload to GitHub Code Scanning
fail-on-findings: true # fail CI on critical/high findings
後続のステップで利用できる出力:verdict、score、findings、critical、high、sarif-file。
Docker で使用する(Node.js 不要)
# Build the image
docker build -t judges .
# Evaluate a local file
docker run --rm -v $(pwd):/code judges eval --file /code/app.ts
# Pipe from stdin
cat api.py | docker run --rm -i judges eval --language python
# List judges
docker run --rm judges list
または MCP サーバーとして使用する
1. インストールしてビルドする
git clone https://github.com/KevinRabun/judges.git
cd judges
npm install
npm run build
2. デモを試す
付属のデモを実行して、意図的に問題を含ませた API サーバーを 45 の Judges すべてが評価する様子を確認します。
npm run demo
このコマンドは examples/sample-vulnerable-api.ts を評価します。このファイルには、セキュリティ上の欠陥、パフォーマンスのアンチパターン、コード品質の問題が意図的に詰め込まれており、各 Judge のスコアと検出結果を含む完全な評価結果が出力されます。
デモには**アプリビルダーのワークフロー(3 ステップ)**セクションも追加されました。1 回の実行で、審査結果とワークフローの出力を両方確認できます。
- リリース判断(
Ship now/Ship with caution/Do not ship) - 主なリスクの平易な言葉での要約
- 優先順位付けされた修正タスクと、AI で修正可能な
P0/P1項目
ワークフロー出力のサンプル(一部省略):
╔══════════════════════════════════════════════════════════════╗
║ App Builder Workflow Demo (3-Step) ║
╚══════════════════════════════════════════════════════════════╝
Decision : Do not ship
Verdict : FAIL (47/100)
Risk Counts : Critical 24 | High 27 | Medium 55
Step 2 — Plain-Language Findings:
- [CRITICAL] DATA-001: Hardcoded password detected
What: ...
Why : ...
Next: ...
Step 3 — Prioritized Tasks:
- P0 | DEVELOPER | Effort L | DATA-001
Task: ...
Done: ...
AI-Fixable Now (P0/P1):
- P0 DATA-001: ...
審査結果出力のサンプル(一部省略):
╔══════════════════════════════════════════════════════════════╗
║ Judges Panel — Full Tribunal Demo ║
╚══════════════════════════════════════════════════════════════╝
Overall Verdict : FAIL
Overall Score : 43/100
Critical Issues : 15
High Issues : 17
Total Findings : 83
Judges Run : 33
Per-Judge Breakdown:
────────────────────────────────────────────────────────────────
❌ Judge Data Security 0/100 7 finding(s)
❌ Judge Cybersecurity 0/100 7 finding(s)
❌ Judge Cost Effectiveness 52/100 5 finding(s)
⚠️ Judge Scalability 65/100 4 finding(s)
❌ Judge Cloud Readiness 61/100 4 finding(s)
❌ Judge Software Practices 45/100 6 finding(s)
❌ Judge Accessibility 0/100 8 finding(s)
❌ Judge API Design 0/100 9 finding(s)
❌ Judge Reliability 54/100 3 finding(s)
❌ Judge Observability 45/100 5 finding(s)
❌ Judge Performance 27/100 5 finding(s)
❌ Judge Compliance 0/100 4 finding(s)
⚠️ Judge Testing 90/100 1 finding(s)
⚠️ Judge Documentation 70/100 4 finding(s)
⚠️ Judge Internationalization 65/100 4 finding(s)
⚠️ Judge Dependency Health 90/100 1 finding(s)
❌ Judge Concurrency 44/100 4 finding(s)
❌ Judge Ethics & Bias 65/100 2 finding(s)
❌ Judge Maintainability 52/100 4 finding(s)
❌ Judge Error Handling 27/100 3 finding(s)
❌ Judge Authentication 0/100 4 finding(s)
❌ Judge Database 0/100 5 finding(s)
❌ Judge Caching 62/100 3 finding(s)
❌ Judge Configuration Mgmt 0/100 3 finding(s)
⚠️ Judge Backwards Compat 80/100 2 finding(s)
⚠️ Judge Portability 72/100 2 finding(s)
❌ Judge UX 52/100 4 finding(s)
❌ Judge Logging Privacy 0/100 4 finding(s)
❌ Judge Rate Limiting 27/100 4 finding(s)
⚠️ Judge CI/CD 80/100 2 finding(s)
3. テストを実行する
npm test
すべてのジャッジ、AST パーサー、Markdown フォーマッター、エッジケースを対象に、自動テストを実行します。
4. エディターに接続する
VS Code(推奨 — 設定不要)
マーケットプレイスから Judges Panel 拡張機能をインストールします。以下の機能を利用できます。
- ファイルを保存するたびに表示される インライン診断とクイック修正
@judgesチャット参加者 — Copilot Chat で@judgesと入力するか、「judges panel review」と依頼するだけで、Copilot が自動的にルーティングします- 自動設定された MCP サーバー — 45 個すべての専門家ペルソナのプロンプトを、設定不要で Copilot から利用できます
code --install-extension kevinrabun.judges-panel
VS Code — MCP を手動で設定する場合
ワークスペースの設定を明示的に行う場合(または拡張機能を使わないチームメンバーも利用できるようにする場合)は、.vscode/mcp.json を作成します。
{
"servers": {
"judges": {
"command": "npx",
"args": ["-y", "@kevinrabun/judges"]
}
}
}
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"judges": {
"command": "npx",
"args": ["-y", "@kevinrabun/judges"]
}
}
}
Cursor/その他の MCP クライアント
MCP 対応クライアントであれば、同じ npx コマンドを使用できます。
{
"command": "npx",
"args": ["-y", "@kevinrabun/judges"]
}
5. GitHub Copilot の PR レビューで Judges を使う
はい。重要な注意点が 1 つありますが、GitHub ベースのレビューのワークフローに Judges を組み込むことができます。
- GitHub でホストされている
copilot-pull-request-reviewerでは、現在、VS Code と同じ方法で任意のローカル MCP サーバーを直接追加できません。 - 実用的な方法は、各 PR で CI 上の Judges を実行してレポート/チェックを公開し、レビュー中に Copilot と人間のレビュアーがその出力を利用することです。
オプション A(推奨):PR ワークフローのチェックとレポートアーティファクト
.github/workflows/judges-pr-review.yml を作成します。
name: Judges PR Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
judges:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install
run: npm ci
- name: Generate Judges report
run: |
npx tsx -e "import { generateRepoReportFromLocalPath } from './src/reports/public-repo-report.ts';
const result = generateRepoReportFromLocalPath({
repoPath: process.cwd(),
outputPath: 'judges-pr-report.md',
maxFiles: 600,
maxFindingsInReport: 150,
});
console.log('Overall:', result.overallVerdict, result.averageScore);"
- name: Upload report artifact
uses: actions/upload-artifact@v4
with:
name: judges-pr-report
path: judges-pr-report.md
これにより、すべての PR で再現可能な Judges の出力が得られ、チーム(および Copilot)が参照できます。
オプション B:Copilot のカスタム指示をリポジトリに追加する
.github/instructions/judges.instructions.md を作成し、次のようなガイダンスを記述します。
When reviewing pull requests:
1. Read the latest Judges report artifact/check output first.
2. Prioritize CRITICAL and HIGH findings in remediation guidance.
3. If findings conflict, defer to security/compliance-related Judges.
4. Include rule IDs (e.g., DATA-001, CYBER-004) in suggested fixes.
これにより、Copilot のフィードバックを Judges の検出結果に沿ったものにできます。
CLI リファレンス
すべてのコマンドで、使用方法の詳細を --help から確認できます。
judges eval
45 個すべてのジャッジ、または単一のジャッジを使ってファイルを評価します。
| フラグ | 説明 |
|---|---|
--file <path> /位置引数 | 評価するファイル |
--judge <id> / -j <id> | 単一ジャッジモード |
--language <lang> / -l <lang> | 言語のヒント(拡張子から自動検出) |
--format <fmt> / -f <fmt> | 出力形式:text、json、sarif、markdown、html、pdf、junit、codeclimate、github-actions |
--output <path> / -o <path> | 出力をファイルに書き込む |
--fail-on-findings | 判定が FAIL の場合、終了コード 1 で終了する |
--baseline <path> / -b <path> | JSON ベースラインファイル — 既知の検出結果を抑制する |
--summary | サマリーを 1 行で出力する(スクリプトに最適) |
--config <path> | .judgesrc / .judgesrc.json 設定ファイルを読み込む |
--preset <name> | 名前付きプリセットを使用する(22 個すべてのオプションについては名前付きプリセットを参照) |
--min-score <n> | 総合スコアがこのしきい値を下回った場合、終了コード 1 で終了する |
--verbose | 実行時間とデバッグ情報を出力する |
--quiet | 必須でない出力を抑制する |
--no-color | ANSI カラーを無効にする |
judges init
プロジェクト設定を生成する対話型ウィザードです。
.judgesrc.json— ルールのカスタマイズ、無効にするジャッジ、重大度のしきい値.github/workflows/judges.yml— GitHub Actions CI ワークフロー.gitlab-ci.judges.yml— GitLab CI パイプライン(任意)azure-pipelines.judges.yml— Azure Pipelines(任意)
judges fix
決定論的な検出結果に基づく自動修正パッチをプレビューまたは適用します。
| フラグ | 説明 |
|---|---|
| 位置引数 | 修正するファイル |
--apply | パッチをディスクに書き込む(デフォルト:ドライラン) |
--judge <id> | 単一のジャッジによる検出結果に限定する |
judges watch
ファイルの保存時に、継続的に再評価します。
| フラグ | 説明 |
|---|---|
| 位置引数 | 監視するファイルまたはディレクトリ(デフォルト:.) |
--judge <id> | 単一ジャッジモード |
--fail-on-findings | 評価に失敗した場合、ゼロ以外の終了コードで終了する |
judges report
ローカルディレクトリに対して、プロジェクト全体の審査を実行します。
| フラグ | 説明 |
|---|---|
| positional | ディレクトリパス(デフォルト:.) |
--format <fmt> | 出力形式:text、json、html、markdown |
--output <path> | レポートをファイルに書き込みます |
--max-files <n> | 分析するファイルの最大数(デフォルト:600) |
--max-file-bytes <n> | 指定サイズを超えるファイルをスキップします(デフォルト:300000) |
judges hook
ステージングされたファイルに対して Judges を実行する Git の pre-commit フックを管理します。
judges hook install # add pre-commit hook
judges hook uninstall # remove pre-commit hook
Husky(.husky/pre-commit)を検出し、見つからない場合は .git/hooks/pre-commit を使用します。マーカーに基づいて挿入するため、既存のフックを上書きしません。
judges diff
統合 diff(例:git diff の出力)から変更された行のみを評価します。
| フラグ | 説明 |
|---|---|
--file <path> | stdin の代わりにファイルから diff を読み込みます |
--format <fmt> | 出力形式:text、json、sarif、junit、codeclimate |
--output <path> | 出力をファイルに書き込みます |
git diff HEAD~1 | judges diff
judges diff --file changes.patch --format sarif
judges deps
プロジェクトの依存関係を分析し、サプライチェーンのリスクを調べます。
| フラグ | 説明 |
|---|---|
--path <dir> | スキャンするプロジェクトのルート(デフォルト:.) |
--format <fmt> | 出力形式:text、json |
judges deps --path .
judges deps --path ./backend --format json
judges baseline
今後の評価で既知の検出結果を抑制するためのベースラインファイルを作成します。
judges baseline create --file src/api.ts
judges baseline create --file src/api.ts -o .judges-baseline.json
judges ci-templates
一般的なプロバイダー向けの CI/CD 設定テンプレートを生成します。
judges ci-templates --provider github # .github/workflows/judges.yml
judges ci-templates --provider gitlab # .gitlab-ci.judges.yml
judges ci-templates --provider azure # azure-pipelines.judges.yml
judges ci-templates --provider bitbucket # bitbucket-pipelines.yml (snippet)
judges docs
各 judge のルールに関するドキュメントを Markdown 形式で生成します。
| フラグ | 説明 |
|---|---|
--judge <id> | 単一の judge のドキュメントを生成します |
--output <dir> | judge ごとの .md ファイルを書き込みます |
judges docs # all judges to stdout
judges docs --judge cybersecurity # single judge
judges docs --output docs/judges/ # write files to directory
judges completions
シェル補完スクリプトを生成します。
eval "$(judges completions bash)" # Bash
eval "$(judges completions zsh)" # Zsh
judges completions fish | source # Fish
judges completions powershell # PowerShell (Register-ArgumentCompleter)
名前付きプリセット
--preset を使用して、事前設定済みの評価設定を適用します。
| プリセット | 説明 |
|---|---|
strict | すべての重大度、すべての judge を対象にします — 最も徹底的な評価 |
lenient | 高および重大な検出結果のみを対象にします — 高速で重点的な評価 |
security-only | セキュリティに重点を置きます — セキュリティ以外の judge(コスト、スケーラビリティ、ドキュメント、a11y、i18n、UX など)を無効にします |
startup | コンプライアンス、主権、i18n の judge をスキップします — スピードを優先します |
compliance | コンプライアンス、データ主権、認証のみを対象にします — 規制への対応に重点を置きます |
performance | パフォーマンス、スケーラビリティ、キャッシュ、費用対効果のみを対象にします |
react | React/Next.js アプリ向けに調整済み — アクセシビリティ、XSS 保護を有効にします |
express | Express.js API 向けに調整済み — ミドルウェアのセキュリティ、認証、CORS、レート制限を対象にします |
fastapi | Python FastAPI 向けに調整済み — 入力検証、非同期パターン、API セキュリティを対象にします |
django | Django アプリ向けに調整済み — テンプレートのセキュリティ、ORM の誤用、CSRF を対象にします |
spring-boot | Java Spring Boot 向けに調整済み — インジェクション、設定、アクチュエーターのセキュリティを対象にします |
rails | Ruby on Rails 向けに調整済み — マスアサインメント、CSRF、SQL インジェクションを対象にします |
nextjs | Next.js 向けに調整済み — サーバー/クライアントのセキュリティ、API ルート、SSR/ISR を対象にします |
terraform | Terraform/OpenTofu IaC 向けに調整済み — インフラストラクチャのセキュリティ、コンプライアンスを対象にします |
kubernetes | K8s マニフェスト向けに調整済み — セキュリティコンテキスト、RBAC、リソース制限を対象にします |
onboarding | 初めての導入に適したスマートなデフォルト設定 — ノイズの多いルールを抑制します |
fintech | 金融サービス向け — PCI DSS、暗号化、認証、監査を対象にします |
healthtech | 医療分野向け — HIPAA 準拠、データ主権、暗号化、監査証跡を対象にします |
saas | マルチテナント SaaS 向け — テナント分離、レート制限、スケーラビリティを対象にします |
government | 政府/公共部門向け — コンプライアンス、主権、認証を対象にします |
open-source | オープンソースプロジェクト向け — ドキュメント、後方互換性、セキュリティ、依存関係の健全性を対象にします |
ai-review | AI 生成コードのレビュー向け — ハルシネーションの検出、セキュリティ、認証、正確性を対象にします |
judges eval --preset security-only src/api.ts
judges eval --preset strict --format sarif src/app.ts > results.sarif
CI 出力形式
JUnit XML
Jenkins、Azure DevOps、GitHub Actions、GitLab のテスト結果ビューアー向けに JUnit XML を生成します。
judges eval --format junit src/api.ts > results.xml
各 Judge は <testsuite> に対応し、各検出結果は <testcase> になります。重大度が critical または high の場合は、<failure> が含まれます。
CodeClimate / GitLab Code Quality
GitLab Code Quality などのツール向けに CodeClimate JSON を生成します。
judges eval --format codeclimate src/api.ts > codequality.json
スコアバッジ
README 向けに SVG またはテキストのバッジを生成します。
import { generateBadgeSvg, generateBadgeText } from "@kevinrabun/judges/badge";
const svg = generateBadgeSvg(85); // shields.io-style SVG
const text = generateBadgeText(85); // "✓ judges 85/100"
const svg2 = generateBadgeSvg(75, "quality"); // custom label
Judge Panel
| 判定者 | ドメイン | ルールの接頭辞 | 評価内容 |
|---|---|---|---|
| データセキュリティ | データセキュリティとプライバシー | DATA- | 暗号化、PII の取り扱い、シークレット管理、アクセス制御 |
| サイバーセキュリティ | サイバーセキュリティと脅威防御 | CYBER- | インジェクション攻撃、XSS、CSRF、認証の欠陥、OWASP Top 10 |
| 費用対効果 | コスト最適化とリソース効率 | COST- | アルゴリズムの効率、N+1 クエリ、メモリの浪費、キャッシュ戦略 |
| スケーラビリティ | スケーラビリティとパフォーマンス | SCALE- | ステートレス性、水平スケーリング、並行処理、ボトルネック |
| クラウド対応性 | クラウドネイティブアーキテクチャと DevOps | CLOUD- | 12-Factor 準拠、コンテナ化、グレースフルシャットダウン、IaC |
| ソフトウェア開発プラクティス | ソフトウェアエンジニアリングのベストプラクティスとセキュア SDLC | SWDEV- | SOLID 原則、型安全性、エラー処理、入力検証 |
| アクセシビリティ | アクセシビリティ(a11y) | A11Y- | WCAG 準拠、スクリーンリーダー対応、キーボード操作、ARIA |
| API 設計 | API 設計とコントラクト | API- | REST の規約、バージョニング、ページネーション、エラーレスポンス |
| 信頼性 | 信頼性とレジリエンス | REL- | エラー処理、タイムアウト、リトライ、サーキットブレーカー |
| 可観測性 | モニタリングと診断 | OBS- | 構造化ログ、ヘルスチェック、メトリクス、トレーシング |
| パフォーマンス | ランタイムパフォーマンス | PERF- | N+1 クエリ、同期 I/O、キャッシュ、メモリリーク |
| コンプライアンス | 規制とライセンスのコンプライアンス | COMP- | GDPR/CCPA、PII の保護、同意、データ保持、監査証跡 |
| データ主権 | データ、技術、運用の主権 | SOV- | データレジデンシー、国境を越える転送、ベンダーによる鍵管理、AI モデルの移植性、ID フェデレーション、サーキットブレーカー、監査証跡、データエクスポート |
| テスト | テスト品質とカバレッジ | TEST- | テストカバレッジ、アサーション、テストの分離、命名 |
| ドキュメント | ドキュメントと開発者エクスペリエンス | DOC- | JSDoc/docstring、マジックナンバー、TODO、コードコメント |
| 国際化 | i18n とローカライゼーション | I18N- | ハードコードされた文字列、ロケール処理、通貨のフォーマット |
| 依存関係の健全性 | サプライチェーンと依存関係 | DEPS- | バージョンの固定、非推奨パッケージ、サプライチェーン |
| 並行処理 | 並行処理とスレッドセーフ性 | CONC- | 競合状態、上限のない並列処理、await の欠落 |
| 倫理とバイアス | AI/ML の公平性と倫理 | ETHICS- | 属性に基づくロジック、ダークパターン、インクルーシブな表現 |
| 保守性 | コードの保守性と技術的負債 | MAINT- | any 型、マジックナンバー、深いネスト、デッドコード、ファイルの長さ |
| エラー処理 | エラー処理とフォールトトレランス | ERR- | 空の catch ブロック、エラーハンドラーの欠落、エラーの握りつぶし |
| 認証 | 認証と認可 | AUTH- | ハードコードされた認証情報、認証ミドルウェアの欠落、クエリパラメーター内のトークン |
| データベース | データベース設計とクエリ効率 | DB- | SQL インジェクション、N+1 クエリ、コネクションプーリング、トランザクション |
| キャッシュ | キャッシュ戦略とデータの鮮度 | CACHE- | 上限のないキャッシュ、TTL の欠落、HTTP キャッシュヘッダーの欠如 |
| 構成管理 | 構成とシークレット管理 | CFG- | ハードコードされたシークレット、環境変数の欠落、構成の検証 |
| 後方互換性 | 後方互換性とバージョニング | COMPAT- | API のバージョニング、破壊的変更、レスポンスの一貫性 |
| 移植性 | プラットフォームの移植性とベンダー非依存性 | PORTA- | OS 固有のパス、ベンダーロックイン、ハードコードされたホスト |
| UX | ユーザーエクスペリエンスとインターフェース品質 | UX- | 読み込み状態、エラーメッセージ、ページネーション、破壊的な操作 |
| ログのプライバシー | ログのプライバシーとデータの秘匿化 | LOGPRIV- | ログ内の PII、トークンの記録、構造化ログ、秘匿化 |
| レート制限 | レート制限とスロットリング | RATE- | レート制限の欠如、上限のないクエリ、バックオフ戦略 |
| CI/CD | CI/CD パイプラインとデプロイの安全性 | CICD- | テストインフラストラクチャ、lint の構成、Docker タグ、ビルドスクリプト |
| コード構造 | 構造分析 | STRUCT- | 循環的複雑度、ネストの深さ、関数の長さ、デッドコード、型安全性 |
| エージェントへの指示 | エージェント向け指示 Markdown の品質と安全性 | AGENT- | 指示の階層、競合の検出、安全でない上書き、スコープ、検証、ポリシーのガイダンス |
| AI コードの安全性 | AI 生成コードの品質とセキュリティ | AICS- | プロンプトインジェクション、安全でない LLM 出力の処理、デバッグ用のデフォルト設定、検証の欠落、AI レスポンスの安全でないデシリアライズ |
| フレームワークの安全性 | フレームワーク固有のセキュリティとベストプラクティス | FW- | React のフックの順序、Express のミドルウェアチェーン、Next.js の SSR/SSG の落とし穴、Angular/Vue のライフサイクルパターン、Django/Flask/FastAPI の安全性、Spring Boot のセキュリティ、ASP.NET Core の認証と CORS、Go Gin/Echo/Fiber のパターン |
| IaC セキュリティ | Infrastructure as Code | IAC- | Terraform、Bicep、ARM テンプレートの設定ミス、ハードコードされたシークレット、暗号化の欠落、過度に許可的なネットワーク/IAM ルール |
| セキュリティ | 全般的なセキュリティ態勢 | SEC- | 包括的なセキュリティ評価 — 安全でないデータフロー、脆弱な暗号方式、安全でないデシリアライズ |
| ハルシネーション検出 | AI がハルシネーションした API とインポートの検証 | HALLU- | AI コード生成ツールが生成した、ハルシネーションによる API、捏造されたインポート、存在しないモジュールを検出します |
| 意図との整合性 | コードとコメントの整合性およびスタブの検出 | INTENT- | 明示された意図と実装の不一致、プレースホルダーのスタブ、TODO のみの関数を検出します |
| API コントラクト準拠 | API 設計と REST のベストプラクティス | API- | API エンドポイントの入力検証、REST 準拠、リクエストとレスポンスのコントラクトの一貫性 |
| 複数ターンの一貫性 | コードの整合性と一貫性 | COH- | 自己矛盾するパターン、重複した定義、デッドコード、一貫性のない命名 |
| モデルフィンガープリント検出 | AI コードの来歴とモデルの特定 | MFPR- | 特定の AI コード生成ツールに特徴的なスタイル上のフィンガープリントを検出します |
| 過剰なエンジニアリング | シンプルさと実用性 | OVER- | 不要な抽象化、過剰なラッパー、早すぎる一般化、複雑すぎるパターン |
| ロジックレビュー | 意味上の正しさとロジックの整合性 | LOGIC- | 逆転した条件、デッドコード、名前と処理内容の不一致、オフバイワンエラー、不完全な制御フロー |
| 誤検知レビュー | 誤検知の検出と検出結果の正確性 | FPR- | パターンベースの検出結果をレビューして誤検知を特定するメタ判定者:文字列リテラルのコンテキスト、コメント/docstring との一致、テスト用の足場、IaC テンプレートのゲート条件 |
仕組み
審査システムは、次の3層で動作します。
-
パターンベースの分析 — すべてのツール(
evaluate_code、evaluate_code_single_judge、evaluate_project、evaluate_diff)は、正規表現によるパターンマッチングを使ったヒューリスティック分析で、一般的なアンチパターンを検出します。この層は即座に実行され、決定論的で、外部 API を一切呼び出さず、完全にオフラインで動作します。 -
AST ベースの構造分析 — コード構造審査員(
STRUCT-*ルール)は、実際の抽象構文木(AST)解析を使い、循環的複雑度、ネストの深さ、関数の長さ、パラメーター数、デッドコード、型安全性を、正規表現では実現できない精度で測定します。サポート対象のすべての言語 — TypeScript、JavaScript、Python、Rust、Go、Java、C#、C++ — は、tree-sitter WASM 文法(WebAssembly にコンパイルされた実際の構文木をプロセス内で解析し、ネイティブ依存関係は不要)を介して解析されます。WASM 文法を利用できない場合のフォールバックとして、スコープ追跡型の構造パーサーも用意されています。外部 AST サーバーは不要です。 -
LLM による詳細分析(プロンプト) — サーバーは MCP プロンプト(例:
judge-data-security、judge-cybersecurity)を公開し、各審査員の専門家としてのペルソナをシステムプロンプトとして提供します。LLM ベースのクライアント(Copilot、Claude、Cursor など)で使用すると、ホスト側の LLM が、静的パターンでは検出できない、より深く文脈を考慮した確率的分析を実行します。ここで、各審査員のsystemPromptが活用されます。Judges 自体は LLM を呼び出しませんが、AI アシスタントが45人の専門レビュー担当者として機能するための専門的な基準を提供します。
設計段階から組み合わせ可能
Judges Panel は二層型のレビューシステムです。パターンおよび AST 分析を行う、即座に実行できる決定論的なツール(オフラインで動作し、API キーは不要)に加え、AI クライアントに接続すると LLM による詳細分析を可能にする、45種類の専門家ペルソナを持つ MCP プロンプトを提供します。CVE スキャナーやリンターを目指しているわけではありません。そうした機能は、AI エージェントが Judges と併せてオーケストレーションできる、専用の MCP サーバーに任せるべきものです。
組み込みの AST 分析
別の AST MCP サーバーを推奨していた以前のバージョンとは異なり、Judges Panel には実際の AST ベースの構造分析が標準で含まれています。
- TypeScript、JavaScript、Python、Rust、Go、Java、C#、C++ — 統合されたtree-sitter WASM エンジンで解析し、完全な構文木分析(関数、複雑度、ネスト、デッドコード、型安全性)を行います。WASM 文法を利用できない場合は、スコープ追跡型の構造パーサーにフォールバックします。
コード構造審査員(STRUCT-*)は、これらのパーサーを使って次の項目を正確に測定します。
| ルール | 指標 | しきい値 |
|---|---|---|
STRUCT-001 | 循環的複雑度 | 関数あたり > 10(高) |
STRUCT-002 | ネストの深さ | > 4レベル(中) |
STRUCT-003 | 関数の長さ | > 50行(中) |
STRUCT-004 | パラメーター数 | > 5個(中) |
STRUCT-005 | デッドコード | 到達不能な文(低) |
STRUCT-006 | 弱い型 | any、dynamic、Object、interface{}、unsafe(中) |
STRUCT-007 | ファイルの複雑度 | 循環的複雑度の合計 > 40(高) |
STRUCT-008 | 極端な複雑度 | 関数あたり > 20(重大) |
STRUCT-009 | 極端なパラメーター数 | > 8個(高) |
STRUCT-010 | 極端に長い関数 | > 150行(高) |
推奨 MCP スタック
AI コーディングアシスタントが複数の MCP サーバーに接続すると、それぞれが専門分野を担当します。
┌─────────────────────────────────────────────────────────┐
│ AI Coding Assistant │
│ (Claude, Copilot, Cursor, etc.) │
└──────┬──────────────────┬──────────┬───────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌────────┐ ┌────────┐
│ Judges │ │ CVE / │ │ Linter │
│ Panel │ │ SBOM │ │ Server │
│ ─────────────│ └────────┘ └────────┘
│ 44 Heuristic │ Vuln DB Style &
│ judges │ scanning correctness
│ + AST judge │
└──────────────┘
Patterns +
structural
analysis
| レイヤー | 機能 | MCP サーバーの例 |
|---|---|---|
| 審査パネル | 45 名の審査員による品質ゲート — セキュリティパターン、AST 分析、コスト、スケーラビリティ、アクセシビリティ、コンプライアンス、主権、倫理、依存関係の健全性、エージェントの指示ガバナンス、AI コードの安全性、フレームワークの安全性 | このサーバー |
| CVE / SBOM | ライブデータベースに対する脆弱性スキャン — 既知の CVE、ライセンスリスク、サプライチェーン | OSV、Snyk、Trivy、Grype MCP サーバー |
| リンティング | 言語固有のスタイルおよび正確性のルール | ESLint、Ruff、Clippy MCP サーバー |
| ランタイムプロファイリング | 実行中のコードのメモリ、CPU、レイテンシの測定 | カスタムのプロファイリング MCP サーバー |
実際の利用方法
AI アシスタントに 「このコードは本番環境で使える状態ですか?」 と尋ねると、エージェントは次のことができます。
- 審査パネル → ハードコードされたシークレット、エラーハンドリングの不足、N+1 クエリ、アクセシビリティの不足、コンプライアンス上の問題をスキャンし、さらに 循環的複雑度を分析し、デッドコードを検出し、AST を使って深くネストした関数を特定します
- CVE サーバー →
package.json内のすべての依存関係について、既知の脆弱性がないか確認します - リンターサーバー → チームのスタイルルールを適用し、言語固有の注意点を検出します
各サーバーは構造化された検出結果を返します。AI はすべての結果を統合し、実行可能なレビューを 1 つにまとめます。1 つのサーバーですべてを担う必要はありません。
MCP ツール
evaluate_v2
リードエンジニア/アーキテクトレベルのレビューに近づけ、フィードバックの品質を高めるために設計された V2 コンテキスト対応の審査評価 を実行します。
- ポリシープロファイルの調整(
default、startup、regulated、healthcare、fintech、public-sector) - コンテキストの取り込み(アーキテクチャのメモ、制約、標準、既知のリスク、データ境界モデル)
- ランタイムのエビデンスフック(テスト、カバレッジ、レイテンシ、エラー率、脆弱性の件数)
- 審査員/ドメイン別の専門的なフィードバックの集約
- 信頼度スコアリングと不確実性の明示的な報告
次のモードに対応しています。
- コードモード:
code+language - プロジェクトモード:
files[]
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | 条件付き | 単一ファイルモードのソースコード |
language | string | 条件付き | 単一ファイルモードのプログラミング言語 |
files | array | 条件付き | プロジェクトモード用の { path, content, language }[] |
context | string | いいえ | 高レベルのレビューコンテキスト |
includeAstFindings | boolean | いいえ | AST/コード構造の検出結果を含めます(デフォルト:true) |
minConfidence | number | いいえ | 含める検出結果の最小信頼度(0~1、デフォルト:0) |
policyProfile | enum | いいえ | default、startup、regulated、healthcare、fintech、public-sector |
evaluationContext | object | いいえ | アーキテクチャ/制約に関する構造化コンテキスト |
evidence | object | いいえ | 信頼度調整に用いるランタイム/運用上のエビデンス |
evaluate_app_builder_flow
技術系および非技術系の関係者向けに、3 ステップのアプリビルダーワークフローを実行します。
- 審査パネルによるレビュー(コード/プロジェクト/差分)
- 上位リスクを平易な言葉で説明
- AI で修正可能な P0/P1 の抽出を含む、優先順位付けされた修正タスク
対応モード:
- コードモード:
code+language - プロジェクトモード:
files[] - 差分モード:
code+language+changedLines[]
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | 条件付き | ソース全体の内容(コード/差分モード) |
language | string | 条件付き | プログラミング言語(コード/差分モード) |
files | array | 条件付き | プロジェクトモード用の { path, content, language }[] |
changedLines | number[] | いいえ | 差分モード用の変更行(1 始まり) |
context | string | いいえ | 任意のビジネス/技術コンテキスト |
maxFindings | number | いいえ | 翻訳する上位指摘事項の最大数(デフォルト:10) |
maxTasks | number | いいえ | 生成するタスクの最大数(デフォルト:20) |
includeAstFindings | boolean | いいえ | AST/コード構造に関する指摘事項を含める(デフォルト:true) |
minConfidence | number | いいえ | 含める指摘事項の最低信頼度(0~1、デフォルト:0) |
evaluate_public_repo_report
公開リポジトリの URL をクローンし、対象となるソースファイルすべてに対して審査パネル全体を実行して、統合された Markdown レポートを生成します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
repoUrl | string | はい | 公開リポジトリの URL(https://...) |
branch | string | いいえ | 任意のブランチ名 |
outputPath | string | いいえ | レポートの Markdown を書き込む任意のパス |
maxFiles | number | いいえ | 解析するファイルの最大数(デフォルト:600) |
maxFileBytes | number | いいえ | ファイルサイズの上限(バイト単位、デフォルト:300000) |
maxFindingsInReport | number | いいえ | 出力に含める詳細な指摘事項の最大数(デフォルト:150) |
credentialMode | string | いいえ | 認証情報の検出モード:standard(デフォルト)または strict |
includeAstFindings | boolean | いいえ | AST/コード構造に関する指摘事項を含める(デフォルト:true) |
minConfidence | number | いいえ | 含める指摘事項の最低信頼度(0~1、デフォルト:0) |
enableMustFixGate | boolean | いいえ | 信頼度の高い危険な指摘事項に対する必須修正ゲートの概要を有効にする(デフォルト:false) |
mustFixMinConfidence | number | いいえ | 必須修正ゲートを作動させる信頼度のしきい値(0~1、デフォルト:0.85) |
mustFixDangerousRulePrefixes | string[] | いいえ | ゲート照合に使用する任意の危険ルールの接頭辞(例:AUTH、CYBER、DATA) |
keepClone | boolean | いいえ | 確認用にクローンしたリポジトリをディスク上に保持する |
簡単な例
CLI からレポートを生成します。
npm run report:public-repo -- --repoUrl https://github.com/microsoft/vscode --output reports/vscode-judges-report.md
# stricter credential-signal mode (optional)
npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --credentialMode strict --output reports/openclaw-judges-report-strict.md
# judge findings only (exclude AST/code-structure findings)
npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --includeAstFindings false --output reports/openclaw-judges-report-no-ast.md
# show only findings at 80%+ confidence
npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --minConfidence 0.8 --output reports/openclaw-judges-report-high-confidence.md
# include must-fix gate summary in the generated report
npm run report:public-repo -- --repoUrl https://github.com/openclaw/openclaw --enableMustFixGate true --mustFixMinConfidence 0.9 --mustFixDangerousPrefix AUTH --mustFixDangerousPrefix CYBER --output reports/openclaw-judges-report-mustfix.md
# opinionated quick-start mode (recommended first run)
npm run report:quickstart -- --repoUrl https://github.com/openclaw/openclaw --output reports/openclaw-quickstart.md
MCP クライアントから呼び出します。
{
"tool": "evaluate_public_repo_report",
"arguments": {
"repoUrl": "https://github.com/microsoft/vscode",
"branch": "main",
"maxFiles": 400,
"maxFindingsInReport": 120,
"credentialMode": "strict",
"includeAstFindings": false,
"minConfidence": 0.8,
"enableMustFixGate": true,
"mustFixMinConfidence": 0.9,
"mustFixDangerousRulePrefixes": ["AUTH", "CYBER", "DATA"],
"outputPath": "reports/vscode-judges-report.md"
}
}
一般的な応答の概要には、次の内容が含まれます。
- 全体の判定と平均スコア
- 解析したファイル数と指摘事項の合計数
- 審査員ごとのスコア表
- 最もリスクの高い指摘事項と最もスコアの低いファイル
レポートのサンプル:
# Public Repository Full Judges Report
Generated from https://github.com/microsoft/vscode on 2026-02-21T12:00:00.000Z.
## Executive Summary
- Overall verdict: WARNING
- Average file score: 78/100
- Total findings: 412 (critical 3, high 29, medium 114, low 185, info 81)
get_judges
利用可能なすべての審査員と、それぞれの専門分野および説明を一覧表示します。
evaluate_code
コードを審査パネル全体に送信します。45 人の審査員全員が独立して評価し、統合判定を返します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | はい | 評価するソースコード |
language | string | はい | プログラミング言語(例:typescript、python) |
context | string | いいえ | コードに関する追加コンテキスト |
includeAstFindings | boolean | いいえ | AST/コード構造に関する指摘事項を含める(デフォルト:true) |
minConfidence | number | いいえ | 含める指摘事項の最低信頼度(0~1、デフォルト:0) |
config | object | いいえ | インライン設定(設定を参照) |
evaluate_code_single_judge
特定のジャッジにコードを送信し、対象を絞ってレビューします。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | はい | 評価するソースコード |
language | string | はい | プログラミング言語 |
judgeId | string | はい | 下記のジャッジ IDを参照してください |
context | string | いいえ | 追加のコンテキスト |
minConfidence | number | いいえ | 含める指摘の最低信頼度(0~1、デフォルト:0) |
config | object | いいえ | インライン設定(設定を参照してください) |
evaluate_project
プロジェクトレベルの分析のために、複数のファイルを送信します。45 個すべてのジャッジが各ファイルを評価し、さらにファイル間のアーキテクチャ分析によって、コードの重複、一貫性のないエラー処理、依存関係の循環を検出します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
files | array | はい | { path, content, language } オブジェクトの配列 |
context | string | いいえ | 任意のプロジェクトコンテキスト |
includeAstFindings | boolean | いいえ | AST/コード構造に関する指摘を含めます(デフォルト:true) |
minConfidence | number | いいえ | 含める指摘の最低信頼度(0~1、デフォルト:0) |
config | object | いいえ | インライン設定(設定を参照してください) |
evaluate_diff
コード差分の変更行のみを評価します。ファイル全体に対して45 個すべてのジャッジを実行し、指定した行に該当する指摘だけを絞り込みます。PR レビューや段階的な分析に最適です。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | はい | ファイル全体の内容(変更後) |
language | string | はい | プログラミング言語 |
changedLines | number[] | はい | 変更された行番号(1 始まり) |
context | string | いいえ | 変更に関する任意のコンテキスト |
includeAstFindings | boolean | いいえ | AST/コード構造に関する指摘を含めます(デフォルト:true) |
minConfidence | number | いいえ | 含める指摘の最低信頼度(0~1、デフォルト:0) |
config | object | いいえ | インライン設定(設定を参照してください) |
analyze_dependencies
依存関係マニフェストファイルを分析し、サプライチェーンのリスク、バージョン固定の問題、タイポスクワッティングの兆候、依存関係の適切な管理状況を調べます。package.json、requirements.txt、Cargo.toml、go.mod、pom.xml、.csproj ファイルに対応しています。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
manifest | string | はい | 依存関係マニフェストファイルの内容 |
manifestType | string | はい | ファイルの種類:package.json、requirements.txt など |
context | string | いいえ | 任意のコンテキスト |
evaluate_git_diff
git diff の変更行のみを評価します。ライブの git diff には repoPath、事前計算済みの unified diff には diffText を指定してください。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
repoPath | string | 条件付き | git リポジトリの絶対パス |
base | string | いいえ | 差分の比較対象となる git ref(デフォルト:HEAD~1) |
diffText | string | 条件付き | 事前計算済みの unified diff テキスト |
confidenceFilter | number | いいえ | 指摘に適用する最低信頼度のしきい値(0~1) |
autoTune | boolean | いいえ | フィードバックに基づく自動チューニングを適用します(デフォルト:false) |
maxPromptChars | number | いいえ | LLM プロンプトの最大文字数(デフォルト:100000、0 = 無制限) |
config | object | いいえ | インライン設定 |
re_evaluate_with_context
以前の検出結果をコンテキストとして審査会を再実行し、反復的に改善します。異議の解決、開発者コンテキストの注入、重点領域によるフィルタリングに対応しています。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
code | string | はい | 再評価するソースコード |
language | string | はい | プログラミング言語 |
disputedRuleIds | string[] | いいえ | 開発者が誤検知として異議を唱えているルール ID |
acceptedRuleIds | string[] | いいえ | 開発者が受け入れるルール ID |
developerContext | string | いいえ | 開発者の意図に関する自由形式の説明 |
focusAreas | string[] | いいえ | 重点的に確認する領域(例:["security"]) |
confidenceFilter | number | いいえ | 信頼度の最小しきい値(デフォルト:0.5) |
filePath | string | いいえ | コンテキストを考慮した評価に使用するファイルパス |
deepReview | boolean | いいえ | LLM の詳細レビュー用プロンプトセクションを含めるかどうか |
relatedFiles | array | いいえ | ファイル間のコンテキスト { path, snippet, relationship? }[] |
maxPromptChars | number | いいえ | LLM プロンプトの最大文字数(デフォルト:100000、0 = 無制限) |
追加の MCP ツール
| ツール | 説明 |
|---|---|
evaluate_file | ディスクからファイルを読み込み、すべての審査員に提出します。拡張子から言語を自動検出します。 |
evaluate_code_streaming | ストリーミング評価 — 各審査員の完了時に、実行中の集計結果とともに個別の結果を返します。 |
evaluate_focused | 指定した審査員のみを実行します。初回の全体評価後に、特定の領域を再確認する際に使用します。 |
evaluate_batch | 1 回の呼び出しで複数のコードファイルを評価します。ファイルごとの判定と集計統計を返します。 |
evaluate_then_fix | コードを評価し、自動修正に対応するすべての検出結果について修正パッチを自動生成します。 |
evaluate_with_progress | 長時間の評価で進捗コールバックを使用して評価します。 |
evaluate_policy_aware | 名前付きプロファイル(startup、regulated、healthcare、fintech、public-sector)を使用したポリシー対応評価を行います。 |
fix_code | コードを評価し、利用可能なすべての自動修正パッチを適用します。修正後のコードと適用済み/未適用の概要を返します。 |
explain_finding | OWASP/CWE の参照情報、リスクの背景、修正方法のガイダンスとともに、検出結果を平易な言葉で説明します。 |
triage_finding | 検出結果のトリアージステータス(accepted-risk、deferred、wont-fix、false-positive)を、実施者情報とともに設定します。 |
record_feedback | 信頼度スコアの調整に使用するユーザーフィードバック(true-positive、false-positive、wont-fix)を記録します。 |
get_finding_stats | 検出結果のライフサイクル統計:未解決、修正済み、再発、トリアージ済みの件数と傾向を返します。 |
get_suppression_analytics | 抑制パターンを分析します:ルールごとの誤検知率、抑制率、自動抑制の候補。 |
list_triaged_findings | トリアージ済みの検出結果を一覧表示します。トリアージステータスによる絞り込みも可能です。 |
benchmark_gate | 品質しきい値に対してベンチマークを実行します。F1、適合率、再現率の指標とともに合否を返します。 |
run_benchmark | ベンチマーク一式を実行し、審査員別、カテゴリ別、難易度別の内訳を返します。 |
scaffold_judge | 新しい審査員を追加するためのひな形ファイルを生成します:定義、評価器のスケルトン、登録処理。 |
scaffold_plugin | カスタムルール、審査員、ライフサイクルフックを備えたプラグインのスターターテンプレートを生成します。 |
session_status | 現在の評価セッションの状態:評価回数、フレームワーク、判定履歴、安定性。 |
list_files | プロジェクトの調査用に、ワークスペース内のファイルとディレクトリを一覧表示します。 |
read_file | ワークスペースからファイルの内容を読み込みます。 |
Judge IDs
data-security · cybersecurity · security · cost-effectiveness · scalability · cloud-readiness · software-practices · accessibility · api-design · api-contract · reliability · observability · performance · compliance · data-sovereignty · testing · documentation · internationalization · dependency-health · concurrency · ethics-bias · maintainability · error-handling · authentication · database · caching · configuration-management · backwards-compatibility · portability · ux · logging-privacy · rate-limiting · ci-cd · code-structure · agent-instructions · ai-code-safety · framework-safety · iac-security · hallucination-detection · intent-alignment · multi-turn-coherence · model-fingerprint · over-engineering · logic-review · false-positive-review
MCP プロンプト
各判定器には、LLM を活用した詳細な分析用のプロンプトが用意されています。
| プロンプト | 説明 |
|---|---|
judge-data-security | データセキュリティの詳細なレビュー |
judge-cybersecurity | サイバーセキュリティの詳細なレビュー |
judge-cost-effectiveness | コスト最適化の詳細なレビュー |
judge-scalability | スケーラビリティの詳細なレビュー |
judge-cloud-readiness | クラウド対応状況の詳細なレビュー |
judge-software-practices | ソフトウェアプラクティスの詳細なレビュー |
judge-accessibility | アクセシビリティ/WCAG の詳細なレビュー |
judge-api-design | API 設計の詳細なレビュー |
judge-reliability | 信頼性とレジリエンスの詳細なレビュー |
judge-observability | 可観測性とモニタリングの詳細なレビュー |
judge-performance | パフォーマンス最適化の詳細なレビュー |
judge-compliance | 規制コンプライアンスの詳細なレビュー |
judge-data-sovereignty | データ、技術、運用の主権に関する詳細なレビュー |
judge-testing | テスト品質の詳細なレビュー |
judge-documentation | ドキュメント品質の詳細なレビュー |
judge-internationalization | i18n の詳細なレビュー |
judge-dependency-health | 依存関係の健全性に関する詳細なレビュー |
judge-concurrency | 並行処理と非同期処理の安全性に関する詳細なレビュー |
judge-ethics-bias | 倫理とバイアスに関する詳細なレビュー |
judge-maintainability | 保守性と技術的負債に関する詳細なレビュー |
judge-error-handling | エラー処理の詳細なレビュー |
judge-authentication | 認証と認可の詳細なレビュー |
judge-database | データベース設計とクエリの詳細なレビュー |
judge-caching | キャッシュ戦略の詳細なレビュー |
judge-configuration-management | 設定とシークレットの詳細なレビュー |
judge-backwards-compatibility | 下位互換性の詳細なレビュー |
judge-portability | プラットフォーム間の移植性に関する詳細なレビュー |
judge-ux | ユーザーエクスペリエンスの詳細なレビュー |
judge-logging-privacy | ログのプライバシーに関する詳細なレビュー |
judge-rate-limiting | レート制限の詳細なレビュー |
judge-ci-cd | CI/CD パイプラインの詳細なレビュー |
judge-code-structure | AST に基づくコード構造の詳細な分析 |
judge-agent-instructions | エージェント向け指示の Markdown の品質と安全性に関する詳細なレビュー |
judge-ai-code-safety | AI 生成コードのリスクに関する詳細なレビュー:プロンプトインジェクション、安全でない LLM 出力の処理、デバッグ用のデフォルト設定、検証の欠如 |
judge-framework-safety | フレームワーク固有の安全性に関する詳細なレビュー:React hooks、Express middleware、Next.js SSR/SSG、Angular/Vue、Django、Spring Boot、ASP.NET Core、Flask、FastAPI、Go フレームワーク |
judge-iac-security | Infrastructure as Code のセキュリティに関する詳細なレビュー:Terraform、Bicep、ARM template の設定ミス |
judge-security | セキュリティ体制全般に関する詳細なレビュー:安全でないデータフロー、脆弱な暗号化、安全でないデシリアライズ |
judge-hallucination-detection | AI が幻覚した API、捏造されたインポート、存在しないモジュールに関する詳細なレビュー |
judge-intent-alignment | コードとコメントの整合性、スタブの検出、プレースホルダー関数に関する詳細なレビュー |
judge-api-contract | API コントラクトへの準拠、入力検証、REST のベストプラクティスに関する詳細なレビュー |
judge-multi-turn-coherence | コードの一貫性に関する詳細なレビュー:自己矛盾、重複した定義、デッドコード |
judge-model-fingerprint | AI コードの出所とモデル帰属フィンガープリントに関する詳細なレビュー |
judge-over-engineering | 不要な抽象化、過剰なラッパー、早すぎる一般化に関する詳細なレビュー |
judge-logic-review | AI 生成コードのロジックの正しさ、意味の不一致、デッドコードに関する詳細なレビュー |
judge-false-positive-review | パターンベースの検出結果について、誤検出の検出と精度を確認するメタ判定レビュー |
設定
評価動作をカスタマイズするには、プロジェクトのルートに .judgesrc.json(または .judgesrc)ファイルを作成します。コピーしてすぐに使えるテンプレートについては .judgesrc.example.json を、IDE の完全な自動補完については JSON Schema を参照してください。
{
"$schema": "https://github.com/KevinRabun/judges/blob/main/judgesrc.schema.json",
"preset": "strict",
"minSeverity": "medium",
"disabledRules": ["COST-*", "I18N-001"],
"disabledJudges": ["accessibility", "ethics-bias"],
"ruleOverrides": {
"SEC-003": { "severity": "critical" },
"DOC-*": { "disabled": true }
},
"languages": ["typescript", "python"],
"format": "text",
"failOnFindings": false,
"baseline": "",
"regulatoryScope": ["GDPR", "PCI-DSS", "SOC2"],
"consensusThreshold": 0.7
}
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
$schema | string | — | IDE の検証に使用する JSON Schema の URL |
preset | string | — | 名前付きプリセット(22 個の選択肢すべてについては 名前付きプリセット を参照) |
minSeverity | string | "info" | 報告する最小重大度:critical · high · medium · low · info |
disabledRules | string[] | [] | 抑制するルール ID またはプレフィックスのワイルドカード(例:"COST-*", "SEC-003") |
disabledJudges | string[] | [] | 完全にスキップする Judge ID(例:"cost-effectiveness") |
ruleOverrides | object | {} | ルール ID またはワイルドカードをキーとするルールごとの上書き — { disabled?: boolean, severity?: string } |
languages | string[] | [] | 分析対象を特定の言語に限定します(空の場合はすべて) |
format | string | "text" | デフォルトの出力形式:text · json · sarif · markdown · html · pdf · junit · codeclimate · github-actions |
failOnFindings | boolean | false | 判定が fail の場合に終了コード 1 を返します — CI のゲートに便利です |
baseline | string | "" | ベースライン JSON ファイルへのパス — 一致する検出結果は抑制されます |
plugins | string[] | [] | カスタム Judge をエクスポートするプラグインモジュールの指定子(npm パッケージまたは相対パス) |
judgeWeights | object | {} | 集計スコアリングにおける Judge ごとの重み付き重要度(例:{ "cybersecurity": 2.0 }) |
failOnScoreBelow | number | — | 実行を合格とするための最低スコア(0–100)。failOnFindings を補完します |
regulatoryScope | string[] | — | 対象とする規制フレームワーク(例:["GDPR", "PCI-DSS"])。対象外のフレームワークのみを根拠として挙げる検出結果は抑制されます。対応する値は judges list --frameworks を実行して確認してください。 |
consensusThreshold | number | — | 合意による抑制(0–1)。この割合の Judge が検出結果ゼロを報告した場合、少数派の検出結果は抑制されます。CI では 0.7 を推奨します。 |
escalationThreshold | number | — | これを下回る信頼度の検出結果に、人間によるレビューが必要であることを示すフラグを付けます |
overrides | array | [] | パスを対象とした設定の上書き(例:[{ "files": "**/*.test.ts", "disabledJudges": ["documentation"] }]) |
customRules | array | [] | ビジネスロジックの検証に使用する、ユーザー定義の正規表現ベースのルール |
すべての評価ツール(CLI と MCP)は、--config <path> またはインラインの config パラメーターを使って、同じ設定フィールドを指定できます。
高度な機能
インライン抑制
コメントディレクティブを使って、ソースコード内で特定の検出結果を直接抑制できます。
const x = eval(input); // judges-ignore SEC-001
// judges-ignore-next-line CYBER-002
const y = dangerousOperation();
// judges-file-ignore DOC-* ← suppress globally for this file
対応するコメント形式://、#、/* */。カンマ区切りのルール ID とワイルドカード(*、SEC-*)に対応しています。
自動修正パッチ
一部の検出結果には、patch フィールドに機械的に適用できるパッチが含まれます。
| パターン | 自動修正 |
|---|---|
new Buffer(x) | → Buffer.from(x) |
http:// URL(localhost 以外) | → https:// |
Math.random() | → crypto.randomUUID() |
パッチには、自動適用に必要な oldText、newText、startLine、endLine が含まれます。
評価器をまたいだ重複排除
複数の Judge が同じ問題を指摘した場合(例:Data Security と Cybersecurity の両方が15行目の SQL インジェクションを検出した場合)、検出結果は自動的に重複排除されます。最も重大度の高い検出結果が採用され、説明には相互参照(例:「次の評価器でも特定されました:CYBER-003」)が注記されます。
Human Focus Guide
すべてのトリビューナル評価には、人間のレビュアー向けに検出結果を3つのカテゴリに分類するhumanFocusGuideが含まれます。
| カテゴリ | 説明 | 使用するタイミング |
|---|---|---|
| ✅ Trust | 信頼度が高く(≥80%)、AST/汚染の確認による裏付けがある検出結果 | そのまま対応します。自動分析による強力な証拠があります |
| 🔍 Verify | 信頼度が低い、または不在に基づく検出結果 | 判断に基づいて確認します。問題はプロジェクト内の別の場所にある可能性があります |
| 🔦 Blind Spots | 自動分析では評価できない領域 | 手動レビューの時間をここに集中させます |
ブラインドスポットは、複雑な分岐ロジック、外部サービスの呼び出し、金額計算、PII の取り扱い、ステートマシン、複雑な正規表現など、コードの特性から検出されます。このガイドは、CLI のテキスト/Markdown 出力、JSON/SARIF 出力、GitHub Action のステップサマリーに表示されます。
規制の適用範囲
プロジェクトに適用する規制フレームワークを.judgesrcで設定します。
{ "regulatoryScope": ["GDPR", "PCI-DSS", "SOC2"] }
適用範囲外のフレームワークのみを参照する検出結果は抑制されます。規制への参照がない検出結果(一般的なコード品質に関するもの)は常に保持されます。judges list --frameworksを実行すると、サポートされている17のフレームワーク(GDPR、CCPA、HIPAA、PCI-DSS、SOC2、SOX、COPPA、FedRAMP、NIST、ISO27001、ePrivacy、DORA、NIS2、EU-AI-Act など)をすべて確認できます。
自己学習型の修正
LLM ベンチマークシステムは、誤検知率が高いジャッジに対して、精度を高める修正を自動生成します。修正はデータに基づく訂正で、プロンプトに組み込まれ、ベンチマークを重ねるごとに精度が向上します。
自己学習のループ:
- ベンチマークを実行 → アナライザーが適合率70%未満のジャッジを特定
- 対象を絞った修正を生成(例:「Judge ERR:フレームワークのエラーミドルウェアを備えたクリーンな Express コードを検出対象にしない」)
- 次のベンチマーク実行時に修正を読み込み → 適合率が向上
judges codify-amendmentsを実行して、修正を配布パッケージに恒久的に組み込み
汚染フロー分析
エンジンはプロシージャ間の汚染追跡を行い、ユーザーが制御できるソース(例:req.body、process.env)から変換処理を経て、セキュリティ上重要なシンク(例:eval()、exec()、SQL クエリ)に至るまでデータを追跡します。汚染フローは、真陽性の検出結果の信頼度を高めるほか、サニタイズが検出された場合に誤検知を抑制するために使用されます。
良好なシグナルの検出
適切なプラクティスを示すコードには、スコアボーナスが加算されます(上限は+15)。
| シグナル | ボーナス |
|---|---|
| パラメーター化クエリ | +3 |
| セキュリティヘッダー(helmet) | +3 |
| 認証ミドルウェア(passport など) | +3 |
| 適切なエラー処理 | +2 |
| 入力検証ライブラリ(zod、joi など) | +2 |
| レート制限 | +2 |
| 構造化ロギング(pino、winston) | +2 |
| CORS 設定 | +1 |
| Strict Mode/strictNullChecks | +1 |
| テストパターン(describe/it/expect) | +1 |
フレームワーク対応ルール
ジャッジは、Express、Django、Flask、FastAPI、Spring、ASP.NET、Rails など、フレームワーク固有の検出に対応しています。フレームワークのミドルウェア(例:helmet()、express-rate-limit、passport.authenticate())は緩和策として認識され、誤検知が減少します。
ファイル間のインポート解決
プロジェクトレベルの分析では、ファイルをまたいでインポートを解決します。あるファイルが、プロジェクト内の別のファイルにあるセキュリティミドルウェアモジュールをインポートしている場合、セキュリティ制御の欠如に関する検出結果は、信頼度を下げる形で自動的に調整されます。
スコアリング
各ジャッジはコードを0~100で採点します。
| 重大度 | スコア減点 |
|---|---|
| クリティカル | −30ポイント |
| 高 | −18ポイント |
| 中 | −10ポイント |
| 低 | −5ポイント |
| 情報 | −2ポイント |
判定ロジック:
- FAIL — クリティカルな検出結果がある、またはスコアが60未満
- WARNING — 高または中の検出結果がある、またはスコアが80未満
- PASS — クリティカル、高、中の検出結果がなく、スコアが80以上
総合トリビューナルスコアは、45のジャッジすべての平均です。いずれかのジャッジが失敗すると、総合判定も失敗します。
プロジェクト構成
judges/
├── src/
│ ├── index.ts # MCP server entry point — tools, prompts, transport
│ ├── api.ts # Programmatic API entry point
│ ├── cli.ts # CLI argument parser and command router
│ ├── types.ts # TypeScript interfaces (Finding, JudgeEvaluation, etc.)
│ ├── config.ts # .judgesrc configuration parser and validation
│ ├── errors.ts # Custom error types (ConfigError, EvaluationError, ParseError)
│ ├── language-patterns.ts # Multi-language regex pattern constants and helpers
│ ├── judge-registry.ts # Unified JudgeRegistry — single source of truth for all judges
│ ├── plugins.ts # Plugin API façade (delegates to JudgeRegistry)
│ ├── scoring.ts # Confidence scoring and calibration
│ ├── dedup.ts # Finding deduplication engine
│ ├── fingerprint.ts # Finding fingerprint generation
│ ├── comparison.ts # Tool comparison benchmark data
│ ├── cache.ts # Evaluation result caching
│ ├── calibration.ts # Confidence calibration from feedback data
│ ├── fix-history.ts # Auto-fix application history tracking
│ ├── ast/ # AST analysis engine (built-in, no external deps)
│ │ ├── index.ts # analyzeStructure() — routes to correct parser
│ │ ├── types.ts # FunctionInfo, CodeStructure interfaces
│ │ ├── tree-sitter-ast.ts # Tree-sitter WASM parser (all 8 languages)
│ │ ├── structural-parser.ts # Fallback scope-tracking parser
│ │ ├── cross-file-taint.ts # Cross-file taint propagation analysis
│ │ └── taint-tracker.ts # Single-file taint flow tracking
│ ├── evaluators/ # Analysis engine for each judge
│ │ ├── index.ts # evaluateWithJudge(), evaluateWithTribunal(), evaluateProject(), etc.
│ │ ├── shared.ts # Scoring, verdict logic, markdown formatters
│ │ └── *.ts # One analyzer per judge (45 files)
│ ├── formatters/ # Output formatters
│ │ ├── sarif.ts # SARIF 2.1.0 output
│ │ ├── html.ts # Self-contained HTML report (dark/light theme, filters)
│ │ ├── junit.ts # JUnit XML output (Jenkins, Azure DevOps, GitHub Actions)
│ │ ├── codeclimate.ts # CodeClimate/GitLab Code Quality JSON
│ │ ├── diagnostics.ts # Diagnostics formatter
│ │ └── badge.ts # SVG and text badge generator
│ ├── commands/ # CLI subcommands
│ │ ├── init.ts # Interactive project setup wizard
│ │ ├── fix.ts # Auto-fix patch preview and application
│ │ ├── watch.ts # Watch mode — re-evaluate on save
│ │ ├── report.ts # Project-level local report
│ │ ├── hook.ts # Pre-commit hook install/uninstall
│ │ ├── ci-templates.ts # GitLab, Azure, Bitbucket CI templates
│ │ ├── diff.ts # Evaluate unified diff (git diff)
│ │ ├── deps.ts # Dependency supply-chain analysis
│ │ ├── baseline.ts # Create baseline for finding suppression
│ │ ├── completions.ts # Shell completions (bash/zsh/fish/PowerShell)
│ │ ├── docs.ts # Per-judge rule documentation generator
│ │ ├── feedback.ts # False-positive tracking & finding feedback
│ │ ├── benchmark.ts # Detection accuracy benchmark suite
│ │ ├── rule.ts # Custom rule authoring wizard
│ │ ├── language-packs.ts # Language-specific rule pack presets
│ │ └── config-share.ts # Shareable team/org configuration
│ ├── presets.ts # Named evaluation presets (strict, lenient, security-only, …)
│ ├── patches/
│ │ └── index.ts # 201 deterministic auto-fix patch rules
│ ├── tools/ # MCP tool registrations
│ │ ├── register.ts # Tool registration orchestrator
│ │ ├── register-evaluation.ts # Evaluation tools (evaluate_code, etc.)
│ │ ├── register-workflow.ts # Workflow tools (app builder, reports, etc.)
│ │ ├── prompts.ts # MCP prompt registrations (per-judge prompts)
│ │ └── schemas.ts # Zod schemas for tool parameters
│ ├── reports/
│ │ └── public-repo-report.ts # Public repo clone + full tribunal report generation
│ └── judges/ # Judge definitions (id, name, domain, system prompt)
│ ├── index.ts # Side-effect imports + re-exports (JUDGES, getJudge, getJudgeSummaries)
│ └── *.ts # One self-registering definition per judge (45 files)
├── scripts/
│ ├── generate-public-repo-report.ts # Run: npm run report:public-repo -- --repoUrl <url>
│ ├── daily-popular-repo-autofix.ts # Run: npm run automation:daily-popular
│ └── debug-fp.ts # Debug false-positive findings
├── examples/
│ ├── sample-vulnerable-api.ts # Intentionally flawed code (triggers all judges)
│ ├── demo.ts # Run: npm run demo
│ └── quickstart.ts # Quick-start evaluation example
├── tests/
│ ├── judges.test.ts # Core judge evaluation tests
│ ├── negative.test.ts # Negative / FP-avoidance tests
│ ├── subsystems.test.ts # Subsystem integration tests
│ ├── extension-logic.test.ts # VS Code extension logic tests
│ └── tool-routing.test.ts # MCP tool routing tests
├── grammars/ # Tree-sitter WASM grammar files
│ ├── tree-sitter-typescript.wasm
│ ├── tree-sitter-cpp.wasm
│ ├── tree-sitter-python.wasm
│ ├── tree-sitter-go.wasm
│ ├── tree-sitter-rust.wasm
│ ├── tree-sitter-java.wasm
│ └── tree-sitter-c_sharp.wasm
├── judgesrc.schema.json # JSON Schema for .judgesrc config files
├── server.json # MCP Registry manifest
├── package.json
├── tsconfig.json
└── README.md
スクリプト
| コマンド | 説明 |
|---|---|
npm run build | TypeScript を dist/ にコンパイルします |
npm run dev | ウォッチモード — 保存時に再コンパイルします |
npm test | テストスイート全体を実行します |
npm run demo | サンプルの法廷デモを実行します |
npm run report:public-repo -- --repoUrl <url> | 公開リポジトリの URL を対象に、法廷レポート全体を生成します |
npm run report:quickstart -- --repoUrl <url> | 迅速な導入向けに、推奨される高シグナルのレポート設定で実行します |
npm run automation:daily-popular | 毎日、入れ替わる人気リポジトリを最大 10 件分析し、リポジトリごとに最大 5 件の修正 PR を作成します |
npm start | MCP サーバーを起動します |
npm run clean | dist/ を削除します |
judges init | 対話型のプロジェクトセットアップウィザード |
judges fix <file> | 自動修正パッチをプレビューします(書き込むには --apply を追加します) |
judges watch <dir> | ウォッチモード — ファイルの保存時に再評価します |
judges report <dir> | ローカルディレクトリの法廷レポート全体を生成します |
judges hook install | Git のコミット前フックをインストールします |
judges diff | unified diff の変更行を評価します |
judges deps | サプライチェーンのリスクについて依存関係を分析します |
judges baseline create | 検出結果を抑制するためのベースラインを作成します |
judges ci-templates | CI パイプラインのテンプレートを生成します |
judges docs | 各判定者のルールドキュメントを生成します |
judges completions <shell> | シェル補完スクリプト |
judges feedback submit | 検出結果を真陽性、偽陽性、または修正しないとしてマークします |
judges feedback stats | 偽陽性率の統計を表示します |
judges benchmark run | 検出精度のベンチマークスイートを実行します |
judges rule create | 対話型のカスタムルール作成ウィザード |
judges rule list | カスタム評価ルールを一覧表示します |
judges pack list | 利用可能な言語パックを一覧表示します |
judges config export | 設定を共有可能なパッケージとしてエクスポートします |
judges config import <src> | 共有された設定をインポートします |
judges compare | 他のコードレビュー ツールと判定者を比較します |
judges list | ドメインと説明を含む 45 人の判定者をすべて一覧表示します |
judges list --frameworks | サポート対象の規制フレームワークと .judgesrc の使用方法を一覧表示します |
judges codify-amendments | 自己学習型の修正内容を判定者のソースファイルに組み込みます |
人気リポジトリの日次自動修正
このリポジトリには、.github/workflows/daily-popular-repo-autofix.yml にスケジュール済みワークフローが含まれています。このワークフローは次の処理を行います。
- 人気リポジトリ 100 件以上のデフォルトプール(または手動で指定した対象)から、1 日あたり最大 10 件のリポジトリを選択します。
- サポートされているソース言語を対象に、Judges の評価をすべて実行します。
- 該当する検出件数を減らす、保守的な 1 行の修正のみを適用します。
- Judges と対象リポジトリの両方を明記した PR を、リポジトリごとに最大 5 件作成します。
- 公開リポジトリではない場合、または既存の GitHub 認証情報で PR を作成できない場合は、そのリポジトリをスキップします(追加の認証フローはありません)。
- 実行時の上限として、1 日あたり 10 リポジトリ、リポジトリあたり 5 件の PR を厳守します。
各実行では、リポジトリごとのテレメトリを含む daily-autofix-summary.json(または SUMMARY_PATH)が出力されます。内容は次のとおりです。
runAggregate— 実行全体の簡潔な合計と、リポジトリ横断で優先度の高いルールrunAggregate.totalCandidatesDiscoveredおよびrunAggregate.totalCandidatesAfterLocationDedupe— 修正を試みる前に重複がどれだけ除去されたかを示します。runAggregate.totalCandidatesAfterPriorityThreshold— 最低優先度スコアの適用後に残った候補runAggregate.dedupeReductionPercent— 実行時の効率をすばやく把握するための、場所の重複排除による削減率runAggregate.priorityThresholdReductionPercent— 重複排除後の最低優先度フィルタリングによる削減率priorityRulePrefixesUsed— 優先順位付けに使用された危険なルールのプレフィックスminPriorityScoreUsed— 候補の対象化に適用された最小のcandidatePriorityScorecandidatesDiscovered、candidatesAfterLocationDedupe、candidatesAfterPriorityThreshold— 各フィルターステージ後のリポジトリごとの候補数topPrioritizedRuleCounts— ランク付けされた候補内で最も多いルール IDtopPrioritizedCandidates— 優先順位の高い候補のサンプル(ルール、重大度、信頼度、ファイル、行、優先度スコア)
任意の実行時制御:
AUTOFIX_MIN_PRIORITY_SCORE— 重複排除後に必要となる候補の最小優先度スコア(デフォルト:0、無効)。
必須シークレット:
JUDGES_AUTOFIX_GH_TOKEN— 対象リポジトリのフォーク、プッシュ、PR 作成の権限を持つ GitHub トークン。
手動実行:
gh workflow run "Judges Daily Full-Run Autofix PRs" -f targetRepoUrl=https://github.com/owner/repo
プログラム API
Judges は MCP 経由だけでなく、ライブラリとしても利用できます。@kevinrabun/judges/api からインポートしてください。
import {
evaluateCode,
evaluateProject,
evaluateCodeSingleJudge,
getJudge,
JUDGES,
findingsToSarif,
} from "@kevinrabun/judges/api";
// Full tribunal evaluation
const verdict = evaluateCode("const x = eval(input);", "typescript");
console.log(verdict.overallScore, verdict.overallVerdict);
// Single judge
const result = evaluateCodeSingleJudge("cybersecurity", code, "typescript");
// SARIF output for CI integration
const sarif = findingsToSarif(verdict.evaluations.flatMap(e => e.findings));
パッケージのエクスポート
| エントリーポイント | 説明 |
|---|---|
@kevinrabun/judges/api | プログラム API(デフォルト) |
@kevinrabun/judges/server | MCP サーバーのエントリーポイント |
@kevinrabun/judges/sarif | SARIF 2.1.0 フォーマッター |
@kevinrabun/judges/junit | JUnit XML フォーマッター |
@kevinrabun/judges/codeclimate | CodeClimate/GitLab Code Quality JSON |
@kevinrabun/judges/badge | SVG およびテキストバッジの生成ツール |
@kevinrabun/judges/diagnostics | 診断情報フォーマッター |
@kevinrabun/judges/plugins | プラグインシステム API(プラグインガイドを参照) |
@kevinrabun/judges/fingerprint | 検出結果のフィンガープリントユーティリティ |
@kevinrabun/judges/comparison | ツール比較ベンチマーク |
SARIF 出力
検出結果を SARIF 2.1.0 に変換して、GitHub Code Scanning、Azure DevOps、その他の CI/CD ツールで利用できます。
import { findingsToSarif, evaluationToSarif, verdictToSarif } from "@kevinrabun/judges/sarif";
const sarif = verdictToSarif(verdict, "src/app.ts");
fs.writeFileSync("results.sarif", JSON.stringify(sarif, null, 2));
カスタムエラー型
スローされるすべてのエラーは JudgesError を継承し、機械可読な code プロパティを持ちます。
| エラークラス | コード | 発生条件 |
|---|---|---|
ConfigError | JUDGES_CONFIG_INVALID | .judgesrc の形式が不正、またはインライン設定が無効 |
EvaluationError | JUDGES_EVALUATION_FAILED | 不明なジャッジ、アナライザーのクラッシュ |
ParseError | JUDGES_PARSE_FAILED | ソースコードまたは入力データを解析できない |
import { ConfigError, EvaluationError } from "@kevinrabun/judges/api";
try {
evaluateCode(code, "typescript");
} catch (e) {
if (e instanceof ConfigError) console.error("Config issue:", e.code);
}
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。