Communitygithub.com

Piyush-Nagar/coding-agents-skills

Desempenho é um recurso. Projete para o P99, não para a média. Meça antes de otimizar — a intuição está quase sempre errada sobre onde o tempo está sendo gasto.

O que é coding-agents-skills?

Esta skill fornece um conjunto de diretrizes práticas de otimização de desempenho para desenvolvedores e agentes de IA. Ela enfatiza a importância de medir antes de otimizar, usando ferramentas como gráficos de chama, APM e `EXPLAIN ANALYZE` para identificar gargalos com precisão. As regras abordam padrões comuns de perda de desempenho, como consultas N+1, falta de paginação em endpoints de lista, projeção excessiva de colunas com `SELECT *` e uso inadequado de índices. Também cobre estratégias de cache com planos de invalidação explícitos, dimensionamento de pools de conexão e threads, batch de chamadas externas, paralelização de chamadas remotas e compactação de payloads. A skill é útil para qualquer agente ou desenvolvedor que trabalhe com serviços web, APIs REST, bancos de dados ou sistemas distribuídos, ajudando a evitar armadilhas comuns de desempenho e a projetar sistemas que atendam a métricas de latência no percentil 99 (P99).

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Piyush-Nagar/coding-agents-skills/tree/HEAD/backend/core/nfr/performance

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Desempenho

Desempenho é um recurso. Projete para o P99, não para a média. Meça antes de otimizar — a intuição está quase sempre errada sobre onde o tempo está sendo gasto.

Regras

  • Perfile antes de otimizar. Adivinhar o caminho crítico desperdiça dias. Use gráficos de chama, rastreamento APM ou EXPLAIN ANALYZE primeiro.
  • Elimine consultas N+1. A maior causa de latência em código de serviço. Prefira junções (joins), buscas em lote ou IN (...) em vez de consultas por linha.
  • Paginação em todo endpoint de lista. Conjuntos de resultados ilimitados eventualmente causam falta de memória (OOM) em um pod ou saturam o banco de dados. Prefira paginação baseada em cursor para tabelas grandes.
  • Indexe apenas predicados de consulta, não todas as colunas. Cada índice extra reduz a velocidade de escrita e aumenta o armazenamento. Adicione um índice somente quando uma consulta conhecida precisar dele.
  • Projete apenas as colunas necessárias. SELECT * em um DTO grande desperdiça rede, memória e GC. Retorne projeções estreitas para APIs de lista.
  • Armazene em cache dados de leitura intensiva e idempotentes. Mas decida a estratégia de invalidação antes de adicionar o cache — um cache sem plano de remoção é uma fábrica de bugs.
  • Defina explicitamente os tamanhos dos pools de conexão e threads. Os padrões raramente são adequados para sua carga de trabalho. Dimensione-os com base na capacidade downstream, não para cima.
  • Agrupe chamadas de saída. Uma requisição com 100 itens supera 100 requisições com um item em todos os aspectos — latência, CPU, conexões com o banco.
  • Evite cadeias síncronas de chamadas remotas. A latência se acumula. Distribua as operações em paralelo ou mova o trabalho para execução assíncrona.
  • Mantenha os payloads pequenos. Comprima as respostas, remova campos não utilizados, use protocolos binários quando for importante (gRPC, Protobuf).

Sinais de alerta

  • Loops que consultam o banco de dados.
  • APIs que retornam "todos os registros".
  • Caches sem TTL e sem invalidação.
  • Pool de threads / pool de conexões configurado com o padrão do framework em produção.
  • Dashboards de latência que mostram apenas médias (sem P95/P99).

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Habilidades Relacionadas