Your tokens define the system.
Maddox checks the code still agrees.
A hardcoded hex color, a duration that doesn't match a motion token, a component shipped without its disabled state, all things a design system quietly loses over time. Maddox scans real source code against your real tokens and posts what drifted on every pull request.
What it checks
Colors
Every hex literal in your source is matched against your @theme tokens by exact value, then by RGB distance for near-misses.
Motion
Durations and easings used in code are checked against your real motion tokens, duration against duration, ease against ease, never cross-compared.
Component states
An explicit contract you write, not inferred, that flags a component missing a state it's required to handle: disabled, loading, error, and more.
Component-state checking runs against a contract you write yourself, a JSON file naming which states each kind of component must cover. Maddox confirms the state is referenced in the file; it doesn't yet verify it renders correctly, that's a static source check, not a visual one.
How it runs
Point it at your source
Give it your app directory and the CSS file holding your @theme block. No SDK install, no build step changes.
Run it locally or in CI
One CLI command. Wire it into a GitHub Action and get a drift report posted as a PR comment on every change.
See it on the dashboard
Every scan uploads its findings: file, line, severity, and the nearest token, so drift is traceable back to the exact commit that caused it.
Pricing
Free
CLI scans and dashboard history for a single project. No card required.
Pro
Unlimited projects, CI Action, and PR drift reports.