Flutter accessibility validator
Skill Desquared/agents-rules-skills/skills/flutter-accessibility-validator
Use when creating or modifying Flutter UI components, screens, or widgets, or when the user asks about accessibility, screen reader support, VoiceOver, TalkBack, touch targets, color contrast, or WCAG compliance in a Flutter app.From its SKILL.md
npx -y skills add Desquared/agents-rules-skills --skill flutter-accessibility-validatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
1.9 KB, as published. Nobody here has run it
Accessibility Skill
Semantic Labels
// Icons & buttons
Semantics(label: 'Settings', button: true, child: Icon(Icons.settings))
// Images (or ExcludeSemantics if decorative)
Semantics(label: 'Profile picture', image: true, child: Image.network(url))
// Interactive (prefer InkWell over GestureDetector)
Semantics(button: true, label: 'Open', child: InkWell(...))
Dynamic Announcements
import 'package:flutter/semantics.dart';
SemanticsService.announce('Button unlocked!', TextDirection.ltr);
Touch Targets & Forms
// Minimum 48x48 dp
IconButton(iconSize: 48, ...)
// Forms need labels
TextField(decoration: InputDecoration(
labelText: 'Email',
errorText: isValid ? null : 'Invalid',
))
Color Contrast
// Use ColorPalette (WCAG-compliant)
Text('Text', style: TextStyle(
color: ColorPalette.coloursBasicText.platformBrightnessColor(context),
))
Focus Management
FocusTraversalGroup(
policy: OrderedTraversalPolicy(),
child: Column(children: [
FocusTraversalOrder(order: NumericFocusOrder(1), child: TextField(...)),
FocusTraversalOrder(order: NumericFocusOrder(2), child: Button(...)),
]),
)
Testing
// Automated
await expectLater(tester, meetsGuideline(textContrastGuideline));
await expectLater(tester, meetsGuideline(androidTapTargetGuideline));
Checklist
- Semantic labels on interactive elements
- Touch targets ≥ 48x48 dp
- Contrast ≥ 4.5:1 (text), 3:1 (UI)
- Forms have labels + errors
- Dynamic changes announced
- Logical focus order
- Tested with VoiceOver + TalkBack