Agent skill
postgres-best-practices
PostgreSQL and Supabase optimization guide.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/postgres-best-practices
SKILL.md
PostgreSQL Best Practices
Goal: Design scalable, secure, and performant database schemas and queries, specifically optimized for Supabase/PostgreSQL environments.
1. Schema Design
- Normalization: Aim for 3NF (Third Normal Form) to reduce redundancy.
- Primary Keys: Use
UUID(v7 or v4) orBIGINT(Identity) for primary keys. Avoid simplistic auto-incrementINTif scaling horizontally. - Naming: Use
snake_casefor table and column names. Plural for tables (users,orders). - Foreign Keys: Always define foreign key constraints to ensure data integrity. Index all FK columns.
2. Performance & Indexing
- Indexes:
- B-Tree: Default for equality and range queries.
- GIN: For JSONB and Full-Text Search (
tsvector). - GiST: For Geo-spatial data (
PostGIS).
- Composite Indexes: Create composite indexes for columns frequently queried together (order matters: equality first, then range).
- Explain Analyze: Always check
EXPLAIN ANALYZEon complex queries to verify index usage.
3. Security (Row Level Security - RLS)
- Enable RLS:
ALTER TABLE "table_name" ENABLE ROW LEVEL SECURITY; - Policies: Define strict policies for
SELECT,INSERT,UPDATE,DELETE.- Example:
auth.uid() = user_idfor user-private data.
- Example:
- Service Role: Use service role keys only for backend admin tasks; never expose to client.
4. JSONB vs Relational
- When to use JSONB:
- Dynamic payload (e.g., webhook responses, configuration settings).
- Data structure varies significantly per row.
- When NOT to use JSONB:
- Data that needs frequent joining or aggregating.
- Data that requires foreign key constraints.
5. Application Usage (Prisma/Supabase JS)
- Connection Pooling: Use Supabase Transaction Pooler (port 6543) for serverless functions to avoid connection exhaustion.
- N+1 Problem: Be wary of N+1 queries in ORMs (Prisma). Use
.include()or explicit joins carefully.
Supabase Specific:
- Realtime: Only enable Realtime for tables that specifically need it (to save resources).
- Storage: Use RLS policies for Storage Buckets file access as well.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?