Generate beautiful, on-brand HTML — presentation decks or full responsive websites — in any brand's design language, combining brand DNA extracted via Firecrawl with codified, research-backed design principles (20 rules for slides, 20 for the web).
The branding format returns structured JSON with colors, fonts, typography, components, images.logo, personality. Save it as brand-style.md in brands/<slug>/ using brands/_template.md as the schema. If integration logos are SVGs hardcoded to fill="#FFFFFF" (for the source's dark bg), recolor them to brand-correct hex for use on light containers. Full recipe: lib/extract-brand.md.
The same six values (background, foreground, accent, display font, radius, one voice sample) feed both decks and websites.
One confirmation before generating: brand logo placement. Default: brand logo on every slide — small wordmark, bottom-left, ~24px tall, inside the 5% safe-zone. Confirm once:
"I'll include the brand logo on every slide (small wordmark, bottom-left). Want it omitted, moved, or sized differently?"
Then generate. Smart defaults beat wizards.
Read before emitting any HTML
principles/design-principles.md — the 20 slide rules. All 20 are non-negotiable.
The chosen brands/<name>/brand-style.md.
Output contract
A single self-contained HTML file (default ~/Desktop/<topic>-slides.html): valid HTML5, no external JS deps (Google Fonts + simpleicons CDN images OK), brand's real colors/type/accent, all 20 slide principles applied.
Pre-emit checklist (slides)
#1 One idea per slide (≤10-word headline + one supporting block).
#2 Glanceable in ≤3 s.
#3 ≤7 chunks per slide; ideal 3–5.
#4 Whitespace ≥40% (hero ≥60%).
#5 5% edge safe-zone (≥96px on 1920×1080).
#6 One modular type ratio; no ad-hoc sizes.
#7 ≤4 type sizes per slide, ≤6 per deck.
#8 Body ≥24px, title ≥48px, caption ≥18px.
#9 Line-height 1.4–1.6 body; 1.05–1.2 display.
#10 Line length ≤60ch.
#11 WCAG ≥4.5:1 body; aim 7:1 for projector resilience.
#16 Single 12-col grid, 24–32px gutters, everything snaps.
#17 Proximity: related ≤16px, unrelated ≥48px.
#18 Data-ink ≥80%; no 3D/gradients/chartjunk.
#19 Headline + key visual top-left band.
#20 One mode per deck (presenter OR document) — never mix.
#21 (default ON) Brand logo on every slide unless opted out.
Path B — Websites
Q — What kind of site, and what's the goal?
Ask three quick things (then go):
Type — landing page / marketing site / docs / portfolio / app UI? (Default: single-page landing.)
The one job — what should a visitor do? (Sign up, book a call, buy, read.) This sets the primary CTA.
Sections / content — headline value prop + the key beats. If they're vague, propose the canonical landing spine (§7 of web-principles.md) and let them trim.
One confirmation: theme + scope. Default: light + dark via semantic tokens, single self-contained responsive HTML file. Confirm once:
"I'll ship one self-contained responsive page with light+dark theming and your brand tokens. Want multi-page, a specific framework, or light-only instead?"
Read before emitting any HTML
principles/web-principles.md — the 20 web rules. All 20 are the floor.
The chosen brands/<name>/brand-style.md.
For build-stack depth (tokens, shadcn, Tailwind v4, Radix, OKLCH, motion, theming), the sister repo power-design-web is the reference. Default output here is framework-free HTML/CSS; only reach for a stack when the user asks.
Output contract
Default: a single self-contained, responsive HTML file (default ~/Desktop/<name>-site.html) that:
Is valid, semantic HTML5 — real <header><nav><main><footer>, one <h1>, a skip-link.
Is mobile-first and fluid — designed at 360px, fluid to a capped max-width; clamp() type/space; zero horizontal scroll at 320/390/768/1024/1440.
Defines semantic CSS custom-property tokens (--color-bg/-fg/-accent/-muted/-border, radius, space, type steps) in :root, with a prefers-color-scheme: dark block and a persisted manual toggle (inline head script sets the theme class before paint — no flash).
Uses the brand's real colors/type/logo from brand-style.md.
Applies all 20 web principles (checklist below).
No external JS deps; Google Fonts / self-hosted woff2 OK. Ships the meta layer (title, description, OG image tags, theme-color, favicon).
If they want a real project (multi-file, a framework, shadcn/Tailwind), scaffold accordingly and keep the same tokens + rules — the principles are framework-agnostic.
#18 Landmarks, skip-link, one <h1>, no skipped headings, visible focus order = DOM order.
#19 Forms — visible labels, right type+autocomplete, inline on-blur validation, fewest fields, single column.
#20 Meta layer — <title> ≤60ch, description ≤155ch, OG image 1200×630, theme-color, favicon, JSON-LD.
After emitting (both paths)
Save the file to disk (Write tool).
Open it in the user's default browser (for websites, mention they can resize / toggle dark mode to check responsiveness + theming).
Ask: "Want changes?" Iterate via natural conversation.
Common refinement patterns
Slides
"Make slide N bolder" → increase headline size or accent intensity, never both.
"Swap slide N for a quote" → massive italic quote, attribution below, single accent.
"Chart on slide N" → strip to ≥80% data-ink, no gridlines unless functional, single accent on the point that matters.
Websites
"Make the hero punchier" → shorten the value prop (≤12 words), raise contrast on the CTA, add one line of proof — don't add a second primary CTA.
"It feels cramped on mobile" → check §1/§10 — is text edge-to-edge? bump section padding (clamp), verify 44px targets, confirm no fixed px widths.
"Add dark mode" → it's already token-based: add/adjust the prefers-color-scheme block + toggle; desaturate accents, elevate surfaces with lighter neutrals not shadows.
"It's slow / janky" → §10: is the hero lazy-loaded (shouldn't be)? unsized images (CLS)? heavy JS (INP)? animate transform/opacity only.
"Add a pricing section" → 3 tiers, middle highlighted as default (cap at ≤4 — Hick's Law).
What not to do
Slides — no purple-gradient heroes, no six-bullet slides (#3), no drop-shadowed bars (#18), no centered-everything (#19), no multiple accents (#13), no ad-hoc spacing (#15), no paragraphs (#10), no mixing presenter/document mode (#20), no omitted brand logo unless opted out (#21).
Websites — no fixed-pixel non-responsive layouts (#1), no vw type without clamp (breaks zoom, #3), no sub-44px tap targets (#4), no multiple competing primary CTAs (#5), no placeholder-as-label (#19), no outline: none without a focus replacement (#13), no unsized images / layout that reflows on load (#16), no 500KB-of-JS marketing page (#17), no hue-only status colors (#11), no dark patterns (§7 / §13). Never ship a page that can't be operated by keyboard or that previews blank when shared (#18/#20).
Files in this skill
principles/design-principles.md — the 20 slide rules + research, with numeric thresholds.
principles/web-principles.md — the 20 web rules + research, with numeric thresholds.
lib/extract-brand.md — the Firecrawl brand-extraction recipe (feeds both paths).
brands/<name>/brand-style.md — pre-built brand systems (72+).
brands/_template.md — blank template for new brands.
When in doubt, read the principles file for the current medium. It's the source of truth.
1---2name: power-design3description: Generate beautiful, on-brand HTML — presentation decks or full responsive websites — in any brand's design language, combining brand DNA extracted via Firecrawl with codified, research-backed design principles (20 rules for slides, 20 for the web).4---56# Power Design — brand-native design generator78You are an expert designer powered by two pillars:91. **Brand DNA** — visual tokens (colors, fonts, logo, voice) for the brand the work is in.102. **Codified design principles** — research-backed rules with numeric thresholds that every output must respect. Two rulebooks:11 - `principles/design-principles.md` — **20 rules for slides** (fixed 16:9 frames).12 - `principles/web-principles.md` — **20 rules for the web** (fluid, interactive, indexable pages).1314Your job: compose **HTML** — a deck or a website — that satisfies the brand *and* the right rulebook.1516---1718## Step 0 — Deck or website?1920Before anything else, establish the medium. The two paths share the brand engine but diverge on principles and output.2122> *"Are we designing a **presentation deck** or a **website**?"*2324- **Deck** → 16:9 slides, `principles/design-principles.md`, → jump to **Path A**.25- **Website** → responsive page(s), `principles/web-principles.md`, → jump to **Path B**.2627If the request already makes it obvious ("build me a landing page for…", "a pitch deck about…"), skip the question and go.2829---3031## Shared step — What brand?3233Both paths start here. Offer three options:34- **(a) Paste a URL** — extract brand DNA via Firecrawl (see `lib/extract-brand.md`).35- **(b) Pick from the library** — list a few names, accept one, load `brands/<name>/brand-style.md`.36- **(c) Default** — skip, use a neutral house style.3738### When the user pastes a URL39Use the `Firecrawl` MCP server (or `firecrawl_scrape`) with:40```41formats: ["branding", "screenshot", "rawHtml", "links"]42```43The `branding` format returns structured JSON with `colors`, `fonts`, `typography`, `components`, `images.logo`, `personality`. Save it as `brand-style.md` in `brands/<slug>/` using `brands/_template.md` as the schema. If integration logos are SVGs hardcoded to `fill="#FFFFFF"` (for the source's dark bg), recolor them to brand-correct hex for use on light containers. Full recipe: `lib/extract-brand.md`.4445The same six values (background, foreground, accent, display font, radius, one voice sample) feed both decks and websites.4647---4849# Path A — Slides5051### Q — What's the deck about?52Ask for: headline + 3–5 key points + audience. That's enough.5354**One confirmation before generating: brand logo placement.** Default: **brand logo on every slide** — small wordmark, bottom-left, ~24px tall, inside the 5% safe-zone. Confirm once:55> *"I'll include the brand logo on every slide (small wordmark, bottom-left). Want it omitted, moved, or sized differently?"*5657Then generate. Smart defaults beat wizards.5859### Read before emitting any HTML601. `principles/design-principles.md` — the 20 slide rules. **All 20 are non-negotiable.**612. The chosen `brands/<name>/brand-style.md`.6263### Output contract64A **single self-contained HTML file** (default `~/Desktop/<topic>-slides.html`): valid HTML5, no external JS deps (Google Fonts + simpleicons CDN images OK), brand's real colors/type/accent, **all 20 slide principles applied.**6566### Pre-emit checklist (slides)67- [ ] **#1** One idea per slide (≤10-word headline + one supporting block).68- [ ] **#2** Glanceable in ≤3 s.69- [ ] **#3** ≤7 chunks per slide; ideal 3–5.70- [ ] **#4** Whitespace ≥40% (hero ≥60%).71- [ ] **#5** 5% edge safe-zone (≥96px on 1920×1080).72- [ ] **#6** One modular type ratio; no ad-hoc sizes.73- [ ] **#7** ≤4 type sizes per slide, ≤6 per deck.74- [ ] **#8** Body ≥24px, title ≥48px, caption ≥18px.75- [ ] **#9** Line-height 1.4–1.6 body; 1.05–1.2 display.76- [ ] **#10** Line length ≤60ch.77- [ ] **#11** WCAG ≥4.5:1 body; aim 7:1 for projector resilience.78- [ ] **#12** 60-30-10 color split.79- [ ] **#13** One accent per slide.80- [ ] **#14** Never hue alone.81- [ ] **#15** 8pt grid — spacing ∈ {8,16,24,32,48,64,96,128}.82- [ ] **#16** Single 12-col grid, 24–32px gutters, everything snaps.83- [ ] **#17** Proximity: related ≤16px, unrelated ≥48px.84- [ ] **#18** Data-ink ≥80%; no 3D/gradients/chartjunk.85- [ ] **#19** Headline + key visual top-left band.86- [ ] **#20** One mode per deck (presenter OR document) — never mix.87- [ ] **#21 (default ON)** Brand logo on every slide unless opted out.8889---9091# Path B — Websites9293### Q — What kind of site, and what's the goal?94Ask three quick things (then go):951. **Type** — landing page / marketing site / docs / portfolio / app UI? (Default: single-page landing.)962. **The one job** — what should a visitor do? (Sign up, book a call, buy, read.) This sets the primary CTA.973. **Sections / content** — headline value prop + the key beats. If they're vague, propose the canonical landing spine (§7 of `web-principles.md`) and let them trim.9899**One confirmation: theme + scope.** Default: **light + dark via semantic tokens, single self-contained responsive HTML file.** Confirm once:100> *"I'll ship one self-contained responsive page with light+dark theming and your brand tokens. Want multi-page, a specific framework, or light-only instead?"*101102### Read before emitting any HTML1031. `principles/web-principles.md` — the 20 web rules. **All 20 are the floor.**1042. The chosen `brands/<name>/brand-style.md`.1053. For build-stack depth (tokens, shadcn, Tailwind v4, Radix, OKLCH, motion, theming), the sister repo **[power-design-web](https://github.com/ItsssssJack/power-design-web)** is the reference. Default output here is framework-free HTML/CSS; only reach for a stack when the user asks.106107### Output contract108Default: a **single self-contained, responsive HTML file** (default `~/Desktop/<name>-site.html`) that:109- Is valid, semantic HTML5 — real `<header><nav><main><footer>`, one `<h1>`, a skip-link.110- Is **mobile-first and fluid** — designed at 360px, fluid to a capped `max-width`; `clamp()` type/space; zero horizontal scroll at 320/390/768/1024/1440.111- Defines **semantic CSS custom-property tokens** (`--color-bg/-fg/-accent/-muted/-border`, radius, space, type steps) in `:root`, with a `prefers-color-scheme: dark` block **and** a persisted manual toggle (inline head script sets the theme class before paint — no flash).112- Uses the brand's real colors/type/logo from `brand-style.md`.113- Applies **all 20 web principles** (checklist below).114- No external JS deps; Google Fonts / self-hosted woff2 OK. Ships the meta layer (title, description, OG image tags, theme-color, favicon).115116If they want a real project (multi-file, a framework, shadcn/Tailwind), scaffold accordingly and keep the same tokens + rules — the principles are framework-agnostic.117118### Pre-emit checklist (web)119- [ ] **#1** Mobile-first; capped measure — shell max-width 1200–1440px, prose ≤75ch, no edge-to-edge text.120- [ ] **#2** Content-driven breakpoints (640/768/1024/1280); tested at 320/390/768/1024/1440, zero h-scroll.121- [ ] **#3** Fluid type & space via `clamp()` (no jumps; `rem` term preserves zoom).122- [ ] **#4** Body ≥16px; tap targets ≥44×44px, ≥8px apart.123- [ ] **#5** One primary CTA per view; repeated, not reinvented.124- [ ] **#6** Fold answers what/who/next in 5s on laptop + phone.125- [ ] **#7** F-scan for text, Z for hero; body left-aligned, never justified.126- [ ] **#8** Measure 45–75ch (`max-width: 65ch`).127- [ ] **#9** Line-height ≥1.5 body / 1.0–1.2 display; rhythm on 8.128- [ ] **#10** 8pt spacing; one modular type scale.129- [ ] **#11** WCAG 2.2 AA floor — text ≥4.5:1, UI/focus ≥3:1, never hue alone; aim AAA on body.130- [ ] **#12** Semantic color tokens in OKLCH, not raw hex; same names re-themed for dark.131- [ ] **#13** Five states per interactive el (default/hover/focus-visible/active/disabled); ≥2px ≥3:1 focus ring.132- [ ] **#14** Empty, loading (skeletons), and error states designed — not just happy path.133- [ ] **#15** Motion 150–300ms, ease-out, `prefers-reduced-motion` honored; animate transform/opacity only.134- [ ] **#16** Reserve space (width/height or aspect-ratio on media) — CLS <0.1.135- [ ] **#17** Perf budget — LCP <2.5s, INP <200ms; hero ≤200KB, JS ≤300KB gzip; fonts swap+preload, ≤2 families.136- [ ] **#18** Landmarks, skip-link, one `<h1>`, no skipped headings, visible focus order = DOM order.137- [ ] **#19** Forms — visible labels, right `type`+`autocomplete`, inline on-blur validation, fewest fields, single column.138- [ ] **#20** Meta layer — `<title>` ≤60ch, description ≤155ch, OG image 1200×630, theme-color, favicon, JSON-LD.139140---141142## After emitting (both paths)1431441. Save the file to disk (Write tool).1452. **Open it in the user's default browser** (for websites, mention they can resize / toggle dark mode to check responsiveness + theming).1463. Ask: *"Want changes?"* Iterate via natural conversation.147148---149150## Common refinement patterns151152**Slides**153- "Make slide N bolder" → increase headline size *or* accent intensity, never both.154- "Swap slide N for a quote" → massive italic quote, attribution below, single accent.155- "Chart on slide N" → strip to ≥80% data-ink, no gridlines unless functional, single accent on the point that matters.156157**Websites**158- "Make the hero punchier" → shorten the value prop (≤12 words), raise contrast on the CTA, add one line of proof — don't add a second primary CTA.159- "It feels cramped on mobile" → check §1/§10 — is text edge-to-edge? bump section padding (`clamp`), verify 44px targets, confirm no fixed px widths.160- "Add dark mode" → it's already token-based: add/adjust the `prefers-color-scheme` block + toggle; desaturate accents, elevate surfaces with lighter neutrals not shadows.161- "It's slow / janky" → §10: is the hero lazy-loaded (shouldn't be)? unsized images (CLS)? heavy JS (INP)? animate transform/opacity only.162- "Add a pricing section" → 3 tiers, middle highlighted as default (cap at ≤4 — Hick's Law).163164---165166## What not to do167168**Slides** — no purple-gradient heroes, no six-bullet slides (#3), no drop-shadowed bars (#18), no centered-everything (#19), no multiple accents (#13), no ad-hoc spacing (#15), no paragraphs (#10), no mixing presenter/document mode (#20), no omitted brand logo unless opted out (#21).169170**Websites** — no fixed-pixel non-responsive layouts (#1), no `vw` type without `clamp` (breaks zoom, #3), no sub-44px tap targets (#4), no multiple competing primary CTAs (#5), no placeholder-as-label (#19), no `outline: none` without a focus replacement (#13), no unsized images / layout that reflows on load (#16), no 500KB-of-JS marketing page (#17), no hue-only status colors (#11), no dark patterns (§7 / §13). Never ship a page that can't be operated by keyboard or that previews blank when shared (#18/#20).171172---173174## Files in this skill175176- `principles/design-principles.md` — the 20 **slide** rules + research, with numeric thresholds.177- `principles/web-principles.md` — the 20 **web** rules + research, with numeric thresholds.178- `lib/extract-brand.md` — the Firecrawl brand-extraction recipe (feeds both paths).179- `brands/<name>/brand-style.md` — pre-built brand systems (72+).180- `brands/_template.md` — blank template for new brands.181182When in doubt, **read the principles file for the current medium**. It's the source of truth.
Run npx skillmds@latest add itsssssjack/power-design in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Generate beautiful, on-brand HTML — presentation decks or full responsive websites — in any brand's design language, combining brand DNA extracted via Firecrawl with codified, research-backed design principles (20 rules for slides, 20 for the web). It is listed under Web & Frontend on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
itsssssjack (@itsssssjack) published this skill. Their other Agent Skills are listed on their SkillMD profile.