ui-contrast-review

Reviewing UI for light/dark contrast, readability, focus states, color-token drift, theme regressions.

synter-media-ai/free-skills2 installsMITSynced Aug 22

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: ui-contrast-review
description: Reviewing UI for light/dark contrast, readability, focus states, color-token drift, theme regressions.
license: MIT
---

# UI Contrast Review

Review UI surfaces for theme-driven readability and visibility failures.

## Primary Goal

Catch light-mode and dark-mode contrast regressions before they ship.

Prefer system fixes:

- shared tokens
- semantic color variables
- reusable component classes

Avoid one-off per-page color patches unless the issue is intentionally local.

## Review Workflow

1. Identify the target surfaces.
- page routes
- reusable components
- empty states
- tables
- dialogs
- badges
- charts
- forms

2. Check both themes.
- light theme
- dark theme
- hover / active / disabled / selected states
- focus rings and keyboard focus visibility

3. Inspect the highest-risk UI pairs.
- body text vs background
- muted text vs card background
- button label vs button fill
- border vs surrounding surface
- placeholder text vs input background
- badge text vs badge fill
- link text vs surrounding paragraph
- chart lines/bars vs canvas background
- toast/alert text vs status fill

4. Look for token drift.
- hard-coded Tailwind colors mixed with semantic theme tokens
- `text-muted-foreground` on surfaces that are already muted
- `border-white/10` or `border-black/10` used in the wrong theme
- color combinations that only work in one theme

5. Recommend the smallest durable fix.
- first choice: theme variable / semantic token
- second choice: shared component class
- last choice: local page override

## Minimum Contrast Standard

Use WCAG AA as the baseline heuristic:

- normal text: aim for 4.5:1 or better
- large text: aim for 3:1 or better
- UI boundaries and focus indicators: visibly distinct without requiring hover

When exact ratios are not available, make a practical engineering judgment:

- if text is even slightly hard to read in either theme, treat it as a bug
- if borders disappear into the background, treat it as a bug
- if disabled and secondary states become illegible, treat it as a bug

## Output Format

For each issue, provide:

- surface
- theme
- failing element
- why it fails
- preferred fix
- file/component reference when available

Use this structure:

```md
Findings
1. [severity] Surface — issue
File: path/to/file.tsx
Theme: light|dark|both
Fix: semantic token or component-level change
```

If no issues are found, state that explicitly and mention what was checked.

## Good Fix Patterns

- replace hard-coded color with semantic token
- raise muted foreground contrast one step
- strengthen border token for light theme separately from dark theme
- give focus rings a dedicated accessible token
- ensure disabled text is still readable, not just low-opacity

## Avoid

- only checking dark mode
- only checking screenshots without interaction states
- fixing with arbitrary hex values when a shared token should exist
- shipping “looks okay on my screen” judgments without checking both themes

## Notes

When browser tooling is available, review the real rendered UI.

When browser tooling is not available, inspect:

- route components
- shared UI primitives
- Tailwind utility usage
- CSS variables / theme tokens

Start with the shared primitives if the same contrast problem appears in multiple pages.


---

## About this skill

Part of the [Synter free skills collection](https://github.com/Synter-Media-AI/free-skills) — open-source agent skills for advertising, PPC, and marketing automation.

**Want this skill (and 40+ more) running on autopilot against your live ad accounts?** Try [Synter](https://syntermedia.ai?utm_source=skills_sh&utm_medium=skill_footer&utm_campaign=free_skills) — AI Agent Media Buyers that connect to Google, Meta, LinkedIn, TikTok, Reddit, Amazon, and 7+ more platforms.

- 🌐 [syntermedia.ai](https://syntermedia.ai?utm_source=skills_sh&utm_medium=skill_footer&utm_campaign=free_skills)
- 📚 [All free skills](https://github.com/Synter-Media-AI/free-skills)
- 💬 Built by [@syntermedia](https://twitter.com/syntermedia) — questions? Open an [issue](https://github.com/Synter-Media-AI/free-skills/issues).

More Design Systems skills

stitch-design-taste

leonxlnx/taste-skill

Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography, calibrated color, asymmetric layouts, perpetual micro-motion, and hardware-accelerated performance.

265.6k

figma

heygen-com/hyperframes

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

101.8k

image

coreyhaines31/marketingskills

When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets. Also use when the user mentions 'AI image generation,' 'generate an image,' 'create a graphic,' 'product mockup,' 'hero image,' 'social media graphic,' 'banner image,' 'cover photo,' 'profile banner,' 'listing screenshot,' 'Flux,' 'Flux Kontext,' 'Midjourney,' 'DALL-E,' 'GPT Image,' 'ChatGPT Images,' 'Ideogram,' 'Gemini image,' 'Nano Banana,' 'Recraft,' 'Stable Diffusion,' 'Canva,' 'Figma,' 'image optimization,' 'compress images,' 'WebP,' or 'OG image.' Use this for general-purpose marketing image creation and optimization. For paid ad image creative and platform-specific ad specs, see ad-creative. For video production, see video.

62.9k

← All Design Systems skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY