agentleFS
0avi0avi/skills/angular-accessibility/SKILL.md

angular-accessibility

Skill1 starsChanged 3 months agoMITView on GitHub

Takes an Angular application to WCAG 2.2 AA conformance, covering everything outside a single widget. Trigger when focus is not moved or restored after a route change or a dialog closes, when a screen reader announces nothing after an async update, when validation errors are invisible to assistive technology, when colour contrast or target size must be checked, when a keyboard user is trapped or cannot escape, when axe reports clean but the page is still unusable, or when the criteria new in WCAG 2.2 must be met. Install the official angular-developer skill alongside it; that owns ARIA roles, keyboard interaction and focus within a component, and this skill never restates it.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    This skill owns only what is outside one widget: Never restate the nine patterns.

    line 33
  2. Very specific:

    Every reference carries a ## Version notes section stating what differs across Angular 19 to 21, @angular/cdk versions and WCAG 2.1 to 2.2, …

    line 54

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Accessibility Beyond the Widget

The official angular-developer skill's angular-aria.md covers nine widget patterns - Accordion, Listbox, Combobox, Menu, Tabs, Toolbar, Tree, Grid - with their ARIA attributes, arrow-key navigation, roving tabindex and focus within the component. Its own framing is that its directives handle the accessibility logic while you supply structure and styling.

This skill owns everything outside a single widget, which is where conformance is actually won or lost: what happens between components, across navigations, and at the level of the page.

What this skill does not own

Ask aboutUse instead
ARIA roles and attributes for a listbox, combobox, menu, tabs, tree or gridthe official angular-developer skill
Arrow-key navigation, roving tabindex, activedescendant inside one componentthe official angular-developer skill
Component structure, signals, forms API, routing mechanicsthe official angular-developer skill
Tailwind or component styling as suchnot covered here; see the roadmap's styling item
  1. Establish the target before giving guidance. Which WCAG version and level is being claimed (2.1 AA and 2.2 AA differ by six A and AA criteria), the Angular major, and whether @angular/cdk is a dependency. Advice that assumes the CDK is wrong without it.
  2. This skill owns only what is outside one widget. Never restate the nine patterns. If a claim is about the internals of a single component, it belongs to angular-developer.
  3. An automated tool cannot tell you whether you conform. Verified on axe-core 4.13.0: 105 rules, of which 30 map to no WCAG criterion at all, and exactly one maps to a criterion new in WCAG 2.2. There is no rule for live regions, reflow, dragging movements, consistent help or accessible authentication. Treat a clean axe run as the floor, never the verdict. See automated-testing.md.
  4. Use @angular/cdk/a11y rather than hand-rolling. LiveAnnouncer, FocusTrap, InteractivityChecker, FocusMonitor and AriaDescriber all exist and are tested. A hand-written focus trap will miss inert, shadow DOM, and the case where the trap's own contents change.
  5. Focus after a route change is your job, and nothing warns you. Angular's router ships configurable scroll restoration and no focus API whatsoever. See route-change-focus.md.
  6. Test keyboard first, then a screen reader, then automation. In that order, because the first two find what the third cannot see, and the third is the only one that can run in CI.

Every reference carries a ## Version notes section stating what differs across Angular 19 to 21, @angular/cdk versions and WCAG 2.1 to 2.2, and a ## Gotchas list of the specific mistakes agents make in that area. Read the gotchas even when skimming. Where a claim is computable it has been computed: the contrast ratios and the axe rule counts are program output.

Determining the target

Step 1. The claim. Ask which standard is being conformed to. "Accessible" is not a target; "WCAG 2.2 AA" is. For UK public-facing services this is usually 2.2 AA, and the Equality Act 2010 duty is on the outcome rather than on a version.

Step 2. package.json for @angular/core and whether @angular/cdk is present. Without the CDK, live announcements and focus traps have to be written by hand, and the guidance changes.

Step 3. Whether an automated check already runs in CI, and with which ruleset. A project running axe with only the default tags is not checking the same things as one running wcag22aa.

Step 4. Whether the application is server-rendered. Hydration changes when focus can be moved, because the element may not exist during the first render.

Topics

  • Automated testing and its limits: what axe actually covers, measured rule by rule, what it cannot see, and the manual checks that replace the missing coverage. Read automated-testing.md
  • Focus across route changes: the router's missing focus API, where focus goes by default, skip links, and announcing the new page. Read route-change-focus.md
  • Colour and contrast: the ratios, computed, including the one-hex-digit difference between passing and failing, non-text contrast, and never encoding meaning in colour alone. Read colour-and-contrast.md
  • Form errors: the three associations that make a validation failure perceivable, the Angular trap of a dangling aria-describedby, error summaries, and announcing exactly once. Read form-errors.md
  • What WCAG 2.2 added: the nine new criteria, the one that was removed, and the five new manual checks that come with moving a claim from 2.1 AA. Read wcag22-criteria.md

Symptom index

SymptomRead
axe passes and a keyboard user still cannot complete the taskautomated-testing.md
The CI a11y job never fails, on any pageautomated-testing.md
Tab goes to the top of the page, or nowhere, after navigatingroute-change-focus.md
A screen reader says nothing when the route changesroute-change-focus.md
A designer's grey text fails and nobody can say whycolour-and-contrast.md
A warning button is unreadable in white textcolour-and-contrast.md
A red border is the only sign a field is invalidform-errors.md
A screen reader reads the same error twiceform-errors.md
The form validates but the submit button is unreachableform-errors.md
A focused row disappears behind a sticky headerwcag22-criteria.md
A password manager cannot be used to log inwcag22-criteria.md
Reordering is only possible by draggingwcag22-criteria.md
Focus jumps to the top of the page when a dialog closesroute-change-focus.md
The claim moved from 2.1 AA to 2.2 AA and nothing else changedwcag22-criteria.md

Checklist

  • Accessibility review checklist: 38 rules for a review pass over an existing application, the five most damaging first, each linked to its reference. Read checklist.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.