postgres-pro — скилл для Claude Code: возможности и установка
Разбирает планы запросов PostgreSQL, предлагает индексы и помогает настраивать репликацию и обслуживание. Пригодится для поиска узких мест и проверки изменений в базе.
npx skills add Jeffallan/claude-skills --skill postgres-pro -a claude-codeЧто делает postgres-pro
Скилл помогает анализировать медленные запросы через EXPLAIN (ANALYZE, BUFFERS), выбирать тип индекса под нагрузку и проверять, использует ли его планировщик. Он также охватывает JSONB, расширения PostgreSQL, репликацию и мониторинг через представления pg_stat.
Внутри есть рабочий процесс от поиска проблемы до проверки результата и справочные файлы по производительности, JSONB, расширениям, репликации и обслуживанию. Примеры показывают частичный индекс, сбор статистики через ANALYZE и контроль задержки репликации. Для изменений индексов это повод проверить план до и после: одного создания индекса недостаточно.
Рекомендации охватывают PostgreSQL 12-16, в том числе настройку autovacuum и применение CREATE INDEX CONCURRENTLY в production. Скилл советует использовать пул соединений, подготовленные выражения и тип uuid для UUID; он предостерегает от глобального отключения autovacuum и хранения крупных BLOB в базе.
Какие задачи решает
- найти узкие места медленного запроса по плану выполнения
- подобрать индекс и проверить, использует ли его планировщик
- организовать хранение и поиск по JSONB
- настроить потоковую или логическую репликацию и отслеживать задержку
- проверить обслуживание таблиц и работу autovacuum
Примеры запросов агенту
- Разбери медленный запрос через `EXPLAIN (ANALYZE, BUFFERS)` и предложи индекс, затем проверь план.
- Подбери GIN-индекс для поиска по JSONB в таблице событий.
- Проверь задержку репликации и состояние autovacuum по представлениям `pg_stat`.
Как установить postgres-pro
1Через Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill postgres-pro -a claude-code2Вручную: положить файлы
~/.claude/skills/postgres-pro/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/postgres-pro/
1Через Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill postgres-pro -a codex2Вручную: положить файлы
.agents/skills/postgres-pro/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill postgres-pro -a cursor2Вручную: положить файлы
.cursor/skills/postgres-pro/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Jeffallan/claude-skills postgres-pro2Вручную: положить файлы
.github/skills/postgres-pro/SKILL.md1Через Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill postgres-pro -a gemini-cli2Командой платформы
gemini skills install https://github.com/Jeffallan/claude-skills --path skills/postgres-proВручную: положить файлы
.devin/skills/postgres-pro/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill postgres-pro -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора61
Весь набор →Похожие
Вопросы о postgres-pro
Как установить postgres-pro в Claude Code?
Выполните npx skills add Jeffallan/claude-skills --skill postgres-pro -a claude-code. Файл скилла находится по пути ~/.claude/skills/postgres-pro/SKILL.md.
Что делает скилл postgres-pro?
Он помогает анализировать планы PostgreSQL, настраивать индексы, JSONB и репликацию, а также следить за VACUUM и состоянием базы через pg_stat.
Какие версии PostgreSQL охватывает postgres-pro?
Справка скилла охватывает PostgreSQL 12-16.
Исходный текст
SKILL.md · MIT
---
name: postgres-pro
description: Use when optimizing PostgreSQL queries, configuring replication, or implementing advanced database features. Invoke for EXPLAIN analysis, JSONB operations, extension usage, VACUUM tuning, performance monitoring.
license: MIT
metadata:
author: https://github.com/Jeffallan
company: https://synergetic.solutions
version: "1.1.0"
domain: infrastructure
triggers: PostgreSQL, Postgres, EXPLAIN ANALYZE, pg_stat, JSONB, streaming replication, logical replication, VACUUM, PostGIS, pgvector
role: specialist
scope: implementation
output-format: code
related-skills: database-optimizer, devops-engineer, sre-engineer
---
# PostgreSQL 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
1. **Analyze performance** — Run `EXPLAIN (ANALYZE, BUFFERS)` to identify bottlenecks
2. **Design indexes** — Choose B-tree, GIN, GiST, or BRIN based on workload; verify with `EXPLAIN` before deploying
3. **Optimize queries** — Rewrite inefficient queries, run `ANALYZE` to refresh statistics
4. **Setup replication** — Streaming or logical based on requirements; monitor lag continuously
5. **Monitor and maintain** — Track VACUUM, bloat, and autovacuum via `pg_stat` views; verify improvements after each change
### End-to-End Example: Slow Query → Fix → Verification
```sql
-- 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
```sql
-- 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
```sql
-- 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
```sql
-- 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 `EXPLAIN` before and after creation
- Use `CREATE INDEX CONCURRENTLY` to avoid table locks in production
- Run `ANALYZE` after bulk data changes to refresh statistics
- Monitor autovacuum; tune `autovacuum_vacuum_scale_factor` for high-churn tables
- Use connection pooling (pgBouncer, pgPool)
- Monitor replication lag via `pg_stat_replication`
- Use prepared statements to prevent SQL injection
- Use `uuid` type for UUIDs, not `text`
### 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:
1. Query with `EXPLAIN (ANALYZE, BUFFERS)` output and interpretation
2. Index definitions with rationale and pre/post verification
3. Configuration changes with before/after values
4. Monitoring queries for ongoing health checks
5. 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
Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)
[Documentation](https://jeffallan.github.io/claude-skills/skills/infrastructure/postgres-pro/)
© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills