prodlint
npm version
npm downloads
License: MIT
vibe-coded 앱을 위한 프로덕션 준비 상태 확인.
vibe-coded 앱에 대한 정적 분석 (Static analysis). Cursor, v0, Bolt, Copilot 등이 생성하는 보안(security), 신뢰성(reliability), 성능(performance) 및 AI 품질 문제를 플래그 지정합니다 — 환각된 import(hallucinated imports), 누락된 인증(missing auth), 하드코딩된 비밀값(hardcoded secrets), 검증되지 않은 서버 액션 등. 설정 불필요, LLM 사용 안 함, 52개 규칙.
prodlint v0.10.7
Scanned 148 files · 2 critical · 5 warnings · 1 info
...
왜 필요한가?
Vibe 코딩은 가장 빠르게 빌드하는 방식입니다. 빠르게 배포한다는 것은 단순히 컴파일이 된다는 것을 아는 것이 아니라, 자신의 코드가 프로덕션 준비 상태임을 안다는 의미입니다. 하드코딩된 비밀값, 환각된 패키지(hallucinated packages), 누락된 인증, XSS 벡터 등은 타입 검사(type-checks)를 통과하고 올바르게 보이지만, 실제로는 프로덕션에 적합하지 않습니다.
prodlint는 TypeScript와 ESLint가 확인하지 못하는 것을 검사합니다: 사용자의 vibe-coded 앱이 프로덕션 준비 상태인지 여부입니다.
설치하기
npx prodlint
npx prodlint ./my-app
npx prodlint --json
...
또는 설치할 수 있습니다:
pm i -D prodlint
pm i -g prodlint
4가지 카테고리에 걸친 52개 규칙
보안 (Security) (27개 규칙)
| Rule | 검사 내용 |
|---|
secrets | 소스 코드에 하드코딩된 API 키, 토큰, 비밀번호 |
| ... | |
신뢰성 (Reliability) (11개 규칙)
| Rule | 검사 내용 |
|---|
hallucinated-imports | package.json에 없는 패키지의 import |
| ... | |
| Rule | 검사 내용 |
|---|
no-sync-fs | API 라우트 내의 readFileSync |
| ... | |
AI 품질 (AI Quality) (8개 규칙)
| Rule | 검사 내용 |
|---|
ai-smells | any 타입, console.log, 쌓여가는 TODO 주석 등 |
| ... | |
스마트 감지
prodlint는 일반적인 오탐(false positive)을 방지합니다:
- AST 파싱: Babel 기반 분석으로 14가지 규칙(imports, catch blocks, redirects, try/catch 내 redirect, SSRF, path traversal, JWT, HTML injection, hydration, transactions, env leaks, loops, SQL, route handlers)을 정규식 폴백(regex fallback)과 함께 처리합니다.
- Monorepo 지원: npm/yarn/pnpm 워크스페이스 의존성을 자동으로 해결합니다.
- 프레임워크 인식: Prisma, Drizzle, Supabase, Knex, Sequelize 화이트리스트를 통해 잘못된 SQL 인젝션 플래그를 방지합니다.
- 미들웨어 감지: Clerk, NextAuth, Supabase 미들웨어(
middleware.ts, 또는 Next.js 16의 proxy.ts)가 감지되어 인증 관련 발견 사항은 등급이 하향 조정됩니다.
- 블록 주석 인식:
/* */ 내부 패턴은 무시합니다.
- 경로 별칭 지원:
@/, ~/, 및 tsconfig 경로를 환각된 import로 플래그 지정하지 않습니다.
- 라우트 예외 처리: 인증(auth), 웹훅(webhook), 상태 확인(health), 크론(cron) 경로는 인증/속도 제한 검사에서 제외됩니다.
- 테스트/스크립트 파일 인식: 프로덕션 파일이 아닌 경우 심각도가 낮아집니다.
- 수정 제안: 발견된 문제에는 실행 가능한
fix 힌트와 복구 코드가 포함됩니다.
점수 산정 (Scoring)
각 카테고리는 100점에서 시작합니다. 발견 사항당 감점:
| 심각도 | 감점 | 규칙별 최대 감점 |
|---|
| critical | -8 | 최대 1 |
| ... | | |
감점 감소 효과 (Diminishing returns): 카테고리에서 30점이 감점된 후에는 추가 감점이 절반으로, 50점이 감점된 후에는 4분의 1로 줄어듭니다.
가중치 종합 점수: 보안(security) 40%, 신뢰성(reliability) 30%, 성능(performance) 15%, AI 품질(ai-quality) 15%. 최저 점수는 0점입니다. 치명적인 발견 사항이 있는 경우 종료 코드 1을 반환합니다.
GitHub Actions
.github/workflows/prodlint.yml에 추가하세요:
name: Prodlint
on: [pull_request]
...
점수 분석을 PR 댓글로 게시하며, 스캔 결과 치명적인 문제가 발견되거나 점수가 threshold보다 낮은 경우 빌드를 실패시킵니다. 이 액션의 각 릴리스는 일치하는 prodlint 버전을 실행하므로, 액션을 고정(pinning)할 때 (@v1, 버전 태그 또는 커밋 SHA) 스캐너도 함께 고정됩니다.
| Input | Default | Description |
|---|
path | . | 스캔할 경로(Path) |
| ... | | |
| Output | Description | |
| -------- | ------------- | |
score | 전체 점수 (0-100점) | Overall score (0-100) |
critical | 심각한 발견 사항 개수 | Number of critical findings |
SARIF + GitHub Code Scanning
prodlint 결과를 GitHub의 Security 탭에 업로드합니다:
- name: Run prodlint
run: npx prodlint --sarif > prodlint.sarif
...
기존 프로젝트를 위한 기준선 설정(Baseline)
prodlint가 기존에 존재하는 발견 사항들로 인해 압도당하지 않도록 점진적으로 채택합니다:
npx prodlint --baseline-save .prodlint-baseline.json
...
MCP 서버(Server)
Cursor, Claude Code 또는 모든 MCP 호환 에디터 내에서 prodlint를 사용합니다:
Claude Code:
claude mcp add prodlint -- npx -y prodlint-mcp
Cursor / Windsurf:
{
"mcpServers": {
"prodlint": {
...
prodlint-mcp는 prodlint에 내장된 서버용 얇은 실행기(thin launcher)입니다. 모든 prodlint 릴리스와 함께 게시되므로 항상 일치하는 스캐너를 실행합니다.
AI에게 "이 프로젝트에 대해 prodlint를 실행해줘"라고 요청하면, 직접 scan 도구를 호출합니다.
| Tool | 입력값 (Inputs) | 반환값 (Returns) |
|---|
scan | path (프로젝트 디렉토리), 선택적 ignore, minSeverity (critical / warning / info), categories, maxFindings (기본값 30) | 점수, 카테고리별 점수, 그리고 심각도 순으로 나열된 발견 사항. 모든 critical 발견 사항은 maxFindings를 초과하더라도 목록에 포함됩니다. |
scan-web | url | 사이트 점수, 등급, 그리고 14가지 에이전트 준비성 검사 |
두 도구 모두 마크다운 요약과 구조화된 출력(structuredContent는 각 도구의 outputSchema와 일치)을 반환하며, 둘 다 읽기 전용(readOnlyHint)으로 표시됩니다. 이는 GitHub Copilot 코드 리뷰와 같은 호스팅 검토자가 MCP 도구를 호출하기 전에 요구하는 사항입니다.
AI 에이전트 준비성 점수(Site Score)
llms.txt, TDMRep, AgentCard, AI-Disclosure, HTTP Signatures (RFC 9421) 등 새로운 표준을 포괄하는 14가지 검사를 통해 배포된 모든 웹사이트의 AI 에이전트 준비성을 확인합니다.
npx prodlint --web example.com
npx prodlint --web example.com --json
prodlint site score
example.com · 14 checks
...
또는 다음 주소에서 상호작용적으로 점수를 확인하세요: prodlint.com/score.
prodlint는 특히 AI가 생성한 코드 패턴을 위해 설계되었습니다. 모든 규칙은 스타일상의 사소한 결함이 아니라, AI 코딩 도구가 일관되게 생성하는 프로덕션 문제를 확인합니다.
억제 (Suppression)
단일 라인 억제:
const key = "sk_test_example_for_docs"
전체 파일 억제 (맨 위에 배치):
프로그래밍 방식 API (Programmatic API)
import { scan } from 'prodlint'
const result = await scan({ path: './my-project' })
...
배지 (Badge)
[](https://prodlint.com)
라이선스 (License)
MIT