Focused Agent Skills for complete Flutter and Dart app delivery.
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Inspect the resolved scanner plugin, platform backends, required symbologies, camera permissions, and lifecycle contract. Preserve the installed scanner when it meets the feature's needs. Check whether image import, scan region, torch, or offline decoding is supported on the target when required. For app-owned frame analysis, limit formats to the feature's needs and bound queued frames. Let a plugin that already manages frame delivery keep that responsibility.
Check the expected symbology and payload shape for camera input. Treat decoded text and bytes as untrusted. Validate length, syntax, and domain constraints before lookup or navigation. For link-based codes, parse the URI and check the scheme, host, port, and route against the accepted contract. Never automatically execute arbitrary URLs or commands. Resolve account permissions, ticket validity, or payment status with the owning backend. Keep raw tokens and sensitive payloads out of logs.
When the product supports manual entry, keep it available for denied permission or unreadable codes. Apply the same domain validation and action guard to both sources, with camera-only format checks at the scanner boundary. Route accepted in-app destinations through the existing navigation owner.
Give the active scanner session one owner for the camera controller and event subscription. Follow the resolved plugin's start, stop, and disposal contract. Pause scanning when the owning route becomes inactive, even if it stays mounted, and stop or release resources when that scope ends. Invalidate late detections and asynchronous results from the old scope. Resume only while the scan flow is active, permission is available, and its next attempt is armed. Avoid a second lifecycle handler that competes with the plugin.
Use controlled detection and lookup events to test that one valid, authorized scan opens the intended destination once. Where manual entry is supported, test an authorized submission with the camera unavailable and assert that malformed input never reaches lookup. Also cover repeated frames, invalid or multiple codes, backend rejection, and late results after covering or leaving the route. On the affected device, verify camera permission grant and denial separately from successful decoding with representative symbologies and lighting. Test rotation, focus, or offline model readiness when claimed.
.tessl-plugin
skills
dart-concurrency
dart-language
flutter-accessibility
flutter-ai-integration
flutter-animation
flutter-app-workflow
flutter-architecture
flutter-authentication
flutter-background-execution
flutter-build-release
flutter-ci-cd
flutter-code-review
flutter-dependency-upgrades
flutter-device-testing
flutter-figma-workflow
flutter-in-app-purchases
flutter-localization
references
flutter-location-maps
flutter-media
flutter-networking
flutter-notifications
flutter-observability
flutter-openapi-client
flutter-package-development
flutter-payments-checkout
flutter-performance
flutter-persistence
flutter-platform-integration
flutter-product-analytics
flutter-responsive-layout
flutter-runtime-debugging
flutter-security
flutter-state-management
flutter-testing
flutter-text-rendering
references
flutter-ui-design
flutter-ui-patterns
flutter-visual-effects