Clean ui design
Use when designing or building modern product UI — dashboards, SaaS web apps, admin panels, and mobile apps — in a calm, high-craft, minimal aesthetic. Apply for React/Tailwind/shadcn UI work, app screens, dark or light interfaces, data dashboards, metric cards, sidebars, tables, charts, and iOS-style mobile flows. Triggers on requests like "make it look clean/premium", "shadcn dashboard", "polish this UI", or "clean UI style".From its SKILL.md
npx -y skills add theophile-wallez/clean-ui-designAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 25 days oldThe repository was created 25 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.5 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it
Clean UI Design
A compact, opinionated system for calm, high-craft product UI. The philosophy in one line: neutral-first, restrained color, obsessive spacing, thin icons, big bold numbers, and surfaces separated by fine shadows instead of borders.
Simple systems make polished products.
When in doubt: remove color, drop borders for a soft shadow, tighten the type, add space.
Runnable references live in examples/ (open the .html files in a browser;
previews in examples/screenshots/).
Typography
- Font family: Inter or SF Pro (Geist / Söhne also fine; shadcn default works). Headlines may optionally use a serif for an editorial feel.
- Weights: regular (400) and medium (500) only. Semibold (600) rare; bold/black basically never — except large hero numbers.
- Letter spacing: slight negative tracking,
-0.15pxdefault (tighten to-0.31pxfor a denser look). Apply globally (~tracking-tighton headings). - Type scale (px): keep it tiny. Base 13–14px.
- Minimal ramp: 12 / 13 / 14 / 24
- Full ramp: 12 / 13 / 14 / 16 / 18 / 24
- 12–13px = meta/labels · 14px = body · 24px = biggest text
- Text hierarchy = 3 grays: light mode
strong #292929→default #5D5D5D→subtle #7F7F7F–#9E9E9E; dark mode text#E5E5E5, subtle#A1A1A1. - Hero metrics (exception): big numbers (28–56px, bold) with the unit/label small and muted beside them.
- Sans + mono combo: sans for primary text, monospace for secondary (axis labels, meta, table sub-values, deltas).
- Use
font-variant-numeric: tabular-numsfor aligned figures.
Color
Neutral-first: foundation is a neutral gray ramp (Tailwind zinc/neutral), with one accent per screen
(Sky blue and Orange are go-to accents). Green/red are reserved for status and deltas.
Semantic tokens — name by role and tier: {role}-{tier} (base · subtle · soft · inactive · strong).
Primary (Sky): base #0EA5E9 · subtle #F0F9FF · soft #E0F2FE · darker #075985 · dark #082F49
Neutrals (zinc): base #FFFFFF · subtle #FAFAFA · soft #F4F4F5 · inactive #D4D4D8 · strong #09090B
Status: success #22C55E · error #EF4444 · info #3B82F6 · warning #F97316
Ready-made palettes (pick one):
- Light — grays (most versatile): text
#292929/#5D5D5D/#7F7F7F–#9E9E9E; page#FFFFFF(or#FBFBFC); surface#FCFCFC; bg-selected#F5F5F5; divider#F2F2F2; accent Sky#0EA5E9(+ Orange#F97316). - Light — cool/neutral: page
#F6F8FA; menu#EFF2F6; divider#EBECF0; text#434356; subtle#838693. - Dark: page
#1C1C1C(or#171717); surface#262626(or#1F1F1F); text#E5E5E5; subtle#A1A1A1.
Rules: ~90% neutral; color only for primary actions, status, one data highlight. One accent per screen (in charts, highlight ONE series in the accent, tint the rest). Green = positive delta, red = negative/limit, tiny and inline. Keep the tiered structure even if you swap the primary hue per brand.
Spacing & radius
- 8px grid. Nav rows ~
8pxpadding, cards ~16px. Common8 / 12 / 16 / 20 / 24. Never cramped. - Radius: 6–16px only (commonly 6/8/12; up to 16 for big cards). Pills for toggles + primary CTAs.
- Two-surface backgrounds. Page one near-white, cards a second (
#FFFFFF+#FCFCFC, or#F6F8FA+ white). This tiny contrast is what makes the shadow-as-border read. - Nested cards: outer radius larger than inner (inner ≈ outer − padding).
Shadows — "shadow as a border" (the signature move)
Separate surfaces with a soft shadow, not a border line. Cards float on a slightly-tinted page; often there is no visible border at all.
- Never pair a hard border AND a shadow. Pick shadow. (Hairline borders OK only for dividers/tables.)
- Shadows are fine and tight, never wide. No big ambient blur. Think a crisp 1px ring + a 1–2px micro-drop: the ring acts as the border, the drop gives a whisper of lift. Very low opacity.
- Elevation scales by opacity + tiny offset, NOT blur radius. Popovers get a slightly bigger drop, still tight.
- Same treatment on chips, inputs, dropdowns, and the active nav item.
Recipes (light, white surfaces on #FBFBFC/#FCFCFC):
/* chips / inputs / nav items */ box-shadow: 0 0 0 1px rgba(17,17,17,.04), 0 1px 1px rgba(17,17,17,.04);
/* cards / panels (borderless) */ box-shadow: 0 0 0 1px rgba(17,17,17,.04), 0 1px 2px rgba(17,17,17,.05);
/* popovers / menus / modals */ box-shadow: 0 0 0 1px rgba(17,17,17,.05), 0 2px 6px -2px rgba(17,17,17,.12);
Tailwind: avoid default shadow/shadow-md/shadow-lg (too wide). Use a custom tight token and drop border:
shadow-[0_0_0_1px_rgba(17,17,17,.04),0_1px_2px_rgba(17,17,17,.05)].
Dark mode: shadows barely show — separate surfaces with lightness steps (#1C1C1C → #262626)
plus an inset 0 0 0 1px rgba(255,255,255,.04) hairline ring.
Iconography
- One outline icon family (Lucide / Untitled UI / Iconoir). Never mix filled + outline.
- Thin stroke (~1.2). Contextual sizing: 14px nav / 16px default / 20px cards. Monochrome; accent only when active.
- Feature/metric cards often place the icon in a rounded-square tinted container (soft bg) as an anchor.
Component patterns
- App shell / sidebar: account/workspace switcher card → search field with
⌘Khint → grouped nav under muted uppercase labels. Active item = subtly elevated card (fine shadow); others muted. Optional count badges. - Metric card: muted label (+ tiny icon) → big bold value → small green/red delta → optional mini bar chart. Borderless, fine shadow.
- Charts: minimal axes, muted gridlines, thin rounded bars; highlight ONE bar in the accent, tint the rest; dashed goal line.
- Tables: muted column headers (+ tiny icon), avatar + primary + secondary meta rows, soft hover, hairline dividers, roomy.
- Segmented toggle: pill group; active = solid fill (ink light / white dark), inactive = transparent muted.
- Buttons: primary solid ink or accent, white text, medium weight; secondary soft-bg or fine-shadow ghost;
mobile primary CTA = full-width pill near bottom (
icon + label). - Mobile (iOS feel): status-bar mock, home indicator, large rounded sheets, big hero number + muted unit, segmented pills, colored progress tracks, bottom full-width pill CTA, page dots.
- Editorial hero (serif mode): full-bleed hero, serif display headline with one accent-colored word, sans subtext, full-width pill CTA, segmented progress dots.
Implementation defaults (React + Tailwind + shadcn/ui)
- Start from shadcn/ui + Tailwind. Neutral =
zinc/neutral. Primary =sky; secondary accent =orange. - Font Inter/SF Pro; slight negative tracking (
-0.15px). Weightsfont-normal/font-medium. Bodytext-sm(14px) ortext-[13px]; hero numberstext-3xl…text-5xl font-medium. - Radius
rounded-md/rounded-lg/rounded-xl(rounded-2xlbig cards),rounded-fullpills. - Shadow as border, not
border: two-surface bg, dropborder, addshadow-[0_0_0_1px_rgba(17,17,17,.04),0_1px_2px_rgba(17,17,17,.05)]. - Icons: Lucide
strokeWidth={1.2},size-3.5(nav) /size-5(cards). - Layout
gap-4/gap-6,p-2nav rows,p-4cards; 8px rhythm. Charts: muted palette + single accent series. - Ship light + dark; dark =
#1C1C1Cbase,#262626surfaces, text#E5E5E5/ subtle#A1A1A1.
Ship checklist
- Mostly neutral with only one accent?
- Surfaces separated by a fine shadow, not border color? No border + shadow combos? No wide blur?
- Only regular + medium weights? Base 13–14px? Few sizes (12/13/14/24)? Negative letter-spacing?
- Icons thin (~1.2), 14px nav / 20px cards, single family?
- Key numbers dominate (big + medium/bold, units muted)?
- Radius within 6–16px? 8px spacing? Two-surface background so shadows read?
- Active states = elevated (shadow) card / solid pill, not loud color?
If yes to all → clean and polished. If not → remove color, drop borders for soft shadows, tighten type, add space.
What ships with it: 12 files
422.1 KB alongside SKILL.md, 1 of them executable
examples/
- dashboard-dark.html10.3 KB
- dashboard-light.html11.5 KB
- landing-redesign.html6.0 KB
- mobile-app.html6.8 KB
- screenshots/dashboard-dark.png67.6 KB
- screenshots/dashboard-light.png69.6 KB
- screenshots/landing-redesign.png174.8 KB
- screenshots/mobile-app.png69.4 KB
- .gitignore24 B
- install.shruns1.5 KB
- LICENSE1.0 KB
- README.md3.7 KB