SkillProgramaçãoRevisão
Revisão de Performance
Identifica regressões de performance introduzidas por um PR: complexidade algorítmica, queries ineficientes e gargalos em hot paths. Use em PRs que tocam processamento de dados, acesso a banco, chamadas de rede ou caminhos críticos.
Ações
PerfilDev
ProfundidadeAlta
IdiomaInglês (skill original)
Objetivo
Em uma frase.
Identificar regressões de performance introduzidas pelo PR — cobrindo complexidade algorítmica, queries ineficientes, alocações desnecessárias de memória, operações bloqueantes em contextos assíncronos e gargalos em caminhos críticos de execução.
Aplicação
Quando
faz sentido.
Usar
- Em PRs que tocam lógica de processamento de dados, acesso a banco, chamadas de rede, loops sobre coleções ou caminhos críticos.
- Quando o código roda em contexto de alta carga ou frequência (endpoint muito usado, worker, job batch).
- Quando o PR altera código que já apresentou problemas de performance antes.
Não usar
- Para micro-otimizações sem impacto mensurável — o foco é em regressões reais.
- Para revisão de lógica ou segurança — use as skills correspondentes.
- Antes de mapear o escopo do PR com understanding-pr-scope — é preciso identificar hot paths primeiro.
Prompt
Instruções
para a IA.
### Passo 1 — Identifique os hot paths
Classifique cada mudança por relevância de performance. Hot paths (alta prioridade): código em cada request, loops sobre coleções que crescem com dados, jobs batch, serialização de alta frequência. Cold paths (baixa prioridade): inicialização única, handlers de erro raros, código administrativo. Concentre a análise nos hot paths.
### Passo 2 — Verifique complexidade algorítmica
Para cada loop em hot path, avalie a complexidade de tempo, se
### Passo 3 — Verifique acesso ao banco
Procure queries N+1 (query dentro de loop, lazy loading onde caberia eager), queries sem índice (
### Passos 4 a 6 — Memória, assincronismo e cache
Verifique alocações desnecessárias em hot paths, operações bloqueantes em contexto assíncrono (I/O síncrono no event loop,
Classifique cada mudança por relevância de performance. Hot paths (alta prioridade): código em cada request, loops sobre coleções que crescem com dados, jobs batch, serialização de alta frequência. Cold paths (baixa prioridade): inicialização única, handlers de erro raros, código administrativo. Concentre a análise nos hot paths.
### Passo 2 — Verifique complexidade algorítmica
Para cada loop em hot path, avalie a complexidade de tempo, se
n pode crescer indefinidamente, se há loops aninhados explosivos e se buscas usam Set/Map (O(1)) em vez de Array (O(n)).### Passo 3 — Verifique acesso ao banco
Procure queries N+1 (query dentro de loop, lazy loading onde caberia eager), queries sem índice (
LIKE '%termo%', full table scan) e problemas de volume (SELECT *, ausência de LIMIT).### Passos 4 a 6 — Memória, assincronismo e cache
Verifique alocações desnecessárias em hot paths, operações bloqueantes em contexto assíncrono (I/O síncrono no event loop,
await sequencial onde Promise.all paralelizaria) e ausência de cache em operações caras e repetíveis. Sempre estime o impacto sob carga real (ex.: "com 10k usuários simultâneos, este N+1 gera 10k queries por request"). Marque problemas de cold path como baixa severidade e declare "No performance issues found" quando não houver nenhum.Casos
Exemplos
de uso.
**Contexto:** um endpoint retorna pedidos recentes com o nome do cliente de cada um.
```typescript
// src/controllers/OrderController.ts
const orders = await this.orderRepository.findRecent(50);
const result = await Promise.all(
orders.map(async (order) => {
const customer = await this.customerRepository.findById(order.customerId);
return { id: order.id, total: order.total, customerName: customer.name };
})
);
```
**Saída esperada do agente**
**Tipo:** N+1 Query
**Descrição:** 1 query para 50 pedidos + 50 queries para buscar o cliente de cada um = 51 queries por request. Mesmo com `Promise.all`, o volume no banco é N+1.
**Impacto estimado:** a 100 req/s, ~5.100 queries/s só neste endpoint; o connection pool satura primeiro em pico.
**Severidade:** alta
**Sugestão:** usar JOIN ou eager loading para buscar pedidos e clientes em uma única query.Constelação
Onde
ela vive.
Bundles que incluem
Execução
Como usar
com IA.
- 01Copie a skill (botão "Copiar skill para IA", no topo): o texto copiado já é a skill completa, não um resumo.
- 02Abra o Claude ou Claude Code e cole — a IA recebe todas as instruções e fica pronta para a tarefa.
- 03Prefere usar como arquivo reutilizável? Baixe o .zip e coloque o
SKILL.mdem.claude/skills/(Claude Code) ou anexe o arquivo no Claude (claude.ai).