skills/prioritising-accessibility-fixes/SKILL.md
Use this skill to prioritise a set of accessibility issues for remediation based on severity, user impact, and effort. Triggers when triaging an accessibility backlog, deciding what to fix first after an audit, planning an accessibility sprint, or asking which accessibility issues matter most.
npx skillsauth add mattobee/skills prioritising-accessibility-fixesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Given a set of accessibility issues, produce a prioritised remediation order based on severity, user impact, and effort. The output is a ranked list that helps decide what to fix first, what to batch together, and what can wait.
This skill works on a set of known issues. It does not find new issues (use reviewing-accessibility for that), estimate effort from scratch (use estimating-accessibility-effort for that, or provide estimates as input), or implement fixes (use fixing-accessibility-issues for that). If issues arrive without effort estimates, assess effort by reading the affected code before prioritising.
A set of accessibility issues, ideally with:
If effort estimates are missing, read the affected code and estimate before prioritising. Do not prioritise without understanding effort — a "Critical" issue that takes 5 minutes should be fixed immediately, while a "Critical" issue requiring an architectural redesign needs different planning.
If the project defines its own effort estimation convention (e.g. story points, T-shirt sizes with different definitions, time-based estimates), use that convention for display and map it to the Low / Medium / High effort scoring bands in the scoring model. For example, if the project uses story points, treat 1–2 points as Low effort (score 3), 3–5 as Medium (score 2), and 8+ as High (score 1) — adjusting the boundaries to match the project's scale definitions.
If issues arrive without effort estimates and estimating-accessibility-effort is not available, use this fallback scale:
| Size | Typical scope | |------|--------------| | XS | Single attribute or property change, one file | | S | Localised change within one component, a few attributes | | M | Changes to one component plus its consumers, or 2-5 files | | L | Structural changes affecting multiple components or a shared layout | | XL | Architectural changes affecting routing, state management, or component library |
Before scoring, run each issue through these filters in order. If a filter matches, assign the tier directly — do not score the issue.
Issues that do not match any filter proceed to scoring.
Each issue is scored on three dimensions. The priority score determines the remediation order.
Severity measures how badly the user's experience is degraded. It is defined by functional impact, not WCAG conformance level — though the two often correlate.
| Rating | Definition | Score | |--------|-----------|-------| | Blocker | Assistive technology users cannot access or operate the feature at all. Typically a WCAG Level A failure. | 5 | | Critical | The feature is technically operable but so degraded that most AT users will abandon the task. | 4 | | Serious | Significant friction or confusion. Users can complete the task but with considerable difficulty. Often a WCAG Level AA failure. | 3 | | Moderate | Noticeable inconvenience but the task is completable without major difficulty. | 2 | | Minor | Best practice or AAA improvement. Marginal polish rather than a barrier. | 1 |
User impact measures how many people are affected and how severely their experience is degraded. This is distinct from WCAG severity — a Serious (AA) issue that affects every keyboard user on every page has higher user impact than a Critical (A) issue on a rarely visited admin screen.
| Rating | Definition | Score | |--------|-----------|-------| | Pervasive | Affects a core user flow AND appears across many pages/views. Multiple disability groups impacted. | 5 | | High | Affects a core user flow on specific pages, or a secondary flow across many pages. Multiple groups or a large single group impacted. | 4 | | Medium | Affects a secondary flow or a specific page. One disability group primarily impacted. | 3 | | Low | Affects a rarely used feature or a non-critical edge case. | 2 | | Minimal | Cosmetic or very minor inconvenience. Almost no users will notice. | 1 |
Lower effort means faster delivery of accessibility improvement. All else being equal, fix the easy things first.
| Rating | Effort sizes | Score | |--------|-------------|-------| | Low effort | XS, S | 3 | | Medium effort | M | 2 | | High effort | L, XL | 1 |
For projects with shared components, templates, or design-system tokens that propagate across multiple pages, apply a reach modifier to the final score. Skip this modifier for small sites or single-page applications where reach differentiation adds no value.
| Reach | Definition | Modifier | |-------|-----------|----------| | Systemic | Shared component / template / design token reused across many pages or in a design system | × 1.5 | | Multi-page | Appears on several distinct pages or views | × 1.25 | | Single page | Isolated to one page or view | × 1.0 (no change) |
If reach is not assessed, use the base priority score as the final score.
Severity and user impact are weighted and summed, then divided by effort to ensure difficult fixes cannot outrank critical barriers.
Priority = (Severity × 2 + User Impact × 1.5) / Effort
Where Effort uses the existing inverse scale (Low effort = 3, Medium = 2, High = 1) but now acts as a divisor, not an addend. Higher scores = higher priority. Effort makes easy fixes rise but can never push a low-severity issue above a high-severity one.
If using the reach modifier: Final Priority = Priority × Reach Modifier
Round to one decimal place for display. Issues with the same rounded score are ordered by severity first, then user impact, then effort.
Group scored issues into tiers for practical planning:
High severity and impact issues, especially those that are quick to fix. These deliver the most accessibility improvement per unit of effort. Fix these first. Also includes all issues routed here by pre-scoring overrides.
Significant issues that need more effort or planning. These should be scheduled, not deferred indefinitely. Typical examples: implementing keyboard navigation for a custom widget, adding focus management to modal flows, building an error handling pattern for forms.
Low-impact or high-effort issues. Still worth fixing, but other work delivers more accessibility value per effort. Examples: AAA contrast improvements, optimising for edge-case assistive technology combinations, progressive enhancement of already-functional features.
If the formula weights are adjusted, recalibrate these thresholds by scoring a few representative issues at each tier and checking that the boundaries still produce sensible groupings.
After scoring, identify issues that should be fixed together because:
aria-describedby to 12 form fields is one effort with the pattern established on the first.Present batches as grouped items with a combined effort estimate and a note on why they belong together.
After scoring all issues and assigning tiers, run a quick validation pass:
## Accessibility Prioritisation - [scope]
### Tier 1 — Fix Immediately
| # | Issue | WCAG | Severity | Impact | Effort | Reach | Score |
|---|-------|------|----------|--------|--------|-------|-------|
| 1 | ... | ... | ... | ... | ... | ... | ... |
### Tier 2 — Plan for Next Cycle
| # | Issue | WCAG | Severity | Impact | Effort | Reach | Score |
|---|-------|------|----------|--------|--------|-------|-------|
| 1 | ... | ... | ... | ... | ... | ... | ... |
### Tier 3 — Schedule When Capacity Allows
| # | Issue | WCAG | Severity | Impact | Effort | Reach | Score |
|---|-------|------|----------|--------|--------|-------|-------|
| 1 | ... | ... | ... | ... | ... | ... | ... |
### Batches
- **[batch name]**: [issue A], [issue B], [issue C] - [combined effort] - [why batched]
### Recommended Order
[Numbered list of the specific order to tackle fixes, accounting for dependencies, batches, and tier placement. This is the actionable output — a developer should be able to start at #1 and work down.]
### Summary
- Tier 1: [n] issues ([n] quick wins, [n] via pre-scoring overrides)
- Tier 2: [n] issues
- Tier 3: [n] issues
- Total: [n] issues
- Systemic reach: [n] issues | Multi-page: [n] | Single page: [n]
Omit empty tiers. Omit the Reach column and the reach summary line if reach was not assessed.
If the project defines its own priority labels (e.g. P0–P3, Critical/High/Medium/Low), add a brief mapping note at the top of the report — for example: "This project uses P0–P3. Tier 1 corresponds roughly to P0/P1, Tier 2 to P2, Tier 3 to P3." Do not replace the tier structure with the project's scale; the tiers reflect accessibility-specific scoring that a general priority scale does not capture. The mapping note bridges the two systems so the team can see where accessibility priorities sit within their existing workflow.
data-ai
Use this skill to create Obsidian event notes for the day's calendar meetings, each pre-populated with grounded talking points. Triggers when the user asks to prepare for their meetings, create notes for today's calendar events, set up meeting notes, or get ready for the day. Pulls the events they have accepted, creates one note per meeting following the vault's event conventions, and fills a prep section with talking points grounded in prior meeting notes, related project notes, recent GitHub activity, and Slack threads. Use it for daily meeting prep even when the user doesn't mention Obsidian or notes by name.
tools
Use this skill to work through review feedback on a pull request — read the inline review comments, assess each one's validity, make the code changes that are warranted, and reply to every thread with a one-line explanation of what was done (or why it was declined). Triggers when the user asks to address PR feedback, respond to reviewers, work through review comments, handle a code review, action the comments on a PR, or asks "what do the reviewers want changed?" Also triggers when resuming work on a PR that has open review threads.
testing
Use this skill to write Playwright accessibility tests using the two-layer strategy (axe-core scans + targeted assertions). Triggers when adding accessibility test coverage, reviewing test gaps, writing axe scans, or creating Playwright assertions for accessible names, landmarks, ARIA states, focus management, or contrast.
tools
Use this skill to suggest prioritised next steps for a project. Triggers when the user asks what to work on next, wants to resume after a break, or needs help prioritising a backlog.