What problem does it solve? Adding barcode or QR scanning to an Android app involves decisions that fail silently: choosing between the permission-free Google code scanner and an in-app CameraX pipeline, computing a capture resolution that can actually decode small codes, and treating every decoded payload as untrusted input. This Skill operationalizes the spec/android/barcode-scanning/ rules so the scanner decodes reliably and never auto-acts on a scanned value. ## Core Features & Use Cases - Access-path decision: Chooses between the Play-services code scanner (no camera permission), in-app CameraX plus ML Kit, or a GMS-free ZXing path, with the permission and Data Safety consequences recorded. - Decodable camera pipeline: Computes the ResolutionSelector from the 2-pixels-per-module budget, configures KEEP_ONLY_LATEST backpressure, ImageProxy closing, rotation handling, and ML Kit zoom suggestions. - Payload trust boundary: Validates decoded URLs, tel:, WIFI:, and other payload classes behind a show-then-confirm surface, and generates QR codes with correct quiet zones and error correction. - Use Case: A user asks to add a QR scanner screen to an existing Kotlin/Compose app; the Skill walks the access-path gate, wires dependencies through the version catalog, builds the pipeline and confirmation surface, and finishes with a green ./gradlew build. ## Quick Start Add a QR code scanner screen to my Android app that validates scanned URLs before opening them.