Design Data Specification
Version: 1.0.0-draft
Status: Draft — normative text and schemas may change before 1.0.0.
This document is the top-level overview for the Design Data Specification: a machine-readable model for Spectrum design tokens, mode sets, platform manifests, and validation.
Scope
The specification defines:
- Token format — structured token identity (
name), literalvalueor alias$ref, and lifecycle metadata (Token format). - Taxonomy — concept categories, token term vocabulary, formatting style, and the distinction between component anatomy and token objects (Taxonomy).
- Registry — named value collections that supply allowed vocabulary for token name fields and component metadata; three-registry boundary (anatomy-terms, token-objects, categories) and packaging strategy (Registry).
- Component format — component declaration shape: API options, named content slots, anatomy parts, state model, and cross-reference validation rules (Component format).
- Anatomy format — anatomy part declaration shape: field constraints, canonical anatomy vocabulary, and cross-reference rules for token
anatomyfield values (Anatomy format). - State model — state declaration shape: trigger semantics, precedence and resolution algorithm, canonical state vocabulary, and cross-reference rules for token
statefield values (State model).
- Anatomy format — anatomy part declaration shape: field constraints, canonical anatomy vocabulary, and cross-reference rules for token
- Cascade and resolution — layered data (foundation, platform, product), specificity, and how a context picks a winning value (Cascade).
- Mode Sets — declared modes, defaults, and coverage expectations (Mode Sets).
- Platform manifest — how a platform repo pins foundation data, filters tokens, and applies typed overrides (Manifest).
- Semantic diff — change taxonomy, token identity rules, and property-level change tracking for comparing dataset versions (Diff).
- Query notation — filter syntax for selecting tokens by structured fields (Query).
- Accessibility — component accessibility vocabulary: semantic role, interaction and keyboard intents, focus behavior, WCAG criteria, and state-level AT fields (Accessibility).
- Accessibility adapters — informative platform adapter contracts: Web/ARIA, iOS UIAccessibility, Android AccessibilityNodeInfo, and voice/multimodal (Accessibility adapters).
- Document blocks — typed prose blocks attachable to tokens, components, and anatomy parts; makes design guidance machine-readable and agent-queryable (Document blocks).
- Agent-readable surface — operations and transport contracts (CLI, MCP server, Agent Skill) for AI agents consuming spec-conformant design data; covers session primer, token resolution, validation, query, and component description (Agent-readable surface).
- Evolution — deprecation lifecycle, migration windows, change classification, and legacy format contract (Evolution).
Conformance
The key words MUST, MUST NOT, SHOULD, SHOULD NOT, MAY, and OPTIONAL in this specification are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.
Conformance levels
| Level | Meaning |
|---|---|
| NORMATIVE | Required for a conforming document or tool. |
| RECOMMENDED | Strong default; deviations SHOULD be documented. |
| OPTIONAL | May be omitted unless a feature explicitly requires it. |
Validation layers
Conformance is checked in three layers (all under @adobe/design-data-spec):
| Layer | Artifact | Responsibility |
|---|---|---|
| 1 | schemas/*.json |
Per-instance structural shape (JSON Schema Draft 2020-12). |
| 2 | rules/rules.yaml |
Semantic rules with stable IDs (e.g. SPEC-001). |
| 3 | conformance/ |
Fixtures and expected diagnostics for implementors. |
A conforming validator MUST implement Layer 1 for supported document types and SHOULD implement Layer 2 rules whose introduced_in is less than or equal to the validator’s claimed spec version.
Spec version and SemVer
This document set carries the spec version 1.0.0-draft. Published artifacts (schemas, rule catalog) are expected to align with Semantic Versioning once 1.0.0 is released: MAJOR for incompatible schema or rule behavior, MINOR for backward-compatible additions, PATCH for clarifications and compatible fixes.
Full governance (compatibility tiers, migration, CLI --spec-version) is discussed in discussion #735 — Versioning and Evolution.
Normative references (sibling documents)
| Document | Role |
|---|---|
| Token format | Token name, value / $ref, value types, lifecycle metadata. |
| Taxonomy | Concept categories, vocabulary, formatting, anatomy vs objects. |
| Registry | Named value collections for vocabulary validation; three-registry boundary (anatomy, token objects, categories) and packaging. |
| Component format | Component declaration: options, slots, anatomy (→ anatomy-format.md), states (→ state-model.md), lifecycle. |
| Anatomy format | Anatomy part declarations: field constraints, canonical vocabulary, SPEC-020/SPEC-023/SPEC-024/SPEC-025. |
| State model | State declarations: trigger semantics, precedence algorithm, canonical vocabulary, SPEC-022/SPEC-026. |
| Cascade | Layers, specificity, resolution algorithm. |
| Mode Sets | Mode set declarations, built-in mode sets, coverage. |
| Manifest | Platform manifest fields and validation expectations. |
| Product context | Product-layer context document: rationale, overrides, and extensions. |
| Diff | Semantic diff change taxonomy, token identity, property changes. |
| Query | Filter notation for selecting tokens by structured fields. |
| Accessibility | Component accessibility vocabulary: role, intents, focusable, keyboardIntents, wcag, and state-level AT fields (SPEC-030/031). |
| Accessibility adapters | Informative platform adapter contracts mapping foundation accessibility vocabulary to Web/ARIA, iOS, Android, and voice surfaces. |
| Document blocks | Typed prose blocks (purpose, guideline, accessibility, do-dont, examples) attachable to any entity. |
| Agent-readable surface | Transport contracts (CLI, MCP, Agent Skill) and operation catalog for AI agents consuming spec-conformant design data. |
| Evolution | Deprecation lifecycle, migration windows, change classification. |
JSON Schema $id and versioning
NORMATIVE: Canonical schema documents use versioned path $id URIs so major revisions can coexist on the documentation host:
- Base:
https://opensource.adobe.com/spectrum-design-data/schemas/v0/ - Examples:
.../v0/token.schema.json,.../v0/mode-set.schema.json,.../v0/manifest.schema.json
The v0 segment denotes the draft / pre-1.0 schema family aligned with spec version 1.0.0-draft. A future 1.0.0 stable release MAY introduce v1 paths without reusing v0 URLs for incompatible shapes.
RECOMMENDED: Each root schema document includes a top-level string property specVersion (const matching this spec’s version label) when the instance is a design-data document that should self-identify; see individual schemas.
Packaged copies in this repository live under packages/design-data-spec/schemas/; their $id still identifies the canonical published URL above.
Relationship to existing Adobe packages
| Package / area | Relationship |
|---|---|
@adobe/spectrum-tokens |
Current token JSON under packages/tokens/ is the legacy shape (e.g. color-set, scale-set). This spec defines the target format; backward-compat schemas and migration are Phase 1 (#723). |
@adobe/design-system-registry |
Registry enums and component metadata MAY be referenced by validation rules (e.g. component association); exact coupling is Layer 2. |
@adobe/spectrum-component-api-schemas |
Will become a thin adapter over component declarations in packages/design-data-spec/components/ (Phase 6.5). Until migration, existing schemas remain authoritative. Cross-reference rules SPEC-018–SPEC-020 apply when component declarations are present in the dataset. |