open-design/design-systems
chaoxiaoche a75d9938c7
feat(design-systems): add structured tokens.css schema (default + kami) (#1231)
* feat(design-systems): add structured tokens.css schema (default + kami)

Compile each brand's DESIGN.md prose into a machine-readable :root
block agents paste verbatim, removing the "Primary → --accent"
translation step where most token misuse happens. Daemon prompt
injection lands in a follow-up; lint-artifact already enforces the
shared token vocabulary so no rule changes needed.

Schema validated across two contrasting aesthetics:
- default (sans-serif, cobalt, B2B utility) — stress test the
  shallow form, 2-level fg / 2-level surface
- kami (serif, parchment, ink-blue, print-first) — stress test the
  rich form, 4-level fg ramp, 3-level surface, ring elevation, i18n
  font stacks, and solid-hex tag tints (print renderers double-paint
  alpha)

Schema growth from kami's stress test (5 new optional slots, all
backward-compatible — default aliases via var() to existing tokens):
- --fg-2 / --meta (4-level fg ramp)
- --surface-warm (3-level surface)
- --border-soft (2-level border)
- --elev-ring (ring elevation as first-class level)

Brand-specific extensions live in tokens.css with explicit "NOT in
shared schema" labels and a documented promotion path (≥2 brands
need it → promote to schema slot).

components.html in each brand is a self-contained reference fixture
that exercises every token through real layouts. Both fixtures lint
clean against apps/daemon/src/lint-artifact.ts.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(design-systems): add token-fixture drift guard

Each design system in design-systems/<brand>/ ships two files agents
consume in tandem: tokens.css (canonical token bindings) and
components.html (a self-contained fixture whose first <style> embeds
the same :root paste so the file renders standalone). The fixture's
:root block is a copy of tokens.css's :root block, kept in sync only
by an inline comment.

This adds scripts/check-tokens-fixture-sync.ts and registers it in
pnpm guard. The check pairs each brand's tokens.css with its
components.html and asserts the unscoped :root block is byte-equivalent
after canonical normalization (CSS comments stripped, whitespace
collapsed, separator spacing normalized). Brands missing one half of
the pair, or with no :root rule in either file, fail the guard.

Scoped overrides like :root[lang="zh-CN"] are not required to appear
in the fixture (per the kami fixture's inline comment they are pasted
only when an artifact's <html lang> matches), so the check only
compares the unscoped :root block.

Verified: pnpm guard passes for default + kami, fails on intentional
value drift, fails on missing token, tolerates whitespace-only
formatting differences.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(design-systems): point fixture CTAs to real files

Both default and kami components.html advertised in-page anchors
(#tokens, #spec, #surface, #accent, #type, #components) but defined
no matching ids, so every CTA was a no-op when the fixture was
opened locally — flagged by mrcfps in #1231.

Re-point each link to a real artifact in the same brand directory:

- "View tokens" / "Inspect tokens" / "Inspect typography" → ./tokens.css
- "Read the spec" / "Read the rule" → ./DESIGN.md

Browsers render these as raw source views, which is the desired UX
for a reference fixture: clicking the CTA shows the underlying
contract instead of jumping to nothing. Agents copying the fixture
also learn the pattern of "buttons link to actual sibling resources".

The :root token block is unchanged, so the token-fixture drift guard
still passes for both brands.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(design-systems): codify token schema (A1/A2/B/C layers)

The two-brand pilot (default + kami) settled the shape of the shared
token schema; this commit codifies it as a machine-readable contract
and enforces it in pnpm guard, addressing lefarcen's review on #1231:

> the optional-vs-required split won't generalize cleanly when brand
> #3 needs different Layer A tokens or when multiple brands converge
> on the same extension (promoting C→B→A). Consider surfacing that
> limitation in the PR narrative or in a future SCHEMA.md.

Schema lives under design-systems/_schema/ as three files:

- tokens.schema.ts   — TypeScript declaration of every shared token
                       with its layer (A1-identity / A1-structure /
                       A2 / B-slot), plus per-brand C-extension
                       allowlists and a global C-prefix allowlist
- defaults.css       — CSS mirror of A2 fallback values, used as the
                       human-readable contract reviewer's-eye copy
                       and the future input to the derive script
- AGENTS.md          — schema layer model, C → B-slot → A2 promotion
                       rules, when-not-to-add-a-token guidance

Layer model:

  A1-identity    8 tokens — bg/surface/fg/muted/border/accent +
                 font-display/font-body. The brand IS these values;
                 no fallback is defensible.

  A1-structure  18 tokens — type scale (8), leading (2), tracking
                 (1), section-y (3), container (4). Structural
                 decisions vary per brand by design and have no
                 cross-brand default.

  A2            26 tokens — accent states, semantic colors, motion,
                 base spacing scale, radius, elevation, focus,
                 font-mono. Required in every tokens.css; fallback
                 lives in defaults.css for the future derive script
                 to inline when DESIGN.md does not specify the value.

  B-slot         4 tokens — fg-2 / meta / surface-warm / border-soft.
                 Brand may bind independently or alias the named
                 sibling via var(...) for components that target the
                 richer ramp.

  C-extension    n tokens — brand-specific names (kami's tag-bg-*,
                 leading-display, accent-light, etc.). Allowlisted
                 per-brand in BRAND_EXTENSIONS or globally by prefix
                 in BRAND_EXTENSION_PREFIXES. Promote when a second
                 brand adopts the same name.

Why A2 fails the guard today:
  Artifacts are generated by agents pasting one brand's :root block
  into a single <style>; there is no global stylesheet that supplies
  fallbacks at runtime. A tokens.css missing an A2 declaration would
  silently break any var() reference in the fixture. Until the
  derive script (PR-B) lands and inlines defaults, every brand's
  tokens.css must declare every A2 token directly. The guard
  enforces this strictly.

Why --font-mono lands in A2 (not A1):
  149 brands' DESIGN.md files were surveyed: 87 (58%) declare a
  monospace stack, 62 (42%) do not — including major brands like
  bmw / nike / apple / notion / mastercard / meta. Agent paste
  cannot rely on the brand author having written it down; a
  defaultable A2 fallback (with CJK brands like kami overriding) is
  safer than forcing every brand author to add a field they may not
  realize their kbd / code-block components need.

Five guard checks, each registered as its own entry in scripts/guard.ts
so failures attribute to a specific contract:

  1. token-fixture sync       — components.html :root ↔ tokens.css :root
                                 byte-equivalent (existing)
  2. A1 required tokens       — every brand declares every A1 token
  3. A2 required tokens       — every brand declares every A2 token
  4. unknown token allowlist  — every declared token is in schema or
                                 brand-extension allowlist
  5. A2 defaults parity       — defaults.css ↔ tokens.schema.ts
                                 fallback byte-equivalent

Verified on default + kami:
  - 26 A1 tokens declared in both brands
  - 26 A2 tokens declared in both brands
  - 129 total declarations, all match shared schema or brand extensions
  - defaults.css ↔ tokens.schema.ts parity holds
  - sanity test: drifting --motion-fast in defaults.css fails check 5
    with a clear divergence message

The PR description originally listed "Dedicated SCHEMA.md" as
explicitly NOT in this PR ("Once 3+ brands ship, extracting a single
source of truth becomes worthwhile"). That boundary moves: lefarcen's
review surfaced the schema-generalization risk, and the schema must
exist as a machine-enforced contract before the derive script can
read it. The TS file replaces the markdown that was deferred.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(web/tests): pass missing designTemplates prop to ProjectView

Pre-existing typecheck regression on main: PR #955 (b5eb8c16,
"generic skills + split skills/design-templates + finalize-design
API") added required `designTemplates: SkillSummary[]` to ProjectView
Props but updated only two of the three test fixtures that render
ProjectView directly. The third — ProjectView.api-empty-response.test.tsx
— was missed, so `pnpm typecheck` (and CI on any PR merging into
main) fails on:

  apps/web/tests/components/ProjectView.api-empty-response.test.tsx
    (168,6): error TS2741: Property 'designTemplates' is missing in
    type ...

The other two ProjectView tests already pass `designTemplates={[]}`,
so this aligns this fixture with the existing pattern. Out of scope
for #1231 strictly, but the regression blocks the merged-state
typecheck CI runs that #1231 triggers, and the one-line fix here
restores main's typecheck health for everyone.

Co-authored-by: Cursor <cursoragent@cursor.com>

* feat(design-systems): enforce B-slot required tokens in pnpm guard

Closes mrcfps + lefarcen review comment thread on #1231:

> The guard validates A2 required tokens here, but there's no
> sibling check for B-slot aliases (--fg-2, --meta, --surface-warm,
> --border-soft). Per the schema docs, every brand must declare
> A1 + A2 + B-slot names so shared components can safely read
> var(--fg-2) etc. Without a B-slot guard, a brand can omit those
> aliases, pass pnpm guard, and break any artifact that references
> them.

Same artifact-paste constraint as A2: agents render artifacts by
pasting one brand's :root block into a single <style>; there is no
runtime cascade, so a missing B-slot makes any var(--fg-2) reference
resolve to nothing. Until now the schema narrative claimed B-slots
were optional with a var() default, but no machine check enforced
declaration — a contract gap reviewers reasonably refused to merge.

This commit closes the gap in three places so machine and narrative
agree:

1. scripts/check-tokens-fixture-sync.ts
   - Add checkDesignSystemBSlotRequiredTokens, mirroring the A2
     check but using getBSlotNames() from the schema.
   - Failure message names each missing slot AND the schema-suggested
     alias (--fg-2 (default alias: var(--fg))) so a brand author
     fixing the failure has a copy-pasteable resolution.
   - Renumber section comments: 5 checks → 6 checks.

2. scripts/guard.ts
   - Register the new check between A2 required and unknown
     allowlist so failures attribute to a specific contract.

3. design-systems/_schema/AGENTS.md
   - Update the layer table: B-slot row's "If omitted" column
     changes from "resolves via var() to a richer sibling" to
     "guard fails — brand must declare, either as var(--sibling)
     (collapsed) or independent value (richer)".
   - Add a "Why B-slot is required (and what the alias is for)"
     section that distinguishes the schema-suggested alias from a
     runtime fallback, with worked examples for default (alias) and
     kami (independent bind).

Verified on default + kami:
- pnpm guard passes all 6 design-system checks
- 4 B-slot tokens declared in both brands (default aliases via var(),
  kami binds independently — both forms satisfy the contract)
- pnpm typecheck clean across the workspace
- Sanity test: removing --fg-2 + --meta from default/tokens.css fires
  the new guard with a precise per-token alias hint:
    [default] design-systems/default/tokens.css is missing 2 B-slot
    tokens (alias the named sibling via var(...) or bind
    independently):
      --fg-2 (default alias: var(--fg)),
      --meta (default alias: var(--muted))

The schema contract is now machine-enforced end-to-end (A1 + A2 +
B-slot all required-with-fixed-form-of-fallback). The derive script
in PR-B can rely on every brand's tokens.css containing every shared
slot name.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(e2e): skip leading-underscore meta-directories under design-systems/

CI for #1231 went red on `Validate workspace` after merging origin/main.
Cause is a clean collision between two recently-landed changes:

- main #1270 (be77dc03 "Default English resource i18n fallback")
  tightened tests/localized-content.test.ts so every directory under
  design-systems/ is run through assertResourceId() with the strict
  RESOURCE_ID_PATTERN /^[a-z0-9][a-z0-9-]*$/.

- this branch #1231 introduced design-systems/_schema/ as the home
  of the shared token contract (tokens.schema.ts, defaults.css,
  AGENTS.md). The leading underscore signals "meta-directory, not
  brand" — the same convention SCSS partials, Jekyll, Hugo all use.

The two changes never met until CI built the merge commit, where
assertResourceId('_schema') deterministically failed:

  Error: Design system directory _schema has malformed resource id: _schema
    at invariant tests/localized-content.test.ts:66:11
    at assertResourceId tests/localized-content.test.ts:71:3
    at readDesignSystemResources tests/localized-content.test.ts:202:8

Fix tightens readDesignSystemResources's directory filter so the
leading-underscore convention is recognised explicitly:

    .filter((entry) => entry.isDirectory() && !entry.name.startsWith('_'))

This aligns with what apps/daemon/src/design-systems.ts:listDesignSystems
already does implicitly — it requires DESIGN.md per directory, so
_schema/ was always invisible at runtime; the test was the only place
that surfaced it.

Verified locally on the post-merge tree:
- pnpm test (e2e vitest) — tests/localized-content.test.ts: 4 passed
- pnpm guard — all 6 design-system checks pass on default + kami
- pnpm typecheck — clean across the workspace (after pnpm install
  to pull deps for tools/pr that arrived with main)

The fix is intentionally narrow (one filter line in one test) and
documents the convention inline so future meta-directories under
design-systems/ (e.g. _archive/, _drafts/) are covered for free.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: chaoxiaoche <chaoxiaoche@192.168.10.16>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 22:23:34 +08:00
..
_schema feat(design-systems): add structured tokens.css schema (default + kami) (#1231) 2026-05-11 22:23:34 +08:00
agentic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
airbnb Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
airtable Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
ant update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
apple Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
application update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
arc feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
artistic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
atelier-zero feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
bento update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
binance Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
bmw Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
bmw-m Add BMW M design system (#579) 2026-05-08 12:49:32 +08:00
bold update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
brutalism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
bugatti Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
cafe update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
cal Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
canva feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
cisco Add Cisco and Webex design systems (#991) 2026-05-09 09:02:19 +08:00
claude Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
clay Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
claymorphism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
clean update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
clickhouse Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
cohere Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
coinbase Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
colorful update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
composio Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
contemporary update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
corporate update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
cosmic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
creative update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
cursor Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
dashboard update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
default feat(design-systems): add structured tokens.css schema (default + kami) (#1231) 2026-05-11 22:23:34 +08:00
discord feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
dithered update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
doodle update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
dramatic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
duolingo feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
editorial update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
elegant update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
elevenlabs Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
energetic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
enterprise update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
expo Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
expressive update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
fantasy update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
ferrari Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
figma Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
flat update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
framer Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
friendly update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
futuristic update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
github feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
glassmorphism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
gradient update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
hashicorp Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
hud feat(design-systems): add hud, loom, trading-terminal with locale coverage (#1069) 2026-05-09 19:28:19 +08:00
huggingface feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
ibm Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
intercom Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
kami feat(design-systems): add structured tokens.css schema (default + kami) (#1231) 2026-05-11 22:23:34 +08:00
kraken Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
lamborghini Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
levels update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
linear-app Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
lingo update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
loom feat(design-systems): add hud, loom, trading-terminal with locale coverage (#1069) 2026-05-09 19:28:19 +08:00
lovable Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
luxury update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
mastercard Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
material update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
meta Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
minimal update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
minimax Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
mintlify Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
miro Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
mission-control feat(design-systems): add Mission Control design system (#858) 2026-05-08 12:32:51 +08:00
mistral-ai Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
modern update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
mongodb Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
mono update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
neobrutalism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
neon update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
neumorphism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
nike Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
notion Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
nvidia Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
ollama Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
openai feat(web): add brand design systems, card thumbnails, and DESIGN.md side-by-side preview (#289) 2026-05-02 23:19:00 +08:00
opencode-ai Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
pacman update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
paper update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
perspective update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
pinterest Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
playstation Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
posthog Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
premium update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
professional update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
publication update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
raycast Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
refined update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
renault Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
replicate Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
resend Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
retro update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
revolut Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
runwayml Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
sanity Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
sentry Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
shadcn update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
shopify Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
simple update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
skeumorphism update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
slack feat(design-systems): add Slack design system (#899) 2026-05-09 09:02:27 +08:00
sleek update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
spacex Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
spacious update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
spotify Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
starbucks Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
storytelling update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
stripe Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
supabase Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
superhuman Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
tesla Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
tetris update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
theverge Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
together-ai Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
totality-festival feat(skills): add social-media-dashboard skill + Totality Festival design system (#678) 2026-05-06 21:50:23 +08:00
trading-terminal feat(design-systems): add hud, loom, trading-terminal with locale coverage (#1069) 2026-05-09 19:28:19 +08:00
uber Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
urdu feat(design-systems): add Urdu Modern (Indus Script) system (#714) 2026-05-08 13:05:55 +08:00
vercel Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
vibrant update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
vintage update: add 57 DESIGN.md files from awesome-design-skills (#92) 2026-05-01 16:57:25 +08:00
vodafone Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
voltagent Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
warm-editorial Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
warp Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
webex Add Cisco and Webex design systems (#991) 2026-05-09 09:02:19 +08:00
webflow Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
wechat feat: add WeChat design system, login-flow skill, and fix API mode tool_calls bug (#1083) 2026-05-10 20:38:33 +08:00
wired Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
wise Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
x-ai Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
xiaohongshu docs(xiaohongshu): address review feedback from #24 (#54) 2026-05-01 10:38:19 +08:00
zapier Add initial project structure with essential files 2026-04-28 12:25:59 +08:00
README.md Add Cisco and Webex design systems (#991) 2026-05-09 09:02:19 +08:00

Design Systems

Each subfolder is a portable design system in DESIGN.md format. Pick one in the top-bar Design system dropdown and every skill will read it as part of its system prompt.

What's bundled

  • default/ — Neutral Modern. Hand-authored starter for the OD spec.
  • warm-editorial/ — Warm Editorial. Hand-authored serif starter.
  • atelier-zero/ — Atelier Zero. Hand-authored magazine-grade collage system: warm paper canvas, plaster-and-architecture imagery, oversized italic-mixed display type, Roman-numeral section markers, side rails of rotated micro-text, coordinate annotations, single coral accent. Pairs with skills/open-design-landing/ and skills/open-design-landing-deck/ for the canonical landing-page and slide-deck renderings.
  • kami/ — 紙 / 纸. Editorial paper system distilled from tw93/kami (MIT). Warm parchment canvas, ink-blue accent, serif at one weight, no italic, no cool grays. Pairs with the templates/kami-deck.html starter for slide work.
  • 57 design skills, sourced from bergside/awesome-design-skills and added directly as normalized 9-section DESIGN.md files.
  • 72 product systems, including 70 imported from VoltAgent/awesome-design-md (the getdesign@latest npm package, MIT-licensed), plus two hand-authored additions (cisco, webex). This table covers that imported product-system subset only; the full bundled catalog is larger once you include the hand-authored starters and the separate design-skill systems listed above. One folder per brand:
    Category Systems
    AI & LLM claude · cohere · elevenlabs · minimax · mistral-ai · ollama · opencode-ai · replicate · runwayml · together-ai · voltagent · x-ai
    Developer Tools cursor · expo · lovable · raycast · superhuman · vercel · warp
    Productivity & SaaS cal · intercom · linear-app · mintlify · notion · resend · webex · zapier
    Backend & Data cisco · clickhouse · composio · hashicorp · mongodb · posthog · sanity · sentry · supabase
    Design & Creative airtable · clay · figma · framer · miro · webflow
    Fintech & Crypto binance · coinbase · kraken · mastercard · revolut · stripe · wise
    E-Commerce & Retail airbnb · meta · nike · shopify · starbucks
    Media & Consumer apple · ibm · nvidia · pinterest · playstation · spacex · spotify · theverge · uber · vodafone · wired · xiaohongshu
    Automotive bmw · bugatti · ferrari · lamborghini · renault · tesla

Folders use ASCII slugs — dotted brands are normalized (linear.applinear-app, x.aix-ai, etc.).

File shape

The first H1 is the title shown in the picker. The line immediately after the H1 is parsed for > Category: <name> and used to group the dropdown:

# Design System Inspired by Cohere

> Category: AI & LLM
> Enterprise AI platform. Vibrant gradients, data-rich dashboard aesthetic.

## 1. Visual Theme & Atmosphere
...

Both the boilerplate prefix Design System Inspired by and the > Category: ... line are stripped from the dropdown label and the summary preview at runtime — they're only metadata.

Adding your own

Drop a new folder containing a DESIGN.md and it shows up on next refresh. Add a > Category: <Group> line to slot it under an existing group, or use any new label and it lands at the bottom of the dropdown.

Refreshing the bundled set

The 70 imported product systems are pulled from the upstream npm package. To re-sync to the latest hashes:

curl -sL $(npm view getdesign dist.tarball) -o /tmp/getdesign.tgz
tar -xzf /tmp/getdesign.tgz -C /tmp
node --experimental-strip-types scripts/sync-design-systems.ts

For now, the original importer lives at the top of the excessive-climb branch — re-run it against a fresh tarball.

Attribution

The 70 imported product systems are sourced from VoltAgent/awesome-design-md (MIT, © VoltAgent contributors). They are aesthetic inspirations — none of them are official assets of the brands they reference.

The cisco/ and webex/ systems are hand-authored additions based on the current public Cisco and Webex / Momentum visual languages.

The kami/ system adapts tokens, type rules, and the "ten invariants" from tw93/kami (MIT, © Tw93 and contributors), a Claude skill for typesetting professional documents and slide decks.

The 57 design skills are sourced from bergside/awesome-design-skills.