L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

postgres-best-practices

postgres-best-practices

Supabase PostgreSQL best practices library — 33 impact-rated rules (CRITICAL→LOW) covering connection pooling, RLS, locking, VACUUM, full-text search, and JSONB indexing. Use when writing, reviewing, or optimizing PostgreSQL queries, schema, or configuration.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: postgres-best-practices description: Supabase PostgreSQL best practices library — 33 impact-rated rules (CRITICAL→LOW) covering connection pooling, RLS, locking, VACUUM, full-text search, and JSONB indexing. Use when writing, reviewing, or optimizing PostgreSQL queries, schema, or configuration. argument-hint: "[category or specific rule name]" allowed-tools: Read context: fork metadata: triggers: connection pooling, pgbouncer, RLS row level security, SKIP LOCKED, queue workers, deadlock, advisory lock, VACUUM ANALYZE, full-text search tsvector, JSONB GIN index, pg_stat_statements, connection limits, max_connections, idle timeout, prepared statements, transaction mode pooling related-skills: database-schema-designer, sql-optimization-patterns, postgresql, sql-pro, vector-database domain: infrastructure role: optimizer scope: implementation output-format: document last-reviewed: "2026-03-15"

Iron Law

NEVER TUNE WHAT YOU HAVEN'T MEASURED — CHECK pg_stat_statements AND pg_stat_activity BEFORE CHANGING CONFIGURATION OR ADDING INDEXES

When to Use This Skill

  • Configuring connection pooling (PgBouncer, Prisma pool, asyncpg pool, R2DBC pool)
  • Implementing Row Level Security (RLS) for multi-tenant data isolation
  • Designing worker queues with SKIP LOCKED and advisory locks
  • Preventing deadlocks in concurrent write workloads
  • Configuring VACUUM/ANALYZE and autovacuum tuning
  • Adding full-text search with tsvector/tsquery
  • Indexing JSONB columns (jsonb_ops vs jsonb_path_ops)
  • Reviewing any PostgreSQL schema or query against the 8-category rule library

Do Not Use This Skill When

  • You need query EXPLAIN analysis and index pattern SQL (use sql-optimization-patterns)
  • You need schema migration design or ERDs (use database-schema-designer)
  • You need cloud analytics or HTAP (use sql-pro)

Rule Categories by Priority

PriorityCategoryImpactRules
1Query PerformanceCRITICALrules/query-*.md (5 rules)
2Connection ManagementCRITICALrules/conn-*.md (4 rules)
3Security & RLSCRITICALrules/security-*.md (3 rules)
4Schema DesignHIGHrules/schema-*.md (6 rules)
5Concurrency & LockingMEDIUM-HIGHrules/lock-*.md (4 rules)
6Data Access PatternsMEDIUMrules/data-*.md (4 rules)
7Monitoring & DiagnosticsLOW-MEDIUMrules/monitor-*.md (3 rules)
8Advanced FeaturesLOWrules/advanced-*.md (2 rules)

Quick Rule Index

Connection Management (NEW — not in other skills)

  • rules/conn-pooling.md — PgBouncer setup, pool size formula (cores × 2) + spindles, transaction vs session mode
  • rules/conn-limits.md — max_connections calculation, prevent database OOM crash
  • rules/conn-idle-timeout.md — Reclaim 30-50% idle connection slots
  • rules/conn-prepared-statements.md — Prepared statement conflicts in transaction-mode pooling

Concurrency & Locking (NEW — not in other skills)

  • rules/lock-skip-locked.md — Atomic claim-and-update queue pattern, 10x worker throughput
  • rules/lock-deadlock-prevention.md — Consistent lock ordering, deadlock prevention patterns
  • rules/lock-short-transactions.md — Minimize transaction duration, 3-5x throughput
  • rules/lock-advisory.md — Application-level coordination without row-level locks

Security & RLS (NEW depth — not in other skills)

  • rules/security-rls-basics.md — ALTER TABLE ... ENABLE ROW LEVEL SECURITY + policy patterns
  • rules/security-rls-performance.md — SECURITY DEFINER functions, 5-10x faster RLS queries
  • rules/security-privileges.md — Principle of least privilege, specific GRANT patterns

Monitoring & Maintenance (NEW — not in other skills)

  • rules/monitor-vacuum-analyze.md — VACUUM/ANALYZE patterns, autovacuum tuning
  • rules/monitor-pg-stat-statements.md — Enable and query pg_stat_statements
  • rules/monitor-explain-analyze.md — EXPLAIN ANALYZE usage guide

Advanced Features (NEW — not in other skills)

  • rules/advanced-full-text-search.md — tsvector, ts_rank, GIN full-text index, 100x vs LIKE
  • rules/advanced-jsonb-indexing.md — GIN index, jsonb_ops vs jsonb_path_ops trade-off

Query Performance (complementary to sql-optimization-patterns)

  • rules/query-missing-indexes.md — EXPLAIN Seq Scan detection
  • rules/query-index-types.md — B-tree/GIN/BRIN/Hash selection
  • rules/query-composite-indexes.md — Leftmost prefix rule
  • rules/query-covering-indexes.md — INCLUDE columns for Index Only Scan
  • rules/query-partial-indexes.md — Filtered index subsets

Schema Design (complementary to database-schema-designer)

  • rules/schema-primary-keys.md — IDENTITY vs UUID vs UUIDv7
  • rules/schema-data-types.md — Forbidden types, correct alternatives
  • rules/schema-foreign-key-indexes.md — Diagnostic SQL to find all missing FK indexes
  • rules/schema-lowercase-identifiers.md — snake_case, no quoted identifiers
  • rules/schema-partitioning.md — Range partitioning patterns
  • rules/schema-foreign-key-indexes.md — FK index enforcement

Stack Integration

Python / FastAPI (asyncpg + SQLAlchemy)

  • Connection pooling: asyncpg pool min_size/max_size configuration (see rules/conn-pooling.md)
  • RLS: set app.current_user_id session variable before queries
  • SKIP LOCKED: use in background task workers

NestJS / Prisma

  • Connection pooling: DATABASE_URL=...?connection_limit=10&pool_timeout=20 (see rules/conn-pooling.md)
  • Prepared statements: Prisma uses prepared statements — use session mode or pgbouncer=true parameter
  • SKIP LOCKED: use prisma.$queryRaw for queue worker queries

Java / Spring Boot WebFlux (R2DBC)

  • Connection pooling: r2dbc.pool.max-size, r2dbc.pool.initial-size (see rules/conn-pooling.md)
  • RLS: use ConnectionFactory with per-request session variable injection

Related Skills

  • database-schema-designer — Schema design, Flyway migrations, normalization
  • sql-optimization-patterns — EXPLAIN analysis, N+1, cursor pagination, batch ops
  • postgresql — PostgreSQL-specific types, gotchas, extensions, JSONB depth
  • sql-pro — Cloud analytics, HTAP, BigQuery/Snowflake
  • vector-database — pgvector HNSW/IVFFlat alignment
Skills enregistrées