# Channel Lens > A check of one Flutter plugin's method channel contract across its files against the plugin guidance. Paste the > Dart, Kotlin/Java, Swift/Objective-C, Windows C++ and pubspec.yaml files one after another (each under a > "// file: path" line, "# file: path" for YAML, or drop several at once); the browser masks comments and strings, > resolves string constants, and lines the sides up: the MethodChannel name in Dart against each platform's channel, > every method Dart invokes against every branch each handler matches, the not-implemented fallback, the Android v2 > embedding (FlutterPlugin, a public constructor, one shared setup for registerWith and onAttachedToEngine, > setMethodCallHandler(null) on detach, ActivityAware with all four callbacks), register(with:) and > addMethodCallDelegate on iOS and macOS, and pubspec's pluginClass, package and ffiPlugin against the code. Metered > runs write the review and the corrected files. Built on the SkillSafe skill @flutter/flutter-building-plugins, from > flutter/skills (BSD-3-Clause), by the Flutter team. Channel Lens is an independent tool, not affiliated with or endorsed by Google or the Flutter team. https://channel-lens.skillsafe.ai/ ## What is free - The scan: every finding with an id (M1, M2, ...), a severity (blocker - calls never arrive or the plugin does not build, major, minor), the line, where it sits, what the page saw and the fix. - The method contract: every method with where Dart invokes it and where each platform handles it, and whether they match; the channels, plugin classes and pubspec pluginClass each side uses. - The skill's checklist marked from the scan, the plugin commands filled in with this plugin's name, org and platforms (flutter create for a standard or FFI plugin, flutter build apk --config-only, the Visual Studio rebuild, adding a platform), findings and methods 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), `unit`, `code`, `carry` (rewrite only: the review's decisions) and `facts` (the page's scan, method contract and channels). - `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` (every file rewritten, each under its own file line), `changes`, `kept` and `caveats`. The page holds every reply to its scan: each id accounted for exactly once, every file line and class and the whole paste kept, and the rewritten files re-scanned - a claimed fix the re-scan still finds, or a new finding, is flagged. ## Links - API tutorial: https://channel-lens.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@flutter/flutter-building-plugins