complexity-cuts
Ajuda seu agente a otimizar código para ser mais rápido. Ele faz mudanças pequenas e verifica se tudo continua funcionando. Útil para melhorar a performance de programas.
O que ela faz
O 'complexity-cuts' ajuda a deixar seu código mais rápido e eficiente. Ele encontra partes do código que estão lentas ou usam muita memória e sugere melhorias, uma de cada vez, garantindo que tudo continue funcionando como antes.
Quando usar
- ✓Seu código está lento com muitos dados.
- ✓Seu programa trava ou usa memória demais.
- ✓Você precisa otimizar um código que já existe.
Exemplo do que pedir para a IA
“Como posso deixar este código mais rápido? Ele está demorando muito para processar listas grandes.”
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 analisa seu código para achar gargalos (pontos lentos) e sugere mudanças específicas. Cada mudança é testada para garantir que o código não quebre. Se uma mudança falhar, ela é desfeita automaticamente.
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 sickn33/agentic-awesome-skills --skill complexity-cutsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/complexity-cuts/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.
complexity-cuts — Reduzir Big-O em Código Existente
lemmaly impede complexidade ruim antes que o código seja escrito. complexity-cuts corrige isso depois do fato: o código já existe, funciona, mas sua complexidade de tempo ou espaço é pior do que o necessário.
Violar a letra destas regras é violar o espírito da habilidade. Adaptar "só um pouquinho" é como um refatoramento mais rápido-mas-errado é entregue.
Quando Usar Esta Habilidade
Use complexity-cuts ao refatorar código existente que tenha Big-O ruim:
- Loops aninhados,
O(n²)ou piores varreduras, trabalho repetido, alocações redundantes, memória estourada. - Sintomas declarados: "isso é lento em entradas grandes", "tempo esgotado", "OOM" (Out Of Memory), "muita memória", "reduzir complexidade", "otimizar este algoritmo".
- Padrões de consulta N+1 em ORMs (Prisma, Drizzle, SQLAlchemy, Django, ActiveRecord).
awaitdentro deforsobre itens independentes causando latência serial.
Para prevenir complexidade ruim antes que o código seja escrito, use lemmaly. Para otimizações de nível matemático (Bloom, HLL, FFT, projeção JL), escale para mathguard.
A Lei de Ferro
NO TRANSFORMATION WITHOUT EXISTING TESTS GREEN BEFORE AND AFTER
Se o código não tem testes, escreva um teste de caracterização primeiro (entrada de referência → saída atual). Depois, transforme. E verifique se o teste ainda passa. Se você pular isso, a otimização pode quebrar silenciosamente os chamadores — e mais rápido-mas-errado é pior do que lento-e-certo.
Regras Inegociáveis
Declare o Big-O atual e o alvo antes de tocar no código. Em uma linha:
- Atual:
time = O(?),space = O(?) - Alvo:
time = O(?),space = O(?) - Dimensão de entrada dominante (n = o quê, quão grande na prática)
Se você não consegue declarar o Big-O atual, você ainda não entende o código. Leia mais.
- Atual:
Identifique o gargalo, não adivinhe. Aponte para a(s) linha(s) exata(s) responsável(is) pelo termo dominante. Loop aninhado? Varredura linear repetida? Recálculo? Alocação dentro de um loop quente? A correção está lá, não em outro lugar.
Uma transformação de cada vez, com um loop de verificar-reverter-parar. O loop é:
- Aplique exatamente uma transformação do playbook.
- Execute a suíte de testes existente (ou o teste de caracterização que você escreveu de acordo com a Lei de Ferro).
- Se algum teste quebrar: reverta imediatamente. Não corrija o teste. Não corrija em torno da falha. Reverter.
- Conte as reversões nesta peça de código. Se 3 reversões seguidas, PARE de otimizar. O gargalo está errado, a transformação está errada, ou o código tem invariantes que você não modelou. Escalar para
invariant-guarde escreva o contrato ausente — não tente uma quarta transformação. - Somente após uma transformação passar com sucesso: escolha a próxima.
Mudanças empilhadas escondem regressões. Testes corrigidos escondem regressões mais alto.
Preserve as semânticas exatamente. Complexidade menor não deve alterar saídas, garantias de ordenação, estabilidade ou comportamento de erro. Se a otimização exigir uma mudança semântica (por exemplo, saída não ordenada), chame-a explicitamente e confirme se é aceitável.
Sem números inventados. Nunca escreva "10x mais rápido" ou "economiza 200MB" sem medir. Escreva
<measured: TBD>e siga em frente, ou meça de fato com uma entrada representativa.Sempre relate a razão de aceleração medida após uma transformação ser concluída. Uma vez que o novo código esteja verde, execute um benchmark representativo (mesma entrada, mesma máquina, cache aquecido) e relate
before → aftermais a razão comoN× faster(ouN× less memory). Uma linha, anexada ao diff:p50: 186 ms → 1.1 ms (169× faster, n=20,000, 200 samples)Se você não puder medir (por exemplo, a vantagem é puramente assintótica em entradas que você não tem), diga isso explicitamente:
asymptotic only, no measurement — O(n²) → O(n). Nunca pule silenciosamente esta etapa.
O playbook de transformação
A grande maioria das vitórias de Big-O no mundo real vêm de um pequeno conjunto de movimentos. Tente-os nesta ordem:
Reduções de complexidade de tempo
| Cheiro | Correção | Vitória Típica |
|---|---|---|
for x in A: if x in B onde B é lista/array |
Converta B para Set/Map uma vez |
O(n·m) → O(n+m) |
| Loop aninhado calculando pares/junções | Hash-join na chave; indexar por campo de consulta | O(n·m) → O(n+m) |
.find / .indexOf / .includes repetido dentro de um loop |
Pré-calcule o índice Map<key, item> fora do loop |
O(n^2) → O(n) |
| Recálculo repetido do mesmo valor | Memoizar / cachear por chave de entrada | O(n·f(n)) → O(n + f(n)) |
| Ordenar dentro de um loop | Ordenar uma vez fora | O(n^2 log n) → O(n log n) |
…
Perguntas frequentes
O que é 'Big-O'?
É uma forma de descrever o quão rápido um código fica mais lento conforme a quantidade de dados aumenta. Por exemplo, 'O(n²)' significa que se você dobrar os dados, o tempo pode quadruplicar.
E se o código não tiver testes?
Antes de fazer qualquer mudança, você precisa criar um teste simples que mostre como o código funciona agora. Só depois disso você tenta a otimização e verifica se o teste ainda passa.
Posso fazer várias mudanças de uma vez?
Não. O 'complexity-cuts' exige que as mudanças sejam feitas uma de cada vez. Isso ajuda a identificar qual mudança trouxe o ganho e a evitar que o código quebre sem saber o motivo.
Detalhes
Descrição original do autor
Lower Big-O on existing code via a one-transformation-at-a-time playbook with verify-revert-stop. For new code use lemmaly; for math-level wins escalate to mathguard.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2609
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC