Specification

AINDF is a specification for building design systems that an AI agent can discover, reason about, generate, and validate without a human in the loop — while remaining fully usable by humans. It is not a design system. It is the portable contract layer that any design system can conform to.

A design system read by both a human and an AI agent from one shared source.
I-0 · one source, two readers — a human and an agent read the same machine-readable contracts.
§1

Thesis

SPEC.md ↗
A design system is AI-Native when it is expressed as a graph of machine-readable contracts, derived from a single source, and enforced automatically.

"AI-Native" is earned by mechanisms, not by labelling:

  1. Semantic, role-based naming — named by intent, not appearance (color-accent, not blue-500). Agents select by meaning.
  2. Machine-readable contracts — every relationship declared in a schema an agent can read, not inferred from prose or screenshots.
  3. A closed, enumerable choice space — valid combinations are finite and declared, so an agent cannot hallucinate an invalid one.
  4. Single source → generation — contracts are authored once; all downstream artifacts are generated, so they never drift.
  5. Enforced but overridable — a linter checks conformance; cascade layers keep the human's last word.
Five pillars: semantic naming, machine-readable contracts, closed choice space, single source to generation, enforced and overridable.
I-1b · the five mechanisms that earn "AI-Native".
§2

The contract graph

SPEC.md ↗

A conformant system is a typed graph with four kinds of edges. Each edge is declared once in a machine-readable source and enforced by the validator. The graph is traversable in both directions and is the data an AINDF MCP server exposes.

EdgeFrom → ToSource schema
Token applicabilitysemantic token → property/contexttokens
Slot contentslot → layer / contract of contentslots
Modifier applicabilitymodifier → component / layerapplicability
Preset / Patterncomposition → components + filled slotspresets · patterns
token ──applicability──▶ property
slot  ──accepts───────▶ layer / component
modifier ──applies to──▶ component / layer
preset ──composed of─▶ component + filled slots
   the four edges of the graph · declared once · enforced
§3

Axes

taxonomy.schema ↗

Every component is classified on three orthogonal axes.

3.1 · layer — composition depth (fixed by AINDF). A slot on layer N accepts content of layer N−1 and below, as narrowed by its contract.

LayerDefinitionSlotsAccepts
atomsIndivisible primitive. No composition.no
elementsFixed structure, configured by props.noprops only
blocksComposed brick with slots.yeselements, atoms
sectionsFull-width region with slots.yesblocks
┌─ section ───────────────────────────┐
│  ┌─ block ──────────────────┐  ◻ slot │
│  │  ┌─ element ─┐   ◻ slot  │         │
│  │  │  atom     │             │         │
│  │  └───────────┘             │         │
│  └──────────────────────────┘          │
└────────────────────────────────────────┘
a slot on layer N accepts layer N−1 and below

3.2 · role — semantic purpose (vocabulary declared by the system). AINDF recommends a base vocabulary — display, interactive, form, feedback, layout — but a conformant system MAY declare its own. The role axis is open.

Components sorted into role bins: display, interactive, form, feedback, layout, with a sixth open dashed bin.
I-3.2 · the role vocabulary is open — the sixth bin is yours to declare.

3.3 · renderTarget — where it materializes (fixed by AINDF). inline | overlay. Overlay is a render target, not a layer: the same component identity rendered in a portal / top-layer.

Split illustration: a component inline in normal flow versus the same component floating in an overlay top-layer.
I-3.3 · overlay cuts across layers — it is a render target, not a depth.
§4

Token tiers

tokens.schema ↗

foundationssemanticcomponent. Tokens reference downward only; components consume semantic / component, never foundations directly. A token's scope (the properties it may bind to) is its applicability, declared in the tokens source.

Three stacked bands — component, semantic, foundations — connected by downward 'references' arrows; components consume the top two.
I-4 · tiers reference downward only · components never touch foundations.
§5

Modifiers

applicability.schema ↗

Cross-cutting properties attached out-of-band (e.g. data-{category}="value"), orthogonal to the layer hierarchy. AINDF defines the mechanism and schema of modifiers and their applicability; it does not mandate a fixed set of categories — the category vocabulary is declared by the conforming system.

A component with cross-cutting modifier tags passing through an applicability gate; one tag is rejected.
I-5 · modifiers are optional, cross-cutting, and gated by when{} applicability.
§6

Presets & patterns

presets.schema ↗

A preset is a pre-composed, ready-to-use instance of a block or section whose slots are already filled with a sensible default arrangement. It references existing components; it introduces no new identity and is valid by construction.

Loose UI parts and an empty card on the left; a big arrow to a fully assembled ready-to-use card on the right.
I-6 · a preset turns the grammar into a finished sentence.

6.1 · Patterns. A pattern is a parametrized composition recipe: it composes existing components and exposes clarifying parameters an agent asks before assembly ("text or icon button?", "how many columns?"). A preset is a pattern with all parameters bound. A pattern MAY also list gaps — components the design system has not built yet — so patterns drive what to build next.

prompt ─▶ skill ─▶ pattern ─▶ preset ─▶ component
intent   procedure  recipe     bound      primitive
the composition stack · descending determinism →
§7

Single source → generation

SPEC.md ↗

A conformant system declares its contracts once and generates every downstream artifact from them: agent docs, type definitions, lint rules, and MCP responses. Hand-maintaining any generated artifact breaks conformance, because drift means an agent reads a stale contract.

One central single-source document fanning out to four outputs: agent docs, types, lint rules, MCP responses, sealed 'no drift'.
I-7 · define-once, generate-many · no drift.
§8

Conformance

SPEC.md ↗

A design system claims AINDF 0.1 conformance when it:

  1. publishes the five contract sources, each validating against its schema: tokens, taxonomy, slots, applicability, presets;
  2. classifies every component on all three axes (layer, role, renderTarget);
  3. references tokens downward only (no component → foundations binding);
  4. ensures every slot target and modifier target resolves to a declared component or layer (no dangling edges);
  5. generates its agent docs / types / lint / MCP responses from those sources;
  6. exposes the AINDF MCP query surface (list-by-facet, slot-accepts, applicable-modifiers, get-preset);
  7. passes the AINDF conformance validator with no errors.
A design-system document passing through a validator gate and emerging stamped 'AINDF conformant', beside a ticked checklist.
I-8 · the validator confirms or refutes · badges are earned.
§9

Boundary

SPEC.md ↗

AINDF contains schemas, validator, MCP protocol, generators, and an empty reference theme — and nothing else. It carries no palette, no fixed modifier set, and no component library. Conformance test: could a completely different design system — its own tokens, components, and modifier vocabulary — be built using only AINDF? If yes, the boundary is clean.

Two containers: 'Framework (AINDF)' holding only abstract blueprints, and 'Design System' holding concrete filled components.
I-9 · the framework holds only schemas; the design system holds the concrete.
§10

Versioning

SPEC.md ↗

AINDF uses semver. A conforming system pins the AINDF version it targets (conformsTo: "aindf@0.1"). The dependency arrow is one-way: implementation → design system → framework, never the reverse.

A one-directional arrow chain Implementation → Design System → Framework with version pins and a crossed-out reverse arrow.
I-10 · dependencies point one way only.

Draft 0.1 — co-evolved with its first reference implementation (Malevich). Subject to change until 1.0, which will not be tagged before a real implementation has proven the specification.

A design system is fully ai-native when it ships all six principles from one source. Most ship a subset. aindf is the spec for the whole graph.

$ git clone …/ai-native-design-framework.git