Detecte os atalhos que os agentes tomam antes que o trabalho chegue até você.

Um teste pulado para obter aprovação, um erro ignorado, um stub deixado para trás, uma verificação de tipo silenciada. O anti-slop verifica cada alteração feita por um agente quanto a esses casos e a envia de volta ao agente desenvolvedor com cada descoberta.

TarefaAplique códigos de cupom no checkout.Em revisão
Barreiras de qualidade
Desenvolvedor portão de qualidadeTentar 2Aprovado
Anti-slop
Sem nova dívida técnicaAprovado
0 bloqueando · 0 introduzidos · 1 alterados · 14 já existentes
Desenvolvedor portão de qualidadeTentar 1Bloqueado · enviado para o Desenvolvedor
Anti-slop
Sem nova dívida técnicaPrecisa de reparo
2 bloqueando · 2 introduzidos · 1 alterados · 14 já existentes
  • Teste ignoradosrc/checkout/coupon.test.ts:88it.skip('rejects an expired coupon', …)
  • Erro ignoradosrc/checkout/apply-coupon.ts:41} catch {}
Problemas encontrados
  • CorrigidoTeste ignoradoAnti-slop
  • CorrigidoErro ignoradoAnti-slop

A visualização de tarefa é uma recriação do portal do Coroid. A tarefa, os arquivos e as descobertas nela são ilustrativos.

Regras
106
Famílias
13
Regras que bloqueiam por padrão
44
Descobertas existentes que bloqueiam uma alteração
0

O que ele procura.

As regras vêm em famílias. Cada regra bloqueia, aconselha ou apenas registra, e um proprietário pode alterar isso para a organização ou para um projeto.

Testes
Testes focados ou pulados, testes excluídos, asserções removidas ou enfraquecidas, testes que não podem falhar e retentativas que escondem um teste instável.
  • .only
  • .skip
  • expect(true).toBe(true)
Supressões
Novos desativadores de lint, erros de tipo ignorados, casts para any e código excluído da cobertura.
  • @ts-ignore
  • as any
  • eslint-disable
Build e CI
Etapas de teste removidas ou permitidas a falhar, limites de cobertura reduzidos, execuções de teste que passam sem testes, hooks de commit pulados e saída de build commitada.
  • continue-on-error: true
  • --passWithNoTests
Evidência de teste
Uma execução de teste que não rodou nada, menos testes que a última execução bem-sucedida, uma execução parcial relatada como completa e resultados em cache passados como uma nova execução.
  • Tests: 0 total
  • --onlyChanged
Código de produção
Implementações de placeholder, código de depuração, notas como 'em uma implementação real', instruções destinadas a pessoas, dados fictícios e código de produção que importa código de teste.
  • throw new Error('Not implemented')
  • debugger;
Tratamento de erros
Erros ignorados ou ocultos atrás de um valor padrão, verificações de permissão que permitem acesso quando falham e retentativas sem limite.
  • except: pass
  • .catch(() => {})
Segurança
Segredos codificados diretamente no programa, desativação da verificação TLS, remoção de mecanismos de autenticação, configuração CORS com curingas e credenciais, e construção de consultas SQL a partir de strings.
  • rejectUnauthorized: false
  • verify=False
Arquitetura
Novos ciclos de importação, importações entre limites declarados, blocos duplicados, código deixado sem uso pela alteração e novas cópias de padrões descontinuados.
Dependências
Uma alteração de manifesto sem seu arquivo de lock, uma segunda biblioteca para uma tarefa que já tem uma, versões não fixadas e atualizações que a especificação não solicitou.
  • "latest"
Cache
Chaves de cache sem o tenant, caches em memória que nunca expiram e valores de tempo de compilação que deveriam ser lidos quando o código executa.
Comentários
Comentários que repetem a linha seguinte, descrevem a edição, fazem ressalvas ou contradizem o código ao lado deles.
  • // Updated to
  • // should work
Escopo da alteração
Arquivos fora do que a especificação abrange, alterações apenas de formatação e renomeações que a tarefa não exigiu.
Histórico do agente
O que o agente fez no processo, como excluir o teste que estava falhando ou alterar um valor esperado para o que a execução com falha imprimiu.

Apenas o que a alteração introduziu bloqueia o processo.

A maioria dos repositórios já contém alguns desses padrões. Anti-slop classifica cada descoberta conforme sua origem, para que dívidas existentes nunca atrasem trabalhos não relacionados.

Introduzida
Nova nesta alteração. Uma descoberta proveniente de uma regra bloqueante envia a alteração de volta ao agente desenvolvedor.
Afetada
Já existente, em uma linha ou função que a alteração edita. Ela é registrada e corrigida quando sua disciplina de alterações exigir.
Existente
Em outro lugar do repositório. É registrada como dívida na Factory, onde você pode criar uma tarefa para corrigir as descobertas de uma regra.

Mover código não conta como introduzi-lo. Copiá-lo sim.

Você decide até onde uma alteração pode ir.

A disciplina de alterações informa ao agente desenvolvedor o que ele pode limpar enquanto trabalha.

  1. CirúrgicaApenas o que a especificação necessita. Outros problemas são reportados, mas não corrigidos.
  2. EquilibradaPadrãoTambém corrige pequenos problemas nas linhas que a alteração toca de qualquer forma.
  3. RestauradoraTambém limpa as descobertas dentro das funções que a alteração edita.

O agente desenvolvedor trabalha seguindo as mesmas regras.

Anti-slop não é apenas um veredito no final. O agente recebe as regras enquanto escreve a alteração e não pode ignorá-las.

  1. O agente começa com sua disciplina de alterações e os padrões que você colocou em quarentena, cada um com a substituição a ser usada.
  2. Ele identifica as regras rápidas após cada edição e tem uma chance de corrigir os problemas bloqueadores antes da execução do QA.
  3. Os agentes não podem aceitar suas próprias descobertas. Quando um agente afirma que um teste está incorreto e o altera, um revisor deve aprovar essa mudança.
  4. Um arquivo no repositório, .coroid/anti-slop.yml, pode adicionar regras e excluir caminhos gerados. Ele é lido a partir da base da alteração, para que uma mudança não possa flexibilizar suas próprias regras.

Faça com que os agentes que você já utiliza sigam as mesmas regras.

Engenheiros que trabalham com seus próprios agentes de codificação também podem usar as regras da sua organização.

AGENTS.md Snippet
Baixe uma seção com as instruções para os seus agentes, incluindo a disciplina de alterações do projeto, padrões isolados e as regras mais importantes.
Coroid MCP Server
anti_slop_rules descreve sua política publicada, e anti_slop_scan analisa um ramo de um projeto sincronizado. Ambos são somente leitura.
Coroid Check em pull requests
Com as verificações do pull request ativadas, a mesma verificação é executada nos pull requests do GitHub abertos pelos seus desenvolvedores e marca cada descoberta na respectiva linha.

Testado primeiro em nosso próprio código.

Coroid foi construído por uma pessoa e cem agentes; portanto, o anti-slop foi executado no próprio repositório do Coroid antes de ser usado em qualquer outro lugar.

Uma análise de cada arquivo-fonte

Analisamos todos os arquivos-fonte 11.536 no repositório do Coroid, simulando que um agente os tivesse criado. A análise identificou 6 padrões que as regras classificaram incorretamente. Após corrigi-los, o número de ocorrências bloqueantes caiu de 5.366 para 2.253.

O que ainda bloqueia são exatamente os casos que as regras devem identificar, como uma nota deixada no código de notificação: "Numa implementação real, você buscaria o token FCM do usuário."

Regras avaliadas por um modelo

Duas regras interrogam o modelo linha por linha: uma verificação defensiva para algo que o código já descarta e um comentário que contradiz o código ao lado. Elas apenas dão recomendações. Dentre 600 linhas candidatas de alterações mescladas reais, elas identificaram nenhuma de forma incorreta, e o custo máximo é de US$ 0,0015 por varredura.

Ative-o no Controle de Qualidade.

Proprietários e administradores ativam o anti-slop como padrão da organização ou para um projeto. A próxima execução desse projeto inclui a verificação.

  1. Abra o Controle de Qualidade e selecione o padrão da organização ou um projeto.
  2. Ative o anti-slop. Ele adiciona cinco expectativas à política.
  3. Selecione a disciplina de alterações e os grupos que devem bloquear as mudanças. Desativar essa opção preserva essas configurações para uso futuro.

As cinco expectativas que ele adiciona

  • Os testes ainda comprovam a alteração
  • Nada inacabado ou apenas para teste é enviado à produção
  • Sem nova dívida estrutural
  • A alteração permanece dentro do escopo e se integra ao código existente
  • As novas dependências são reais e confiáveis.
Leia o guia do anti-slop
Controle de qualidade
Escolha quais critérios cada projeto deve atender. A alteração entra em vigor para novos trabalhos assim que você a definir.
Loja virtualConfiguração personalizada
É executado na fase de QA de tarefas, pull requests e validação de versões.
Verificações em cada alteração
Uma alteração que falhar em uma verificação retorna ao desenvolvedor antes que alguém a revise.
  • Anti-slopRetorna uma alteração quando ela enfraquece os testes, oculta erros, envia placeholders ou gera dívida técnica.
  • Testes unitáriosLocaliza e executa os testes unitários do repositório em cada alteração.
  • Testes de navegador2 de 3diferente do padrãoExecuta suas jornadas de navegador contra a alteração.
  • Traduçõesdiferente do padrãoVerifica se as strings alteradas foram traduzidas e se seus placeholders e formas plurais correspondem.
  • Verificações de repositórioExecuta seus próprios comandos, como formatação, tamanho de arquivos, migrações, testes de integração e varreduras de segurança.
QA
  • QA completoCompletoO QA coleta evidências e capturas de tela em tempo real conforme a Especificação. Quando desativado, o trabalho passa pelo QA Padrão.

Revise o trabalho que já foi aprovado.

Ative o anti-slop em um projeto e veja o que ele retorna antes de você agir.