ProdKitSAFE
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
ProdKit is a deterministic local CLI that analyzes an existing web application repository and generates a production-readiness report or a remediation plan.
It is designed for early-stage and AI-generated apps where architecture and security quality can vary significantly.
ProdKit is read-only: it never modifies the target repository.
What ProdKit does
ProdKit inspects a target project and detects:
- Frontend framework signals
- Backend framework signals
- Database technologies
- Package manager
- Docker and Docker Compose presence
- Environment file and env-usage hygiene
- Authentication and authorization signals
- Tenant/organization signals
- GDPR/privacy signals
- Security hardening signals
- Upload exposure signals
- Billing signals: payment processors declared in any manifest this reads
- Observability/logging signals
- Background jobs/queue signals
- Deployment readiness signals
Then it builds a structured production-readiness report with:
- Overall score (0-100), or
nullwhere too little of the repository could be read
to characterise it
- Maturity level (
inconclusive,prototype,early,partial,production_ready) - Findings grouped by category
- Critical issues and warnings
- Passed checks
- Suggested next steps
- Technical evidence for each finding — a file and a line you can open, not a summary
Two things the report says about its own reading, because a finding is only worth what the reading behind it is:
- How deeply each language was read. A syntax tree answered the question, or a
keyword search did, or the language was not read at all — and the report names which, per language. The optional typescript peer dependency decides whether JavaScript and TypeScript are parsed; without it they are searched as text, and the report says so rather than claiming otherwise.
- Which questions could not be asked. A check whose answer depends on a reader that
could not run comes back unknown, never passed and
af8a43497b3aOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add vue-app --env AUTH_GITHUB_ID=${AUTH_GITHUB_ID} --env AUTH_GITHUB_SECRET=${AUTH_GITHUB_SECRET} --env DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY} --env JWT_SECRET=${JWT_SECRET} -- npx -y [email protected]{
"mcpServers": {
"vue-app": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"AUTH_GITHUB_ID": "${AUTH_GITHUB_ID}",
"AUTH_GITHUB_SECRET": "${AUTH_GITHUB_SECRET}",
"DJANGO_SECRET_KEY": "${DJANGO_SECRET_KEY}",
"JWT_SECRET": "${JWT_SECRET}"
}
}
}
}Exposed tools (4)
4 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
analyze_project | read | |
compare_profiles | read | |
list_profiles | read | |
plan_remediation | read |
Trust audit
SAFEgrade B · trust 85/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (8 observation(s))
- Network
- declared (1 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (14)
.env
.eslintrc.cjs
.env
import { readTextFileSafe } from '../../utils/readTextFileSafe';import { readTextFileSafe } from '../../utils/readTextFileSafe';import { readTextFileSafe } from '../../utils/readTextFileSafe';import { readTextFileSafe } from '../../utils/readTextFileSafe';import { readTextFileSafe } from '../../utils/readTextFileSafe';const claims = JSON.parse(atob(payload))
commander, fast-glob, zod, @modelcontextprotocol/sdk, @types/node, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, eslint
@nestjs/core, bcrypt, googleapis, stripe
antd, react
express
typescript, vitest
Gates applied: no_behavioural_pass.
af8a43497b3afull audit observations/trust-audit/mcp-server/denisbilli__prodkit.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | af8a43497b3a | SAFE | B | 85 | first audit |
Questions
What tools does @produtype/core expose?
4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is @produtype/core safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (85/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does @produtype/core need?
It reads AUTH_GITHUB_ID, AUTH_GITHUB_SECRET, DJANGO_SECRET_KEY, JWT_SECRET, KEYS, NEXT_PUBLIC_SUPABASE_ANON_KEY, OPENAI_API_KEY, SECRET_KEY, SESSION_KEY, SESSION_SECRET, STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does @produtype/core run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as vue-app at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (af8a43497b3a), read on 2026-10-11. The repository is watched and re-audited when it changes.