Adding a Theme
A theme is a complete visual identity for the presence and every generated surface. Adding one means defining its tokens (for the presence), its handbook (for the AI), and registering it.What a theme consists of
- Presence tokens — the CSS variable set that restyles the orb, bubble, and cards.
- A handbook —
design-guideline/<theme>.md, the canonical design contract the AI must read before generating a surface for the theme. - Registration — so onboarding and
set_themeknow about it.
1. Define the presence tokens
Inv2/host/presence.css, add a .presence[data-theme="my-theme"] token block, mirroring the existing themes. Define the palette and identity:
liquid-glass, y2k-frutiger, etc. are built). Keep the theme cohesive — palette, fonts, border style, and radius should all express one identity.
2. Write the handbook
Createdesign-guideline/my-theme.md. This is the contract the AI reads via get_ux_ui_strict_guidelines before building any surface in your theme. Cover:
- The palette (exact colors) and when to use each.
- Typography — display vs. body vs. mono, scale, weights.
- Spacing & layout rules.
- Components — how buttons, cards, inputs, lists should look.
- Motion — what’s allowed.
- Dos and don’ts — the identity guardrails.
3. Register the theme
- Add it to the theme list (
shell/themes/index.jsfor the classic shell; the presence readsdata-themefrom config for v2). - Make sure the theme alias normalizer recognizes its name (so
set_theme name="my-theme"and any short aliases resolve). The presence and the MCP marketplace both normalize theme names.
4. (Optional) theme the marketplace
The MCP marketplace window follows the active theme. To make it match yours, add a[data-theme="my-theme"] palette block in v2/host/mcp-marketplace.css (the --bg, --surface, --ink, --accent, --sans, etc. variables).
Conventions
- The default aesthetic is strict B&W — your theme is a deliberate, opinionated departure. Within the theme, commit fully to its identity.
- Each theme gets a
user-extras.css(one of the few source-tree files the AI may write) — the canvas for small per-theme decorations the AI/dreams add.
Checklist
-
.presence[data-theme="my-theme"]tokens + styling inpresence.css. -
design-guideline/my-theme.mdhandbook. - Registered + alias-normalized so
set_themeresolves it. - (Optional) marketplace palette block.
- Looks cohesive across orb, bubble, cards, and a generated surface.