color-tools

SKILL.md

ColorFYI — Color Tools for AI Agents

Pure Python color engine. Convert hex to RGB/HSL/CMYK/OKLCH, check WCAG contrast ratios, generate color harmonies, create Tailwind shade palettes, and simulate color blindness — all with zero dependencies.

Install: pip install colorfyi · Web: colorfyi.com · API: REST API · npm: npm install @fyipedia/colorfyi

When to Use

  • User asks to convert a color between formats (hex, RGB, HSL, CMYK, Lab, OKLCH)
  • User needs WCAG contrast ratio check for accessibility compliance
  • User wants to generate a color palette, harmonies, or Tailwind shades
  • User asks about color blindness simulation or accessible color choices
  • User needs to pick text color (black/white) for a given background

Tools

get_color_info(hex) -> ColorInfo

Convert any hex color to all 7 color spaces in one call.

from colorfyi import get_color_info

info = get_color_info("FF6B35")
info.rgb    # RGB(r=255, g=107, b=53)
info.hsl    # HSL(h=16.0, s=100.0, l=60.4)
info.cmyk   # CMYK(c=0.0, m=58.0, y=79.2, k=0.0)
info.oklch  # OKLCH(l=0.685, c=0.179, h=42.9)
info.lab    # Lab(l=65.4, a=42.1, b=47.8)
info.hsv    # HSV(h=16.0, s=79.2, v=100.0)
info.warmth # "warm"

contrast_ratio(hex1, hex2) -> ContrastResult

WCAG 2.1 contrast check with AA/AAA pass/fail for normal and large text.

from colorfyi import contrast_ratio

cr = contrast_ratio("1E40AF", "FFFFFF")
cr.ratio       # 8.55
cr.aa_normal   # True  (≥ 4.5:1)
cr.aa_large    # True  (≥ 3:1)
cr.aaa_normal  # True  (≥ 7:1)

text_color_for_bg(hex) -> str

Pick black or white text for optimal readability on a background color.

from colorfyi import text_color_for_bg

text_color_for_bg("FF6B35")  # "000000" (black)
text_color_for_bg("1E3A5F")  # "FFFFFF" (white)

harmonies(hex) -> Harmonies

Generate 5 harmony types from the color wheel.

from colorfyi import harmonies

h = harmonies("FF6B35")
h.complementary        # ['35C0FF']
h.analogous            # ['FF3535', 'FFA135']
h.triadic              # ['6B35FF', '35FF6B']
h.split_complementary  # ['3565FF', '35FFA1']
h.tetradic             # ['C035FF', '35FF6B', '35C0FF']

generate_shades(hex) -> list[Shade]

Tailwind-style 50-950 shade palette from any base color.

from colorfyi import generate_shades

shades = generate_shades("3B82F6")
for s in shades:
    print(f"{s.level}: #{s.hex}")
# 50: #EFF6FF, 100: #DBEAFE, ..., 950: #172554

simulate_color_blindness(hex, type) -> str

Simulate how a color appears under 4 types of color vision deficiency.

from colorfyi import simulate_color_blindness

simulate_color_blindness("FF0000", "deuteranopia")  # Green-blind
simulate_color_blindness("FF0000", "protanopia")    # Red-blind
simulate_color_blindness("FF0000", "tritanopia")    # Blue-blind
simulate_color_blindness("FF0000", "achromatopsia") # Total color blindness

delta_e(hex1, hex2) -> float

Perceptual color difference (CIE76). < 2.3 = imperceptible to humans.

from colorfyi import delta_e

delta_e("FF6B35", "FF6B36")  # 0.4 (imperceptible)
delta_e("FF0000", "00FF00")  # 170.6 (very different)

REST API (No Auth Required)

curl https://colorfyi.com/api/color/FF6B35/
curl https://colorfyi.com/api/contrast/FF6B35/FFFFFF/
curl https://colorfyi.com/api/harmonies/FF6B35/
curl https://colorfyi.com/api/shades/FF6B35/
curl https://colorfyi.com/api/blindness/FF6B35/

Full spec: OpenAPI 3.1.0

Color Spaces Reference

Space Format Best For
Hex #FF6B35 Web/CSS
RGB rgb(255, 107, 53) Screen display
HSL hsl(16°, 100%, 60%) Hue adjustments
HSV hsv(16°, 79%, 100%) Color pickers
CMYK cmyk(0%, 58%, 79%, 0%) Print design
CIE Lab Lab(65.4, 42.1, 47.8) Perceptual comparison
OKLCH oklch(0.685, 0.179, 42.9) Modern CSS

WCAG Thresholds

Level Ratio Use
AA Normal ≥ 4.5:1 Body text
AA Large ≥ 3:1 18px+ or 14px bold
AAA Normal ≥ 7:1 Enhanced accessibility
AAA Large ≥ 4.5:1 Enhanced, large text

Demo

ColorFYI demo

Creative FYI Family

Part of the FYIPedia ecosystem: EmojiFYI, SymbolFYI, UnicodeFYI, FontFYI.

Weekly Installs
7
First Seen
11 days ago
Installed on
opencode7
gemini-cli7
github-copilot7
codex7
kimi-cli7
amp7