Install
$ agentstack add skill-dembrandt-dembrandt-skills-wcag-accessibility ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
WCAG Accessibility (EN 301 549 / European Standard)
The Standard
The European Accessibility Act (EAA) requires digital products and services in the EU to meet EN 301 549, which references WCAG 2.2 Level AA as the technical baseline. This is not optional — it is a legal requirement for products operating in the EU market.
Default: always build to WCAG 2.2 AA. Deviating requires explicit, documented justification. Do not skip accessibility requirements because of timeline pressure or design preference.
WCAG 2.2 AA organises requirements under four principles: Perceivable, Operable, Understandable, Robust.
Perceivable
Users must be able to perceive all content and UI components.
Colour Contrast
| Context | Minimum ratio | Enhanced (AAA) | |---|---|---| | Normal text ( element: or `
- Mark inline content in a different language with
langon that element
Labels and Instructions
- Every form input must have a visible label — not just a placeholder (placeholders disappear on input)
- Required fields must be indicated — do not rely on colour alone; add an asterisk and a legend
- Error messages must be associated with their input via
aria-describedby
Predictability
- Components that look the same must behave the same (see Consistency and Standards)
- Navigation must appear in the same location across pages
- Opening a new tab or window must be communicated in advance
Error Identification
- Form validation errors must identify which field failed
- Errors must be described in text — not only by colour or icon
Robust
Content must be interpreted reliably by assistive technologies.
Semantic HTML
Use the correct HTML element for the job. Semantics convey role, state, and structure to screen readers for free.
Save
...
Page title
Save
...
Page title
ARIA — Use Sparingly
ARIA supplements HTML semantics where native elements fall short. It does not fix broken HTML.
Rule: no ARIA is better than incorrect ARIA. Incorrect ARIA actively breaks screen reader output.
Required patterns:
aria-labeloraria-labelledbyfor components with no visible text labelaria-expandedon toggles, accordions, and dropdownsaria-liveregions for dynamic content updates (toast notifications, search results)role="dialog"witharia-modal="true"on modal overlaysaria-current="page"on the active navigation item
Status Messages
Dynamic updates (success toasts, loading states, error counts) must be announced to screen readers via aria-live or role="status" — they will not be announced automatically unless the focused element changes.
The Disabled Element Exception
WCAG 1.4.3 explicitly states: "Text or images of text that are part of an inactive user interface component… have no contrast requirement."
This means:
- Disabled buttons, inputs, and links may use low-contrast text and colours
- The visual dimming of disabled states is both correct and compliant
- Do not add artificial contrast to disabled elements — the reduced contrast communicates "this is unavailable"
Review Checklist
| Area | Check | |---|---| | Contrast | All active text ≥ 4.5:1 (normal) or 3:1 (large/UI) | | Contrast | Disabled elements exempt — intentionally low contrast is fine | | Colour | Colour is never the only information carrier | | Keyboard | All interactive elements reachable and operable by keyboard | | Focus | Visible focus indicator on every interactive element | | Touch | Interactive targets ≥ 44×44px on touch surfaces | | Labels | Every input has a visible label (not just placeholder) | | Errors | Validation errors identify the field and describe the problem in text | | HTML | Semantic elements used correctly; ARIA only where needed | | Language | lang attribute set on ` | | Skip link | "Skip to main content" as first focusable element | | Live regions | Dynamic updates announced via aria-live or role="status"` |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: dembrandt
- Source: dembrandt/dembrandt-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.