
PostgreSQL Pro
FreeOptimize your PostgreSQL database performance effectively.
Free · Opens the source repo
What PostgreSQL Pro does
PostgreSQL Pro is designed for developers and database administrators who need to optimize PostgreSQL queries, configure replication, and implement advanced database features. This skill provides a comprehensive guide for analyzing and improving database performance through techniques such as EXPLAIN analysis, index design, and effective use of JSONB storage. With a focus on practical applications, it helps users identify bottlenecks and optimize their queries for better efficiency.
The core workflow of PostgreSQL Pro includes several critical steps. Users can start by analyzing performance using the EXPLAIN (ANALYZE, BUFFERS) command to pinpoint slow queries. Following this, the skill guides users in designing appropriate indexes based on their workload, ensuring that these indexes are verified before deployment. Additionally, it covers the setup of replication, whether streaming or logical, and emphasizes the importance of continuous monitoring to prevent lag.
PostgreSQL Pro also addresses maintenance tasks such as VACUUM tuning and monitoring database health using pg_stat views. By providing structured guidance on these topics, the skill empowers users to maintain optimal database performance over time. It is particularly useful for those who regularly work with large datasets or require high availability in their applications.
In summary, PostgreSQL Pro is a valuable resource for anyone looking to deepen their understanding of PostgreSQL and enhance their database management skills. It combines practical examples with theoretical knowledge, making it an essential tool for effective database administration.
When to use it
Use this skill when you need to analyze slow queries, implement advanced features, or configure database replication.
When not to use it
This skill may not be suitable for basic database management tasks or for users unfamiliar with SQL and PostgreSQL concepts.
What you can build with it
Optimizing Slow Queries
Use the skill to analyze slow queries with EXPLAIN and create targeted indexes to improve performance.
Implementing JSONB Features
Leverage the skill to effectively use JSONB for storage and indexing, enhancing data retrieval.
Setting Up Replication
Utilize the skill to configure and monitor both streaming and logical replication for high availability.
How to install PostgreSQL Pro
View source1. Install with the skills CLI
npx skills add jeffallan/claude-skills/postgres-pro --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by jeffallanPostgreSQL Pro
Senior PostgreSQL expert with deep expertise in database administration, performance optimization, and advanced PostgreSQL features.
When to Use This Skill
- Analyzing and optimizing slow queries with EXPLAIN
- Implementing JSONB storage and indexing strategies
- Setting up streaming or logical replication
- Configuring and using PostgreSQL extensions
- Tuning VACUUM, ANALYZE, and autovacuum
- Monitoring database health with pg_stat views
- Designing indexes for optimal performance
Core Workflow
- Analyze performance — Run
EXPLAIN (ANALYZE, BUFFERS)to identify bottlenecks - Design indexes — Choose B-tree, GIN, GiST, or BRIN based on workload; verify with
EXPLAINbefore deploying - Optimize queries — Rewrite inefficient queries, run
ANALYZEto refresh statistics - Setup replication — Streaming or logical based on requirements; monitor lag continuously
- Monitor and maintain — Track VACUUM, bloat, and autovacuum via
pg_statviews; verify improvements after each change
End-to-End Example: Slow Query → Fix → Verification
-- Step 1: Identify slow queries
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
-- Step 2: Analyze a specific slow query
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending';
-- Look for: Seq Scan (bad on large tables), high Buffers hit, nested loops on large sets
-- Step 3: Create a targeted index
CREATE INDEX CONCURRENTLY idx_orders_customer_status
ON orders (customer_id, status)
WHERE status = 'pending'; -- partial index reduces size
-- Step 4: Verify the index is used
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending';
-- Confirm: Index Scan on idx_orders_customer_status, lower actual time
-- Step 5: Update statistics if needed after bulk changes
ANALYZE orders;
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Performance | references/performance.md | EXPLAIN ANALYZE, indexes, statistics, query tuning |
| JSONB | references/jsonb.md | JSONB operators, indexing, GIN indexes, containment |
| Extensions | references/extensions.md | PostGIS, pg_trgm, pgvector, uuid-ossp, pg_stat_statements |
| Replication | references/replication.md | Streaming replication, logical replication, failover |
| Maintenance | references/maintenance.md | VACUUM, ANALYZE, pg_stat views, monitoring, bloat |
Common Patterns
JSONB — GIN Index and Query
-- Create GIN index for containment queries
CREATE INDEX idx_events_payload ON events USING GIN (payload);
-- Efficient JSONB containment query (uses GIN index)
SELECT * FROM events WHERE payload @> '{"type": "login", "success": true}';
-- Extract nested value
SELECT payload->>'user_id', payload->'meta'->>'ip'
FROM events
WHERE payload @> '{"type": "login"}';
VACUUM and Bloat Monitoring
-- Check tables with high dead tuple counts
SELECT relname, n_dead_tup, n_live_tup,
round(n_dead_tup::numeric / NULLIF(n_live_tup + n_dead_tup, 0) * 100, 2) AS dead_pct,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;
-- Manually vacuum a high-churn table and verify
VACUUM (ANALYZE, VERBOSE) orders;
Replication Lag Monitoring
-- On primary: check standby lag
SELECT client_addr, state, sent_lsn, write_lsn, flush_lsn, replay_lsn,
(sent_lsn - replay_lsn) AS replication_lag_bytes
FROM pg_stat_replication;
Constraints
MUST DO
- Use
EXPLAIN (ANALYZE, BUFFERS)for query optimization - Verify indexes are actually used with
EXPLAINbefore and after creation - Use
CREATE INDEX CONCURRENTLYto avoid table locks in production - Run
ANALYZEafter bulk data changes to refresh statistics - Monitor autovacuum; tune
autovacuum_vacuum_scale_factorfor high-churn tables - Use connection pooling (pgBouncer, pgPool)
- Monitor replication lag via
pg_stat_replication - Use prepared statements to prevent SQL injection
- Use
uuidtype for UUIDs, nottext
MUST NOT DO
- Disable autovacuum globally
- Create indexes without first analyzing query patterns
- Use
SELECT *in production queries - Ignore replication lag alerts
- Skip VACUUM on high-churn tables
- Store large BLOBs in the database (use object storage)
- Deploy index changes without verifying the planner uses them
Output Templates
When implementing PostgreSQL solutions, provide:
- Query with
EXPLAIN (ANALYZE, BUFFERS)output and interpretation - Index definitions with rationale and pre/post verification
- Configuration changes with before/after values
- Monitoring queries for ongoing health checks
- Brief explanation of performance impact
Knowledge Reference
PostgreSQL 12-16, EXPLAIN ANALYZE, B-tree/GIN/GiST/BRIN indexes, JSONB operators, streaming replication, logical replication, VACUUM/ANALYZE, pg_stat views, PostGIS, pgvector, pg_trgm, WAL archiving, PITR
Frequently asked questions about PostgreSQL Pro
Similar skills
ClickHouse Logs Queries
Efficiently manage Supabase logs with ClickHouse SQL.
EF Core D2 Database Diagram Generator
Visualize your EF Core models as D2 diagrams effortlessly.
Safe SQL Execution
Ensure secure SQL execution in Supabase applications.
Oracle to PostgreSQL Migration
Identify migration risks between Oracle and PostgreSQL.
SSMA Console
Streamline Oracle to SQL Server migrations with ease.
SQL Performance Optimization
Enhance SQL query efficiency across all databases.
