postgres-patterns
Ajuda seu agente a otimizar bancos de dados PostgreSQL. Ele entende de design de tabelas, índices e segurança para consultas rápidas.
O que ela faz
Este agente ajuda a criar e otimizar bancos de dados PostgreSQL. Ele oferece sugestões sobre como organizar seus dados, criar índices eficientes e garantir a segurança.
Quando usar
- ✓Ao criar a estrutura do seu banco de dados.
- ✓Quando uma consulta ao banco de dados está muito lenta.
- ✓Ao configurar permissões de acesso aos dados.
Exemplo do que pedir para a IA
“Como posso criar um índice para acelerar buscas por data em uma tabela de eventos?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele funciona como um guia rápido, mostrando exemplos de código e boas práticas. Você pode consultar tabelas de referência para escolher os melhores tipos de dados e índices para suas necessidades.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill postgres-patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/postgres-patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Padrões do PostgreSQL
Referência rápida para as melhores práticas do PostgreSQL. Para orientação detalhada, use o agente database-reviewer.
Quando Ativar
- Escrevendo consultas SQL ou migrações
- Projetando esquemas de banco de dados
- Solucionando consultas lentas
- Implementando Segurança em Nível de Linha (RLS)
- Configurando pooling de conexões
Referência Rápida
Tabela de Referência de Índices
| Padrão de Consulta | Tipo de Índice | Exemplo |
|---|---|---|
WHERE col = value |
B-tree (padrão) | CREATE INDEX idx ON t (col) |
WHERE col > value |
B-tree | CREATE INDEX idx ON t (col) |
WHERE a = x AND b > y |
Composto | CREATE INDEX idx ON t (a, b) |
WHERE jsonb @> '{}' |
GIN | CREATE INDEX idx ON t USING gin (col) |
WHERE tsv @@ query |
GIN | CREATE INDEX idx ON t USING gin (col) |
| Intervalos de séries temporais | BRIN | CREATE INDEX idx ON t USING brin (col) |
Tabela de Referência de Tipos de Dados
| Caso de Uso | Tipo Correto | Evitar |
|---|---|---|
| IDs | bigint |
int, UUID aleatório |
| Strings | text |
varchar(255) |
| Timestamps | timestamptz |
timestamp |
| Dinheiro | numeric(10,2) |
float |
| Flags | boolean |
varchar, int |
Padrões Comuns
Ordem do Índice Composto:
-- 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'
Índice de Cobertura:
CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
-- Avoids table lookup for SELECT email, name, created_at
Índice Parcial:
CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
-- Smaller index, only includes active users
Política de RLS (Otimizada):
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;
Paginação com Cursor:
SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
-- O(1) vs OFFSET which is O(n)
Processamento de Fila:
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 *;
Detecção de Anti-Padrões
-- 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;
Modelo de Configuração
-- 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();
Relacionados
- Agente:
database-reviewer- Fluxo de trabalho completo de revisão de banco de dados - Skill:
clickhouse-io- Padrões de análise do ClickHouse - Skill:
backend-patterns- Padrões de API e backend
Baseado nas Skills do Agente Supabase (crédito: equipe Supabase) (Licença MIT)
Perguntas frequentes
O que é um índice?
Um índice é como o índice de um livro, ele ajuda o banco de dados a encontrar informações mais rápido sem precisar ler tudo.
Qual a diferença entre `text` e `varchar`?
Para textos longos, `text` é geralmente mais eficiente no PostgreSQL. `varchar(255)` é uma limitação desnecessária na maioria dos casos.
O que é RLS?
RLS significa Row Level Security (Segurança em Nível de Linha). Permite definir quem pode ver ou modificar quais dados diretamente no banco de dados.
Detalhes
Descrição original do autor
PostgreSQL database patterns for query optimization, schema design, indexing, and security. Based on Supabase best practices. Use when designing PostgreSQL schemas, indexes, or RLS policies, or when a query is too slow.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #98
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
mason
Ajuda seu agente a escrever código limpo e funcional. Ele segue as regras definidas para garantir que tudo funcione como esperado.
sickn33/agentic-awesome-skills
max
Faz seu agente melhorar o código existente sem mudar o que ele faz. Ele deixa o código mais fácil de ler e manter.
sickn33/agentic-awesome-skills