AI writes fast. Deslint keeps it clean.
AI ships design drift, dark-mode gaps, and WCAG failures at the speed of autocomplete. Deslint catches them in your editor, your CI, and every PR — without ever sending your code to a cloud.
Privacy by architecture
Three zeros nobody else can claim
Security and legal teams buy Deslint because there is nothing to review: no vendor, no contract, no cloud, no LLM, no data. The architecture is the privacy policy.
Your code never leaves your machine
No SaaS roundtrip. No upload step. No API key in a CI secret. Deslint runs as an ESLint plugin and a local CLI — same binaries, offline-capable, air-gap friendly.
No analytics, no phone-home
Deslint does not collect usage, file paths, rule triggers, machine IDs, or anonymous counts. There is nothing to opt out of because there is nothing being collected in the first place.
Deterministic static analysis
Every rule is pure AST pattern matching — no LLM, no embedding, no fuzzy judgment. Same input always produces the same output, which is the only way compliance evidence is defensible.
Visual proof
Before and after, rendered in your browser — not a screenshot.
Four common failures AI code generators ship — dark mode, responsive reflow, contrast, and the invisible accessibility gaps that only show up in audits. Each one rendered live, before and after Deslint fixes it.
Dark mode · flipped
AI wrote hardcoded colors. The preview looks fine. Flip to dark mode and the page breaks.
deslint/dark-mode-coverageWCAG 1.4.3 · 1.4.11Auto-fix: adds dark: variantsnpx deslint scan on your repo to see yours.The self-correction loop
AI writes the code. Deslint tells it exactly what to fix. Over stdio, in milliseconds, with zero cloud.
The @deslint/mcp server speaks the Model Context Protocol over stdio — the same transport Cursor and Claude Code already use. Your assistant calls analyze_file and analyze_and_fix, gets back structured violations with rule IDs and autofixes, and corrects its own output before you even see it.
analyze_file · analyze_project · analyze_and_fix
initialize + list + analyze + fix
stdio transport · no network · no LLM
One engine, everywhere you work
Same rules in your editor, CI, and PR
Configure Deslint once in your flat config. Every surface — IDE, terminal, GitHub Action, MCP agent — runs the same deterministic rule engine against the same config. No duplicated rules, no divergent results, no "it passed locally" drift.
01 · In your editor
Squiggles as you type
ESLint v10 flat config plugin. Drop into any existing setup — no new toolchain, no peer-dep war. Errors and autofixes appear in Cursor, VS Code, WebStorm, and every ESLint-aware IDE instantly.
- React, Vue, Svelte, Angular, HTML
- Autofix for color + spacing drift
- Every rule try/catch wrapped — never crashes lint
#1a5276 — use bg-primary insteadbg-[#1a5276] with bg-primary02 · In your terminal
Design Health Score for the whole codebase
One command scans every file, produces a 0–100 Design Health Score, and generates a self-contained HTML compliance report you can email to legal or attach to a SOC 2 audit.
- deslint scan / fix / compliance / trend
- Per-category scores + violation breakdown
- WCAG 2.2 + 2.1 AA report, no external assets
03 · In your pull requests
Block drift before it lands
GitHub Action runs the same engine as your local scan. Posts inline review comments with rule ID, WCAG mapping, and a commit-ready suggested change. Fails the check when the score drops below your threshold.
- Inline review comments on the offending line
- Every violation linked to its WCAG criterion
- Configurable gate: min-score, per-category, fail-on a11y
text-[13px] breaks the type scale. Use text-sm (14px) or text-xs (12px).What it catches
The bugs that slip past type checkers and tests
AI code compiles. It passes your tests. It renders. And then a designer opens the screen and finds six shades of blue, inconsistent spacing, and a contrast ratio that fails an audit. Deslint catches all of it before the commit lands.
Color drift
Arbitrary hex values, `text-[#abc]` escapes, off-palette tokens. Maps every color back to your Tailwind config or W3C tokens.
no-arbitrary-colorsno-inline-stylesSpacing inconsistency
Off-scale padding, margins, and gaps. Enforces your 4/8px grid — no more `p-[13px]` creeping in.
spacing-scale-consistencyno-arbitrary-valuesTypography scale breaks
Font sizes outside your type scale, mixed weights, arbitrary line heights — hierarchy that reads like a ransom note.
typography-scaletypography-hierarchyBroken responsive layouts
Missing mobile breakpoints, desktop-only flex rows, fixed widths. Catches layouts AI forgot to make responsive.
responsive-requiredno-fixed-dimensionsAccessibility violations
Missing alt text, bad contrast, label-less inputs, no focus states, heading skips. Mapped to WCAG 2.2 + 2.1 AA criteria.
image-alt-texta11y-color-contrastform-label-requiredDark mode gaps
Hardcoded light-only colors, backgrounds without `dark:` variants, text that vanishes on a dark theme.
dark-mode-requiredThe gap nobody else fills
Deslint is the only tool that catches design drift, WCAG failures, and framework drift in one pass
Each of these tools does one slice well. eslint-plugin-jsx-a11y is React-only accessibility. eslint-plugin-tailwindcss stalled on Tailwind v4. SonarQube ships code quality to a server. CodeRabbit is an LLM. Deslint is the single local-first, deterministic gate that covers every row.
| Capability | DeslintThis tool | jsx-a11yReact a11y | tailwindcssESLint plugin | SonarQubeServer | CodeRabbitAI reviewer |
|---|---|---|---|---|---|
Design-system drift Arbitrary colors, spacing, typography | |||||
WCAG 2.2 + 2.1 AA mapping Every violation → legal criterion | |||||
Framework-agnostic React, Vue, Svelte, Angular, HTML | |||||
ESLint v10 flat config First-class, no legacy shim | |||||
Tailwind v3 AND v4 Both class generations supported | |||||
Local-first, zero cloud No SaaS roundtrip, no API keys | |||||
Deterministic — no LLM Same input → same output, every time | |||||
ADA Title II compliance report Self-contained HTML, audit-ready | |||||
Autofix Committable suggested change |
Accessibility, treated as a legal requirement — not a checkbox
The 2024 ADA Title II rule locks public entities to WCAG 2.1 Level AA. Every criterion Deslint statically detects is in that set, so a passing scan doubles as real compliance evidence.
Every violation links to the W3C specification. The compliance report is a single self-contained HTML file — email it to your counsel, attach it to a SOC 2 audit, or drop it into a Jira ticket.
13 WCAG criteria statically detected today. Everything Deslint cannot verify is flagged as "manual review required" — no false all-clear.
1.1.1Non-text ContentA1.3.1Info and RelationshipsA1.4.3Contrast (Minimum)AA1.4.4Resize TextAA1.4.10ReflowAA1.4.11Non-text ContrastAA1.4.12Text SpacingAA2.4.4Link Purpose (In Context)A2.4.6Headings and LabelsAA2.4.7Focus VisibleAA3.1.1Language of PageA3.3.2Labels or InstructionsA4.1.2Name, Role, ValueA
5 Level A · 8 Level AA. Conformance is computed "at-or-below": one Level A failure drops the whole claim to Not Met.
Framework-agnostic
Same rules, every framework you already ship
Deslint parses the actual template — JSX, Vue SFC, Svelte, Angular, HTML — not a stringly-typed regex. One config, one rule set, zero per-framework plugins.
| Framework | Design system | Accessibility | Autofix |
|---|---|---|---|
React / JSX TSX, JSX, className / clsx / cva | |||
Vue SFC .vue templates via vue-eslint-parser | |||
Svelte .svelte via svelte-eslint-parser | |||
Angular Inline + external templates | |||
HTML Plain .html via @html-eslint/parser |
30-second install
Three steps from npm install to a Design Health Score
No account. No API key. No cloud signup. Everything runs against your existing ESLint setup the moment you install the package.
Install
Add the ESLint plugin to your existing project. No new toolchain, no separate config file, no peer-dep war.
npm install -D @deslint/eslint-pluginConfigure
Drop Deslint into your flat config alongside whatever ESLint rules you already run. One import, one recommended preset.
import deslint from '@deslint/eslint-plugin'; export default [ deslint.configs.recommended,];Run
Errors appear in every ESLint-aware editor instantly. Ship the same rules to CI and to every pull request with no duplication.
# In your editor — squiggles in Cursor, VS Code, WebStorm, …# In your terminal —npx eslint . --fix # Full Design Health Score + audit-ready HTML reportnpx deslint complianceShip AI code that your designers and auditors
will actually approve
Drop into any Tailwind project. Works with React, Vue, Svelte, Angular, and HTML. Local, deterministic, zero cloud.