linear-design

Build and audit Linear/Vercel/Notion-quality UI. Covers color systems, motion, progressive disclosure, keyboard-first design, layout architecture, surface elevation, information density, micro-interactions, and state handling. Use when building UI components, reviewing design quality, creating pages, or when the user asks for a design review.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "linear-design" with this command: npx skills add blink-new/claude/blink-new-claude-linear-design

Linear-Quality Design System

Build UI with the craft of Linear, Vercel, and Resend. Great UI is restraint, not addition. The best details are invisible — felt, not seen.

Color System

Design a derived color system, not a palette of hardcoded values.

  • Define 3 foundation variables: base color, accent color, contrast level.
  • Derive all surfaces, text, icons, borders from these via opacity operations.
  • Use perceptually uniform color space (LCH/OKLCH) so colors at same lightness look equally light.
  • Hierarchy through opacity and weight, not hue. Monochrome-first.
  • Color ONLY for semantic meaning: error (red), success (green), active/selected, brand accent.
  • No decorative color. No habitual colored icons — make them muted-foreground.
  • Limit brand color leakage into chrome. The frame should feel neutral and timeless.
  • No hardcoded hex anywhere. CSS variables / design tokens only.

Surface & Elevation

Layer surfaces with subtle background shifts, not heavy shadows.

  • Define clear elevation hierarchy: backgroundcard/raisedpopoverdialog/modal.
  • Each level is a slight shade shift (via opacity on base), not a different color.
  • Dark mode: shadows become subtle borders or glows. Replace shadow-md with border border-border/50.
  • Borders: semi-transparent at low opacity (border-border/40), never solid opaque lines.
  • Backdrop blur on floating elements: backdrop-blur-sm on overlays, popovers, command palette.
  • Support high-contrast mode via the contrast variable — accessibility built into the system.
  • -webkit-font-smoothing: antialiased globally.

Motion & Animation

Motion is ~30% of why premium UI feels premium. transition-colors duration-150 is the floor.

  • Micro-transitions: color/opacity changes use duration-150 ease-out.
  • Layout transitions: panels, drawers, sidebars use duration-200 ease-in-out.
  • Entrances: modals/dialogs use spring-based easing — slight overshoot, then settle. Framer Motion: type: "spring", stiffness: 400, damping: 30. CSS: cubic-bezier(0.34, 1.56, 0.64, 1).
  • List stagger: items entering a list animate in with 30-50ms stagger between each.
  • Skeleton shimmer: animated gradient sweep matching content shape, not a static gray box.
  • Toasts: slide in from consistent anchor (bottom-right), slide out on dismiss.
  • Number animations: counters animate between values, don't jump.
  • Exit animations: elements leaving should animate out (opacity + slight translate), not vanish.
  • Never add artificial delays. Motion should feel instant-but-smooth, not slow.

Layout Architecture

The structural patterns that make an app feel like a tool, not a website.

  • Three-column layout: collapsible sidebar (240-280px) + main content + optional detail panel.
  • Resizable panels: drag handles between columns. Show handle on hover, store width preference.
  • Sticky headers: compress or transform on scroll. Never duplicate content in header and body.
  • Sheet/drawer vs modal: use sheets for contextual detail (stays in flow), modals for focused tasks (blocks flow). Sheets slide from right, modals center with backdrop.
  • Command palette: Cmd+K overlay that floats above layout. Fuzzy search, categorized results, recent items, keyboard-navigable. This is primary navigation for power users.
  • Split views: side-by-side content for comparison or detail-alongside-list.

Keyboard-First Design

A Linear-quality app is faster with keyboard than mouse.

  • Command palette (Cmd+K): search commands, navigate, execute actions. Must exist.
  • Single-key shortcuts: C to create, S for status, etc. Show in tooltips and context menus.
  • List navigation: j/k or arrow keys to move through items, Enter to open.
  • Multi-select: Shift+Click range select, Cmd+Click toggle individual.
  • Focus management: after dialog close, focus returns to trigger. After create, focus new item.
  • Shortcuts in UI: display keyboard shortcut hints in tooltips, context menus, and command palette results. This teaches users the shortcuts naturally.
  • Escape to dismiss: every overlay, modal, popover, command palette closes on Escape.

Progressive Disclosure

Resting state is minimal. Complexity reveals on interaction.

  • Row actions: edit, delete, options menu — visible only on row :hover.
  • Metadata: timestamps, secondary badges — shown on hover where non-essential at rest.
  • Toolbars: bulk action bars appear on selection, not permanently.
  • Contextual menus: right-click surfaces full action set. Include keyboard shortcuts in menu items.
  • Sub-menu safe areas: triangle hit area between cursor and sub-menu so diagonal mouse movement doesn't close the menu (the Linear pattern — ~40 lines of code, invisible to user, felt as smoothness).
  • If it's not primary content or primary action, it should not be visible at rest.

Information Density

Dense yet clean. Chrome is sparse, content is dense.

  • Tight line-heights in lists and tables (1.25-1.4, not Tailwind default 1.5).
  • Compact inline metadata: status dot + avatar + priority icon + label, all in one row.
  • Tabular numbers: font-variant-numeric: tabular-nums on all number columns so digits align.
  • Monospace: IDs, branch names, code, technical strings in font-mono text-xs.
  • Right-align numbers in table columns.
  • Density trade-off: reduce chrome spacing (sidebar padding, header height) to give content room. Content area can be dense; navigation frame stays spacious.

Buttons & Actions

  • AT MOST one variant="default" (primary) button per page/modal/card.
  • All other actions: secondary, outline, or ghost — pick by visual weight.
  • Destructive: variant="destructive" + confirmation dialog before execution.
  • Consistent button height per context. Never mix sizes in the same view.
  • Cursor pointer on everything clickable.

Interactivity & Micro-interactions

  • Every clickable element: distinct hover: state (color/opacity) + active: state (pressed).
  • No bare <div onClick> without visual hover feedback.
  • Focusable elements: focus-visible:ring-2 ring-ring.
  • Drag handles: appear on hover, hidden at rest.
  • Copy-to-clipboard: brief "Copied!" feedback (tooltip or inline text swap, 1.5s).
  • Optimistic updates: UI changes instantly on action, server catches up async.
  • Smart menu positioning: menus stay in viewport, flip direction when near edges.
  • Input debounce: search/filter inputs debounce 200-300ms, show subtle loading indicator.

Typography

  • Each view: one dominant heading, one focal point. No competing visual weights.
  • Chrome recedes, content advances — high-contrast text against quieter frame.
  • Design system tokens only. No arbitrary font sizes or weights.
  • Display font for headings (e.g. Inter Display, Geist) for expression. Regular weight for body.
  • Letter-spacing: slightly tighter on large headings (tracking-tight), default on body.

Truncation

  • Single-line: truncate + min-w-0 on flex parent and span.
  • Multi-line: line-clamp-{n} with deliberate max.
  • Text never overflows. Every string is bounded. Never break-all.

States

  • Loading: <Skeleton> matching real layout shape + shimmer animation. Never spinner in content.
  • Empty: title + one-line description + single CTA. Never blank.
  • Error: human-readable message + what to do next.
  • Disabled: opacity-50 cursor-not-allowed. Never remove the element.

Tables & Data Display

  • Full row highlight on hover (subtle background change).
  • Right-aligned numbers, left-aligned text.
  • Sortable columns with subtle indicator (chevron icon).
  • Horizontally scrollable with frozen first column on overflow.
  • Row actions on hover (progressive disclosure).
  • Alternating row backgrounds at very low opacity (optional, even:bg-muted/30).

Components

  • shadcn/ui only. Never reimplement Dialog, Tooltip, Dropdown, Select, Tabs, Badge, Card, Skeleton.
  • Lucide icons only. No emojis. No decorative AI icons (sparkles, wands, stars).
  • Icon-only buttons: MUST wrap in <Tooltip> with short label. No exceptions.
  • Consistent icon size per density (16px dense, 18-20px standard). Don't mix arbitrarily.
  • Consistent border radius throughout — never deviate from system radius.

Spacing

  • 4px base scale. No arbitrary values (mt-[13px] is a violation).
  • No orphaned elements. Everything on a layout grid.
  • Remove borders/dividers replaceable by spacing alone.
  • Generous whitespace — empty space IS the design.

Polish

  • No console.log in UI components.
  • No z-[9999] — use defined z-index scale.
  • No !important overrides.
  • No hardcoded colors — all through CSS variables.
  • Escape closes every overlay.
  • URL updates on tab/section change for shareability.
  • Responsive: sidebar collapses to icon-only or drawer on mobile. Panels stack vertically.

Audit Output Format

For each issue:

  1. File path + line
  2. What's wrong (one sentence)
  3. The fix

Group by: Color/SurfaceMotionLayoutKeyboardProgressive DisclosureDensityInteractivityTypographyStatesTablesPolish

Rank: broken interactions > missing keyboard support > missing states > motion gaps > visual inconsistency > polish.

End with: what still needs human design judgment that code alone cannot fix.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

seo-article-writing

No summary provided by upstream source.

Repository SourceNeeds Review
General

kanban-dnd

No summary provided by upstream source.

Repository SourceNeeds Review
General

team-saas

No summary provided by upstream source.

Repository SourceNeeds Review
linear-design | V50.AI