skills/product/accessibility/SKILL.md
Use when auditing code for WCAG 2.1 AA compliance — keyboard navigation, ARIA patterns, color contrast, and semantic HTML. Produces prioritized remediation with code-level fixes. NOT for running automated a11y tools (use product:a11y command) or visual design review (use product/visual-review).
npx skillsauth add mikeparcewski/wicked-garden accessibilityInstall 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.
WCAG 2.1 Level AA compliance auditing and inclusive design guidance.
Accessibility is not optional. It's legal compliance, user respect, and better code.
Information must be presentable to users in ways they can perceive.
Interface components must be operable.
Information and operation must be understandable.
Content must work with assistive technologies.
Full WCAG checklists: See refs/wcag-checklist.md
Use the Read tool on a screenshot file, or capture via browser automation if available (e.g., Playwright, Puppeteer, or an MCP browser tool). For automated WCAG scanning, use axe DevTools, Lighthouse, WAVE, or pa11y.
Full keyboard testing guide: See refs/keyboard-testing-basics.md and refs/keyboard-testing-patterns.md
Full screen reader guide: See refs/screen-reader-testing-commands.md and refs/screen-reader-testing-advanced.md
# Find potential issues
wicked-garden:search "<div.*onclick" --type html # Non-semantic buttons
wicked-garden:search "<img(?!.*alt)" --type html # Missing alt
wicked-garden:search "aria-" --type html # ARIA usage
<!-- ✗ Missing alt -->
<img src="profile.jpg">
<!-- ✓ Fixed -->
<img src="profile.jpg" alt="Profile of Jane Doe">
<!-- ✗ Non-semantic button -->
<div onclick="submit()">Submit</div>
<!-- ✓ Fixed -->
<button onclick="submit()">Submit</button>
<!-- ✗ Form without label -->
<input type="text" placeholder="Email">
<!-- ✓ Fixed -->
<label for="email">Email</label>
<input type="text" id="email">
<!-- ✗ Low contrast -->
<p style="color: #999; background: #fff;">Text</p> /* 2.5:1 */
<!-- ✓ Fixed -->
<p style="color: #666; background: #fff;">Text</p> /* 4.7:1 */
More examples: See refs/common-violations-html-css.md and refs/common-violations-interactive.md
## A11y Audit
**WCAG**: {✓ Pass | ⚠ Issues | ✗ Fail}
- Perceivable: {✓⚠✗}
- Operable: {✓⚠✗}
- Understandable: {✓⚠✗}
- Robust: {✓⚠✗}
### Critical (Level A)
- Issue: {description}
- WCAG: {criterion}
- Fix: {specific code}
### Major (Level AA)
- Issue: {description}
- WCAG: {criterion}
- Fix: {recommendation}
### Recommendations
1. {Priority fixes}
Full report template: See refs/audit-report-findings.md and refs/audit-report-results.md
Tools:
# Color contrast check
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/product/contrast-check.py" "#666" "#fff"
# Track issues via native TaskCreate
# TaskCreate(
# subject="A11y: {issue}",
# metadata={
# "event_type": "task",
# "chain_id": "a11y-review.root",
# "source_agent": "a11y-expert",
# "priority": "P0"
# }
# )
Collaboration:
Accessibility auditing can leverage available integrations by capability:
| Capability | Discovery Patterns | Provides |
|------------|-------------------|----------|
| A11y testing | axe, a11y, accessibility | Automated WCAG scanning |
| Browser testing | playwright, puppeteer | Screenshots, DOM snapshots |
| Performance | lighthouse | Combined a11y + performance audit |
Discover available integrations via capability detection. Fall back to local contrast-check.py when none available.
Detailed guides in refs/:
Legal context: ADA (US), Section 508 (gov), EAA (EU). ~15-20% of users need accessibility; screen readers double as SEO bots.
development
--- name: large-scale-migration description: How to execute a LARGE MECHANICAL change across any codebase with LEVERAGE instead of an agent-grind or hand-edits — a cross-cutting migration, refactor, rename, dialect/framework/DB port, library adoption, or bulk transform. The map→transform→gate pattern: a deterministic transform driven by a source-of-truth map, proven by a differential-equivalence gate. Use when the work is "migrate all X to Y", "rename Z everywhere", "port to a new DB/dialect/fra
testing
v11 LLM-based work-shape classifier. Replaces the regex archetype detector with the model's own reasoning. Reads the user's prompt, picks the right archetype(s) from the catalog, identifies signals (blast_radius, novelty, reversibility, etc.), and persists to SessionState so subsequent turns steer correctly. Use when: the prompt_submit hook emitted a `<wg classify-due />` directive, OR explicitly invoked at session start, OR when re-classifying after the user changes scope mid-session.
tools
v11 work-shape archetype runner. When a prompt has been routed to one of the 9 archetypes (triage, explore, specify, decide, ship, review, incident, build, migrate), this skill is the entry point. It picks the right per-archetype playbook from refs/ and executes the phase shape declared in `.claude-plugin/archetypes.json`. Use when: a `<wg archetype="X">` or `<wg archetypes>` system-reminder tag appears, an explicit "let's run the X archetype" request, or when one of the per-archetype slash commands resolves to this skill.
development
Show or set the session intent variable. Intent gates how loud the framework is — simple-edit (silent), feature/research (synthesis directive), rigor (full crew context). Auto-detected on turn 1; this skill overrides explicitly. Sticky for the session. Use when: "set intent", "intent override", "/wicked-garden:intent", "make the framework quiet", "force rigor", "what's my intent".