К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

better-colors — скилл для Claude Code: что делает и как установить

Скилл проверяет палитры и строит систему цветовых токенов. Он нужен, когда в коде накопились случайные hex-значения, а контраст текста никто не считал.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add jakubkrehel/skills --skill better-colors -a claude-code
Открыть на GitHub

Что делает better-colors

Скилл выстраивает цветовую систему через шкалы оттенков и роли. Базовым форматом для новых проектов служит oklch(), где светлота измеряется параметром L от 0 до 1. Вся система делится на два уровня. Примитивы задают сырые значения оттенков, а компоненты ссылаются только на семантические токены ролей вроде --color-text-secondary.

Контраст скилл измеряет строго по фактически отрисованной паре элементов, а не по абстрактному фону всей страницы. Если текст не проходит проверку, агент сообщит результат замера и порог нормы. Менять цвета самостоятельно он не станет, поскольку палитра остаётся дизайнерским решением. Правила доступности и соответствие WCAG передаются скиллу better-accessibility, а тени и иконки — набору better-ui.

Если в кодовой базе уже закрепился hex, скилл не станет без спроса смешивать его с oklch(). Для расчёта ровных шкал в текущей нотации проекту понадобится отдельная библиотека работы с цветом: строить переходы на глаз скилл запрещает.

Какие задачи решает

  • развести примитивные токены и семантические роли в стилях
  • замерить контраст текста на фактическом фоне компонента
  • построить шкалу оттенков в oklch или текущей нотации проекта
  • вычистить прямые значения hex и rgb из компонентов

Примеры запросов агенту

  • Проверь контраст кнопок и карточек в текущей теме оформления
  • Собери нейтральную и акцентную шкалы в oklch для новой дизайн-системы
  • Найди компоненты, где цвета заданы напрямую вместо семантических токенов

Как установить better-colors

1Через Skills CLI (Vercel)

npx skills add jakubkrehel/skills --skill better-colors -a claude-code

2Вручную: положить файлы

~/.claude/skills/better-colors/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/better-colors/

Из того же набора10

Весь набор →
better-ui jakubkrehel Скилл задаёт точные правила для радиусов, теней, иконок и анимаций интерфейса. Пригодится, когда базовые взаимодействия уже работают и нужна визуальная доводка. Claude Code CX Codex Cursor +1 38 900установок better-typography jakubkrehel Проверяет типографику интерфейса и предлагает правки в системе стилей проекта. Пригодится, когда нужно привести текст, переносы и пунктуацию к правилам дизайна. Claude Code CX Codex Cursor +1 33 800установок better-layout jakubkrehel Скилл проверяет и правит группировку, выравнивание, порядок чтения и адаптивную структуру макета, а потом ломает её ресайзом, переводом и зеркалированием под RTL. Claude Code CX Codex Cursor +1 30 400установок better-interface jakubkrehel Проводит сквозной аудит экранов и интерфейсов по правилам доступности, вёрстки, текста, цвета и типографики. Сводит отчёты узких скиллов в единый список замечаний по приоритету. Claude Code CX Codex Cursor +1 29 700установок better-accessibility jakubkrehel Проверяет доступность интерфейса по WCAG 2.2 и исправляет найденные проблемы в стилях проекта. Пригодится, когда нужно проверить клавиатурную навигацию и работу со скринридером. Claude Code CX Codex Cursor +1 29 200установок better-writing jakubkrehel Скилл проверяет и пишет текст интерфейса: ошибки, пустые экраны, кнопки и подсказки. Он помогает выдержать единый тон продукта и не заводить тупиковых сценариев. Claude Code CX Codex Cursor +1 28 700установок interface-review jakubkrehel Проверяет ветки, пулл-реквесты и незакоммиченные правки на дефекты UI, вёрстки, типографики и доступности. Показывает, что именно сломалось или добавилось в интерфейсе. Claude Code CX Codex Cursor +1 18 100установок explain-interface jakubkrehel Разбирает чужие веб-интерфейсы, анимации и визуальные эффекты по ссылке или скриншоту. Помогает понять, из каких слоёв и стилей собран элемент. Claude Code CX Codex Cursor +1 13 900установок

Похожие

documentation-lookup affaan-m Ищет актуальную документацию библиотек и фреймворков через сервер Context7 MCP вместо устаревшей обучающей выборки. Помогает при настройке конфигов и написании кода под свежие версии API. Claude Code CX Codex Cursor +1 4 600установок motion-foundations jeff Задаёт токены движения, пружинные пресеты, правила производительности и поддержку prefers-reduced-motion. Фундамент для остальных motion-скиллов. Claude Code CX Codex Cursor +1 4 600установок motion-patterns jeff Скилл добавляет готовые паттерны анимации для React и Next.js. Подойдёт, когда нужно оформить кнопку, модальное окно, toast, переход страницы или scroll-reveal. Claude Code CX Codex Cursor +1 4 600установок angular-developer affaan-m Скилл генерирует код на Angular с учётом версии проекта, настраивает сигналы, формы и запускает проверку сборки. Claude Code CX Codex Cursor +1 4 500установок benchmark affaan-m Скилл измеряет скорость страниц, API и сборки, а затем сравнивает показатели до и после изменений. Пригодится перед релизом или когда страницу считают медленной. Claude Code CX Codex Cursor +1 4 500установок nuxt4-patterns affaan-m Скилл для работы с Nuxt 4: гидратация, route rules, ленивая загрузка и SSR-безопасный сбор данных через useFetch и useAsyncData. Claude Code CX Codex Cursor +1 4 500установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок

Вопросы о better-colors

Как установить better-colors в Claude Code?

Выполните команду npx skills add jakubkrehel/skills --skill better-colors -a claude-code. Файл навыка запишется в ~/.claude/skills/better-colors/SKILL.md.

Что делает скилл better-colors?

Он помогает проектировать палитры, связывает шаги шкалы с ролями токенов и замеряет контраст текста на реальном фоне.

Исправит ли скилл цвета, если контраст не проходит проверку?

Нет, скилл только зафиксирует факт нарушения, покажет вычисленный контраст и целевой порог. Выбор оттенков остаётся за дизайнером, поэтому автоматических правок без запроса он не вносит.

Исходный текст

SKILL.md · MIT
---
name: better-colors
description: Builds and checks color systems by generating palettes, naming semantic tokens, converting between formats and measuring contrast.
---

# Colors

This skill builds and audits color systems. It generates ramps, maps their steps to roles and token names, converts notation and measures rendered contrast pairs.

Never report a contrast value you did not measure, and never estimate a color you could compute. Notation, a tinted neutral and a gradient's interpolation space are project choices, not findings. A broken role mapping, a failing pair and an out-of-gamut step are findings. Perceived lightness throughout means OKLCH `L`, from `0` to `1`.

Whether a pair is required to pass belongs to `better-accessibility`. Surfaces, shadows and icon color belong to `better-ui`.

## Match the project's color system

Reuse the project's tokens and notation. A consistent hex system beats hex with `oklch()` scattered through it.

For a new system, `oklch()` is the best default, because its numbers behave the way the ramp rules below describe. Everywhere else, a color library produces the same ramp in the project's own notation ([color-formats.md](color-formats.md)).

## A system is ramps, not colors

One neutral ramp, one accent ramp and only the status ramps the product actually renders. A `warning` ramp nothing imports is maintenance for zero pixels. A second accent hue earns its place only when two things must be distinguishable at a glance. Otherwise use more steps of the one accent ramp.

## Every step has a job

A ramp is not a gradient to pick from by eye. Each step exists because a role needs it: page background, component hover, border, solid fill, body text. Do not generate a step no role consumes. Both the Tailwind `50`–`950` and Radix `1`–`12` conventions map to those roles ([palette-structure.md](palette-structure.md)).

## Name primitives by hue, semantics by role

Primitives name a value (`--blue-600`) and are never applied in a component. Semantic tokens name a job (`--color-text-secondary`), point at a primitive and are the only tier components reference. That seam is what lets a theme repoint colors without touching components ([token-naming.md](token-naming.md)).

## Use a token only in its role

Never borrow a token because its value is right today. A separator used as a text color works until borders get lighter, and then the text goes with them. If a role has no token, add the token.

## Hold the hue across the ramp

A ramp holds one hue end to end, peaks in vividness mid-ramp and steps more finely at the light end. Build it with a color library, never by eye ([palette-generation.md](palette-generation.md)).

## One color, one meaning

Use a color for one purpose across the whole interface, treating anything within `15°` of OKLCH hue as the same color ([color-usage.md](color-usage.md)). Never let color be the only carrier of meaning. Pair it with an icon or a label, a requirement `better-accessibility` owns.

## Fill exactly one action per view

When filled color encodes primary emphasis, one primary action gets it and peers stay neutral. Put the color on the background, not the label. A filled button reads as primary across the room; accent-colored text on a neutral button reads as a link.

Keep an established hierarchy that already signals emphasis another way. Several colored backgrounds are fine when they encode distinct states or categories rather than competing as peers.

## Measure the rendered pair, then report

Measure a foreground against the background it actually renders on, not the page background. When a pair fails, report the pair, its measured value and the threshold it misses, then leave the colors alone. They are a design decision. Change them only when asked, and remeasure after ([contrast.md](contrast.md)).

## Pick a gradient's interpolation space

The space is a look, not a correctness setting. Default to `in oklab`, and reach for `in oklch` when a two-hue gradient goes gray in the middle ([color-usage.md](color-usage.md)).

## Before you finish

| Pattern | Fix |
| --- | --- |
| A hex, `rgb(` or `oklch(` literal in a component file where a token exists | Reuse or add the role token, in the project's notation |
| One `oklch(` value in a codebase otherwise written in hex | Write it in the established notation unless a migration is in scope |
| `var(--blue-600)` or `bg-blue-600` in a component file | Point a semantic token at the primitive and use that |
| A semantic name containing a hue or a component, as in `--color-blue-button` or `--color-sidebar-gray` | Rename it for its role: `--color-accent-solid`, `--color-bg-surface` |
| `--color-primary` and `--color-text-primary` both defined | Rename the brand token `accent` |
| A `border` or `separator` token inside `color:`, or a `text` token inside `background:` | Add a token for the missing role |
| `hsl(` ramp values that differ only in lightness | Rebuild with a constant perceived hue, in the project's notation |
| `50`–`200` stepping as far apart in OKLCH `L` as mid-ramp steps do | Tighten the light end to about `0.04`–`0.05` per step |
| One chroma or saturation number copied across every hue's ramp | Use the same proportion of each hue's own maximum |
| A status hue within `15°` of the accent hue | Move it at least `15°` away, or give the destructive action a distinct treatment |
| Dark tokens equal to the light ramp in reverse step order | Lower the accent's chroma, widen the dark end and remeasure every pair |
| Color tokens set under both `prefers-color-scheme` and a `.dark` class | Pick one switching mechanism and use it throughout |
| A contrast fix that changes hue and leaves lightness | Change lightness, the channel contrast responds to |
| `prefers-contrast: more` overriding a color for both appearances in one block | Give each appearance its own increased-contrast value |
| Text on a color with alpha, such as `/50`, `rgba(` or `color-mix(` with `transparent` | Measure the rendered result, or use a solid token |
| `text-white` on a Tailwind `500` fill | Measure it; white on most `500` hues fails 4.5:1, so move the fill to `600` |
| `oklch()` chroma beyond sRGB with no sRGB value declared before it | Declare the sRGB value first, then the vivid one inside `@media (color-gamut: p3)` |

## Reporting

**Severity.** `HIGH` makes content unreadable or assigns a misleading semantic color. `MEDIUM` is a noticeable theme, token or gamut failure. `LOW` is isolated polish.

Three symptoms are `HIGH` on sight whatever the surface, matching `better-interface`'s escalation triggers. They are body or control text whose rendered pair fails its required ratio, state or meaning carried by color alone and a semantic color used against its meaning.

**Verification.** Without a browser: token values, the gamut of every declared color, both theme blocks present and contrast computed from the declared token pair. With one: the background actually rendered behind the text, including opacity and any image beneath it, measured in both light and dark. Report every check you could not run as `Not verified`.

**Format.** Group findings under the principle each violates, ordered by severity, one row per root cause listing every location it appears in:

| Severity | Location | Before | After | Why |
| --- | --- | --- | --- | --- |

`Location` is `path/to/file:line`. `Why` names the principle and the user impact.

End with `Block` when any `HIGH` remains, `Approve` otherwise, leaving the rest in the table as work to do. Never `Approve` coverage you did not inspect. With nothing to report, state "No actionable color findings" and report verification.

© jakubkrehel · MIT · jakubkrehel/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой