UI Design

Comprehensive UI design skill covering fundamentals, patterns, and anti-patterns. Layout, typography, color, spacing, accessibility, motion, and component design. Use when building any web interface, reviewing design quality, or creating distinctive UIs.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 923 · 9 current installs · 9 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name and description match the SKILL.md and README content: both are design guidance covering layout, typography, color, accessibility, motion, and component design. The skill does not request unrelated capabilities or credentials.
Instruction Scope
SKILL.md contains only design guidance, examples, and best practices. It does not instruct the agent to read system files, access environment variables, call external endpoints, or collect/transmit user data beyond normal design recommendations.
Install Mechanism
There is no install spec or code to install—this is instruction-only. README mentions an 'npx add' line and local copy commands, but those are optional/manual instructions and not executable parts of the skill package itself. The 'npx add' invocation points at a GitHub tree URL (unusual usage) but it is only documentation, not an automated install spec.
Credentials
The skill declares no required environment variables, credentials, or config paths. Nothing in SKILL.md reads or requires secrets or unrelated system config.
Persistence & Privilege
Skill is not marked always:true and has no install-time hooks or code that would persist or elevate privileges. It is user-invocable and allowed to be invoked autonomously by the agent (platform default), which is expected for instruction-only skills.
Assessment
This is a content-only UI design guide and appears safe to install/use. The main remaining risk is provenance: the package has no homepage and a generic owner ID—if you will rely on it for production workflows, verify its origin (check the source repository, commit history, and license). The README includes an unusual 'npx add' GitHub-tree URL and local-copy instructions referencing ~/.ai-skills; these are just manual install instructions—don’t run any unfamiliar install scripts you don’t trust. If you plan to incorporate assets (fonts, icons) mentioned by the guide, fetch them from trusted CDNs or vendor sites.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk977t33p62c1qe6wpakjmtd46980wzmx

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

UI Design Fundamentals

The definitive guide for building production-grade web interfaces. Covers the full stack of design decisions from layout to motion.

WHEN To Use

  • Designing new UI components or pages
  • Building landing pages, dashboards, or applications
  • Reviewing code for design quality
  • Creating distinctive interfaces that avoid generic aesthetics
  • Implementing accessibility requirements

KEYWORDS

ui design, web design, layout, typography, color palette, spacing, visual hierarchy, responsive design, accessibility, motion design, component design, design tokens, frontend, css, tailwind


Design Philosophy

The 80/20 of Design Quality

FactorImpactTime Investment
Typography40%Choose 1-2 fonts well
Spacing25%Use consistent scale
Color20%Limit palette, ensure contrast
Everything else15%Shadows, borders, motion

Focus on typography and spacing first. They're 65% of perceived quality.

Commit to a Direction

Mediocrity is forgettable. Pick an extreme:

DirectionCharacteristicsUse When
Brutally MinimalStark, essential, nothing extraDeveloper tools, productivity
Luxury/RefinedPremium, subtle eleganceHigh-end products, fashion
PlayfulFun, bright, approachableConsumer apps, games
EditorialType-forward, grid-basedContent sites, magazines
IndustrialFunction-forward, robustB2B, enterprise

Layout

Grid vs Flexbox Decision

Layout NeedToolWhy
Page-level structureCSS Grid (grid-template-areas)Named regions, explicit control
Navigation barsFlexboxSingle-axis, gap spacing
Card gridsGrid (auto-fill/auto-fit)Responsive without media queries
CenteringGrid (place-items: center)Shortest, most reliable
Sidebar + contentGrid (250px 1fr)Fixed + fluid
Stacking/overlapsGrid + grid-area: 1/1No position: absolute needed

Container Strategy

/* Standard content width */
.container {
  width: 100%;
  max-width: 1280px;
  margin-inline: auto;
  padding-inline: clamp(1rem, 5vw, 3rem);
}

/* Full-bleed with contained content */
.full-bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

Common Layout Mistakes

MistakeProblemFix
Mixing container widthsInconsistent alignmentUse single max-w-* value
Content behind fixed navbarHidden contentAdd pt-[navbar-height]
No mobile paddingEdge-to-edge textAdd px-4 minimum
Centered everythingWeak hierarchyLeft-align body text

Typography

Typography carries 90% of a design's personality.

Font Pairing by Context

ContextDisplay FontBody FontExample
EditorialHigh-contrast serifNeutral humanistPlayfair + Source Sans
SaaSGeometric sansMatching sansDM Sans + DM Mono
LuxuryThin modern serifElegant sansCormorant + Jost
DeveloperMonospace displayMonospace bodyJetBrains Mono + IBM Plex
PlayfulRounded/quirkyClean readableNunito + Outfit

Type Scale (1.25 ratio)

--text-xs: 0.64rem;   /* 10px - captions */
--text-sm: 0.8rem;    /* 13px - secondary */
--text-base: 1rem;    /* 16px - body */
--text-lg: 1.25rem;   /* 20px - lead */
--text-xl: 1.563rem;  /* 25px - h4 */
--text-2xl: 1.953rem; /* 31px - h3 */
--text-3xl: 2.441rem; /* 39px - h2 */
--text-4xl: 3.052rem; /* 49px - h1 */

Typography Rules

RuleValueWhy
Minimum body size16pxBelow is hard to read
Body line-height1.5-1.75Improves readability
Heading line-height1.1-1.2Tighter for large text
Line length60-75 charactersOptimal reading
Paragraph spacing1.5emClear separation

Typography Mistakes

MistakeProblemFix
System fonts onlyGeneric lookUse Google Fonts or variable fonts
Too many fontsVisual chaosMax 2 families
Weak weight contrastPoor hierarchyBold headings (600+), regular body
Long linesHard to readAdd max-w-prose (65ch)

Color

Building a Palette

Every palette needs five functional roles:

RolePurposeUsage
PrimaryBrand identityButtons, links, active states
NeutralText, backgroundsBody text, cards, dividers
AccentSecondary actionsTags, badges, highlights
SemanticFeedbackSuccess/warning/error states
SurfaceLayered backgroundsCards, modals, overlays

Surface Layering (Dark Mode)

Create depth through lightness, not shadows:

:root {
  --surface-0: hsl(220 15% 8%);   /* page background */
  --surface-1: hsl(220 15% 12%);  /* card */
  --surface-2: hsl(220 15% 16%);  /* raised element */
  --surface-3: hsl(220 15% 20%);  /* popover/modal */
}

Contrast Requirements (WCAG)

Text SizeMinimum RatioEnhanced (AAA)
Normal text (<18px)4.5:17:1
Large text (≥18px bold, ≥24px)3:14.5:1
UI components3:1

Color Mistakes

MistakeProblemFix
Purple gradient on white"AI aesthetic" clichéUse intentional brand colors
Low contrast textAccessibility failTest with contrast checker
Color-only indicatorsColorblind users excludedAdd icons/text
Too many colorsVisual noise3-5 colors maximum
Light gray text on whiteUnreadableslate-600 minimum

Spacing

8px Base Unit Scale

--space-1: 0.25rem;  /* 4px - tight gaps */
--space-2: 0.5rem;   /* 8px - input padding */
--space-3: 0.75rem;  /* 12px - button padding */
--space-4: 1rem;     /* 16px - default spacing */
--space-6: 1.5rem;   /* 24px - section padding */
--space-8: 2rem;     /* 32px - section gaps */
--space-12: 3rem;    /* 48px - major breaks */
--space-16: 4rem;    /* 64px - page rhythm */

Spacing Rules

RuleImplementation
Use gap not marginsdisplay: flex; gap: var(--space-4)
Consistent paddingSame values on all cards/sections
More space between groupsLess space within groups (Gestalt)
No arbitrary valuesOnly use scale tokens

Spacing Mistakes

MistakeProblemFix
Arbitrary pixel valuesInconsistent rhythmUse spacing scale only
Margin on childrenMargin collapse bugsUse gap on parent
Equal spacing everywhereNo visual groupingMore between, less within
Tight mobile paddingCramped feelingMinimum p-4 on mobile

Visual Hierarchy

Guide the eye through deliberate contrast.

Hierarchy Techniques

TechniqueHowImpact
SizeHero 3-4x bodyImmediate focal point
WeightBold headings, regular bodyScannability
ColorPrimary vs mutedInformation layers
SpaceIsolation creates emphasisDraws attention
PositionTop-left anchors readingNatural flow

Card Hierarchy Pattern

Eyebrow  ← xs, uppercase, muted color
Title    ← xl, semibold, primary color
Body     ← base, secondary color, 1.6 line-height
Action   ← spaced apart, mt-4 minimum

Responsive Design

Breakpoint Strategy

BreakpointTargetKey Changes
< 640pxMobileSingle column, stacked nav, 44px touch targets
640-1024pxTabletTwo columns, collapsible sidebars
1024-1440pxDesktopFull layout, hover enabled
> 1440pxWideMax-width container, prevent ultra-wide lines

Fluid Techniques

/* Fluid typography */
h1 { font-size: clamp(2rem, 1.5rem + 2.5vw, 3.5rem); }

/* Fluid spacing */
section { padding-block: clamp(2rem, 1rem + 4vw, 6rem); }

/* Intrinsic grid */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  gap: var(--space-6);
}

Responsive Mistakes

MistakeProblemFix
No viewport metaBroken mobileAdd width=device-width
Fixed widthsOverflow on mobileUse max-w-* and %
Tiny touch targetsFrustrating tapsMinimum 44x44px
Hidden horizontal scrollBroken layoutTest at 375px width

Accessibility

Accessibility is not optional.

Critical Requirements

RequirementImplementationStandard
Color contrast4.5:1 normal, 3:1 largeWCAG 2.1 AA
Keyboard navigationTab order matches visualWCAG 2.1.1
Focus indicatorsVisible :focus-visible ringWCAG 2.4.7
Semantic HTML<button>, <nav>, <main>WCAG 1.3.1
Alt textDescriptive for imagesWCAG 1.1.1
Motion safetyprefers-reduced-motionWCAG 2.3.3
Touch targets44×44px minimumWCAG 2.5.8

Focus Styles

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Remove default only if custom exists */
:focus:not(:focus-visible) {
  outline: none;
}

Motion Safety

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Motion & Animation

Use motion to communicate, not decorate.

Timing Guidelines

InteractionDurationEasing
Button hover150msease-out
Modal open250msease-out
Modal close200msease-in
Page transition300msease-in-out
Stagger delay50-80ms per item
Micro-feedback100msease-out

Staggered Entrance

.item {
  opacity: 0;
  translate: 0 1rem;
  animation: reveal 0.5s ease-out forwards;
}
.item:nth-child(1) { animation-delay: 0ms; }
.item:nth-child(2) { animation-delay: 60ms; }
.item:nth-child(3) { animation-delay: 120ms; }

@keyframes reveal {
  to { opacity: 1; translate: 0 0; }
}

Motion Mistakes

MistakeProblemFix
Animating width/heightPerformance hitUse transform only
> 500ms durationFeels sluggish150-300ms for most
Motion everywhereOverwhelmingFocus on entrances/exits
No reduced-motionAccessibility failAlways check preference

Component States

Every interactive element needs clear states.

StateVisual Treatment
DefaultBase styling
HoverSubtle background/shadow shift
Active/PressedSlight inset, reduced shadow
FocusHigh-visibility ring
Disabled50% opacity, not-allowed cursor
LoadingSpinner or skeleton

Button Example

.btn {
  transition: all 150ms ease-out;
}
.btn:hover {
  background: var(--color-primary-600);
}
.btn:active {
  transform: scale(0.98);
}
.btn:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

Design Tokens Architecture

Structure tokens in three layers:

/* Layer 1: Primitives */
--blue-500: oklch(0.55 0.2 250);
--gray-100: oklch(0.95 0.005 250);
--radius-md: 0.5rem;

/* Layer 2: Semantic */
--color-primary: var(--blue-500);
--color-surface: var(--gray-100);
--radius-button: var(--radius-md);

/* Layer 3: Component */
--btn-bg: var(--color-primary);
--btn-radius: var(--radius-button);
--btn-padding: var(--space-2) var(--space-4);

This allows theme switching by remapping Layer 2 only.


Pre-Delivery Checklist

Typography

  • Intentional font pairing (not system defaults)
  • Consistent type scale
  • Line length ≤ 75 characters
  • 16px minimum body text

Color

  • Cohesive palette (3-5 colors)
  • WCAG contrast met (4.5:1 normal, 3:1 large)
  • Semantic colors defined
  • Dark mode tested (if applicable)

Spacing

  • Consistent rhythm using scale
  • No arbitrary pixel values
  • Proper mobile padding

Hierarchy

  • Clear visual flow
  • Primary action obvious
  • Information layered by importance

Responsive

  • Mobile tested (375px)
  • No horizontal overflow
  • Touch targets ≥ 44px

Accessibility

  • Keyboard navigable
  • Focus visible
  • Screen reader tested
  • Motion-safe

States

  • Hover on all interactive elements
  • Focus-visible on all focusable
  • Loading states for async
  • Error states for forms

Performance

  • Images optimized (WebP, srcset)
  • Fonts subset
  • Animations use transform/opacity

NEVER Do

  1. NEVER skip contrast checking — Test every text/background combination
  2. NEVER use color alone — Always pair with icons/text for meaning
  3. NEVER remove focus outlines — Unless replacing with visible alternative
  4. NEVER use arbitrary spacing — Stick to the scale
  5. NEVER animate layout properties — Only transform and opacity
  6. NEVER ignore reduced-motion — Always check the preference
  7. NEVER center everything — Left-align body text
  8. NEVER use tiny touch targets — 44px minimum
  9. NEVER use low-contrast textslate-600 minimum on white
  10. NEVER use generic system fonts — Choose intentional typography

Related Skills

  • ui-ux-pro-max — Searchable design databases with CLI
  • frontend-design — Creative aesthetics, avoiding "AI slop"
  • theme-factory — Applying themes to artifacts
  • design-system-patterns — Token architecture and theming

Files

2 total
Select a file
Select a file to preview.

Comments

Loading comments…