fixing-accessibility

ibelick/ui-skills · updated Apr 8, 2026

$npx skills add https://github.com/ibelick/ui-skills --skill fixing-accessibility
0 commentsdiscussion
summary

Audit and fix HTML accessibility issues across ARIA labels, keyboard navigation, focus management, and WCAG compliance.

  • Covers nine rule categories prioritized by impact: accessible names, keyboard access, focus management, semantics, forms and errors, announcements, contrast, media, and tool boundaries
  • Provides targeted fixes for common patterns like icon-only buttons, form error linking, and focus trapping in modals
  • Includes quick reference for when to apply (interactive controls,
skill.md

fixing-accessibility

Fix accessibility issues.

how to use

  • /fixing-accessibility Apply these constraints to any UI work in this conversation.

  • /fixing-accessibility <file> Review the file against all rules below and report:

    • violations (quote the exact line or snippet)
    • why it matters (one short sentence)
    • a concrete fix (code-level suggestion)

Do not rewrite large parts of the UI. Prefer minimal, targeted fixes.

when to apply

Reference these guidelines when:

  • adding or changing buttons, links, inputs, menus, dialogs, tabs, dropdowns
  • building forms, validation, error states, helper text
  • implementing keyboard shortcuts or custom interactions
  • working on focus states, focus trapping, or modal behavior
  • rendering icon-only controls
  • adding hover-only interactions or hidden content

rule categories by priority

priority category impact
1 accessible names critical
2 keyboard access critical
3 focus and dialogs critical
4 semantics high
5 forms and errors high
6 announcements medium-high
7 contrast and states medium
8 media and motion low-medium
9 tool boundaries critical

quick reference

1. accessible names (critical)

  • every interactive control must have an accessible name
  • icon-only buttons must have aria-label or aria-labelledby
  • every input, select, and textarea must be labeled
  • links must have meaningful text (no “click here”)
  • decorative icons must be aria-hidden

2. keyboard access (critical)

  • do not use div or span as buttons without full keyboard support
  • all interactive elements must be reachable by Tab
  • focus must be visible for keyboard users
  • do not use tabindex greater than 0
  • Escape must close dialogs or overlays when applicable

3. focus and dialogs (critical)

  • modals must trap focus while open
  • restore focus to the trigger on close
  • set initial focus inside dialogs
  • opening a dialog should not scroll the page unexpectedly

4. semantics (high)

  • prefer native elements (button, a, input) over role-based hacks
  • if a role is used, required aria attributes must be present
  • lists must use ul or ol with li
  • do not skip heading levels
  • tables must use th for headers when applicable

5. forms and errors (high)

  • errors must be linked to fields using aria-describedby
  • required fields must be announced
  • invalid fields must set aria-invalid
  • helper text must be associated with inputs
  • disabled submit actions must explain why

6. announcements (medium-high)

  • critical form errors should use aria-live
  • loading states should use aria-busy or status text
  • toasts must not be the only way to convey critical information
  • expandable controls must use aria-expanded and aria-controls

7. contrast and states (medium)

  • ensure sufficient contrast for text and icons
  • hover-only interactions must have keyboard equivalents
  • disabled states must not rely on color alone
  • do not remove focus outlines without a visible replacement

8. media and motion (low-medium)

  • images must have correct alt text (meaningful or empty)
  • videos with speech should provide captions when relevant
  • respect prefers-reduced-motion for non-essential motion
  • avoid autoplaying media with sound

9. tool boundaries (critical)

  • prefer minimal changes, do not refactor unrelated code
  • do not add aria when native semantics already solve the problem
  • do not migrate UI libraries unless requested

common fixes

<!-- icon-only button: add aria-label -->
<!-- before --> <button><svg>...</svg></button>
<!-- after -->  <button aria-label="Close"><svg aria-hidden="true">...</svg></button>

<!-- div as button: use native element -->
<!-- before --> <div onclick="save()">Save</div>
<!-- after -->  <button onclick="save()">Save</button>

<!-- form error: link with aria-describedby -->
<!-- before --> <input id="email" /> <span>Invalid email</span>
<!-- after -->  <input id="email" aria-describedby="email-err" aria-invalid="true" /> <span id="email-err">Invalid email</span>

review guidance

  • fix critical issues first (names, keyboard, focus, tool boundaries)
  • prefer native HTML before adding aria
  • quote the exact snippet, state the failure, propose a small fix
  • for complex widgets (menu, dialog, combobox), prefer established accessible primitives over custom behavior

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.732 reviews
  • Ganesh Mohane· Dec 24, 2024

    Keeps context tight: fixing-accessibility is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Ishan Shah· Dec 16, 2024

    Registry listing for fixing-accessibility matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Min Liu· Dec 4, 2024

    We added fixing-accessibility from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Jin Yang· Nov 23, 2024

    fixing-accessibility reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Sakshi Patil· Nov 15, 2024

    fixing-accessibility has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Min Kapoor· Nov 3, 2024

    I recommend fixing-accessibility for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Evelyn Iyer· Oct 22, 2024

    Useful defaults in fixing-accessibility — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Jin Martin· Oct 14, 2024

    Registry listing for fixing-accessibility matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Chaitanya Patil· Oct 6, 2024

    Solid pick for teams standardizing on skills: fixing-accessibility is focused, and the summary matches what you get after install.

  • Jin Harris· Sep 9, 2024

    We added fixing-accessibility from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

showing 1-10 of 32

1 / 4