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 this reference for WebSocket, server-sent events (SSE), Socket.IO, GraphQL subscription transport, or another long-lived event channel.
Do not select a package from the word "socket" alone. Inspect the server endpoint, handshake, subprotocol, message envelope, authentication, heartbeat, delivery guarantees, supported platforms, and existing client.
Last-Event-ID or equivalent resume behavior, and whether one-way delivery is sufficient.flutter-platform-integration only when native APIs, plugins, entitlements, or platform channels are actually involved.Give each connection one lifecycle owner outside disposable widgets. Represent states useful to the product, such as idle, connecting, connected, backing off, suspended, and permanently closed. Expose domain events and connection status separately so a reconnect does not masquerade as business data.
Create subscriptions once, cancel them deterministically, and make connect, close, and dispose idempotent. Do not turn a single-subscription stream into a broadcast stream merely to silence an ownership error. Route duplicate listeners, stale callbacks, or ordering races to dart-concurrency when concurrency is the underlying defect.
Treat foreground, background, network changes, logout, account switch, and process restart as explicit transitions. Mobile operating systems may suspend or terminate the process; do not promise an indefinitely open connection for background alerts. Use the notification delivery path when the product must notify a terminated app, then reconcile live state after resume.
Transport delivery is not business completion. When correctness matters, define message IDs, acknowledgements, sequence or revision numbers, duplicate suppression, gap detection, and authoritative snapshot recovery. Document whether ordering is per connection, topic, entity, or globally undefined.
Use the protocol or server's heartbeat contract rather than layering incompatible ping loops. Distinguish liveness timeout from ordinary request timeout. Decode text and binary frames defensively, enforce payload limits, and reject unsupported message versions.
For high-rate streams, choose an explicit semantic policy: process every event, coalesce by entity, keep latest, sample, pause upstream, or disconnect and resync. Do not allow unbounded stream controllers, widget rebuilds, logs, or in-memory queues. Measure UI and decode cost before claiming the transport causes jank.
Use a controllable fake server or transport adapter. Cover handshake failure, malformed and oversized messages, close codes or reasons, half-open detection, heartbeat timeout, auth expiry, retry exhaustion, duplicate and out-of-order events, missed-event recovery, bounded buffering, app lifecycle transitions, logout, account switch, and disposal. Verify platform-specific connection and background behavior on intended devices before making delivery or battery claims.
.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