mcpField
R
rust-sqlx-postgres-service

rust-sqlx-postgres-service

github.com/lvtd-llcDevelopment172 installsUpdated 7w ago
Repository

About rust-sqlx-postgres-service

rust-sqlx-postgres-service is a skill for making schema-first, compile-checked, testable changes to Rust/Postgres projects. It guides migrations, SQLx query patterns, dependency injection, transaction use, and verification.

Key features

  1. 01Plan schema changes before repository code
  2. 02Use compile-time checked SQLx queries
  3. 03Inject pools and transactions explicitly
  4. 04Apply safe migration practices
  5. 05Add integration tests for behavior changes
  6. 06Run SQLx and Cargo preflight checks

Use cases

  1. 01Add a Postgres schema change to a Rust service
  2. 02Implement repository functions with SQLx
  3. 03Make multi-step database operations transactional
  4. 04Verify migrations and SQLx metadata

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/lvtd-llc/skills --skill rust-sqlx-postgres-service

After installing, type/rust-sqlx-postgres-servicein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

agents/
openai.yaml
references/
migration-safety.md
sqlx-patterns.md
scripts/
sqlx-preflight.sh

Details

From the project README

Rust SQLx Postgres Service

Use this skill to make Rust/Postgres changes schema-first, compile-checked, and testable. Prefer explicit migrations, injected pools, narrow repository functions, and transaction boundaries that match the business operation.

Core Workflow

  1. Inspect Cargo.toml, migrations/, .sqlx/, docker-compose.yml, CI, and existing database helper modules before changing code.
  2. Design the schema change first. Create or update a migration before writing repository code that depends on it.
  3. Prefer sqlx::query! and query_as! for compile-time checked SQL. Use dynamic SQL only when the query shape truly changes at runtime.
  4. Inject PgPool, PgConnection, or Transaction explicitly. Do not create a pool inside handlers or repository functions.
  5. Keep repository functions small and named by behavior. Return domain types or persistence DTOs instead of leaking raw rows through the app.
  6. Use a transaction for multi-step operations that must commit or roll back together.
  7. Add or update integration tests that run migrations and exercise the public behavior when the change affects API semantics.
  8. Run the bundled preflight script or the repository's equivalent SQLx/Cargo CI commands.

Migration Rules

Read references/migration-safety.md before changing existing tables or data.

Default migration preferences:

  • Use additive changes first: new nullable columns, new tables, new indexes.
  • Backfill separately from schema creation when a table may be large.
  • Add not null, uniqueness, and foreign-key constraints only after existing data satisfies them.
  • Name constraints and indexes deliberately when they will appear in errors or operations.
  • Keep down migrations if the project uses them; otherwise document rollback expectations in the migration review.

Query Rules

Read references/sqlx-patterns.md for SQLx macro, transaction, and offline mode details.

  • Prefer bind parameters over string interpolation.
  • Use fetch_optional for lookup-by-key operations.
  • Use execute for inserts/updates where row data is not needed.
  • Use RETURNING when the caller needs generated IDs or timestamps.
  • Check affected row counts for updates and deletes that should target exactly one row.
  • Map database uniqueness conflicts to domain errors near the repository edge.

Verification

Run from the Rust project root when the standard SQLx workflow applies:

path/to/rust-sqlx-postgres-service/scripts/sqlx-preflight.sh

The script is conservative: it checks formatting and tests, inspects SQLx migration state when the CLI and DATABASE_URL are available, verifies SQLx offline metadata with cargo sqlx prepare --check when .sqlx/ or DATABASE_URL is available, and only applies migrations when RUST_SQLX_PREFLIGHT_RUN_MIGRATIONS=1 is set.

If the repository has a different CI command, use that command and explain why.

Reference Files

  • references/sqlx-patterns.md: query!, query_as!, pools, transactions, feature flags, and offline mode.
  • references/migration-safety.md: safe migration sequencing and rollout checks.

Comments

Markdown supported