Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
affaan-m avatar

Postgres Patterns

  • 1.5k installs
  • 238k repo stars
  • Updated August 5, 2026
  • affaan-m/ecc

This is a copy of postgres-patterns by affaan-m - installs and ranking accrue to the original listing.

postgres-patterns is a PostgreSQL quick-reference skill that recalls schema design, indexing, data types, Row Level Security, and anti-patterns for developers writing SQL without leaving the editor.

About

postgres-patterns is an ECC agent skill offering battle-tested PostgreSQL patterns for schema design, indexing, data types, query optimization, and Row Level Security. The skill includes an index cheat sheet mapping query patterns to index types, anti-pattern detection guidance, and connection pooling notes, credited to Supabase best practices under MIT License. Developers reach for postgres-patterns when writing SQL migrations, troubleshooting slow queries, or implementing RLS policies. For deeper review workflows, the skill points to the database-reviewer agent while serving as an in-editor quick reference during build.

  • Index cheat sheet covering B-tree, composite, GIN, and BRIN patterns with exact SQL examples
  • Data type quick reference that maps 7 common use cases to correct PostgreSQL types and what to avoid
  • Composite index ordering rule: equality columns before range columns
  • Supabase-aligned patterns for query optimization, migrations, connection pooling, and RLS
  • Direct handoff to database-reviewer agent for deeper audits

Postgres Patterns by the numbers

  • 1,538 all-time installs (skills.sh)
  • +111 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/affaan-m/ecc --skill postgres-patterns

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.5k
repo stars238k
Last updatedAugust 5, 2026
Repositoryaffaan-m/ecc

What PostgreSQL indexing patterns fix slow queries?

Instantly recall battle-tested PostgreSQL patterns for schema design, indexing, data types, and Row Level Security without leaving the editor.

Who is it for?

Backend developers writing PostgreSQL migrations, indexes, or RLS who want Supabase-informed patterns without context switching.

Skip if: NoSQL databases or teams needing automated migration generation rather than pattern recall and review guidance.

When should I use this skill?

A developer writes SQL queries, designs schemas, troubleshoots slow queries, or implements Row Level Security in PostgreSQL.

What you get

Optimized SQL patterns, index recommendations, RLS policy guidance, and anti-pattern corrections.

  • index recommendations
  • RLS policy patterns
  • schema design guidance

Files

SKILL.mdMarkdownGitHub ↗

PostgreSQL Patterns

Quick reference for PostgreSQL best practices. For detailed guidance, use the database-reviewer agent.

When to Activate

  • Writing SQL queries or migrations
  • Designing database schemas
  • Troubleshooting slow queries
  • Implementing Row Level Security
  • Setting up connection pooling

Quick Reference

Index Cheat Sheet

Query PatternIndex TypeExample
WHERE col = valueB-tree (default)CREATE INDEX idx ON t (col)
WHERE col > valueB-treeCREATE INDEX idx ON t (col)
WHERE a = x AND b > yCompositeCREATE INDEX idx ON t (a, b)
WHERE jsonb @> '{}'GINCREATE INDEX idx ON t USING gin (col)
WHERE tsv @@ queryGINCREATE INDEX idx ON t USING gin (col)
Time-series rangesBRINCREATE INDEX idx ON t USING brin (col)

Data Type Quick Reference

Use CaseCorrect TypeAvoid
IDsbigintint, random UUID
Stringstextvarchar(255)
Timestampstimestamptztimestamp
Moneynumeric(10,2)float
Flagsbooleanvarchar, int

Common Patterns

Composite Index Order:

-- Equality columns first, then range columns
CREATE INDEX idx ON orders (status, created_at);
-- Works for: WHERE status = 'pending' AND created_at > '2024-01-01'

Covering Index:

CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
-- Avoids table lookup for SELECT email, name, created_at

Partial Index:

CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
-- Smaller index, only includes active users

RLS Policy (Optimized):

CREATE POLICY policy ON orders
  USING ((SELECT auth.uid()) = user_id);  -- Wrap in SELECT!

UPSERT:

INSERT INTO settings (user_id, key, value)
VALUES (123, 'theme', 'dark')
ON CONFLICT (user_id, key)
DO UPDATE SET value = EXCLUDED.value;

Cursor Pagination:

SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
-- O(1) vs OFFSET which is O(n)

Queue Processing:

UPDATE jobs SET status = 'processing'
WHERE id = (
  SELECT id FROM jobs WHERE status = 'pending'
  ORDER BY created_at LIMIT 1
  FOR UPDATE SKIP LOCKED
) RETURNING *;

Anti-Pattern Detection

-- Find unindexed foreign keys
SELECT conrelid::regclass, a.attname
FROM pg_constraint c
JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
WHERE c.contype = 'f'
  AND NOT EXISTS (
    SELECT 1 FROM pg_index i
    WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
  );

-- Find slow queries
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC;

-- Check table bloat
SELECT relname, n_dead_tup, last_vacuum
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY n_dead_tup DESC;

Configuration Template

-- Connection limits (adjust for RAM)
ALTER SYSTEM SET max_connections = 100;
ALTER SYSTEM SET work_mem = '8MB';

-- Timeouts
ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
ALTER SYSTEM SET statement_timeout = '30s';

-- Monitoring
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

-- Security defaults
REVOKE ALL ON SCHEMA public FROM public;

SELECT pg_reload_conf();

Related

  • Agent: database-reviewer - Full database review workflow
  • Skill: backend-patterns - API and backend patterns
  • Skill: database-migrations - Safe schema changes

When to Use This Skill

  • Writing SQL queries
  • Designing database schemas
  • Optimizing query performance
  • Implementing Row Level Security
  • Troubleshooting database issues
  • Setting up PostgreSQL configuration

---

Based on Supabase Agent Skills (credit: Supabase team) (MIT License)

Related skills

How it compares

Choose postgres-patterns for fast in-editor recall; pair with database-reviewer when a full automated schema audit is required.

FAQ

What topics does postgres-patterns cover?

postgres-patterns covers PostgreSQL schema design, indexing cheat sheets, data types, query optimization, Row Level Security, connection pooling, and anti-pattern detection based on Supabase practices.

When should developers activate postgres-patterns?

postgres-patterns activates during SQL migration writing, slow query troubleshooting, index selection, and RLS implementation when an in-editor PostgreSQL quick reference is needed.

Databasesbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.