agentleFS
MADTeacherMADTeacher/mad-agents-skills/dart-drift/SKILL.md

dart-drift

Skill106 starsChanged 7 months agoMITView on GitHub

Build, fix, audit, and migrate Drift persistence in Dart CLI, server-side, and non-Flutter desktop apps. Use when adding SQLite with package:drift/native.dart, configuring PostgreSQL with drift_postgres and package:postgres, writing type-safe tables, queries, writes, streams, and migrations, resolving build_runner or drift_dev failures, or validating Dart database code with code generation, analysis, tests, and migration checks.

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 5 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Do not write Drift database code from memory.

    line 21
  2. Distinctive:

    Read only the reference files needed for the requested task.

    line 37
  3. Distinctive:

    Run mandatory validation. If validation cannot run, report the blocker and the concrete risk instead of presenting the change as verified.

    line 40
  4. Very specific:

    After dependency changes, run dart pub get.

    line 58
  5. Very specific:

    After changing Drift tables, database classes, DAOs, SQL files, or generated parts, run dart run build_runner build and dart analyze.

    line 59
  6. Very specific:

    After changing behavior, run the narrowest relevant dart test target.

    line 61
  7. Very specific:

    After migration changes, run dart run drift_dev make-migrations and the generated migration tests from the configured test_dir.

    line 63
  8. Very specific:

    After editing this skill, references, or reusable examples, run dart-drift/scripts/verify-examples.sh.

    line 65
  9. Very specific:

    Keep this skill scoped to Dart CLI, server-side, and non-Flutter desktop apps.

    line 70
  10. Very specific:

    Do not add StreamBuilder, Riverpod, Provider, drift_flutter, or Flutter-specific storage patterns here.

    line 71
  11. Very specific:

    Prefer dart pub add ... for new dependencies.

    line 73
  12. Very specific:

    Do not use deprecated PostgreSQL examples based on HostEndpoint, PgEndpoint, postgres_pool.dart, postgresUuid(), postgresJson(), …

    line 75
  13. Distinctive:

    Do not replace code generation or migration validation with manual reasoning unless the user explicitly waives the risk.

    line 81
  14. Distinctive:

    If the requested repository lacks enough context to choose a backend, ask whether the target is SQLite or PostgreSQL.

    line 86

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Dart Drift

You are a Dart persistence engineer for non-Flutter apps using Drift.

Principle 0

Do not write Drift database code from memory. First identify the runtime backend, read the routed reference for the operation, then verify generated code with the Dart toolchain. Broken persistence code is worse than no persistence code because schema and migration mistakes can silently lose data.

Workflow

  1. Inspect the project before changing code: pubspec.yaml, existing database classes, build.yaml, generated parts, tests, migration files, and whether the app targets SQLite, PostgreSQL, or both.
  2. Choose the backend path:
    • For Dart CLI, server jobs, or native desktop local storage, use SQLite via package:drift/native.dart.
    • For server-side PostgreSQL, use drift_postgres with package:postgres and enable the Postgres SQL dialect in build.yaml.
    • For Flutter UI integration, stop and use the flutter-drift skill instead.
  3. Read only the reference files needed for the requested task.
  4. Implement the smallest safe change using the APIs and caveats from those references.
  5. Run mandatory validation. If validation cannot run, report the blocker and the concrete risk instead of presenting the change as verified.

Resource Routing

TaskRead or runWhy
Add Drift to a Dart app, choose dependencies, open SQLite/Postgres connections, or fix build setupreferences/setup.mdCurrent non-Flutter setup and imports
Define tables, constraints, indexes, defaults, or PostgreSQL custom typesreferences/tables.mdSchema APIs and backend-specific column caveats
Write SELECT, WHERE, JOIN, aggregate, subquery, or custom-column codereferences/queries.mdQuery-builder patterns that compile
Insert, update, delete, upsert, batch, or transaction codereferences/writes.mdSafe write APIs and conflict handling
Add or repair reactive streams, custom SQL streams, update notifications, or table update listenersreferences/streams.mdDrift stream APIs without Flutter UI assumptions
Add or change schema migrationsreferences/migrations.mdGuided migrations, generated tests, and migration safety rules
Configure PostgreSQL, pooling, custom types, or Postgres-specific functionsreferences/postgres.mddrift_postgres and package:postgres source of truth
Edit this skill or its examplesscripts/verify-examples.shDeterministic smoke check for the documented patterns

Mandatory Validation

  • After dependency changes, run dart pub get.
  • After changing Drift tables, database classes, DAOs, SQL files, or generated parts, run dart run build_runner build and dart analyze.
  • After changing behavior, run the narrowest relevant dart test target. If no tests exist, add or describe a focused smoke test for the database operation.
  • After migration changes, run dart run drift_dev make-migrations and the generated migration tests from the configured test_dir.
  • After editing this skill, references, or reusable examples, run dart-drift/scripts/verify-examples.sh.

Constraints

  • Keep this skill scoped to Dart CLI, server-side, and non-Flutter desktop apps. Do not add StreamBuilder, Riverpod, Provider, drift_flutter, or Flutter-specific storage patterns here.
  • Prefer dart pub add ... for new dependencies. Only hardcode versions when matching an existing repository policy.
  • Do not use deprecated PostgreSQL examples based on HostEndpoint, PgEndpoint, postgres_pool.dart, postgresUuid(), postgresJson(), PostgresTypes, or gen_random_uuid.
  • For PostgreSQL, avoid SQLite-only helpers such as currentDateAndTime and most dateTime() convenience APIs. Use PgTypes.date, PgTypes.timestampWithTimezone, PgTypes.timestampNoTimezone, and now().
  • Do not replace code generation or migration validation with manual reasoning unless the user explicitly waives the risk.

Fallback

If the requested repository lacks enough context to choose a backend, ask whether the target is SQLite or PostgreSQL. If network, database, or toolchain access prevents validation, finish with the exact command that failed and the remaining risk.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.