Token导航 LogoToken导航TokenDH.com
prodlint (38bc59) logo
安全风控stdio官方级别未说明来源级核验

prodlint (38bc59)

MCP Server

prodlint

用于检查vibe-coded应用程序的生产准备度的静态分析工具,涵盖安全、可靠性、性能和AI质量等问题。

工具数

0

提示词数

0

GitHub Stars

13

资源数

0
静态分析TypeScriptClaudeClaudeCursorWindsurf

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

prodlint

提供方

prodlint

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx prodlint

详细介绍

产品

](https://www.npmjs.com/package/prodlint) ](https://www.npmjs.com/package/prodlint) ![License: MIT](https://opensource.org/licenses/MIT)

为vibe编码的应用程序做好生产准备。

vibe编码应用程序的静态分析。标记Cursor、v0、Bolt和Copilot造成的安全性、可靠性、性能和AI质量问题——幻觉导入、缺少身份验证、硬编码秘密、未验证的服务器操作等等。零配置,无LLM,52条规则。

npx prodlint
  prodlint v0.9.2
  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

为什么?

Vibe编码是最快的构建方式。快速交付意味着知道你的代码已经准备好投入生产,而不仅仅是它可以编译。硬编码的秘密、幻觉包、丢失的身份验证和XSS向量通过了类型检查,看起来是正确的,但它们还没有准备好投入生产。

prodlint检查TypeScript和ESLint没有检查的内容: 你的vibe编码应用程序是否已准备好投入生产.

安装

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-exposureNEXT_PUBLIC_ 仅服务器机密
input-validation未经验证使用请求正文
cors-configAccess-Control-Allow-Origin: *,通配符+凭据升级为关键
unsafe-htmldangerouslySetInnerHTML 用户数据
sql-injection字符串插值SQL查询(ORM感知)
open-redirect用户输入传递给 redirect()
rate-limiting没有速率限制器的API路由
phantom-dependencynode_modules中的包,但package.json中缺少
insecure-cookie会话Cookie缺少httpOnly/secure/sameSite
leaked-env-in-logsprocess.env.* console.log内部调用
insecure-randomMath.random() 用于令牌、机密或会话ID
next-server-action-validation使用formData而不进行Zod/模式验证的服务器操作
env-fallback-secret具有硬编码回退值的安全敏感环境变量
verbose-error-responseAPI响应中的错误堆栈跟踪或消息泄漏
missing-webhook-verification没有签名验证的Webhook路由
server-action-auth具有突变但没有身份验证检查的服务器操作
eval-injectioneval(), new Function(),动态代码执行
next-public-sensitiveNEXT_PUBLIC_ secret环境变量前缀
ssrf-risk传递用户控制的URL以获取服务器代码
path-traversal使用未经消毒的用户输入的文件系统操作
unsafe-file-upload没有类型或大小验证的文件上传处理程序
supabase-missing-rlsCREATE TABLE 在不启用RLS的情况下进行迁移
deprecated-oauth-flowOAuth隐式授权(response_type=令牌)
jwt-no-expiry无过期签名的JWT令牌
client-side-auth-only客户端组件中的密码比较或身份验证逻辑

可靠性(11条规则)

规则它检查什么
hallucinated-imports导入不在package.json中的包
error-handling不使用try/catch的异步操作
unhandled-promise没有wait或.catch的浮动承诺
shallow-catch空的捕获块会吞下错误
missing-loading-state不带加载状态的客户端组件
missing-error-boundary没有匹配错误的路线布局.tsx
missing-transaction多棱镜写入没有 $transaction
redirect-in-try-catchredirect() try/catch内部——Next.js重定向抛出,catch吞下它
missing-revalidation服务器操作有DB突变,但没有 revalidatePath
missing-useeffect-cleanupuseEffect具有订阅/计时器,但没有清理返回
hydration-mismatchwindow/Date.now()/Math.random() 服务器组件中的呈现路径

性能(6条规则)

规则它检查什么
no-sync-fsreadFileSync API路线
no-n-plus-one循环内部的数据库调用
no-unbounded-query.findMany() / .select('*') 没有限制
no-dynamic-import-loopimport() 内环
server-component-fetch-self获取自己的API路由的服务器组件
missing-abort-controller无超时或AbortController的Fetch/axios调用

AI质量(8条规则)

规则它检查什么
ai-smellsany 类型, console.log,TODO评论堆积如山
placeholder-contentLorem ipsum,示例电子邮件,“你的api密钥在这里”留在生产代码中
hallucinated-api.flatten(), .contains(), .substr() --人工智能发明的方法
stale-fallbacklocalhost:3000 在生产代码中硬编码
comprehension-debt函数超过80行,嵌套深度大,参数太多
codebase-consistency整个项目中的混合命名约定
dead-exports导出了没有任何东西导入的函数
use-client-overuse"use client" 在不使用任何客户端API的文件上

智能检测

prodlint避免了常见的误报:

  • AST解析 --使用正则表达式回退对12条规则(导入、捕获块、重定向、SSRF、路径遍历、JWT、HTML注入、水合、事务、环境泄漏、循环、SQL)进行基于Babel的分析
  • Monorepo支持 --npm/yarn/pnpm工作区依赖关系自动解析
  • 框架意识 --Prisma、Drizzle、Supabase、Knex和Sequelize白名单可防止错误的SQL注入标志
  • 中间件检测 --检测到办事员、NextAuth、Supabase中间件——身份验证结果降级
  • 阻止评论意识 --内部图案 /* */ 被忽略
  • 路径别名支持@/, ~/,并且tsconfig路径不会被标记为幻觉导入
  • 路线豁免 --auth、webhook、运行状况和cron路由免于auth/速率限制检查
  • 测试/脚本文件感知 --非生产文件的严重性较低
  • 修复建议 --调查结果包括可采取行动 fix 带有修复代码的提示

评分

每个类别从100开始。根据调查结果扣除:

严重性扣除额按规则上限
临界-8最大1
警告-2最多2
信息-0.5最多3个

收益递减在一个类别中扣除30分后,进一步的扣除减半;50岁之后,四分卫。

加权总体安全性40%,可靠性30%,性能15%,人工智能质量15%。0楼。退出码 1 如果存在任何关键发现。

GitHub行动

增添 .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

将分数细分作为公关评论发布,如果低于阈值,则构建失败。

输入默认值描述
path.扫描路径
threshold0通过的最低分数(0-100)
ignore要忽略的逗号分隔的球形图案
commenttrue发布带有结果的PR评论
输出描述
score总得分(0-100)
critical关键发现数量

SARIF+GitHub代码扫描

将prodlint结果上传到GitHub的安全选项卡:

- 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 mcp add prodlint -- npx -y prodlint-mcp

光标/风帆:

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

问你的AI: *“在此项目上运行prodlint”* 它称之为 scan 工具直接。

网站评分

检查任何已部署的网站是否已准备好AI代理——14项检查涵盖了新兴标准,如llms.txt、TDMRep、AgentCard、AI Disclosure、HTTP签名(RFC 9421)等。

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工具

prodlint是专门为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)

许可证

麻省理工学院

目录标签

目录标签

静态分析TypeScriptClaude本地部署代码检查生产准备度AI代码质量安全检查

支持客户端

ClaudeCursorWindsurf

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

prodlint

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP