designesy.org/maturity 24 questions about 6 minutes computed in your browser mapped to v0.4.7
Design compliance maturity Place your design system on six axes, four stages each, in 24 questions. Most systems reach stage four on one axis and stay at stage one on another; the matrix shows which.
Axis 1 of 6 · tokens, spec · 13% of contract
Token discipline Are design tokens defined, structured, and enforced?
01 How are your design tokens defined?
1 Hardcoded values in CSS, no custom properties 2 Some CSS custom properties for colors/spacing 3 Structured token system (primitive → semantic → component layers) 4 W3C DTCG format tokens with $type, $value, $description
02 Do you ship a --paper or root surface token at :root?
1 No, backgrounds are raw hex or rgb values 2 Yes, a single --bg or --color-bg variable 3 Yes, with a full surface elevation scale (paper → surface → elevated) 4 Yes, with structured OKLCH color space + component-level tokens
03 How is token drift prevented?
1 It isn’t: developers hardcode values as they go 2 Code review catches raw values manually 3 Stylelint or CSS linter flags raw hex/magic numbers 4 CI gate blocks PRs that introduce off-token values
04 Do you serve a machine-readable token file (JSON, W3C DTCG)?
1 No, tokens live only in CSS 2 A JSON export exists but is generated manually 3 A build step emits tokens.json from source of truth 4 W3C DTCG tokens.json served at a stable URL + dtcg.json endpoint
Previous axis Answer 4 more
Maturity matrix0 of 24 answered
Token discipline 0 of 4 Motion consistency 0 of 4 Accessibility readiness 0 of 4 Platform fit 0 of 4 Identity and copy 0 of 4 Verification maturity 0 of 4 1 ad-hoc 2 emerging 3 systematic, 4 verifiedaxis = average answer × 25 Method Answer 24 questions Four per axis, each answer a stage from 1, ad-hoc, to 4, verified.
Score each axis The average answer times 25, so a full row of fours reads 100.
Read the matrix Six axes side by side on one scale. The uneven rows are the finding.
Check it for real The 45-check engine measures the live site against the same v0.4.7 contract.
axis = average answer × 25overall = mean of the answered axesstage = the average answer, rounded to the nearest whole stage