MCP HubMCP Hub
스킬 목록으로 돌아가기

refactoring-ui

wondelai
업데이트됨 2 days ago
4 조회
1,096
121
1,096
GitHub에서 보기
메타aiautomationdesigndata

정보

이 스킬은 웹 UI의 계층 구조, 간격, 색상, 깊이 같은 시각적 디자인 요소를 검토하고 다듬습니다. 디자인 불일치 수정, Tailwind 스타일링 적용, 디자인 시스템 구축, 출시 전 UI 디테일 마무리 작업 시 활용하세요. 회색조 우선 디자인, 제한된 스케일, 컴포넌트 스타일링 지침을 포함한 실용적인 워크플로를 제공합니다.

빠른 설치

Claude Code

추천
기본
npx skills add wondelai/skills -a claude-code
플러그인 명령대체
/plugin add https://github.com/wondelai/skills
Git 클론대체
git clone https://github.com/wondelai/skills.git ~/.claude/skills/refactoring-ui

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Refactoring UI Design System

A practical, opinionated approach to UI design. Apply these principles when generating frontend code, reviewing designs, or advising on visual improvements.

Core Principle

Design in grayscale first. Add color last. This forces proper hierarchy through spacing, contrast, and typography before relying on color as a crutch.

The foundation: Great UI isn't about creativity or talent -- it's about systems. Constrained scales for spacing, type, color, and shadows produce consistently professional results. Start with too much white space, then remove. Details come later -- don't obsess over icons, shadows, or micro-interactions until the layout and hierarchy work.

Scoring

Goal: 10/10. When reviewing or creating UI designs or frontend code, rate it 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.

The Refactoring UI Framework

Seven principles for building professional interfaces without a designer:

1. Visual Hierarchy

Core concept: Not everything can be important. Create hierarchy through three levers: size, weight, and color.

Why it works: When every element competes for attention, nothing stands out. Deliberate de-emphasis of secondary content makes primary content powerful by contrast.

Key insights:

  • Combine levers, don't multiply -- primary text = large OR bold OR dark, not all three
  • Save "all three" for the single most important element on the page
  • Labels are secondary -- form labels, table headers, and metadata labels support the data, not compete with it
  • Semantic color does not equal visual weight -- a muted red secondary button often works better than screaming danger for routine actions
  • De-emphasize labels by making them smaller, lighter, or uppercase-small

Product applications:

ContextHierarchy TechniqueExample
Form fieldsDe-emphasize labels, emphasize valuesSmall uppercase label above large value text
NavigationPrimary nav bold, secondary nav lighterActive link in dark gray-900, inactive in gray-500
CardsTitle large, metadata small and lightCard title 20px bold, date 12px gray-400
DashboardsKey metric large, context smallRevenue "$42,300" large, "vs last month" small
TablesDe-emphasize headers, emphasize cell dataHeaders uppercase small gray, data normal weight

Design patterns:

  • Three-level hierarchy table: Size (large/base/small), Weight (bold/medium/normal), Color (dark/medium/light gray)
  • Label-value pattern: de-emphasized label above emphasized value
  • Button hierarchy: primary (filled), secondary (outlined or muted), tertiary (text only)

Ethical boundary: Don't use hierarchy tricks to hide important information like pricing, terms, or cancellation options.

See: references/advanced-patterns.md for interaction states and advanced component patterns.

2. Spacing & Sizing

Core concept: Use a constrained spacing scale, not arbitrary values. Spacing defines relationships -- elements closer together are more related.

Why it works: Arbitrary spacing (padding: 13px) creates inconsistency. A fixed scale forces deliberate decisions and produces harmonious layouts. Generous spacing feels premium; dense spacing feels overwhelming.

Key insights:

  • Use a linear or near-linear scale: 4, 8, 16, 24, 32, 48, 64px
  • Start with too much white space, then remove -- you'll almost never remove enough
  • Spacing between groups should be larger than spacing within groups
  • Text blocks should be constrained to 45-75 characters (max-w-prose or ~65ch)
  • Forms should max out at 300-500px width
  • Full-width is almost never right for content

Product applications:

ContextSpacing StrategyExample
Icon + labelTight coupling (4px)Small gap keeps them visually connected
Form fieldsRelated elements (8-16px)Input and its label tightly coupled
Card sectionsSection separation (24px)Title block, content block, footer block
Page sectionsMajor sections (48-64px)Hero, features, testimonials, footer
Container widthConstrain to contentmax-w-prose for text, max-w-md for forms

CSS patterns:

  • p-1(4px) p-2(8px) p-4(16px) p-6(24px) p-8(32px) p-12(48px) p-16(64px)
  • max-w-prose(65ch) max-w-md(28rem) max-w-lg(32rem) max-w-xl(36rem)
  • gap-2 for related items, gap-6 for section separation

Ethical boundary: Don't use spacing to bury important UI elements like unsubscribe buttons or privacy controls.

See: references/advanced-patterns.md for responsive breakpoint strategies.

3. Typography

Core concept: Use a modular type scale, constrain line heights by context, and limit to two font families maximum.

Why it works: A modular scale (e.g., 1.25 ratio) creates natural visual rhythm. Tight line heights on headings and relaxed line heights on body text improve readability across contexts.

Key insights:

  • Use a modular scale: 12, 14, 16, 20, 24, 30, 36px (1.25 ratio)
  • Headings need tight line height (1.0-1.25); body text needs relaxed (1.5-1.75)
  • Wider text needs more line height
  • Avoid font weights below 400 for body text -- they become unreadable
  • Use bold (600-700) for emphasis, not for everything
  • Two fonts maximum: one for headings, one for body (or one family with weight variation)

Product applications:

ContextTypography RuleExample
Hero headline36px, tight line-height (1.1), boldLarge impactful statement
Section title24px, line-height 1.25, semiboldClear section demarcation
Body text16px, line-height 1.75, normal weightComfortable reading
Captions/labels12-14px, line-height 1.5, medium graySecondary information
Code/dataMonospace, 14px, consistent widthTabular data alignment

CSS patterns:

  • text-xs(12px) text-sm(14px) text-base(16px) text-lg(18px) text-xl(20px)
  • font-normal(400) font-medium(500) font-semibold(600) font-bold(700)
  • leading-tight(1.25) leading-normal(1.5) leading-relaxed(1.75)

Ethical boundary: Don't use tiny type sizes to hide terms, conditions, or fees from users.

See: references/advanced-patterns.md for text truncation and responsive typography.

4. Color

Core concept: Build a systematic palette with 5-9 shades per color, add subtle saturation to grays, and design in grayscale first.

Why it works: Random colors clash. A systematic palette with predefined shades ensures consistency across the entire interface. HSL adjustments create natural-feeling lighter and darker variants.

Key insights:

  • Each color needs 5-9 shades from near-white to near-black (50 through 900)
  • The darkest shade is not black -- use 900-level dark grays (e.g., #111827) instead of pure #000000
  • Pure grays look lifeless -- add subtle saturation (cool UI: blue tint like #64748b; warm UI: yellow/brown tint like #78716c)
  • HSL adjustments: lighter = higher lightness, lower saturation, shift hue toward 60 degrees; darker = lower lightness, higher saturation, shift hue toward 0/240 degrees
  • Body text minimum 4.5:1 contrast ratio; large text (18px+) minimum 3:1
  • Use #374151 (gray-700) on white, not lighter grays for readable text

Product applications:

ContextColor StrategyExample
Primary palette9 shades (50-900) for main brand colorBlue-500 for buttons, Blue-100 for backgrounds
Gray paletteSaturated grays matching UI temperatureCool grays with blue tint for tech products
Semantic colorsSuccess, warning, error each with shade rangeGreen-500 for success, Red-500 for errors
Text colorsThree levels: dark, medium, lighttext-gray-900, text-gray-600, text-gray-400
Accessible contrastTest all text/background combos#374151 on white = 10.5:1 ratio

CSS patterns:

  • text-gray-900(dark) text-gray-600(medium) text-gray-400(light)
  • bg-blue-50 for subtle backgrounds, bg-blue-500 for primary actions
  • border-gray-200 for subtle borders, border-gray-300 for stronger

Ethical boundary: Don't use color alone to convey information -- always pair with text or icons for accessibility.

See: references/theming-dark-mode.md for dark palette creation and theme implementation.

5. Depth & Shadows

Core concept: Use a shadow scale to convey elevation. Small shadows for slightly raised elements, large shadows for floating elements.

Why it works: Shadows create a sense of physical depth that helps users understand which elements are interactive, which are floating above the surface, and which are part of the background.

Key insights:

  • Small shadows = raised slightly (buttons, cards); large shadows = floating (modals, dropdowns)
  • Shadows have two parts: a tight, dark shadow for crispness plus a larger, softer shadow for atmosphere
  • Depth without shadows: lighter top border + darker bottom border, subtle gradient backgrounds, overlapping elements with offset
  • Don't overuse shadows -- if everything floats, nothing has depth
  • Shadow color should be transparent dark, not opaque gray

Product applications:

ContextShadow LevelExample
Buttonsshadow-sm (subtle raise)Slightly elevated above page surface
Cardsshadow-md (clear separation)Content grouped and lifted from background
Dropdownsshadow-lg (floating)Menu clearly floating above content
Modalsshadow-xl (highest elevation)Overlay clearly detached from page
Flat alternativesBorder + background shiftLighter top border, darker bottom border

CSS patterns:

  • shadow-sm: 0 1px 2px rgba(0,0,0,0.05)
  • shadow-md: 0 4px 6px rgba(0,0,0,0.1)
  • shadow-lg: 0 10px 15px rgba(0,0,0,0.1)
  • shadow-xl: 0 20px 25px rgba(0,0,0,0.15)

Ethical boundary: Don't use excessive shadows or visual emphasis to draw attention to deceptive UI elements (dark patterns).

See: references/advanced-patterns.md for interaction states and elevation hierarchy.

6. Images & Icons

Core concept: Treat images as design elements, not afterthoughts. Size icons deliberately and use overlays to ensure text readability on images.

Why it works: Poorly sized icons look awkward. Unstyled images break visual consistency. Deliberate image treatment (overlays, object-fit, border radius) makes interfaces feel polished.

Key insights:

  • Icons should be sized relative to their context -- don't use the same size everywhere
  • Use icon sets with consistent stroke width and style
  • Images need treatment: object-fit cover, consistent aspect ratios, overlays for text
  • Don't stretch or distort images -- use object-fit: cover and crop deliberately
  • Empty states are an opportunity -- use illustrations, not just text

Product applications:

ContextImage/Icon TechniqueExample
Hero imagesOverlay with semi-transparent gradientText readable over any photo
AvatarsConsistent size, rounded, fallback initials40px circle with object-fit cover
Feature iconsConsistent size, weight, and color24px stroke icons in gray-500
Empty statesCustom illustration + clear CTAFriendly illustration with "Get started" button
ThumbnailsFixed aspect ratio with object-fit cover16:9 cards with no distortion

CSS patterns:

  • object-fit: cover with fixed aspect-ratio for consistent image display
  • Icon sizing: w-4 h-4 inline, w-6 h-6 in navigation, w-8 h-8 for feature icons
  • Image overlay: bg-gradient-to-t from-black/60 to-transparent for text on images

Ethical boundary: Don't use misleading images or icons that misrepresent functionality or product capabilities.

See: references/advanced-patterns.md for image treatment, icon usage, and empty states.

7. Layout & Composition

Core concept: Don't center everything. Use alignment, overlap, and emphasis variation to create engaging compositions.

Why it works: Left-aligned text is easier to read. Varied layouts keep users engaged. Breaking out of rigid boxes makes designs feel dynamic and intentional.

Key insights:

  • Left-align text by default; center only short headlines, hero sections, single-action CTAs, and empty states
  • Cards don't need to contain everything -- let images bleed to edges, overlap containers, or extend beyond bounds
  • In lists and feeds, vary the visual treatment -- feature some items, minimize others
  • Use alignment to create visual relationships between unrelated elements
  • Alternate emphasis: not every card in a list needs the same layout

Product applications:

ContextLayout StrategyExample
Hero sectionsCentered text, generous spacingShort headline + subtext + single CTA
Feature gridsLeft-aligned text, consistent card sizes3-column grid with icon + title + description
Blog feedsVaried card sizes for emphasisFirst post large, next posts in 2-column grid
SidebarsNarrower than main content, lighter backgroundNavigation or filters at 240-320px width
Content pagesConstrained width, left-alignedmax-w-prose centered container with left text

CSS patterns:

  • text-left by default, text-center only for heroes and short headlines
  • grid grid-cols-3 gap-6 for feature grids
  • max-w-4xl mx-auto for page containers
  • overflow-hidden on cards with object-fit: cover images that bleed to edges

Ethical boundary: Don't use layout tricks to hide or obscure important user choices like opt-outs or data permissions.

See: references/advanced-patterns.md for responsive breakpoints and complex layout patterns.

Common Mistakes

MistakeWhy It FailsFix
"Looks amateur"Insufficient white space, unconstrained widthsAdd more white space, constrain content widths
"Feels flat"No depth differentiation between elementsAdd subtle shadows, border-bottom on sections
"Text is hard to read"Poor line-height, too wide, low contrastIncrease line-height, constrain width, boost contrast
"Everything looks the same"No visual hierarchy between elementsVary size/weight/color between primary and secondary
"Feels cluttered"Equal spacing everywhere, no groupingGroup related items, increase spacing between groups
"Colors clash"Random color choices without a systemReduce saturation, use more grays, limit palette to system
"Buttons don't pop"Low contrast with surrounding elementsIncrease contrast with surroundings, add shadow
Using arbitrary valuespx values like 13, 17, 23 create inconsistencyStick to the spacing and type scales

Quick Diagnostic

Audit any UI design:

QuestionIf NoAction
Does hierarchy read when squinting (blur test)?Elements competing for attentionIncrease contrast between primary and secondary
Does it work in grayscale?Relying on color for hierarchyStrengthen size/weight/spacing hierarchy
Is there enough white space?Probably not -- most designs are too denseIncrease spacing, especially between groups
Are labels de-emphasized vs. their values?Labels competing with dataMake labels smaller, lighter, or uppercase-small
Does spacing follow a consistent scale?Arbitrary spacing creates visual noiseUse 4/8/16/24/32/48/64 scale only
Is text width constrained for readability?Long lines cause reader fatigueApply max-w-prose (~65ch) to text blocks
Do colors have sufficient contrast?Accessibility failure, hard to readTest with WCAG contrast checker, use gray-700+ on white
Are shadows appropriate for elevation?Elements floating at wrong visual levelMatch shadow scale to element purpose

Reference Files

  • advanced-patterns.md: Empty states, form design, image treatment, icon sizing, interaction states, color psychology, border radius systems, text truncation, responsive breakpoints
  • animation-microinteractions.md: When to animate, easing functions, durations, loading states, animation performance
  • accessibility-depth.md: WCAG 2.1 AA checklist, focus management, screen reader support, keyboard navigation
  • data-visualization.md: Chart selection, color in charts, table design, dashboard layouts
  • theming-dark-mode.md: Dark palette creation, elevation in dark mode, theme implementation strategies

Further Reading

This skill is based on Adam Wathan and Steve Schoger's practical design guide. For the complete system with visual examples:

About the Authors

Adam Wathan is a full-stack developer and the creator of Tailwind CSS, one of the most popular utility-first CSS frameworks. Steve Schoger is a visual designer known for his practical design tips and illustrations. Together they created Refactoring UI to teach developers how to design better interfaces using systematic, repeatable techniques rather than relying on innate artistic talent. Their approach emphasizes constrained design systems -- fixed scales for spacing, typography, color, and shadows -- that produce professional results without requiring a design background.

GitHub 저장소

wondelai/skills
경로: refactoring-ui
0
agent-skillsai-skillsclaude-codeclaude-code-marketplaceclaude-code-pluginclaude-code-skills

연관 스킬

content-collections

메타

이 스킬은 콘텐츠 콜렉션(Content Collections)을 위한 프로덕션 검증된 설정을 제공합니다. 콘텐츠 콜렉션은 Markdown/MDX 파일을 Zod 검증이 포함된 타입 안전한 데이터 콜렉션으로 변환해주는 TypeScript 최우선 도구입니다. 블로그, 문서 사이트 또는 콘텐츠 중심의 Vite + React 애플리케이션을 구축할 때 타입 안전성과 자동 콘텐츠 검증을 보장하기 위해 사용하세요. Vite 플러그인 구성과 MDX 컴파일부터 배포 최적화 및 스키마 검증에 이르기까지 모든 것을 다룹니다.

스킬 보기

polymarket

메타

이 스킬은 개발자들이 Polymarket 예측 시장 플랫폼을 활용한 애플리케이션을 구축할 수 있도록 지원하며, 거래 및 시장 데이터를 위한 API 통합 기능을 포함합니다. 또한 WebSocket을 통한 실시간 데이터 스트리밍을 제공하여 실시간 거래와 시장 활동을 모니터링할 수 있습니다. 이를 통해 거래 전략을 구현하거나 실시간 시장 업데이트를 처리하는 도구를 생성하는 데 활용할 수 있습니다.

스킬 보기

creating-opencode-plugins

메타

이 스킬은 개발자들이 명령어, 파일, LSP 작업 등 25개 이상의 이벤트 유형에 연결되는 OpenCode 플러그인을 만들 수 있도록 돕습니다. JavaScript/TypeScript 모듈을 위한 플러그인 구조, 이벤트 API 명세, 구현 패턴을 제공합니다. OpenCode AI 어시스턴트의 라이프사이클을 사용자 정의 이벤트 기반 로직으로 가로채거나, 모니터링하거나, 확장해야 할 때 사용하세요.

스킬 보기

sglang

메타

SGLang은 RadixAttention 프리픽스 캐싱을 활용하여 JSON, 정규식, 에이전트 워크플로우를 위한 고속 구조화 생성에 특화된 고성능 LLM 서빙 프레임워크입니다. 특히 반복되는 프리픽스가 있는 작업에서 상당히 빠른 추론 속도를 제공하여 복잡한 구조화 출력 및 다중 턴 대화에 이상적입니다. 제약 디코딩이 필요하거나 광범위한 프리픽스 공유가 있는 애플리케이션을 구축할 때는 vLLM과 같은 대안보다 SGLang을 선택하십시오.

스킬 보기