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)
1---2name: flutter-accessibility-auditor3description: 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.4---56# flutter-accessibility-auditor78Audits 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.910## When to Use1112This skill should be activated when the user:13- audit this Flutter app for accessibility14- check my Flutter code for accessibility issues15- run an accessibility review on my Flutter project16- find accessibility problems in this Flutter app17- review accessibility compliance of my Flutter widgets18- is my Flutter app accessible to screen readers19- check WCAG compliance in my Flutter code20- analyze my Flutter UI for accessibility violations2122**Do NOT use this skill when:**23- how do I use the Semantics widget24- what is TalkBack and VoiceOver25- write a Semantics wrapper for this widget26- teach me about WCAG guidelines27- implement keyboard navigation in Flutter2829## Workflow3031Follow these steps precisely. Each step has a validation checkpoint.32Do NOT proceed to the next step until the current step passes validation.3334### Step 1: Scan Widget Tree for Accessibility Surface3536#### 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 widgets3738**Inputs:**39- `user_request` (string, required): Input: user_request4041**Expected Output:**42- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_04344**✅ Validation Checkpoint:**45Run `scripts/validate_scan_widget_tree_0.sh` to verify this step.4647**🚩 Red-Flag Rules:**48- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)49- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)50- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)51- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)52- 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)53- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)54- Empty Output: Output is empty or contains only whitespace (error)55- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)5657#### 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 onTap5859**Inputs:**60- `previousOutput` (string, required): Output from step scan-widget-tree_06162**Expected Output:**63- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_16465**✅ Validation Checkpoint:**66Run `scripts/validate_scan_widget_tree_1.sh` to verify this step.6768**🚩 Red-Flag Rules:**69- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)70- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)71- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)72- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)73- 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)74- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)75- Empty Output: Output is empty or contains only whitespace (error)76- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)7778#### 1.3 Map the widget hierarchy to identify parent-child relationships and determine which widgets are semantic roots versus semantic leaves7980**Inputs:**81- `previousOutput` (string, required): Output from step scan-widget-tree_18283**Expected Output:**84- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_28586**✅ Validation Checkpoint:**87Run `scripts/validate_scan_widget_tree_2.sh` to verify this step.8889**🚩 Red-Flag Rules:**90- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)91- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)92- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)93- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)94- 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)95- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)96- Empty Output: Output is empty or contains only whitespace (error)97- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)9899#### 1.4 Identify all custom widgets that extend StatelessWidget or StatefulWidget and flag those that build interactive trees without Semantics wrappers100101**Inputs:**102- `previousOutput` (string, required): Output from step scan-widget-tree_2103104**Expected Output:**105- `intermediateOutput` (string): Intermediate output from step scan-widget-tree_3106107**✅ Validation Checkpoint:**108Run `scripts/validate_scan_widget_tree_3.sh` to verify this step.109110**🚩 Red-Flag Rules:**111- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)112- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)113- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)114- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)115- 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)116- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)117- Empty Output: Output is empty or contains only whitespace (error)118- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)119120#### 1.5 List all Image and Icon widgets and check whether they have a semanticLabel property set, noting every instance missing semanticLabel as a finding121122**Inputs:**123- `previousOutput` (string, required): Output from step scan-widget-tree_3124125**Expected Output:**126- `widget_inventory` (string): Output: widget_inventory127- `interactive_elements` (string): Output: interactive_elements128- `image_audit` (string): Output: image_audit129130**✅ Validation Checkpoint:**131Run `scripts/validate_scan_widget_tree_4.sh` to verify this step.132133**🚩 Red-Flag Rules:**134- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)135- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)136- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)137- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)138- 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)139- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)140- Empty Output: Output is empty or contains only whitespace (error)141- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)142143### Step 2: Audit Semantics Widget and Label Usage144145#### 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 context146147**Inputs:**148- `widget_inventory` (string, required): Input: widget_inventory149- `interactive_elements` (string, required): Input: interactive_elements150151**Expected Output:**152- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_0153154**✅ Validation Checkpoint:**155Run `scripts/validate_audit_semantics_usage_0.sh` to verify this step.156157**🚩 Red-Flag Rules:**158- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)159- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)160- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)161- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)162- 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)163- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)164- Empty Output: Output is empty or contains only whitespace (error)165- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)166167#### 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 violation168169**Inputs:**170- `previousOutput` (string, required): Output from step audit-semantics-usage_0171172**Expected Output:**173- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_1174175**✅ Validation Checkpoint:**176Run `scripts/validate_audit_semantics_usage_1.sh` to verify this step.177178**🚩 Red-Flag Rules:**179- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)180- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)181- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)182- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)183- 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)184- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)185- Empty Output: Output is empty or contains only whitespace (error)186- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)187188#### 2.3 Check all ExcludeSemantics and BlockSemantics usages to verify they are not hiding important interactive or informational content from screen readers189190**Inputs:**191- `previousOutput` (string, required): Output from step audit-semantics-usage_1192193**Expected Output:**194- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_2195196**✅ Validation Checkpoint:**197Run `scripts/validate_audit_semantics_usage_2.sh` to verify this step.198199**🚩 Red-Flag Rules:**200- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)201- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)202- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)203- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)204- 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)205- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)206- Empty Output: Output is empty or contains only whitespace (error)207- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)208209#### 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 subtitle210211**Inputs:**212- `previousOutput` (string, required): Output from step audit-semantics-usage_2213214**Expected Output:**215- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_3216217**✅ Validation Checkpoint:**218Run `scripts/validate_audit_semantics_usage_3.sh` to verify this step.219220**🚩 Red-Flag Rules:**221- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)222- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)223- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)224- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)225- 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)226- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)227- Empty Output: Output is empty or contains only whitespace (error)228- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)229230#### 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 manually231232**Inputs:**233- `previousOutput` (string, required): Output from step audit-semantics-usage_3234235**Expected Output:**236- `intermediateOutput` (string): Intermediate output from step audit-semantics-usage_4237238**✅ Validation Checkpoint:**239Run `scripts/validate_audit_semantics_usage_4.sh` to verify this step.240241**🚩 Red-Flag Rules:**242- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)243- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)244- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)245- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)246- 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)247- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)248- Empty Output: Output is empty or contains only whitespace (error)249- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)250251#### 2.6 Verify TextSpan.locale is set for any multi-language text content to ensure screen readers use the correct voice252253**Inputs:**254- `previousOutput` (string, required): Output from step audit-semantics-usage_4255256**Expected Output:**257- `semantics_findings` (string): Output: semantics_findings258259**✅ Validation Checkpoint:**260Run `scripts/validate_audit_semantics_usage_5.sh` to verify this step.261262**🚩 Red-Flag Rules:**263- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)264- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)265- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)266- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)267- 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)268- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)269- Empty Output: Output is empty or contains only whitespace (error)270- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)271272### Step 3: Audit Visual Design for Accessibility Compliance273274#### 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.3275276**Inputs:**277- `widget_inventory` (string, required): Input: widget_inventory278279**Expected Output:**280- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_0281282**✅ Validation Checkpoint:**283Run `scripts/validate_audit_visual_accessibility_0.sh` to verify this step.284285**🚩 Red-Flag Rules:**286- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)287- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)288- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)289- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)290- 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)291- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)292- Empty Output: Output is empty or contains only whitespace (error)293- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)294295#### 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.5296297**Inputs:**298- `previousOutput` (string, required): Output from step audit-visual-accessibility_0299300**Expected Output:**301- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_1302303**✅ Validation Checkpoint:**304Run `scripts/validate_audit_visual_accessibility_1.sh` to verify this step.305306**🚩 Red-Flag Rules:**307- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)308- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)309- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)310- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)311- 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)312- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)313- Empty Output: Output is empty or contains only whitespace (error)314- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)315316#### 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.1317318**Inputs:**319- `previousOutput` (string, required): Output from step audit-visual-accessibility_1320321**Expected Output:**322- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_2323324**✅ Validation Checkpoint:**325Run `scripts/validate_audit_visual_accessibility_2.sh` to verify this step.326327**🚩 Red-Flag Rules:**328- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)329- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)330- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)331- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)332- 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)333- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)334- Empty Output: Output is empty or contains only whitespace (error)335- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)336337#### 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 scaling338339**Inputs:**340- `previousOutput` (string, required): Output from step audit-visual-accessibility_2341342**Expected Output:**343- `intermediateOutput` (string): Intermediate output from step audit-visual-accessibility_3344345**✅ Validation Checkpoint:**346Run `scripts/validate_audit_visual_accessibility_3.sh` to verify this step.347348**🚩 Red-Flag Rules:**349- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)350- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)351- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)352- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)353- 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)354- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)355- Empty Output: Output is empty or contains only whitespace (error)356- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)357358#### 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 support359360**Inputs:**361- `previousOutput` (string, required): Output from step audit-visual-accessibility_3362363**Expected Output:**364- `visual_findings` (string): Output: visual_findings365366**✅ Validation Checkpoint:**367Run `scripts/validate_audit_visual_accessibility_4.sh` to verify this step.368369**🚩 Red-Flag Rules:**370- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)371- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)372- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)373- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)374- 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)375- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)376- Empty Output: Output is empty or contains only whitespace (error)377- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)378379### Step 4: Audit Navigation, Focus, and Interaction Patterns380381#### 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 something382383**Inputs:**384- `interactive_elements` (string, required): Input: interactive_elements385386**Expected Output:**387- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_0388389**✅ Validation Checkpoint:**390Run `scripts/validate_audit_navigation_and_interaction_0.sh` to verify this step.391392**🚩 Red-Flag Rules:**393- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)394- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)395- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)396- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)397- 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)398- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)399- Empty Output: Output is empty or contains only whitespace (error)400- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)401402#### 4.2 Check that focus traversal order is logical by examining FocusNode, FocusScope, and FocusTraversalGroup usages to ensure tabbing order follows visual reading order403404**Inputs:**405- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_0406407**Expected Output:**408- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_1409410**✅ Validation Checkpoint:**411Run `scripts/validate_audit_navigation_and_interaction_1.sh` to verify this step.412413**🚩 Red-Flag Rules:**414- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)415- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)416- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)417- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)418- 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)419- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)420- Empty Output: Output is empty or contains only whitespace (error)421- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)422423#### 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 action424425**Inputs:**426- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_1427428**Expected Output:**429- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_2430431**✅ Validation Checkpoint:**432Run `scripts/validate_audit_navigation_and_interaction_2.sh` to verify this step.433434**🚩 Red-Flag Rules:**435- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)436- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)437- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)438- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)439- 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)440- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)441- Empty Output: Output is empty or contains only whitespace (error)442- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)443444#### 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 input445446**Inputs:**447- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_2448449**Expected Output:**450- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_3451452**✅ Validation Checkpoint:**453Run `scripts/validate_audit_navigation_and_interaction_3.sh` to verify this step.454455**🚩 Red-Flag Rules:**456- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)457- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)458- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)459- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)460- 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)461- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)462- Empty Output: Output is empty or contains only whitespace (error)463- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)464465#### 4.5 Verify that important destructive actions such as delete, remove, and submit have undo capability or confirmation dialogs466467**Inputs:**468- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_3469470**Expected Output:**471- `intermediateOutput` (string): Intermediate output from step audit-navigation-and-interaction_4472473**✅ Validation Checkpoint:**474Run `scripts/validate_audit_navigation_and_interaction_4.sh` to verify this step.475476**🚩 Red-Flag Rules:**477- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)478- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)479- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)480- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)481- 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)482- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)483- Empty Output: Output is empty or contains only whitespace (error)484- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)485486#### 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 announcements487488**Inputs:**489- `previousOutput` (string, required): Output from step audit-navigation-and-interaction_4490491**Expected Output:**492- `navigation_findings` (string): Output: navigation_findings493494**✅ Validation Checkpoint:**495Run `scripts/validate_audit_navigation_and_interaction_5.sh` to verify this step.496497**🚩 Red-Flag Rules:**498- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)499- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)500- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)501- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)502- 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)503- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)504- Empty Output: Output is empty or contains only whitespace (error)505- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)506507### Step 5: Audit Platform-Specific Accessibility Integration508509#### 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 settings510511**Inputs:**512- `widget_inventory` (string, required): Input: widget_inventory513- `interactive_elements` (string, required): Input: interactive_elements514515**Expected Output:**516- `intermediateOutput` (string): Intermediate output from step audit-platform-integration_0517518**✅ Validation Checkpoint:**519Run `scripts/validate_audit_platform_integration_0.sh` to verify this step.520521**🚩 Red-Flag Rules:**522- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)523- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)524- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)525- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)526- 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)527- Excessive Output Length: Output is suspiciously long, suggesting confusion or hallucination (warning)528- Empty Output: Output is empty or contains only whitespace (error)529- Apology Pattern: Output starts with an apology, suggesting the model is confused (warning)530531#### 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 widgets532533**Inputs:**534- `previousOutput` (string, required): Output from step audit-platform-integration_0535536**Expected Output:**537- `intermediateOutput` (string): Intermediate output from step audit-platform-integration_1538539**✅ Validation Checkpoint:**540Run `scripts/validate_audit_platform_integration_1.sh` to verify this step.541542**🚩 Red-Flag Rules:**543- No Blanket Compliance Claim: Audit must not claim full accessibility compliance without detailed per-item analysis — every checklist item must be individually evaluated (error)544- No Findings Without File References: Every finding must reference a specific file path — findings without file locations are not actionable (warning)545- No Unclassified Severity: Every finding must have an explicit severity level (Critical, High, Medium, Low, or Info) (warning)546- Require WCAG Success Criterion: Visual and interaction findings should reference the specific WCAG 2.1 success criterion for credibility and traceability (warning)547- No Fix Recommendation Without Code Example: Every recommended fix must include a Dart code ex548549…(truncated)