Communitygithub.com

TomasValleDuran/color-theory

カラーモデルとパレットエンジニアリングに関するスキル。あらゆるプラットフォーム(Web、iOS、Android、Flutter、React Native)向けにブランドパレットの選択、トーンランプの構築、ティントグレー、ステータスカラーを導出し、ライト/ダークのセマンティックトークンにマッピング、WCAG 2.2 + APCAおよび色覚障害の安全性を、バンドルされた依存関係ゼロのOKLCHツールで検証します。

color-theory とは?

このスキルは、UIカラーシステム全体を設計・検証するための包括的な専門ツールです。「どの色を使えばいいか」「この色は見づらい」「ダークモードにしたい」といった曖昧な要望から、具体的なOKLCH計算値を生成し、セマンティックトークンまで一貫して導出します。中核となるのは、Python製の依存関係ゼロのスクリプト `palette.py` で、パレット全体の生成、コントラスト検証(WCAG 2.2 AA/AAA + APCA)、色覚障害シミュレーション(CVD)などを自動化します。スキルは主にCLIツールとして機能しますが、各UIプラットフォーム(Web、iOS、Android、Flutter、React Native)向けのトークン出力(CSS、Tailwind、JSON(DTCG))にも対応しており、実際の開発ワークフローに直接組み込めます。また、カラー理論の詳細な知識(OKLCH色空間の利点、ダークモード設計の原則、60-30-10のカラー配分、地域ごとの色彩文化など)を背景に、人間の判断を支援する豊富なガイドラインも提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TomasValleDuran/pomos-skillzzeria/tree/HEAD/plugins/skillzzeria/skills/color-theory

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

インターフェースのための色彩理論

UIにおける色は、ほとんどが明度の問題であり、色相はその衣をまとっているに過ぎません。階層、コントラスト、可読性、ダークモードはすべて明度によって決まります。色相はアイデンティティと意味を伝え、彩度(クロマ)は強調を伝えます。この順序で作業を進めてください。

ツールキット — 推測の代わりにこれを使う

scripts/palette.py(Python 3、依存関係なし)はOKLCHですべてを計算し、sRGBに色域マッピングします。コントラスト比を目視で確認したり、手作業でランプを考案したりする必要はもうありません。

S=<skill-dir>/scripts/palette.py   # <skill-dir> = このスキルがロードされたときに表示されるベースディレクトリ
python3 $S system "#6d28d9"                    # フルシステム:すべてのペアを検証したランプ+ライト/ダークロール
python3 $S system "#6d28d9" --format tailwind  # Tailwind v4 @theme + セマンティック変数(css, json = DTCG も可)
python3 $S ramp "#0f766e" --format css         # 50〜950までの単一ランプ(入力は最も近いステップにスナップ)
python3 $S neutral "#0f766e" --tint 0.01       # ブランド色相に向けてティントされたグレーランプ
python3 $S contrast "#fff" "#7c3aed"           # WCAG比率+レベル+APCA Lc
python3 $S cvd "#16a34a" "#dc2626" "#2563eb"   # 色覚障害シミュレーション+混同しやすいペアの表示
python3 $S harmony "#6d28d9" --scheme split    # OKLCHでの色相関係
python3 $S convert "hsl(...)/#hex/oklch(...)"  # 表記法変換+その色の鮮やかさの表示

systemは、ペアが基準を満たさない場合(例:text-mutedを4.5:1になるまで暗くするなど)、ランプに沿ってステップを自動的に調整し、その調整内容をすべて出力します。これらは設計上の判断ですので、ユーザーに伝えてください。

ワークフロー:「色が必要」からトークンを出荷するまで

  1. アンカーを見つける。 既存のブランドカラーがある場合はそれを使います。ない場合は、製品の個性(下記の「色相の選び方」を参照)から導出し、2〜3のシードを、それぞれ一行の根拠とともに提案します。単一の恣意的な選択は避けてください。
  2. palette.py system <seed>でシステムを生成する。 アクセントランプ1つ、ニュートラルランプ1つ、そして製品が実際にレンダリングするステータスランプだけです。
  3. セマンティックロールにマッピングする。 コンポーネントでプリミティブ(--color-accent、--color-text-muted、--violet-600ではない)を直接使ってはいけません。デザインシステム構築スキルがトークンアーキテクチャを詳しくカバーしています。
  4. 検証する: レンダリングされたペアのコントラスト(実際のサーフェス上のテキスト、アルファ/オーバーレイも含む)、両方のテーマ、および色分けされた意味(チャート、ステータス、タグ)に対するCVDチェックを実施します。
  5. 抑制を効かせて適用し(下記参照)、 レンダリング結果を確認します。

色の量:配分

  • ニュートラルが約90%の仕事をする。 背景、サーフェス、テキスト、境界線。優れたニュートラルに1つのアクセントを加えたUIは、ほとんどの場合、多色のものよりプロフェッショナルに見えます。
  • 60-30-10は便利な目安です:約60%が支配的なニュートラル、30%がセカンダリサーフェス/ニュートラルのバリエーション、10%がアクセントです。アクセントがピクセルの約10~15%を超えると、「ここで行動して」という意味を失います。
  • 1ビューにつき塗りつぶしのプライマリアクションは1つ。 ボタンの背景色は離れた場所からでもプライマリとして読まれます。色付きテキストはリンクとして読まれます。
  • 1つの色に1つの意味。 バイオレットが「ブランド/インタラクティブ」を意味するなら、カテゴリタグにもそれを使ってはいけません。ステータス色相はアクセントから明確に離れている必要があります(ツールはOKLCH色相で25°以上を維持します)。
  • 色は決して唯一の信号ではない。 男性の約8%、女性の約0.5%が色覚障害を持っています。色とアイコン、ラベル、パターン、位置を組み合わせてください。

色相の選び方(ブランドがない場合)

連想は文化に依存し、実行力と比べて弱いものです — どんな色相でも適切に構築されたパレットは、「心理的に正しい」色相を下手に使ったものより優れています。以下の表は決定打にならない場合の参考として使ってください:

色相ファミリー一般的なUIでの読み代表的な製品注意点
青 / インジゴ信頼、冷静、能力フィンテック、SaaS、ヘルスケア、エンタープライズ最も一般的な選択;目立たせるには彩度を上げるか、インジゴ/シアンにシフトする
バイオレットクリエイティブ、プレミアム、「AI」クリエイティブツール、AI製品非常に彩度の高いバイオレットは今や「AIスロップ」の印
緑 / ティール成長、お金、健康、成功金融、サステナビリティ、ウェルネス「成功」ステータスと競合する — ステータス色相を調整する
赤 / ローズエネルギー、緊急性、情熱食品、メディア、エンターテイメント「危険」と競合する;ブランドの瞬間に使い、破壊的なアクションとは区別する
オレンジ / アンバー暖かさ、親しみやすさ、行動消費者向け、食品、マーケットプレイス暗いオレンジは茶色くなる;ライトモードの塗りつぶしを確認する
黄 / ライム楽観、注意消費者向け、遊び心白いテキストを載せられない;黄色の塗りつぶしには暗いテキストを使うか、ブランドをアクセントとして控えめに使い、塗りつぶしにはより暗いステップを選ぶ(--hue-shift -15 で色合いをオリーブではなくゴールドに保つ)
ニュートラルに近い(黒/ストーン/サンド)高級、エディトリアル、ツール開発ツール、ファッション、ポートフォリオタイポグラフィと空間の技巧が必要で、そうしないと空虚に感じられる

知っておくべき地域的な注意点:赤は中国では幸運/お祝いですが、西洋の金融では損失を意味します(中国/日本の株価ティッカーでは上昇)。白は東アジアの一部で喪と関連付けられます。金融UIの場合、上げ/下げの色は設定可能にしてください。

知覚色 — OKLCHがなぜ重要なのか

HSLの明度は嘘をつきます:hsl(60 100% 50%)(黄色)とhsl(240 100% 50%)(青)は「L=50%」を共有していますが、知覚される明るさは大きく異なります。そのため、HSLランプはコントラストが不均一で、色相間で暗い/明るいステップが一致しません。

OKLCH = L(知覚明度 0–1)· C(彩度、約0–0.37)· H(色相角)。Lが等しい = 色相間で知覚される明るさがほぼ等しい。つまり:

  • 異なるランプの同じステップ(すべての-600)は、白に対するコントラストが同程度になります。
  • 明度を変えずに色相を回転させることができます(ハーモニー、「マッチする」ステータスカラー)。
  • ダークモードはLについて推論することで導出できます。

注意点:sRGB色域は不規則です — 各色相は各Lで異なる最大彩度を持ちます(黄色はL≈0.95でピーク、青はL≈0.45でピーク)。ツールは彩度を下げることで色域マッピングを行い、LとHを維持します。広色域(Display-P3)色は拡張機能です:まずsRGB値を宣言し、次に@media (color-gamut: p3)内でP3/oklch()の鮮やかな値を宣言します。

CSSは最新のブラウザすべてでoklch()をサポートしています。新しいWebプロジェクトではこれを使用してください。ネイティブプラットフォームでは、プラットフォームの表記法(hex/sRGB、Color(red:green:blue:)、Color(0xFF…))に変換します — ツールの--notation hexが役立ちます。

ランプ、ニュートラル、ティント

  • ランプは一貫して1つの色相を保持し、明るい端(背景があり、目が最も敏感な場所)でステップが細かくなり、ランプの中間で彩度がピークになります。11ステップ(50–950、Tailwind規則)または12ステップ(Radix規則、各ステップに名前付きの役割があります)— 役割マップについてはreferences/ramps-and-roles.mdを参照してください。
  • ティントニュートラル:グレーにブランド色相を少し混ぜます(彩度 ≈ 0.005–0.02)。これによりUI全体にまとまりが生まれます。彩度の高いアクセントの隣では、純粋な#808080のグレーは死んだように感じられます。暖色系ブランド → 暖色系グレー;寒色系 → 寒色系。
  • ブランドUIの長文テキストに、純粋な黒を純粋な白の上に決して使わないでください。ニアブラック(ニュートラル-950)をニアホワイトにすることでギラつきを軽減できます。ダークモードの純粋な黒の背景は、スクロール時にOLEDで滲みを引き起こします。L≈0.13–0.18を使用してください。

ダークモードは反転ではない

  • 浮き上がりは明るくなります。影が暗くなるのではありません:サーフェス > 背景 約0.03–0.06 L。
  • アクセントを少し彩度を下げ、明度を上げます。中間色の高彩度色は暗い背景上で振動して見えます。
  • 本文テキストはわずかにオフホワイト(ニュートラル-50/100)、控えめなテキストはニュートラル-400程度。
  • 塗りつぶしは多くの場合、ラベルを暗いテキストに反転します(ツールがコントラストに基づいて決定します)。
  • すべてのペアを再測定してください。コントラストは反転後に維持されません。references/dark-mode.mdを参照してください。

コントラスト — 標準

ペアWCAG 2.2 AAAAAAPCAガイダンス(参考)
本文テキスト(<24px / <18.66px bold)4.5:17:1Lc 75以上(90推奨)
大きなテキスト(≥24px または ≥18.66px bold)3:14.5:1Lc 60以上
UIコンポーネントと理解に必要なグラフィカルオブジェクト(入力ボーダー、アイコン、フォーカスリング、チャートマーク)3:1 (SC 1.4.11)—Lc 45以上
無効なコントロール、装飾要素、ロゴ免除——

WCAG 2.xは法的/コンプライアンスのベースラインです(ADA、EN 301 549 / European Accessibility Act)。APCA(WCAG 3の候補)は、特にダークモードと明るいテキストに対して知覚をより適切にモデル化しますが、WCAG 3はまだ確定していません — WCAG 2.2 AAを満たし、APCAをセカンドオピニオンとして使用してください。詳細、フォーカスリングのルール、落とし穴についてはreferences/contrast-and-cvd.mdを参照してください。

グラデーション、オーバーレイ、アルファ

  • グラデーションはin oklabで補間します(スムーズで、中途半端な濁りがありません)。中間で灰色になるのを避けるため、多色のスイープにはin oklchを使用します。テキストの後ろの背景には、明度が近いストップを保ちます。
  • 画像上のテキスト:スクリム(グラデーションオーバーレイ)またはソリッドなバッキングを使用し、最悪の領域を測定します。
  • アルファカラー(/50、rgba)は、下にあるものによってコントラストが変わります。テキストにはソリッドトークンを優先し、アルファはオーバーレイ、ホバー、シャドウのために予約します。

データ可視化

カテゴリカルパレットは、おおよそ等しい明度と最大の色相分離が必要です。順序パレットは単調に明度が変化します。発散パレットはニュートラルな中間点を共有します。利用可能な場合はdatavizスキルを使用してください — 検証済みのパレットメソッドがあります。チャート系列の色には必ずpalette.py cvdを実行してください。

誰かの色をレビューする — クイックチェックリスト

  • すべてのテキスト/背景ペアが両方のテーマで測定されている(推定ではない)
  • 入力ボーダー、フォーカスリング、意味を伝えるアイコンが3:1以上
  • コンポーネントに生のhex/rgbはなく、セマンティックトークンのみ
  • 1つのアクセントで、インタラクティブ/プライマリの意味にのみ使用
  • ステータスカラーがアクセントと、またCVDシミュレーション下で互いに区別できる
  • ニュートラルが一貫してティントされている(寒色系と暖色系のグレーが混在していない)
  • ダークモードが設計されている(浮き上がりのための明るいサーフェス、調整されたアクセント)、反転ではない
  • 意味が決して色だけで伝えられていない

重大度順の所見を含む完全なカラーシステム監査には、better-colorsスキルが優れています。色の選択/導出/生成については、このスキルを引き続き使用してください。

参考文献

  • references/ramps-and-roles.md — ステップごとのロールマッピング(Tailwind 50–950およびRadix 1–12)、状態色(ホバー/アクティブ/無効/選択)
  • references/dark-mode.md — ダークテーマの構築、浮き上がり、プラットフォーム固有の詳細(iOSセマンティックカラー、Materialトーンサーフェス)
  • references/contrast-and-cvd.md — WCAG 2.2の詳細、APCAレベル、フォーカスインジケーター、CVD設計ルール
  • references/harmony-and-brand.md — ハーモニースキーム、セカンダリカラーの導出、ブランドからUIへの変換、色温度、同時コントラスト

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

TomasValleDuran/design-system-builder

Create, extend, or audit a design system for any project and platform — design tokens (color, typography, spacing, radius, elevation, motion, breakpoints), token architecture (primitive → semantic → component), the W3C DTCG token format, theming (light/dark, brands, density), multi-platform output (CSS variables, Tailwind v4 @theme, React Native, Flutter, SwiftUI, Compose), component API conventions, documentation (DESIGN.md, Storybook) and governance. Use this whenever the user starts a new app and needs a visual foundation, says "design system", "design tokens", "theme", "style guide", "UI kit", "make it consistent", "set up Tailwind theme", wants to unify inconsistent UI, extract tokens from existing code or Figma, support dark mode or multiple brands, or share styles between web and mobile.

TomasValleDuran/ui-stack-advisor

Curated, up-to-date knowledge of UI component libraries, animation libraries and building blocks (icons, charts, tables, forms, toasts, drag-and-drop, virtualization, rich text) for web (React, Next.js, Vue, Svelte, Solid, Angular) and mobile (React Native/Expo, Flutter, SwiftUI, Jetpack Compose), with a decision process for picking one. Use this whenever a project is being started or scaffolded, when the user asks "which UI library / component library / design kit should I use", compares libraries (shadcn vs MUI vs Mantine, Tamagui vs NativeWind, etc.), needs a specific widget (date picker, data table, command palette, carousel, bottom sheet, chart), wants "cool animated components", or when you are about to hand-roll a component that a mature library already solves well.

TomasValleDuran/ui-ux-playbook

The entry point for any UI/UX work on web or mobile — the end-to-end workflow (brief → direction → system → stack → build → motion → verify), industry standards and best practices (WCAG 2.2, Apple HIG, Material 3, Nielsen heuristics, Laws of UX, Core Web Vitals, forms, navigation, states, i18n), a pre-ship UI checklist, and a routing map telling you which specialized design/animation/color/library skill to load for each sub-task. Use this whenever you start or plan a frontend or mobile app, build or redesign screens, review UI/UX quality, answer "what's the best practice for X" in interface design, or when several design skills could apply and you need to decide which.

関連スキル