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.
I-0 · one source, two readers — a human and an agent read the same machine-readable contracts.
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.
Edge
From → To
Source schema
Token applicability
semantic token → property/context
tokens
Slot content
slot → layer / contract of content
slots
Modifier applicability
modifier → component / layer
applicability
Preset / Pattern
composition → components + filled slots
presets · 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
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.
Layer
Definition
Slots
Accepts
atoms
Indivisible primitive. No composition.
no
—
elements
Fixed structure, configured by props.
no
props only
blocks
Composed brick with slots.
yes
elements, atoms
sections
Full-width region with slots.
yes
blocks
┌─ 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.
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.
I-3.3 · overlay cuts across layers — it is a render target, not a depth.
foundations → semantic → component. 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.
I-4 · tiers reference downward only · components never touch foundations.
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.
I-5 · modifiers are optional, cross-cutting, and gated by when{} applicability.
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.
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.
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.
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.
I-9 · the framework holds only schemas; the design system holds the concrete.
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.
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.