better-colors

Generate, name, and audit color palettes, tokens, and contrast pairs in CSS projects.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/falentio/cimi --skill better-colors-falentio
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: better-colors
Source: https://github.com/falentio/cimi/tree/main/.agents/skills/better-colors
Command: npx skills add https://github.com/falentio/cimi --skill better-colors-falentio

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Color bugs in interfaces are usually system bugs: values picked in isolation, tokens borrowed because they looked right, and contrast pairs nobody measured. This Skill gives you a complete method for building and auditing a color system—ramps, semantic tokens, contrast measurement, and dark mode—so every color decision has an exact, verifiable answer. ## Core Features & Use Cases - Palette generation and structure: Build neutral, accent, and status ramps with even perceived lightness, constant hue, and role-mapped steps following Tailwind or Radix conventions. - Token naming and theming: Separate primitive tokens from semantic role tokens so dark mode, white-label themes, and increased-contrast variants work without touching components. - Contrast measurement and reporting: Measure foreground/background pairs against APCA or WCAG 2 thresholds and report failing pairs with severity, without silently repainting design decisions. - Use Case: You inherit a codebase with scattered hex values and a broken dark mode. Use this Skill to inventory every color literal, collapse near-duplicates, assign roles, rebuild the ramps, and produce a severity-ordered findings table. ## Quick Start Ask the AI to audit the color system in your project and report any contrast, token, or palette issues it finds.

Frequently Asked Questions about better-colors

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate a color palette from a brand color?

Place the brand color on the solid-fill step (500 in Tailwind, 9 in Radix), then build the ramp outward using perceptual interpolation with a library like culori or chroma.js. Keep hue constant, space steps evenly in perceived lightness, and let vividness peak mid-ramp.

What is the difference between primitive and semantic color tokens?

Primitives name a value by hue and step, like --blue-500, and are never used in components. Semantic tokens name a role, like --color-text-secondary, point at a primitive, and are the only tier components reference, which is what makes theming possible.

Should I use APCA or WCAG 2 for contrast checking?

APCA models perceived contrast more accurately and is the better default for design decisions, using Lc thresholds like 75 for body text. WCAG 2 ratios remain required when the project must make a formal WCAG conformance claim.

Does oklch work in all browsers and do I need a fallback?

oklch is Baseline 2023, so modern browsers support it natively. For older browser matrices, declare the sRGB or hex value first, then override inside an @supports (color: oklch(0 0 0)) block.

Why does my dark mode palette look wrong after reversing the light one?

A dark palette is not a mechanical reversal. After swapping semantic roles, reduce vividness since colors read as neon on near-black, widen separation at the dark end, and remeasure every contrast pair because contrast is not symmetric across appearances.

How do I fix a failing contrast pair?

Change lightness, the channel contrast responds to, while holding hue and saturation constant, then remeasure. Note that mid-lightness backgrounds cap achievable contrast, so the background itself may need to move toward an extreme.