Help us improve
Share bugs, ideas, or general feedback.
Guides building color palettes, shade scales, semantic systems, and dark mode using HSL model, harmony schemes, 60-30-10 rule, and WCAG contrast checks for UI and data viz.
npx claudepluginhub oborchers/fractional-cto --plugin visual-design-principlesHow this skill is triggered — by the user, by Claude, or both
Slash command
/visual-design-principles:color-theory-applicationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Color decisions made by intuition drift over time. Color decisions made by system scale indefinitely. Pick hues with harmony theory, generate shades with lightness math, enforce contrast with WCAG, and assign meaning with semantic tokens.
Builds accessible color systems with palettes, semantic mappings, tonal scales, and contrast checks for UI components in digital products.
Applies color wheel relationships (complementary, analogous, triadic, split-complementary, tetradic) to build harmonious palettes for UI, branding, and data visualization.
Generates accessible color palettes from brand hex: 11-shade scales (50-950), semantic tokens, dark mode variants, Tailwind v4 CSS, WCAG contrast checks. For design systems and themes.
Share bugs, ideas, or general feedback.
Color decisions made by intuition drift over time. Color decisions made by system scale indefinitely. Pick hues with harmony theory, generate shades with lightness math, enforce contrast with WCAG, and assign meaning with semantic tokens.
Use HSL (Hue, Saturation, Lightness) for all color work. RGB and hex are machine formats — HSL maps to how humans perceive color.
| Task | HSL | RGB/Hex |
|---|---|---|
| Make a color lighter | Increase L | Guess and check all 3 channels |
| Create a complementary color | Rotate H by 180 degrees | No intuitive relationship |
| Generate a shade scale | Fix H and S, vary L in steps | Manual trial and error |
For perceptual uniformity in production, consider OKLCH (oklch(L C H)) — it corrects HSL's lightness distortion across hues.
| Tier | Percentage | Role | Typical Choice |
|---|---|---|---|
| Dominant | 60% | Backgrounds, surfaces | Neutral (white, light gray, dark gray) |
| Secondary | 30% | Cards, sidebars, borders | Tinted neutral or subdued brand |
| Accent | 10% | CTAs, highlights, active states | Saturated brand color |
Limit to 3-6 distinct hue families. Most successful SaaS products use a single brand hue plus neutrals and semantic colors.
Generate 9 steps (50-900) by fixing hue, varying lightness, and reducing saturation 5-15% at extremes.
| Step | Lightness | Use Case | Step | Lightness | Use Case |
|---|---|---|---|---|---|
| 50 | 95-97% | Subtle backgrounds | 500 | 45-50% | Base color |
| 100 | 90-92% | Light backgrounds | 600 | 38-42% | Hover states |
| 200 | 82-85% | Borders, dividers | 700 | 28-32% | Active/pressed |
| 300 | 70-75% | Disabled states | 800 | 20-23% | Dark text |
| 400 | 58-62% | Placeholder text | 900 | 12-15% | Headings |
Apply WCAG AA contrast ratios (see accessibility-inclusive-design skill for the full requirements). In practice: text on the 500 shade rarely passes against white. Use 600-900 for text, 50-200 for backgrounds. Always verify with a contrast checker.
Never use #000000. Pure black creates 21:1 contrast against white, causing eye fatigue. Use brand-tinted dark grays instead: hsl(220, 15%, 12%) for text, hsl(220, 15%, 10%) for dark backgrounds.
Assign fixed meaning: success = green, warning = amber, error = red, info = blue. Never repurpose these hues. Always pair color with redundant encoding (see accessibility-inclusive-design skill for color independence rules).
Dark mode is not an inversion:
hsl(H, 10-15%, 10-12%) for backgrounds| Scheme | Hue Relationship | Best For |
|---|---|---|
| Complementary | 180 degrees apart | CTAs, alerts |
| Analogous | 30 degrees apart | Backgrounds, gradients |
| Triadic | 120 degrees apart | Data visualization |
| Split-complementary | 150 + 210 degrees | Versatile; safer than complementary |
| Anti-Pattern | Fix |
|---|---|
| More than 6 hue families | Limit to 3-6 hues maximum |
| No contrast verification | Test every text/background pair (see accessibility-inclusive-design for ratios) |
| Pure black (#000) | Use brand-tinted dark grays |
| Color as the sole indicator | Apply color independence rule (see accessibility-inclusive-design skill) |
| Inverting colors for dark mode | Reduce saturation 10-20%; use dark grays |
Working implementations in examples/:
examples/color-system-and-dark-mode.md — Complete HSL-based color system with shade scale generation, semantic tokens, and dark mode in CSS, Tailwind, and ReactWhen reviewing or building color systems:
accessibility-inclusive-design skill)accessibility-inclusive-design skill)