niamkvn/ponytail-review

Revise a qualidade de todo o repositório: bugs, falhas de segurança, pontos de falha sob carga real, código arriscado sem testes, caminhos lentos e o que precisa ser removido, mesclado ou dividido. Relatório único, sequencial, sem alterar o código. Use para "revisão de codebase", "revisão de repositório", "encontrar inchaço", "o que pode ser removido", /ponytail-review.

O que é ponytail-review?

Esta skill realiza uma revisão completa e estruturada de um repositório de código, simulando a análise de um desenvolvedor sênior que acabou de herdar o código e será responsabilizado por falhas. O foco está em priorizar correções que garantam que o sistema seja correto, seguro, resiliente a cargas, bem testado, rápido e enxuto. A análise cobre desde o mapeamento da arquitetura e fluxos principais até a identificação de bugs, riscos de segurança e escalabilidade, código sem teste, gargalos de desempenho e oportunidades de simplificação (remoção de código morto, mesclagem de duplicatas, divisão de funções com múltiplas responsabilidades). A skill é compatível com qualquer plataforma que suporte a definição de skills para agentes de IA, como Claude Code, Cursor ou Codex, e gera um relatório em markdown no idioma português (simplificado para desenvolvedores) com grupos de prioridade claros: "Obrigatório corrigir", "Deveria corrigir" e "Bom ter". Cada achado é acompanhado de um caso concreto, localização no código e sugestão de correção mínima, sem impor preferências de estilo ou preocupações vagas. O relatório é único, não modifica o código, e inclui um veredito final e contagem de linhas/dependências que podem ser eliminadas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/niamkvn/agent-skills-starter/tree/HEAD/.agents/skills/ponytail-review

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

Revise o repositório como um desenvolvedor sênior que acabou de herdá-lo e será chamado quando algo quebrar. Prioridades: correto, seguro, resiliente a cargas, testado, rápido, enxuto. Cada linha adicional terá que ser lida, testada e corrigida no futuro. Este é um relatório solicitado pelo usuário, portanto escreva completo.

1. Mapeie primeiro

  • Revise o que o usuário mencionou (pasta, pacote ou repositório). Se não for mencionado: o repositório inteiro.
  • Leia o README, configuração de build/deploy, lista de dependências, pontos de entrada (main, rotas, handlers, jobs, CLI) e testes.
  • Determine a carga esperada (uma pessoa executando um script, ou muitos usuários/processos simultâneos). Avalie a escala em relação a isso e mencione as suposições.
  • Trace os fluxos principais de ponta a ponta: dados entram, são armazenados, saem. Leia completamente os caminhos de entrada do usuário, dinheiro, autenticação, gravação de dados, jobs em segundo plano e estado compartilhado entre processos.
  • Repositório grande: aprofunde-se nas partes mais caras se derem errado, não arquivo por arquivo. Mencione as partes que não foram lidas.

2. Procure

  1. Bugs: resultado incorreto, crash, edge case negligenciado (vazio, zero, último item, arredondamento, fuso horário), chamada não corresponde ao retorno da função, mesma regra aplicada de forma diferente em dois lugares.
  2. Riscos: falhas de segurança (injeção, aleatório fraco, segredo no código, entrada do usuário sem validação), perda de dados (erro engolido, ordem de gravação errada, sem transação).
  3. Escala: seguro para um usuário, incorreto para muitos: race condition check-then-write, trabalho repetido a cada processo, memória/lista que cresce indefinidamente, query por item, O(n^2) em entradas grandes, estado por processo que deveria ser compartilhado.
  4. Teste ausente: lógica arriscada (ramificações, parser, dinheiro, segurança, gravação de dados) sem teste que falhe quando a lógica quebrar. Um bom teste, não cobertura.
  5. Velocidade: lentidão grande = problema. Otimização pequena (trabalho repetido em hot loop) = sugestão.
  6. Enxuto: código que não precisa existir ou precisa ser menor.
    • remover: código morto, opções/flags/config não utilizadas, funcionalidade especulativa
    • reutilizar: dois helpers fazendo a mesma coisa (mantenha um, mencione o caminho)
    • stdlib/nativo: já fornecido pela biblioteca padrão ou plataforma; dependência que faz algo que pode ser feito em algumas linhas
    • yagni: interface com uma única implementação, factory com um único produto, wrapper que apenas repassa chamadas
    • mesclar: cópias semelhantes que precisam mudar juntas
    • dividir: uma função/classe com várias tarefas não relacionadas. Divida por tarefa, não por número de linhas, e não crie um helper que apenas encurta a função.

3. Verifique antes de relatar

  • Cada achado precisa de um caso concreto: "esta entrada/situação gera este resultado incorreto". Sem caso, não é um achado.
  • Antes de mencionar código não utilizado, busque em toda a árvore, incluindo testes, fixtures, config e referências de string/dinâmicas.
  • Atalhos marcados com comentário shortcut: (ou antigo ponytail:) que mencionam seus limites são decisões, não achados, a menos que a carga esperada já os tenha ultrapassado.
  • Proponha a menor correção que funcione. Priorize a remoção de código. Não adicione camadas, frameworks ou configurações desnecessárias.
  • Sem preferência de estilo, sem "considere", sem preocupações vagas.

4. Saída

Português simples: frases curtas, palavras do dia a dia. Explique termos técnicos na primeira vez que forem usados. O leitor pode nunca ter visto este código.

Comece com Função deste repositório: (2-3 frases) e a carga assumida.

Em seguida, os achados em três grupos, do mais importante primeiro, pule grupos vazios:

  • Obrigatório corrigir: bugs, segurança, perda de dados, falha sob carga esperada.
  • Deveria corrigir: código arriscado sem teste, lentidão real, duplicação, função com tarefas misturadas, código desnecessário.
  • Bom ter: otimizações pequenas, formas mais curtas.

Numere sequencialmente entre grupos para que o usuário possa dizer "corrija 2 e 5". Máximo de 20 achados; mencione a quantidade ignorada. Cada achado tem quatro partes, cada uma com 1-2 frases curtas:

  1. Pedido registrado no dia errado (billing/close_day.py:L40-52)
    • O que é: Job da meia-noite fecha o dia e fatura todos os pedidos daquele dia.
    • Problema: "Hoje" é obtido do horário do servidor (UTC). Pedido às 00:30 em Berlim é faturado no dia anterior.
    • Correção: Calcule o dia uma vez no fuso horário da loja: datetime.now(ZoneInfo("Europe/Berlin")).date().
    • Se ignorado: Pedidos tarde da noite com data errada, contabilidade corrige manualmente.

Termine com:

  • Veredito: uma linha: saudável, ou o que deve ser corrigido primeiro.
  • Enxuto: -<N> linhas, -<M> dependências possíveis. se houver achados de enxugamento.
  • Não verificado: partes que não foram lidas ou não podem ser executadas.

Nenhum achado: Função deste repositório:, depois Saudável. Nada a corrigir. e uma linha sobre o que foi verificado.

Relatório único, não altera o código.

Individual skills in this repo

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

Habilidades Relacionadas