The DSDS schema uses three directories plus a root schema:
| Directory | Contents |
|---|---|
| Shared primitives used across all schemas — richText, statusObject, link, example, extensions, metadata, useCases | |
| Entity type schemas — component, token (including tokenGroup), theme, style, pattern | |
| Document block type schemas — guideline, anatomy, api, variant, state, design-specifications, accessibility, purpose, scale, principle, motion, content, interaction, plus the scoped union (document-blocks.schema.json) |
A DSDS file is a JSON object with a
| Property | Type | Required | Description |
|---|---|---|---|
| No | URI reference to the DSDS JSON Schema for validation. | ||
| Yes | The version of this spec the document conforms to. MUST be | ||
| No | System-level metadata about the design system. See Metadata. | ||
| No | System-level purpose describing what the design system is for and when to adopt it. See Root Purpose. | ||
| No | System-level best practices that apply across the whole design system. See Root Best Practices. | ||
| Yes | One or more documentation groups. See Documentation Groups. | ||
| No | Declares that this document extends another DSDS document — typically a core design system. See Extends. | ||
| No | Vendor-specific extensions. See Extensions. |
Each entry in
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Human-readable name of the collection (e.g., | ||
| No | Description of the collection. | ||
| No | Component entities. Each item must have | ||
| No | Token group entities (which contain tokens via | ||
| No | Theme entities. Each item must have | ||
| No | Style entities. Each item must have | ||
| No | Pattern entities. Each item must have | ||
| No | Vendor-specific extensions. |
Every entity carries a
| Array | Entity | Defined in | |
|---|---|---|---|
| A reusable UI component | |||
| — | A single design token (nested inside token groups via | ||
| A nested group of related tokens (recursive) | |||
| A named set of token value overrides | |||
| A macro-level visual style (foundation) | |||
| A broad interaction pattern |
Each typed array accepts only its matching entity type. A documentation group uses as many or as few arrays as needed:
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The name of the design system (e.g., "Carbon", "Gestalt", "Spectrum"). | ||
| No | The version of the design system. | ||
| No | The organization that maintains the system. | ||
| No | URL to the system's docs site. | ||
| No | SPDX license identifier or license URL. |
The optional
| Property | Type | Required | Description |
|---|---|---|---|
| No | A high-level description of the design system's purpose and goals. | ||
| No | An array of use-case entries describing positive and negative adoption scenarios. |
Each use-case entry has this shape:
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The scenario being described. | ||
| Yes | |||
| No | For negative entries, a recommended option with |
The optional
Each
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The actionable guidance statement. MUST be concrete and unambiguous. | ||
| Yes | Why this guidance exists. MUST NOT be a restatement of the guidance. | ||
| No | Enforcement level: | ||
| No | Discipline grouping (e.g., | ||
| No | URLs to external standards. Each entry has |
System-level vs. entity-level: The root
purpose andbestPractices properties describe the design system as a whole. They differ from the entity-levelpurpose andguideline document block types inside each entity'sdocumentBlocks array. Entity-level document block entries describe when and how to use a specific component, token, or pattern. System-level properties describe when and how to use the design system itself. Both levels follow the same structure but serve different audiences and scopes.
Every entity shares a common set of identity and metadata properties, plus a
These properties are on all entity types. Required fields differ by entity type — see the notes column and each entity section.
| Property | Type | Required | Notes |
|---|---|---|---|
| Yes | Entity type discriminator. | ||
| Yes | Machine-readable ID. Components, styles, patterns, and themes enforce | ||
| Varies | Human-readable name. Required on component, style, pattern, theme. Not present on token or token-group — the token name serves as the display name. | ||
| No | One-line plain-text summary for compact display. MUST NOT contain markup. | ||
| Varies | Description with CommonMark support. Required on component, style, pattern, theme. Optional on token and token-group. | ||
| Varies | Lifecycle status with optional per-platform readiness. Required on component, style, pattern, theme. Optional on token and token-group — when omitted inside a group, inherited from the parent. | ||
| No | The version in which this entity first shipped. | ||
| No | Freeform keywords for categorization and search. | ||
| No | Other names for search, migration mapping, and cross-referencing. | ||
| No | Classification within the system's taxonomy. | ||
| No | Typed document block objects. See Document block. | ||
| No | Agent-optimized context for efficient agentic consumption. See Agents. | ||
| No | Typed references to external resources and internal entities. See Links. | ||
| No | Declares that this entity extends a base entity in a parent system. Available on component and token entities. See Extends. | ||
| No | Vendor-specific extensions. See Extensions. |
A reusable UI element. Accepts component-scoped document block types (anatomy, api, variants, states, design-specifications) and all general document block types.
Required properties:
A single design token. Accepts general document block types only.
Required properties:
More properties:
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | DTCG-aligned token type (e.g., | ||
| No | URI or relative path to the W3C DTCG file that contains this token's authoritative definition. | ||
| No | Semantic category: |
DSDS does not duplicate token values or platform identifiers. The W3C Design Tokens Format file is the source of truth for values. Use the
Tokens have no
The
A nested group of related tokens. The
Required properties:
More properties:
| Property | Type | Required | Description |
|---|---|---|---|
| No | Inherited default for children that omit their own | ||
| No | Inherited default for children that omit their own | ||
| No | Recursive array of tokens and/or nested token groups. |
Like tokens,
A named set of token overrides that adapt the system to a specific context (color mode, density, brand variant). Accepts general document block types.
Required properties:
More properties:
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Array of token names that differ from the default in this theme. Only tokens that change need to be listed. | ||
| No | URI or relative path to the W3C DTCG file that contains this theme's authoritative token values. |
Each
A macro-level visual style (foundation) governing a domain like color, typography, spacing, elevation, motion, or content. Accepts style-scoped document block types (principles, scale, motion) and all general document block types.
Required properties:
Styles document base visual attributes like color and spacing, plus cross-cutting concerns like accessibility, motion systems, and content rules. The
A broad interaction pattern — a recurring, multi-component solution to a common UX problem. Accepts pattern-scoped document block types (interactions) and shared structural document block types (anatomy, variants, states) as well as all general document block types.
Required properties:
Patterns reference their participating components through the
The optional
| Property | Type | Description |
|---|---|---|
| One sentence stating the primary purpose. Agents use this to determine relevance without parsing the full description. | ||
| Hard rules with | ||
| Entries resolving confusion with similar entities. Each has | ||
| Known incorrect uses. Each has | ||
| Ready-to-use code examples. Each has | ||
| Semantic retrieval terms — synonyms, common query vocabulary, related concepts. |
Document blocks also accept the same optional
The
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Overall lifecycle status. See Status Values. | ||
| No | Platform-specific readiness. Keys are platform identifiers (e.g., | ||
| Conditional | Required when status is |
Status values MUST be lowercase kebab-case (pattern:
| Value | Meaning |
|---|---|
| Under development, not ready for use. | |
| Available but API may change without notice. | |
| Production-ready, changes follow semver. | |
| Scheduled for removal. |
Custom values are permitted (e.g.,
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Lifecycle status on this platform. | ||
| No | Version available on this platform. | ||
| Conditional | Required when status is | ||
| No | Notes about this platform's status. |
Document block entries are the core unit of structured docs in DSDS. Every piece of docs on an entity is a document block object with a
- guidelines, purpose, accessibility, examples, and content (general — all entity types)
- anatomy, API specs, variants, states, and design specifications (component-scoped)
- principles, scales, and motion definitions (style-scoped)
- interactions (pattern-scoped)
Each entity type accepts only the document block types relevant to it. The scoping rationale:
- Components get full structural docs. They are rendered UI elements with code-level interfaces, visual anatomy, configurable dimensions, interactive states, and measurable design specs.
- Patterns get structural docs without code-level details — they have visual layouts (anatomy), sub-types (variants), and states, but they are not single-component code interfaces. They do not accept
api ordesign-specifications . - Styles get domain-level docs — they govern a visual or cross-cutting domain through guiding principles, constrained value progressions (scales), and motion definitions.
- Tokens get only general document block types — they are atomic values with usage guidance but no visual structure or interaction behavior.
| Scope | Used by | Accepts |
|---|---|---|
| Component | component | anatomy, api, events, variants, states, design-specifications + general |
| Pattern | pattern | interactions, events, anatomy, variants, states + general |
| Style | style | principles, scale, motion + general |
| Token | token, token-group, theme | general only |
General (available on all entity types): guideline, purpose, accessibility, examples, content.
| Type value | Container property | Item type | Scope | Description |
|---|---|---|---|---|
| guidelineEntry | General | Actionable usage rules with rationale and enforcement levels. | ||
| useCases (whenToUse/whenNotToUse) | General | Scenario-driven guidance for when to use and when not to use an entity. | ||
| Named properties | various | General | Structured a11y specs — keyboard, ARIA, screen reader, contrast, motion. | |
| example | General | Visual/interactive demos — images, videos, code, URLs, values. | ||
| contentLabelEntry, localizationEntry | General | Recommended action labels and localization/i18n notes. | ||
| anatomyEntry | Component, Pattern | Visual structure broken into named parts with token references. | ||
| Named arrays | various | Component | Code-level interface — props, events, slots, CSS hooks, methods. | |
| eventEntry | Component, Pattern | Events emitted by the component — trigger conditions, payload shapes, DOM behavior, lifecycle. | ||
| variantEntry | Component, Pattern | Dimensions of variation with enumerated values. Optional exclusions. | ||
| stateEntry | Component, Pattern | Interactive states with triggers, token overrides, and previews. | ||
| Named properties | various | Component | Token inventory, spacing, sizing, typography, responsive behavior. | |
| principleEntry | Style | High-level guiding beliefs that shape decisions. | ||
| scaleStep | Style | Ordered progression of token values (spacing scale, type scale, etc.). | ||
| motionEntry | Style | Named easing curves with cubic-bezier functions and recommended durations. | ||
| interactionEntry | Pattern | Ordered steps in a pattern's interaction flow. |
Every document block type accepts an optional
These document block types are available on all entity types.
Documents actionable usage rules for an entity. Each item is a self-contained rule pairing guidance with a rationale. Guidelines tell the reader how to use the entity correctly after choosing it. For guidance on whether to use it at all, see Purpose.
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The actionable guidance statement. MUST be concrete and unambiguous. | ||
| Yes | Why this guidance exists. MUST NOT be a restatement of the guidance. | ||
| No | Enforcement level: | ||
| No | Discipline grouping (e.g., | ||
| No | Anatomy part this applies to (e.g., | ||
| No | URLs to external standards (e.g., WCAG success criteria). | ||
| No | Examples showing encouraged and discouraged approaches. | ||
| No | Freeform keywords. |
Enforcement levels align with RFC 2119 requirement levels:
| Level | RFC 2119 | Meaning |
|---|---|---|
| MUST | Non-compliance is a defect. | |
| SHOULD | Follow in most cases; exceptions require justification. | |
| MAY | Advisory context with no enforcement expectation. | |
| SHOULD NOT | Avoid unless justified. | |
| MUST NOT | Violations are defects. |
Documents what an entity is for — the concrete scenarios where it is the right choice and where a different entity fits better. Purpose document block entries help the reader decide whether to reach for this entity before they start using it.
The purpose document block type wraps the common
This uses the same
Documents structured accessibility specs. It captures machine-readable specs for:
- keyboard interactions
- ARIA attributes
- screen reader behavior
- focus management
- color contrast pairs
- motion concerns
For actionable accessibility rules with rationale (e.g., "Provide an aria-label for icon-only buttons"), use a guideline entry with
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Discriminator. | ||
| No | Minimum WCAG conformance level: | ||
| No | Key/action pairs. Each entry has | ||
| No | ARIA attribute docs. Each entry has | ||
| No | How the entity is announced by screen readers. | ||
| No | How focus moves into, within, and out of the entity. | ||
| No | Measured contrast ratios for foreground/background pairs. Each entry has | ||
| No | How the entity respects |
Documents visual or interactive demos of an entity. Each item is a single demo — a static image, a video, a code snippet, a URL to a live demo, or a literal value.
Each
- Presentation: A visual or interactive demo — one of
presentationImage ,presentationVideo ,presentationCode , orpresentationUrl . - Value: A literal value for API property examples (e.g.,
"primary" ,44 ,true ). When given without a presentation, the example is a concrete data point.
Optional
Documents structured content documentation — recommended action labels and localization/i18n concerns. Content document block entries complement guideline document block entries: guidelines say "Use sentence case" (a rule), content entries say "Add: Takes an existing object and uses it in a new context" (a reference).
At least one of
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The canonical label text (e.g., | ||
| Yes | What this label means — the action it represents. | ||
| No | When and how to use this label. | ||
| No | Related terms commonly confused with this one (e.g., Add lists | ||
| No | Where this label is commonly used (e.g., | ||
| No | Visual examples showing the label in context. |
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The i18n concern: | ||
| Yes | Actionable guidance for this concern. | ||
| No | Visual examples showing the concern. |
These document block types are only accepted on component entities.
Documents the visual structure of a component or pattern by listing its named sub-elements (parts). Each part can reference the design tokens that style it, bridging the entity's visual design and its token architecture.
For components, parts represent rendered UI sub-elements (container, label, icon, focus-ring). For patterns, parts represent the structural sections of the pattern's visual layout (image, title, body, primary action).
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Machine-readable part name (e.g., | ||
| No | Human-readable name. | ||
| Yes | What this part is and any constraints. | ||
| Yes | Whether this part is always present in the rendered output. | ||
| No | Token map: keys are purposes (e.g., | ||
| No | Links to design tool nodes, source code, etc. |
Documents the code-level interface of a component on a single platform. For multi-platform components, create one API guideline per platform using the
Sections:
properties (apiProperty[])events (apiEvent[])slots (apiSlot[])cssCustomProperties (apiCssCustomProperty[])cssParts (apiCssPart[])dataAttributes (apiDataAttribute[])methods (apiMethod[])
Documents all dimensions of visual or behavioral variation. Each item is a single axis of config (e.g.,
The optional
Each exclusion requires at least two conditions. A single condition would exclude a whole value, which should be removed from the dimension's values array instead.
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Machine-readable value name. | ||
| No | Human-readable name. | ||
| Yes | What this value looks like and when to use it. | ||
| No | Token overrides: keys are purposes, values are token names. | ||
| No | Visual previews. | ||
| No | When to choose this value over others. |
Documents all interactive states — hover, focus, active, disabled, loading, selected, error, etc. — with triggers, token overrides, and previews.
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Machine-readable state name. | ||
| No | Human-readable name. | ||
| Yes | Triggers, visual changes, and constraints. | ||
| No | Token overrides active in this state. Same map format as variants. | ||
| No | Visual previews. | ||
| No | When this state is and is not appropriate. |
Documents measurable visual specs — token inventory, spacing relationships, dimension constraints, typography settings, and responsive behavior. At least one section must be present.
| Section | Type | Description |
|---|---|---|
| Open map of design property names to values. Values are token names (e.g., | ||
| Internal padding/gaps and external recommended margins. Keys are named relationships (e.g., | ||
| Dimension constraints: | ||
| Per-element typographic settings. Keys are anatomy part names, values are objects with | ||
| Breakpoint-specific behavior. Each entry has | ||
| Design properties grouped by variant. Each entry has | ||
| Design properties grouped by size. Each entry has | ||
| Design properties grouped by interactive state. Each entry has | ||
| Design properties for variant×state combinations. Each entry has |
The base-level
The remaining arrays group design properties by condition:
variants — by variant. Each entry has aname and its ownproperties map, plus optionalspacing ,sizing , andtypography sections.sizes — by size, including size-specific spacing, sizing, and typography.states — by interactive state (e.g., hover, focus, disabled).
The
Each entry is self-contained — it holds the complete set of values for that condition, not a diff of the base properties. For example, a
Note: the
These document block types are only accepted on style entities.
Documents high-level guiding principles that shape decisions for a domain. Principles answer "what do we believe?" and "what constraints do we accept?" — they sit above specific best practices.
Each
Documents an ordered progression of values forming a visual scale (type scale, spacing scale, elevation scale, or similar).
Each
The scale guideline requires a
Documents the motion system — named easing curves, their cubic-bezier timing functions, recommended durations, and usage guidance. Each item is a single easing definition that designers and engineers select from when adding animation or transitions.
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Machine-readable easing name (e.g., | ||
| No | Human-readable name. | ||
| Yes | Visual character, usage context, and UX effect. | ||
| No | Cubic-bezier control points | ||
| No | Reference to a DTCG cubicBezier or transition token. | ||
| No | Recommended duration range: | ||
| No | Comma-separated usage contexts (e.g., | ||
| No | Visual demos. |
These document block types are only accepted on pattern entities (in addition to the shared anatomy, variants, and states document block types).
Documents the interaction flow of a pattern as an ordered sequence of steps. The ordering is critical: it represents the chronological flow of the user journey.
| Property | Type | Required | Description |
|---|---|---|---|
| No | What starts this step. When omitted, the step continues the previous flow. | ||
| Yes | What happens — system response, visual changes, state transitions. | ||
| No | Names of components involved. MUST match documented component names. | ||
| No | Visual/interactive illustrations of this step. |
The
Every link requires a
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | Category of the link. See Standard Link Types. | ||
| Conditional | URL of the external resource. Required when | ||
| Conditional | Name of a referenced DSDS entity. Required when | ||
| No | Display text for the link — what a user sees when it renders in docs. | ||
| No | The functional relationship this entity has to the current entity — what part it plays here. Distinct from | ||
| No | Whether this linked entity is required for the parent entity to work. |
External resource types:
Relationship types:
Artifact types (for internal references):
Custom values are permitted and SHOULD be lowercase strings matching
Fields that contain human-written prose use the
- String form: A bare JSON string, interpreted as CommonMark for backward compatibility.
- Object form:
\{ "value": "...", "format": "plain" | "markdown" | "html" \} for explicit format control.
The
- Purpose document block type — wrapped with a
type: "purpose" discriminator to appear in the document block array. - Variant values — inline
useCases property on each variant value for "when to choose this value." - State entries — inline
useCases property on each state entry for "when this state is appropriate."
In all three contexts, the shape is identical:
Each
The
The root
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The name or identifier of the base design system being extended (e.g., | ||
| No | URL to the base DSDS document. Tooling MAY fetch and resolve the base document for merge operations. | ||
| No | Semver version of the base system this document extends. When omitted, tooling SHOULD resolve to the latest available version. | ||
| No | Description of the relationship — what this extension adds, changes, or specializes. |
Components and tokens can declare that they extend a base entity from a parent system.
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | The name of the base entity being extended. MUST match the | ||
| No | The owning system of the base entity. When omitted, resolved from the document-level | ||
| No | Direct URL to the base entity's docs or DSDS definition. | ||
| No | Version of the base entity or system. When omitted, inherits from the document-level | ||
| No | Description of what this entity adds or changes relative to the base. | ||
| No | A human-readable changelog of changes relative to the base entity. |
Each
| Property | Type | Required | Description |
|---|---|---|---|
| Yes | |||
| No | What was changed — a property name, guideline kind, variant name, etc. (e.g., | ||
| Yes | A human-readable description of the change. |
Merge semantics are tooling's responsibility. The
extends declaration defines the relationship between systems and entities. How properties, guidelines, and tokens are merged, overridden, or inherited is up to consuming tooling — the schema does not prescribe resolution rules. Themodifications array provides a human-readable changelog that tooling MAY use for diff views, migration guides, or docs generation.
See
The root document, each documentation group, and each entity can carry a
Most entity types enforce a strict
Document block type values follow two naming patterns based on their structural role:
- Plural names for document block types that wrap a list of like items in an
items array:"guideline" ,"variants" ,"states" ,"principles" ,"interactions" ,"examples" ,"motion" ,"content" . - Singular names for document block types that are self-contained with their own internal structure:
"scale" (hasname ,steps )"anatomy" (hasparts )"api" (hasproperties ,events , etc.)"accessibility" (haskeyboardInteraction ,ariaAttributes , etc.)"design-specifications" (hastokens ,spacing , etc.)"purpose" (hasuseCases )
The distinction: plural types are containers of interchangeable items where the container has no identity beyond its type. Singular types have meaningful internal structure where properties are named and semantically distinct. Note:
| File | Description |
|---|---|
| JSON Schema for validating DSDS documents. | |
| Single-file bundled version (auto-generated). | |
| Starter kit with components, tokens, a style, and a pattern. | |
| Minimal examples showing the floor of docs for each entity type. | |
| Complete component docs (Button). | |
| Token docs with value, API, and resolution examples. | |
| Nested token group (color palette). | |
| Dark mode theme with token overrides. | |
| Style docs (Spacing) with scale, motion, and best practices. | |
| Pattern docs (Error Messaging). | |
| Pattern docs (Empty State) with anatomy, variants, states, interactions, and content. | |
| Enterprise extension system showing document-level and entity-level |
| Level | Requirement |
|---|---|
| Level 1: Core | Identity fields only. For tokens: |
| Level 2: Complete | Level 1 + at least one substantive document block entry (anatomy/api/variants for components, principles/scale for styles, interactions for patterns, guideline/purpose for tokens). |
Design System Documentation Standard (DSDS) 0.1 — Draft Specification