MCPInstall

color-mode-and-theme

Light, dark or both, and when a theme selector is worth it. Use when defining a base palette or deciding on dark mode support.

Installs
940
Last 24h
+8
Trending rank
#9887
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/dembrandt/dembrandt-skills --skill color-mode-and-theme
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads color-mode-and-theme automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Color Mode and Theme

The Decision: Light, Dark, or Both

Color mode is a brand and context decision, not a personal preference. Make it deliberately.

Light (white design)

Tone: Open, trustworthy, content-forward, accessible, professional
Fits: Marketing sites, e-commerce, editorial, SaaS with mixed audiences, consumer products, B2B tools where the content is the focus

Light mode is the safer default for most products. It performs better in bright environments and has broader accessibility coverage out of the box.

Dark (dark design)

Tone: Premium, focused, immersive, technical, high-contrast data
Fits: Trading platforms, developer tools, creative tools (video/audio editors), data dashboards with dense visualisations, entertainment, gaming

Dark mode reduces eye strain during extended use in low-light environments. It also makes colourful data visualisations (charts, heatmaps) pop more clearly against a dark surface.

Caution: Dark mode is harder to get right. Low-contrast text, over-saturated brand colours, and insufficient surface differentiation are common failures. If the team cannot maintain it properly, light mode is better than a broken dark mode.

Combined (system-default + manual override)

Respect prefers-color-scheme and let the OS set the default. Offer a toggle for users who want to override. This is the modern standard for most products with a returning user base.

@media (prefers-color-scheme: dark) {
  :root { /* dark tokens */ }
}
@media (prefers-color-scheme: light) {
  :root { /* light tokens */ }
}
[data-theme="dark"] { /* manual override */ }
[data-theme="light"] { /* manual override */ }

When to Build a Theme Selector in the UI

A theme selector is a UI control — it takes space and adds complexity. Only build it when user control genuinely matters.

SituationTheme selector?
Marketing site, landing pageNo — pick one mode, commit to it
Consumer SaaS, general audienceCombined (system-default + toggle)
Developer tool, technical productYes — developers expect it
Trading platform, financial dashboardYes — extended use, low-light sessions common
B2B enterprise tool (ERP, analytics)Yes — power users, long sessions, personal preference varies
E-commerce storefrontUsually no — light default, possibly system-default
Creative tool (design, video, audio)Yes — dark is often preferred, toggle still expected

Rule: if the user will spend hours per day in the tool, give them control. If it's a transactional or occasional-use product, pick the mode that fits the brand and move on.

Place the theme toggle in the header (top-right, near account) or in user settings — not in primary navigation.


Brand Tone and Color Mode

The brand's existing visual identity should inform the default mode.

Brand toneDefault mode
Clean, minimal, trustworthy, openLight
Premium, exclusive, bold, immersiveDark
Technical, data-heavy, preciseDark
Playful, colourful, energeticLight (dark mode harder to maintain with vivid brand colours)
Neutral, enterprise, functionalLight, with system-default toggle

If the brand uses a very dark primary colour (navy, deep green, near-black), a dark mode surfaces it naturally. If the brand is built around a bright, vivid primary, light mode lets it breathe.


Dark Mode Token Principles

A theme switcher is a second palette, not a toggle. Every semantic colour needs a verified value in each mode — not one value flipped by an algorithm. Contrast that passes on light routinely fails on dark; saturation and elevation read differently. Real cost, and a reason not to build one unless it earns its place (see above).

Dark mode is not just inverting colours. Common mistakes:

  • Do not use pure black (#000000) as the base surface — use a very dark neutral (#0A0A0F, #111827) for depth
  • Surface hierarchy in dark mode uses lightness, not shadows — base, +1, +2 surfaces get progressively lighter, not more shadowed
  • Reduce brand colour saturation slightly — vivid colours on dark backgrounds can be visually aggressive; a 10–15% desaturation keeps them readable
  • Increase font weight for reversed text — light text on a dark background often appears "thinner" than the same weight in light mode. Increase the weight by one step (e.g., from Regular to Medium, or Medium to Semibold) to maintain legibility.
  • Text contrast needs active verification — light text on dark surfaces is not automatically WCAG-compliant; check all combinations

A literal equal to a token's value is that token. When a hardcoded colour happens to match what a token resolves to in the current theme, it is not a coincidence and not a local choice: it is that token, written in the one form that cannot follow the theme. The damage then shows up inverted rather than missing. A surface frozen at its dark-mode value does not merely look wrong in light mode, it reverses its relationship to its neighbours, so what was sunken becomes raised and what receded now advances. The layout still renders, nothing throws, and the only report is somebody saying a screen feels off. Do not leave this to discipline, because a literal is invisible to every token audit by construction. Make it mechanical: grep the markup for literal colour values, treat the count as a debt with a number, and fail the build on new ones once it reaches zero. Any literal that survives the grep needs a reason in writing, and "it is the same as the token anyway" is the one reason that is never valid.

/* Dark mode surface scale */
--color-surface:         #0A0A0F;  /* base */
--color-surface-raised:  #141419;  /* cards */
--color-surface-overlay: #1E1E26;  /* modals, popovers */
--color-border:          rgba(255,255,255,0.08);
--color-text:            #F0F0F5;
--color-text-secondary:  #8A8F98;

Review Checklist

  • Is the color mode choice deliberate and based on brand tone and use context?
  • If combined mode: does prefers-color-scheme set the default?
  • If a theme selector is built: is it placed in a low-profile but accessible location?
  • In dark mode: are surfaces differentiated by lightness steps, not just shadows?
  • In dark mode: is brand colour slightly desaturated to avoid visual aggression?
  • Are all text/background contrast ratios verified in both modes (WCAG 2.2 AA)?
  • Is font weight increased by one step for reversed text (light-on-dark) to maintain optical legibility?
  • Is pure black (#000000) avoided as a dark mode base surface?

FAQ

What does the color-mode-and-theme skill do?

Light, dark or both, and when a theme selector is worth it. Use when defining a base palette or deciding on dark mode support.

How do I install color-mode-and-theme?

Run npx skills add https://github.com/dembrandt/dembrandt-skills --skill color-mode-and-theme in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/color-mode-and-theme/ (personal) or .claude/skills/color-mode-and-theme/ (project).

Which AI agents can use color-mode-and-theme?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is color-mode-and-theme safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains color-mode-and-theme?

It is published by dembrandt in dembrandt/dembrandt-skills. It has 940 recorded installs.

More from dembrandt/dembrandt-skills

View all →

nielsen-usability-heuristics

dembrandt/dembrandt-skills

Nielsen's 10 usability heuristics. Use when auditing an interface, designing interaction flows, writing error messages or reviewing usability.

Docs & Writing989 installs

performance-and-web-vitals

dembrandt/dembrandt-skills

Lighthouse audits and Core Web Vitals — LCP, CLS, INP. Use when optimising page load, layout shift, input delay, images, fonts or render-blocking resources.

ui-density

dembrandt/dembrandt-skills

Match information density to platform and user type. Use when designing data tables, dashboards or toolbars, or adapting a desktop product for mobile.

Frontend & Design927 installs

form-design

dembrandt/dembrandt-skills

Helper text, placeholders, validation and submit behaviour. Use when designing or reviewing a form, input field or data entry UI.

Frontend & Design925 installs

brand-visual-language

dembrandt/dembrandt-skills

Shape language across type, radius and icons carries brand personality. Use when starting a design system, picking icons or radius tokens, or reviewing visual consistency.

Marketing & SEO915 installs

semantic-html-and-seo

dembrandt/dembrandt-skills

Semantic HTML5, SEO basics, alt text, progressive enhancement and SPA concerns. Use when building web UI, reviewing markup or optimising for search.

Frontend & Design909 installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs