Skip to content

feat: add accessibility review agent#183

Open
andyhorn wants to merge 8 commits into
mainfrom
feat/accessibility-review-agent
Open

feat: add accessibility review agent#183
andyhorn wants to merge 8 commits into
mainfrom
feat/accessibility-review-agent

Conversation

@andyhorn

@andyhorn andyhorn commented Apr 23, 2026

Copy link
Copy Markdown

Description

Adds accessibility-review-agent to agents/quality-review/ and wires it into the default /review agent set so projects get an accessibility audit alongside the existing reviews. The agent is tech-agnostic — it detects the project's UI framework (Flutter, React, SwiftUI, HTML/CSS, etc.) and applies WCAG 2.1 Level AA checks adapted to the stack.

Type of Change

  • New feature (feat)
  • Bug fix (fix)
  • Code refactor (refactor)
  • Documentation (docs)
  • CI change (ci)
  • Chore (chore)

Summary

  • Adds accessibility-review-agent to agents/quality-review/ — reviews UI code for semantic structure, keyboard navigation, labels/announcements, visual/sensory concerns, and screen reader readiness
  • Adds the agent to the default review set in /review so it runs in parallel with the existing four agents
  • Tech-agnostic: detects the project stack and adapts checks accordingly

Test plan

  • Run /review on a project with UI changes and verify the accessibility agent runs alongside the other four
  • Verify docs/code-review/accessibility-review.md is written with the expected report format
  • Confirm the agent's findings appear in the consolidated summary under Critical/Important/Suggestions

🤖 Generated with Claude Code

@andyhorn andyhorn requested a review from a team as a code owner April 23, 2026 23:56
Comment thread agents/quality-review/accessibility-review-agent.md
Comment thread agents/quality-review/accessibility-review-agent.md

@RuiMiguel RuiMiguel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great @andyhorn
Have you seen Flutter accessibility at vgv-ai-flutter-plugin? Even if it's focused on Flutter, it mentions WCAG 2.1 conformance levels A, AA, and AAA.
I think we could take many generic elements from there, removing Flutter and being tech-agnostic.
Wdyt?

Comment thread agents/quality-review/accessibility-review-agent.md
@andyhorn

Copy link
Copy Markdown
Author

Looks great @andyhorn Have you seen Flutter accessibility at vgv-ai-flutter-plugin? Even if it's focused on Flutter, it mentions WCAG 2.1 conformance levels A, AA, and AAA. I think we could take many generic elements from there, removing Flutter and being tech-agnostic. Wdyt?

Great idea! I've incorporated the standards and non-Flutter specific rules.

@andyhorn andyhorn force-pushed the feat/accessibility-review-agent branch from 4f389d8 to f3b1f33 Compare April 27, 2026 21:23
@ryzizub

ryzizub commented May 25, 2026

Copy link
Copy Markdown
Contributor

Suggestion: when the agent detects a Flutter project, point users to the companion plugin's deeper accessibility skill.

The vgv-ai-flutter-plugin ships a vgv-accessibility skill with Flutter-specific widget mappings, audit templates, WCAG-level prompts, and platform-specific screen reader guidance — richer than what an agnostic agent can cover. The recommend-plugins hook already surfaces the plugin when pubspec.yaml is present, so the loop is half-closed.

Two options:

  1. Soft pointer (low risk): During stack detection, if the project is Flutter, append a note to the report — e.g., "For a deeper Flutter audit, run /vgv-accessibility." No new coupling between agents and skills; user decides whether to dig deeper.
  2. Delegate (richer): Detect stack + check skill availability, defer Flutter-specific checks to vgv-accessibility output. Avoids duplicated criteria but introduces an agent→skill coupling pattern not present elsewhere in agents/quality-review/.

Option 1 fits this PR's scope and aligns with Wingspan's tech-agnostic charter. Delegation can be revisited later as a cross-agent pattern.

@RuiMiguel

Copy link
Copy Markdown
Contributor

Suggestion: when the agent detects a Flutter project, point users to the companion plugin's deeper accessibility skill.

The vgv-ai-flutter-plugin ships a vgv-accessibility skill with Flutter-specific widget mappings, audit templates, WCAG-level prompts, and platform-specific screen reader guidance — richer than what an agnostic agent can cover. The recommend-plugins hook already surfaces the plugin when pubspec.yaml is present, so the loop is half-closed.

Two options:

  1. Soft pointer (low risk): During stack detection, if the project is Flutter, append a note to the report — e.g., "For a deeper Flutter audit, run /vgv-accessibility." No new coupling between agents and skills; user decides whether to dig deeper.
  2. Delegate (richer): Detect stack + check skill availability, defer Flutter-specific checks to vgv-accessibility output. Avoids duplicated criteria but introduces an agent→skill coupling pattern not present elsewhere in agents/quality-review/.

Option 1 fits this PR's scope and aligns with Wingspan's tech-agnostic charter. Delegation can be revisited later as a cross-agent pattern.

I think option 1 is a perfect fit, if we leave generic accessibility here and keep Wingspan technologically independent.
The ai-flutter plugins might still have some features that could be ported to Wingspan, we will check later for duplicated or conflicts

@ryzizub

ryzizub commented May 25, 2026

Copy link
Copy Markdown
Contributor

Suggestion: when the agent detects a Flutter project, point users to the companion plugin's deeper accessibility skill.
The vgv-ai-flutter-plugin ships a vgv-accessibility skill with Flutter-specific widget mappings, audit templates, WCAG-level prompts, and platform-specific screen reader guidance — richer than what an agnostic agent can cover. The recommend-plugins hook already surfaces the plugin when pubspec.yaml is present, so the loop is half-closed.
Two options:

  1. Soft pointer (low risk): During stack detection, if the project is Flutter, append a note to the report — e.g., "For a deeper Flutter audit, run /vgv-accessibility." No new coupling between agents and skills; user decides whether to dig deeper.
  2. Delegate (richer): Detect stack + check skill availability, defer Flutter-specific checks to vgv-accessibility output. Avoids duplicated criteria but introduces an agent→skill coupling pattern not present elsewhere in agents/quality-review/.

Option 1 fits this PR's scope and aligns with Wingspan's tech-agnostic charter. Delegation can be revisited later as a cross-agent pattern.

I think option 1 is a perfect fit, if we leave generic accessibility here and keep Wingspan technologically independent. The ai-flutter plugins might still have some features that could be ported to Wingspan, we will check later for duplicated or conflicts

Yep, already asked @AnnaPS to merge the accessibility on flutter plugin so we see the overlap

@ryzizub

ryzizub commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

@andyhorn Anna's PR on Flutter plugin landed, can you check that and update this skill? Thank you!

@andyhorn

Copy link
Copy Markdown
Author

When it detects a Flutter project, it adds a pointer to the AI Flutter plugin accessibility skill for a deeper audit.

@andyhorn

Copy link
Copy Markdown
Author

Copied over the non-Flutter parts from Anna's skill.

andyhorn and others added 8 commits June 11, 2026 11:39
Adds a new quality-review agent that audits UI code for accessibility
issues — semantic structure, keyboard navigation, labels, screen reader
support, contrast handling, and touch targets. Runs in parallel with
the existing four agents on every /review invocation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Enhances the accessibility review agent with generic content drawn from
the vgv-ai-flutter-plugin accessibility skill:

- WCAG 2.1 criterion references on every check (e.g., 1.4.3 Contrast)
- Severity definitions (Critical/Important/Suggestion) with clear action
- Specific contrast ratios (4.5:1 normal, 3:1 large for AA; 7:1, 4.5:1 for AAA)
- UI component contrast check (1.4.11, 3:1)
- Reflow (1.4.10), text spacing (1.4.12), orientation (1.3.4), input purpose (1.3.5)
- No keyboard traps (2.1.2), focus order (2.4.3)
- Platform-specific screen reader list (TalkBack, VoiceOver, Narrator, NVDA, Orca)
- Passed checks section in output to confirm audit coverage
- WCAG conformance baseline defaulting to AA

All additions remain framework-agnostic per Wingspan's design.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rebased onto main to pick up the absolute-path change in PR #177 for the
review skill table. Added WCAG to cspell so accessibility agent docs pass
spell check.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Condense the preloaded description to a single trigger line and reduce
the examples block to one representative case, cutting context cost.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
When the reviewed project is Flutter, the agent now appends a pointer to
the vgv-ai-flutter-plugin accessibility skill in its verdict for a deeper,
framework-specific audit. Keeps Wingspan tech-agnostic with no agent-to-skill
coupling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Port the level-by-level WCAG 2.1 criteria reference (A, AA, AAA) from the
merged flutter plugin accessibility skill, rewritten tech-agnostically.
Adds the criteria the agent was missing (1.3.3, 2.4.1, 2.4.2, 2.5.3, 1.4.5,
1.4.13, 2.4.5, 2.4.6, 2.4.11, 3.1.2, 3.2.3, 3.2.4, 3.3.3, 3.3.4, and the
full AAA set) and links it from the conformance baseline. Allowlist
"hoverable" (WCAG 1.4.13 term) for cspell.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@andyhorn andyhorn force-pushed the feat/accessibility-review-agent branch from fe20aa6 to f6d9a17 Compare June 11, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants