User Preference Respect logo

User Preference Respect

Community
Owl-Listener
user-preference-respect

Design interfaces that detect and respond to system-level user preferences. Use when implementing dark mode, reduced motion, high contrast, text scaling, or any user preference that affects how the interface renders. Triggers on: user preference, system preference, prefers-reduced-motion, prefers-contrast, prefers-color-scheme, forced-colors, media query, user settings, system settings, accessibility settings, OS settings.

Overview

PublisherOwl-Listener
Repositoryinclusive-design-skills
Skill nameuser-preference-respect
Stars
108
Forks
28
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by Owl-Listener on GitHub. Read the source before you install it.

Installation

Install the User Preference Respect AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Owl-Listener/inclusive-design-skills/tree/main/adaptive-interfaces/skills/user-preference-respect
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Owl-Listener/inclusive-design-skills.git /tmp/inclusive-design-skills
mkdir -p .claude/skills
cp -r /tmp/inclusive-design-skills/adaptive-interfaces/skills/user-preference-respect .claude/skills/user-preference-respect
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable User Preference Respect in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads User Preference Respect on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so User Preference Respect is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

User Preference Respect

The operating system already knows what the user needs. Your job is to listen and respond. These preferences exist because people set them deliberately — ignoring them overrides the user's own accessibility decision.

The Preferences

prefers-reduced-motion

What it means: user experiences discomfort or harm from motion. What to do:

  • Disable all decorative animation
  • Replace slide/fade transitions with instant state changes
  • Keep essential motion (loading spinners) but simplify
  • Disable parallax, scroll-triggered animation, and auto-advance
  • Never override this preference

How to detect: @media (prefers-reduced-motion: reduce)

prefers-contrast

What it means: user needs stronger visual distinction. What to do:

  • Increase contrast beyond WCAG minimums
  • Replace subtle shadows and gradients with solid borders
  • Make focus indicators bolder and more visible
  • Remove transparency and blur effects
  • Increase border widths on interactive elements

How to detect: @media (prefers-contrast: more)

prefers-color-scheme

What it means: user prefers light or dark interface. What to do:

  • Provide genuine dark mode (not just inverted colours)
  • Ensure all content is legible in both modes
  • Test images, charts, icons, and illustrations in both
  • Don't use pure black (#000) on dark mode — use dark grey (#1a1a1a) for less eye strain
  • Remember: dark mode is not just aesthetic — it reduces eye fatigue and helps some people with light sensitivity

How to detect: @media (prefers-color-scheme: dark)

forced-colors

What it means: user has enabled Windows High Contrast or similar. What to do:

  • Don't fight the system colour override
  • Ensure borders and outlines define interactive elements (the system will strip your colours)
  • Use transparent borders that become visible in forced-colors mode
  • Test that all interactive elements remain distinguishable
  • Don't rely on background colour alone to indicate state

How to detect: @media (forced-colors: active)

prefers-reduced-transparency

What it means: user finds transparent elements hard to read. What to do:

  • Replace semi-transparent backgrounds with solid ones
  • Remove frosted glass / backdrop blur effects
  • Ensure overlays are fully opaque

How to detect: @media (prefers-reduced-transparency: reduce)

Implementation Principles

Progressive Enhancement

  • Build the accessible version first
  • Add motion, transparency, and visual flourishes as enhancements
  • When a preference is detected, you're removing the enhancement, not degrading the experience

Don't Ask — Detect

  • Don't make users configure accessibility settings in your app when the OS already has the setting
  • Detect and respond automatically
  • If you offer additional settings, they should layer on top of system preferences, not replace them

Test Every Preference

  • Test with each preference enabled individually
  • Test with combinations (reduced motion + high contrast + dark mode)
  • Verify that the interface is complete and usable in every state
  • Automated tests can check that media queries exist — manual testing verifies they work

Assessment Checklist

  • prefers-reduced-motion is detected and all decorative motion stops
  • prefers-contrast is detected and visual contrast increases
  • prefers-color-scheme is detected and theme switches
  • forced-colors mode doesn't break interactive elements
  • Combinations of preferences work together
  • No preference is overridden or ignored

Frequently asked questions

What does the User Preference Respect AI skill do?

Design interfaces that detect and respond to system-level user preferences. Use when implementing dark mode, reduced motion, high contrast, text scaling, or any user preference that affects how the interface renders. Triggers on: user preference, system preference, prefers-reduced-motion, prefers-contrast, prefers-color-scheme, forced-colors, media query, user settings, system settings, accessibility settings, OS settings.

Why use User Preference Respect on TypingMind?

Because you install it once and use it with any model. User Preference Respect is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install User Preference Respect in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Owl-Listener/inclusive-design-skills/tree/main/adaptive-interfaces/skills/user-preference-respect. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use User Preference Respect?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with User Preference Respect?

As many as you like. As long as a model supports skills, you can use User Preference Respect with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the User Preference Respect AI skill free?

Yes. It is published on GitHub by Owl-Listener under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇