mcpField
U
unicode-color-accessibility

unicode-color-accessibility

github.com/josiahsiegelDesign & UI5959 installsUpdated 19w ago
Repository

About unicode-color-accessibility

A design skill for building terminal output that remains readable, accessible, and visually correct across Unicode, colors, fonts, and assistive technologies. It gives practical rules for text measurement, color use, and non-TUI alternatives.

Key features

  1. 01Unicode width and grapheme handling
  2. 02ANSI-aware text measurement
  3. 03Semantic color and no-color modes
  4. 04ASCII fallbacks for visual elements
  5. 05Keyboard and screen-reader alternatives

Use cases

  1. 01Aligning terminal tables containing emoji or CJK text
  2. 02Designing color output for light and dark themes
  3. 03Providing accessible non-TUI command flows

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill unicode-color-accessibility

After installing, type/unicode-color-accessibilityin Claude Code to confirm it loaded.

Bundled filesreferences/accessibility-fallbacks.mdreferences/text-measurement.md

Details

From the project README

Unicode, Color, Accessibility, and Non-TUI Fallbacks

Use this skill when terminal output must be visually correct, readable, inclusive, and robust across fonts, locales, themes, and assistive technologies.

Text correctness rules

  • Display width is not byte length, code point count, or user-perceived character count.
  • Cursor movement and deletion should operate on grapheme clusters.
  • Layout should measure printable text after stripping ANSI control sequences.
  • Double-width characters, combining marks, emoji sequences, variation selectors, and zero-width joiners must be tested.
  • Treat ambiguous East Asian width as narrow by default unless the target environment explicitly differs.

Visual design rules

  • Use semantic roles: error, warning, success, info, muted, selected, focused, disabled.
  • Do not encode meaning by color alone; pair color with text, shape, icon, or position.
  • Provide ASCII fallback for box drawing, braille charts, block elements, emoji, and private-use icons.
  • Avoid assuming Nerd Fonts or patched fonts.
  • Support light and dark backgrounds, 16-color, 256-color, truecolor, and no-color modes.

Color preferences

Respect user and environment preferences:

  • NO_COLOR disables non-essential color.
  • CLICOLOR, CLICOLOR_FORCE, and FORCE_COLOR may force color depending on ecosystem conventions.
  • TERM=dumb, non-TTY output, and CI usually imply plain output unless overridden.
  • Provide explicit flags such as --color=auto|always|never, --plain, and --ascii.

Accessibility requirements

  • All functionality must be keyboard-operable.
  • Focus indicators must be visible without relying on color alone.
  • Avoid flashing more than three times per second.
  • Allow spinner, animation, and live-region suppression for reduced motion, logs, and CI.
  • Provide screen-reader friendly alternatives: plain prompts, line-oriented commands, --json, --plain, or documented stdin/stdout workflows.
  • Use meaningful labels, stable ordering, and visible status messages.

Failure modes

SymptomLikely causeFix
Misaligned tablesbyte length or ANSI counted as visible widthuse ANSI-aware wcwidth/grapheme measurement
Cursor splits emojimovement by code pointmove by grapheme cluster
Borders look brokenfont or width mismatchprovide ASCII mode and test common fonts
Error only shown in redcolor-only meaningadd text/icon/label and contrast check
Screen reader unusablefull-screen repaint gridprovide non-TUI mode and line-oriented flows

Reference files

  • references/text-measurement.md - Unicode width, graphemes, emoji, BiDi, and ANSI measurement.
  • references/accessibility-fallbacks.md - Color policy, screen-reader alternatives, and inclusive UX checklist.

Comments

Markdown supported