askill
a11y

a11ySafety 95Repository

WCAG 2.2 AA accessibility scanner for Sitecore, Umbraco, and Optimizely CMS projects. Scans Razor views, React/Next.js components, JSX templates, and content type definitions for accessibility violations. Use when asked to: scan for accessibility issues, run an accessibility audit, check WCAG compliance, find a11y problems, or audit templates for accessibility. Triggers on "accessibility", "a11y", "WCAG", "screen reader", "aria".

0 stars
1.2k downloads
Updated 2/21/2026

Package Files

Loading files...
SKILL.md

CMS Accessibility Scanner

Scan CMS projects for WCAG 2.2 AA violations across views, components, and content type definitions.

Usage

/plugin-cms-toolkit:a11y                    # Full scan
/plugin-cms-toolkit:a11y views              # Razor views and templates only
/plugin-cms-toolkit:a11y components         # React/Next.js components only
/plugin-cms-toolkit:a11y content-types      # Content model accessibility only

Workflow

1. Detect CMS and Gather Files

Determine the CMS platform (same detection as cms-detect), then collect files to scan:

Sitecore:

  • src/components/**/*.tsx — Content SDK / JSS components
  • Views/**/*.cshtml — MVC Razor views
  • Template serialization YAML for content type field analysis

Umbraco:

  • Views/**/*.cshtml — Razor views and partials
  • Views/Partials/blocklist/**/*.cshtml — Block List component views
  • Document type classes (Models/**/*.cs) for field analysis

Optimizely:

  • Views/**/*.cshtml — Razor views
  • src/**/*.tsx — JS SDK React components
  • Content type classes (Models/**/*.cs) for field analysis

2. Scan for Violations

Read the full WCAG 2.2 AA checklist from wcag-checklist.md before scanning.

For each file, check against every applicable criterion. Group findings by WCAG principle.

Markup and Component Checks

Perceivable (WCAG 1.x)

  • Images without alt text or empty alt on non-decorative images
  • CMS image fields rendered without alt text binding (<img> without alt={props.fields.Alt})
  • Video/audio without captions or transcripts
  • Information conveyed by color alone (CSS patterns like .error { color: red } without icon/text)
  • Text embedded in images
  • Missing language attributes on <html>
  • Insufficient contrast patterns (e.g., light gray text classes, low-contrast CSS custom properties)

Operable (WCAG 2.x)

  • Click handlers on non-interactive elements (<div onClick>, <span onClick>) without role, tabIndex, and keyboard handlers
  • Missing skip navigation links
  • Form elements without visible labels
  • Custom components missing keyboard support (onKeyDown/onKeyPress alongside onClick)
  • Focus traps without escape mechanism
  • Motion/animation without prefers-reduced-motion media query
  • Touch targets smaller than 24x24 CSS pixels

Understandable (WCAG 3.x)

  • Forms without error identification and suggestion
  • Missing <label> elements or aria-label/aria-labelledby on inputs
  • Language not specified on page or content sections
  • Inconsistent navigation patterns across templates

Robust (WCAG 4.x)

  • Invalid ARIA roles or properties
  • ARIA attributes on elements that don't support them
  • Missing role attributes on custom interactive components
  • Duplicate IDs in templates

Content Type Definition Checks

  • Image fields without a corresponding alt text field (e.g., HeroImage exists but no HeroImageAlt)
  • Rich text fields without guidance for editors on accessible content
  • Link fields without text/label companion fields
  • Video/media fields without caption or transcript companion fields
  • Missing alt text in media picker configurations

CMS-Specific Checks

Sitecore:

  • <Image> field helper used without alt field binding
  • <Link> field helper without accessible text
  • Placeholder components missing landmark roles
  • Experience Editor markup compatibility (editing wrappers breaking semantics)

Umbraco:

  • MediaPicker properties without alt text property on media type
  • Block List/Grid renderings missing landmark structure
  • Html.PropertyFor() calls on images without alt output
  • Content Delivery API responses missing alt text fields

Optimizely:

  • ContentArea rendering without landmark wrappers
  • @Html.PropertyFor() on image properties without alt text
  • Block views missing heading hierarchy
  • Visual Builder components without ARIA announcements for dynamic content

3. Report

Output a structured report:

# Accessibility Scan Results

**Platform:** [detected CMS]
**Standard:** WCAG 2.2 AA
**Files scanned:** [count]
**Issues found:** [count by severity]

## Critical (WCAG A violations)

### [1.1.1] Non-text Content
**file:line** — `<img>` rendered without alt text
```tsx
// Current
<img src={props.fields.Image.value.src} />

// Fix
<img src={props.fields.Image.value.src} alt={props.fields.Image.value.alt} />

Serious (WCAG AA violations)

[1.4.3] Contrast (Minimum)

file:line — Description of issue Fix: Specific remediation

Moderate (Best practice)

...

Content Model Issues

Content TypeIssueRecommendation
HeroBannerImage field has no alt text companionAdd HeroImageAlt (Single-Line Text, required)

Summary

SeverityCount
Critical (A)X
Serious (AA)X
Moderate (best practice)X
Content modelX

Top 3 recommendations:

  1. ...
  2. ...
  3. ...

### Severity Levels

- **Critical** — WCAG 2.2 Level A failure. Blocks users with disabilities entirely.
- **Serious** — WCAG 2.2 Level AA failure. Significant barrier.
- **Moderate** — Best practice violation. Not a conformance failure but degrades experience.

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

82/100Analyzed 2/24/2026

Well-structured WCAG 2.2 AA accessibility scanner skill with clear trigger conditions, detailed scanning criteria by WCAG principles, CMS-specific checks, and comprehensive output format. Includes usage examples, workflow steps, and code fix examples. Slightly less actionable as it describes a skill definition rather than executable tooling, but provides excellent guidance for implementation.

95
85
75
85
75

Metadata

Licenseunknown
Version-
Updated2/21/2026
Publishertwofoldtech-dakota

Tags

apigithub-actions