Flutter security a11y
Skill Neznakometz/StackForge/mobile/skills/flutter-security-a11y
Thin core + domain sets for a fast, stack-aware project start. Cross-agent (Claude Code, Cursor, Codex, Gemini) via the SKILL.md standard. MIT.
npx -y skills add Neznakometz/StackForge --skill flutter-security-a11yAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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.
What its author says it does
Copied from the file, not written here
Security and accessibility for a Flutter app — secure storage, secrets, cert pinning, obfuscation; Semantics, contrast, text scaling, screen readers. Apply when working with data storage, networking, authorization, and when building UI.
SKILL.md
1.7 KB, as published. Nobody here has run it
Flutter — security and accessibility
Security
- Secrets/tokens —
flutter_secure_storage(iOS/macOS Keychain, Android Keystore), NOTSharedPreferences, NOT in code, NOT in logs.- iOS:
IOSOptions(accessibility: KeychainAccessibility.first_unlock)for tokens needed by background tasks. - macOS/iOS: Keychain Sharing capability in
.entitlements.
- iOS:
- Build config —
--dart-define/--dart-define-from-file; do not bake keys into the binary (they get reversed). - Networking — HTTPS only; never
badCertificateCallback => true. Pinning against MITM:SecurityContext(withTrustedRoots: false)+setTrustedCertificatesBytes(), or a fingerprint check; keep fingerprints in config (rotation = config edit). - Release —
--obfuscate --split-debug-info=<dir>(keep symbols for de-obfuscating stack traces). - OWASP Mobile baseline: no secrets in plaintext/logs, obfuscation, secure communications.
Accessibility
Semantics(label:, button:, ...)for meaning;ExcludeSemantics/MergeSemanticsto clean up the tree;SemanticsRoleon web.- Text respects the system scale — the layout must not clip enlarged text (no fixed heights for text; test at a large scale).
- Text/control contrast ≥ 4.5:1.
- Every control is describable and understandable in TalkBack (Android) and VoiceOver (iOS) — verify on a real screen reader.
- Tap targets ≥ 48×48 (Android) / 44×44 (iOS) — enforce in widget tests (see
flutter-testing).