18 specialized judges that evaluate AI-generated code for security, cost, and quality.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
An MCP (Model Context Protocol) server that provides a panel of 45 specialized judges to evaluate AI-generated code β acting as an independent quality gate regardless of which project is being reviewed. Combines deterministic pattern matching & AST analysis (instant, offline, zero LLM calls) with LLM-powered deep-review prompts that let your AI assistant perform expert-persona analysis across all 45 domains.
Highlights:
src/patches/index.ts) plus LLM-powered deep review.π§ͺ Many commands in
printHelpare experimental/roadmap. By default, we show GA commands only. SetJUDGES_SHOW_EXPERIMENTAL=1to reveal stubs; these may not be wired yet.
π° Packages
- CLI:
@kevinrabun/judges-cliβ binaryjudges(usenpx @kevinrabun/judges-cli eval --file app.ts).- MCP/API:
@kevinrabun/judgesβ programmatic API + MCP server (npm install @kevinrabun/judges).- VS Code extension: see
vscode-extension/.- GitHub Action:
uses: KevinRabun/judges@main(see CI quickstart).
CLI vs API: If you want to embed Judges in your app (MCP/API), install
@kevinrabun/judges. For the command-line, use@kevinrabun/judges-cli(binaryjudges).
The MCP server runs on stdio and is started by your MCP client (VS Code, Claude Desktop, etc.).
Configure it in your MCP settings (e.g. mcp.json):
Or run the server directly:
Config file:
.judgesrc.json(supports${ENV_VAR}substitution viaexpandEnvPlaceholders). See Configuration.
AI code generators (Copilot, Cursor, Claude, ChatGPT, etc.) write code fast β but they routinely produce insecure defaults, missing auth, hardcoded secrets, and poor error handling. Human reviewers catch some of this, but nobody reviews 45 dimensions consistently.
| ESLint / Biome | SonarQube | Semgrep / CodeQL | Judges | |
|---|---|---|---|---|
| Scope | Style + some bugs | Bugs + code smells | Security patterns | 45 domains: security, cost, compliance, a11y, API design, cloud, UX, β¦ |
| AI-generated code focus | No | No | Partial | Purpose-built for AI output failure modes |
| Setup | Config per project | Server + scanner | Cloud or local | One command: npx @kevinrabun/judges-cli eval file.ts |
| Auto-fix patches | Some | No | No | 200+ deterministic patches β instant, offline |
| Non-technical output | No | Dashboard | No | Plain-language findings with What/Why/Next |
| MCP native | No | No | No | Yes β works inside Copilot, Claude, Cursor |
| SARIF output | No | Yes | Yes | Yes β upload to GitHub Code Scanning |
| Cost | Free | $$$$ | Free/paid | Free / MIT |
Judges doesn't replace linters β it covers the dimensions linters don't: authentication strategy, data sovereignty, cost patterns, accessibility, framework-specific anti-patterns, and architectural issues across multiple files.
Prereqs: Node.js >=18 (>=20 recommended),
npxavailable. ThejudgesCLI binary ships with @kevinrabun/judges-cli (preferred) and also works vianpx @kevinrabun/judges.Packages:
- CLI:
npm install -g @kevinrabun/judges-cli(ornpx @kevinrabun/judges-cli ...)- MCP/API:
npm install @kevinrabun/judges
Use @kevinrabun/judges for the MCP server and programmatic API. Use @kevinrabun/judges-cli when you want the judges terminal command.
π Tip: The CLI help now defaults to GA commands only. To see experimental/roadmap commands, run:
Run a zero-config PR reviewer as a GitHub App:
Required env vars:
JUDGES_APP_ID β GitHub App IDJUDGES_PRIVATE_KEY or JUDGES_PRIVATE_KEY_PATH β PEM private keyJUDGES_WEBHOOK_SECRET β signature verification secretOptional:
JUDGES_MIN_SEVERITY (default: medium)JUDGES_MAX_COMMENTS (default: 25)JUDGES_TEST_DRY_RUN=1 to avoid live network calls during testsFor local testing, you can expose http://localhost:4567/webhook via ngrok http 4567 and configure the GitHub App webhook URL accordingly.
Add Judges to your CI pipeline with zero configuration:
Outputs available for downstream steps: verdict, score, findings, critical, high, sarif-file.
Run the included demo to see all 45 judges evaluate a purposely flawed API server:
This evaluates examples/sample-vulnerable-api.ts β a file intentionally packed with security holes, performance anti-patterns, and code quality issues β and prints a full verdict with per-judge scores and findings.
The demo now also includes an App Builder Workflow (3-step) section. In a single run, you get both tribunal output and workflow output:
Ship now / Ship with caution / Do not ship)P0/P1 itemsSample workflow output (truncated):
Sample tribunal output (truncated):
Runs automated tests covering all judges, AST parsers, markdown formatters, and edge cases.
Install the Judges Panel extension from the Marketplace. It provides:
@judges chat participant β type @judges in Copilot Chat, or just ask for a "judges panel review" and Copilot routes automaticallyIf you prefer explicit workspace config (or want teammates without the extension to benefit), create .vscode/mcp.json:
Add to claude_desktop_config.json:
Use the same npx command for any MCP-compatible client:
Yes β users can include Judges as part of GitHub-based review workflows, with one important caveat:
copilot-pull-request-reviewer on GitHub does not currently let you directly attach arbitrary local MCP servers the same way VS Code does.Create .github/workflows/judges-pr-review.yml:
This gives every PR a reproducible Judges output your team (and Copilot) can reference.
Add .github/instructions/judges.instructions.md with guidance such as:
This helps keep Copilot feedback aligned with Judges findings.
All commands support --help for usage details.
judges evalEvaluate a file with all 45 judges or a single judge.
| Flag | Description |
|---|---|
--file <path> / positional | File to evaluate |
--judge <id> / -j <id> | Single judge mode |
--language <lang> / -l <lang> | Language hint (auto-detected from extension) |
--format <fmt> / -f <fmt> | Output format: text, json, sarif, markdown, html, pdf, junit, codeclimate, github-actions |
--output <path> / -o <path> | Write output to file |
--fail-on-findings | Exit with code 1 if verdict is FAIL |
--baseline <path> / -b <path> | JSON baseline file β suppress known findings |
--summary | Print a single summary line (ideal for scripts) |
--config <path> | Load a .judgesrc / .judgesrc.json config file |
--preset <name> | Use a named preset (see Named Presets for all 22 options) |
--min-score <n> | Exit with code 1 if overall score is below this threshold |
--verbose | Print timing and debug information |
--quiet | Suppress non-essential output |
--no-color | Disable ANSI colors |
judges initInteractive wizard that generates project configuration:
.judgesrc.json β rule customization, disabled judges, severity thresholds.github/workflows/judges.yml β GitHub Actions CI workflow.gitlab-ci.judges.yml β GitLab CI pipeline (optional)azure-pipelines.judges.yml β Azure Pipelines (optional)judges fixPreview or apply auto-fix patches from deterministic findings.
| Flag | Description |
|---|---|
| positional | File to fix |
--apply | Write patches to disk (default: dry run) |
--judge <id> | Limit to a single judge's findings |
judges watchContinuously re-evaluate files on save.
| Flag | Description |
|---|---|
| positional | File or directory to watch (default: .) |
--judge <id> | Single judge mode |
--fail-on-findings | Exit non-zero if any evaluation fails |
judges reportRun a full project-level tribunal on a local directory.
| Flag | Description |
|---|---|
| positional | Directory path (default: .) |
--format <fmt> | Output format: text, json, html, markdown |
--output <path> | Write report to file |
--max-files <n> | Maximum files to analyze (default: 600) |
--max-file-bytes <n> | Skip files larger than this (default: 300000) |
judges hookManage a Git pre-commit hook that runs Judges on staged files.
Detects Husky (.husky/pre-commit) and falls back to .git/hooks/pre-commit. Uses marker-based injection so it won't clobber existing hooks.
judges diffEvaluate only the changed lines from a unified diff (e.g., git diff output).
| Flag | Description |
|---|---|
--file <path> | Read diff from file instead of stdin |
--format <fmt> | Output format: text, json, sarif, junit, codeclimate |
--output <path> | Write output to file |
judges depsAnalyze project dependencies for supply-chain risks.
| Flag | Description |
|---|---|
--path <dir> | Project root to scan (default: .) |
--format <fmt> | Output format: text, json |
judges baselineCreate a baseline file to suppress known findings in future evaluations.
judges ci-templatesGenerate CI/CD configuration templates for popular providers.
judges docsGenerate per-judge rule documentation in Markdown.
| Flag | Description |
|---|---|
--judge <id> | Generate docs for a single judge |
--output <dir> | Write individual .md files per judge |
judges completionsGenerate shell completion scripts.
Use --preset to apply pre-configured evaluation settings:
| Preset | Description |
|---|---|
strict | All severities, all judges β maximum thoroughness |
lenient | Only high and critical findings β fast and focused |
security-only | Security-focused β disables non-security judges (cost, scalability, docs, a11y, i18n, UX, etc.) |
startup | Skip compliance, sovereignty, i18n judges β move fast |
compliance | Only compliance, data-sovereignty, authentication β regulatory focus |
performance | Only performance, scalability, caching, cost-effectiveness |
react | Tuned for React/Next.js apps β enables accessibility, XSS protection |
express | Tuned for Express.js APIs β middleware security, auth, CORS, rate limiting |
fastapi | Tuned for Python FastAPI β input validation, async patterns, API security |
django | Tuned for Django apps β template security, ORM misuse, CSRF |
spring-boot | Tuned for Java Spring Boot β injection, configuration, actuator security |
rails | Tuned for Ruby on Rails β mass assignment, CSRF, SQL injection |
nextjs | Tuned for Next.js β server/client security, API routes, SSR/ISR |
terraform | Tuned for Terraform/OpenTofu IaC β infrastructure security, compliance |
kubernetes | Tuned for K8s manifests β security contexts, RBAC, resource limits |
onboarding | Smart defaults for first-time adoption β suppresses noisy rules |
fintech | Financial services β PCI DSS, cryptography, authentication, audit |
healthtech | Healthcare β HIPAA compliance, data sovereignty, encryption, audit trails |
saas | Multi-tenant SaaS β tenant isolation, rate limiting, scalability |
government | Government/public sector β compliance, sovereignty, authentication |
open-source | Open-source projects β documentation, backwards compatibility, security, dependency health |
ai-review | AI-generated code review β hallucination detection, security, authentication, correctness |
Generate JUnit XML for Jenkins, Azure DevOps, GitHub Actions, or GitLab test result viewers:
Each judge maps to a <testsuite>, each finding becomes a <testcase> with <failure> for critical/high severity.
Generate CodeClimate JSON for GitLab Code Quality or similar tools:
Generate SVG or text badges for your README:
| Judge | Domain | Rule Prefix | What It Evaluates |
|---|---|---|---|
| Data Security | Data Security & Privacy | DATA- | Encryption, PII handling, secrets management, access controls |
| Cybersecurity | Cybersecurity & Threat Defense | CYBER- | Injection attacks, XSS, CSRF, auth flaws, OWASP Top 10 |
| Cost Effectiveness | Cost Optimization & Resource Efficiency | COST- | Algorithm efficiency, N+1 queries, memory waste, caching strategy |
| Scalability | Scalability & Performance | SCALE- | Statelessness, horizontal scaling, concurrency, bottlenecks |
| Cloud Readiness | Cloud-Native Architecture & DevOps | CLOUD- | 12-Factor compliance, containerization, graceful shutdown, IaC |
| Software Practices | Software Engineering Best Practices & Secure SDLC | SWDEV- | SOLID principles, type safety, error handling, input validation |
| Accessibility | Accessibility (a11y) | A11Y- | WCAG compliance, screen reader support, keyboard navigation, ARIA |
| API Design | API Design & Contracts | API- | REST conventions, versioning, pagination, error responses |
| Reliability | Reliability & Resilience | REL- | Error handling, timeouts, retries, circuit breakers |
| Observability | Monitoring & Diagnostics | OBS- | Structured logging, health checks, metrics, tracing |
| Performance | Runtime Performance | PERF- | N+1 queries, sync I/O, caching, memory leaks |
| Compliance | Regulatory & License Compliance | COMP- | GDPR/CCPA, PII protection, consent, data retention, audit trails |
| Data Sovereignty | Data, Technological & Operational Sovereignty | SOV- | Data residency, cross-border transfers, vendor key management, AI model portability, identity federation, circuit breakers, audit trails, data export |
| Testing | Test Quality & Coverage | TEST- | Test coverage, assertions, test isolation, naming |
| Documentation | Documentation & Developer Experience | DOC- | JSDoc/docstrings, magic numbers, TODOs, code comments |
| Internationalization | i18n & Localization | I18N- | Hardcoded strings, locale handling, currency formatting |
| Dependency Health | Supply Chain & Dependencies | DEPS- | Version pinning, deprecated packages, supply chain |
| Concurrency | Concurrency & Thread Safety | CONC- | Race conditions, unbounded parallelism, missing await |
| Ethics & Bias | AI/ML Fairness & Ethics | ETHICS- | Demographic logic, dark patterns, inclusive language |
| Maintainability | Code Maintainability & Technical Debt | MAINT- | Any types, magic numbers, deep nesting, dead code, file length |
| Error Handling | Error Handling & Fault Tolerance | ERR- | Empty catch blocks, missing error handlers, swallowed errors |
| Authentication | Authentication & Authorization | AUTH- | Hardcoded creds, missing auth middleware, token in query params |
| Database | Database Design & Query Efficiency | DB- | SQL injection, N+1 queries, connection pooling, transactions |
| Caching | Caching Strategy & Data Freshness | CACHE- | Unbounded caches, missing TTL, no HTTP cache headers |
| Configuration Management | Configuration & Secrets Management | CFG- | Hardcoded secrets, missing env vars, config validation |
| Backwards Compatibility | Backwards Compatibility & Versioning | COMPAT- | API versioning, breaking changes, response consistency |
| Portability | Platform Portability & Vendor Independence | PORTA- | OS-specific paths, vendor lock-in, hardcoded hosts |
| UX | User Experience & Interface Quality | UX- | Loading states, error messages, pagination, destructive actions |
| Logging Privacy | Logging Privacy & Data Redaction | LOGPRIV- | PII in logs, token logging, structured logging, redaction |
| Rate Limiting | Rate Limiting & Throttling | RATE- | Missing rate limits, unbounded queries, backoff strategy |
| CI/CD | CI/CD Pipeline & Deployment Safety | CICD- | Test infrastructure, lint config, Docker tags, build scripts |
| Code Structure | Structural Analysis | STRUCT- | Cyclomatic complexity, nesting depth, function length, dead code, type safety |
| Agent Instructions | Agent Instruction Markdown Quality & Safety | AGENT- | Instruction hierarchy, conflict detection, unsafe overrides, scope, validation, policy guidance |
| AI Code Safety | AI-Generated Code Quality & Security | AICS- | Prompt injection, insecure LLM output handling, debug defaults, missing validation, unsafe deserialization of AI responses |
| Framework Safety | Framework-Specific Security & Best Practices | FW- | React hooks ordering, Express middleware chains, Next.js SSR/SSG pitfalls, Angular/Vue lifecycle patterns, Django/Flask/FastAPI safety, Spring Boot security, ASP.NET Core auth & CORS, Go Gin/Echo/Fiber patterns |
| IaC Security | Infrastructure as Code | IAC- | Terraform, Bicep, ARM template misconfigurations, hardcoded secrets, missing encryption, overly permissive network/IAM rules |
| Security | General Security Posture | SEC- | Holistic security assessment β insecure data flows, weak cryptography, unsafe deserialization |
| Hallucination Detection | AI-Hallucinated API & Import Validation | HALLU- | Detects hallucinated APIs, fabricated imports, and non-existent modules from AI code generators |
| Intent Alignment | CodeβComment Alignment & Stub Detection | INTENT- | Detects mismatches between stated intent and implementation, placeholder stubs, TODO-only functions |
| API Contract Conformance | API Design & REST Best Practices | API- | API endpoint input validation, REST conformance, request/response contract consistency |
| Multi-Turn Coherence | Code Coherence & Consistency | COH- | Self-contradicting patterns, duplicate definitions, dead code, inconsistent naming |
| Model Fingerprint Detection | AI Code Provenance & Model Attribution | MFPR- | Detects stylistic fingerprints characteristic of specific AI code generators |
| Over-Engineering | Simplicity & Pragmatism | OVER- | Unnecessary abstractions, wrapper-mania, premature generalization, over-complex patterns |
| Logic Review | Semantic Correctness & Logic Integrity | LOGIC- | Inverted conditions, dead code, name-body mismatch, off-by-one, incomplete control flow |
| False-Positive Review | False Positive Detection & Finding Accuracy | FPR- | Meta-judge reviewing pattern-based findings for false positives: string literal context, comment/docstring matches, test scaffolding, IaC template gating |
The tribunal operates in three layers:
Pattern-Based Analysis β All tools (evaluate_code, evaluate_code_single_judge, evaluate_project, evaluate_diff) perform heuristic analysis using regex pattern matching to catch common anti-patterns. This layer is instant, deterministic, and runs entirely offline with zero external API calls.
AST-Based Structural Analysis β The Code Structure judge (STRUCT-* rules) uses real Abstract Syntax Tree parsing to measure cyclomatic complexity, nesting depth, function length, parameter count, dead code, and type safety with precision that regex cannot achieve. All supported languages β TypeScript, JavaScript, Python, Rust, Go, Java, C#, and C++ β are parsed via tree-sitter WASM grammars (real syntax trees compiled to WebAssembly, in-process, zero native dependencies). A scope-tracking structural parser is kept as a fallback when WASM grammars are unavailable. No external AST server required.
LLM-Powered Deep Analysis (Prompts) β The server exposes MCP prompts (e.g., judge-data-security, judge-cybersecurity) that provide each judge's expert persona as a system prompt. When used by an LLM-based client (Copilot, Claude, Cursor, etc.), the host LLM performs deeper, context-aware probabilistic analysis beyond what static patterns can detect. This is where the systemPrompt on each judge comes alive β Judges itself makes no LLM calls, but it provides the expert criteria so your AI assistant can act as 45 specialized reviewers.
Judges Panel is a dual-layer review system: instant deterministic tools (offline, no API keys) for pattern and AST analysis, plus 45 expert-persona MCP prompts that unlock LLM-powered deep analysis when connected to an AI client. It does not try to be a CVE scanner or a linter. Those capabilities belong in dedicated MCP servers that an AI agent can orchestrate alongside Judges.
Unlike earlier versions that recommended a separate AST MCP server, Judges Panel now includes real AST-based structural analysis out of the box:
The Code Structure judge (STRUCT-*) uses these parsers to accurately measure:
| Rule | Metric | Threshold |
|---|---|---|
STRUCT-001 | Cyclomatic complexity | > 10 per function (high) |
STRUCT-002 | Nesting depth | > 4 levels (medium) |
STRUCT-003 | Function length | > 50 lines (medium) |
STRUCT-004 | Parameter count | > 5 parameters (medium) |
STRUCT-005 | Dead code | Unreachable statements (low) |
STRUCT-006 | Weak types | any, dynamic, Object, interface{}, unsafe (medium) |
STRUCT-007 | File complexity | > 40 total cyclomatic complexity (high) |
STRUCT-008 | Extreme complexity | > 20 per function (critical) |
STRUCT-009 | Extreme parameters | > 8 parameters (high) |
STRUCT-010 | Extreme function length | > 150 lines (high) |
When your AI coding assistant connects to multiple MCP servers, each one contributes its specialty:
| Layer | What It Does | Example Servers |
|---|---|---|
| Judges Panel | 45-judge quality gate β security patterns, AST analysis, cost, scalability, a11y, compliance, sovereignty, ethics, dependency health, agent instruction governance, AI code safety, framework safety | This server |
| CVE / SBOM | Vulnerability scanning against live databases β known CVEs, license risks, supply chain | OSV, Snyk, Trivy, Grype MCP servers |
| Linting | Language-specific style and correctness rules | ESLint, Ruff, Clippy MCP servers |
| Runtime Profiling | Memory, CPU, latency measurement on running code | Custom profiling MCP servers |
When you ask your AI assistant "Is this code production-ready?", the agent can:
package.json against known vulnerabilitiesEach server returns structured findings. The AI synthesizes everything into a single, actionable review β no single server needs to do it all.
evaluate_v2Run a V2 context-aware tribunal evaluation designed to raise feedback quality toward lead engineer/architect-level review:
default, startup, regulated, healthcare, fintech, public-sector)Supports:
code + languagefiles[]| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | conditional | Source code for single-file mode |
language | string | conditional | Programming language for single-file mode |
files | array | conditional | { path, content, language }[] for project mode |
context | string | no | High-level review context |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
policyProfile | enum | no | default, startup, regulated, healthcare, fintech, public-sector |
evaluationContext | object | no | Structured architecture/constraint context |
evidence | object | no | Runtime/operational evidence for confidence calibration |
evaluate_app_builder_flowRun a 3-step app-builder workflow for technical and non-technical stakeholders:
Supports:
code + languagefiles[]code + language + changedLines[]| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | conditional | Full source content (code/diff mode) |
language | string | conditional | Programming language (code/diff mode) |
files | array | conditional | { path, content, language }[] for project mode |
changedLines | number[] | no | 1-based changed lines for diff mode |
context | string | no | Optional business/technical context |
maxFindings | number | no | Max translated top findings (default: 10) |
maxTasks | number | no | Max generated tasks (default: 20) |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
evaluate_public_repo_reportClone a public repository URL, run the full judges panel across eligible source files, and generate a consolidated markdown report.
| Parameter | Type | Required | Description |
|---|---|---|---|
repoUrl | string | yes | Public repository URL (https://...) |
branch | string | no | Optional branch name |
outputPath | string | no | Optional path to write report markdown |
maxFiles | number | no | Max files analyzed (default: 600) |
maxFileBytes | number | no | Max file size in bytes (default: 300000) |
maxFindingsInReport | number | no | Max detailed findings in output (default: 150) |
credentialMode | string | no | Credential detection mode: standard (default) or strict |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
enableMustFixGate | boolean | no | Enable must-fix gate summary for high-confidence dangerous findings (default: false) |
mustFixMinConfidence | number | no | Confidence threshold for must-fix gate triggers (0-1, default: 0.85) |
mustFixDangerousRulePrefixes | string[] | no | Optional dangerous rule prefixes for gate matching (e.g., AUTH, CYBER, DATA) |
keepClone | boolean | no | Keep cloned repo on disk for inspection |
Quick examples
Generate a report from CLI:
Call from MCP client:
Typical response summary includes:
Sample report snippet:
get_judgesList all available judges with their domains and descriptions.
evaluate_codeSubmit code to the full judges panel. all 45 judges evaluate independently and return a combined verdict.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | yes | The source code to evaluate |
language | string | yes | Programming language (e.g., typescript, python) |
context | string | no | Additional context about the code |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
config | object | no | Inline configuration (see Configuration) |
evaluate_code_single_judgeSubmit code to a specific judge for targeted review.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | yes | The source code to evaluate |
language | string | yes | Programming language |
judgeId | string | yes | See judge IDs below |
context | string | no | Additional context |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
config | object | no | Inline configuration (see Configuration) |
evaluate_projectSubmit multiple files for project-level analysis. all 45 judges evaluate each file, plus cross-file architectural analysis detects code duplication, inconsistent error handling, and dependency cycles.
| Parameter | Type | Required | Description |
|---|---|---|---|
files | array | yes | Array of { path, content, language } objects |
context | string | no | Optional project context |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
config | object | no | Inline configuration (see Configuration) |
evaluate_diffEvaluate only the changed lines in a code diff. Runs all 45 judges on the full file but filters findings to lines you specify. Ideal for PR reviews and incremental analysis.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | yes | The full file content (post-change) |
language | string | yes | Programming language |
changedLines | number[] | yes | 1-based line numbers that were changed |
context | string | no | Optional context about the change |
includeAstFindings | boolean | no | Include AST/code-structure findings (default: true) |
minConfidence | number | no | Minimum finding confidence to include (0-1, default: 0) |
config | object | no | Inline configuration (see Configuration) |
analyze_dependenciesAnalyze a dependency manifest file for supply-chain risks, version pinning issues, typosquatting indicators, and dependency hygiene. Supports package.json, requirements.txt, Cargo.toml, go.mod, pom.xml, and .csproj files.
| Parameter | Type | Required | Description |
|---|---|---|---|
manifest | string | yes | Contents of the dependency manifest file |
manifestType | string | yes | File type: package.json, requirements.txt, etc. |
context | string | no | Optional context |
evaluate_git_diffEvaluate only changed lines from a git diff. Provide either repoPath for a live git diff or diffText for a pre-computed unified diff.
| Parameter | Type | Required | Description |
|---|---|---|---|
repoPath | string | conditional | Absolute path to the git repository |
base | string | no | Git ref to diff against (default: HEAD~1) |
diffText | string | conditional | Pre-computed unified diff text |
confidenceFilter | number | no | Minimum confidence threshold for findings (0β1) |
autoTune | boolean | no | Apply feedback-driven auto-tuning (default: false) |
maxPromptChars | number | no | Max character budget for LLM prompts (default: 100000, 0 = unlimited) |
config | object | no | Inline configuration |
re_evaluate_with_contextRe-run the tribunal with prior findings as context for iterative refinement. Supports dispute resolution, developer context injection, and focus-area filtering.
| Parameter | Type | Required | Description |
|---|---|---|---|
code | string | yes | Source code to re-evaluate |
language | string | yes | Programming language |
disputedRuleIds | string[] | no | Rule IDs the developer disputes as false positives |
acceptedRuleIds | string[] | no | Rule IDs the developer accepts |
developerContext | string | no | Free-form explanation of developer intent |
focusAreas | string[] | no | Specific areas to focus on (e.g., ["security"]) |
confidenceFilter | number | no | Minimum confidence threshold (default: 0.5) |
filePath | string | no | File path for context-aware evaluation |
deepReview | boolean | no | Include LLM deep-review prompt section |
relatedFiles | array | no | Cross-file context { path, snippet, relationship? }[] |
maxPromptChars | number | no | Max character budget for LLM prompts (default: 100000, 0 = unlimited) |
| Tool | Description |
|---|---|
evaluate_file | Read a file from disk and submit it to the full panel. Auto-detects language from extension. |
evaluate_code_streaming | Streaming evaluation β returns per-judge results as each judge completes with running aggregates. |
evaluate_focused | Run only specified judges. Use after an initial full evaluation to re-check specific areas. |
evaluate_batch | Evaluate multiple code files in a single call. Returns per-file verdicts plus aggregate statistics. |
evaluate_then_fix | Evaluate code and automatically generate fix patches for all findings with auto-fix support. |
evaluate_with_progress | Evaluate with progress callbacks for long-running evaluations. |
evaluate_policy_aware | Policy-aware evaluation with named profiles (startup, regulated, healthcare, fintech, public-sector). |
fix_code | Evaluate code and apply all available auto-fix patches. Returns fixed code with applied/remaining summary. |
explain_finding | Explain a finding in plain language with OWASP/CWE references, risk context, and remediation guidance. |
triage_finding | Set triage status of a finding (accepted-risk, deferred, wont-fix, false-positive) with attribution. |
record_feedback | Record user feedback (true-positive, false-positive, wont-fix) to calibrate confidence scores. |
get_finding_stats | Finding lifecycle statistics: open, fixed, recurring, and triaged counts plus trends. |
get_suppression_analytics | Analyze suppression patterns: FP rates by rule, suppression rates, auto-suppress candidates. |
list_triaged_findings | List triaged findings, optionally filtered by triage status. |
benchmark_gate | Run benchmarks against quality thresholds. Returns pass/fail with F1, precision, recall metrics. |
run_benchmark | Run the full benchmark suite with per-judge, per-category, per-difficulty breakdowns. |
scaffold_judge | Generate boilerplate files to add a new judge: definition, evaluator skeleton, and registration. |
scaffold_plugin | Generate a starter plugin template with custom rules, judges, and lifecycle hooks. |
session_status | Current evaluation session state: evaluation count, frameworks, verdict history, stability. |
list_files | List files and directories in the workspace for project exploration. |
read_file | Read file contents from the workspace. |
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
Each judge has a corresponding prompt for LLM-powered deep analysis:
| Prompt | Description |
|---|---|
judge-data-security | Deep data security review |
judge-cybersecurity | Deep cybersecurity review |
judge-cost-effectiveness | Deep cost optimization review |
judge-scalability | Deep scalability review |
judge-cloud-readiness | Deep cloud readiness review |
judge-software-practices | Deep software practices review |
judge-accessibility | Deep accessibility/WCAG review |
judge-api-design | Deep API design review |
judge-reliability | Deep reliability & resilience review |
judge-observability | Deep observability & monitoring review |
judge-performance | Deep performance optimization review |
judge-compliance | Deep regulatory compliance review |
judge-data-sovereignty | Deep data, technological & operational sovereignty review |
judge-testing | Deep testing quality review |
judge-documentation | Deep documentation quality review |
judge-internationalization | Deep i18n review |
judge-dependency-health | Deep dependency health review |
judge-concurrency | Deep concurrency & async safety review |
judge-ethics-bias | Deep ethics & bias review |
judge-maintainability | Deep maintainability & tech debt review |
judge-error-handling | Deep error handling review |
judge-authentication | Deep authentication & authorization review |
judge-database | Deep database design & query review |
judge-caching | Deep caching strategy review |
judge-configuration-management | Deep configuration & secrets review |
judge-backwards-compatibility | Deep backwards compatibility review |
judge-portability | Deep platform portability review |
judge-ux | Deep user experience review |
judge-logging-privacy | Deep logging privacy review |
judge-rate-limiting | Deep rate limiting review |
judge-ci-cd | Deep CI/CD pipeline review |
judge-code-structure | Deep AST-based structural analysis review |
judge-agent-instructions | Deep review of agent instruction markdown quality and safety |
judge-ai-code-safety | Deep review of AI-generated code risks: prompt injection, insecure LLM output handling, debug defaults, missing validation |
judge-framework-safety | Deep review of framework-specific safety: React hooks, Express middleware, Next.js SSR/SSG, Angular/Vue, Django, Spring Boot, ASP.NET Core, Flask, FastAPI, Go frameworks |
judge-iac-security | Deep review of infrastructure-as-code security: Terraform, Bicep, ARM template misconfigurations |
judge-security | Deep holistic security posture review: insecure data flows, weak cryptography, unsafe deserialization |
judge-hallucination-detection | Deep review of AI-hallucinated APIs, fabricated imports, non-existent modules |
judge-intent-alignment | Deep review of codeβcomment alignment, stub detection, placeholder functions |
judge-api-contract | Deep review of API contract conformance, input validation, REST best practices |
judge-multi-turn-coherence | Deep review of code coherence: self-contradictions, duplicate definitions, dead code |
judge-model-fingerprint | Deep review of AI code provenance and model attribution fingerprints |
judge-over-engineering | Deep review of unnecessary abstractions, wrapper-mania, premature generalization |
judge-logic-review | Deep review of logic correctness, semantic mismatches, and dead code in AI-generated code |
judge-false-positive-review | Meta-judge review of pattern-based findings for false positive detection and accuracy |
Create a .judgesrc.json (or .judgesrc) file in your project root to customize evaluation behavior. See .judgesrc.example.json for a copy-paste-ready template, or reference the JSON Schema for full IDE autocompletion.
| Field | Type | Default | Description |
|---|---|---|---|
$schema | string | β | JSON Schema URL for IDE validation |
preset | string | β | Named preset (see Named Presets for all 22 options) |
minSeverity | string | "info" | Minimum severity to report: critical Β· high Β· medium Β· low Β· info |
disabledRules | string[] | [] | Rule IDs or prefix wildcards to suppress (e.g. "COST-*", "SEC-003") |
disabledJudges | string[] | [] | Judge IDs to skip entirely (e.g. "cost-effectiveness") |
ruleOverrides | object | {} | Per-rule overrides keyed by rule ID or wildcard β { disabled?: boolean, severity?: string } |
languages | string[] | [] | Restrict analysis to specific languages (empty = all) |
format | string | "text" | Default output format: text Β· json Β· sarif Β· markdown Β· html Β· pdf Β· junit Β· codeclimate Β· github-actions |
failOnFindings | boolean | false | Exit code 1 when verdict is fail β useful for CI gates |
baseline | string | "" | Path to a baseline JSON file β matching findings are suppressed |
plugins | string[] | [] | Plugin module specifiers (npm packages or relative paths) that export custom judges |
judgeWeights | object | {} | Weighted importance per judge for aggregated scoring (e.g. { "cybersecurity": 2.0 }) |
failOnScoreBelow | number | β | Minimum score (0β100) for the run to pass; complements failOnFindings |
regulatoryScope | string[] | β | Regulatory frameworks in scope (e.g. ["GDPR", "PCI-DSS"]). Findings citing ONLY out-of-scope frameworks are suppressed. Run judges list --frameworks for supported values. |
consensusThreshold | number | β | Consensus suppression (0β1). If this fraction of judges report zero findings, minority findings are suppressed. Recommended: 0.7 for CI. |
escalationThreshold | number | β | Confidence threshold (0β1) below which findings are flagged for human review |
overrides | array | [] | Path-scoped config overrides (e.g. [{ "files": "**/*.test.ts", "disabledJudges": ["documentation"] }]) |
customRules | array | [] | User-defined regex-based rules for business logic validation |
All evaluation tools (CLI and MCP) accept the same configuration fields via --config <path> or inline config parameter.
Suppress specific findings directly in source code using comment directives:
Supported comment styles: //, #, /* */. Supports comma-separated rule IDs and wildcards (*, SEC-*).
Certain findings include machine-applicable patches in the patch field:
| Pattern | Auto-Fix |
|---|---|
new Buffer(x) | β Buffer.from(x) |
http:// URLs (non-localhost) | β https:// |
Math.random() | β crypto.randomUUID() |
Patches include oldText, newText, startLine, and endLine for automated application.
When multiple judges flag the same issue (e.g., both Data Security and Cybersecurity detect SQL injection on line 15), findings are automatically deduplicated. The highest-severity finding wins, and the description is annotated with cross-references (e.g., "Also identified by: CYBER-003").
Every tribunal evaluation includes a humanFocusGuide that categorizes findings into three buckets for human reviewers:
| Bucket | Description | When to use |
|---|---|---|
| β Trust | High-confidence (β₯80%), evidence-backed findings with AST/taint confirmation | Act directly β these have strong automated evidence |
| π Verify | Lower-confidence or absence-based findings | Use your judgment β the issue may exist elsewhere in the project |
| π¦ Blind Spots | Areas automated analysis cannot evaluate | Focus your manual review time here |
Blind spots are detected from code characteristics: complex branching logic, external service calls, financial calculations, PII handling, state machines, and complex regex. The guide appears in CLI text/markdown output, JSON/SARIF output, and GitHub Action step summaries.
Configure which regulatory frameworks apply to your project in .judgesrc:
Findings that cite ONLY out-of-scope frameworks are suppressed. Findings with no regulatory reference (general code quality) are always kept. Run judges list --frameworks to see all 17 supported frameworks (GDPR, CCPA, HIPAA, PCI-DSS, SOC2, SOX, COPPA, FedRAMP, NIST, ISO27001, ePrivacy, DORA, NIS2, EU-AI-Act, and more).
The LLM benchmark system auto-generates precision amendments for judges with high false-positive rates. Amendments are data-driven corrections injected into prompts that improve accuracy over successive benchmark runs.
The self-teaching loop:
judges codify-amendments to bake amendments permanently into the distributed packageThe engine performs inter-procedural taint tracking to trace data from user-controlled sources (e.g., req.body, process.env) through transformations to security-sensitive sinks (e.g., eval(), exec(), SQL queries). Taint flows are used to boost confidence on true-positive findings and suppress false positives where sanitization is detected.
Code that demonstrates good practices receives score bonuses (capped at +15):
| Signal | Bonus |
|---|---|
| Parameterized queries | +3 |
| Security headers (helmet) | +3 |
| Auth middleware (passport, etc.) | +3 |
| Proper error handling | +2 |
| Input validation libs (zod, joi, etc.) | +2 |
| Rate limiting | +2 |
| Structured logging (pino, winston) | +2 |
| CORS configuration | +1 |
| Strict mode / strictNullChecks | +1 |
| Test patterns (describe/it/expect) | +1 |
Judges include framework-specific detection for Express, Django, Flask, FastAPI, Spring, ASP.NET, Rails, and more. Framework middleware (e.g., helmet(), express-rate-limit, passport.authenticate()) is recognized as mitigation, reducing false positives.
In project-level analysis, imports are resolved across files. If one file imports a security middleware module from another file in the project, findings about missing security controls are automatically adjusted with reduced confidence.
Each judge scores the code from 0 to 100:
| Severity | Score Deduction |
|---|---|
| Critical | β30 points |
| High | β18 points |
| Medium | β10 points |
| Low | β5 points |
| Info | β2 points |
Verdict logic:
The overall tribunal score is the average of all 45 judges. The overall verdict fails if any judge fails.
| Command | Description |
|---|---|
npm run build | Compile TypeScript to dist/ |
npm run dev | Watch mode β recompile on save |
npm test | Run the full test suite |
npm run demo | Run the sample tribunal demo |
npm run report:public-repo -- --repoUrl <url> | Generate a full tribunal report for a public repository URL |
npm run report:quickstart -- --repoUrl <url> | Run opinionated high-signal report defaults for fast adoption |
npm run automation:daily-popular | Analyze up to 10 rotating popular repos/day and open up to 5 remediation PRs per repo |
npm start | Start the MCP server |
npm run clean | Remove dist/ |
judges init | Interactive project setup wizard |
judges fix <file> | Preview auto-fix patches (add --apply to write) |
judges watch <dir> | Watch mode β re-evaluate on file save |
judges report <dir> | Full tribunal report on a local directory |
judges hook install | Install a Git pre-commit hook |
judges diff | Evaluate changed lines from unified diff |
judges deps | Analyze dependencies for supply-chain risks |
judges baseline create | Create baseline for finding suppression |
judges ci-templates | Generate CI pipeline templates |
judges docs | Generate per-judge rule documentation |
judges completions <shell> | Shell completion scripts |
judges feedback submit | Mark findings as true positive, false positive, or won't fix |
judges feedback stats | Show false-positive rate statistics |
judges benchmark run | Run detection accuracy benchmark suite |
judges rule create | Interactive custom rule creation wizard |
judges rule list | List custom evaluation rules |
judges pack list | List available language packs |
judges config export | Export config as shareable package |
judges config import <src> | Import a shared configuration |
judges compare | Compare judges against other code review tools |
judges list | List all 45 judges with domains and descriptions |
judges list --frameworks | List supported regulatory frameworks and .judgesrc usage |
judges codify-amendments | Bake self-teaching amendments into judge source files |
This repo includes a scheduled workflow at .github/workflows/daily-popular-repo-autofix.yml that:
Each run writes daily-autofix-summary.json (or SUMMARY_PATH) with per-repository telemetry, including:
runAggregate β compact run-level totals and cross-repo top prioritized rules,runAggregate.totalCandidatesDiscovered and runAggregate.totalCandidatesAfterLocationDedupe β signal how much overlap was removed before attempting fixes,runAggregate.totalCandidatesAfterPriorityThreshold β candidates that remain after applying minimum priority score,runAggregate.dedupeReductionPercent β percent reduction from location dedupe for quick runtime-efficiency tracking,runAggregate.priorityThresholdReductionPercent β percent reduction from minimum-priority filtering after dedupe,priorityRulePrefixesUsed β dangerous rule prefixes used during prioritization,minPriorityScoreUsed β minimum candidatePriorityScore applied for candidate inclusion,candidatesDiscovered, candidatesAfterLocationDedupe, and candidatesAfterPriorityThreshold β per-repo candidate counts after each filter stage,topPrioritizedRuleCounts β most common rule IDs among ranked candidates,topPrioritizedCandidates β top ranked candidate samples (rule, severity, confidence, file, line, priority score).Optional runtime control:
AUTOFIX_MIN_PRIORITY_SCORE β minimum candidate priority score required after dedupe (default: 0, disabled).Required secret:
JUDGES_AUTOFIX_GH_TOKEN β GitHub token with permission to fork/push/create PRs for target repositories.Manual run:
Judges can be consumed as a library (not just via MCP). Import from @kevinrabun/judges/api:
| Entry Point | Description |
|---|---|
@kevinrabun/judges/api | Programmatic API (default) |
@kevinrabun/judges/server | MCP server entry point |
@kevinrabun/judges/sarif | SARIF 2.1.0 formatter |
@kevinrabun/judges/junit | JUnit XML formatter |
@kevinrabun/judges/codeclimate | CodeClimate/GitLab Code Quality JSON |
@kevinrabun/judges/badge | SVG and text badge generator |
@kevinrabun/judges/diagnostics | Diagnostics formatter |
@kevinrabun/judges/plugins | Plugin system API (see Plugin Guide) |
@kevinrabun/judges/fingerprint | Finding fingerprint utilities |
@kevinrabun/judges/comparison | Tool comparison benchmarks |
Convert findings to SARIF 2.1.0 for GitHub Code Scanning, Azure DevOps, and other CI/CD tools:
All thrown errors extend JudgesError with a machine-readable code property:
| Error Class | Code | When |
|---|---|---|
ConfigError | JUDGES_CONFIG_INVALID | Malformed .judgesrc or invalid inline config |
EvaluationError | JUDGES_EVALUATION_FAILED | Unknown judge, analyzer crash |
ParseError | JUDGES_PARSE_FAILED | Unparseable source code or input data |
MIT
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/judges-panel)<a href="https://allmcps.com/mcp/judges-panel"><img src="https://allmcps.com/api/badge/judges-panel?style=directory" alt="Judges Panel on AllMCPs" /></a>