Agent skill

Tsh Ensuring Accessibility

by TheSoftwareHouse in TheSoftwareHouse/copilot-collections

WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements.

MITAuto-check passedFrontend & Design

Install Tsh Ensuring Accessibility

skills CLI
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .claude/skills/tsh-ensuring-accessibility && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
tsh-ensuring-accessibility
GitHub stars
284
Token cost
~3.3k tokens
SKILL.md length
1,197 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements.

  • Works in 5 steps: Keyboard walkthrough → Screen reader verification → Zoom and reflow → …
  • Implementing accessible components
  • SKILL.md covers Accessibility Implementation…, ARIA Usage Quick Reference, Contrast Requirements and Accessibility Checklist, plus 2 more sections
  • Calls npx

What it does

Tsh Ensuring Accessibility is an agent skill from TheSoftwareHouse/copilot-collections. WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements. Use when implementing accessible components, auditing UI for accessibility issues, reviewing frontend code for a11y compliance, or building inclusive forms and interactive widgets.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Accessibility. The repository describes itself as: Opinionated AI-enabled workflows for product engineering. The licence is MIT.

When your agent uses it

  • Implementing accessible components
  • Auditing UI for accessibility issues
  • Reviewing frontend code for a11y compliance
  • Building inclusive forms and interactive widgets

Example prompts

  • “/tsh-ensuring-accessibility”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Keyboard walkthrough
  2. Screen reader verification
  3. Zoom and reflow
  4. Accessibility tree inspection
  5. Automated accessibility testing (agent-actionable)

What it can do on your machine

Read from SKILL.md and the folder at commit 2fbe51e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Tsh Ensuring Accessibility loads about 3.3k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,197 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from TheSoftwareHouse/copilot-collections at commit 2fbe51e, republished under its MIT licence (© TheSoftwareHouse). 1,197 words, ~3,286 tokens.

Download SKILL.mdSave it as .claude/skills/tsh-ensuring-accessibility/SKILL.md (or your agent's skills folder).
name
tsh-ensuring-accessibility
description
WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements. Use when implementing accessible components, auditing UI for accessibility issues, reviewing frontend code for a11y compliance, or building inclusive forms and interactive widgets.
user-invocable
false

Ensuring Accessibility

Provides WCAG 2.1 AA compliance patterns for building inclusive frontend interfaces with proper semantic markup, keyboard navigation, focus management, and screen reader support.

<principles>
<semantic-html-first>
Start with the correct HTML element. `<button>` for actions, `<a>` for navigation, `<nav>` for navigation regions, `<main>` for primary content. Native semantics are free, reliable, and require zero ARIA. Only reach for ARIA when HTML alone cannot convey the meaning.
</semantic-html-first>
<keyboard-is-mandatory>
Every interaction available to a mouse user must be available to a keyboard user. Tab, Escape, Enter, Space, Arrow keys — these are the vocabulary of keyboard interaction. Missing keyboard support is not a minor issue — it is a blocker for many users.
</keyboard-is-mandatory>
<never-color-alone>
Color must never be the sole means of conveying information. Error states need icons + text, not just red borders. Status indicators need labels, not just colored dots. Always pair visual indicators with non-visual alternatives.
</never-color-alone>
</principles>

Accessibility Implementation Process

Use the checklist below and track your progress:

Progress:
- [ ] Step 1: Choose semantic elements
- [ ] Step 2: Implement keyboard navigation
- [ ] Step 3: Add ARIA where HTML falls short
- [ ] Step 4: Verify color and contrast
- [ ] Step 5: Test with assistive technology

Step 1: Choose semantic elements

Select the correct HTML element for each piece of UI:

  • Interactive elements:
    • <button> — actions (submit, toggle, open menu)
    • <a href> — navigation to another page or location
    • <input>, <select>, <textarea> — form data entry
  • Landmarks:
    • <header> — page or section header
    • <nav> — navigation region
    • <main> — primary content (one per page)
    • <aside> — tangentially related content
    • <footer> — page or section footer
  • Structure:
    • <article> — self-contained composition
    • <section> — thematic grouping (must have a heading)
    • <details> / <summary> — native expand/collapse
  • Heading hierarchy:
    • One <h1> per page
    • Logical nesting: h2 → h3 → h4
    • Never skip levels (e.g., h2 → h4)
  • Lists:
    • <ul> / <ol> for collections of items
    • <dl> for key-value pairs (definition lists)

If the component library wraps these elements, verify the rendered HTML output matches expectations using browser devtools.

Step 2: Implement keyboard navigation

All interactive elements must be focusable. Native interactive elements (<button>, <a>, <input>) are focusable by default. Custom interactive elements need tabindex="0".

  • Tab order must follow visual and logical reading order. Avoid tabindex values greater than 0 — they create unpredictable focus sequences.

  • Custom interactive components need explicit keyboard handlers:

    ComponentKeyboard behavior
    ButtonEnter + Space to activate
    MenuArrow keys to navigate items, Escape to close, Enter to select
    TabsLeft/Right arrows to switch tabs, Tab to leave the tab group
    Dialog / ModalTab trapped inside, Escape to close
    AccordionEnter/Space to expand/collapse, Arrow keys between headers
    ComboboxArrow keys to navigate options, Enter to select, Escape to close
  • Focus visibility — never remove the focus outline (outline: none) without providing a visible replacement. Custom focus styles must have at least 3:1 contrast against adjacent colors.

  • Programmatic focus management — move focus when context changes:

    • Modal opens → focus the first focusable element inside
    • Modal closes → return focus to the element that triggered it
    • Route change → focus the new page heading or main content
    • Dynamic content added → focus the new content or announce it via aria-live

Step 3: Add ARIA where HTML falls short

Rule: prefer native HTML semantics. Only add ARIA when HTML cannot express the pattern.

Common patterns requiring ARIA:

  • Icon-only buttons: Add aria-label="Close" (or the appropriate action description).
  • Expandable sections: aria-expanded="true" or aria-expanded="false" on the trigger element.
  • Live updates: aria-live="polite" for non-urgent updates (data refreshed, filter applied). aria-live="assertive" for urgent updates (session expiring, critical error).
  • Dialogs: aria-modal="true", aria-labelledby pointing to the dialog title, aria-describedby pointing to the dialog description.
  • Form errors:
    • aria-invalid="true" on the invalid field
    • aria-describedby pointing to the error message element
    • Error container with role="alert" or aria-live="assertive" for immediate announcement
  • Loading states: Container with role="status" for the loading message (e.g., "Loading results..."). Note: role="status" implicitly sets aria-live="polite" — no need to add both.
  • Current page in navigation: aria-current="page" on the active nav link.
  • Progress indicators: role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax.

Never do:

  • role="button" on a <div> — use <button> instead
  • ARIA that duplicates native semantics (e.g., role="heading" on an <h2>)
  • aria-label on non-interactive, non-landmark elements (screen readers may ignore it)

Step 4: Verify color and contrast

ElementMinimum contrast ratioExamples
Normal text (< 24px)4.5:1Body text, labels, captions, small links
Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold)3:1Headings, large labels, prominent links
Interactive component boundaries3:1Button borders, input outlines, toggle tracks
Non-text content conveying information3:1Status icons, chart segments, badges

Additional rules:

  • Never convey information through color alone. Error states need an icon or text label in addition to color. Status indicators need a text label, not just a colored dot.
  • Ensure focus indicators meet 3:1 contrast against the background.
  • Test both light and dark themes if the application supports them.
  • Verify disabled states are visually distinguishable but don't need to meet contrast minimums (WCAG exempts disabled controls).
Show full SKILL.md (437 more words)Show less

Step 5: Test with assistive technology

Run through these verification steps:

  1. Keyboard walkthrough:

    • Tab through the entire page. Is every interactive element reachable?
    • Is the focus order logical (matches visual layout)?
    • Is focus always visible?
    • Can you dismiss overlays with Escape? Navigate menus with arrows?
  2. Screen reader verification:

    • Do headings, landmarks, buttons, links, and form fields announce correctly?
    • Are images described (alt text) or hidden (alt="" for decorative)?
    • Do dynamic changes announce via live regions?
    • Do form errors announce when they appear?
  3. Zoom and reflow:

    • At 200% zoom, is text resizable without loss of content or functionality? (SC 1.4.4)
    • At 400% zoom (320px viewport width), does content reflow without horizontal scrolling? (SC 1.4.10)
    • Are touch targets generously sized? (44×44 CSS pixels recommended as best practice — not a WCAG 2.1 AA requirement)
  4. Accessibility tree inspection:

    • Open browser devtools → Accessibility tab.
    • Verify the semantic structure matches the intended component roles.
    • Check that ARIA attributes are correctly applied and not conflicting.
  5. Automated accessibility testing (agent-actionable):

    • Run axe-core CLI against the page: npx @axe-core/cli <URL>.
    • If the URL is not known, ask the user for the URL before running.
    • Parse the output and group violations by impact level (critical, serious, moderate, minor).
    • For each violation, report: rule ID, impact, affected elements, and recommended fix.
    • Re-run after fixes to confirm violations are resolved.

ARIA Usage Quick Reference

NeedHTML SolutionARIA Fallback (only if HTML insufficient)
Button<button>role="button" + tabindex="0" + key handlers
Link<a href>role="link" (rare)
Navigation region<nav>role="navigation"
Main content<main>role="main"
Dialog<dialog>role="dialog" + aria-modal="true"
Live update—aria-live="polite" on container
Expand/collapse<details> / <summary>aria-expanded on trigger
Icon-only button—aria-label on the button
Form error—aria-invalid + aria-describedby
Current page—aria-current="page" on nav link
Progress<progress>role="progressbar" + aria-valuenow

Contrast Requirements

ElementMinimum ratioExample
Normal text (< 24px)4.5:1Body text, labels, captions
Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold)3:1Headings, large labels
Interactive component boundaries3:1Button borders, input outlines
Non-text (icons conveying info)3:1Status icons, chart segments

Accessibility Checklist

Accessibility:
- [ ] Semantic HTML elements used (button, nav, main, etc.)
- [ ] One h1 per page, logical heading hierarchy (no skipped levels)
- [ ] All interactive elements keyboard-navigable
- [ ] Focus visible on every interactive element
- [ ] Tab order follows visual/logical layout
- [ ] Modal/dialog traps focus and returns on close
- [ ] Icon-only buttons have aria-label
- [ ] Form fields have visible labels (not placeholder-only)
- [ ] Form errors announced to screen readers (role="alert" or aria-live)
- [ ] Error states use icon/text in addition to color
- [ ] Color contrast meets 4.5:1 (normal text) / 3:1 (large text)
- [ ] ARIA landmarks present (header, main, nav, footer)
- [ ] Text resizable to 200% without loss of content (SC 1.4.4)
- [ ] Content reflows at 400% zoom / 320px width without horizontal scroll (SC 1.4.10)

RTL / Bidirectional Text Support

RuleDescription
Use logical CSS propertiesmargin-inline-start instead of margin-left; padding-inline-end instead of padding-right
Let layout engine handle directionSet dir="rtl" on root; avoid manual transforms for standard layout
Icons may need flippingDirectional icons (arrows, progress bars) may need transform: scaleX(-1) in RTL
Test both directionsVerify layout, alignment, and text truncation in both LTR and RTL

Connected Skills

  • tsh-implementing-frontend — for component composition patterns that support accessible structure
  • tsh-implementing-forms — for accessible form field patterns, labels, and error announcements
  • tsh-reviewing-frontend — for accessibility spot-checks during code review
  • tsh-optimizing-frontend — for performance optimizations that also impact accessibility (loading speed, interaction responsiveness)

© TheSoftwareHouse, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/tsh-ensuring-accessibility of TheSoftwareHouse/copilot-collections.

Open the folder on GitHubat commit 2fbe51e

Compare with similar skills

Tsh Ensuring Accessibility next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Tsh Ensuring Accessibility compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tsh Ensuring Accessibility this skillTheSoftwareHouse/copilot-collections284—~3.3kAutomated safety check: PassMIT
Web Interface Guidelines Reviewervercel-labs/openreview1.7k98 repos~308Automated safety check: PassNone
Accessibility Reviewmarkmead/hyperui12k1 repos~1.1kAutomated safety check: PassMIT
Web Animation DesignbaptisteArno/typebot.io11k2 repos~2.7kAutomated safety check: PassCustom licence
Accessibility Fixeribelick/ui-skills9.5k4 repos~1.2kAutomated safety check: PassMIT
Wcag Audit PatternsvmDeshpande/ai-agent-automation17811 repos~610Automated safety check: PassApache-2.0

Similar skills

  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 98 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Accessibility Review

    markmead/hyperui

    Run a WCAG 2.1 AA accessibility audit on a design or page. An agent skill from markmead/hyperui.

    12k GitHub starsUsed in 1 repo~1.1k tokens
    Frontend & DesignAuto-check passed
  • Web Animation Design

    baptisteArno/typebot.io

    Guides easing, timing and animation choices for UI motion, based on a web animation course, and reviews existing animations in a before-and-after table.

    11k GitHub starsUsed in 2 repos~2.7k tokens
    Frontend & DesignAuto-check passed
  • Accessibility Fixer

    ibelick/ui-skills

    Audits and fixes HTML accessibility problems such as ARIA labels, keyboard navigation, focus management, contrast and form errors with minimal changes.

    9.5k GitHub starsUsed in 4 repos~1.2k tokens
    Frontend & DesignAuto-check passed
  • Wcag Audit Patterns

    vmDeshpande/ai-agent-automation

    Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance.

    178 GitHub starsUsed in 11 repos~610 tokens
    Frontend & DesignAuto-check passed
  • Baseline UI

    ibelick/ui-skills

    Applies a fixed set of UI rules for stack, components, interaction, animation, typography and layout, or reviews a file against them with concrete fixes.

    9.5k GitHub starsUsed in 8 repos~855 tokens
    Frontend & DesignAuto-check passed

More from TheSoftwareHouse/copilot-collections

All 21 skills in this repo
  • Tsh Creating Skills

    TheSoftwareHouse/copilot-collections

    Create new skills (SKILL.md) for GitHub Copilot. An agent skill from TheSoftwareHouse/copilot-collections.

    284 GitHub stars~4.1k tokensUpdated 3 days ago
    Auto-check passed
  • Tsh Implementing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend component patterns, composition, design token integration, barrel file organization, error handling, and Figma-to-code workflow.

    284 GitHub stars~2.6k tokensUpdated 3 days ago
    Auto-check passed
  • Tsh Implementing Terraform Modules

    TheSoftwareHouse/copilot-collections

    Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices.

    284 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed
  • Tsh Optimizing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend rendering optimization, code splitting, memoization strategies, bundle size control, asset optimization, and memory management.

    284 GitHub stars~4.1k tokensUpdated 3 days ago
    Auto-check passed
  • Tsh Reviewing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend-specific code review criteria, component anti-patterns, hooks quality, rendering correctness, accessibility and performance spot-checks, and module organization issues.

    284 GitHub stars~4.4k tokensUpdated 3 days ago
    Auto-check passed
  • Tsh Writing Hooks

    TheSoftwareHouse/copilot-collections

    Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies.

    284 GitHub stars~3k tokensUpdated 3 days ago
    Auto-check passed

Questions about Tsh Ensuring Accessibility

What does Tsh Ensuring Accessibility do?

WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements. Tsh Ensuring Accessibility is an agent skill from TheSoftwareHouse/copilot-collections.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements.

When should I use Tsh Ensuring Accessibility?

Tsh Ensuring Accessibility fits situations like: implementing accessible components; auditing UI for accessibility issues; reviewing frontend code for a11y compliance; building inclusive forms and interactive widgets.

How do I install Tsh Ensuring Accessibility in Claude Code?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a claude-code`. Or copy the skill folder (.github/skills/tsh-ensuring-accessibility in TheSoftwareHouse/copilot-collections) into .claude/skills/tsh-ensuring-accessibility in your project. Claude Code loads it when a task matches its description.

How do I install Tsh Ensuring Accessibility in Codex?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a codex`. Or copy the skill folder (.github/skills/tsh-ensuring-accessibility in TheSoftwareHouse/copilot-collections) into .agents/skills/tsh-ensuring-accessibility in your project. Codex loads it when a task matches its description.

Can I use Tsh Ensuring Accessibility in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tsh-ensuring-accessibility, .gemini/skills/tsh-ensuring-accessibility, .github/skills/tsh-ensuring-accessibility and .opencode/skills/tsh-ensuring-accessibility in your project.

What does Tsh Ensuring Accessibility need to run?

Going by SKILL.md and its folder, Tsh Ensuring Accessibility needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Tsh Ensuring Accessibility access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Tsh Ensuring Accessibility safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Tsh Ensuring Accessibility use?

Tsh Ensuring Accessibility is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tsh Ensuring Accessibility use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Tsh Ensuring Accessibility?

Skills that share tags, products or a category with Tsh Ensuring Accessibility: Web Interface Guidelines Reviewer (vercel-labs/openreview, 1.7k stars), Accessibility Review (markmead/hyperui, 12k stars), Web Animation Design (baptisteArno/typebot.io, 11k stars) and Accessibility Fixer (ibelick/ui-skills, 9.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tsh Ensuring Accessibility?

TheSoftwareHouse (a GitHub organization) maintains it in TheSoftwareHouse/copilot-collections, which has 284 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 5, 2026.

Source: TheSoftwareHouse/copilot-collections on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.