SKILL·235899

refactoring-ui

wondelai
更新于 Yesterday
1,896
193
1,896
在 GitHub 上查看
aiautomationdesigndata

关于

This skill audits and fixes visual design issues in web UIs, focusing on hierarchy, spacing, color, and depth. Use it when polishing component styling, building design systems, or correcting layouts that look "off." It provides practical guidance for implementing constrained design scales, dark mode themes, and a grayscale-first workflow.

快速安装

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 talent — it's about systems. Constrained scales for spacing, type, color, and shadows produce consistently professional results. Start with too much white space and remove; leave details (icons, shadows, micro-interactions) until layout and hierarchy work.

Scoring

Goal: 10/10. Score by counting satisfied rows in the Quick Diagnostic (8 yes/no checks): score = round(satisfied / 8 × 10). Bands follow directly: 10 = all 8 pass (hierarchy reads blurred and in grayscale, every value on a scale); 9 = exactly 1 gap (usually weak hierarchy or thin white space); 6-8 = 2-3 gaps; <=5 = 4+ gaps (arbitrary spacing, color doing the work hierarchy should, or failing contrast). Always state the current score and the specific diagnostic rows to fix 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; deliberately de-emphasizing 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
  • Labels are secondary — form labels, table headers, and metadata support the data, not compete with it; make them smaller, lighter, or uppercase-small
  • Semantic color ≠ visual weight — a muted secondary button often beats screaming red for routine destructive actions

Product applications:

ContextHierarchy TechniqueExample
Form fieldsDe-emphasize labels, emphasize valuesSmall uppercase label above large value
DashboardsKey metric large, context small"$42,300" large, "vs last month" small
TablesDe-emphasize headers, emphasize dataHeaders uppercase small gray, data normal

Design patterns:

  • Three-level hierarchy: Size (large/base/small), Weight (bold/medium/normal), Color (dark/medium/light gray)
  • 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 when designing components beyond static layout — interaction/hover/focus states, form design, empty states, border-radius systems, text truncation, and responsive breakpoints.

2. Spacing & Sizing

Core concept: Use a constrained spacing scale, not arbitrary values. Spacing defines relationships — closer elements read as more related.

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

Key insights:

  • Use the 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 must exceed spacing within groups
  • Constrain widths: text to 45-75 characters (max-w-prose), forms to 300-500px; full-width is almost never right

Product applications:

ContextSpacing StrategyExample
Icon + labelTight coupling (4px)Small gap keeps them connected
Card sectionsSection separation (24px)Title, content, footer blocks
Page sectionsMajor sections (48-64px)Hero, features, testimonials

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

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 (steps growing ~1.2× each) creates natural visual rhythm; tight line heights on headings and relaxed on body text improve readability in each context.

Key insights:

  • Scale: 12, 14, 16, 18, 20, 24, 30, 36px (~1.2 modular, hand-tuned)
  • Headings: tight line height (1.0-1.25); body: relaxed (1.5-1.75); wider text needs more line height
  • Avoid weights below 400 for body text; use bold (600-700) for emphasis, not everything
  • Two fonts max: one for headings, one for body (or one family with weight variation)

Product applications:

ContextTypography RuleExample
Hero headline36px, line-height 1.1, boldLarge impactful statement
Body text16px, line-height 1.75, normalComfortable reading
Captions/labels12-14px, line-height 1.5, medium graySecondary information

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)

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 predefined shade system ensures consistency, and HSL adjustments create natural-feeling lighter and darker variants.

Key insights:

  • Each color needs 5-9 shades from near-white to near-black (50-900); darkest is not pure black — use #111827, not #000000
  • Pure grays look lifeless — tint them (cool UI: blue like #64748b; warm UI: yellow/brown like #78716c)
  • HSL: lighter = raise lightness, lower saturation, hue toward 60°; darker = the reverse, hue toward 0°/240°
  • Contrast minimums: 4.5:1 body text, 3:1 large text (18px+); use #374151 (gray-700) on white, not lighter grays

Product applications:

ContextColor StrategyExample
Primary palette9 shades (50-900) of brand colorBlue-500 buttons, Blue-100 backgrounds
Semantic colorsSuccess/warning/error with shade rangesGreen-500 success, Red-500 errors
Text colorsThree levels: dark, medium, lighttext-gray-900, text-gray-600, text-gray-400

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

See references/theming-dark-mode.md when building a dark theme — hex shade scales, why darkest is #111827 not black (halation), and conveying elevation via lightness instead of shadow. See references/accessibility-depth.md when contrast, focus rings, keyboard nav, or screen-reader support is in scope — full WCAG 2.1 AA checklist and fixes.

5. Depth & Shadows

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

Why it works: The eye reads shadow size as height above the page; a consistent scale makes elevation legible, so users intuit what's interactive, floating, or background.

Key insights:

  • Small shadows = raised slightly (buttons, cards); large = floating (modals, dropdowns)
  • Good shadows have two parts: a tight dark shadow for crispness plus a larger soft one for atmosphere
  • Depth without shadows: lighter top border + darker bottom border, subtle gradients, overlapping elements
  • Don't overuse — if everything floats, nothing has depth; shadow color is transparent dark, never opaque gray

Product applications:

ContextShadow LevelExample
Buttonsshadow-sm (subtle raise)Slightly elevated above surface
Dropdownsshadow-lg (floating)Menu clearly above content
Modalsshadow-xl (highest)Overlay detached from page

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)

See references/animation-microinteractions.md when adding motion to interactive elements — durations, easing curves, loading states, and the prefers-reduced-motion rule.

6. Images & Icons

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

Why it works: Poorly sized icons look awkward and unstyled images break consistency; deliberate treatment (overlays, object-fit, radius) makes interfaces feel polished.

Key insights:

  • Size icons relative to context; use sets with consistent stroke width and style
  • Never stretch or distort — use object-fit: cover with fixed aspect ratios and crop deliberately
  • Text over images needs an overlay (semi-transparent gradient)
  • Empty states are an opportunity — use illustrations plus a clear CTA, not just text

Product applications:

ContextImage/Icon TechniqueExample
Hero imagesSemi-transparent gradient overlayText readable over any photo
AvatarsConsistent size, rounded, fallback initials40px circle, object-fit cover
Empty statesCustom illustration + CTAFriendly illustration with "Get started"

CSS patterns:

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

7. Layout & Composition

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

Why it works: A consistent left edge gives the eye a fixed return point per line, so it costs less to scan; centered multi-line text moves that edge every line and slows reading.

Key insights:

  • Left-align by default; center only short headlines, heroes, single-action CTAs, and empty states
  • Cards don't need to contain everything — let images bleed to edges or overlap containers
  • Vary visual treatment in lists and feeds — feature some items, minimize others
  • Use alignment to create relationships between unrelated elements

Product applications:

ContextLayout StrategyExample
Hero sectionsCentered text, generous spacingShort headline + subtext + single CTA
Blog feedsVaried card sizes for emphasisFirst post large, rest in 2-column grid
Content pagesConstrained width, left-alignedmax-w-prose 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

See references/data-visualization.md when laying out charts, tables, or dashboards — chart-type selection, color use in charts, table density, and dashboard composition.

Common Mistakes

MistakeWhy It FailsFix
"Looks amateur"Insufficient white space, unconstrained widthsMore white space, constrain content widths
"Feels flat"No depth differentiationSubtle 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 hierarchyVary size/weight/color between primary and secondary
"Feels cluttered"Equal spacing everywhereGroup related items, larger gaps between groups
"Colors clash"Random choices, no systemReduce saturation, more grays, limit to palette
"Buttons don't pop"Low contrast with surroundingsIncrease contrast, add shadow
Arbitrary valuespx values like 13, 17, 23 breed inconsistencyStick to the spacing and type scales

Quick Diagnostic

Audit any UI design:

QuestionIf NoAction
Does hierarchy read when squinting (blur test)?Elements competingIncrease primary/secondary contrast
Does it work in grayscale?Color is a crutchStrengthen 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. values?Labels competing with dataSmaller, lighter, or uppercase-small labels
Does spacing follow a consistent scale?Arbitrary spacing = visual noiseUse 4/8/16/24/32/48/64 only
Is text width constrained?Long lines fatigue readersApply max-w-prose (~65ch)
Do colors have sufficient contrast?Accessibility failureWCAG-check; use gray-700+ on white
Are shadows appropriate for elevation?Elements float at wrong levelMatch shadow scale to element purpose

Further Reading

For the complete system with visual before/after examples:

About the Authors

Adam Wathan, creator of Tailwind CSS, and Steve Schoger, the visual designer behind its design language, wrote Refactoring UI to teach developers systematic, repeatable design techniques. Their approach replaces artistic talent with constrained systems — fixed scales for spacing, typography, color, and shadows — that produce professional results.

GitHub 仓库

wondelai/skills
路径: plugins/ux-design/skills/refactoring-ui
0
agent-skillsai-skillsbusinessclaude-codeclaude-code-marketplaceclaude-code-plugin
FAQ

常见问题

什么是 refactoring-ui Skill?

refactoring-ui 是一个 Claude Skill,作者为 wondelai。Skill 将 Claude 按需加载的说明和资源打包,让 Claude 无需额外提示即可执行与 refactoring-ui 相关的任务。

如何安装 refactoring-ui?

使用本页的安装命令:将 refactoring-ui 作为插件添加到 Claude Code,或将其仓库克隆到 skills 目录,然后重启 Claude 以加载该 Skill。

refactoring-ui 属于哪个分类?

refactoring-ui 属于元分类。

refactoring-ui 可以免费使用吗?

可以。refactoring-ui 已收录在 AIMCP,可免费安装。

相关推荐技能

content-collections

Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。

查看技能
polymarket

这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。

查看技能
creating-opencode-plugins

该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。

查看技能
sglang

SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。

查看技能