Jaws accessibility skill
Agent Skill for accessible web development with JAWS/NVDA screen reader testing, WCAG 2.2, and Spanish/EU legislation compliance. Works with Claude Code, Codex, Copilot, Cursor, Windsurf, Cline, and Roo Code.
npx -y skills add Ambitos-1995/jaws-accessibility-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Accessibility engineering skill for web products with JAWS and NVDA testing plus Spain/EU compliance guidance. Use when the task involves WCAG 2.2 implementation, ARIA behavior, keyboard/focus issues, screen-reader regressions, accessibility audits, remediation plans, or legal scope checks for Ley 11/2023, RD 1112/2018, EAA, and EN 301 549.
SKILL.md
5.6 KB, as published. Nobody here has run it
JAWS Accessibility Skill
Provide practical, implementation-first support for accessible web interfaces and accessibility audits.
Use progressive disclosure. Load only the reference file needed for the current task.
Reference routing
| Situation | File to load |
|---|---|
| Legal scope, obligations, timelines, exemptions | references/spanish-eu-legislation.md |
| WCAG 2.2 criteria mapping and coding patterns | references/wcag-22-criteria.md |
| JAWS/NVDA behavior differences, ARIA compatibility, anti-patterns | references/jaws-nvda-compatibility.md |
| End-to-end audit execution and reporting | references/jaws-audit-methodology.md |
| WCAG 3.0 monitoring and future planning (non-normative) | references/future-standards.md |
Operating rules
- Prioritize native HTML semantics before ARIA.
- Treat WCAG 3.0 as non-normative draft guidance, not a compliance baseline.
- If legal/compliance is requested, state exact dates and legal scope explicitly.
- Distinguish mandatory requirements from recommended best practices.
- Validate with at least:
- JAWS + Chrome
- NVDA + Firefox
- For SPA flows, always verify:
- focus placement after route changes
- meaningful page title updates
- announcement behavior for status changes
- When uncertain about AT/browser version behavior, request or document exact versions.
Delivery format
For implementation tasks:
- Explain the user impact.
- Identify the root cause (markup, state management, ARIA, focus, timing).
- Provide a minimal fix.
- Add a quick manual test script for keyboard + JAWS + NVDA.
For audit tasks:
- Use the 8-phase flow in
references/jaws-audit-methodology.md. - Return findings grouped by severity: Critical, High, Medium, Low.
- Map each finding to WCAG SC, technical evidence, reproduction steps, remediation recommendation.
For legal/compliance scope questions:
- Start with
references/spanish-eu-legislation.md. - Clarify whether the question is private-sector (Ley 11/2023 / EAA) or public-sector (RD 1112/2018).
- Mark any legal interpretation as operational guidance, not legal advice.
Known bugs by JAWS version
Screen readers have frequent regressions. See references/jaws-nvda-compatibility.md section 9 for full context.
JAWS 2025
aria-currentsilenced in grids:role="row"inside agrid— JAWS may ignorearia-current.aria-descriptionignored in grid rows: same context causesaria-descriptionnot to be exposed.aria-roledescriptionregressions: fixed 2024 excessive repetition, but now may silence state metadata in grid rows.
JAWS 2026 betas
- Conditional silencing in
role="row"+grid: ongoing inconsistencies vs JAWS 2024 and NVDA.
Mitigation
- Do not rely solely on
aria-currentoraria-descriptionfor critical information in grids. - Provide visual and textual redundancy.
- Use NVDA as the strict standards-compliance reference.
Most frequent critical errors
| Error | Impact | Solution |
|---|---|---|
aria-hidden="true" on container with focusable elements | Silent "ghost elements" in JAWS | Use display:none or visibility:hidden, or remove tabindex from children |
Nesting interactive elements (<a><button>) | JAWS reads the name 3 times | Single interactive element with correct role |
Data table without role="table" or role="grid" | JAWS classifies as "layout table", silences <th> | Declare role="table" or role="grid" explicitly |
Injecting aria-live with content simultaneously | JAWS ignores the live region | Empty container with aria-live in initial HTML |
| SPA without focus management after navigation | Focus trapped on originating link | Move focus to <h1> with tabindex="-1" + .focus() |
*:focus { outline: none } | Keyboard users lose visual reference | Always define visible focus styles |
aria-live + aria-describedby on same element | Double announcement in JAWS and NVDA | Separate into distinct DOM nodes |
Quick checklist
Before delivering any web component:
- Is all functionality operable with keyboard only?
- Do interactive elements have clear accessible names?
- Is text contrast >= 4.5:1 and UI element contrast >= 3:1?
- Are touch targets at least 24x24px CSS?
- Do images have descriptive
alt(oralt=""if decorative)? - Does the page have
<html lang="...">and use<h1>-<h6>in logical order? - Do forms have associated
<label>elements and appropriateautocomplete? - Do modals trap focus and return it to the trigger on close?
- Do live regions exist empty in the initial HTML?
- Has it been tested with JAWS + Chrome and NVDA + Firefox?
Common implementation priorities
- Keyboard operability and visible focus.
- Name/Role/Value integrity for interactive controls.
- Robust form labels, errors, and instructions.
- Focus management in dialogs, menus, and SPAs.
- Accessible tables, status messages, and live regions.
- Touch target size and alternative input methods.
Escalation points
Escalate risk when:
- A component works in one reader but fails in the other.
- Compliance claims rely only on automated tools.
- Focus is lost, trapped, or visually hidden.
aria-liveis used without deterministic announcement behavior.- A legal answer depends on sector-specific enforcement details.