mcpField
P
prodlint

prodlint

ローカル
prodlint.com開発ツール15今日更新

prodlint について

prodlintは、AI生成アプリの本番投入準備を確認する静的解析ツールです。設定やLLMを使わず、52個のルールでセキュリティ、信頼性、性能、AIコード品質を検査します。

主な機能

  1. 01本番準備度を調べる52ルール
  2. 02セキュリティ・信頼性・性能の検査
  3. 03AI生成コード品質の検査
  4. 04JSON、SARIF、ベースライン出力
  5. 05具体的な修正ヒント

活用シーン

  1. 01出荷前にAI生成アプリをスキャン
  2. 02CIで重大な問題を検出してビルドを停止
  3. 03スキャン結果をGitHub Code Scanningに送信

MCP 対応

prodlintには、読み取り専用のscanとscan-webツールを備えたMCPサーバーがあります。MCPクライアントはプロジェクトのディレクトリやウェブサイトを検査し、スコア、カテゴリ別結果、検出内容を取得できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"prodlint-prodlint": {
"command": "npx",
"args": [
"-y",
"prodlint-mcp"
]
}
}
}
起動コマンドnpx -y prodlint-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmprodlint-mcp0.10.4

ツール

2

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
pathstringはいスキャンするプロジェクトディレクトリの絶対パス
ignorearrayいいえ無視する Glob パターン

詳細

prodlint

npm version npm downloads License: MIT

バイブコーディングで作成したアプリを本番環境に対応させます。

バイブコーディングで作成したアプリ向けの静的解析ツールです。Cursor、v0、Bolt、Copilot が生み出す、存在しないインポート、認証の欠落、ハードコードされたシークレット、検証されていないサーバーアクションなど、セキュリティ、信頼性、パフォーマンス、AI の品質に関する問題を検出します。設定不要、LLM 不要、52 個のルールを備えています。

npx prodlint
  prodlint v0.10.4
  Scanned 148 files · 2 critical · 5 warnings · 1 info

  src/app/api/checkout/route.ts
    12:1  INFO  No rate limiting — anyone could spam this endpoint and run up your API costs  rate-limiting
    28:5  WARN  Empty catch block silently swallows error  shallow-catch

  src/actions/submit.ts
    5:3   CRIT  Server action uses formData without validation  next-server-action-validation
      ↳ Validate with Zod: const data = schema.safeParse(Object.fromEntries(formData))

  src/lib/db.ts
    1:1   CRIT  Package "drizzle-orm" is imported but not in package.json  hallucinated-imports

  Scores
  security        72 ████████████████░░░░  (8 issues)
  reliability     85 █████████████████░░░  (4 issues)
  performance     95 ███████████████████░  (1 issue)
  ai-quality      90 ██████████████████░░  (3 issues)

  Overall: 82/100 (weighted)

  2 critical · 5 warnings · 4 info

なぜ必要なのか?

バイブコーディングは、最も速くアプリを構築できる方法です。素早くリリースするには、コードがコンパイルできるだけでなく、本番環境に対応できているかを把握する必要があります。ハードコードされたシークレット、存在しないパッケージ、認証の欠落、XSS の脆弱性は、型チェックを通過して一見正しく見えますが、本番環境に対応できているわけではありません。

prodlint は、TypeScript や ESLint がチェックしない点、つまり バイブコーディングで作成したアプリが本番環境に対応できているかどうかをチェックします。

インストール

npx prodlint                              # Run directly (no install)
npx prodlint ./my-app                     # Scan specific path
npx prodlint --json                       # JSON output for CI
npx prodlint --sarif                      # SARIF 2.1.0 for GitHub Code Scanning
npx prodlint --summary                    # Quick pass/fail + top 3 blockers
npx prodlint --profile startup            # Only critical findings
npx prodlint --profile strict             # All findings including info
npx prodlint --baseline .prodlint-baseline.json   # Only new findings
npx prodlint --ignore "*.test.ts"         # Ignore patterns
npx prodlint --min-severity warning       # Only warnings and criticals
npx prodlint --quiet                      # Suppress badge output

または、インストールします:

npm i -D prodlint     # Project dependency
npm i -g prodlint     # Global install

4 カテゴリにわたる 52 個のルール

セキュリティ(27 個のルール)
ルールチェック内容
secretsソースコードにハードコードされた API キー、トークン、パスワード
auth-checks認証のない API ルート
env-exposureサーバー専用のシークレットに対する NEXT_PUBLIC_ の使用
input-validation検証されていないリクエストボディの使用
cors-configAccess-Control-Allow-Origin: *。ワイルドカードと認証情報の併用は重大な問題として扱われます
unsafe-htmlユーザーデータを使った dangerouslySetInnerHTML
sql-injection文字列補間を使った SQL クエリ(ORM を考慮)
open-redirectredirect() に渡されるユーザー入力
rate-limitingレートリミッターのない API ルート
phantom-dependencynode_modules にあるが package.json に記載されていないパッケージ
insecure-cookiehttpOnly/secure/sameSite が設定されていないセッション Cookie
leaked-env-in-logsconsole.log 呼び出し内の process.env.*
insecure-randomトークン、シークレット、セッション ID に使用される Math.random()
next-server-action-validationZod/スキーマによる検証なしで formData を使用するサーバーアクション
env-fallback-secretハードコードされたフォールバック値を持つ、セキュリティ上重要な環境変数
verbose-error-responseAPI レスポンスに漏えいするエラースタックトレースやメッセージ
missing-webhook-verification署名検証のない Webhook ルート
server-action-auth認証チェックなしでミューテーションを行うサーバーアクション
eval-injectioneval()、new Function()、動的コード実行
next-public-sensitiveシークレット環境変数への NEXT_PUBLIC_ プレフィックスの付与
ssrf-riskサーバーコード内の fetch に渡される、ユーザーが制御する URL
path-traversalサニタイズされていないユーザー入力を使ったファイルシステム操作
unsafe-file-uploadファイルの種類やサイズを検証しないファイルアップロードハンドラー
supabase-missing-rlsRLS を有効にせずにマイグレーションで実行する CREATE TABLE
deprecated-oauth-flowOAuth Implicit Grant(response_type=token)
jwt-no-expiry有効期限なしで署名された JWT トークン
client-side-auth-onlyクライアントコンポーネント内のパスワード比較または認証ロジック
信頼性(11 ルール)
ルールチェック内容
hallucinated-importspackage.json に含まれていないパッケージのインポート
error-handlingtry/catch を使用しない非同期処理
unhandled-promiseawait も .catch も使用していない未処理の Promise
shallow-catchエラーを握りつぶす空の catch ブロック
missing-loading-stateローディング状態を設定せずにデータを取得するクライアントコンポーネント
missing-error-boundary対応する error.tsx がないルートレイアウト
missing-transaction$transaction を使用しない複数の Prisma 書き込み
redirect-in-try-catchtry/catch 内の redirect() — Next.js の redirect は例外をスローし、catch がそれを握りつぶします
missing-revalidationDB を変更するが revalidatePath を呼び出さないサーバーアクション
missing-useeffect-cleanupサブスクリプションやタイマーを使用しているが、クリーンアップの return がない useEffect
hydration-mismatchサーバーコンポーネントのレンダリングパスにある window/Date.now()/Math.random()
パフォーマンス(6 ルール)
ルールチェック内容
no-sync-fsAPI ルート内の readFileSync
no-n-plus-oneループ内のデータベース呼び出し
no-unbounded-query上限のない .findMany()/.select('*')
no-dynamic-import-loopループ内の import()
server-component-fetch-self自身の API ルートからデータを取得するサーバーコンポーネント
missing-abort-controllerタイムアウトまたは AbortController を使用しない Fetch/axios 呼び出し
AI 品質(8 ルール)
ルールチェック内容
ai-smellsany 型、console.log、増え続ける TODO コメント
placeholder-contentLorem ipsum、サンプルメールアドレス、本番コードに残った "your-api-key-here"
hallucinated-api.flatten()、.contains()、.substr() — AI が作り出したメソッド
stale-fallback本番コードにハードコードされた localhost:3000
comprehension-debt80 行を超える関数、深いネスト、多すぎるパラメーター
codebase-consistencyプロジェクト内で混在する命名規則
dead-exportsどこからもインポートされていないエクスポート関数
use-client-overuseクライアント側 API を一切使用していないファイルの "use client"

スマート検出

prodlint は、よくある誤検出を回避します。

  • AST 解析 — 13 ルール(インポート、catch ブロック、redirect、try/catch 内の redirect、SSRF、パストラバーサル、JWT、HTML インジェクション、ハイドレーション、トランザクション、環境変数の漏えい、ループ、SQL)を Babel ベースで解析し、失敗時は正規表現にフォールバックします
  • モノレポ対応 — npm/yarn/pnpm のワークスペース依存関係を自動的に解決します
  • フレームワーク認識 — Prisma、Drizzle、Supabase、Knex、Sequelize のホワイトリストにより、SQL インジェクションの誤検出を防ぎます
  • ミドルウェア検出 — Clerk、NextAuth、Supabase のミドルウェア(middleware.ts、または Next.js 16 の proxy.ts)を検出し、認証に関する検出結果の重大度を引き下げます
  • ブロックコメント認識 — /* */ 内のパターンは無視されます
  • パスエイリアス対応 — @/、~/、および tsconfig のパスは、存在しないインポートとして検出されません
  • ルートの除外 — 認証、Webhook、ヘルスチェック、cron のルートは認証/レート制限チェックの対象外です
  • テスト/スクリプトファイルの認識 — 本番用ではないファイルの重大度を引き下げます
  • 修正案 — 検出結果には、実際に適用できる修正コードを含む fix のヒントが表示されます

スコアリング

各カテゴリの初期スコアは 100 です。検出結果ごとの減点:

重大度減点ルールごとの上限
critical-8最大 1
warning-2最大 2
info-0.5最大 3

逓減:カテゴリ内の減点が 30 点を超えると、それ以降の減点は半分になります。50 点を超えると、4 分の 1 になります。

全体の加重スコア:セキュリティ 40%、信頼性 30%、パフォーマンス 15%、AI 品質 15%。最低値は 0 です。重大な検出結果が 1 件でもある場合、終了コードは 1 です。

GitHub Action

.github/workflows/prodlint.yml に追加します:

name: Prodlint
on: [pull_request]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: prodlint/prodlint@v1
        with:
          threshold: 50

スコアの内訳を PR コメントとして投稿し、スキャンで重大な問題が見つかった場合、またはスコアが threshold を下回った場合にビルドを失敗させます。Action の各リリースでは対応するバージョンの prodlint が実行されるため、Action を固定(@v1、バージョンタグ、またはコミット SHA)すると、スキャナーも固定されます。

入力デフォルト説明
path.スキャンするパス
threshold0合格に必要な最低スコア(0~100)
fail-on-criticaltrueスキャンで重大な問題が見つかった場合に失敗させます。false の場合は、失敗させずに問題を報告します
ignore無視する glob パターンをカンマ区切りで指定します
commenttrue結果を PR コメントとして投稿します
出力説明
score総合スコア(0~100)
critical重大な検出事項の数
SARIF + GitHub Code Scanning

prodlint の結果を GitHub の Security タブにアップロードします:

- name: Run prodlint
  run: npx prodlint --sarif > prodlint.sarif

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v4
  with:
    sarif_file: prodlint.sarif
    category: prodlint
既存プロジェクトのベースライン

既存の検出事項に圧倒されることなく、prodlint を段階的に導入できます:

# Save current state as baseline
npx prodlint --baseline-save .prodlint-baseline.json

# CI only fails on NEW findings
npx prodlint --baseline .prodlint-baseline.json

MCP サーバー

Cursor、Claude Code、または MCP 互換エディターで prodlint を使用します:

Claude Code:

claude mcp add prodlint -- npx -y prodlint-mcp

Cursor / Windsurf:

{
  "mcpServers": {
    "prodlint": {
      "command": "npx",
      "args": ["-y", "prodlint-mcp"]
    }
  }
}

prodlint-mcp は、prodlint に組み込まれたサーバーを起動する軽量なランチャーです。prodlint のすべてのリリースとともに公開されるため、常に対応するスキャナーが実行されます。

AI に 「このプロジェクトで prodlint を実行して」 と頼むと、scan ツールが直接呼び出されます。

ツール入力戻り値
scanpath(プロジェクトディレクトリ)、任意の ignore、minSeverity(critical / warning / info)、categories、maxFindings(デフォルトは 30)スコア、カテゴリ別スコア、重大度の高い順に並べた検出事項。maxFindings を超えても、すべての重大な検出事項が一覧表示されます。
scan-weburlサイトスコア、グレード、および 14 項目のエージェント対応度チェック

どちらのツールも、Markdown の要約と構造化出力(各ツールの outputSchema に一致する structuredContent)を返します。また、どちらも読み取り専用(readOnlyHint)としてマークされており、GitHub Copilot コードレビューなどのホステッドレビューアーが MCP ツールを呼び出す前に必要とします。

サイトスコア

デプロイ済みの任意の Web サイトで、AI エージェントへの対応度を確認できます。llms.txt、TDMRep、AgentCard、AI-Disclosure、HTTP Signatures(RFC 9421)など、新たな標準を対象とした 14 項目をチェックします。

npx prodlint --web example.com
npx prodlint --web example.com --json     # JSON output
  prodlint site score
  example.com · 14 checks

  Score: 42 C  ████████░░░░░░░░░░░░

  ✗ AI-Disclosure Header          0/10  No AI-Disclosure header found.
  ✗ Content-Usage Directives      0/10  No Content-Usage directives found.
  ✗ TDMRep                        0/10  No TDMRep found.
  ✗ A2A AgentCard                  0/5  No agent-card.json found.
  ✗ ai.txt                         0/5  No ai.txt found at site root.
  ! llms.txt                       2/5  llms.txt found but missing key sections.
  ✓ robots.txt                   10/10  robots.txt found with 15 rules.
  ✓ Sitemap                      10/10  Valid sitemap with 42 URLs.
  ✓ Structured Data              10/10  Found JSON-LD structured data.
  ✓ OpenGraph                    10/10  Complete OpenGraph tags found.
  ✓ Page Speed                    5/5   Loaded in 0.8s.
  ✓ AI Bot Directives             5/5   AI-specific bot rules found.
  ✓ WebMCP Tools                   0/5  No WebMCP tools detected.

  7 passed · 5 failed · 1 warnings

  Full results: https://prodlint.com/score?url=example.com

または、prodlint.com/score でスコアをインタラクティブに確認できます。

AI ツール向け

  • LLM 向けドキュメント:prodlint.com/llms.txt — LLM 向けの簡潔なプロジェクト概要
  • 完全なリファレンス:prodlint.com/llms-full.txt — 詳細を含む全 52 ルール
  • MCP セットアップガイド:prodlint.com/mcp — Claude Code、Cursor、Windsurf の詳細なエディター設定

prodlint は、AI が生成したコードのパターンに特化して設計されています。すべてのルールで、スタイル上の細かな指摘ではなく、AI コーディングツールが一貫して生み出す本番環境での問題をチェックします。

抑制

単一の行を抑制します:

// prodlint-disable-next-line secrets
const key = "sk_test_example_for_docs"

ファイル全体を抑制します(先頭に配置):

// prodlint-disable secrets

プログラム用 API

import { scan } from 'prodlint'

const result = await scan({ path: './my-project' })
console.log(result.overallScore) // 0-100
console.log(result.findings)     // Finding[]

バッジ

[![prodlint](https://img.shields.io/badge/prodlint-85%2F100-brightgreen)](https://prodlint.com)

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。