skills/ui-design-system/SKILL.md
Complete design system with principles + living style guide. Enforces precise, crafted UI inspired by Linear, Notion, and Stripe. Includes boilerplate style-guide page template for Next.js/React projects. Use when building any UI that needs Jony Ive-level precision.
npx skillsauth add aussiegingersnap/cursor-skills ui-design-systemInstall 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.
This skill provides a complete design system: the philosophy (how to think about design) and the documentation (a living style guide template). Every interface should look designed by a team that obsesses over 1-pixel differences.
Before writing any code, commit to a design direction. Don't default. Think about what this specific product needs to feel like.
Enterprise/SaaS UI has more range than you think. Consider these directions:
Precision & Density — Tight spacing, monochrome, information-forward. For power users who live in the tool. Think Linear, Raycast, terminal aesthetics.
Warmth & Approachability — Generous spacing, soft shadows, friendly colors. For products that want to feel human. Think Notion, Coda, collaborative tools.
Sophistication & Trust — Cool tones, layered depth, financial gravitas. For products handling money or sensitive data. Think Stripe, Mercury, enterprise B2B.
Boldness & Clarity — High contrast, dramatic negative space, confident typography. For products that want to feel modern and decisive. Think Vercel, minimal dashboards.
Utility & Function — Muted palette, functional density, clear hierarchy. For products where the work matters more than the chrome. Think GitHub, developer tools.
Data & Analysis — Chart-optimized, technical but accessible, numbers as first-class citizens. For analytics, metrics, business intelligence.
Pick one. Or blend two. But commit to a direction that fits the product.
Don't default to warm neutrals. Consider the product:
Light or dark? Dark modes aren't just light modes inverted. Dark feels technical, focused, premium. Light feels open, approachable, clean. Choose based on context.
Accent color — Pick ONE that means something. Blue for trust. Green for growth. Orange for energy. Violet for creativity. Don't just reach for the same accent every time.
The content should drive the layout:
Typography sets tone. Don't always default:
These apply regardless of design direction. This is the quality floor.
All spacing uses a 4px base grid:
4px - micro spacing (icon gaps)8px - tight spacing (within components)12px - standard spacing (between related elements)16px - comfortable spacing (section padding)24px - generous spacing (between sections)32px - major separationTLBR must match. If top padding is 16px, left/bottom/right must also be 16px. Exception: when content naturally creates visual balance.
/* Good */
padding: 16px;
padding: 12px 16px; /* Only when horizontal needs more room */
/* Bad */
padding: 24px 16px 12px 16px;
Stick to the 4px grid. Sharper corners feel technical, rounder corners feel friendly. Pick a system and commit:
Don't mix systems. Consistency creates coherence.
Match your depth approach to your design direction. Depth is a tool, not a requirement:
Borders-only (flat) — Clean, technical, dense. Works for utility-focused tools where information density matters more than visual lift. Linear, Raycast, and many developer tools use almost no shadows — just subtle borders to define regions.
Subtle single shadows — Soft lift without complexity. A simple 0 1px 3px rgba(0,0,0,0.08) can be enough.
Layered shadows — Rich, premium, dimensional. Multiple shadow layers create realistic depth. Stripe and Mercury use this approach.
Surface color shifts — Background tints establish hierarchy without any shadows. A card at #fff on a #f8fafc background already feels elevated.
Choose ONE approach and commit.
/* Borders-only approach */
--border: rgba(0, 0, 0, 0.08);
border: 0.5px solid var(--border);
/* Single shadow approach */
--shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
/* Layered shadow approach */
--shadow-layered:
0 0 0 0.5px rgba(0, 0, 0, 0.05),
0 1px 2px rgba(0, 0, 0, 0.04),
0 2px 4px rgba(0, 0, 0, 0.03),
0 4px 8px rgba(0, 0, 0, 0.02);
Monotonous card layouts are lazy design. Design each card's internal structure for its specific content — but keep the surface treatment consistent: same border weight, shadow depth, corner radius, padding scale, typography.
UI controls deserve container treatment. Date pickers, filters, dropdowns should feel like crafted objects.
Never use native form elements for styled UI. Build custom components instead:
Numbers, IDs, codes, timestamps belong in monospace. Use tabular-nums for columnar alignment.
Use Phosphor Icons (@phosphor-icons/react) or Lucide (lucide-react). Icons clarify, not decorate — if removing an icon loses no meaning, remove it.
cubic-bezier(0.25, 1, 0.5, 1)Build a four-level system: foreground (primary) → secondary → muted → faint. Use all four consistently.
Gray builds structure. Color only appears when it communicates: status, action, error, success. Decorative color is noise.
Screens need grounding:
Borders over shadows — Shadows are less visible on dark backgrounds. Lean more on borders.
Adjust semantic colors — Status colors often need to be slightly desaturated for dark backgrounds.
box-shadow: 0 25px 50px...)The style guide is living documentation of your design system. Every component you build should be documented here.
A /style-guide page with:
cp templates/style-guide-page.tsx your-app/app/style-guide/page.tsx
The style guide is the canonical source for all UI components.
When building or modifying components:
Navigation items define the sidebar structure:
const NAV_ITEMS = [
{ id: 'colors', label: 'Colors', icon: Palette, children: [
{ id: 'brand', label: 'Brand' },
{ id: 'system', label: 'System' },
]},
{ id: 'typography', label: 'Typography', icon: Type },
{ id: 'buttons', label: 'Buttons', icon: MousePointer },
// ... more sections
]
Each section follows this pattern:
<section id="buttons">
<SectionHeader title="Buttons" />
<div>
<h4 className="text-xs font-medium text-muted-foreground mb-3 uppercase tracking-wide">
Variants
</h4>
<div className="flex flex-wrap gap-3">
<Button variant="default">Default</Button>
<Button variant="secondary">Secondary</Button>
</div>
</div>
</section>
NAV_ITEMS:{ id: 'my-component', label: 'My Component', icon: Box },
<section id="my-component">
<SectionHeader title="My Component" />
{/* Component variations */}
</section>
For every UI change:
Every interface should look designed by a team that obsesses over 1-pixel differences. Not stripped — crafted. And designed for its specific context.
The goal: intricate minimalism with appropriate personality. Same quality bar, context-driven execution.
tools
# Versioning Skill Semantic versioning automation based on conventional commits. Automatically manages version bumps, changelogs, and git tags using `standard-version`. ## When to Use - Before releasing a new version - When preparing a deployment - To generate/update CHANGELOG.md - When the user asks about version management - Setting up versioning for a new project ## Prerequisites - Conventional commits enforced (recommended: lefthook) - Node.js project with package.json ## Setup (One-Ti
tools
Theme generation with tweakcn for shadcn/ui and Magic UI animations. Use when setting up project themes, customizing color schemes, adding dark mode, or integrating animated components.
tools
shadcn/studio component library with MCP integration, theme generation, and block patterns. This skill should be used when building UI with shadcn components, selecting dashboard layouts, or generating landing pages. Canonical source for all shadcn-based work.
development
Enforce a precise, minimal design system inspired by Linear, Notion, and Stripe. Use this skill when building dashboards, admin interfaces, or any UI that needs Jony Ive-level precision - clean, modern, minimalist with taste. Every pixel matters.