# Flutter Accessibility Auditor

> Audits Flutter application source code for accessibility compliance issues following Flutter's official accessibility guidelines, WCAG 2.1 standards, and platform-specific requirements (Android TalkBack, iOS VoiceOver). Produces a structured audit report with severity ratings, file locations, code examples of violations, and recommended fixes using Flutter's Semantics widgets and accessibility APIs. Activates when the user requests an accessibility review or audit of their Flutter codebase.

- Skill: `aelshamy/flutter-accessibility-auditor` (Agent Skill, multi-file: 37 files)
- Install (CLI): `npx skillmds@latest add aelshamy/flutter-accessibility-auditor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aelshamy/flutter-accessibility-auditor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: aelshamy (https://skillmd.com/u/aelshamy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aelshamy/flutter-accessibility-auditor

---


# flutter-accessibility-auditor

Audits Flutter application source code for accessibility compliance issues following Flutter's official accessibility guidelines, WCAG 2.1 standards, and platform-specific requirements (Android TalkBack, iOS VoiceOver). Produces a structured audit report with severity ratings, file locations, code examples of violations, and recommended fixes using Flutter's Semantics widgets and accessibility APIs. Activates when the user requests an accessibility review or audit of their Flutter codebase.

## When to Use

This skill should be activated when the user:
- audit this Flutter app for accessibility
- check my Flutter code for accessibility issues
- run an accessibility review on my Flutter project
- find accessibility problems in this Flutter app
- review accessibility compliance of my Flutter widgets
- is my Flutter app accessible to screen readers
- check WCAG compliance in my Flutter code
- analyze my Flutter UI for accessibility violations

**Do NOT use this skill when:**
- how do I use the Semantics widget
- what is TalkBack and VoiceOver
- write a Semantics wrapper for this widget
- teach me about WCAG guidelines
- implement keyboard navigation in Flutter

## Workflow

Follow these steps precisely. Each step has a validation checkpoint.
Do NOT proceed to the next step until the current step passes validation.

### Step 1: Scan Widget Tree for Accessibility Surface

#### 1.1 Parse all Dart files in the project and identify every widget that renders visible UI including Text, Image, Icon, Container, CustomPaint, and Canvas-based widgets

**Inputs:**
- `user_request` (string, required): Input: user_request

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_0

**✅ Validation Checkpoint:**
Run `scripts/validate_scan_widget_tree_0.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 1.2 Catalog every interactive widget including GestureDetector, InkWell, IconButton, ElevatedButton, TextButton, OutlinedButton, FloatingActionButton, PopupMenuButton, DropdownButton, Switch, Checkbox, Radio, Slider, TextField, and any ListTile with onTap

**Inputs:**
- `previousOutput` (string, required): Output from step scan-widget-tree_0

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_1

**✅ Validation Checkpoint:**
Run `scripts/validate_scan_widget_tree_1.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 1.3 Map the widget hierarchy to identify parent-child relationships and determine which widgets are semantic roots versus semantic leaves

**Inputs:**
- `previousOutput` (string, required): Output from step scan-widget-tree_1

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_2

**✅ Validation Checkpoint:**
Run `scripts/validate_scan_widget_tree_2.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 1.4 Identify all custom widgets that extend StatelessWidget or StatefulWidget and flag those that build interactive trees without Semantics wrappers

**Inputs:**
- `previousOutput` (string, required): Output from step scan-widget-tree_2

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_3

**✅ Validation Checkpoint:**
Run `scripts/validate_scan_widget_tree_3.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 1.5 List all Image and Icon widgets and check whether they have a semanticLabel property set, noting every instance missing semanticLabel as a finding

**Inputs:**
- `previousOutput` (string, required): Output from step scan-widget-tree_3

**Expected Output:**
- `widget_inventory` (string): Output: widget_inventory
- `interactive_elements` (string): Output: interactive_elements
- `image_audit` (string): Output: image_audit

**✅ Validation Checkpoint:**
Run `scripts/validate_scan_widget_tree_4.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

### Step 2: Audit Semantics Widget and Label Usage

#### 2.1 Search for all uses of the Semantics widget and verify each instance sets at minimum one of label, hint, value, button, header, image, link, or toggled properties appropriately for its context

**Inputs:**
- `widget_inventory` (string, required): Input: widget_inventory
- `interactive_elements` (string, required): Input: interactive_elements

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_0

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_0.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 2.2 Identify all interactive elements such as buttons, tappable areas, and form fields that lack any Semantics wrapper, tooltip, or semanticLabel and flag each missing instance as a violation

**Inputs:**
- `previousOutput` (string, required): Output from step audit-semantics-usage_0

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_1

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_1.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 2.3 Check all ExcludeSemantics and BlockSemantics usages to verify they are not hiding important interactive or informational content from screen readers

**Inputs:**
- `previousOutput` (string, required): Output from step audit-semantics-usage_1

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_2

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_2.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 2.4 Verify that MergeSemantics is used where groups of related widgets should be announced together, for example a list tile with icon plus text plus subtitle

**Inputs:**
- `previousOutput` (string, required): Output from step audit-semantics-usage_2

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_3

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_3.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 2.5 Check that SemanticsBinding.instance.ensureSemantics() is called in main() for web targets to auto-enable the semantics tree without requiring users to toggle it manually

**Inputs:**
- `previousOutput` (string, required): Output from step audit-semantics-usage_3

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_4

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_4.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 2.6 Verify TextSpan.locale is set for any multi-language text content to ensure screen readers use the correct voice

**Inputs:**
- `previousOutput` (string, required): Output from step audit-semantics-usage_4

**Expected Output:**
- `semantics_findings` (string): Output: semantics_findings

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_semantics_usage_5.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

### Step 3: Audit Visual Design for Accessibility Compliance

#### 3.1 Identify all hardcoded Color values and Theme color usages then calculate contrast ratios between text foreground colors and their background colors, flagging any text below 4.5:1 for normal text or 3.0:1 for large text per WCAG 2.1 AA success criterion 1.4.3

**Inputs:**
- `widget_inventory` (string, required): Input: widget_inventory

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_0

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_visual_accessibility_0.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 3.2 Check that all interactive elements have minimum tap target sizes of 48x48 logical pixels by examining SizedBox constraints, padding, and MaterialTapTargetSize settings per WCAG 2.1 success criterion 2.5.5

**Inputs:**
- `previousOutput` (string, required): Output from step audit-visual-accessibility_0

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_1

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_visual_accessibility_1.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 3.3 Verify that the app does not use color as the only means of conveying information such as status indicators that are only colored dots without icons or text labels per WCAG 2.1 success criterion 1.4.1

**Inputs:**
- `previousOutput` (string, required): Output from step audit-visual-accessibility_1

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_2

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_visual_accessibility_2.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 3.4 Check that all text widgets either use Theme-based text styles via Theme.of(context).textTheme or respect the user font size preferences and flag any hardcoded fontSize assignments that would bypass system font scaling

**Inputs:**
- `previousOutput` (string, required): Output from step audit-visual-accessibility_2

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_3

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_visual_accessibility_3.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 3.5 Verify that no layout uses fixed pixel heights that would clip or overflow content when system font scaling is set to maximum via AccessibilityFeatures support

**Inputs:**
- `previousOutput` (string, required): Output from step audit-visual-accessibility_3

**Expected Output:**
- `visual_findings` (string): Output: visual_findings

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_visual_accessibility_4.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

### Step 4: Audit Navigation, Focus, and Interaction Patterns

#### 4.1 Verify that all interactive widgets have non-empty onPressed or onTap callbacks and flag any interactive widget with a null or no-op callback as per Flutter accessibility release checklist which requires active interactions to always do something

**Inputs:**
- `interactive_elements` (string, required): Input: interactive_elements

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_0

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_0.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 4.2 Check that focus traversal order is logical by examining FocusNode, FocusScope, and FocusTraversalGroup usages to ensure tabbing order follows visual reading order

**Inputs:**
- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_0

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_1

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_1.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 4.3 Verify that no widget automatically changes the user context while they are typing or entering information such as unexpected navigation, dialogs, or focus shifts without user-initiated action

**Inputs:**
- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_1

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_2

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_2.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 4.4 Check that all form fields with validation display clear error messages and suggest corrections where possible by verifying TextFormField validators return descriptive messages not just generic Invalid input

**Inputs:**
- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_2

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_3

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_3.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 4.5 Verify that important destructive actions such as delete, remove, and submit have undo capability or confirmation dialogs

**Inputs:**
- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_3

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_4

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_4.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 4.6 Check that SnackBars, dialogs, and bottom sheets use standard Flutter material components which handle semantics automatically rather than custom overlay implementations that bypass screen reader announcements

**Inputs:**
- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_4

**Expected Output:**
- `navigation_findings` (string): Output: navigation_findings

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_navigation_and_interaction_5.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

### Step 5: Audit Platform-Specific Accessibility Integration

#### 5.1 Check that the app handles MediaQuery.boldTextOf(context), MediaQuery.highContrastOf(context), and MediaQuery.invertColorsOf(context) accessibility features and flag if the app does not respond to system-level accessibility settings

**Inputs:**
- `widget_inventory` (string, required): Input: widget_inventory
- `interactive_elements` (string, required): Input: interactive_elements

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-platform-integration_0

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_platform_integration_0.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code example showing the corrected widget usage — text-only recommendations are insufficient (warning)
- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)
- Empty Output: Output is empty or contains only whitespace (error)
- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)

#### 5.2 Verify that Hero animations and page transitions do not interfere with screen reader announcements by checking for appropriate use of semanticsLabel on Hero widgets

**Inputs:**
- `previousOutput` (string, required): Output from step audit-platform-integration_0

**Expected Output:**
- `intermediateOutput` (string): Intermediate output from step audit-platform-integration_1

**✅ Validation Checkpoint:**
Run `scripts/validate_audit_platform_integration_1.sh` to verify this step.

**🚩 Red-Flag Rules:**
- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)
- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)
- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)
- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)
- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code ex

…(truncated)
