What problem does it solve? Flutter forms commonly leak TextEditingControllers and FocusNodes, return hardcoded un-localized validator strings, misuse async validation inside synchronous validators, and rebuild entire forms on every keystroke. This Skill codifies the correct patterns and ships a shell script that statically guards against the most common violations before a PR. ## Core Features & Use Cases - Validation architecture: Separates pure synchronous validators (localized via AppLocalizations) from async availability checks that live in a debounced Riverpod Notifier surfaced through InputDecoration.errorText. - Focus and keyboard contracts: Covers FocusNode lifecycle and disposal, FocusTraversalGroup ordering, TextInputAction wiring, keyboardType, textCapitalization, autofillHints, and TextInputFormatter usage. - Static guard script: scripts/check_forms.sh fails CI on controllers without dispose(), async validators, and hardcoded validator string literals. - Use Case: When building a signup form with an email field and an async username-availability check, apply this Skill to keep the sync validator pure, debounce the network check in a Notifier, derive submit-button enablement from state, and pass the check_forms.sh gate. ## Quick Start Ask the AI to build a Flutter login form following the forms-and-input rules, with localized validators, a debounced async availability check in a Riverpod Notifier, and proper controller disposal.