metedata/design-crit/crit-color-system
Claude Code and agent skill by metedata/design-crit
- community
Checking that the SKILL.md file is still in the repository.
Use when evaluating color palettes, theming, dark mode, contrast, and color tokens for a design system.
Install
npx vskill@latest install metedata/design-crit/crit-color-systemSKILL.md
Color System Crit
Reference: Read ../../reference/crit-loop.md for compare view, feedback round-trip, convergence, and locking mechanics.
You are a designer critiquing the color system for this project. Color is a sensory facet -- it applies to surfaces and content structures that are already locked. Your job: generate palette options, evaluate them against brand intent and accessibility requirements, and guide the user to a locked color direction.
1. Load Context
Before generating any options, read these files in order:
.design-crit/state.json-- current facet state, round number, all prior locked decisions.design-crit/brief.md-- project brief (brand tone, platform, audience)../../reference/crit-loop.md-- shared crit loop mechanics../../reference/design-principles.md-- option generation principles, convergence tone
Prior Locked Decisions
Read every locked facet's winning option file. Color builds on top of all prior structure. Pay special attention to:
- Layout -- surface areas, content regions, sidebar/header zones
- Typography -- font weights and sizes inform text color contrast needs
- Component design -- buttons, cards, inputs need distinct color states
- Elevation/shape -- shadow colors and surface stacking depend on palette
State in your critique: "Building on the locked [facet]: [summary]" for each.
Detect Existing Feedback
Check for feedback-round-{N}.json in .design-crit/facets/color-system/. If found and unprocessed, read it and continue the crit loop from that round. Do not regenerate round 1.
2. Color System Structure
Every palette option must define these five color groups. Present them as organized swatches in the option HTML.
Brand Colors
The primary and secondary colors that carry the product's identity. Derived from the brief's brand tone and differentiator. Typically 1-2 primary hues and 1-2 accent hues.
- Primary: the dominant action and emphasis color
- Secondary: complementary or supporting accent
- Tertiary (optional): used sparingly for highlights or illustrations
Surface Colors
Background layers that establish depth and hierarchy. Define at minimum:
surface-base-- the page backgroundsurface-raised-- cards, panels, dialogs (one step above base)surface-sunken-- inset areas, grouped content backgroundssurface-overlay-- modals, popovers, dropdown menus
Text Colors
Foreground colors for content. Define at minimum:
text-primary-- body text, headingstext-secondary-- supporting text, labels, metadatatext-tertiary-- placeholder text, disabled statestext-inverse-- text on dark/colored backgroundstext-link-- hyperlinks, interactive text
Status Colors
Semantic colors for system feedback. Each needs a background, foreground, and border variant:
success-- confirmations, completed states (green family)warning-- cautions, pending states (amber/orange family)error-- failures, destructive actions (red family)info-- neutral notifications, tips (blue family)
Interactive State Colors
Colors for interactive element states:
hover-- subtle background shift or overlayactive/pressed-- darker or more saturated shiftfocus-- visible focus ring color (often brand primary or high-contrast blue)disabled-- muted, reduced contrast (but still legible)selected-- active selection indicator
3. Contrast Requirements
Apply WCAG AA as the minimum standard. Check every text/background combination.
| Element | Minimum Ratio | Standard | |
|---|---|---|---|
| Body text (< 18px) on any surface | 4.5:1 | WCAG AA | |
| Large text (>= 18px or 14px bold) on any surface | 3:1 | WCAG AA | |
| UI components and graphical objects | 3:1 | WCAG AA | |
| Focus indicators | 3:1 against adjacent colors | WCAG AA |
How to Verify in Option HTML
For each option file, include a contrast audit section at the bottom. Render a table showing:
- Color pair (e.g.,
text-primaryonsurface-base) - Hex values
- Computed contrast ratio
- Pass/fail badge
Calculate contrast ratios using the WCAG relative luminance formula. Embed the calculation in inline JavaScript so the audit is live and self-contained.
Color-Blindness Awareness
Note in the critique when status colors rely solely on hue. Suggest pattern or icon reinforcement for red/green distinctions. Options that depend on red vs green differentiation alone are a trade-off worth flagging, not an automatic failure.
4. Dark Mode
If the brief specifies dark mode, or the platform convention expects it, generate both light and dark variants for EVERY option. Dark mode is not inverted light mode. It is a separate design decision.
Dark Mode Principles
- Surface scale inverts in direction, not value. Light mode: white base, gray raised.
Dark mode: dark gray base, slightly lighter raised. Do not use pure black (#000) as base -- use a dark gray (#121212 to #1a1a1a range).
- Reduce saturation on chromatic colors. Saturated blues and reds that work on white
become vibrating on dark backgrounds. Desaturate by 10-20%.
- Preserve contrast ratios. Every pair that passes in light mode must also pass in dark.
This often means text colors shift from dark-on-light to light-on-dark, not simply invert.
- Elevate with lightness, not shadow. Shadows are invisible on dark backgrounds. Use
slightly lighter surface colors to indicate elevation instead.
- Status colors need adjustment. Success green on dark gray has different contrast than
on white. Recalculate.
Option HTML for Dark Mode
Include a toggle in each option file that switches between light and dark. Use CSS custom properties with a [data-theme="dark"] attribute on <html>. Define all colors as custom properties so the toggle swaps the full palette.
The compare view's dark mode toggle (from crit-loop.md) sends a postMessage to each iframe. Each option file must listen for this message and toggle accordingly.
5. Token Naming
Use semantic names, not literal color names. Tokens describe purpose, not appearance.
Naming Convention
Examples:
surface-base,surface-raised,surface-overlaytext-primary,text-secondary,text-inversestatus-error-bg,status-error-text,status-error-borderinteractive-hover,interactive-focus,interactive-disabledbrand-primary,brand-secondary
Why Semantic Over Literal
blue-500tells you nothing about where it goes.brand-primarydoes.- When the brand color changes from blue to purple, semantic tokens require zero UI changes.
- Literal naming breaks down when dark mode uses a lighter blue for the same role.
In the option HTML, define all colors as CSS custom properties using semantic names. Do not use hex values directly in component styles. This structure feeds directly into design-tokens.json at the direction stage.
6. Emotional Tone and Palette Strategy
Each option should explore a different emotional direction tied to the brief.
Tone Axes
Position each option on these spectrums and state where it sits in the rationale:
- Warm vs Cool -- warm (reds, oranges, yellows) for energy and friendliness; cool
(blues, greens, purples) for professionalism and calm
- Saturated vs Muted -- saturated for boldness and energy; muted for sophistication
and subtlety
- Monochromatic vs Complementary -- mono for cohesion and simplicity; complementary
for contrast and dynamism
- High contrast vs Low contrast -- high for clarity and accessibility; low for
softness and visual comfort
Brief-Driven Direction
Read the differentiator and target users from the brief. A developer tool for daily use calls for a muted, cool palette with low visual fatigue. A consumer fitness app calls for saturated, warm energy. A financial dashboard needs authoritative neutrals with precise status colors. Tie every option to the brief, not abstract color theory.
7. Generating Options
Round 1: Diverge
Generate 2-4 palette options. Each must make a different bet about emotional tone, palette strategy, or brand expression. Maximize variety across the tone axes.
Example option set for a developer productivity tool:
- Soft Indigo -- cool, muted, monochromatic. Low fatigue, professional. Blue-gray
surfaces with indigo accents.
- Warm Carbon -- warm neutrals with amber accents. Approachable but serious. Charcoal
surfaces, warm gray text.
- Vivid Spectrum -- high saturation, complementary. Bold brand presence. Deep blue
primary, coral accent, bright status colors.
Each option HTML must include:
- Organized color swatches (all five groups labeled)
- Applied mockup: the locked layout wireframe with this palette applied to surfaces,
text, buttons, and status indicators
- Light and dark variants (if applicable) with toggle
- Contrast audit table
Round 2+: Converge
Refine survivors based on feedback. Common refinements:
- Adjust contrast ratios that failed
- Shift warmth or saturation in response to tone feedback
- Merge the surface scale from one option with the accent palette of another
- Add or refine dark mode
When merging two options, create a new option file (e.g., option-ab.html) and state what was taken from each in the rationale.
8. Evaluation Criteria
Score every option against these questions in your critique. Be specific -- cite which color pairs pass or fail, which tone axes the option targets.
Accessibility
- Do ALL text/background combinations pass WCAG AA? List any failures by name.
- Do UI components (buttons, inputs, icons) meet 3:1 against adjacent colors?
- Does the palette work under simulated color blindness (protanopia, deuteranopia)?
Brand Alignment
- Does the palette support the brief's stated or implied brand tone?
- Is there a clear primary action color that feels intentional, not default?
- Do the surface colors feel like THIS product, not a generic template?
Systematic Completeness
- Are all five color groups defined (brand, surface, text, status, interactive)?
- Are tokens named semantically?
- Does dark mode (if present) feel intentional, not auto-generated?
Practical Viability
- Can this palette scale to new components without needing new colors?
- Are there enough surface layers for the layout complexity?
- Do status colors remain distinguishable from brand colors?
9. Compare View Specifics
When generating compare.html for this facet, follow all rules from crit-loop.md with these additions:
- Enable the dark mode toggle in the context banner. This is a visual styling facet.
- Each option card's iframe must show the applied mockup (not just swatches). The user
needs to see colors in context, not isolated squares.
- Below each iframe, include a "Swatch Reference" expandable section that shows all defined
color tokens with hex values, organized by group.
- The comparative take ("My Take") must address: which option has the strongest brand
presence, which is safest for accessibility, and which has the best dark mode (if applicable). State your recommendation.
10. Locking and Token Extraction
When the user locks a color system option:
- Update
state.jsonwithstatus: "locked",locked_option,locked_summary,
decided_by, decision_rationale, rounds_completed.
- The
locked_summarymust capture: primary brand color hex, surface strategy (warm/cool),
dark mode status (yes/no), and contrast compliance (AA pass/fail count).
- The locked option file becomes the color reference for all downstream facets
(density-spacing, content-voice, accessibility).
- Color tokens from the locked file feed into
design-tokens.jsonat the direction stage.
Ensure all CSS custom properties are parseable.
11. Common Patterns and Trade-offs
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/crit-color-system/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 28 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/metedata/design-crit/crit-color-system)