Skip to content

Architecture

VibeCode QA is a single zero-config CLI. It detects your stack, runs each check in isolation, folds the results into one weighted score, and emits a report. Everything runs locally — nothing is uploaded unless you pass --upload.

The scan pipeline

flowchart TD
  A[CLI entry] --> B[Detect stack and workspace]
  B --> C{Monorepo?}
  C -->|yes| D[Resolve packages<br/>pnpm · turbo · nx · melos]
  C -->|no| E[Single source root]
  D --> F[Run 34 checks]
  E --> F
  F --> G[Per-check score 0–100]
  G --> H[Weighted composite]
  H --> I[Grade A–F + trend vs history]
  I --> J[Terminal · HTML · JSON · SARIF · badge]

Each check is an independent runner that takes the project root and returns a CheckResult (score, grade, issues, timing). A crash in one runner is contained — it's recorded as errored and the scan continues.

Tool delegation

Where a best-in-class tool exists, VibeCode QA delegates to it when it's available and falls back to a built-in implementation otherwise — so it always works with zero setup, but gets sharper when you opt in.

flowchart LR
  subgraph Secrets
    S1[gitleaks] -.fallback.-> S2[14 regex patterns]
  end
  subgraph Duplication
    D1[jscpd CLI] -.fallback.-> D2["@jscpd/core engine<br/>+ our tokenizer"]
  end
  subgraph Architecture
    A1[dependency-cruiser] -.SFC/monorepo.-> A2[built-in resolver]
  end
  subgraph Dead code
    K1[Knip] -.fallback.-> K2[skip]
  end
  subgraph React / a11y
    R1[eslint plugins] -.fallback.-> R2[built-in heuristics]
  end

The duplication fallback is notable: it runs jscpd's own @jscpd/core Rabin-Karp engine over a lightweight tokenizer we ship, giving mature maximal-clone detection without bundling jscpd's 2.5 MB language-grammar tokenizer. See Tool delegation.

How the score is built

flowchart LR
  F[Foundations 23%] --> SUM([Σ check × weight])
  Q[Quality 26%] --> SUM
  T[Testing 15%] --> SUM
  AR[Architecture 9%] --> SUM
  SEC[Security 16%] --> SUM
  AI[AI Readiness 11%] --> SUM
  SUM --> SCORE[Composite 0–100]
  SCORE --> GRADE[Grade A–F]

Weights sum to 100. The five AI Analysis checks are weight 0 — they surface findings without affecting the score. Full method on the Scoring page.

Output formats

Format Flag Use
HTML report (default) Multi-page report in .vibe-check/report/
JSON --json Machine-readable; CI and tooling
SARIF --sarif GitHub Code Scanning / Security tab
Badge --badge shields.io-style SVG
Markdown --markdown Paste into a PR or wiki

See the CLI reference for every flag.