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
Use this reference when an agent must read or drive a running Flutter app from outside the Dart process: exploratory checks, smoke flows without an integration harness, or confirming what assistive technology and black-box tools actually see. Prefer package:integration_test or Dart and Flutter MCP inspection when the project already supports them; this layer is for observing the platform accessibility tree.
Flutter paints into one platform view. Native tools see Flutter widgets only through the semantics tree that the engine bridges to the platform accessibility API. Reading that tree is cheaper and more reliable than reading screenshots:
# iOS Simulator (idb, only if already installed or approved for the task)
idb ui describe-all --udid <UDID> --json
# Android emulator or device
adb -s <serial> shell uiautomator dump /sdcard/<task-dump>.xml
adb -s <serial> exec-out cat /sdcard/<task-dump>.xml
adb -s <serial> shell rm /sdcard/<task-dump>.xmlReduce the dump to interactive or labeled nodes (role, label, identifier, enabled, bounds) before reasoning over it. Do not paste raw dumps into reports.
idb ui tap, adb shell input tap), or type into a focused field (idb ui text, adb shell input text).Keep credentials out of input text arguments where shell history or retained logs could expose them; use project test accounts.
Semantics(identifier: ...) is exposed as accessibilityIdentifier on iOS and as the view resource ID on Android, so the same identifier works in idb, UiAutomator, and other native black-box tools without changing what screen readers announce. ValueKey and Key are visible only to Flutter finders. Check the project's minimum Flutter SDK and existing naming convention before adding identifiers, and do not rewrite user-facing labels just to ease automation.
If the dump shows a single full-screen Flutter view or no actionable nodes while the screen visibly has controls, lead with the diagnosis below, even when the user asks for a pixel tap. Offer a coordinate tap only after naming the likely cause and the durable fix, label it as a temporary fallback in the response and the report, and verify its outcome without the tree. Before a blind tap on a payment, deletion, or other irreversible control, confirm the build uses a test backend and account.
SemanticsBinding.instance.ensureSemantics() for the app lifetime. Never add this to the production entry path, and report the entrypoint used.Semantics(identifier: ...) on the control, to flutter-accessibility instead of permanently automating by coordinates.Merged semantics (MergeSemantics, ListTile, labeled buttons) collapse children into one node with a joined label. Lazy lists expose only built children, so scroll and re-read rather than searching for off-screen items. Platform views expose their own native tree.
.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
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