agentsclimarketplace

Accessible dark mode design expert

Skill dhosruiasn/accessible-dark-mode-design-expert

Cross-runtime Agent Skill for accessible dark mode design, implementation, and audits.

Install
npx -y skills add dhosruiasn/accessible-dark-mode-design-expert

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 19 days oldThe repository was created 19 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Design, implement, review, and audit accessible light/dark theme systems for websites and apps. Use for dark mode, night mode, theme switching, prefers-color-scheme, color-scheme, design tokens, surface elevation, OLED considerations, contrast audits, theme-aware imagery, complete route/state coverage, transition ghosting or afterimages, Material or Apple dark appearance, reduced-motion-safe transitions, and optional time/weather/sky/ocean atmospheric themes.

SKILL.md

11.2 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

Accessible Dark Mode Design Expert

Build dark themes as complete appearance systems, not color inversions. Preserve user control, verify contrast computationally, distinguish platform conventions, and test real content in both appearances.

Route the task

Read only the references needed for the request:

Core workflow

  1. Inspect the existing project structure, nearby instructions, theme code, design tokens, component states, assets, and uncommitted changes before editing.
  2. Identify the platform and product context: web, native Apple, Android Material 2, Android Material 3, cross-platform, content-heavy, media-heavy, OLED-sensitive, or atmospheric.
  3. Establish user-preference behavior before selecting colors.
  4. Create a route/surface/state coverage manifest before styling. Include persistent shells, overlays and portals, authenticated or role-gated flows, third-party content, desktop/mobile layouts, and generated or empty/loading/error states.
  5. Inventory every foreground, background, surface level, border, icon, semantic status, asset, interaction state, raw color, pseudo-element, and theme-sensitive transition. Record stylesheet load order and the element that owns each selected or animated visual state.
  6. Define primitive, semantic, and component token layers. Components must consume semantic roles rather than raw colors.
  7. Create light and dark mappings deliberately. Never generate the final system by inversion.
  8. Verify every adjacent foreground/background pair with the bundled contrast script, including composited alpha colors and elevated surfaces.
  9. Implement switching without wrong-theme flash, full reload, preference loss, automatic overrides of an explicit choice, or temporally mismatched transitions.
  10. Choose atomic or animated switching only after inspecting existing transitions. Default to an atomic switch for legacy, media-heavy, multi-stylesheet, or partially tokenized products.
  11. Verify the actual product across every manifest row, both appearances, accessibility settings, devices, lighting, content, and interaction states. Mark inaccessible or untestable rows explicitly; do not call the theme complete while required rows remain unverified.

Non-negotiable rules

Respect preference

  • On the web, model preference as system | light | dark unless product requirements clearly differ.
  • Precedence is explicit user choice over system appearance. An automatic time or weather theme must be separately opted into and must never silently replace an explicit Light or Dark choice.
  • In native Apple apps, prefer the systemwide appearance. Add an app-specific appearance setting only when a strong product requirement justifies divergence.
  • Support system appearance changes while the product is running.

Use semantic architecture

  • Use three layers: primitives → semantic roles → exceptional component roles.
  • Include, at minimum, background/surface/elevated/scrim, primary/secondary/disabled text and icons, subtle/default/strong borders, focus, links, brand actions, and success/warning/danger/info roles.
  • Do not require corresponding light and dark semantic roles to share the same physical swatch index.
  • Test real components after initial palette mapping; allow deliberate palette-step adjustments.

Verify contrast, never estimate it

  • Use WCAG thresholds as thresholds, without rounding a failing value upward.
  • Normal text: at least 4.5:1 for AA and 7:1 for AAA.
  • Large text: at least 3:1 for AA and 4.5:1 for AAA. Large means at least 18pt/24 CSS px regular, or 14pt/about 18.67 CSS px bold.
  • Meaningful UI boundaries, icons, focus indicators, and graphical objects: target at least 3:1 against adjacent colors where WCAG non-text contrast applies.
  • Inactive controls are exempt from WCAG contrast requirements, but they still need to be identifiable and understandable.
  • Material 2 documents 15.8:1 as a minimum white-text/base-surface design constraint so body text can retain 4.5:1 at the lightest 24dp elevation. It is not an automatically measured value for arbitrary colors or a universal body-text target.

Run a single check:

node <skill-dir>/scripts/contrast-ratio.mjs '#f8fafc' '#0c1222'

Run a batch check from JSON:

node <skill-dir>/scripts/contrast-ratio.mjs --file color-pairs.json --format json

Treat <skill-dir> in command examples as the directory containing this SKILL.md. Claude Code may use ${CLAUDE_SKILL_DIR}; Codex should resolve the installed path from its skill catalog.

Keep Material 2 and Material 3 distinct

  • Material 2 dark surfaces commonly use #121212 plus white elevation overlays. Retain dark cast shadows; do not use bright glow as the elevation language.
  • Material 3 primarily uses named tonal surface roles and tonal elevation. In Android Compose, the tonal overlay comes from the Primary slot and can coexist with shadow elevation.
  • Do not label Material 2's white-overlay percentage table as Material 3.
  • Treat all baseline values as design-system-specific starting points, not universal web requirements.

Design for accessibility settings and motion

  • Do not communicate state by color alone. Pair status with text, icon, shape, or another perceivable cue.
  • Test Increased Contrast and Reduce Transparency on Apple platforms, independently and together.
  • Test keyboard focus, browser autofill, selection, caret, placeholder, disabled, loading, and error states.
  • Wrap nonessential theme transitions and atmospheric animation in prefers-reduced-motion: no-preference, and disable or simplify them under reduce.
  • Avoid flashes, lightning effects, or large luminance jumps unless the user explicitly enables them and the implementation is safe.

Handle assets explicitly

  • Test logos, transparent PNGs, photos, illustrations, screenshots, charts, SVGs, maps, video posters, captions, and third-party embeds in both appearances.
  • Reuse one asset only if it preserves all information in both themes; otherwise provide theme variants.
  • Never apply global image inversion.
  • Use system symbols and asset catalogs on Apple platforms when appropriate.

Implementation requirements

  • Set color-scheme so native controls and browser surfaces can match the active appearance.
  • Resolve saved preference before first paint. Account for Content Security Policy and storage failures.
  • Listen for system changes only while preference is system.
  • Persist the preference value, not merely the currently resolved appearance.
  • Avoid global transition: all; transition only selected color-related properties.
  • Do not add theme transitions until existing component transitions have been inventoried. Different durations on backgrounds, shadows, filters, images, and pseudo-elements can create visible afterimages even when each transition is individually motion-safe.
  • Preserve interaction-state ownership. If a moving indicator, slider, or pseudo-element owns the selected fill, recolor that owner instead of adding a second selected background that breaks geometry or motion.
  • Use feature detection or fallbacks for newer CSS such as light-dark() and color-mix() when project browser support requires it.
  • Keep contrast comments out of source unless generated and tested. Prefer automated checks in tests or build tooling.

Audit procedure

  1. Build and retain the route/surface/state coverage manifest. Include every entry point, overlay root, responsive variant, privileged flow, and third-party island.
  2. Extract actual colors from computed styles or design tokens; include alpha compositing and image-backed surfaces.
  3. Generate a matrix across semantic foregrounds, every surface level, and every interaction state.
  4. Run the bundled script on all pairs.
  5. Inspect hierarchy, glare, halation, saturation, borders, state ownership, clipping, and asset loss visually; contrast math alone cannot assess comfort or meaning.
  6. Test Light, Dark, and System; rapid Light → Dark → Light runtime changes; bright, normal, dim, and dark environments; LCD and OLED; mobile and desktop.
  7. For web work, run the project locally and verify the complete flow in a browser when possible. If browser, authentication, or data access blocks a required row, report it as unverified and use static inspection only as partial evidence.
  8. Report findings by severity with exact tokens/components and measured ratios. Separate standards failures, coverage gaps, and subjective refinements.

Output expectations

  • Match the user's language.
  • State assumptions and the target platform.
  • Separate required accessibility fixes from optional visual polish.
  • Give token-level or component-level changes, not vague advice.
  • When implementing, preserve existing patterns and make the minimum coherent change.
  • When only reviewing or diagnosing, do not edit files unless asked.

Sources of authority

Prefer primary standards and platform documentation for normative claims:

Use secondary design articles for heuristics and examples, not to override current standards or platform guidance.

Gives 0 of the 12 instructions most css styling skills give in ~2.2k tokens

Counted across 586 of the 596 authors here whose files we hold, read 2026-08-06

  • avoid excessive centered layoutsin 55 of 586, across 12 files
  • bundle code into single HTML filein 54 of 586, across 14 files
  • Respect prefers-reduced-motion user settingsin 52 of 586, across 35 files
  • avoid purple gradientsin 51 of 586, across 11 files
  • avoid uniform rounded cornersin 51 of 586, across 11 files
  • avoid Inter fontin 51 of 586, across 11 files
  • edit generated files to develop artifactin 50 of 586, across 10 files
  • animate only transform and opacity propertiesin 43 of 586
  • Make touch targets at least 44x44 pixelsin 41 of 586, across 15 files
  • Ensure minimum color contrast of 4.5:1in 39 of 586, across 10 files
  • use tailwind cssin 39 of 586, across 24 files
  • Use SVG icons instead of emojisin 38 of 586, across 11 files

Said here and by no other author read

  • build dark themes as complete appearance systems
  • run the contrast ratio script for any claimed ratio
  • create a route surface and state coverage manifest before styling
  • verify every foreground and background pair computationally
  • implement theme switching without wrong-theme flash
  • model web preference as system light or dark

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.