Skip to content
Docs

Command palette

Jump to a page or view, or find a todo by name.

Changelog

Design patterns

Which design source, kit and agent skill each surface uses, and the rules that keep a rebrand cheap.

Markdown

The template's visual identity lives in tokens (packages/ui/src/styles/globals.css), and every surface composes from owned source in packages/ui. apps/web/PRODUCT.md holds the principles and anti-references; read it before any UI work. This page says which tool each job uses, so a project built from the template keeps one design language as it grows.

Three registers

RegisterSurfacesAuthorityAgent skills
Operatedashboard, todos, files, settings, authshadcn primitives and tokens; apps/web/PRODUCT.mdui-catalog, web-design-guidelines
Persuadelanding, marketing, pricingdocs/landing.md; the same tokens through landing.css aliasesdesign-taste-frontend, redesign-existing-projects, stageshow
Developer docs/docsFumadocs headless (fumadocs-core + fumadocs-mdx) with our own componentsdocs-and-changelog

An agent picks the register first (ui-catalog step 1), then loads only that register's skills. Taste guidance never reaches an Operate screen.

Sources by job

JobSourceSkill
Primitive, form, overlay, empty, toastshadcn/ui, installed in packages/ui/src/componentsshadcn, ui-catalog
Free composites (tree, timeline, pickers)ReUI free registry (@reui); Pro blocks stay outui-catalog
Chat, streaming, tool cardsthe installed AI/chat set, then AI Elementsai-assistant
Charts, sparklines, KPI cardsBklit UI, the @bklit shadcn registry (MIT, source copied into the app)bklit-ui, bklit-ui-design, bklit-ui-migrate
Faux product UI on the landingStageshow, kit vendored in apps/web/src/platform/stageshow/stageshow
Motion on an existing controltransitions.dev recipestransitions-dev, emil-design-eng, review-animations
Native (Expo)SwiftUI / Jetpack Compose through @expo/uiexpo-ui, building-native-ui

No screen draws a chart yet. The shadcn chart wrapper (Recharts) is installed but unused; a new chart comes from @bklit, and bklit-ui-migrate moves a Recharts chart over.

Rules that keep it consistent

  • Tokens, not values. A component reads --primary, --card, --radius and the rest; a registry's own colors and fonts are mapped onto them, never copied. A kit with its own token layer (Stageshow's --ss-*, Bklit's chart colors) is aliased to ours in one place.
  • Owned source. Registry items are copied into packages/ui (or a feature's platform/ folder) and exported one subpath at a time. Diff before accepting an overwrite: local files carry React Compiler and test edits.
  • Every state ships. Loading, empty and error are part of the screen, because developers copy what the template shows.
  • Honest illustrations. Faux UI on the landing uses the product's own strings from the locale catalogs, shows only features the template has, and is labelled as an illustration. A Stageshow scene passes film.mjs --gate before it ships.
  • Motion respects the reader. Every animation has a reduced-motion state, pauses off screen, and starts when it can be seen.
  • Weight is measured. A new kit or registry item records its gzip delta on the route it lands in, in docs/measurements/.

Key files

Edit on GitHubDocumentation is in English.