Accessibility logo

Accessibility

Community
yonatangross
accessibility

Accessibility patterns for WCAG 2.2 compliance, keyboard focus management, React Aria component patterns, cognitive inclusion, native HTML-first philosophy, and user preference honoring. Use when implementing screen reader support, keyboard navigation, ARIA patterns, focus traps, accessible component libraries, reduced motion, or cognitive accessibility.

Overview

Publisheryonatangross
Repositoryorchestkit
Skill nameaccessibility
Stars
298
Forks
35
Bundled files
20
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.

  • 20 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by yonatangross on GitHub. Read the source before you install it.

Installation

Install the Accessibility 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/yonatangross/orchestkit/tree/main/plugins/ork/skills/accessibility
  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/yonatangross/orchestkit.git /tmp/orchestkit
mkdir -p .claude/skills
cp -r /tmp/orchestkit/plugins/ork/skills/accessibility .claude/skills/accessibility
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Accessibility 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 Accessibility 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 Accessibility 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.

Accessibility

Comprehensive patterns for building accessible web applications: WCAG 2.2 AA compliance, keyboard focus management, React Aria component patterns, native HTML-first philosophy, cognitive inclusion, and user preference honoring. Each category has individual rule files in rules/ loaded on-demand.

Quick Reference

CategoryRulesImpactWhen to Use
WCAG Compliance3CRITICALColor contrast, semantic HTML, automated testing
POUR Exit Criteria1CRITICALFalsifiable pass/fail thresholds for each WCAG 2.2 AA criterion
Static Anti-Patterns1HIGHGrep-able patterns detectable without a browser
Focus Management1HIGHKeyboard navigation; trap/restoration mechanics live upstream
React Aria2HIGHAccessible components and form hooks; overlay APIs live upstream
Modern Web Accessibility2CRITICAL/HIGHNative HTML first, user preferences; cognitive ceilings in references/ork-delta.md

Total: 10 rules across 6 categories

Quick Start

tsx
// Semantic HTML with ARIA
<main>
  <article>
    <header><h1>Page Title</h1></header>
    <section aria-labelledby="features-heading">
      <h2 id="features-heading">Features</h2>
    </section>
  </article>
</main>
tsx
// Focus trap with React Aria
import { FocusScope } from 'react-aria';

<FocusScope contain restoreFocus autoFocus>
  <div role="dialog" aria-modal="true">
    {children}
  </div>
</FocusScope>

WCAG Compliance

WCAG 2.2 AA implementation for inclusive, legally compliant web applications.

RuleFileKey Pattern
Color Contrastrules/wcag-color-contrast.md4.5:1 text, 3:1 UI components, focus indicators
Semantic HTMLrules/wcag-semantic-html.mdLandmarks, headings, ARIA labels, form structure
Testingrules/wcag-testing.mdaxe-core, Playwright a11y, screen reader testing

POUR Exit Criteria

Concrete pass/fail thresholds for each WCAG 2.2 AA criterion — replaces vague "meets requirements" checks.

RuleFileKey Pattern
POUR Exit Criteriarules/pour-exit-criteria.mdFalsifiable checklist: image alt, contrast ratios, focus indicators, touch targets, ARIA states

Static Anti-Patterns

Grep-able anti-patterns detectable via static analysis or code review — no browser needed.

RuleFileKey Pattern
A11y Anti-Patterns (Static)rules/a11y-antipatterns-static.mdFocus removal, missing labels, autoplay, icon-only buttons, div-click handlers

Focus Management

Keyboard focus management patterns for accessible interactive widgets.

RuleFileKey Pattern
Keyboard Navigationrules/focus-keyboard-nav.mdRoving tabindex, skip links, arrow keys

Focus trap and restoration mechanics are upstream's job: use React Aria <FocusScope contain restoreFocus autoFocus> (see Upstream coverage). When React Aria is unavailable, copy scripts/focus-trap-template.tsx; the house rules for both live in references/ork-delta.md.

React Aria

Adobe React Aria hooks for building WCAG-compliant interactive UI.

RuleFileKey Pattern
Componentsrules/aria-components.mduseButton, useDialog, useMenu, FocusScope
Formsrules/aria-forms.mduseComboBox, useTextField, useListBox

Overlay hook APIs (useModalOverlay, useTooltip, usePopover) are documented upstream (see Upstream coverage); the house overlay recipe (FocusScope plus shared motion presets) is in references/ork-delta.md.

Modern Web Accessibility

2026 best practices: native HTML first, cognitive inclusion, and honoring user preferences.

RuleFileKey Pattern
Native HTML Firstrules/wcag-native-html-first.md<dialog>, <details>, native over custom ARIA
User Preferencesrules/wcag-user-preferences.mdprefers-reduced-motion, forced-colors, prefers-contrast, zoom

Cognitive inclusion (ADHD/autism/dyslexia support) is covered upstream by W3C COGA (see Upstream coverage); the house cognitive-load ceilings (notification cap, nav-item cap, reading-level targets) are in references/ork-delta.md.

Key Decisions

DecisionRecommendation
Conformance levelWCAG 2.2 AA (legal standard: ADA, Section 508)
Contrast ratio4.5:1 normal text, 3:1 large text and UI components
Target size24px min (WCAG 2.5.8), 44px for touch
Focus indicator3px solid outline, 3:1 contrast
Component libraryReact Aria hooks for control, react-aria-components for speed
State managementreact-stately hooks (designed for a11y)
Focus managementFocusScope for modals, roving tabindex for widgets
Testingjest-axe (unit) + Playwright axe-core (E2E)

Anti-Patterns (FORBIDDEN)

  • Div soup: Using <div> instead of semantic elements (<nav>, <main>, <article>)
  • Color-only information: Status indicated only by color without icon/text
  • Missing labels: Form inputs without associated <label> or aria-label
  • Keyboard traps: Focus that cannot escape without Escape key
  • Removing focus outline: outline: none without replacement indicator
  • Positive tabindex: Using tabindex > 0 (disrupts natural order)
  • Div with onClick: Using <div onClick> instead of <button> or useButton
  • Manual focus in modals: Using useEffect + ref.focus() instead of FocusScope
  • Auto-playing media: Audio/video that plays without user action
  • ARIA overuse: Using ARIA when semantic HTML suffices

Upstream coverage (do not restate)

Vendor tutorials, API references, and criterion walkthroughs removed in the 2026-07-31 wrap-plus-delta thinning. Consult the first-party source; only the ork delta (floors, scars, house decisions) lives in references/ork-delta.md.

TopicFirst-party source
WCAG 2.2 success-criterion walkthroughs and audit checklistsWCAG 2.2 quick reference and WCAG 2.2 spec
ARIA widget patterns and keyboard interaction modelsWAI-ARIA Authoring Practices Guide
React Aria hook APIs (useButton, useMenu, useComboBox, useModalOverlay, useTooltip, usePopover), component checklists, worked examplesReact Aria docs
Focus trap, focus restoration, roving tabindex, and skip-link algorithmsReact Aria FocusScope and APG patterns
Cognitive accessibility guidance (COGA)W3C Making Content Usable
Screen reader testing walkthroughs (NVDA, JAWS, VoiceOver, TalkBack)WebAIM screen reader testing

Detailed Documentation

ResourceDescription
scripts/Templates: accessible form, focus trap, React Aria components
references/ork-delta.mdOrk-specific floors, scars, and house decisions (cognitive ceilings, overlay recipe, canonical focus-trap selector)
references/ux-thresholds-quick.mdUI/UX thresholds quick reference: contrast, touch targets, cognitive load, typography, forms
examples/wcag-examples.mdComplete accessible form, modal, and navigation examples

Related Skills

  • ork:testing-e2e - E2E testing patterns including accessibility testing
  • design-system-starter - Accessible component library patterns
  • ork:i18n-date-patterns - RTL layout and locale-aware formatting
  • motion-animation-patterns - Reduced motion and animation accessibility

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Accessibility AI skill do?

Accessibility patterns for WCAG 2.2 compliance, keyboard focus management, React Aria component patterns, cognitive inclusion, native HTML-first philosophy, and user preference honoring. Use when implementing screen reader support, keyboard navigation, ARIA patterns, focus traps, accessible component libraries, reduced motion, or cognitive accessibility.

Why use Accessibility on TypingMind?

Because you install it once and use it with any model. Accessibility 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 Accessibility in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/yonatangross/orchestkit/tree/main/plugins/ork/skills/accessibility. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Accessibility?

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 Accessibility?

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

Is the Accessibility AI skill free?

Yes. It is published on GitHub by yonatangross 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 👇