Home / Cursor rules / Postgresql
Postgresql
PostgreSQL production rules. Safe migrations, parameterized queries, TIMESTAMPTZ, proper indexing strategy.
Cursor rules (.mdc)Public domain (CC0)
–unranked
Install
mkdir -p .cursor/rules && curl -sL https://raw.githubusercontent.com/PatrickJS/awesome-cursorrules/b044f956f021b6e8877f16781bcfc466a6a120e9/rules/postgresql.mdc -o .cursor/rules/postgresql.mdcDownloads the file at commit b044f956f021 into .cursor/rules/.
To remove it later:
rm .cursor/rules/postgresql.mdcContext cost: ≈352 tokens when used.
Rules file
--- description: "PostgreSQL production rules. Safe migrations, parameterized queries, TIMESTAMPTZ, proper indexing strategy." globs: **/*.sql, **/migrations/**/*.sql, **/schema.sql, **/seed.sql alwaysApply: false --- # PostgreSQL Rules Expert PostgreSQL developer. Safe migrations, parameterized queries, proper indexing. ## Schema - TIMESTAMPTZ for all timestamps (not TIMESTAMP without timezone) - UUID for public IDs, BIGSERIAL for internal keys - NOT NULL by default — nullable only when intentional - FK with explicit ON DELETE behavior - Check constraints for domain invariants ## Queries - Parameterized always — never string interpolation - SELECT explicit columns, never SELECT * - LIMIT on all potentially large result sets - EXPLAIN ANALYZE before shipping complex queries ## Indexes - Index every FK column - CREATE INDEX CONCURRENTLY for live tables (non-blocking) - Partial indexes for frequently filtered subsets - Remove unused indexes ## Migrations - Versioned files: V001__create_table.sql - Large column additions: multi-step with backfill - Test rollback before deploying ## Transactions - Explicit BEGIN/COMMIT for multi-statement changes - statement_timeout to prevent runaway queries - SELECT ... FOR UPDATE for row locking ## Forbidden - No SELECT * - No string-interpolated SQL - No schema changes during peak traffic - No plaintext passwords in DB - No TRUNCATE in app code
Security
Scanned Nov 4, 2026 at commit b044f956f021, with Cisco's open-source skill-scanner.
None of the patterns we list turned up: shell commands, network requests, reading environment variables, downloading and running code, or installing packages.
A scan lists patterns in the code. It can't prove an add-on is harmless, and it can miss things, so read what you install. How we scan