# Form Lens > A check of one Flutter form against the validated-form pattern. Paste the form's widget and State class (or drop a > .dart file); the browser masks comments and strings, matches every call to its closing bracket, reads its named > arguments and locates each class and build method, then finds a Form in a StatelessWidget, a GlobalKey > made in build or not final, a Form with no key, plain TextFields inside the Form, TextFormFields with no validator, > validators that return an empty string, never return null or never check for an empty value, and a submit that never > calls validate() or ignores its result - plus the page's own input basics (visible passwords, missing keyboard types, > controllers never disposed). Metered runs write the review and the rewritten form. Built on the SkillSafe skill > @flutter/flutter-building-forms, from flutter/skills (BSD-3-Clause), by the Flutter team. https://form-lens.skillsafe.ai/ ## What is free - The scan: every finding with an id (F1, F2, ...), a severity (blocker - the form cannot work, major, minor), the line, where it is, what the page saw and the fix. - The messages an empty submit shows (each validator's first message, optional fields left out) and test/form_test.dart: pump the form, tap the submit button by its label, expect each message. - The skill's validated-form checklist marked from the scan, a findings CSV and everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (review or rewrite), `form`, `code`, `carry` (rewrite only: the review's decisions) and `facts` (the page's scan). - `review` replies with `summary`, `findings` (confirmed ids with the issue, the fix and a short code fix), `cleared`, `extra` (up to five issues a scan cannot see, on real lines), `plan` (the fixes in order, naming their ids) and `caveats`. - `rewrite` replies with `summary`, `code` (the whole rewritten form), `changes`, `kept` and `caveats`. The page holds every reply to its scan: each id accounted for exactly once, every class and the whole file kept, and the rewritten form re-scanned - a claimed fix the re-scan still finds, or a new finding, is flagged. Form Lens is an independent tool for Flutter developers, not affiliated with or endorsed by Google or the Flutter team. ## Links - API tutorial: https://form-lens.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@flutter/flutter-building-forms