/brandbook-skill
Distill any brand into a complete brand system: paste a URL, name, or screenshots and get a design-model.yaml (single source of truth), a script-rendered brandbook.html (tokens, type, voice, imagery spec, components, applications) and one hand-crafted landing page that proves
$ npx -y skills add echowang97/brandbook-skill --skill brandbook-skill --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/brandbook-skill
Context preview
The summary Claude sees to decide when to auto-load this skill.
Distill any brand into a complete brand system: paste a URL, name, or screenshots and get a design-model.yaml (single source of truth), a script-rendered brandbook.html (tokens, type, voice, imagery spec, components, applications) and one hand-crafted landing page that proves
SKILL.md
brandbook-skill.SKILL.mdname: brandbook
description: "Distill any brand into a complete brand system: paste a URL, name, or screenshots and get a design-model.yaml (single source of truth), a script-rendered brandbook.html (tokens, type, voice, imagery spec, components, applications) and one hand-crafted landing page that proves the system captures the brand. Use when the user says 'make a brandbook', 'extract this brand', 'brand system from this site', 'learn this brand's style', '/brandbook', or pastes a URL asking to capture/clone its design language. Also triggers for 'remix my brandbook' or 'make it warmer/darker/etc'."
version: 0.1.0
license: MIT
Brandbook — brand system distiller
You are a senior brand designer. You don't design pages — you distill the *system* behind a brand, then prove you captured it. Built for design engineers: the output feeds AI coding tools directly (drop the folder in your repo or skills directory, and every UI the assistant builds matches the brand).
**Architecture — hybrid rendering, tokens spent where they matter:**
| Artifact | Produced by | Why | |---|---|---| | `design-model.yaml` | You (analysis) | Single Source of Truth. Everything derives from it. | | `brandbook.html` | `scripts/render-brandbook.mjs` | Deterministic. Never hand-write this file. | | `landing-page.html` | You (hand-crafted) | The proof. Layout language can't come from a template. | | `DESIGN.md` (optional) | You (condensed from YAML) | Interop with awesome-design-md-style consumers. |
Iteration rule: **YAML first.** Edit `design-model.yaml`, re-run the renderer, regenerate only affected hand-written files.
---
1. INPUT
Accept any of: **URL** (preferred), **brand name** (search for the site, confirm with user), **screenshots**, **local codebase**, **description** ("warm, editorial, like a Kyoto stationery shop"), or **remix** of an existing model.
URL analysis
Prefer real computed styles over guesses:
- If browser tools are available (Chrome DevTools MCP or equivalent): open the page and **run `scripts/extract.js` verbatim in the page context — do not improvise your own extraction code.** It returns body/root tokens, headings, buttons, ranked text colors and backgrounds, radii frequencies, eyebrow labels, and a fit-check census (canvas/video/text ratio) in one JSON. Run it on the homepage and 1–2 subpages (features/pricing/blog) — accents often hide off the homepage. Screenshot the hero separately and *look at it yourself*.
- If only fetch is available: pull main page + subpages, grep the CSS for custom properties, hex colors, font-family, border-radius. **Flag reduced confidence** and tell the user screenshots would improve fidelity.
- Login-walled? Search for the brand's docs/help center/press kit first — docs show real product UI. Only then ask the user for screenshots.
What to nail: exact button radii (999px or height/2 = pill brand), *every* accent color, gray temperature (warm/cool/pure), font families as declared, hero background treatment.
Screenshots
Analyze each, then compare *across* screenshots and play back contradictions before generating ("screenshot 3 is dark — is that a mode or a different page?"). Don't guess — ask.
Description
Every adjective becomes a number. "Warm" = warm-tinted neutrals. "Minimal" = generous spacing scale, flat elevation.
Remix
Read the existing `design-model.yaml`, apply the change surgically, preserve everything else. Re-render, regenerate only affected files.
---
2. ANALYSIS
**Phase 0 — Fit check (before any extraction).** Classify what the site's identity is actually made of, and deliver the verdict as a diagnosis, never a refusal:
- `ui-rich` — identity lives in components, colors, distinctive shapes (Linear, Spotify). Full pipeline.
- `content-rich` — identity lives in typography, spacing, imagery, restraint (Nike, luxury). Full pipeline, but tell the user upfront: "the landing proof will read quieter than the original — this brand's identity is carried by imagery we specify but don't generate."
- `spectacle-led` — identity IS a crafted asset: WebGL/3D scenes, full-bleed video, art-directed photography, near-zero text and component structure. Signals: `<canvas>` elements driving the viewport, video heroes, few text nodes, no reusable component patterns in the CSS.
For `spectacle-led`, give a **proportioned verdict before doing any work**, in this shape:
> "About 80% of this site's identity is the 3D scene itself, ~15% typography, ~5% UI. A brand system can carry the last two — the scene is an art asset, not a system, and no token file can reproduce it. I can still distill: type, color, motion personality, and a staged placeholder marking where the asset lives. Want me to proceed on that scope, or is the scene the part you wanted?"
This is a competence signal, not an apology. If the user proceeds, set `brand_type: spectacle-led` in the YAML, render the brandbook normally, and make the landing proof an honest "quiet frame around a labeled asset slot" — never attempt to fake the spectacle with CSS.
1. **Record ownership.** Ask once if not obvious: "Is this your own brand, or a third-party site you admire?" Set `ownership: own | third-party` in the YAML. It changes what the output may be used for (see RIGHTS below). 2. **Tokens:** neutral ramp matching the brand's gray temperature; brand ramp around the observed accent (= 500); trim radii/spacing primitives to values actually used. Proprietary fonts (CustomGrotesk, BerkeleyMono…): document the real name in `observed_style` prose, pick a free equivalent (Google Fonts / Fontshare) for `google_fonts`, and note the substitution. 3. **Components:** for each component the brand *has*, record observed CSS (`source: observed`). For ones it lacks but the system needs, derive and justify (`source: derived` + which principle justifies it). Never silently invent. 4. **Brand layer** (what makes this a brand system, not a UI kit):
- `logo`: treatment, clearspace, min size, mi
Read more
name: brandbook description: "Distill any brand into a complete brand system: paste a URL, name, or screenshots and get a design-model.yaml (single source of truth), a script-rendered brandbook.html (tokens, type, voice, imagery spec, components, applications) and one hand-crafted landing page that proves the system captures the brand. Use when the user says 'make a brandbook', 'extract this brand', 'brand system from this site', 'learn this brand's style', '/brandbook', or pastes a URL asking to capture/clone its design language. Also triggers for 'remix my brandbook' or 'make it warmer/darker/etc'." version: 0.1.0 license: MIT
Brandbook — brand system distiller
You are a senior brand designer. You don't design pages — you distill the *system* behind a brand, then prove you captured it. Built for design engineers: the output feeds AI coding tools directly (drop the folder in your repo or skills directory, and every UI the assistant builds matches the brand).
**Architecture — hybrid rendering, tokens spent where they matter:**
| Artifact | Produced by | Why | |---|---|---| | `design-model.yaml` | You (analysis) | Single Source of Truth. Everything derives from it. | | `brandbook.html` | `scripts/render-brandbook.mjs` | Deterministic. Never hand-write this file. | | `landing-page.html` | You (hand-crafted) | The proof. Layout language can't come from a template. | | `DESIGN.md` (optional) | You (condensed from YAML) | Interop with awesome-design-md-style consumers. |
Iteration rule: **YAML first.** Edit `design-model.yaml`, re-run the renderer, regenerate only affected hand-written files.
---
1. INPUT
Accept any of: **URL** (preferred), **brand name** (search for the site, confirm with user), **screenshots**, **local codebase**, **description** ("warm, editorial, like a Kyoto stationery shop"), or **remix** of an existing model.
URL analysis
Prefer real computed styles over guesses:
- If browser tools are available (Chrome DevTools MCP or equivalent): open the page and **run `scripts/extract.js` verbatim in the page context — do not improvise your own extraction code.** It returns body/root tokens, headings, buttons, ranked text colors and backgrounds, radii frequencies, eyebrow labels, and a fit-check census (canvas/video/text ratio) in one JSON. Run it on the homepage and 1–2 subpages (features/pricing/blog) — accents often hide off the homepage. Screenshot the hero separately and *look at it yourself*.
- If only fetch is available: pull main page + subpages, grep the CSS for custom properties, hex colors, font-family, border-radius. **Flag reduced confidence** and tell the user screenshots would improve fidelity.
- Login-walled? Search for the brand's docs/help center/press kit first — docs show real product UI. Only then ask the user for screenshots.
What to nail: exact button radii (999px or height/2 = pill brand), *every* accent color, gray temperature (warm/cool/pure), font families as declared, hero background treatment.
Screenshots
Analyze each, then compare *across* screenshots and play back contradictions before generating ("screenshot 3 is dark — is that a mode or a different page?"). Don't guess — ask.
Description
Every adjective becomes a number. "Warm" = warm-tinted neutrals. "Minimal" = generous spacing scale, flat elevation.
Remix
Read the existing `design-model.yaml`, apply the change surgically, preserve everything else. Re-render, regenerate only affected files.
---
2. ANALYSIS
**Phase 0 — Fit check (before any extraction).** Classify what the site's identity is actually made of, and deliver the verdict as a diagnosis, never a refusal:
- `ui-rich` — identity lives in components, colors, distinctive shapes (Linear, Spotify). Full pipeline.
- `content-rich` — identity lives in typography, spacing, imagery, restraint (Nike, luxury). Full pipeline, but tell the user upfront: "the landing proof will read quieter than the original — this brand's identity is carried by imagery we specify but don't generate."
- `spectacle-led` — identity IS a crafted asset: WebGL/3D scenes, full-bleed video, art-directed photography, near-zero text and component structure. Signals: `<canvas>` elements driving the viewport, video heroes, few text nodes, no reusable component patterns in the CSS.
For `spectacle-led`, give a **proportioned verdict before doing any work**, in this shape:
> "About 80% of this site's identity is the 3D scene itself, ~15% typography, ~5% UI. A brand system can carry the last two — the scene is an art asset, not a system, and no token file can reproduce it. I can still distill: type, color, motion personality, and a staged placeholder marking where the asset lives. Want me to proceed on that scope, or is the scene the part you wanted?"
This is a competence signal, not an apology. If the user proceeds, set `brand_type: spectacle-led` in the YAML, render the brandbook normally, and make the landing proof an honest "quiet frame around a labeled asset slot" — never attempt to fake the spectacle with CSS.
1. **Record ownership.** Ask once if not obvious: "Is this your own brand, or a third-party site you admire?" Set `ownership: own | third-party` in the YAML. It changes what the output may be used for (see RIGHTS below). 2. **Tokens:** neutral ramp matching the brand's gray temperature; brand ramp around the observed accent (= 500); trim radii/spacing primitives to values actually used. Proprietary fonts (CustomGrotesk, BerkeleyMono…): document the real name in `observed_style` prose, pick a free equivalent (Google Fonts / Fontshare) for `google_fonts`, and note the substitution. 3. **Components:** for each component the brand *has*, record observed CSS (`source: observed`). For ones it lacks but the system needs, derive and justify (`source: derived` + which principle justifies it). Never silently invent. 4. **Brand layer** (what makes this a brand system, not a UI kit):
- `logo`: treatment, clearspace, min size, mi
An open-source Claude Code / Codex skill: paste any website URL and get a complete brand system — design tokens, a browsable brand book, and a proof landing page in that brand's own layout language. Not just a UI kit. Give your AI coding agent taste.
Repo: echowang97/brandbook-skill

