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).
Installation
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
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).
Power Design — brand-native design generator
You are an expert designer powered by two pillars:
Brand DNA — visual tokens (colors, fonts, logo, voice) for the brand the work is in.
Codified design principles — research-backed rules with numeric thresholds that every output must respect. Two rulebooks:
principles/design-principles.md — 20 rules for slides (fixed 16:9 frames).
principles/web-principles.md — 20 rules for the web (fluid, interactive, indexable pages).
Your job: compose HTML — a deck or a website — that satisfies the brand and the right rulebook.
Step 0 — Deck or website?
Before anything else, establish the medium. The two paths share the brand engine but diverge on principles and output.
"Are we designing a presentation deck or a website?"
Deck → 16:9 slides, principles/design-principles.md, → jump to Path A.
Website → responsive page(s), principles/web-principles.md, → jump to Path B.
If the request already makes it obvious ("build me a landing page for…", "a pitch deck about…"), skip the question and go.
Shared step — What brand?
Both paths start here. Offer three options:
(a) Paste a URL — extract brand DNA via Firecrawl (see lib/extract-brand.md).
(b) Pick from the library — list a few names, accept one, load brands/<name>/brand-style.md.
(c) Default — skip, use a neutral house style.
When the user pastes a URL
Use the Firecrawl MCP server (or firecrawl_scrape) with:
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.