Focused Agent Skills for complete Flutter and Dart app delivery.
71
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
A migration changes a durable data contract. Preserve the existing storage package and prove what happens to every supported installed version before changing production data.
Inspect pubspec.yaml, the lockfile, SDK constraints, the resolved database package and version, generated schema or adapters, migration callbacks, and publisher documentation. Determine whether the package wraps its migration callback in a transaction and whether nested transactions or schema changes have special constraints.
Inventory:
Do not infer package APIs from a different database library or its latest documentation. Use the resolved package's supported migration and transaction boundary.
Define an ordered transition for every supported starting version. An app can skip releases, so opening version 3 directly with version 5 code must execute the required 3 -> 4 -> 5 work or an equally verified direct transition.
For each step:
Handle an unsupported newer schema or downgrade explicitly. Do not open it as an older known schema, silently coerce it, or recreate it.
Use the established package's documented atomic migration or transaction mechanism. For SQLite-backed stores, group related schema and data changes so failure rolls them back together; do not add a nested transaction when the package already owns one.
On failure, keep the prior database and version recoverable, stop code that expects the new schema, and surface an explicit retry, support, restore, or export path appropriate to the product. Never catch a migration error and delete durable storage merely to make startup succeed. A destructive reset requires an explicit product decision and authorization after the affected data has been classified.
Keep synchronization and background writers paused during migration. Preserve outbox operation identity, ordering, retry metadata, and payload compatibility; migration must not send, acknowledge, duplicate, or drop pending operations.
Create fixtures with the previously released schema definitions or binaries, or retain reviewed database snapshots produced by those versions. Rebuilding an approximation of the old schema using only the new migration code does not prove compatibility.
For every supported starting version, test:
Report which prior versions, package version, platforms, fixtures, failure points, and invariants were actually exercised. Do not claim device or crash-safety evidence from an in-memory database alone.
.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