deveshpunjabi/modern-frontend-skill

modern-frontend-design

How to design and build modern, premium-quality frontend interfaces that look like high-end SaaS products, modern AI tools, and award-winning design websites — not generic templates. Use this skill whenever the user asks to build a frontend, create a landing page, design a dashboard, scaffold a web app UI, build a SaaS interface, create a portfolio site, or produce any user-facing web interface. Also use when the user says "make it look modern", "build me a beautiful UI", "create a homepage", "…

First seen Mar 4, 2026

Installation

$ npx skills add deveshpunjabi/modern-frontend-skill --skill modern-frontend-design

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 4
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version3.0.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 22,237 B
  • docs SUMMARY.md 791 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 398 installs

SKILL.md

Modern Frontend Design — 2026 Edition

You are a senior frontend engineer, UI/UX designer, and visual design strategist. Transform any product prompt into a visually stunning, premium-quality web interface. The standard: it looks like a well-funded startup's design team built it — not an AI template.

The 2026 paradigm shift: OKLCH colors over HSL. Native CSS scroll-driven animations over JS libraries. Liquid Glass as standard surface treatment. View Transitions for page navigation. AI Minimalism as the new SaaS aesthetic. Tokens always first.

Follow this 12-step Atom of Thought Design Process. Skipping steps is how generic UIs happen.


Step 0 — Design Token System First (Always, No Exceptions)

Define the full visual language before writing a single component. In 2026, use OKLCH for colors — it has better perceptual uniformity, enables relative color manipulation, and is now Baseline 2026.

:root {
  /* ── COLORS (OKLCH format: L C H) ───────────────── */
  --bg:           oklch(8% 0.02 265);    /* page canvas */
  --surface:      oklch(12% 0.02 265);   /* cards, panels */
  --surface-up:   oklch(16% 0.02 265);   /* hover elevated */
  --fg:           oklch(96% 0.01 95);    /* primary text */
  --fg-muted:     oklch(65% 0.01 265);   /* secondary text */
  --fg-dim:       oklch(45% 0.01 265);   /* disabled/placeholder */
  --primary:      oklch(62% 0.21 285);   /* brand CTA — vivid indigo */
  --primary-up:   oklch(68% 0.21 285);   /* hover */
  --primary-glow: oklch(62% 0.21 285);   /* for box-shadow */
  --ok:           oklch(62% 0.18 155);   /* success green */
  --warn:         oklch(75% 0.19 65);    /* warning amber */
  --err:          oklch(62% 0.22 25);    /* error red */
  --border:       oklch(22% 0.02 265);
  --border-faint: oklch(15% 0.01 265);

  /* ── TYPOGRAPHY ──────────────────────────────────── */
  --font:         'Inter', system-ui, sans-serif;
  --font-display: 'Cabinet Grotesk', 'Clash Display', sans-serif;
  --font-mono:    'Geist Mono', 'JetBrains Mono', monospace;

  /* ── RADIUS ──────────────────────────────────────── */
  --r-xs:   0.25rem;
  --r-sm:   0.375rem;
  --r:      0.75rem;
  --r-lg:   1rem;
  --r-xl:   1.5rem;
  --r-full: 9999px;

  /* ── MOTION ──────────────────────────────────────── */
  --ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-expo:   cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast:  150ms;
  --dur-base:  250ms;
  --dur-slow:  500ms;
}

Hard rules: OKLCH format. Zero hardcoded hex/rgba in components. All radii via --r-. All easing via --ease-. For light-mode, fintech, wellness palettes → references/design-systems.md.


Step 1 — Understand the Product

Before a single line of code: extract product type, target audience, core value prop, conversion goal.

2026 Niche Design Table

Niche Direction
AI / ML tools AI Minimalism (OpenAI/Perplexity style) — aggressive whitespace, single-font, subtle
Developer tools Technical Mono — dark, green/white, monospace, terminal blocks, code brutalism
Fintech Professional light, OKLCH blues, data-dense, trust-first, two-column
Cybersecurity Dark, terminal, status indicators, surveillance aesthetic
Creative agencies Neo-Brutalism OR warm dark editorial — niche determines which
SaaS dashboards Bento grids, sidebar nav, metric cards, neutral tokens
E-commerce Dopamine colors (lifestyle) or clean trust (enterprise), product grids
Social platforms Vibrant, rounded, avatar-centric, card feeds
Health / Wellness Organic / nature-inspired — soft curves, earthy OKLCH, phone mockup
Education Structured, friendly, progress indicators, accessible
Startups / Landing Cinematic hero, bento features, liquid glass pricing, social proof
Consulting / B2B Dark premium, authority, numbered value props, organic shapes

Step 2 — 2026 Visual Research & Hero Patterns

Reference: Awwwards, Dribbble, Linear, Vercel, Raycast, Stripe, Arc, Perplexity, OpenAI.

Hero Patterns (2026 Standard)

A — Cinematic Video + Kinetic Typography

<video autoPlay muted loop playsInline>
+ gradient overlay (from-bg/85 via-transparent to-bg)
Oversized kinetic headline → responds to scroll via animation-timeline: view()
Subhead → Liquid glass CTA row
Logo marquee (pure CSS @keyframes, liquid-glass pills)

B — AI Minimalism (Barely-There UI)

Near-white or very dark bg — extreme whitespace
Single variable font system, precise weight control
Minimal chrome: 1 primary CTA, no decorations
Subtle grain texture (opacity 0.02), no glow effects
Inspired by: Perplexity, Claude, OpenAI interfaces

C — Scroll-Driven Storytelling

Native CSS scroll-driven animation: animation-timeline: scroll()
Elements reveal, transform, and parallax as user scrolls
No JS scroll listeners — GPU-accelerated, main-thread-free
@keyframes tied to view() or scroll() timeline

D — Bento Grid Feature Hero

Compact centered headline (gradient text, oversized)
Asymmetric bento grid: span-2 demo card + medium feature cards + small stat tiles
Varied visual weights — not identical cards
Cards use liquid glass, each with subtle hover state

E — Organic / Anti-Grid

Soft curved section dividers (SVG clip-path or border-radius on section)
Earthy OKLCH palette — clay, sage, warm beige
Flowing asymmetric layout — deliberately non-rectangular
Works for: wellness, agencies, portfolios

2026 Mandatory Trends

Trend Apply When
Liquid Glass All floating surfaces (navbar, cards, modals, badges)
OKLCH colors Every project — better than HSL for design tokens
Native scroll-driven animations Scroll reveals, progress bars, parallax
View Transitions API Page navigation, section morphs
CSS anchor positioning Tooltips, dropdowns — replace Floating UI / Popper.js
Bento grids Feature sections, dashboard layouts
Kinetic typography Hero headlines — scroll or cursor responsive
AI Minimalism AI/SaaS products, tools aligning with OpenAI/Perplexity
Neo-Brutalism Agencies, creative, subculture brands, portfolios
Variable fonts All projects — single font with multiple axes
Grain texture Warmth layer — opacity 0.025–0.045 on ::after
@starting-style All enter animations — eliminates flash-of-final-state
CSS if() function Conditional transitions, prefers-reduced-motion inline
Dopamine color Lifestyle, beauty, youth, social — vivid OKLCH saturation
Organic shapes Wellness, agencies — soft curves over rigid grids

Step 3 — Visual System Planning

Typography (2026 Pairings)

Pairing Vibe Use For
Inter variable AI Minimalism AI tools, clean SaaS
Geist Sans + Geist Mono Developer-grade Dev tools, code products
Cabinet Grotesk + Satoshi Bold startup Landing pages, agencies
Clash Display + General Sans Kinetic editorial Portfolios, creative agencies
Space Grotesk + DM Sans Geometric tech API products, fintech
Playfair Display + Satoshi Luxury editorial Agencies, luxury brands

Use variable fonts where available — control font-weight and font-variation-settings precisely. All display sizes: clamp(). Negative letter-spacing on every heading.

Color (Always OKLCH)

OKLCH advantages over HSL: perceptually uniform (same lightness feels equal across hues), relative color syntax oklch(from var(--primary) l c h), works with color-mix().

/* Relative OKLCH — lighten primary by 20% */
--primary-light: oklch(from var(--primary) calc(l + 0.20) c h);

/* Mix two colors */
--blend: color-mix(in oklch, var(--primary) 30%, var(--bg));

Spacing scale (4px base): 4 8 12 16 24 32 40 48 64 80 96 128 — no arbitrary values.


Step 4 — Layout Architecture

Landing Page (2026 Standard)

Navbar (fixed, liquid-glass, View Transition enabled)
Hero (cinematic — Pattern A/B/C/D/E based on niche)
Social Proof (marquee / stats — CSS @keyframes marquee)
Features (bento grid OR organic flow — never wall of cards)
How It Works (numbered, with scroll-reveal)
Demo / Screenshots / Interactive preview
Testimonials / Case Studies
Pricing (liquid-glass cards, one highlighted)
Final CTA (with @starting-style entrance)
Footer

Dashboard (2026 Standard)

Top Nav (search + notifications + avatar)
Sidebar (icon + label, groups, collapsible — Container scroll-state for sticky shadows)
Main: Bento metric grid → Charts (scroll-driven progress) → Data tables → Side panels

Step 5 — Component System

components/
├── layout/    → Navbar, Footer, Sidebar, Container
├── ui/        → Button, LiquidCard, Badge, Input, Modal, Toggle, Tooltip (anchor-based)
├── sections/  → Hero, Features, Pricing, Testimonials, CTA
├── motion/    → ScrollReveal, ViewTransition, KineticText, StaggerGroup
└── data/      → MetricCard, BentoGrid, Chart, DataTable

Liquid Glass — 2026 Standard Surface

Use on: navbar, pricing cards, feature cards, modals, eyebrow badges, logo pills.

.liquid-glass {
  background: linear-gradient(
    135deg,
    oklch(100% 0 0 / 0.08) 0%,
    oklch(100% 0 0 / 0.02) 100%
  );
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid oklch(100% 0 0 / 0.12);
  box-shadow:
    inset 0 1px 0 oklch(100% 0 0 / 0.15),
    0 8px 32px oklch(0% 0 0 / 0.30);
  border-radius: var(--r);
}
.liquid-glass:hover {
  border-color: oklch(100% 0 0 / 0.18);
  box-shadow:
    inset 0 1px 0 oklch(100% 0 0 / 0.20),
    0 12px 40px oklch(0% 0 0 / 0.35);
  transition: all var(--dur-base) var(--ease-out);
}

CSS Anchor Positioning (2026 — Replace Floating UI)

/* No JS tooltip positioning */
.tooltip-trigger { anchor-name: --trigger; }
.tooltip {
  position: fixed;
  position-anchor: --trigger;
  inset-area: top;
  margin-bottom: 0.5rem;
  position-try-fallbacks: --bottom, --left, --right;
}

Step 6 — 2026 Motion System

2026 rule: prefer native CSS animations over JS libraries where possible.

Native Scroll-Driven Animations (Interop 2026 — No JS)

/* Reveal on scroll — replaces Intersection Observer */
.reveal {
  animation: fade-up linear both;
  animation-timeline: view();
  animation-range: entry 0% cover 25%;
}
@keyframes fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Reading progress bar */
.progress-bar {
  animation: grow-width linear forwards;
  animation-timeline: scroll();
}
@keyframes grow-width {
  from { width: 0%; }
  to   { width: 100%; }
}

/* Scroll-driven parallax */
.parallax-layer {
  animation: parallax linear;
  animation-timeline: scroll(root block);
  animation-range: 0% 100%;
}
@keyframes parallax {
  from { transform: translateY(0px); }
  to   { transform: translateY(-60px); }
}

@starting-style — Flash-Free Enter Animations (2026)

/* Enter animation that doesn't flash final state first */
.modal {
  opacity: 1;
  transform: scale(1);
  transition: opacity var(--dur-base) var(--ease-out),
              transform var(--dur-base) var(--ease-spring);
}
@starting-style {
  .modal { opacity: 0; transform: scale(0.95); }
}

View Transitions API (Page Navigation)

/* Cross-document transition — 2 lines of CSS */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation-duration: var(--dur-slow); }
::view-transition-new(root) { animation-duration: var(--dur-slow); }

/* Named element transition (card → detail) */
.card { view-transition-name: card-item; }

CSS if() — Adaptive Motion (2026)

.animated {
  transition-duration: if(
    media(prefers-reduced-motion: reduce): 0ms;
    else: var(--dur-base)
  );
}

Per-Element Animation Spec Format

Navbar:     fade-in,         var(--dur-slow), --ease-out,  delay 0ms
Eyebrow:    fade-in+y8→0,   var(--dur-slow), --ease-expo, delay 80ms
Headline:   fade-in+y16→0,  var(--dur-slow), --ease-expo, delay 180ms
Subhead:    fade-in,         var(--dur-base), --ease-out,  delay 320ms
CTA row:    fade-in+y8→0,   var(--dur-base), --ease-expo, delay 420ms

Logo Marquee (Pure CSS)

@keyframes marquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }
.animate-marquee { animation: marquee 24s linear infinite; }
.marquee-container { mask-image: linear-gradient(to right, transparent 0%, black 10%, black 90%, transparent 100%); }

Staggered Animations with sibling-index() (2026 CSS — Chrome)

/* No JS needed for stagger delays */
.grid-item {
  animation-delay: calc(sibling-index() * 80ms);
  animation: fade-up var(--dur-slow) var(--ease-expo) both;
  animation-timeline: view();
  animation-range: entry 0% cover 30%;
}

Motion Rules (Non-Negotiable)

  • GPU only: transform + opacity — never animate layout properties
  • Reduced motion: use CSS if() or @media (prefers-reduced-motion: reduce) on every animation
  • Duration budget: interactions 100–200ms | reveals 300–500ms | page transitions 400–600ms
  • Max 3 concurrent animations visible in viewport at any time

Step 7 — 2026 Technology Stack

Layer 2026 Recommendation
Framework Next.js 15 (RSC, App Router, PPR) or Astro 5 (for content sites)
Styling Tailwind v4 + CSS OKLCH custom properties
Components shadcn/ui + Radix UI
Animation Native CSS scroll-driven first; Framer Motion for complex React
Language TypeScript (now the baseline — mandatory)
Icons Lucide React
Fonts Variable fonts (Inter, Geist, Cabinet Grotesk)
Tooltips CSS Anchor Positioning (replace Floating UI for new builds)
/app (App Router)   → layouts, pages, RSC
/components         → layout/ ui/ sections/ motion/ data/
/styles             → globals.css (:root tokens, .liquid-glass, @keyframes)
/utils              → helpers, types
/public             → assets, fonts, videos

Step 8 — Backend Awareness & Performance

  • Loading: skeleton loaders — never spinners
  • Error: message + retry — never blank screen
  • Empty: copy + CTA ("No projects yet")
  • React Server Components: use RSC for static content, client components only for interactivity
  • Core Web Vitals: LCP < 2.5s, CLS < 0.1, INP < 200ms
  • Sustainable design: minimize unused animations, optimize images, lazy-load off-screen content
  • Realistic data: real-sounding names, plausible numbers — no lorem ipsum

Step 9 — Responsive + Accessible System

Breakpoints: sm 640 | md 768 | lg 1024 | xl 1280 | 2xl 1536

  • Grids: 4 → 2 → 1 col. Nav: full → hamburger at < 768px.
  • Display type: clamp(2rem, 1rem + 4vw, 5rem)
  • Section padding: 128 → 80 → 48px. Touch targets: ≥ 44×44px.
  • WCAG 2.1 AA mandatory: 4.5:1 body text, 3:1 large text, keyboard nav, screen reader labels
  • Both light and dark modes must independently pass contrast minimums

Step 10 — 2026 Visual Quality Validation

Token Compliance

  • All colors: oklch(...) values — zero hardcoded hex/rgba in components
  • All radii via --r-. All easing via --ease-. All durations via --dur-*

Typography

  • Variable font loaded. Display > h1 > h2 > body hierarchy clear.
  • Negative letter-spacing on all headings. Body ≤ 65ch wide.

Color & Polish

  • OKLCH palette with perceptual uniformity — no hue shifts in gradients
  • Liquid glass on all floating surfaces
  • Both light/dark mode (if applicable) pass 4.5:1 contrast

2026 Motion

  • Scroll-driven animations use native CSS (animation-timeline) not JS scroll listeners
  • All enter animations use @starting-style
  • Page navigation uses View Transitions
  • CSS if() or @media (prefers-reduced-motion) on every animation
  • Max 3 animations visible concurrently

Overall

  • Screenshot test: next to Linear / Vercel / Perplexity — does it belong?
  • 3-second test: product clear, CTA obvious
  • Token audit: zero hex in DevTools computed styles

Step 11 — Hero Prompt Engineering (MotionSites Style)

Pixel-precise spec format — eliminates ambiguity, awards-quality output on first pass.

Stack: Next.js 15 + Tailwind v4

DESIGN TOKENS (:root in globals.css):
  --bg: oklch([L%] [C] [H])   --fg: oklch([L%] [C] [H])
  --primary: oklch([L%] [C] [H])   --font: '[Name]', sans-serif   --r: [X]rem

LIQUID GLASS (globals.css):
  .liquid-glass { background: linear-gradient(135deg,oklch(100% 0 0/0.08),oklch(100% 0 0/0.02));
    backdrop-filter: blur(20px) saturate(180%); border: 1px solid oklch(100% 0 0/0.12);
    box-shadow: inset 0 1px 0 oklch(100% 0 0/0.15), 0 8px 32px oklch(0% 0 0/0.3); }

SCROLL ANIMATIONS (globals.css):
  .reveal { animation: fade-up linear both; animation-timeline: view();
            animation-range: entry 0% cover 25%; }
  @keyframes fade-up { from { opacity:0; transform:translateY(24px) }
                       to   { opacity:1; transform:translateY(0)     } }
  @starting-style { .modal { opacity:0; transform:scale(0.95) } }

NAVBAR: fixed z-50 liquid-glass | Logo + nav links + CTA pill
HERO ELEMENTS:
  1. Eyebrow — liquid-glass pill, animated dot, "[tagline]" text-fg/70
  2. Headline — [Xpx] font-bold tracking-[-0.04em] leading-[0.93] oklch gradient
  3. Sub — max-w-lg text-center text-fg/65 text-lg leading-8
  4. CTAs — Primary (oklch glow) + Ghost (border)
  5. Social proof — avatar stack + "X+ teams"
MARQUEE: liquid-glass pills, 24s, fade-edge mask
ANIMATION SPEC: Eyebrow 400ms+80ms · Headline 500ms+180ms · Sub 400ms+320ms · CTAs 400ms+420ms

ANTI-SLOP: Zero hex. OKLCH everywhere. Liquid glass on every floating surface.
  Fictional brands: Vortex, Nimbus, Kynder, Halcyn, Aethon.

Six complete templates (AI SaaS, Dev Tool, Fintech, Agency, Wellness, Pricing) → references/hero-prompts.md.


Step 12 — Final Testing (Mandatory — You Own the Errors)

npm install && npx tsc --noEmit && npm run build
npx next lint
npm run dev & sleep 5 && curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 && kill %1

Component scan:

Check Fix
Hardcoded hex or hsl() values Replace with oklch(var(--token)) or oklch(...)
JS scroll listener for animation Replace with animation-timeline: view()
Missing @starting-style on modals Add enter animation
<img> in Next.js Replace with <Image>
Missing alt text Add descriptive alt
No prefers-reduced-motion handling Add CSS if() or @media

Done when: build 0 · lint pass · dev boots · tsc clean · no console errors · no mobile overflow · zero hex in DevTools.


Anti-Patterns — 2026 Edition

Pattern Fix
HSL/hex colors in 2026 Upgrade to OKLCH — better gamut, perceptual uniformity
JS scroll listeners for animation animation-timeline: view() — native, main-thread-free
Floating UI / Popper.js for tooltips CSS Anchor Positioning (Baseline 2025+)
Flash of final state on enter @starting-style on every modal/toast/drawer
Identical grid cards Bento layout — varied sizes, visual weights
Generic "AI aesthetic" (purple glow on everything) Choose: AI Minimalism OR cinematic — not both
Wall of text animations Max 3 concurrent, purposeful only
Lorem ipsum Realistic product copy always
Pure black backgrounds oklch(8% 0.02 265) — subtle tint adds depth
Ignoring RSC Static content → RSC; interactivity → Client components
WCAG as afterthought Baked-in: contrast tokens, semantic HTML, keyboard nav

Final Output

Deliver: OKLCH token system · Liquid glass utility · Native scroll animations · @starting-style enters · View Transitions · Premium UI · Responsive · Typed components · Realistic copy. Summary: token rationale, font choice, layout pattern, motion decisions.

Agent Install
Claude Code npx skills add deveshpunjabi/modern-frontend-skill
Cursor .cursor/skills/
Windsurf .windsurf/skills/
Any Copy SKILL.md to agent skill directory