Web Interface Guidelines Reviewer
vercel-labs/openreview
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…
WCAG 2.1 AA compliance, semantic HTML, ARIA patterns, keyboard navigation, focus management, screen reader support, and color contrast requirements.
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .claude/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibilityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .agents/skills/tsh-ensuring-accessibility && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .agents/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .cursor/skills/tsh-ensuring-accessibility && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .cursor/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/TheSoftwareHouse/copilot-collections.git --path .github/skills/tsh-ensuring-accessibility--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .gemini/skills/tsh-ensuring-accessibility && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .gemini/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibilityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .github/skills/tsh-ensuring-accessibility && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .github/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-ensuring-accessibility -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TheSoftwareHouse/copilot-collections tsh-ensuring-accessibility --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/tsh-ensuring-accessibility .opencode/skills/tsh-ensuring-accessibility && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tsh-ensuring-accessibility" agent skill from https://github.com/TheSoftwareHouse/copilot-collections/tree/main/.github/skills/tsh-ensuring-accessibility into .opencode/skills/tsh-ensuring-accessibility/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tsh-ensuring-accessibility", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tsh-ensuring-accessibilityWCAG 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. 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.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2fbe51e. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from TheSoftwareHouse/copilot-collections at commit 2fbe51e, republished under its MIT licence (© TheSoftwareHouse). 1,197 words, ~3,286 tokens.
.claude/skills/tsh-ensuring-accessibility/SKILL.md (or your agent's skills folder).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>
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 technologyStep 1: Choose semantic elements
Select the correct HTML element for each piece of UI:
<button> — actions (submit, toggle, open menu)<a href> — navigation to another page or location<input>, <select>, <textarea> — form data entry<header> — page or section header<nav> — navigation region<main> — primary content (one per page)<aside> — tangentially related content<footer> — page or section footer<article> — self-contained composition<section> — thematic grouping (must have a heading)<details> / <summary> — native expand/collapse<h1> per pageh2 → h3 → h4h2 → h4)<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:
| Component | Keyboard behavior |
|---|---|
| Button | Enter + Space to activate |
| Menu | Arrow keys to navigate items, Escape to close, Enter to select |
| Tabs | Left/Right arrows to switch tabs, Tab to leave the tab group |
| Dialog / Modal | Tab trapped inside, Escape to close |
| Accordion | Enter/Space to expand/collapse, Arrow keys between headers |
| Combobox | Arrow 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:
aria-liveStep 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:
aria-label="Close" (or the appropriate action description).aria-expanded="true" or aria-expanded="false" on the trigger element.aria-live="polite" for non-urgent updates (data refreshed, filter applied). aria-live="assertive" for urgent updates (session expiring, critical error).aria-modal="true", aria-labelledby pointing to the dialog title, aria-describedby pointing to the dialog description.aria-invalid="true" on the invalid fieldaria-describedby pointing to the error message elementrole="alert" or aria-live="assertive" for immediate announcementrole="status" for the loading message (e.g., "Loading results..."). Note: role="status" implicitly sets aria-live="polite" — no need to add both.aria-current="page" on the active nav link.role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax.Never do:
role="button" on a <div> — use <button> insteadrole="heading" on an <h2>)aria-label on non-interactive, non-landmark elements (screen readers may ignore it)Step 4: Verify color and contrast
| Element | Minimum contrast ratio | Examples |
|---|---|---|
| Normal text (< 24px) | 4.5:1 | Body text, labels, captions, small links |
| Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold) | 3:1 | Headings, large labels, prominent links |
| Interactive component boundaries | 3:1 | Button borders, input outlines, toggle tracks |
| Non-text content conveying information | 3:1 | Status icons, chart segments, badges |
Additional rules:
Step 5: Test with assistive technology
Run through these verification steps:
Keyboard walkthrough:
Screen reader verification:
alt="" for decorative)?Zoom and reflow:
Accessibility tree inspection:
Automated accessibility testing (agent-actionable):
npx @axe-core/cli <URL>.| Need | HTML Solution | ARIA 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 |
| Element | Minimum ratio | Example |
|---|---|---|
| Normal text (< 24px) | 4.5:1 | Body text, labels, captions |
| Large text (≥ 24px / 18pt, or ≥ 19px / 14pt bold) | 3:1 | Headings, large labels |
| Interactive component boundaries | 3:1 | Button borders, input outlines |
| Non-text (icons conveying info) | 3:1 | Status icons, chart segments |
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)| Rule | Description |
|---|---|
| Use logical CSS properties | margin-inline-start instead of margin-left; padding-inline-end instead of padding-right |
| Let layout engine handle direction | Set dir="rtl" on root; avoid manual transforms for standard layout |
| Icons may need flipping | Directional icons (arrows, progress bars) may need transform: scaleX(-1) in RTL |
| Test both directions | Verify layout, alignment, and text truncation in both LTR and RTL |
tsh-implementing-frontend — for component composition patterns that support accessible structuretsh-implementing-forms — for accessible form field patterns, labels, and error announcementstsh-reviewing-frontend — for accessibility spot-checks during code reviewtsh-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
Just SKILL.md in .github/skills/tsh-ensuring-accessibility of TheSoftwareHouse/copilot-collections.
Open the folder on GitHubat commit 2fbe51e
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tsh Ensuring Accessibility this skillTheSoftwareHouse/copilot-collections | 284 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Web Interface Guidelines Reviewervercel-labs/openreview | 1.7k | 98 repos | ~308 | Automated safety check: Pass | None | |
| Accessibility Reviewmarkmead/hyperui | 12k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Web Animation DesignbaptisteArno/typebot.io | 11k | 2 repos | ~2.7k | Automated safety check: Pass | Custom licence | |
| Accessibility Fixeribelick/ui-skills | 9.5k | 4 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Wcag Audit PatternsvmDeshpande/ai-agent-automation | 178 | 11 repos | ~610 | Automated safety check: Pass | Apache-2.0 |
vercel-labs/openreview
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…
markmead/hyperui
Run a WCAG 2.1 AA accessibility audit on a design or page. An agent skill from markmead/hyperui.
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.
ibelick/ui-skills
Audits and fixes HTML accessibility problems such as ARIA labels, keyboard navigation, focus management, contrast and form errors with minimal changes.
vmDeshpande/ai-agent-automation
Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance.
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.
TheSoftwareHouse/copilot-collections
Create new skills (SKILL.md) for GitHub Copilot. An agent skill from TheSoftwareHouse/copilot-collections.
TheSoftwareHouse/copilot-collections
Frontend component patterns, composition, design token integration, barrel file organization, error handling, and Figma-to-code workflow.
TheSoftwareHouse/copilot-collections
Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices.
TheSoftwareHouse/copilot-collections
Frontend rendering optimization, code splitting, memoization strategies, bundle size control, asset optimization, and memory management.
TheSoftwareHouse/copilot-collections
Frontend-specific code review criteria, component anti-patterns, hooks quality, rendering correctness, accessibility and performance spot-checks, and module organization issues.
TheSoftwareHouse/copilot-collections
Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies.
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Tsh Ensuring Accessibility needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
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.
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.
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.
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.
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.
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.