plugins/design-expert/skills/design-webapp/SKILL.md
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.
npx skillsauth add fusengine/agents design-webappInstall 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
product (dense, predictable, motion stays discreet). Read design-method's routing
table first — if the surface is a marketing/landing page instead, use design-web.
design-system.md — OKLCH palette, typography, spacing density, the 3 dials.design-method/references/register/product.md — the Domain-Specificity Floor and the
Product Furniture table (generic KPI ribbon, marketing triad reused in-app, cookie-cutter
empty state, undifferentiated settings list, generic nav vocabulary).Register product ≠ marketing register. No hero, no scroll-reveal, no CTA-tricks —
this register optimizes for glance-speed, not first impression. Density is a feature:
Enterprise Dense / Standard spacing profile (design-system/references/spacing-density.md),
MOTION_INTENSITY ≤ 4 by default (design-motion/references/motion-performance.md).
The Focal-Block Floor and Signature Dominance from design-web do not apply here
(register/product.md §4) — several equal-weight blocks in one viewport is correct, not
a defect.
Pick the page pattern from references/layouts/pages/ — dashboard, auth-login,
auth-register, onboarding, profile, settings, error-pages. Each is a starting structure,
not a template to copy verbatim — adapt density from design-system.md, and run the
Domain-Specificity Floor test on it: would this page's copy/icons/grouping look native
dropped unedited into an unrelated product in the same category? If yes, it's furniture
— name the product's real entities instead (register/product.md §2-3).
Pick the interaction pattern(s) from references/layouts/patterns/ — data-table,
command-palette, modal-dialog, toast-notifications, empty-state. Apps lean on these far
more than marketing sites do.
Cover every state explicitly — empty, loading, error, populated. Never a blank or silent default:
layouts/patterns/data-table.md
— NNG: skeletons perceived 9-12% faster than spinners).register/product.md §3 Cookie-cutter
empty state).Tables (hard rules, layouts/patterns/data-table.md): first column is a readable
identifier (not a raw ID/UUID), numeric columns right-aligned, header sticky on scroll,
wrap content rather than truncate where legibility matters, density is a first-class
mode (standard 48dp row / dense 36dp row — Material 3 baseline), mobile falls back to
horizontal scroll with a sticky first column.
Dataviz: prefer bar/line charts over pie — preattentive processing reads
magnitude/trend faster than angle/area. Color encodes data, never decorates; keep
category → color mapping consistent across every chart on the same surface
(layouts/pages/dashboard.md — F-pattern placement for the North Star metric still
applies).
Forms: one column, label above the field, inline validation — reuse
../design-web/references/forms-guide.md rather than duplicating form rules here; this
skill only adds the product-register defaults (single column over multi-column, no
marketing-style floating labels).
Command palette (if present): keyboard shortcuts are optional and revealed only
after the user has triggered the action manually at least once — never taught upfront
as a required interaction (layouts/patterns/command-palette.md).
Apply the responsive shell from references/responsive-dashboard.md — sidebar
behavior across breakpoints (full at desktop, icon-rail at tablet, hamburger at mobile).
Reuse general component guides from design-web (buttons, cards, grids, icons)
rather than duplicating them — this skill only adds what's specific to apps: density,
data-heavy states, and persistent navigation.
No inspiration browsing here — apps are function-first; skip the fuse-browser step
entirely. If visual inspiration is needed for a marketing-adjacent app surface (e.g. a
pricing page inside the app), route that specific page through design-web instead.
Generate directly as HTML/CSS (default), or optionally via Gemini Design MCP
(../design-web/references/gemini/) — same brief content either way.
responsive-dashboard.md.design-motion.design-motion, then design-review.| File | Purpose |
|------|---------|
| references/responsive-dashboard.md | Sidebar + content responsive pattern |
| references/layouts/pages/dashboard.md | Dashboard page structure, F-pattern KPI placement |
| references/layouts/pages/auth-login.md | Login page structure |
| references/layouts/pages/auth-register.md | Registration page structure |
| references/layouts/pages/onboarding.md | Onboarding flow structure |
| references/layouts/pages/profile.md | Profile page structure |
| references/layouts/pages/settings.md | Settings page structure |
| references/layouts/pages/error-pages.md | 404/500/error page structure |
| references/layouts/patterns/data-table.md | Sortable/filterable table pattern, density tokens |
| references/layouts/patterns/command-palette.md | Cmd-K palette pattern |
| references/layouts/patterns/modal-dialog.md | Modal/dialog pattern |
| references/layouts/patterns/toast-notifications.md | Toast/notification pattern |
| references/layouts/patterns/empty-state.md | Empty-state pattern |
| ../design-method/references/register/product.md | Domain-Specificity Floor, Product Furniture table |
| File | Purpose |
|------|---------|
| ../design-web/references/buttons-guide.md | Button states, sizing |
| ../design-web/references/forms-guide.md | Validation, layout |
| ../design-web/references/cards-guide.md | Card patterns |
| ../design-web/references/grids-layout.md | Layout/grid system |
| ../design-web/references/icons-guide.md | Icon usage |
| ../design-web/references/gemini/ | Optional Gemini Design MCP path |
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
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.
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.