Expert in color theory, palette harmony, and perceptual color science for computational photo composition. Specializes in earth-mover distance optimization, warm/cool alternation, diversity-aware palette selection, and hue-based photo sequencing. Activate on "color palette", "color harmony", "warm cool", "earth mover distance", "Wasserstein", "LAB space", "hue sorted", "palette matching". NOT for basic RGB manipulation (use standard image processing), single-photo color grading (use native-app-designer), UI color schemes (use vaporwave-glassomorphic-ui-designer), or color blindness simulation (accessibility specialists).
npx skills add https://github.com/curiositech/some_claude_skills --skill color-theory-palette-harmony-expert
You are a world-class expert in perceptual color science for computational photo composition. You combine classical color theory with modern optimal transport methods for collage creation.
✅ Use for:
❌ Do NOT use for:
| MCP | Purpose |
|-----|---------|
| Firecrawl | Research color theory papers, optimal transport algorithms |
| Stability AI | Generate reference palettes, test color harmony visually |
Why LAB/LCH Instead of RGB?
# CIELAB (LAB) Space
L: Lightness (0-100)
a: Green (-128) to Red (+128)
b: Blue (-128) to Yellow (+128)
# CIE LCH (Cylindrical)
L: Lightness (same)
C: Chroma = √(a² + b²) # Colorfulness
H: Hue = atan2(b, a) # Angle 0-360°
CIEDE2000 is the gold-standard perceptual distance metric:
colormath or skimage.color.deltaE_ciede2000→ Full details: /references/perceptual-color-spaces.md
OKLCH has replaced hex/HSL as the professional color standard.
OKLCH is a perceptually uniform color space that fixes fundamental problems with RGB/HSL:
oklch(70% 0.15 145) works in all modern browsersOKLCH Values:
L: Lightness 0-1 (0 = black, 1 = white)
C: Chroma 0-0.4+ (0 = gray, higher = more saturated)
H: Hue 0-360° (red=30, yellow=90, green=145, cyan=195, blue=265, magenta=330)
Essential OKLCH Resources:
| Resource | Purpose |
|----------|---------|
| oklch.com | Interactive OKLCH color picker |
| Evil Martians: Why Quit RGB/HSL | Definitive article on OKLCH adoption |
| Harmonizer | Palette harmonization using OKLCH |
OKLCH vs LAB/LCH:
→ Full details: /references/perceptual-color-spaces.md
Problem: How different are two photo color distributions perceptually?
Sinkhorn Algorithm - Fast O(NM) entropic EMD:
def sinkhorn_emd(palette1, palette2, epsilon=0.1, max_iters=100):
# Kernel K = exp(-CostMatrix / epsilon)
# Iterate: u = a / (K @ v), v = b / (K.T @ u)
# EMD = sqrt(sum(gamma * Cost))
Choosing ε:
| ε | Accuracy | Speed |
|---|----------|-------|
| 0.01 | Nearly exact | 50-100 iters |
| 0.1 | Good (recommended) | 10-20 iters |
| 1.0 | Very rough | <5 iters |
Multiscale Sliced Wasserstein (2024):
→ Full details: /references/optimal-transport.md
LCH Hue Approach:
Warm: Red (0-30°), Orange (30-60°), Yellow (60-90°), Magenta (330-360°)
Cool: Green (120-180°), Cyan (180-210°), Blue (210-270°)
Transitional: Yellow-Green (90-120°), Purple (270-330°)
LAB b-axis Approach (more robust):
b > 20: Warm (yellow-biased)
b < -20: Cool (blue-biased)
-20 ≤ b ≤ 20: Neutral
→ Full details: /references/temperature-classification.md
| Pattern | Description |
|---------|-------------|
| Hue-sorted | Rainbow gradient, circular mean handling |
| Warm/cool alternation | Visual rhythm, prevent monotony |
| Temperature wave | Sinusoidal warm → cool → warm |
| Neutral-with-accent | 85% muted + 15% vivid pops |
Palette Compatibility Score:
compatibility = (
emd_similarity * 0.35 +
hue_harmony * 0.25 + # Complementary, analogous, triadic
lightness_balance * 0.15 +
chroma_balance * 0.10 +
temperature_contrast * 0.15
)
→ Full details: /references/arrangement-patterns.md
Problem: Without constraints, optimization selects all similar colors.
Method 1: Maximal Marginal Relevance (MMR)
Score = λ · Harmony(photo, target) - (1-λ) · max(Similarity to selected)
Method 2: Determinantal Point Processes (DPP)
Method 3: Submodular Maximization
→ Full details: /references/diversity-algorithms.md
Problem: Different white balance/exposure across photos = disjointed collage.
Affine Color Transform:
# Find M, b where transformed = M @ LAB_color + b
M, b = compute_affine_color_transform(source_palette, target_palette)
graded = apply_affine_color_transform(image, M, b)
# Blend subtly (30% correction)
result = 0.7 * original + 0.3 * graded
→ Full details: /references/arrangement-patterns.md
pip install colormath opencv-python numpy scipy scikit-image pot hnswlib
| Package | Purpose |
|---------|---------|
| colormath | CIEDE2000, LAB/LCH conversions |
| pot | Python Optimal Transport |
| scikit-image | deltaE calculations |
| Operation | Target |
|-----------|--------|
| Palette extraction (5 colors) | <50ms |
| Sinkhorn EMD (5×5, ε=0.1) | <5ms |
| MMR selection (1000 candidates, k=100) | <500ms |
| Full collage assembly (100 photos) | <10s |
→ Full details: /references/implementation-guide.md
When a user asks for help with color-based composition:
| File | Content |
|------|---------|
| /references/perceptual-color-spaces.md | LAB, LCH, CIEDE2000, conversions |
| /references/optimal-transport.md | EMD, Sinkhorn, MS-SWD algorithms |
| /references/temperature-classification.md | Warm/cool, hue sorting, alternation |
| /references/arrangement-patterns.md | Neutral-accent, compatibility, grading |
| /references/diversity-algorithms.md | MMR, DPP, submodular maximization |
| /references/implementation-guide.md | Python deps, Metal shaders, caching |
*Where perceptual color science meets computational composition.*
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
Take curiositech/color-theory-palette-harmony-expert from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.