tl;dr
The things a design system hasn't decided yet, written down before anyone builds on it.
When you document a design system or hand it to agents. You get an honest list of what's missing, each gap with an owner.
Why
When I documented a company website’s design system, the most useful page turned out to be the list of what wasn’t there yet. No design owner, no accessibility target, buttons drawn as static frames, spacing and radius not tokenised.
Writing it down stopped people, and agents, from treating the gaps as decisions. The team took the list under consideration, and it gave everyone the same picture of where the system stood.
It also made the build or adopt call easy. We adopted shadcn/ui, an open-source component library, instead of drawing every variant in Figma. It was the faster way forward, and the Figma side only had to match it.
How to use it
- Run it on the system as it is today, not as it's planned.
- Write every unchecked item into the docs as an open item, with an owner and a date.
- Link the open items from DESIGN.md or the README, so agents read them too.
The drop: Design System Audit
Checks to review work against
## Design system audit
### Ownership
- [ ] A named design owner, and who approves changes
- [ ] A way to ask for a new component or token
### Accessibility
- [ ] A written target (for example WCAG 2.2 AA, the common web accessibility standard)
- [ ] Contrast checked for every text and background token pair
- [ ] Focus styles defined as tokens
### Tokens
- [ ] Colour, type, spacing and radius are all tokens; anything still hard-coded is listed
- [ ] Raw values (primitives) and named roles (semantic tokens) are separate, and components use only the named roles
- [ ] Every semantic token has a one-line description
### Components
- [ ] Components are real components with variants, not static frames
- [ ] Every component has its states (hover, focus, disabled, error, loading), or the missing ones are listed
- [ ] Build or adopt is decided for each component family, with the reason
### Docs
- [ ] Docs link to the source tokens and components instead of copying values
- [ ] Open items are listed where agents read them (DESIGN.md or README)What you get
Run on the design system of this site, mlynarz.com.
Design system audit: mlynarz.com
Ownership
[x] A named design owner, and who approves changes. Dawid owns and approves.
[ ] A way to ask for a new component or token. Not written down.
Accessibility
[ ] A written target. Not stated. Suggest WCAG 2.2 AA.
[ ] Contrast checked for every text and background token pair. Only the danger colour has a logged ratio.
[x] Focus styles defined as tokens. --color-focus.
Tokens
[x] Colour, type, spacing and radius are all tokens. Stylelint blocks raw values.
[x] Primitives and semantic tokens are separate, components use semantic only.
[ ] Every semantic token has a one-line description. Comments cover groups, not each token.
Components
[x] Real components with variants. Astro components, BEM modifiers.
[ ] Every component has its states. Buttons have no loading state.
[x] Build or adopt decided. Built, no framework.
Docs
[x] Docs link to the source. /styleguide renders the real components.
[x] Open items listed where agents read them. CLAUDE.md and DECISIONS.md.
Score: 9 of 14. Fix first: token descriptions, contrast pairs, an accessibility target.