HeadLightEM/lean-code-paths

Use ao escrever, modificar, refatorar ou revisar código. Rastreie a operação de um chamador através de sua API, código da aplicação, middleware e banco de dados para eliminar validação redundante, viagens de ida e volta e movimentação de dados.

O que é lean-code-paths?

Esta habilidade, 'Lean Code Paths', é uma diretriz de desenvolvimento de software focada em otimizar caminhos de código inteiros, em vez de micro-otimizações. Ela instrui o desenvolvedor ou agente de IA a começar analisando uma operção real do usuário final, rastreando-a através de todas as camadas da aplicação (API, serviço, middleware, ORM e SQL). O objetivo principal é eliminar trabalho desnecessário o mais cedo possível no caminho afetado, como validações repetidas, consultas N+1, movimentação desnecessária de dados e transformações de formato. A habilidade é útil para desenvolvedores que desejam melhorar o desempenho e a manutenibilidade do código, evitando complexidade prematura. Ela fornece regras de implementação claras sobre reutilização de dados, escolha de estruturas de dados, validação na fronteira, tratamento de propriedade e simultaneidade. A habilidade suporta qualquer plataforma (Claude Code, Cursor, etc.) e se baseia em um arquivo SKILL.md que referencia documentação adicional sobre banco de dados e runtime para consulta aprofundada.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HeadLightEM/lean-code-paths/tree/HEAD

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Caminhos de Código Enxutos

Comece com uma operação real. O que o chamador exibe ou sobre o que ele age? Siga essa necessidade através da API, serviço, middleware, ORM e SQL executado. Elimine trabalho desnecessário no ponto mais cedo do caminho afetado. Use código direto e de baixo custo no desenvolvimento rotineiro. Localize o gargalo antes de introduzir uma otimização mais complexa.

Regras de implementação

  • Reutilize dados já disponíveis para a requisição. Agrupe consultas, escritas e chamadas remotas sempre que a operação suportar. Divida lotes nos limites reais. Verifique o que uma API em massa faz internamente. Chamadas paralelas por item ainda incorrem em uma viagem de ida e volta por item.
  • Escolha estruturas de dados para o padrão de acesso. Varra uma coleção existente para uma única consulta. Construa um mapa chaveado uma vez para correspondências repetidas. Mova análise e computação invariante para fora de loops. Em caminhos críticos, elimine ordenações repetidas, cópias grandes e coleções intermediárias não utilizadas. Passe valores existentes dentro de um processo em vez de fazer uma viagem de ida e volta através de JSON para converter entre formas idênticas.
  • Analise e valide a entrada externa onde ela entra. Funções internas podem usar valores que o ponto de entrada já verificou quanto à presença, tipo ou intervalo. Antes de adicionar uma ramificação defensiva, identifique uma entrada alcançável e a falha que a ramificação previne. Capture um erro onde o código pode se recuperar, adicionar contexto útil ou traduzi-lo em um contrato de erro diferente.
  • Inclua a propriedade no predicado de leitura ou escrita quando possível. Passe identidade de tarefa, propriedade e argumentos verificados através de módulos confiáveis, agendadores e executores. Uma transferência, callback ou delegação dentro da mesma tarefa não exige, por si só, outra verificação ou consulta. Quando uma nova entrada ou limite de confiança independente estiver envolvido, verifique as garantias que o receptor não pode herdar. Reforce condições mutáveis como saldo, estado anterior e idempotência atomicamente na escrita que depende delas.
  • Use um padrão adequado do framework ou defina uma regra fixa uma vez onde ela pertence. Adicione uma configuração apenas para uma diferença real de implantação, necessidade de ajuste independente ou solicitação explícita do usuário. Use o armazenamento de configuração ou segredos existente primeiro. Crie um arquivo apenas quando o mecanismo existente não puder atender ao requisito. Adicione switches de funcionalidade apenas quando solicitado.
  • Prefira restrições únicas, escritas condicionais, incrementos atômicos e transações curtas. Antes de adicionar um bloqueio de aplicação, identifique as operações concorrentes, o resultado incorreto e por que os mecanismos existentes não podem impedi-lo. Bloqueie o menor recurso pelo menor intervalo. Verifique cada escritor e qualquer resultado tardio antes de remover um bloqueio existente.
  • Preserve regras de acesso, ordenação, paginação, semântica de sucesso parcial, qualidade de saída e recuperação. Discuta mudanças materiais no comportamento ou custo com o usuário. Reutilize o middleware do projeto, pontos de entrada de teste e critérios de aceitação.

Leia a referência relevante

  • Para SQL, comportamento de ORM, índices, operações em massa, transações e bloqueios, leia Acesso a banco de dados e transações.
  • Para seleção de campos de API, middleware, cache, filas, arquivos grandes ou carregamento de frontend, leia a seção relevante de Runtime e middleware.

Verificação

  • Exercite APIs alteradas através do ponto de entrada real da aplicação em um ambiente de teste autorizado. Verifique a resposta, os chamadores afetados e o estado final do negócio. Ao cortar campos, inspecione a carga útil real e, para caminhos com suporte de banco de dados, o SQL executado. Para agrupamento, compare as contagens de consulta para um lote pequeno e um completo. Teste a condição de corrida, requisição duplicada ou caminho de recuperação relevante quando efeitos colaterais estiverem envolvidos. Verifique trabalhos em segundo plano e computação local através de seus pontos de entrada normais e inspecione suas saídas. Siga as verificações de projeto e CI exigidas.
  • O usuário é responsável pela aceitação visual e manual da web. Entregue a página, ações e resultados esperados, e marque essa aceitação como pendente. Execute as verificações de construção, tipo ou interação relevantes para alterações de frontend. Se o usuário delegar testes de navegador, cubra o escopo solicitado.
  • Apoie alegações de aceleração com medições de antes e depois no mesmo ambiente sob dados e concorrência equivalentes. Registre a contagem de amostras e o estado do cache. Escolha métricas que exponham o custo sob investigação, como latência final, taxa de transferência, contagem de consultas, linhas varridas, bytes transferidos ou pico de memória. Para trabalho assíncrono, distinga aceitação, atraso na fila e conclusão. Relate uma única execução como uma única execução. Sem uma linha de base comparável, relate apenas o que foi medido. Mantenha a verificação proporcional à mudança.

Habilidades Relacionadas