If you're wiring Drift into a Flutter app and want to avoid the usual SQLite footguns, this skill walks you through the full cycle: inspecting what's already there, adding dependencies with pub commands instead of hardcoded versions, defining tables, running build_runner, and handling schema migrations with make-migrations and generated tests. It's opinionated about scoping (database.select, not bare select in widgets) and won't let you bump schemaVersion without a migration plan. The workflow is methodical, maybe verbose if you already know Drift cold, but solid if you're debugging generated code errors, adding reactive streams with Riverpod, or setting up web support with the wasm assets.
npx -y skills add madteacher/mad-agents-skills --skill flutter-drift --agent claude-codeInstalls into .claude/skills of the current project.
Use this skill to add or repair Drift-based local persistence in Flutter apps. The skill is an operating workflow: inspect the target app first, choose only the relevant reference files, implement with current Drift APIs, and validate generated code.
pubspec.yaml, existing database files, build.yaml, state management package, target platforms, and tests.dart pub add drift drift_flutter path_provider dev:drift_dev dev:build_runnerprovider or flutter_riverpod only when the app already uses it or the user asks for that integration..drift files.@DriftDatabase.driftDatabase from package:drift_flutter/drift_flutter.dart unless the project needs a custom executor.database.select(database.todoItems), database.into(database.todoItems), database.update(database.todoItems), and database.delete(database.todoItems) from widgets, services, and repositories.select(todoItems) only inside GeneratedDatabase subclasses or DatabaseAccessor classes where the methods and table getters are in scope.dart run build_runner build.drift_dev databases in build.yaml.dart run drift_dev make-migrations before and after schema changes as needed.schemaVersion, write generated step-by-step migrations, and run generated migration tests.dart format on edited Dart files.flutter analyze or dart analyze for the package.schemaVersion, existing user data, build.yaml, make-migrations, generated schema files, or migration tests are involved.select(database.table) as a top-level function from a widget. Use database.select(database.table) outside database classes.watch(...), todoUpdates(...), or notifyTableUpdates(...). Use customSelect(...).watch(), tableUpdates(...), and notifyUpdates(...).delete(table).go(id). Add a where clause and then call go(), or use generated table extension helpers if the project already uses them.batch.updateAll(...) or pass raw ids to batch.delete(...). Use batch.update(..., where: ...), batch.delete(...) with an insertable row, or batch.deleteWhere(...).Provider.of<AppDatabase>(context) belongs to provider; Provider<AppDatabase>((ref) { ... }) and AsyncValue.when(...) belong to Riverpod.schemaVersion without a migration plan for existing databases.notifyUpdates with explicit TableUpdate metadata.dart pub add or flutter pub add commands for the user, then state that dependency resolution was not validated.build_runner, do not hand-write generated *.g.dart files. Fix source declarations and report the generator blocker.schemaVersion; ask for the current released schema history or database files.sqlite3.wasm and drift_worker.js are missing, add the code path and explicitly report the required web assets.pubspec.yaml contains Drift runtime and generator dependencies.part directives, table declarations, @DriftDatabase, constructor, and schemaVersion.build_runner.AsyncValue as a List.flutter analyze or dart analyze passes for the edited package, or any remaining analyzer failure is reported with the blocker.sickn33/antigravity-awesome-skills
wshobson/agents
kotlin/kotlin-agent-skills