STATIC AUDIT · NO AI REQUIRED

Find the
fundamentals
you forgot

62 deterministic rules for shadcn-vue and shadcn-nuxt applications. Evidence on every finding. Agent-ready output. It never starts your app, edits a file, calls a model, or uploads your source.

npx shadscan-vue
shadscan-vue v0.3.1
my-app · nuxt · pnpm

Score 66/100 · Grade D

FOUNDATION     █████████████████░░░ 84
INTERACTION    ██████████░░░░░░░░░░ 52
STATES         █████████████████░░░ 84
ACCESSIBILITY  ████████████░░░░░░░░ 61
FORMS          ████░░░░░░░░░░░░░░░░ 18
POLISH         ████████████████░░░░ 78

Findings

  FAIL images-have-alt (accessibility, error)
    <img> is missing alternative text.
      app/pages/index.vue:23
      fix: Add an alt attribute describing the image.

FIXES

Provable failures. They cost points.

ADVISORIES

Lower confidence. They never cost points.

PASSES

Verified against your source.

N/A

Excluded from the denominator entirely.

WHAT IT CHECKS

Foundation

20

9 rules · 27 points

  • shadcn-config-present
  • theme-provider-configured
  • metadata-configured

Interaction

20

9 rules · 26 points

  • theme-hotkey-present
  • command-menu-present
  • command-menu-hotkey-present

States

20

9 rules · 31 points

  • toast-provider-present
  • toast-provider-mounted
  • toast-runtime

Accessibility

20

15 rules · 40 points

  • html-lang-present
  • images-have-alt
  • icon-buttons-have-labels

Forms and Data Entry

10

8 rules · 20 points

  • forms-have-labels
  • field-errors-rendered
  • invalid-fields-associated-with-errors

Production Polish

10

12 rules · 22 points

  • no-starter-copy
  • metadata-title-description-complete
  • social-preview-present

01

SCAN

Parses SFC templates and TypeScript directly. Never starts your app.

02

EVIDENCE

Every finding cites a file and a line. Nothing is asserted without proof.

03

HANDOFF

Emit a prompt an agent can act on, or a JSON report a pipeline can gate.

SUPPORTED

  • shadcn-vue

    Vue 3 + Vite, explicit imports

  • shadcn-nuxt

    Nuxt 4, auto-imported components

  • reka-ui

    Primitive provenance is understood

GATE YOUR PIPELINE

- run: npx shadscan-vue --fail-under 70

The threshold also fails when the score is unassessed or coverage was partial, so a silently-skipped scan can never pass a gate.

CREDIT WHERE DUE

A Vue and Nuxt port of shadscan by TheOrcDev, built with the original author's permission.