Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Production readiness for vibe-coded apps — know your AI code is ready to ship prodlint $1 $1 $1 Production readiness for vibe-coded apps. Static analysis for vibe-coded apps. Flags the security, reliability, performance, and AI quality issues that Cursor, v0, Bolt, and Copilot create — hallucinated imports, missing auth, hardcoded secrets, unvalidated server actions, and more. Zero config, no LLM, 52 rules, under 100ms. Why? Vibe coding is the fastest way to build. Shipping fast means knowing Capability contract not published. No trust telemetry is available yet. 8 GitHub stars reported by the source. Last updated 2/25/2026.
Freshness
Last checked 2/25/2026
Best For
prodlint is best for lint, linter, security workflows where MCP compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB MCP, runtime-metrics, public facts pack
Production readiness for vibe-coded apps — know your AI code is ready to ship prodlint $1 $1 $1 Production readiness for vibe-coded apps. Static analysis for vibe-coded apps. Flags the security, reliability, performance, and AI quality issues that Cursor, v0, Bolt, and Copilot create — hallucinated imports, missing auth, hardcoded secrets, unvalidated server actions, and more. Zero config, no LLM, 52 rules, under 100ms. Why? Vibe coding is the fastest way to build. Shipping fast means knowing
Public facts
4
Change events
0
Artifacts
0
Freshness
Feb 25, 2026
Capability contract not published. No trust telemetry is available yet. 8 GitHub stars reported by the source. Last updated 2/25/2026.
Trust score
Unknown
Compatibility
MCP
Freshness
Feb 25, 2026
Vendor
Prodlint
Artifacts
0
Benchmarks
0
Last release
0.9.0
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. 8 GitHub stars reported by the source. Last updated 2/25/2026.
Setup snapshot
git clone https://github.com/prodlint/prodlint.gitSetup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Prodlint
Protocol compatibility
MCP
Adoption signal
8 GitHub stars
Handshake status
UNKNOWN
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
bash
npx prodlint
text
prodlint v0.9.0
Scanned 148 files · 3 critical · 5 warnings
src/app/api/checkout/route.ts
12:1 CRIT 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)
3 critical · 5 warnings · 3 infobash
npx prodlint # Run directly (no install) npx prodlint ./my-app # Scan specific path npx prodlint --json # JSON output for CI npx prodlint --ignore "*.test.ts" # Ignore patterns npx prodlint --min-severity warning # Only warnings and criticals npx prodlint --quiet # Suppress badge output
bash
npm i -D prodlint # Project dependency npm i -g prodlint # Global install
yaml
name: Prodlint
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: prodlint/prodlint@v1
with:
threshold: 50bash
claude mcp add prodlint npx prodlint-mcp
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB MCP
Editorial quality
ready
Production readiness for vibe-coded apps — know your AI code is ready to ship prodlint $1 $1 $1 Production readiness for vibe-coded apps. Static analysis for vibe-coded apps. Flags the security, reliability, performance, and AI quality issues that Cursor, v0, Bolt, and Copilot create — hallucinated imports, missing auth, hardcoded secrets, unvalidated server actions, and more. Zero config, no LLM, 52 rules, under 100ms. Why? Vibe coding is the fastest way to build. Shipping fast means knowing
Production readiness for vibe-coded apps.
Static analysis for vibe-coded apps. Flags the security, reliability, performance, and AI quality issues that Cursor, v0, Bolt, and Copilot create — hallucinated imports, missing auth, hardcoded secrets, unvalidated server actions, and more. Zero config, no LLM, 52 rules, under 100ms.
npx prodlint
prodlint v0.9.0
Scanned 148 files · 3 critical · 5 warnings
src/app/api/checkout/route.ts
12:1 CRIT 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)
3 critical · 5 warnings · 3 info
Vibe coding is the fastest way to build. Shipping fast means knowing your code is production-ready — not just that it compiles. Hardcoded secrets, hallucinated packages, missing auth, and XSS vectors pass type-checks and look correct — but they aren't ready for production.
prodlint checks what TypeScript and ESLint don't: whether your vibe-coded app is ready for production.
npx prodlint # Run directly (no install)
npx prodlint ./my-app # Scan specific path
npx prodlint --json # JSON output for CI
npx prodlint --ignore "*.test.ts" # Ignore patterns
npx prodlint --min-severity warning # Only warnings and criticals
npx prodlint --quiet # Suppress badge output
Or install it:
npm i -D prodlint # Project dependency
npm i -g prodlint # Global install
| Rule | What it checks |
|------|----------------|
| secrets | API keys, tokens, passwords hardcoded in source |
| auth-checks | API routes with no authentication |
| env-exposure | NEXT_PUBLIC_ on server-only secrets |
| input-validation | Request body used without validation |
| cors-config | Access-Control-Allow-Origin: *, wildcard + credentials escalated to critical |
| unsafe-html | dangerouslySetInnerHTML with user data |
| sql-injection | String-interpolated SQL queries (ORM-aware) |
| open-redirect | User input passed to redirect() |
| rate-limiting | API routes with no rate limiter |
| phantom-dependency | Packages in node_modules but missing from package.json |
| insecure-cookie | Session cookies missing httpOnly/secure/sameSite |
| leaked-env-in-logs | process.env.* inside console.log calls |
| insecure-random | Math.random() used for tokens, secrets, or session IDs |
| next-server-action-validation | Server actions using formData without Zod/schema validation |
| env-fallback-secret | Security-sensitive env vars with hardcoded fallback values |
| verbose-error-response | Error stack traces or messages leaked in API responses |
| missing-webhook-verification | Webhook routes without signature verification |
| server-action-auth | Server actions with mutations but no auth check |
| eval-injection | eval(), new Function(), dynamic code execution |
| next-public-sensitive | NEXT_PUBLIC_ prefix on secret env vars |
| ssrf-risk | User-controlled URLs passed to fetch in server code |
| path-traversal | File system operations with unsanitized user input |
| unsafe-file-upload | File upload handlers without type or size validation |
| supabase-missing-rls | CREATE TABLE in migrations without enabling RLS |
| deprecated-oauth-flow | OAuth Implicit Grant (response_type=token) |
| jwt-no-expiry | JWT tokens signed without an expiration |
| client-side-auth-only | Password comparisons or auth logic in client components |
| Rule | What it checks |
|------|----------------|
| hallucinated-imports | Imports of packages not in package.json |
| error-handling | Async operations without try/catch |
| unhandled-promise | Floating promises with no await or .catch |
| shallow-catch | Empty catch blocks that swallow errors |
| missing-loading-state | Client components that fetch without a loading state |
| missing-error-boundary | Route layouts without a matching error.tsx |
| missing-transaction | Multiple Prisma writes without $transaction |
| redirect-in-try-catch | redirect() inside try/catch — Next.js redirect throws, catch swallows it |
| missing-revalidation | Server actions with DB mutations but no revalidatePath |
| missing-useeffect-cleanup | useEffect with subscriptions/timers but no cleanup return |
| hydration-mismatch | window/Date.now()/Math.random() in server component render path |
| Rule | What it checks |
|------|----------------|
| no-sync-fs | readFileSync in API routes |
| no-n-plus-one | Database calls inside loops |
| no-unbounded-query | .findMany() / .select('*') with no limit |
| no-dynamic-import-loop | import() inside loops |
| server-component-fetch-self | Server components fetching their own API routes |
| missing-abort-controller | Fetch/axios calls without timeout or AbortController |
| Rule | What it checks |
|------|----------------|
| ai-smells | any types, console.log, TODO comments piling up |
| placeholder-content | Lorem ipsum, example emails, "your-api-key-here" left in production code |
| hallucinated-api | .flatten(), .contains(), .substr() — methods AI invents |
| stale-fallback | localhost:3000 hardcoded in production code |
| comprehension-debt | Functions over 80 lines, deep nesting, too many parameters |
| codebase-consistency | Mixed naming conventions across the project |
| dead-exports | Exported functions that nothing imports |
| use-client-overuse | "use client" on files that don't use any client-side APIs |
prodlint avoids common false positives:
/* */ are ignored@/, ~/, and tsconfig paths aren't flagged as hallucinated importsfix hints with remediation codeEach category starts at 100. Deductions per finding:
| Severity | Deduction | Per-rule cap | |----------|-----------|--------------| | critical | -8 | max 1 | | warning | -2 | max 2 | | info | -0.5 | max 3 |
Diminishing returns: after 30 points deducted in a category, further deductions are halved; after 50, quartered.
Weighted overall: security 40%, reliability 30%, performance 15%, ai-quality 15%. Floor at 0. Exit code 1 if any critical findings exist.
Add to .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
Posts a score breakdown as a PR comment and fails the build if below threshold.
| Input | Default | Description |
|-------|---------|-------------|
| path | . | Path to scan |
| threshold | 0 | Minimum score to pass (0-100) |
| ignore | | Comma-separated glob patterns to ignore |
| comment | true | Post PR comment with results |
| Output | Description |
|--------|-------------|
| score | Overall score (0-100) |
| critical | Number of critical findings |
Use prodlint inside Cursor, Claude Code, or any MCP-compatible editor:
Claude Code:
claude mcp add prodlint npx prodlint-mcp
Cursor / Windsurf:
{
"mcpServers": {
"prodlint": {
"command": "npx",
"args": ["-y", "prodlint-mcp"]
}
}
}
Ask your AI: "Run prodlint on this project" and it calls the scan tool directly.
Check any deployed website for AI agent-readiness — 14 checks covering emerging standards like llms.txt, TDMRep, AgentCard, AI-Disclosure, HTTP Signatures (RFC 9421), and more.
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
Or check your score interactively at prodlint.com/score.
prodlint is designed specifically for AI-generated code patterns. Every rule checks for production issues that AI coding tools consistently create — not style nits.
Suppress a single line:
// prodlint-disable-next-line secrets
const key = "sk_test_example_for_docs"
Suppress an entire file (place at top):
// prodlint-disable secrets
import { scan } from 'prodlint'
const result = await scan({ path: './my-project' })
console.log(result.overallScore) // 0-100
console.log(result.findings) // Finding[]
[](https://prodlint.com)
MIT
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
83
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
80
A Model Context Protocol (MCP) server for GitLab
Traction
No public download signal
Freshness
Updated 2d ago
Rank
74
Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Rank
72
An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)
Traction
No public download signal
Freshness
Updated 2d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"MCP"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_MCP",
"generatedAt": "2026-04-17T03:37:28.336Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "MCP",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "lint",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "linter",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "security",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "ai-code",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "vibe-coding",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "production-readiness",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "code-quality",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "code-scanner",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "next.js",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "react",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "typescript",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "static-analysis",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "cli",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "scanner",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "mcp",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "mcp-server",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "cursor",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "copilot",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "v0",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "bolt",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "windsurf",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "claude",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "github-action",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "eslint-alternative",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "devtools",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:MCP|unknown|profile capability:lint|supported|profile capability:linter|supported|profile capability:security|supported|profile capability:ai|supported|profile capability:ai-code|supported|profile capability:vibe-coding|supported|profile capability:production-readiness|supported|profile capability:code-quality|supported|profile capability:code-scanner|supported|profile capability:next.js|supported|profile capability:react|supported|profile capability:typescript|supported|profile capability:static-analysis|supported|profile capability:cli|supported|profile capability:scanner|supported|profile capability:mcp|supported|profile capability:mcp-server|supported|profile capability:cursor|supported|profile capability:copilot|supported|profile capability:v0|supported|profile capability:bolt|supported|profile capability:windsurf|supported|profile capability:claude|supported|profile capability:github-action|supported|profile capability:eslint-alternative|supported|profile capability:devtools|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Prodlint",
"href": "https://prodlint.com",
"sourceUrl": "https://prodlint.com",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T03:12:50.639Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "MCP",
"href": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-25T03:12:50.639Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "8 GitHub stars",
"href": "https://github.com/prodlint/prodlint",
"sourceUrl": "https://github.com/prodlint/prodlint",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-25T03:12:50.639Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mcp-prodlint-prodlint/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[]
Sponsored
Ads related to prodlint and adjacent AI workflows.