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
Choose the smallest boundary that fits the native capability, distribution model, performance requirements, and supported platforms.
Prefer an adequate maintained package when its platform coverage, license, API, release history, native dependencies, and lifecycle behavior meet the project. Inspect resolved versions and native implementations; do not add a second package for a capability already present.
Use a small method or event channel for a narrow stable surface. Use Pigeon or another existing typed contract when multiple methods, structured messages, or evolution benefit from generated compile-time structure.
Define thread/task-queue requirements, serialization limits, cancellation, event subscription, error mapping, engine attachment, activity or view-controller attachment, and background-isolate access. Validate messages on both sides and avoid exposing domain objects as channel transport.
Use dart:ffi for C-compatible APIs, generated bindings, or native libraries where direct calls fit. Inspect the project's Flutter and Dart SDK before selecting templates and build APIs.
For SDKs that support the modern workflow, prefer the documented package_ffi template and build hooks. Use a standard plugin when the implementation needs Flutter Plugin APIs or OS-language integration; use legacy FFI plugin mechanics only when the requirement or supported SDK demands them.
Define ABI, symbol visibility, memory ownership, allocation and release, strings and buffers, struct layout, callbacks, threading, blocking behavior, exceptions or error codes, architectures, linking, and binary integrity. Never pass Dart-managed pointers beyond their valid lifetime.
Use current package:web and dart:js_interop patterns supported by the project's SDK. Keep browser-only imports behind platform boundaries and verify Wasm compatibility when it is a target. Validate messages, origins, DOM ownership, cleanup, and unsupported behavior.
Use a platform view only when a native-rendered control is required. Evaluate composition mode, gestures, focus, accessibility, overlays, clipping, transforms, scrolling, keyboard, lifecycle, and performance on every target. A platform view is not a general escape hatch for difficult Flutter layout.
Test the Dart adapter with fakes, then exercise each native implementation on its supported target. Verify lifecycle reattachment, multiple engines when applicable, permissions, threading, cancellation, unsupported platforms, release builds, and native resource cleanup.
.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
references
flutter-notifications
flutter-observability
flutter-openapi-client
flutter-package-development
flutter-performance
flutter-persistence
references
flutter-platform-integration
flutter-product-analytics
flutter-responsive-layout
references
flutter-runtime-debugging
flutter-security
flutter-state-management
flutter-testing
flutter-ui-design
flutter-ui-patterns
flutter-visual-effects