Ai A11y Toolkit logo

Ai A11y Toolkit

Community
danarandall
ai-a11y-toolkit

WCAG 2.2 Level AA rules for designing and building digital experiences. Load this before generating, editing, or reviewing any user interface: screens and components in Figma, HTML and CSS, React or other component frameworks, Figma Make apps, and generated copy or alt text. Also load it when asked about contrast ratios, focus behavior, keyboard operation, alt text, heading structure, target size, reduced motion, form errors, live regions, reflow at 200 percent zoom, or whether a design system makes a product accessible.

Overview

Publisherdanarandall
Repositoryai-a11y-toolkit
Skill nameai-a11y-toolkit
Stars
3
Forks
0
Bundled files
13
LicenseCC-BY-4.0
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.

  • 13 bundled files

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

  • Open source

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

Installation

Install the Ai A11y Toolkit 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/danarandall/ai-a11y-toolkit/tree/main/skills/ai-a11y-toolkit
  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/danarandall/ai-a11y-toolkit.git /tmp/ai-a11y-toolkit
mkdir -p .claude/skills
cp -r /tmp/ai-a11y-toolkit/skills/ai-a11y-toolkit .claude/skills/ai-a11y-toolkit
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Ai A11y Toolkit 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 Ai A11y Toolkit 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 Ai A11y Toolkit 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.

AI A11y Toolkit

WCAG 2.2 Level AA rules for humans and AI agents building digital experiences.

Written by Dana Randall. Licensed CC BY 4.0, free to use commercially, adapt, and redistribute, with attribution. Current release and feedback: https://danarandall.com/ai-a11y-toolkit

How to use this skill

Apply the non-negotiables below to everything you produce. They are short because they are always on.

Then load the reference for the work in front of you. Do not load all of them.

Working onLoad
Screens, components, or a design file in Figmareferences/design.md
Choosing or checking colorsreferences/color.md
Animation, video, carousels, target size, zoom, reflowreferences/motion-media-targets.md
Images, icons, charts, illustrationsreferences/alt-text.md
Copy, labels, error text, generated contentreferences/content-and-language.md
HTML and CSSreferences/html-css.md
React or another component frameworkreferences/react.md
Testing, scanning, deciding whether it is donereferences/testing.md
Looking up a specific success criterionreferences/wcag-reference.md
Debugging a defect you just producedreferences/failure-patterns.md
Starting a project and setting its contextreferences/project-configuration.md

Before generating any interface code, load references/agent-directives.md. It is the full always and never list in directive form, and it is longer and more specific than the summary below.

The non-negotiables

These thirteen rules prevent most real-world accessibility failures. They apply to every role, every framework, every deliverable.

  1. Semantics before ARIA. Use the native HTML element that already has the right role and behavior. <button>, <a href>, <input>, <select>, <nav>, <table>. Only reach for ARIA when no native element exists. The first rule of ARIA is not to use ARIA.
  2. Everything works with a keyboard alone. Every interactive element is reachable by Tab, operable by Enter or Space, and escapable. No keyboard traps. (2.1.1, 2.1.2)
  3. Focus is always visible. Never remove focus indicators. Never write outline: none without a replacement of equal or better visibility. Focus must not be hidden behind sticky headers, footers, or overlays. (2.4.7, 2.4.11)
  4. Every control has an accessible name. Icon-only buttons, form fields, links, and inputs all need programmatic names. A visible <label> is preferred. If the control has visible text, the accessible name must include that text. (4.1.2, 3.3.2, 2.5.3)
  5. Every non-decorative image has meaningful, informative alt text. Decorative images get alt="". Never leave alt off entirely. Never use a filename, an internal SKU, or a color code. (1.1.1)
  6. Text contrast is at least 4.5:1. Large text, meaning 24px regular or 18.66px bold and above, may go to 3:1. UI components, icons, borders, focus rings, and chart elements need 3:1. (1.4.3, 1.4.11)
  7. Color is never the only signal. Errors, states, required fields, availability, chart series, and links inside text blocks all need a second cue: text, icon, underline, shape, or pattern. (1.4.1)
  8. Heading structure is logical and unskipped. One <h1> per page, descending order, no levels used for visual size. (1.3.1, 2.4.6)
  9. Text reflows at 200% zoom and 320px CSS width with nothing cut off, truncated, or covered. No fixed pixel heights on text containers, no sticky element covering content at large text sizes. (1.4.4, 1.4.10, 1.4.12)
  10. Motion is user-controlled by default. Honor prefers-reduced-motion automatically. Anything that auto-plays, auto-advances, moves, or scrolls for more than five seconds needs a persistent pause, stop, or hide control. Nothing flashes more than three times per second. (2.2.2, 2.3.1)
  11. Errors are identified in text, next to the field, and describe the fix. Not just a red border. Associate the message programmatically with the input. (3.3.1, 3.3.3)
  12. Interactive targets are at least 44x44 CSS pixels. 24x24 is the WCAG AA floor and only passes with adequate spacing. 44x44 is the house standard because it is what actually works for tremor, low vision, switch access, and one-handed mobile use. (2.5.8)
  13. Dynamic changes are announced. Validation, filter results, cart totals, toasts, and loading states need a live region or focus management. Silent updates do not exist for screen reader users. (4.1.3)

Working in Figma

A design file settles fewer criteria than most people expect. Measured against WCAG 2.2 A and AA, a Figma design kit determines 3 of 55 criteria, influences 14, and cannot affect the remaining 38. At Level A specifically it determines none of the 31.

The three it settles are text contrast, non-text contrast, and target size. Those are exactly the three worth getting right in the file, because they are cheap to fix in design and expensive to fix later.

This is a statement about a static file, not about design as a practice. Reading order, focus order, heading levels, error copy, alternative text, and state design are all decided during design work and then implemented in code. Deciding them early is what prevents rework. Annotate them in the file so they survive handoff. references/design.md covers how.

Never state or imply that using a design system makes a product accessible. It settles a small number of criteria and leaves the rest open.

Verification

Report what you implemented and what still needs human and screen reader testing. references/testing.md has the loop.

Never assert that generated output is accessible or compliant. Never suppress, ignore, or baseline a finding to make a scan pass. Automated checks find a minority of real barriers, so a clean scan is a starting point rather than a result.

When a request conflicts with these rules

Say so, name the criterion, and offer the closest option that satisfies it. Choose the more conservative, more semantic option when uncertain. Flag the ambiguity rather than guessing.

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 Ai A11y Toolkit AI skill do?

WCAG 2.2 Level AA rules for designing and building digital experiences. Load this before generating, editing, or reviewing any user interface: screens and components in Figma, HTML and CSS, React or other component frameworks, Figma Make apps, and generated copy or alt text. Also load it when asked about contrast ratios, focus behavior, keyboard operation, alt text, heading structure, target size, reduced motion, form errors, live regions, reflow at 200 percent zoom, or whether a design system makes a product accessible.

Why use Ai A11y Toolkit on TypingMind?

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

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/danarandall/ai-a11y-toolkit/tree/main/skills/ai-a11y-toolkit. 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 Ai A11y Toolkit?

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 Ai A11y Toolkit?

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

Is the Ai A11y Toolkit AI skill free?

Yes. It is published on GitHub by danarandall under the CC-BY-4.0 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 👇