plugins/design-expert/skills/design-web/SKILL.md
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
npx skillsauth add fusengine/agents design-webInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
After design-system tokens exist and design-method's Gate 0 has locked register
brand (one dominant, expressive message). Read design-method's routing table first —
a dashboard/app/utility surface routes to design-webapp instead. Exception: a
marketing-adjacent surface living inside an app shell (e.g. an in-app pricing page) still
routes here for that one page (see design-webapp's reciprocal note).
design-system.md — OKLCH palette, type pair, spacing density, the 3 dials.design-method/references/register/brand.md — the page's POV sentence and the
per-section Competitor Lift Test (loaded once per task, not re-read per step).generate move report (design-method/references/moves/generate.md) if this task
started from Gate 0 — steps 1-4 of that report (register, inspiration, tokens,
macrostructure) are inputs here, not repeated.Structure comes from register + macrostructure, never from template reproduction.
references/design-inspiration.md browsing extracts palette, typography, and depth
cues ONLY — section flow, spacing rhythm, and layout are never copied from a reference
site. The actual skeleton is the macrostructure picked in design-method's generate
move (references/macrostructure-bank.md) filtered through the POV in register/brand.md.
Reproducing an inspiration site's structure verbatim is the single biggest source of
templated output — treat it as a hard boundary, not a style preference.
Deviate the section order. The canonical skeleton
(nav → hero → features → testimonials → pricing → faq → cta → footer) is a detectable
flag when used verbatim end-to-end. Reorder, merge, or drop at least one section against
the POV — state which one moved and why in the generate-move report's macrostructure
line. register/brand.md §2 (Body ≠ SaaS Furniture) governs which sections are safe to
cut or fold.
Hero discipline (nngroup visual-hierarchy, lawsofux, refactoringui):
headline < 10 words, subhead < 20 words, 1 primary CTA, real product/brand
visual (not a stock abstraction). This word-count floor is tighter than
references/layout-discipline.md's hero hard numbers (≤ 2 lines, ≤ 4-element stack) —
both apply; the tighter one wins on conflict. CTAs stay ≤ 3 touchpoints on the whole
page, secondaries visually subordinate to the one primary. Von Restorff: exactly one
visually distinct focal element per viewport reads as memorable — see the Focal-Block
Floor (layout-discipline.md rule 9), mandatory in this register.
Break grid and padding sameness. Prefer asymmetric column splits (2/1, 1/2,
span-2, bento) over a uniform 3-column grid reused section after section. Vary section
padding for rhythm — tight groupings inside a section, generous separation between
sections — instead of one uniform value applied everywhere. layout-discipline.md
still owns the numeric caps (eyebrow restraint, zigzag cap, bento N=N, section-repetition
ban) once a skeleton is chosen; don't re-derive those here.
Anti-slop mechanical flags (lintable, check the rendered markup — sources: sailop ai-slop research, superdesign):
| Slop signal | Mechanical flag | Antidote |
|---|---|---|
| Canonical section order | The 8-section skeleton above, used verbatim, in that order | Step 2 — deviate |
| Uniform 3-col grid | Same grid-cols-3 (or equivalent) reused across ≥3 unrelated sections | Step 4 — asymmetric splits |
| Uniform section padding | Identical py-20/py-24 (or equivalent) on every section | Step 4 — vary per section |
| Eyebrow over every H1 | See layout-discipline.md Eyebrow Restraint (max 1 per 3 sections) | Already governed there — don't restate |
| Signature entrance motion | opacity:0 + translateY(20px) + ease-in-out scroll-reveal — found on ~83% of AI-generated pages | Vary offset/easing/stagger — design-motion/references/entrance-patterns.md |
| Reflex palette+font+shape combo | Tailwind blue/indigo (hue 200–290°) + Inter + rounded-2xl used together as the default | Banned outright — pull real tokens from design-system.md/sector-palettes.md/typography-pairs.md |
Select components against the brief, not by default. Pull component patterns from
references/cards-guide.md, references/buttons-guide.md,
references/component-composition-ref.md, and 2-3 matching entries from
references/premium-patterns/PATTERNS.md — each pattern's AI Generation Prompt is
subordinated to the POV from register/brand.md, never dropped in unedited. No
component earns a place because it's common; each maps to a real content need.
Ship HTML/CSS directly (default path, same method as Anthropic's frontend-design
skill: commit to a point of view, verify with tools not vibes). Gemini Design MCP
(references/gemini/), Magic (21st.dev), and shadcn MCP are optional fallback tools,
never a requirement.
Before calling this done: shrink the shipped page to a ~200px silhouette (blur or scale down) and compare it against 5 competitor/sector silhouettes. Indistinguishable from the set = structural slop — send it back to step 1 (macrostructure choice), not step 4 (cosmetic tweaks). This is a structure-level check; it runs after step 6, before handoff.
references/design-inspiration.md → proceed on macrostructure + register alone, flag
the gap in the generate-move report; never block generation on inspiration browsing.macrostructure-bank.md, don't re-attempt the same skeleton a 3rd time.design-motion.design-motion, then design-review.| File | Purpose |
|------|---------|
| references/layout-discipline.md | Hard numeric layout rules (hero, eyebrow, zigzag, bento, CTA, measure, focal-block) |
| references/ui-visual-design.md | 2026 visual design principles, hierarchy, trends |
| references/cards-guide.md | Card anatomy, layouts, content priority |
| references/buttons-guide.md | Button states, sizing, CTA discipline |
| references/premium-patterns/PATTERNS.md | 10 premium patterns with CSS specs + AI prompts, sector-mapped |
| references/design-inspiration.md | Browsing workflow — palette/typography/depth extraction only (see step 1) |
| references/component-composition-ref.md | Component composition rules |
| references/grids-layout.md, forms-guide.md, icons-guide.md, photos-images.md | Supporting component guides |
| references/reference-index.md | Full index of this skill's references and templates |
| ../design-method/references/register/brand.md | POV lock, Body ≠ SaaS Furniture, Competitor Lift Test |
| ../design-method/references/macrostructure-bank.md | Macrostructure alternatives (step 1) |
| File | Purpose |
|------|---------|
| ../design-webapp/references/layouts/patterns/empty-state.md | Empty-state pattern, if this page has a data surface |
| ../design-webapp/references/responsive-dashboard.md | Only if a marketing page embeds an app-shell preview |
testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.
testing
The final quality gate before any design deliverable is reported done — two ISOLATED assessments (deterministic detection never in the same head as the subjective/visual read), P0-P3 findings with NO aggregate score ever, a bounded visual loop (max 2 fix cycles), and a mandatory in-loop challenger gate (fresh-context, blind PNG) before any 'done' claim.