home / skills / openclaw / skills / colors

This skill helps you build accessible color palettes with proper WCAG contrast and semantic tokens for robust UI design.

npx playbooks add skill openclaw/skills --skill colors

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
3.9 KB
---
name: Colors
description: Build accessible color palettes with proper contrast ratios and semantic tokens.
metadata: {"clawdbot":{"emoji":"🎨","requires":{},"os":["linux","darwin","win32"]}}
---

## Contrast Ratios (WCAG)

| Level | Normal Text | Large Text (≥18pt or ≥14pt bold) | UI Components |
|-------|-------------|----------------------------------|---------------|
| AA (minimum) | ≥ 4.5:1 | ≥ 3:1 | ≥ 3:1 |
| AAA (enhanced) | ≥ 7:1 | ≥ 4.5:1 | — |

Critical thresholds on white background:
- `#767676` → 4.54:1 ✅ barely passes
- `#777777` → 4.47:1 ❌ fails (cannot round up)
- `#757575` → 4.6:1 ✅ safe minimum gray

Pure colors on white:
- Red `#FF0000` → 4:1 ❌ fails for normal text
- Green `#00FF00` → 1.4:1 ❌ always fails (never use for text)
- Blue `#0000FF` → 8.6:1 ✅ passes AAA

## Color-Only Information

Never rely on color alone to convey meaning. 8% of men have color vision deficiency.

```html
<!-- ❌ Bad: only color differentiates states -->
<span class="text-green-500">Active</span>
<span class="text-red-500">Inactive</span>

<!-- âś… Good: icon + text + color -->
<span class="text-green-500">âś“ Active</span>
<span class="text-red-500">âś— Inactive</span>
```

Test designs in grayscale to verify information is still distinguishable.

## Semantic Color Tokens

Three-layer architecture for maintainable palettes:

```css
/* Layer 1: Primitives (raw values) */
--blue-500: #3B82F6;
--gray-900: #111827;

/* Layer 2: Semantic (roles) */
--color-primary: var(--blue-500);
--color-text: var(--gray-900);
--color-error: var(--red-500);

/* Layer 3: Component (specific use) */
--btn-primary-bg: var(--color-primary);
--input-border-error: var(--color-error);
```

Name tokens by function, not appearance: `text-primary` not `text-blue`.

## Dark Mode

Create depth with luminosity, not shadows:

```css
/* Light mode uses shadows for depth */
/* Dark mode uses surface brightness */
--surface-0: hsl(220 15% 8%);   /* page background */
--surface-1: hsl(220 15% 12%);  /* card */
--surface-2: hsl(220 15% 16%);  /* elevated element */
--surface-3: hsl(220 15% 20%);  /* modal */
```

Avoid pure black `#000` and pure white `#FFF` as backgrounds. Use `#0a0a0a` and `#fafafa` to reduce eye strain.

## Neutral Grays

Add a subtle tint of your primary color to grays for cohesion:

```css
/* Instead of pure gray */
--gray-100: hsl(220 10% 96%);  /* slight blue tint */
--gray-500: hsl(220 10% 46%);
--gray-900: hsl(220 10% 10%);
```

This creates a more polished, intentional palette.

## HSL for Variations

HSL makes generating consistent color scales trivial:

```css
--primary-100: hsl(220 90% 95%);
--primary-300: hsl(220 90% 75%);
--primary-500: hsl(220 90% 55%);
--primary-700: hsl(220 90% 35%);
--primary-900: hsl(220 90% 15%);
```

Same hue and saturation, only lightness changes.

## Balance Rule

60-30-10 distribution:
- 60% dominant (backgrounds, containers)
- 30% secondary (cards, sections)
- 10% accent (CTAs, highlights)

Limit palette to 3-5 colors plus neutrals. More creates visual noise.

## Common Mistakes

- `text-gray-400` or lighter on white background typically fails contrast
- Primary/accent colors for body text cause eye fatigue—use for headings and CTAs only
- Hover states that only change opacity may fail contrast—change hue or lightness
- Purple-to-blue gradients are an AI cliché—choose intentional combinations
- Testing only light mode—dark mode often reveals contrast issues
- Red/green as only differentiator—use icons or text labels alongside

## Safe Combinations

| Sector | Primary | Secondary | Why |
|--------|---------|-----------|-----|
| Fintech | Navy #00246B | Light Blue #CADCFC | Trust + clarity |
| Healthcare | Light Blue #89ABE3 | White | Calm + clean |
| E-commerce | Red #F96167 | Yellow #F9E795 | Urgency + optimism |

Avoid: red + green (colorblindness), adjacent hues (blue + purple), yellow + white (no contrast).

Overview

This skill helps designers and developers build accessible, maintainable color palettes with correct contrast ratios and semantic tokens. It provides practical rules for contrast (WCAG), color usage patterns, dark mode strategies, and a three-layer token architecture. The guidance focuses on outcomes: readable text, clear UI states, and cohesive visuals across light and dark themes.

How this skill works

It inspects color choices against WCAG contrast thresholds and highlights critical pass/fail examples for common hex values. It recommends semantic token layers (primitives, roles, component) and demonstrates HSL-based scales for consistent variations. The skill also enforces non-color cues for state, grayscale testing, and neutral gray tinting for cohesion.

When to use it

  • Creating or auditing a design system color palette
  • Ensuring text and UI components meet WCAG contrast
  • Implementing light and dark theme color tokens
  • Designing color scales and HSL variations
  • Preparing UI for color-vision-deficient users

Best practices

  • Name tokens by function (e.g., color-text) not appearance (e.g., blue-500)
  • Use a three-layer token architecture: primitives → semantic roles → component tokens
  • Favor HSL for predictable lightness variations across scales
  • Avoid pure black/white backgrounds; use near-black and near-white to reduce eye strain
  • Never rely on color alone—add icons or labels and test in grayscale
  • Limit palette to 3–5 colors plus neutrals and follow 60-30-10 balance

Example use cases

  • Generate a semantic token file for a new product with light and dark modes
  • Audit text colors in an app and adjust shades to meet AA/AAA contrast
  • Create cohesive neutral grays by tinting them toward the primary hue
  • Replace color-only status indicators with icon+text+color combinations
  • Build HSL-based primary scales for consistent button and background variants

FAQ

What contrast ratios should I target for body text?

Target at least 4.5:1 for normal body text (WCAG AA). Aim for 7:1 if you need AAA compliance.

Can I use pure green or red for text?

Avoid pure green (#00FF00) and pure red for normal text; they often fail contrast. Use saturated colors only for accents and headings after checking ratios.