Skip to content
Development
Skill

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

From plugin
dembrandt
18045 skills1 MCP

Claude Code

$ npx -y skills add dembrandt/dembrandt-skills --skill color-mode-and-theme --agent claude-code

SKILL.md

color-mode-and-theme.SKILL.md
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.

@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
  • **Dark surfaces and borders take the canvas hue** — on a tinted near-black base, derive every surface and border step from that hue, not from neutral grey, so every dark on the page reads as one family. A second family of raw dark hexes beside the tokens is the symptom: the tokens have the wrong hue and people have been compensating. Fix the scale instead of adding hexes
  • **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** — ligh
Read more
@dembrandt
Ships withdembrandt

Enterprise UX secrets, now built into your AI agent. Your agent writes the component in seconds. It does not know the modal should be a drawer, or that the grey it picked fails contrast. These skills carry that judgment: what to do, and what breaks otherwise.

18045 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
180
Star history of dembrandt/dembrandt-skills on GitHub, a chart by star-history.com

Other skills on dembrandt.

app-shell

app-shell

Top bar, sidebar rail, app launcher, tenant and environment cue, status bar. Use when designing the persistent shell, a…

@dembrandt@dembrandtInstall Skill
brand-visual-language

brand-visual-language

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

@dembrandt@dembrandtInstall Skill
button-states

button-states

Rest, hover, active, focus, disabled and loading states, derived from the base colour. Use when designing buttons, links, inputs…

@dembrandt@dembrandtInstall Skill
clone-website

clone-website

Rebuild a live web page 1:1 from measurement into Figma, Penpot or code, then verify it. Use when reproducing a page or checking…

@dembrandt@dembrandtInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about color-mode-and-theme.

Which coding agents can use color-mode-and-theme?
color-mode-and-theme installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.