brand — build an organization brand
Create and maintain an org's brand as a folder the whole platform reads:
colors, type, voice, logo and a deck theme. Use this whenever someone asks to
"set up our brand", "make a brand kit", "apply our colors/fonts", or before
producing branded artifacts (decks, pages, emails). One brand = one folder;
everything that generates output consumes it.
Quick reference
| Task |
How |
| See a complete example |
read examples/tokens.css and examples/brand.md (in this skill folder) |
| Create a brand |
write the files into org/home/brands/<name>/ (steps below) |
| Build a deck theme |
slides-create … --theme org/home/brands/<name>/slides-theme.html (see the slides skill) |
| Edit later |
the user edits it in Studio's Library → Brands (or you rewrite the files) |
Convention
A brand is org/home/brands/<name>/ (<name> is lowercase kebab, e.g.
acme):
| File |
What |
tokens.css |
Visual source of truth — CSS custom properties in the --brand-* namespace. |
brand.md |
The brand bible — voice, tone, color/type usage, components, do/don't (prose for agents). |
logo.svg (or .png) |
The logo. Name it logo.*. |
slides-theme.html |
Optional deck theme for the slides skill. |
The Library renders this folder as a first-class Brand (color bands, type
specimens, components & deck preview, all editable). Keep the file and token
names exactly as below so it groups them correctly.
tokens.css — the token system
Everything lives under --brand-* in :root. Use these families/names — the
Library editor groups by them and consumers (decks, pages) map onto them:
- Color ramps —
--brand-<family>-50 … 950 (11 steps) for primary,
secondary, accent, neutral; plus a flat alias --brand-primary (= the
500), --brand-secondary, --brand-accent for the common case.
- Semantic —
--brand-{success,warning,error,info}, each with -bg and
-fg variants.
- Surfaces / text (roles) —
--brand-bg, --brand-bg-subtle,
--brand-bg-elevated, --brand-fg, --brand-fg-muted, --brand-fg-subtle,
--brand-border, --brand-border-strong, --brand-ring.
- Type —
--brand-font-display, --brand-font-body, --brand-font-mono;
scale --brand-text-xs … 5xl; weights --brand-fw-{regular,medium,semibold, bold}; --brand-leading-*, --brand-tracking-*. Load web fonts with an
@import at the top of the file.
- Spacing —
--brand-space-1 … 20 (4px base).
- Radius —
--brand-radius + --brand-radius-{sm,md,lg,xl,full}.
- Shadows —
--brand-shadow-{sm,md,lg} (+ an optional brand glow).
- Motion —
--brand-duration-{fast,base,slow}, --brand-ease.
Copy examples/tokens.css (in this skill folder) and retune it. Minimum
viable brand: --brand-primary, --brand-bg, --brand-fg,
--brand-font-display, --brand-font-body, --brand-radius — add ramps,
semantics and roles as the brand grows. Build ramps around the seed colors
(lighten toward 50, darken toward 950); derive a neutral ramp and semantic
greens/ambers/reds when not provided.
brand.md — the bible
Prose the agent follows when writing copy or designing. Structure (see
examples/brand.md in this skill folder):
- Optional frontmatter:
name + description.
- Concept — what the brand feels like, in 2–3 adjectives.
- Color — each role and when to use it, plus rules (e.g. max N strong
colors per view; never color without an icon/label).
- Typography — display vs body; heading style.
- Voice & tone — person, tense, do/don't, with canonical examples
(hero, primary/secondary CTA, error, empty state).
- Components — recipes (button variants, card, input, badge, chip).
- Do / Don't — a tight checklist.
Be specific and opinionated — vague guidance ("be friendly") is useless;
canonical example strings are gold.
logo
Save as logo.svg (preferred) or logo.png. An SVG using currentColor or
brand vars adapts to light/dark surfaces.
slides-theme.html — branded decks
A brand can ship a deck theme so every generated deck is on-brand. It is a
real deck (the slides skill's "deck-as-theme"): a complete deck whose
<deck-viewer> holds one example <section> per layout, with the shell's
:root mapping --deck-*: var(--brand-*) and a snapshot of the brand tokens
inlined (decks must be self-contained). Build it once:
Copy a built-in theme from the slides skill's themes/ folder (pick the
light/dark one closest to the brand), retune its :root to map the deck
variables onto the brand tokens, and @import the brand fonts.
Render a sample deck into it so it opens editable in Studio (use the
slides skill's examples/deck.json, or author a small one):
slides-create --data @deck.json \
--theme <retuned-theme.html> \
--output org/home/brands/<name>/slides-theme.html
Decks then use it: slides-create --theme org/home/brands/<name>/slides-theme.html … (full flow in the slides skill).
Building a brand — workflow
- Gather inputs: brand name, a primary color (+ any secondary/accent),
fonts, voice notes, logo. Ask for what's missing; infer sensible defaults
from the primary (neutral ramp, semantic colors).
mkdir org/home/brands/<name>/.
- Write
tokens.css — copy the example, swap in the colors/fonts, build
the ramps around the seed colors.
- Write
brand.md — the bible, with real canonical copy examples.
- Add
logo.*.
- Optionally generate
slides-theme.html (above).
- Tell the user it's in the Library under Brands, editable there.
Never reference tokens.css by URL from a preview iframe (opaque origin
carries no cookies) — consumers inline its contents.
1---2name: brand3description: brand — build an organization brand4---5# brand — build an organization brand67Create and maintain an org's brand as a folder the whole platform reads:8colors, type, voice, logo and a deck theme. Use this whenever someone asks to9"set up our brand", "make a brand kit", "apply our colors/fonts", or before10producing branded artifacts (decks, pages, emails). One brand = one folder;11everything that generates output consumes it.1213## Quick reference1415| Task | How |16| --- | --- |17| See a complete example | read `examples/tokens.css` and `examples/brand.md` (in this skill folder) |18| Create a brand | write the files into `org/home/brands/<name>/` (steps below) |19| Build a deck theme | `slides-create … --theme org/home/brands/<name>/slides-theme.html` (see the `slides` skill) |20| Edit later | the user edits it in Studio's Library → Brands (or you rewrite the files) |2122## Convention2324A brand is `org/home/brands/<name>/` (`<name>` is lowercase kebab, e.g.25`acme`):2627| File | What |28| --- | --- |29| `tokens.css` | Visual source of truth — CSS custom properties in the `--brand-*` namespace. |30| `brand.md` | The brand bible — voice, tone, color/type usage, components, do/don't (prose for agents). |31| `logo.svg` (or `.png`) | The logo. Name it `logo.*`. |32| `slides-theme.html` | Optional deck theme for the `slides` skill. |3334The Library renders this folder as a first-class **Brand** (color bands, type35specimens, components & deck preview, all editable). Keep the file and token36names exactly as below so it groups them correctly.3738## tokens.css — the token system3940Everything lives under `--brand-*` in `:root`. Use these families/names — the41Library editor groups by them and consumers (decks, pages) map onto them:4243- **Color ramps** — `--brand-<family>-50 … 950` (11 steps) for `primary`,44 `secondary`, `accent`, `neutral`; plus a flat alias `--brand-primary` (= the45 500), `--brand-secondary`, `--brand-accent` for the common case.46- **Semantic** — `--brand-{success,warning,error,info}`, each with `-bg` and47 `-fg` variants.48- **Surfaces / text (roles)** — `--brand-bg`, `--brand-bg-subtle`,49 `--brand-bg-elevated`, `--brand-fg`, `--brand-fg-muted`, `--brand-fg-subtle`,50 `--brand-border`, `--brand-border-strong`, `--brand-ring`.51- **Type** — `--brand-font-display`, `--brand-font-body`, `--brand-font-mono`;52 scale `--brand-text-xs … 5xl`; weights `--brand-fw-{regular,medium,semibold,53 bold}`; `--brand-leading-*`, `--brand-tracking-*`. Load web fonts with an54 `@import` at the top of the file.55- **Spacing** — `--brand-space-1 … 20` (4px base).56- **Radius** — `--brand-radius` + `--brand-radius-{sm,md,lg,xl,full}`.57- **Shadows** — `--brand-shadow-{sm,md,lg}` (+ an optional brand glow).58- **Motion** — `--brand-duration-{fast,base,slow}`, `--brand-ease`.5960Copy `examples/tokens.css` (in this skill folder) and retune it. **Minimum61viable brand:** `--brand-primary`, `--brand-bg`, `--brand-fg`,62`--brand-font-display`, `--brand-font-body`, `--brand-radius` — add ramps,63semantics and roles as the brand grows. Build ramps around the seed colors64(lighten toward 50, darken toward 950); derive a neutral ramp and semantic65greens/ambers/reds when not provided.6667## brand.md — the bible6869Prose the agent follows when writing copy or designing. Structure (see70`examples/brand.md` in this skill folder):7172- Optional frontmatter: `name` + `description`.73- **Concept** — what the brand feels like, in 2–3 adjectives.74- **Color** — each role and when to use it, plus rules (e.g. max N strong75 colors per view; never color without an icon/label).76- **Typography** — display vs body; heading style.77- **Voice & tone** — person, tense, do/don't, with **canonical examples**78 (hero, primary/secondary CTA, error, empty state).79- **Components** — recipes (button variants, card, input, badge, chip).80- **Do / Don't** — a tight checklist.8182Be specific and opinionated — vague guidance ("be friendly") is useless;83canonical example strings are gold.8485## logo8687Save as `logo.svg` (preferred) or `logo.png`. An SVG using `currentColor` or88brand vars adapts to light/dark surfaces.8990## slides-theme.html — branded decks9192A brand can ship a deck theme so every generated deck is on-brand. It is a93**real deck** (the `slides` skill's "deck-as-theme"): a complete deck whose94`<deck-viewer>` holds one example `<section>` per layout, with the shell's95`:root` mapping `--deck-*: var(--brand-*)` and a snapshot of the brand tokens96inlined (decks must be self-contained). Build it once:97981. Copy a built-in theme from the `slides` skill's `themes/` folder (pick the99 light/dark one closest to the brand), retune its `:root` to map the deck100 variables onto the brand tokens, and `@import` the brand fonts.1012. Render a sample deck into it so it opens editable in Studio (use the102 `slides` skill's `examples/deck.json`, or author a small one):103104 ```sh105 slides-create --data @deck.json \106 --theme <retuned-theme.html> \107 --output org/home/brands/<name>/slides-theme.html108 ```109110Decks then use it: `slides-create --theme111org/home/brands/<name>/slides-theme.html …` (full flow in the `slides` skill).112113## Building a brand — workflow1141151. **Gather inputs:** brand name, a primary color (+ any secondary/accent),116 fonts, voice notes, logo. Ask for what's missing; infer sensible defaults117 from the primary (neutral ramp, semantic colors).1182. `mkdir org/home/brands/<name>/`.1193. Write **`tokens.css`** — copy the example, swap in the colors/fonts, build120 the ramps around the seed colors.1214. Write **`brand.md`** — the bible, with real canonical copy examples.1225. Add **`logo.*`**.1236. Optionally generate **`slides-theme.html`** (above).1247. Tell the user it's in the Library under **Brands**, editable there.125126Never reference `tokens.css` by URL from a preview iframe (opaque origin127carries no cookies) — consumers inline its contents.