# Route Lens > A check of a Flutter app's navigation against the routing guidance. Paste the GoRouter or MaterialApp and the screens > that navigate (or drop a .dart file); the browser masks comments and strings, matches every call to its closing > bracket and reads its named arguments, rebuilds the go_router route table with every full path, resolves every > context.go, push and goNamed target against it, and flags a GoRouter the app never wires in, Navigator.push inside a > go_router app, named routes, sub-route paths that start with a slash and top-level paths that do not, duplicate > paths, :parameters never read, an initialLocation or link that matches no route, no not-found page, and nested flows > with no key, no onGenerateRoute default or no PopScope. Metered runs write the review and the rewritten router. > Built on the SkillSafe skill @flutter/flutter-implementing-navigation-and-routing, from flutter/skills > (BSD-3-Clause), by the Flutter team. An independent tool, not affiliated with or endorsed by Google or the > Flutter team. https://route-lens.skillsafe.ai/ ## What is free - The scan: every finding with an id (R1, R2, ...), a severity (blocker - the app crashes or the router is unused, major, minor), the line, where it is, what the page saw and the fix. - The route map: every GoRoute's full path, its parameters and screen, and every navigation call marked resolves or points nowhere. - test/routes_test.dart - a deep-link smoke test that opens every declared path (parameters filled with 1) through the router; the skill's checklist; findings and routes as CSV; everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (review or rewrite), `app`, `code`, `carry` (rewrite only: the review's decisions) and `facts` (the page's scan and route table). - `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 file), `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 file re-scanned - a claimed fix the re-scan still finds, or a new finding, is flagged. ## Links - API tutorial: https://route-lens.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@flutter/flutter-implementing-navigation-and-routing