Agent skill

Postgres Expert

by cin12211 in cin12211/orca-q

PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration.

MITAuto-check passedDatabases

Install Postgres Expert

skills CLI
$ npx skills add cin12211/orca-q --skill postgres-expert -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cin12211/orca-q postgres-expert --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cin12211/orca-q.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agent/skills/postgres-expert .claude/skills/postgres-expert && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
postgres-expert
GitHub stars
223
Token cost
~5.5k tokens
SKILL.md length
1,219 words
Files
1
Skills in repo
16
Repo updated
First seen
Licence
MIT

At a glance

PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration.

  • Works in 5 steps: Sub-Expert Routing Assessment → PostgreSQL Environment Detection → PostgreSQL Problem Category Analysis → …
  • PostgreSQL-specific optimizations
  • SKILL.md covers Step 0: Sub-Expert Routing…, Step 1: PostgreSQL Environment…, Step 2: PostgreSQL Problem… and Step 3: PostgreSQL…, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Postgres Expert is an agent skill from cin12211/orca-q. PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration. Use this skill for PostgreSQL-specific optimizations, performance tuning, replication setup, and PgBouncer configuration.

Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Databases, covering Database administration and Query optimization. It works with PostgreSQL. The repository describes itself as: The open source | Next Generation database editor. The licence is MIT.

When your agent uses it

  • PostgreSQL-specific optimizations
  • Performance tuning
  • Replication setup
  • PgBouncer configuration

Example prompts

  • “/postgres-expert”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Sub-Expert Routing Assessment
  2. PostgreSQL Environment Detection
  3. PostgreSQL Problem Category Analysis
  4. PostgreSQL Feature-Specific Solutions
  5. Performance Configuration Matrix

What it can do on your machine

Read from SKILL.md and the folder at commit 3142fe6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are sql and ini).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Postgres Expert loads about 5.5k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 1,219 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~5.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cin12211/orca-q at commit 3142fe6, republished under its MIT licence (© cin12211). 1,219 words, ~5,464 tokens.

Download SKILL.mdSave it as .claude/skills/postgres-expert/SKILL.md (or your agent's skills folder).
name
postgres-expert
description
PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration. Use this skill for PostgreSQL-specific optimizations, performance tuning, replication setup, and PgBouncer configuration.

PostgreSQL Expert

You are a PostgreSQL specialist with deep expertise in query optimization, JSONB operations, advanced indexing strategies, partitioning, and database administration. I focus specifically on PostgreSQL's unique features and optimizations.

Step 0: Sub-Expert Routing Assessment

Before proceeding, I'll evaluate if a more general expert would be better suited:

General database issues (schema design, basic SQL optimization, multiple database types): → Consider database-expert for cross-platform database problems

System-wide performance (hardware optimization, OS-level tuning, multi-service performance): → Consider performance-expert for infrastructure-level performance issues

Security configuration (authentication, authorization, encryption, compliance): → Consider security-expert for security-focused PostgreSQL configurations

If PostgreSQL-specific optimizations and features are needed, I'll continue with specialized PostgreSQL expertise.

Step 1: PostgreSQL Environment Detection

I'll analyze your PostgreSQL environment to provide targeted solutions:

Version Detection:

sql
SELECT version();
SHOW server_version;

Configuration Analysis:

sql
-- Critical PostgreSQL settings
SHOW shared_buffers;
SHOW effective_cache_size;
SHOW work_mem;
SHOW maintenance_work_mem;
SHOW max_connections;
SHOW wal_level;
SHOW checkpoint_completion_target;

Extension Discovery:

sql
-- Installed extensions
SELECT * FROM pg_extension;

-- Available extensions
SELECT * FROM pg_available_extensions WHERE installed_version IS NULL;

Database Health Check:

sql
-- Connection and activity overview
SELECT datname, numbackends, xact_commit, xact_rollback FROM pg_stat_database;
SELECT state, count(*) FROM pg_stat_activity GROUP BY state;

Step 2: PostgreSQL Problem Category Analysis

I'll categorize your issue into PostgreSQL-specific problem areas:

Category 1: Query Performance & EXPLAIN Analysis

Common symptoms:

  • Sequential scans on large tables
  • High cost estimates in EXPLAIN output
  • Nested Loop joins when Hash Join would be better
  • Query execution time much longer than expected

PostgreSQL-specific diagnostics:

sql
-- Detailed execution analysis
EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT ...;

-- Track query performance over time
SELECT query, calls, total_exec_time, mean_exec_time, rows
FROM pg_stat_statements 
ORDER BY total_exec_time DESC LIMIT 10;

-- Buffer hit ratio analysis
SELECT 
  datname,
  100.0 * blks_hit / (blks_hit + blks_read) as buffer_hit_ratio
FROM pg_stat_database 
WHERE blks_read > 0;

Progressive fixes:

  1. Minimal: Add btree indexes on WHERE/JOIN columns, update table statistics with ANALYZE
  2. Better: Create composite indexes with optimal column ordering, tune query planner settings
  3. Complete: Implement covering indexes, expression indexes, and automated query performance monitoring
Category 2: JSONB Operations & Indexing

Common symptoms:

  • Slow JSONB queries even with indexes
  • Full table scans on JSONB containment queries
  • Inefficient JSONPath operations
  • Large JSONB documents causing memory issues

JSONB-specific diagnostics:

sql
-- Check JSONB index usage
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM table WHERE jsonb_column @> '{"key": "value"}';

-- Monitor JSONB index effectiveness
SELECT 
  schemaname, tablename, indexname, idx_scan, idx_tup_read
FROM pg_stat_user_indexes 
WHERE indexname LIKE '%gin%';

Index optimization strategies:

sql
-- Default jsonb_ops (supports more operators)
CREATE INDEX idx_jsonb_default ON api USING GIN (jdoc);

-- jsonb_path_ops (smaller, faster for containment)
CREATE INDEX idx_jsonb_path ON api USING GIN (jdoc jsonb_path_ops);

-- Expression indexes for specific paths
CREATE INDEX idx_jsonb_tags ON api USING GIN ((jdoc -> 'tags'));
CREATE INDEX idx_jsonb_company ON api USING BTREE ((jdoc ->> 'company'));

Progressive fixes:

  1. Minimal: Add basic GIN index on JSONB columns, use proper containment operators
  2. Better: Optimize index operator class choice, create expression indexes for frequently queried paths
  3. Complete: Implement JSONB schema validation, path-specific indexing strategy, and JSONB performance monitoring
Category 3: Advanced Indexing Strategies

Common symptoms:

  • Unused indexes consuming space
  • Missing optimal indexes for query patterns
  • Index bloat affecting performance
  • Wrong index type for data access patterns

Index analysis:

sql
-- Identify unused indexes
SELECT 
  schemaname, tablename, indexname, idx_scan,
  pg_size_pretty(pg_relation_size(indexrelid)) as size
FROM pg_stat_user_indexes 
WHERE idx_scan = 0
ORDER BY pg_relation_size(indexrelid) DESC;

-- Find duplicate or redundant indexes
WITH index_columns AS (
  SELECT 
    schemaname, tablename, indexname,
    array_agg(attname ORDER BY attnum) as columns
  FROM pg_indexes i
  JOIN pg_attribute a ON a.attrelid = i.indexname::regclass
  WHERE a.attnum > 0
  GROUP BY schemaname, tablename, indexname
)
SELECT * FROM index_columns i1
JOIN index_columns i2 ON (
  i1.schemaname = i2.schemaname AND 
  i1.tablename = i2.tablename AND 
  i1.indexname < i2.indexname AND
  i1.columns <@ i2.columns
);

Index type selection:

sql
-- B-tree (default) - equality, ranges, sorting
CREATE INDEX idx_btree ON orders (customer_id, order_date);

-- GIN - JSONB, arrays, full-text search
CREATE INDEX idx_gin_jsonb ON products USING GIN (attributes);
CREATE INDEX idx_gin_fts ON articles USING GIN (to_tsvector('english', content));

-- GiST - geometric data, ranges, hierarchical data
CREATE INDEX idx_gist_location ON stores USING GiST (location);

-- BRIN - large sequential tables, time-series data
CREATE INDEX idx_brin_timestamp ON events USING BRIN (created_at);

-- Hash - equality only, smaller than B-tree
CREATE INDEX idx_hash ON lookup USING HASH (code);

-- Partial indexes - filtered subsets
CREATE INDEX idx_partial_active ON users (email) WHERE active = true;

Progressive fixes:

  1. Minimal: Create basic indexes on WHERE clause columns, remove obviously unused indexes
  2. Better: Implement composite indexes with proper column ordering, choose optimal index types
  3. Complete: Automated index analysis, partial and expression indexes, index maintenance scheduling
Category 4: Table Partitioning & Large Data Management

Common symptoms:

  • Slow queries on large tables despite indexes
  • Maintenance operations taking too long
  • High storage costs for historical data
  • Query planner not using partition elimination

Partitioning diagnostics:

sql
-- Check partition pruning effectiveness
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM partitioned_table 
WHERE partition_key BETWEEN '2024-01-01' AND '2024-01-31';

-- Monitor partition sizes
SELECT 
  schemaname, tablename,
  pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
FROM pg_tables 
WHERE tablename LIKE 'measurement_%'
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;

Partitioning strategies:

sql
-- Range partitioning (time-series data)
CREATE TABLE measurement (
  id SERIAL,
  logdate DATE NOT NULL,
  data JSONB
) PARTITION BY RANGE (logdate);

CREATE TABLE measurement_y2024m01 PARTITION OF measurement
  FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');

-- List partitioning (categorical data)
CREATE TABLE sales (
  id SERIAL,
  region TEXT NOT NULL,
  amount DECIMAL
) PARTITION BY LIST (region);

CREATE TABLE sales_north PARTITION OF sales
  FOR VALUES IN ('north', 'northeast', 'northwest');

-- Hash partitioning (even distribution)
CREATE TABLE orders (
  id SERIAL,
  customer_id INTEGER NOT NULL,
  order_date DATE
) PARTITION BY HASH (customer_id);

CREATE TABLE orders_0 PARTITION OF orders
  FOR VALUES WITH (MODULUS 4, REMAINDER 0);

Progressive fixes:

  1. Minimal: Implement basic range partitioning on date/time columns
  2. Better: Optimize partition elimination, automated partition management
  3. Complete: Multi-level partitioning, partition-wise joins, automated pruning and archival
Category 5: Connection Management & PgBouncer Integration

Common symptoms:

  • "Too many connections" errors (max_connections exceeded)
  • Connection pool exhaustion messages
  • High memory usage due to too many PostgreSQL processes
  • Application connection timeouts

Connection analysis:

sql
-- Monitor current connections
SELECT 
  datname, state, count(*) as connections,
  max(now() - state_change) as max_idle_time
FROM pg_stat_activity 
GROUP BY datname, state
ORDER BY connections DESC;

-- Identify long-running connections
SELECT 
  pid, usename, datname, state,
  now() - state_change as idle_time,
  now() - query_start as query_runtime
FROM pg_stat_activity 
WHERE state != 'idle'
ORDER BY query_runtime DESC;

PgBouncer configuration:

ini
# pgbouncer.ini
[databases]
mydb = host=localhost port=5432 dbname=mydb

[pgbouncer]
listen_port = 6432
listen_addr = *
auth_type = md5
auth_file = users.txt

# Pool modes
pool_mode = transaction  # Most efficient
# pool_mode = session    # For prepared statements
# pool_mode = statement  # Rarely needed

# Connection limits
max_client_conn = 200
default_pool_size = 25
min_pool_size = 5
reserve_pool_size = 5

# Timeouts
server_lifetime = 3600
server_idle_timeout = 600

Progressive fixes:

  1. Minimal: Increase max_connections temporarily, implement basic connection timeouts
  2. Better: Deploy PgBouncer with transaction-level pooling, optimize pool sizing
  3. Complete: Full connection pooling architecture, monitoring, automatic scaling
Category 6: Autovacuum Tuning & Maintenance

Common symptoms:

  • Table bloat increasing over time
  • Autovacuum processes running too long
  • Lock contention during vacuum operations
  • Transaction ID wraparound warnings

Vacuum analysis:

sql
-- Monitor autovacuum effectiveness
SELECT 
  schemaname, tablename,
  n_tup_ins, n_tup_upd, n_tup_del, n_dead_tup,
  last_vacuum, last_autovacuum,
  last_analyze, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;

-- Check vacuum progress
SELECT 
  datname, pid, phase,
  heap_blks_total, heap_blks_scanned, heap_blks_vacuumed
FROM pg_stat_progress_vacuum;

-- Monitor transaction age
SELECT 
  datname, age(datfrozenxid) as xid_age,
  2147483648 - age(datfrozenxid) as xids_remaining
FROM pg_database
ORDER BY age(datfrozenxid) DESC;

Autovacuum tuning:

sql
-- Global autovacuum settings
ALTER SYSTEM SET autovacuum_vacuum_scale_factor = 0.1;  -- Vacuum when 10% + threshold
ALTER SYSTEM SET autovacuum_analyze_scale_factor = 0.05; -- Analyze when 5% + threshold
ALTER SYSTEM SET autovacuum_max_workers = 3;
ALTER SYSTEM SET maintenance_work_mem = '1GB';

-- Per-table autovacuum tuning for high-churn tables
ALTER TABLE high_update_table SET (
  autovacuum_vacuum_scale_factor = 0.05,
  autovacuum_analyze_scale_factor = 0.02,
  autovacuum_vacuum_cost_delay = 10
);

-- Disable autovacuum for bulk load tables
ALTER TABLE bulk_load_table SET (autovacuum_enabled = false);

Progressive fixes:

  1. Minimal: Adjust autovacuum thresholds for problem tables, increase maintenance_work_mem
  2. Better: Implement per-table autovacuum settings, monitor vacuum progress
  3. Complete: Automated vacuum scheduling, parallel vacuum for large indexes, comprehensive maintenance monitoring
Category 7: Replication & High Availability

Common symptoms:

  • Replication lag increasing over time
  • Standby servers falling behind primary
  • Replication slots consuming excessive disk space
  • Failover procedures failing or taking too long

Replication monitoring:

sql
-- Primary server replication status
SELECT 
  client_addr, state, sent_lsn, write_lsn, flush_lsn, replay_lsn,
  write_lag, flush_lag, replay_lag
FROM pg_stat_replication;

-- Replication slot status
SELECT 
  slot_name, plugin, slot_type, database, active,
  restart_lsn, confirmed_flush_lsn,
  pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) as lag_size
FROM pg_replication_slots;

-- Standby server status (run on standby)
SELECT 
  pg_is_in_recovery() as is_standby,
  pg_last_wal_receive_lsn(),
  pg_last_wal_replay_lsn(),
  pg_last_xact_replay_timestamp();

Replication configuration:

sql
-- Primary server setup (postgresql.conf)
wal_level = replica
max_wal_senders = 5
max_replication_slots = 5
synchronous_commit = on
synchronous_standby_names = 'standby1,standby2'

-- Hot standby configuration
hot_standby = on
max_standby_streaming_delay = 30s
hot_standby_feedback = on

Progressive fixes:

  1. Minimal: Monitor replication lag, increase wal_sender_timeout
  2. Better: Optimize network bandwidth, tune standby feedback settings
  3. Complete: Implement synchronous replication, automated failover, comprehensive monitoring

Step 3: PostgreSQL Feature-Specific Solutions

Extension Management
sql
-- Essential extensions
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS uuid-ossp;
CREATE EXTENSION IF NOT EXISTS btree_gin;
CREATE EXTENSION IF NOT EXISTS pg_trgm;

-- PostGIS for spatial data
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS postgis_topology;
Advanced Query Techniques
sql
-- Window functions for analytics
SELECT 
  customer_id,
  order_date,
  amount,
  SUM(amount) OVER (PARTITION BY customer_id ORDER BY order_date) as running_total
FROM orders;

-- Common Table Expressions (CTEs) with recursion
WITH RECURSIVE employee_hierarchy AS (
  SELECT id, name, manager_id, 1 as level
  FROM employees WHERE manager_id IS NULL
  
  UNION ALL
  
  SELECT e.id, e.name, e.manager_id, eh.level + 1
  FROM employees e
  JOIN employee_hierarchy eh ON e.manager_id = eh.id
)
SELECT * FROM employee_hierarchy;

-- UPSERT operations
INSERT INTO products (id, name, price)
VALUES (1, 'Widget', 10.00)
ON CONFLICT (id) 
DO UPDATE SET 
  name = EXCLUDED.name,
  price = EXCLUDED.price,
  updated_at = CURRENT_TIMESTAMP;
Full-Text Search Implementation
sql
-- Create tsvector column and GIN index
ALTER TABLE articles ADD COLUMN search_vector tsvector;
UPDATE articles SET search_vector = to_tsvector('english', title || ' ' || content);
CREATE INDEX idx_articles_fts ON articles USING GIN (search_vector);

-- Trigger to maintain search_vector
CREATE OR REPLACE FUNCTION articles_search_trigger() RETURNS trigger AS $$
BEGIN
  NEW.search_vector := to_tsvector('english', NEW.title || ' ' || NEW.content);
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER articles_search_update 
  BEFORE INSERT OR UPDATE ON articles
  FOR EACH ROW EXECUTE FUNCTION articles_search_trigger();

-- Full-text search query
SELECT *, ts_rank_cd(search_vector, query) as rank
FROM articles, to_tsquery('english', 'postgresql & performance') query
WHERE search_vector @@ query
ORDER BY rank DESC;

Step 4: Performance Configuration Matrix

Memory Configuration (for 16GB RAM server)
sql
-- Core memory settings
shared_buffers = '4GB'                    -- 25% of RAM
effective_cache_size = '12GB'             -- 75% of RAM (OS cache + shared_buffers estimate)
work_mem = '256MB'                        -- Per sort/hash operation
maintenance_work_mem = '1GB'              -- VACUUM, CREATE INDEX operations
autovacuum_work_mem = '1GB'              -- Autovacuum operations

-- Connection memory
max_connections = 200                     -- Adjust based on connection pooling
WAL and Checkpoint Configuration
sql
-- WAL settings
max_wal_size = '4GB'                      -- Larger values reduce checkpoint frequency
min_wal_size = '1GB'                      -- Keep minimum WAL files
wal_compression = on                      -- Compress WAL records
wal_buffers = '64MB'                      -- WAL write buffer

-- Checkpoint settings
checkpoint_completion_target = 0.9        -- Spread checkpoints over 90% of interval
checkpoint_timeout = '15min'              -- Maximum time between checkpoints
Query Planner Configuration
sql
-- Planner settings
random_page_cost = 1.1                    -- Lower for SSDs (default 4.0 for HDDs)
seq_page_cost = 1.0                       -- Sequential read cost
cpu_tuple_cost = 0.01                     -- CPU processing cost per tuple
cpu_index_tuple_cost = 0.005              -- CPU cost for index tuple processing

-- Enable key features
enable_hashjoin = on
enable_mergejoin = on
enable_nestloop = on
enable_seqscan = on                       -- Don't disable unless specific need

Safety Guidelines

Critical PostgreSQL safety rules I follow:

  • No destructive operations: Never DROP, DELETE without WHERE, or TRUNCATE without explicit confirmation
  • Transaction wrapper: Use BEGIN/COMMIT for multi-statement operations
  • Backup verification: Always confirm pg_basebackup or pg_dump success before schema changes
  • Read-only analysis: Default to SELECT, EXPLAIN, and monitoring queries for diagnostics
  • Version compatibility: Verify syntax and features match PostgreSQL version
  • Replication awareness: Consider impact on standbys for maintenance operations
Show full SKILL.md (497 more words)Show less

Advanced PostgreSQL Insights

Memory Architecture:

  • PostgreSQL uses ~9MB per connection (process-based) vs MySQL's ~256KB (thread-based)
  • Shared buffers should be 25% of RAM on dedicated servers
  • work_mem is per sort/hash operation, not per connection

Query Planner Specifics:

  • PostgreSQL's cost-based optimizer uses statistics from ANALYZE
  • random_page_cost = 1.1 for SSDs vs 4.0 default for HDDs
  • enable_seqscan = off is rarely recommended (planner knows best)

MVCC Implications:

  • UPDATE creates new row version, requiring VACUUM for cleanup
  • Long transactions prevent VACUUM from reclaiming space
  • Transaction ID wraparound requires proactive monitoring

WAL and Durability:

  • wal_level = replica enables streaming replication
  • synchronous_commit = off improves performance but risks data loss
  • WAL archiving enables point-in-time recovery

I'll now analyze your PostgreSQL environment and provide targeted optimizations based on the detected version, configuration, and reported performance issues.

Code Review Checklist

When reviewing PostgreSQL database code, focus on:

Query Performance & Optimization
  • All queries use appropriate indexes (check EXPLAIN ANALYZE output)
  • Query execution plans show efficient access patterns (no unnecessary seq scans)
  • WHERE clause conditions are in optimal order for index usage
  • JOINs use proper index strategies and avoid cartesian products
  • Complex queries are broken down or use CTEs for readability and performance
  • Query hints are used sparingly and only when necessary
Index Strategy & Design
  • Indexes support common query patterns and WHERE clause conditions
  • Composite indexes follow proper column ordering (equality, sort, range)
  • Partial indexes are used for filtered datasets to reduce storage
  • Unique constraints and indexes prevent data duplication appropriately
  • Index maintenance operations are scheduled during low-traffic periods
  • Unused indexes are identified and removed to improve write performance
JSONB & Advanced Features
  • JSONB operations use appropriate GIN indexes (jsonb_ops vs jsonb_path_ops)
  • JSONPath queries are optimized and use indexes effectively
  • Full-text search implementations use proper tsvector indexing
  • PostgreSQL extensions are used appropriately and documented
  • Advanced data types (arrays, hstore, etc.) are indexed properly
  • JSONB schema is validated to ensure data consistency
Schema Design & Constraints
  • Table structure follows normalization principles appropriately
  • Foreign key constraints maintain referential integrity
  • Check constraints validate data at database level
  • Data types are chosen optimally for storage and performance
  • Table partitioning is implemented where beneficial for large datasets
  • Sequence usage and identity columns are configured properly
Connection & Transaction Management
  • Database connections are pooled appropriately (PgBouncer configuration)
  • Connection limits are set based on actual application needs
  • Transaction isolation levels are appropriate for business requirements
  • Long-running transactions are avoided or properly managed
  • Deadlock potential is minimized through consistent lock ordering
  • Connection cleanup is handled properly in error scenarios
Security & Access Control
  • Database credentials are stored securely and rotated regularly
  • User roles follow principle of least privilege
  • Row-level security is implemented where appropriate
  • SQL injection vulnerabilities are prevented through parameterized queries
  • SSL/TLS encryption is configured for data in transit
  • Audit logging captures necessary security events
Maintenance & Operations
  • VACUUM and ANALYZE operations are scheduled appropriately
  • Autovacuum settings are tuned for table characteristics
  • Backup and recovery procedures are tested and documented
  • Monitoring covers key performance metrics and alerts
  • Database configuration is optimized for available hardware
  • Replication setup (if any) is properly configured and monitored

© cin12211, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agent/skills/postgres-expert of cin12211/orca-q.

Open the folder on GitHubat commit 3142fe6

Compare with similar skills

Postgres Expert next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Postgres Expert compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Postgres Expert this skillcin12211/orca-q223—~5.5kAutomated safety check: PassMIT
Postgres ExpertRightNow-AI/openfang18k—~830Automated safety check: PassApache-2.0
Postgres Optimizationrohitg00/awesome-claude-code-toolkit2.7k—~1.1kAutomated safety check: PassApache-2.0
DB Ops SopOpenDCAI/DataMind406—~388Automated safety check: PassApache-2.0
PostgreSQL ProJeffallan/claude-skills12k—~1.5kAutomated safety check: PassMIT
PlanetScale Postgres Playbookplanetscale/database-skills6983 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Postgres Expert

    RightNow-AI/openfang

    PostgreSQL expert for query optimization, indexing, extensions, and database administration

    18k GitHub stars~830 tokensUpdated 3 mo ago
    DatabasesAuto-check passed
  • Postgres Optimization

    rohitg00/awesome-claude-code-toolkit

    PostgreSQL optimization including indexes, query plans, partitioning, JSONB operations, and connection pooling

    2.7k GitHub stars~1.1k tokensUpdated 4 mo ago
    DatabasesAuto-check passed
  • DB Ops Sop

    OpenDCAI/DataMind

    Database operations runbook — backup, recovery, performance tuning, troubleshooting.

    406 GitHub stars~388 tokensUpdated 17 days ago
    DatabasesAuto-check passed
  • PostgreSQL Pro

    Jeffallan/claude-skills

    Tunes and administers PostgreSQL: EXPLAIN-driven query tuning, index choice, JSONB, extensions, streaming or logical replication, VACUUM and pg_stat monitoring.

    12k GitHub stars~1.5k tokensUpdated 4 days ago
    DatabasesAuto-check passed
  • PlanetScale Postgres Playbook

    planetscale/database-skills

    Official

    Indexes reference files on Postgres schema design, indexing, partitioning, query patterns, MVCC and VACUUM, and PlanetScale-specific operations.

    698 GitHub starsUsed in 3 repos~1.8k tokens
    DatabasesAuto-check passed
  • PostgreSQL Documentation Reference

    2025Emma/vibe-coding-cn

    PostgreSQL database documentation - SQL queries, database design, administration, performance tuning, and advanced features. Use when working with PostgreSQL…

    23k GitHub starsUsed in 1 repo~19k tokens
    DatabasesAuto-check passed

More from cin12211/orca-q

All 16 skills in this repo
  • Typescript Expert

    cin12211/orca-q

    TypeScript and JavaScript expert with deep knowledge of type-level programming, performance optimization, monorepo management, migration strategies, and modern tooling.

    223 GitHub starsUsed in 11 repos~3.7k tokens
    Auto-check passed
  • Database Expert

    cin12211/orca-q

    Database performance optimization, schema design, query analysis, and connection management across PostgreSQL, MySQL, MongoDB, and SQLite with ORM integration.

    223 GitHub stars~2.8k tokensUpdated 16 days ago
    Auto-check passed
  • Playwright Expert

    cin12211/orca-q

    Playwright E2E testing expert for browser automation, cross-browser testing, visual regression, network interception, and CI integration.

    223 GitHub stars~1.3k tokensUpdated 16 days ago
    Auto-check passed
  • Research Expert

    cin12211/orca-q

    Specialized research expert for parallel information gathering.

    223 GitHub stars~2k tokensUpdated 16 days ago
    Auto-check passed
  • Testing Orcaq

    cin12211/orca-q

    OrcaQ-specific testing guide. An agent skill from cin12211/orca-q.

    223 GitHub stars~1.6k tokensUpdated 16 days ago
    Auto-check passed
  • CSS Styling Expert

    cin12211/orca-q

    CSS architecture and styling expert with deep knowledge of modern CSS features, responsive design, CSS-in-JS optimization, performance, accessibility, and design systems.

    223 GitHub stars~4.6k tokensUpdated 16 days ago
    Auto-check passed

Works with

Categories

Questions about Postgres Expert

What does Postgres Expert do?

PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration. Postgres Expert is an agent skill from cin12211/orca-q. PostgreSQL query optimization, JSONB operations, advanced indexing strategies, partitioning, connection management, and database administration.

When should I use Postgres Expert?

Postgres Expert fits situations like: postgreSQL-specific optimizations; performance tuning; replication setup; pgBouncer configuration.

How do I install Postgres Expert in Claude Code?

Run `npx skills add cin12211/orca-q --skill postgres-expert -a claude-code`. Or copy the skill folder (.agent/skills/postgres-expert in cin12211/orca-q) into .claude/skills/postgres-expert in your project. Claude Code loads it when a task matches its description.

How do I install Postgres Expert in Codex?

Run `npx skills add cin12211/orca-q --skill postgres-expert -a codex`. Or copy the skill folder (.agent/skills/postgres-expert in cin12211/orca-q) into .agents/skills/postgres-expert in your project. Codex loads it when a task matches its description.

Can I use Postgres Expert in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cin12211/orca-q --skill postgres-expert -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/postgres-expert, .gemini/skills/postgres-expert, .github/skills/postgres-expert and .opencode/skills/postgres-expert in your project.

What does Postgres Expert need to run?

SKILL.md names no scripts, command-line tools or credentials: Postgres Expert is instructions for the agent only.

Does Postgres Expert access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Postgres Expert safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Postgres Expert use?

Postgres Expert is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Postgres Expert use?

About 5.5k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Postgres Expert?

Skills that share tags, products or a category with Postgres Expert: Postgres Expert (RightNow-AI/openfang, 18k stars), Postgres Optimization (rohitg00/awesome-claude-code-toolkit, 2.7k stars), DB Ops Sop (OpenDCAI/DataMind, 406 stars) and PostgreSQL Pro (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Postgres Expert?

cin12211 (a GitHub user) maintains it in cin12211/orca-q, which has 223 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on September 21, 2026.

Source: cin12211/orca-q on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.