Express, Hono, Fastify, Cloudflare Workers, serverless functions. What VibeCode QA checks and which tools power each analysis.
npx @vibecodeqa/cli
npx @vibecodeqa/cli init # creates .github/workflows/vibecodeqa.yml npx @vibecodeqa/cli fix # auto-fix lint issues + show fix suggestions
Auto-detects: TypeScript/JavaScript, test runner, linter, package manager, monorepo workspaces.
| Pattern | CWE | What It Catches |
|---|---|---|
| SQL Injection | CWE-89 | Template literals in query/prepare/execute calls |
| Command Injection | CWE-78 | child_process.exec with string args (prefer execFile) |
| SSRF | CWE-918 | fetch() with user-supplied URLs |
| Path Traversal | CWE-22 | readFile/writeFile with user input in path |
| Prototype Pollution | CWE-1321 | Object.assign/spread from req.body/params |
| Weak Crypto | CWE-330/328 | Math.random for tokens, MD5/SHA1 for hashing |
| localStorage in auth | CWE-922 | Storing tokens/secrets in client-side storage |
| Cookie Security | CWE-1004/614 | document.cookie without HttpOnly, Set-Cookie without Secure |
For deeper security analysis, add semgrep in CI/CD — it does proper data-flow tracking.
| Pattern | Why It Matters |
|---|---|
| Empty catch blocks | Errors silently disappear — users see broken behavior with no logs |
| Floating promises | Unhandled rejections crash Node.js 15+ in production |
.catch(() => {}) | Swallowed errors — at least log them for debugging |
| JSON.parse without try-catch | Malformed request body crashes the request handler |
| while(true) without break | Infinite loop freezes the event loop — all requests hang |
| process.exit() in library code | Libraries should throw, not exit — callers can't recover |
| Missing unhandledRejection handler | Uncaught promise rejections crash the server in Node 15+ |
The secrets checker verifies:
# Core pnpm add -D typescript @biomejs/biome vitest # Security brew install gitleaks # secret detection (800+ patterns) # pip install semgrep # optional: deeper SAST in CI # Supply chain # pnpm add -D socket # optional: pre-install malware detection # Monitoring (detected by best-practices check) pnpm add -D @sentry/node # error tracking
Workers are detected via wrangler.toml. VibeCode QA:
tsc --noEmit for type checkingCommon pattern: packages/api + packages/sdk + packages/cli. VibeCode QA:
# .github/workflows/quality.yml
name: Code Quality
on: [pull_request]
permissions: { contents: read }
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx @vibecodeqa/cli --ci --fail-under 70 --sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: .vibe-check/report.sarif