Build pipeline
Everything on this site is derived. The pipeline is deterministic — same inputs, byte-identical output — and runs with zero runtime dependencies.
scripts/lib/registry.js
Scans projects/*/project.config.js, validates slugs, loads each token document and reports anything missing. Adding an ecosystem is creating a folder.
scripts/lib/tokens.js
Resolves 78 semantic roles from 58 authored values, derives the 38 the documents do not state, computes WCAG contrast, and compiles one theme stylesheet per ecosystem including the shared light scaffold and 2 palette variants.
scripts/lib/assets.js
Walks 122 files (27.99 MB), groups them by folder, inlines vector masters under 260 KB, and selects a brand mark per ecosystem.
scripts/lib/components.js
Renders the atomic library — swatches, type scale, spacing, shape, motion, controls, icon contract, molecules and organisms — against the resolved theme, with copyable markup.
scripts/lib/pages/*.js
Emits overview, living style guide, asset library, docs index and document pages per ecosystem, plus the hub, this pipeline page, the cross-ecosystem asset index and hub-level reference pages (media, CLI, TUI, menus, colors, organism lab).
scripts/build.js
Writes 4 per-ecosystem indexes plus one global index; the command palette fetches them lazily, so no page carries a hardcoded result list.
Token flow
projects/<slug>/tokens/tokens.json
└─ resolveRoles() authored keys win, rest derived + flagged
└─ theme-<slug>.css :root · [data-theme=light] · [data-variant=...]
└─ --ax-* the only contract the component library knows
└─ components atoms → molecules → organisms → pages
Per-ecosystem output
| Ecosystem | Kind | Authored | Derived | Variants | Assets | Docs | Theme |
|---|---|---|---|---|---|---|---|
| Aetheris | brand | 26 | 10 | 1 | 41 | 16 | theme-aetheris.css |
| GAMES REBORN | brand | 12 | 17 | 3 | 34 | 3 | theme-games-reborn.css |
| Merlin Tribukait | brand | 20 | 11 | 1 | 47 | 1 | theme-merlin.css |
| Black Manta | spec | 0 | 0 | 1 | 0 | 2 | theme-black-manta.css |
Extending the system
- Create
projects/<slug>/. - Add
project.config.js(copy a neighbour and change the identity). - Add
tokens/tokens.json— palette, type, space, radius, shadow, motion. - Drop assets into
assets/<group>/and markdown intodocs/. - Run
npm run build. The hub, nav switcher and search index update themselves.