Open source · pre-alpha

Thousands of diagnostics, one quiet dashboard.

lintscope turns ESLint, Biome, and OXC output into a fast, local-first UI you can actually browse — plus copy-paste React components to build your own.

MIT licensed · Local-first · No telemetry — your code never leaves your machine

Live · running on sample data
localhost:7420/studio
lintscopeacme-web

Diagnostics

8 of 8 shown

Group by
src/lib/api.ts3
warningno-unused-varsESLint

'transformer' is assigned a value but never used.

api.ts:14:7
errorno-consoleESLint

Unexpected console statement.

api.ts:38:5
erroreqeqeqESLint
Auto-fixable

Expected '===' and instead saw '=='.

api.ts:52:9
src/components/Button.tsx2
errorno-debuggerESLint
Auto-fixable

Unexpected 'debugger' statement.

Button.tsx:27:5
src/hooks/use-user.ts2
warningreact-hooks/exhaustive-depsESLint

React Hook useEffect has a missing dependency: 'userId'.

use-user.ts:23:6
src/index.ts1
warninglint/style/useConstBiome
Auto-fixable

This 'let' is never reassigned. Use 'const' instead.

index.ts:3:1

Built for the linters you already run

ESLintBiomeOXCStylelinttscsoon
How it works

Three steps from terminal soup to a clean view.

  1. 01

    Run it in your repo

    lintscope finds every linter configured in your workspace — ESLint, Biome, OXC — runs them, and merges the output into one normalized report.

  2. 02

    Open the dashboard

    Your browser opens to a local dashboard wired straight to the CLI over localhost. Your code and diagnostics never leave the machine.

  3. 03

    Triage, fast

    Filter by rule, severity, or file. Jump to source with inline previews. See exactly what is auto-fixable at a glance.

shadcn registry

Or just take the components.

Every piece of the dashboard is a shadcn-installable component. Add one to your own app — no lintscope dependency, just the source, typed against @lintscope/schema.

  • SeverityBadge

    zero deps

    A compact pill for error / warning / info severity.

    npx shadcn add https://lintscope.vercel.app/r/severity-badge.json
  • DiagnosticCard

    needs severity-badge

    One diagnostic — rule link, exact location, fixability indicator.

    npx shadcn add https://lintscope.vercel.app/r/diagnostic-card.json
  • DiagnosticList

    needs diagnostic-card

    A virtualized list — holds 60fps at 100k+ diagnostics.

    npx shadcn add https://lintscope.vercel.app/r/diagnostic-list.json
  • LintDashboard

    needs diagnostic-list

    The whole thing: stat header + virtualized list. Drop in a LintReport.

    npx shadcn add https://lintscope.vercel.app/r/lint-dashboard.json
One diagnostic, up close

Every detail the linter gave you — legible.

Rule id with a link to its docs, the exact line and column, the source linter, and a clear marker when a fix is available. No truncation, no scrolling a log.

warningno-unused-varsESLint

'transformer' is assigned a value but never used.

api.ts:14:7

Stop scrolling terminal output.

One command opens a dashboard for whatever linters your project already runs.

npx lintscope studio
Star it on GitHub →