Design system doc spec 0.23.0
DSDS is a schema for design system documentation. It's open, portable, and (debatedly) simple.
Design system documentation is better when it's portable, structured, and connected. DSDS works to make all three possible.
Draft Specification: This is a draft. It can still change—and has done so. No standards body has endorsed it. We welcome feedback and contributions on GitHub.
- Latest version: GitHub repo
- Feedback: GitHub Issues
#
One entry, three readersWrite a component's guidance once, in YAML. A docs site renders it for people, an agent reads it before writing code, and a linter checks it for gaps. Here's one entry:
#
What a docs site showsThe sections written for people (
Button
Triggers an action on the current screen.
When to use
- Should: Use for an action that happens in place, like saving a form.
- Should not: Avoid for navigation. A link tells people they're going somewhere.
How to use
- Must: Label the button with the action it performs, like "Save draft".
- Should: Keep to one primary button per screen.
#
What an agent readsAgents can be given their own specific documentation with a
#
What the linter reportsThe labeling rule is a
#
Connected documentationA design system is a set of connected pieces. A dialog is built from a button, a button uses color tokens, and many components follow the same rules. DSDS lets things connect, so those links are data rather than copy/paste-waste.
Because the links are data, a docs site can show what's related, an agent can check what a change would affect, and a rule shared by many components is written once and reused instead of copied.
→ common/ref lists every kind of link, what it means, and where it goes.
#
InteroperabilityNo open standard covers design-system documentation end to end. The formats that do exist each cover one layer well — DTCG owns token values, CEM owns a component's generated API, CSF owns a story, a test runner owns whether a rule actually holds.
DSDS sits above them and documents meaning and usage. If another format owns a fact, DSDS points at it rather than restating it — which is why a token entry has a
→ Interoperability covers every format DSDS is built to sit alongside, the field that points at each, and a worked example for all of them.
#
For humans and agentsA DSDS document has two readers: people and AI agents. Both are served by the same file. Every section carries a
for: human orfor: all : Everything a person needs—definitions, guidelines, steps, freeform narrative. Agents read these too.for: agent : Agent-only notes—for the times when basic documentation can't get through those thick titanium skulls. This allows you to write documentation specifically for agent misunderstandings, hallucinations, or agent-specific tasks.
Write for people by default and use
#
How a document is builtA document is a base —
Design systems have different documentation needs. This schema can be as simple or as detailed as needed. Every entry's structured docs live in one
Any entry kind can use any section kind — nothing restricts which goes with which.
#
Principles- Documentation only. This schema is focused on the how, when, and why of a design system. That's it. If a better source of truth exists elsewhere, the schema links rather than restating.
- A consistent schema pattern. Each part of the schema follows the same structure, so writing one part teaches you the rest.
- No learning cliffs. It's designed to have a low barrier of entry. But it can grow with you. DSDS'
$extensions let you add on to the schema when you actually need it. - Everything can link to everything else. A design system is a network of connections; the documentation reflects that.
- There's always a way out. The schema has opinions, but always a way to step outside them.
#
Next stepsNew to DSDS? Start with the Quick Start Guide — document structure, entry kinds, the section system, and examples you can copy.
For the full schema reference, see Schema. For what it means to conform to the spec and every rule the validator enforces, see Conformance. For the JSON Schema source, see
#
Contributors- PJ Onori: Current maintainer.
- Cody Clark: the CEM interop example, the nested/aliased DTCG interop example, and the two token-description lint rules (
DSDS-13 andDSDS-16 ). - Suleiman Ali Shakir: the README validate command and lockfile, and a stale version string fix.
- Mykhaylo Ryechkin: the agent skills (
.agents/skills/ ) andscripts/generate/sync-skill-versions.js , and keeping them current with the schema. - Mark Toadvine: the
shared-a11y WCAG 2.2 accessibility guidelines in the starter kit. - Chris Strahl: real API identifier shapes on a trait
id (apiId ), the widenedcombo target, and theDSDS-14 same-as false positive fix. - isabelthedesigner: the anti-pattern for bare WCAG conformance claims.
- Afyia Smith: the
owner /reviewed andorigin metadata schemas.