Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
wshobson avatar

Visual Design Foundations

  • 10.3k installs
  • 38.3k repo stars
  • Updated July 22, 2026
  • wshobson/agents

How to create consistent, accessible visual systems using typography, color, spacing, and icon foundations.

About

Visual Design Foundations teaches developers to build cohesive visual systems using typography, color theory, spacing, and iconography. It covers modular typography scales, 8-point grid spacing systems, semantic color tokens, and dark mode strategies with WCAG accessibility standards. Developers use this when establishing design tokens for new projects, creating spacing systems, selecting typefaces, building accessible color palettes, designing icon systems, improving visual hierarchy, and auditing design consistency. The skill includes practical workflows: CSS variable definitions for typography and spacing, Tailwind configuration examples, contrast ratio calculations, responsive fluid typography with clamp(), font-pairing guidelines, and component spacing conventions.

  • Modular typography scale with CSS custom properties (12px - 48px) and line-height guidelines by text type
  • 8-point grid spacing system defining component padding, section gaps, and visual rhythm ratios
  • Semantic color tokens for brand, states (success, warning, error), and neutral grays with dark mode CSS
  • WCAG contrast requirements (4.5:1 for body text, 3:1 for UI) with luminance calculation code
  • Icon sizing system and responsive fluid typography using clamp() for mobile-first design

Visual Design Foundations by the numbers

  • 10,264 all-time installs (skills.sh)
  • +198 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #58 of 1,896 Design & UI/UX skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

visual-design-foundations capabilities & compatibility

Capabilities
define modular typography scales · build 8 point grid spacing systems · create semantic color tokens · calculate wcag contrast ratios · implement dark mode theming · design icon sizing systems · establish font pairing guidelines · define component spacing conventions
Use cases
ui design · frontend · web design
Platforms
macOS · Windows · Linux
Runs
Runs locally
Pricing
Free
npx skills add https://github.com/wshobson/agents --skill visual-design-foundations

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs10.3k
repo stars38.3k
Security audit3 / 3 scanners passed
Last updatedJuly 22, 2026
Repositorywshobson/agents

What it does

Establish design tokens, spacing systems, typography scales, and color palettes for consistent visual design across products.

Who is it for?

Establishing design tokens for new projects, creating spacing and sizing systems, selecting and pairing typefaces, building accessible color palettes, designing icon systems, auditing visual consistency.

Skip if: Advanced animation design, motion principles, interactive state machines, complex interaction patterns.

When should I use this skill?

Starting a new design system, building a style guide, refining spacing consistency, improving visual hierarchy, implementing dark mode, auditing accessibility.

What you get

Developers establish constrained design systems with semantic tokens, modular scales, and WCAG-compliant colors that ensure consistency across products.

  • OKLCH color scale CSS
  • Semantic design-token map
  • Light/dark theme variable blocks

By the numbers

  • 8-point grid standard with 10 spacing values (4px to 64px)
  • 9 font-size scales from 0.75rem (12px) to 3rem (48px)
  • 9-color gray palette from gray-50 to gray-900

Files

SKILL.mdMarkdownGitHub ↗

Visual Design Foundations

Build cohesive, accessible visual systems using typography, color, spacing, and iconography fundamentals.

When to Use This Skill

  • Establishing design tokens for a new project
  • Creating or refining a spacing and sizing system
  • Selecting and pairing typefaces
  • Building accessible color palettes
  • Designing icon systems and visual assets
  • Improving visual hierarchy and readability
  • Auditing designs for visual consistency
  • Implementing dark mode or theming

Core Systems

1. Typography Scale

Modular Scale (ratio-based sizing):

:root {
  --font-size-xs: 0.75rem; /* 12px */
  --font-size-sm: 0.875rem; /* 14px */
  --font-size-base: 1rem; /* 16px */
  --font-size-lg: 1.125rem; /* 18px */
  --font-size-xl: 1.25rem; /* 20px */
  --font-size-2xl: 1.5rem; /* 24px */
  --font-size-3xl: 1.875rem; /* 30px */
  --font-size-4xl: 2.25rem; /* 36px */
  --font-size-5xl: 3rem; /* 48px */
}

Line Height Guidelines:

Text TypeLine Height
Headings1.1 - 1.3
Body text1.5 - 1.7
UI labels1.2 - 1.4

2. Spacing System

8-point grid (industry standard):

:root {
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem; /* 8px */
  --space-3: 0.75rem; /* 12px */
  --space-4: 1rem; /* 16px */
  --space-5: 1.25rem; /* 20px */
  --space-6: 1.5rem; /* 24px */
  --space-8: 2rem; /* 32px */
  --space-10: 2.5rem; /* 40px */
  --space-12: 3rem; /* 48px */
  --space-16: 4rem; /* 64px */
}

3. Color System

Semantic color tokens:

:root {
  /* Brand */
  --color-primary: #2563eb;
  --color-primary-hover: #1d4ed8;
  --color-primary-active: #1e40af;

  /* Semantic */
  --color-success: #16a34a;
  --color-warning: #ca8a04;
  --color-error: #dc2626;
  --color-info: #0891b2;

  /* Neutral */
  --color-gray-50: #f9fafb;
  --color-gray-100: #f3f4f6;
  --color-gray-200: #e5e7eb;
  --color-gray-300: #d1d5db;
  --color-gray-400: #9ca3af;
  --color-gray-500: #6b7280;
  --color-gray-600: #4b5563;
  --color-gray-700: #374151;
  --color-gray-800: #1f2937;
  --color-gray-900: #111827;
}

Quick Start: Design Tokens in Tailwind

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      fontFamily: {
        sans: ["Inter", "system-ui", "sans-serif"],
        mono: ["JetBrains Mono", "monospace"],
      },
      fontSize: {
        xs: ["0.75rem", { lineHeight: "1rem" }],
        sm: ["0.875rem", { lineHeight: "1.25rem" }],
        base: ["1rem", { lineHeight: "1.5rem" }],
        lg: ["1.125rem", { lineHeight: "1.75rem" }],
        xl: ["1.25rem", { lineHeight: "1.75rem" }],
        "2xl": ["1.5rem", { lineHeight: "2rem" }],
      },
      colors: {
        brand: {
          50: "#eff6ff",
          500: "#3b82f6",
          600: "#2563eb",
          700: "#1d4ed8",
        },
      },
      spacing: {
        // Extends default with custom values
        18: "4.5rem",
        88: "22rem",
      },
    },
  },
};

Typography Best Practices

Font Pairing

Safe combinations:

  • Heading: Inter / Body: Inter (single family)
  • Heading: Playfair Display / Body: Source Sans Pro (contrast)
  • Heading: Space Grotesk / Body: IBM Plex Sans (geometric)

Responsive Typography

/* Fluid typography using clamp() */
h1 {
  font-size: clamp(2rem, 5vw + 1rem, 3.5rem);
  line-height: 1.1;
}

p {
  font-size: clamp(1rem, 2vw + 0.5rem, 1.125rem);
  line-height: 1.6;
  max-width: 65ch; /* Optimal reading width */
}

Font Loading

/* Prevent layout shift */
@font-face {
  font-family: "Inter";
  src: url("/fonts/Inter.woff2") format("woff2");
  font-display: swap;
  font-weight: 400 700;
}

Color Theory

Contrast Requirements (WCAG)

ElementMinimum Ratio
Body text4.5:1 (AA)
Large text (18px+)3:1 (AA)
UI components3:1 (AA)
Enhanced7:1 (AAA)

Dark Mode Strategy

:root {
  --bg-primary: #ffffff;
  --bg-secondary: #f9fafb;
  --text-primary: #111827;
  --text-secondary: #6b7280;
  --border: #e5e7eb;
}

[data-theme="dark"] {
  --bg-primary: #111827;
  --bg-secondary: #1f2937;
  --text-primary: #f9fafb;
  --text-secondary: #9ca3af;
  --border: #374151;
}

Color Accessibility

// Check contrast programmatically
function getContrastRatio(foreground: string, background: string): number {
  const getLuminance = (hex: string) => {
    const rgb = hexToRgb(hex);
    const [r, g, b] = rgb.map((c) => {
      c = c / 255;
      return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
    });
    return 0.2126 * r + 0.7152 * g + 0.0722 * b;
  };

  const l1 = getLuminance(foreground);
  const l2 = getLuminance(background);
  const lighter = Math.max(l1, l2);
  const darker = Math.min(l1, l2);

  return (lighter + 0.05) / (darker + 0.05);
}

Spacing Guidelines

Component Spacing

Card padding:      16-24px (--space-4 to --space-6)
Section gap:       32-64px (--space-8 to --space-16)
Form field gap:    16-24px (--space-4 to --space-6)
Button padding:    8-16px vertical, 16-24px horizontal
Icon-text gap:     8px (--space-2)

Visual Rhythm

/* Consistent vertical rhythm */
.prose > * + * {
  margin-top: var(--space-4);
}

.prose > h2 + * {
  margin-top: var(--space-2);
}

.prose > * + h2 {
  margin-top: var(--space-8);
}

Iconography

Icon Sizing System

:root {
  --icon-xs: 12px;
  --icon-sm: 16px;
  --icon-md: 20px;
  --icon-lg: 24px;
  --icon-xl: 32px;
}

Icon Component

interface IconProps {
  name: string;
  size?: "xs" | "sm" | "md" | "lg" | "xl";
  className?: string;
}

const sizeMap = {
  xs: 12,
  sm: 16,
  md: 20,
  lg: 24,
  xl: 32,
};

export function Icon({ name, size = "md", className }: IconProps) {
  return (
    <svg
      width={sizeMap[size]}
      height={sizeMap[size]}
      className={cn("inline-block flex-shrink-0", className)}
      aria-hidden="true"
    >
      <use href={`/icons.svg#${name}`} />
    </svg>
  );
}

Best Practices

1. Establish Constraints: Limit choices to maintain consistency 2. Document Decisions: Create a living style guide 3. Test Accessibility: Verify contrast, sizing, touch targets 4. Use Semantic Tokens: Name by purpose, not appearance 5. Design Mobile-First: Start with constraints, add complexity 6. Maintain Vertical Rhythm: Consistent spacing creates harmony 7. Limit Font Weights: 2-3 weights per family is sufficient

Common Issues

  • Inconsistent Spacing: Not using a defined scale
  • Poor Contrast: Failing WCAG requirements
  • Font Overload: Too many families or weights
  • Magic Numbers: Arbitrary values instead of tokens
  • Missing States: Forgetting hover, focus, disabled
  • No Dark Mode Plan: Retrofitting is harder than planning

Related skills

How it compares

Pick visual-design-foundations when you need mathematically consistent color ladders and token naming, not one-off hex picks or illustration-only palettes.

FAQ

What is the minimum color contrast ratio for body text?

4.5:1 (WCAG AA), or 7:1 for enhanced AAA compliance. Large text (18px+) requires 3:1 minimum.

What spacing scale should I use?

8-point grid is the industry standard. Use multiples: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 48px, 64px.

How do I implement responsive typography?

Use CSS clamp(): font-size: clamp(2rem, 5vw + 1rem, 3.5rem) scales fluid between min and max breakpoints.

Is Visual Design Foundations safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.