Skip to content
Back to skills

Color System

ASecurity

OKLCH color-system guidance for cohesive palettes and contrast-safe tokens. Use when choosing colors, generating ramps, fixing muddy palettes, creating semantic state colors, checking WCAG contrast, or defining theme variables.

  • 9 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 2, 2026
ai-agentsgo

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add KyaniteLabs/tastecheck --skill color-system --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Color System?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Color System
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kyanitelabs-color-system/badge)](https://www.skillsdirectory.com/skills/kyanitelabs-color-system)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: color-system
description: >-
  OKLCH color-system guidance for cohesive palettes and contrast-safe tokens. Use
  when choosing colors, generating ramps, fixing muddy palettes, creating semantic
  state colors, checking WCAG contrast, or defining theme variables.
---

# Color System

Build a palette whose roles survive text, controls, themes, and gamut limits. OKLCH makes
lightness/chroma easier to reason about than HSL/hex, but does not choose art direction or
guarantee contrast; the rendered pair is the test.

## Why OKLCH

`oklch(L C H)`: **L** 0–1 perceptual lightness, **C** chroma (0 = gray, ~0.37 max real),
**H** 0–360 hue. Similar L values start even ramps, but hue/chroma still need inspection.
Adjust one property without wrecking the others. It is P3-ready and degrades to sRGB; provide
a hex fallback for very old targets.

## The method

1. **Choose structure from evidence.** A restrained product may need one hue/neutrals; data
   or editorial systems may need several. Record each hue's job.
2. **Build a fixed-step lightness ramp:** 10–12 stops from ~0.97 (50) to ~0.30 (900).
   Keep H constant; vary L; let C peak mid-range and taper at extremes.
3. **Choose neutral temperature deliberately.** Brand tinting can create cohesion; true
   neutrals can suit data, photography, or strict status colors.
4. **Pick semantic colors** (success/error/warning/info) at matched L/C; avoid random stock
   red/green.
5. **Derive interaction states** (hover/active) by nudging L ±0.04–0.06, not opacity.
6. **Verify contrast** for every text/bg pair you'll actually use.

## Derive from the brief, not this file

The sample shows ramp mechanics, not a palette menu. Start from brand evidence, audience,
ambient light, and roles; state why hue, neutral temperature, and accent energy fit. Missing
evidence gets an approved assumption, not fashionable blue/violet/green.

## Build a token system, not a swatch sheet

Keep three layers separate: **primitives** are named OKLCH stops; **semantic roles** name jobs
such as text, surface, focus, and danger; **component aliases** reference one role, never a
raw value. Define focus, non-color cues, and rendered pairs per status.

## Non-negotiables

- **Build ramps in OKLCH with controlled lightness/chroma.** Keep hue stable when useful;
  document hue correction when a constant ramp looks uneven or leaves gamut.
- **Give every hue a job.** Do not add equally weighted colors for completeness or force
  a single-accent formula where evidence needs more.
- **Choose neutral temperature from content.** Tinted and true-neutral ramps are valid
  when the role is explicit.
- **Verify WCAG on real pairs:** body text ≥ 4.5:1, large text/UI/icons ≥ 3:1. Measure;
  WCAG 2.x ratios are this skill's AA thresholds, while legal applicability depends on
  jurisdiction. APCA is an additional reading check, not a substitute. CSS
  `contrast-color()` still ships only black/white; do not rely on it for brand pairs.
- **Don't convey meaning by color alone** (color-blind users) — pair with icon/text.
- **Chroma tapers at lightness extremes.** Max chroma is mid-L; near-white/black stops
  must drop C or look neon/muddy.

## Measure the rendered pair, including gamut and state

Measure each rendered text, icon/UI, focus, and error pair in every theme/state; a passing
body pair does not prove disabled or hover. For P3, retain hierarchy in the sRGB fallback and
record gamut compression. If a hue cannot carry a legible role, use it as a mark/large accent
and assign darker semantic ink.

## Quick-start

Use `assets/oklch-ramp.md` for the generator/token skeleton. Keep primitives separate from
roles; measure real text/UI pairs and emit hex fallbacks for legacy targets.

## Reference files

- `references/oklch-and-ramps.md` — OKLCH, ramp math, chroma taper, harmony, neutral
  tinting, P3/fallbacks. Read when generating a palette.
- `references/contrast-and-tokens.md` — WCAG targets, contrast measurement, token
  architecture, interaction states, color-blind safety, light/dark sharing.
- `references/decision-records.md` — meta-patterns + ADR rules for novel cases.

## How to deliver

State hue/neutral strategy, semantic tokens, measured pairs, gamut fallbacks, and gaps; hand
role mappings to `theming`.

## Evidence

Record brief fit, primitive/role map, real contrast, non-color cues/gamut fallback, and
theming handoff with evidence, reason, remediation.

<!-- contract:v1:start -->
## Contract (generated)

Canonical detail: [contract.json](contract.json).

- Route: A design needs a cohesive palette, color ramp, semantic tokens, or contrast repair (+1 in contract.json); avoid: The request is only to map existing semantic tokens between light, dark, or forced-colors themes (+1 in contract.json)
- Exclude: Do not deliver an unmeasured palette (+1 in contract.json)
- Stop / handoff: Pause when the required foreground-background roles are unknown (+1 in contract.json); receives [design-system-interview, deslop-ui, improve-existing-website, tasteroll] -> sends [theming, data-viz, a11y-pass]
- Output: A brief-derived OKLCH ramp and semantic color-token system with measured pair evidence
- Evidence: `table_with_evidence` with `status`, `reason`, `remediation`, `evidence`, `provenance`.
<!-- contract:v1:end -->

Files in this skill

  • SKILL.md6.1 KB
  • assets/oklch-ramp.md1.9 KB
  • contract.json1.9 KB
  • references/contrast-and-tokens.md2.9 KB
  • references/decision-records.md2.7 KB
  • references/oklch-and-ramps.md3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.