Skip to main content
skill CX Codex

color-mode-and-theme — Claude Code skill: what it does, how to install

Guides decisions on light versus dark modes, UI theme toggles, and design tokens without contrast pitfalls.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add dembrandt/dembrandt-skills --skill color-mode-and-theme -a claude-code
Open on GitHub

What color-mode-and-theme does

The skill structures color mode choices around context and session length. Light surfaces remain the default for marketing and editorial products. Dark modes fit trading desks, developer tooling, and dense dashboards. A UI theme toggle adds maintenance overhead, so the guide reserves it for tools where users spend hours daily. Occasional-use products should commit to a single theme.

The guidelines ban pure #000000 base surfaces to preserve depth. Dark palettes use dark neutrals like #0A0A0F, building surface hierarchy by lightening raised elements instead of adding drop shadows. Light text visually thins out on dark backgrounds, which is why the skill recommends bumping font weight up by one step. It also advises reducing brand color saturation by 10–15% to stop high-contrast glare.

Shipping a broken dark mode hurts usability more than sticking to a light default. A theme switcher is a second verified palette, not an automated filter. The skill treats hardcoded color literals as technical debt that breaks themes silently, advising teams to grep markup and fail builds on new untokenized values.

What it helps with

  • select a baseline color mode matching brand tone and user habits
  • determine whether a UI theme toggle is worth adding
  • build a dark surface scale using lightness steps instead of shadows
  • catch hardcoded color literals before they break theme tokens

Example prompts for the agent

  • This is a trading platform, what color mode fits best?
  • Should I add a theme selector to our marketing landing page?
  • Help me build a dark mode surface scale for our design tokens

How to install color-mode-and-theme

1Skills CLI (Vercel)

npx skills add dembrandt/dembrandt-skills --skill color-mode-and-theme -a claude-code

2Manually: put the files in place

~/.claude/skills/color-mode-and-theme/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/color-mode-and-theme/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about color-mode-and-theme

How do I install color-mode-and-theme in Claude Code?

Run npx skills add dembrandt/dembrandt-skills --skill color-mode-and-theme -a claude-code in your terminal.

What does color-mode-and-theme do?

It provides concrete guidelines for picking light or dark color modes, justifying UI theme selectors, and defining dark mode design tokens.

Why does the skill advise against pure black surfaces in dark mode?

Pure #000000 removes depth from the layout. The skill suggests dark neutrals such as #0A0A0F or #111827, allowing overlays and cards to step up through lighter shades.

Source text

SKILL.md · MIT
---
name: color-mode-and-theme
description: Light, dark or both, and when a theme selector is worth it. Use when defining a base palette or deciding on dark mode support.
metadata:
  priority: 7
  pathPatterns:
    - "**/*.css"
    - "**/*.scss"
    - "**/tokens/**"
    - "**/theme/**"
    - "tailwind.config.*"
    - "design-system/**"
  promptSignals:
    phrases:
      - "dark mode"
      - "light mode"
      - "theme"
      - "color mode"
      - "dark design"
      - "white design"
      - "theme selector"
      - "brand tone"
retrieval:
  aliases:
    - dark mode
    - light mode
    - theme selector
    - color scheme
    - brand tone
    - white design
    - dark design
  intents:
    - choose between dark and light mode
    - decide if dark mode is needed
    - build a theme selector
    - match brand tone in color palette
    - design for enterprise tools
  examples:
    - should this app be dark or light
    - when should I add a theme toggle
    - design a dark mode for this dashboard
    - this is a trading platform, what color mode fits
---

# 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.

```css
@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.

| Situation | Theme selector? |
|---|---|
| Marketing site, landing page | No — pick one mode, commit to it |
| Consumer SaaS, general audience | Combined (system-default + toggle) |
| Developer tool, technical product | Yes — developers expect it |
| Trading platform, financial dashboard | Yes — extended use, low-light sessions common |
| B2B enterprise tool (ERP, analytics) | Yes — power users, long sessions, personal preference varies |
| E-commerce storefront | Usually 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 tone | Default mode |
|---|---|
| Clean, minimal, trustworthy, open | Light |
| Premium, exclusive, bold, immersive | Dark |
| Technical, data-heavy, precise | Dark |
| Playful, colourful, energetic | Light (dark mode harder to maintain with vivid brand colours) |
| Neutral, enterprise, functional | Light, 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.

```css
/* 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?

© dembrandt · MIT · dembrandt/dembrandt-skills

Similar skills

Everything for Design →

From the same set34

nielsen-usability-heuristics Audits UI components and interaction flows using Nielsen's usability heuristics. Helps spot missing feedback, confusing copy, and poor error handling. CX Codex +1 976installs performance-and-web-vitals This skill guides Lighthouse audits and Core Web Vitals fixes across LCP, CLS, and INP. It provides rules to optimize images, fonts, scripts, and layout shifts. CX Codex +1 975installs ui-density Matches information density to screen size and user expertise. Guides table layouts, dashboards, and mobile adaptation without shrinking UI elements. CX Codex +1 915installs form-design A skill for designing forms: helper text, placeholders, validation timing and submit button state. Useful when you build or review a data entry UI. CX Codex +1 916installs brand-visual-language A skill that ties border radius, type and icon style to your brand's personality. Useful when you start a design system or spot visual drift across components. CX Codex +1 907installs semantic-html-and-seo A skill that steers your coding agent toward semantic HTML5, proper meta tags, alt text and progressive enhancement. Useful when you build UI or review existing markup. CX Codex +1 901installs motion-and-storytelling A skill for designing transitions, scroll animations and onboarding motion. It hands you timings, easing curves and stagger patterns when animation has a job to do. CX Codex +1 894installs information-architecture Keeps a large app navigable: what to call each entity, how screens map to the data model, and when to ask before a destructive action. CX Codex +1 889installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor