Examples

aindf — render
$ aindf render patterns/newsletter-subscribe
matching intent… "newsletter" → newsletter-subscribe
resolves to section · base CTA
4 clarifying parameters · 0 gaps
compose valid against slots + applicability
Patterns (3)
Live preview · newsletter-subscribe
┌─ newsletter-subscribe ──────────────┐
│                                       │
│ slot/header                           │
│   ▸ <prominent offer>                 │
│   ▸ <one line on why to subscribe>    │
│                                       │
│ slot/body  · preset inline-form        │
│   [  your e-mail            ] [ ↵ ]   │
│                                       │
└───────────────────────────────────────┘
bg: gradient · shader: none · button: text
$ open patterns/starter.json

A pattern is a parametrized recipe. It composes only declared components, so compose is valid by construction; the agent asks the clarifying parameters before assembling, and any gaps tell the design system what to build next.

1

newsletter-subscribe

starter.json ↗

Produces a section built on CTA. Header slot holds a prominent offer heading + a muted description; the body slot holds an inline-form preset (icon Input + Button). Matches: subscribe · newsletter · mailing list · розсилка · підписка.

section CTA
├─ slot/header ─ Typography(offer-heading, prominent)
│               Typography(offer-desc, role=muted)
└─ slot/body ─── preset inline-form (Field-group)
                  ├─ Input  (icon, placeholder)
                  └─ Button ({param:btnStyle})
parameterasksoptionsdefault
btnStyleText or icon button?text · icontext
bgSection background?flat · gradient · shadergradient
shaderShader on background?none · grain · meshnone
placeholderInput placeholder text?your e-mail
2

chat-interface

starter.json ↗

Produces a block built on Stack-layout: a body of date-separated message bubbles (each with an avatar + reaction-bar) and a fixed composer footer. Matches: chat · messages · messenger · чат.

block Stack-layout
├─ slot/body
│   ├─ Date-separator  (repeat per-day)
│   └─ Message-bubble  (repeat per-message)
│       ├─ Avatar  ({param:avatarClickable})
│       └─ Reaction-bar  (under-bubble)
└─ slot/footer
    └─ Composer (fixed)
        ├─ Input  · Button(upload) · Button(send)
parameterasksoptionsdefault
avatarClickableAre avatars clickable (open profile)?static · linkstatic

gaps — components this pattern needs that the design system has not built yet: Message-bubble · Reaction-bar · Date-separator · Composer. The pattern therefore doubles as a build list.

3

feature-grid

starter.json ↗

Produces a section built on Section: a header (title + muted subtitle) and a grid body of feature-preset cards repeated per feature. Matches: features · переваги · фічі · what you get.

section Section
├─ slot/header ─ section-header
│               ├─ Typography(title)
│               └─ Typography(subtitle, role=muted)
└─ slot/body ─── Grid-layout (cols={param:cols})
                  └─ Card preset=feature  (repeat per-feature)
parameterasksoptionsdefault
colsHow many columns in the grid?2 · 3 · 43
cardInteractionIs the card static or clickable?static · link · buttonstatic

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