Focused Agent Skills for complete Flutter and Dart app delivery.
72
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Use Flutter tooling for project-aware build and launch behavior, then use adb only for Android state that Flutter tooling does not own. Check the installed Flutter and Android command help before relying on fast-moving native syntax.
flutter emulators
flutter emulators --launch <emulator-id>
flutter devices
adb -s <serial> wait-for-device
adb -s <serial> shell getprop sys.boot_completedSelect the emulator by its Flutter emulator ID, then resolve the runtime serial reported by flutter devices or adb devices -l. Do not assume an AVD name is the runtime serial. Treat wait-for-device as transport readiness; also require sys.boot_completed to become 1 within a bounded loop before installing, launching, or asserting.
Prefer an existing suitable AVD. Before creating or updating one, inspect the project's minimum/target SDK, required ABI, Google APIs or Play Services needs, and available system images. Do not wipe an AVD or load a snapshot that overwrites newer user state unless the target is disposable or the data loss was explicitly approved.
Resolve the application ID for the requested flavor from the Gradle configuration or generated build output. Do not infer it from the Dart package name.
adb -s <serial> get-state
adb -s <serial> shell pm path <application-id>
flutter run -d <serial> --flavor <flavor> -t <entrypoint>Pass only defines already required by the project, and keep secrets out of command arguments and reports. If the test uses a prebuilt APK, verify that it was built for the requested flavor and mode before installing it through the repository's established command.
Use the narrowest operation that represents the scenario:
am kill represents eligible background-process death; it is not equivalent to user force-stop.am force-stop changes later intent, alarm, and background-delivery semantics. Use it only when the scenario is explicitly a force-stop or cold-entry case.For deep links, target the selected serial and verify application behavior after Android accepts the intent:
adb -s <serial> shell am start -W \
-a android.intent.action.VIEW \
-d <uri> <application-id>For Android App Links, separately verify domain association and resolver state when that is part of the claim. A successful am start does not prove navigation, authentication continuation, Back behavior, or exactly-once side effects.
pm grant and pm revoke can prepare supported permission states, but they bypass the real request dialog. Test the actual dialog with the project's existing native-capable harness when prompt copy, choice handling, denial, limited access, or permanently-denied behavior matters.
Orientation, locale, font scale, accessibility, network shaping, battery, and other device-wide settings can affect unrelated applications and later tests. Read the current value first when possible and restore it in failure-safe cleanup. Prefer project/test APIs when they can isolate the state to the application.
Flutter ValueKeys work for Flutter test finders. Native black-box tools generally require stable semantics or accessibility identifiers exposed to the platform tree; do not fall back to screen coordinates without an explicit, unavoidable reason.
Start with Flutter output, then narrow Android logs to the application process or relevant tags:
flutter logs -d <serial>
adb -s <serial> shell pidof <application-id>
adb -s <serial> logcat --pid=<pid>
flutter screenshot -d <serial>
adb -s <serial> exec-out screencap -pStart log capture before reproducing a launch crash. Bound log and video capture, stop it after the scenario, and retain only the relevant interval. Record whether the screenshot came from Flutter tooling or the full Android display when system UI is material.
Android Emulator is useful for repeatable functional, API-level, lifecycle, permission-state, and integration checks. Verify performance, thermal behavior, camera and sensor fidelity, OEM-specific behavior, hardware-backed security, background restrictions that depend on a vendor build, and release readiness on representative physical hardware. Use profile mode and route performance attribution to flutter-performance.
.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-networking
flutter-notifications
flutter-observability
flutter-openapi-client
flutter-package-development
flutter-performance
flutter-persistence
references
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