con un clic
check-accessibility
Test a page in the browser against accessibility standards.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Test a page in the browser against accessibility standards.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Fetch a Jira ticket's details (summary, description, acceptance criteria, testing notes) by ticket ID. Use whenever another skill or task needs to read a Jira ticket.
Create a new page and associated files by parsing a prototype page
Conventions and file structure for quote journey pages in nrf-frontend. Read before creating or modifying any page under frontend/src/server/quote/. Covers the standard file structure (routes, get-view-model, form-validation, get-next-page), quoteController / quotePostController wiring, PRG validation flow, Nunjucks template conventions, Joi rules per input type, session cache helpers, and page/accessibility test patterns.
Fetch a Confluence page's details (title, space, version, labels, body HTML) by page ID or URL. Use whenever another skill or task needs to read a Confluence page.
Reviews changed code against team coding standards. Use after writing code in a nrf-* repository
Audit and fix the @openapi JSDoc annotations across all API route and controller files in frontend/ and backend/ so the Swagger documentation matches the actual endpoint implementations. Run for one or both sub-repos.
| name | check-accessibility |
| description | Test a page in the browser against accessibility standards. |
| tools | Bash, Read, mcp__playwright__browser_navigate, mcp__playwright__browser_navigate_back, mcp__playwright__browser_snapshot, mcp__playwright__browser_evaluate, mcp__playwright__browser_run_code_unsafe, mcp__playwright__browser_click, mcp__playwright__browser_type, mcp__playwright__browser_fill_form, mcp__playwright__browser_press_key, mcp__playwright__browser_wait_for, mcp__playwright__browser_close, mcp__playwright__browser_console_messages, mcp__playwright__browser_network_requests |
args is a path to a journeys markdown file (by default look in docs/user-journeys folder), or a single URL to a page to test.
Each numbered step within a journey is a separate page.
For each page, if there are specified sub-steps then execute each step and check the accessibility of the resulting page state. After the last step, continue to the next page. If a page has "- skip" then just click through it and don't check accessibility
Setup: when testing deployed environments (e.g.
*.cdp-int.defra.cloud), add a real-browser--user-agentto your Playwright MCP server args in~/.claude.json— otherwise the bot filter serves blank pages to Playwright's headless UA. Seetest-in-browser/SKILL.mdfor the exact value.
args.mcp__playwright__browser_navigate.mcp__playwright__browser_snapshot.mcp__playwright__browser_evaluate for precise assertions; use mcp__playwright__browser_snapshot to discover unknown selectors.mcp__playwright__browser_close.If a sub-step can't be performed or a page doesn't load, record the failure and stop that journey — do not retry silently. Report the exact error. Continue with the next journey.
A results table with one row per failed check, grouped by journey and page (and sub-step where relevant). List pages that passed cleanly in a brief line; detail every failure with the offending element and the rule it breaks. Write the results table to a markdown file and save to docs/accessibility-check-results folder.
| Journey | Page | Sub-step | Check | Result | Notes |
|---|---|---|---|---|---|
| Create a quote (drawn boundary) | 2 Boundary type | 1 Submit with no option | Forms — error summary | ❌ Fail | summary link href #type doesn't match field id boundary-type |
alt="" for decorative ones; never omit the attribute. SVG icons used as buttons have an aria-label.alt="" should not be used on content images (it must be descriptive); every image should have either a descriptive or empty alt<h1> which matches the page's question or task.<h1> to <h3>).##, ###, in order; never bold-as-heading.<label for="…">. Placeholder text is not a label.aria-describedby. Form input level hint text should be associated with the input via aria-describedby.To trigger form validation, submit the form without selecting an option or entering a value. Then assess the page accessibility after it reloads.
href match the field's id exactly.<th scope="col|row"><caption><table> is forbidden - tables should only be used for data presentation, not layout.click here, read more, link.Change <span class="govuk-visually-hidden">boundary type</span>).<a/> tagsUse mcp__playwright__browser_evaluate (not mcp__playwright__browser_click) for all map button interactions — Playwright click times out on map buttons because they don't trigger navigation. Use mcp__playwright__browser_press_key for arrow keys and Enter once focus is on the map.
new Promise(r => setTimeout(r, 2000))).evaluate to call .click() on [aria-label="Open search"], then mcp__playwright__browser_type into input[placeholder="Search"], wait 1.5 s for results, then press_key ArrowDown + Enter. Confirm the URL centre coordinates have changed.evaluate to .focus() the [data-draw-action="draw"] button, then press_key Enter. Confirm #draw-boundary-map-draw-cancel is present in the DOM before proceeding.press_key Enter, panning between them with evaluate-dispatched ArrowRight / ArrowDown keyboard events (dispatch on document.activeElement). After the third point, the Done button should be enabled.evaluate to check Done is not disabled, then evaluate to .focus() the Done button, then press_key Enter.press_key Tab), confirm document.activeElement is the "Save and continue" button, then press_key Enter. Confirm the URL changed to the next page.