Detecta los atajos que los agentes toman antes de que el trabajo llegue a ti.
Una prueba omitida para obtener aprobación, un error ocultado, un esqueleto dejado atrás, una comprobación de tipo silenciada. Anti-slop verifica cada cambio que hace un agente y lo envía de vuelta al agente desarrollador con cada hallazgo.
- Prueba omitidasrc/checkout/coupon.test.ts:88
it.skip('rejects an expired coupon', …) - Error ignoradosrc/checkout/apply-coupon.ts:41
} catch {}
- SolucionadoPrueba omitidaAnti-slop
- SolucionadoError ignoradoAnti-slop
La vista de tarea es una recreación del portal de Coroid. La tarea, los archivos y los hallazgos en ella son ilustrativos.
- Reglas
- 106
- Familias
- 13
- Reglas que bloquean por defecto
- 44
- Hallazgos existentes que bloquean un cambio
- 0
Qué busca
Las reglas se agrupan en familias. Cada regla bloquea, aconseja o solo registra, y un propietario puede modificar eso para la organización o para un proyecto.
- Pruebas
- Pruebas enfocadas u omitidas, pruebas eliminadas, aserciones quitadas o debilitadas, pruebas que no pueden fallar y reintentos que ocultan una prueba inestable.
.only.skipexpect(true).toBe(true)
- Supresiones
- Nuevas desactivaciones de linter, errores de tipo ignorados, conversiones a 'any' y código excluido de la cobertura.
@ts-ignoreas anyeslint-disable
- Compilación e CI
- Pasos de prueba eliminados o permitidos para fallar, umbrales de cobertura reducidos, ejecuciones de prueba que aprueban sin pruebas, ganchos de confirmación omitidos y salida de compilación comprometida.
continue-on-error: true--passWithNoTests
- Evidencia de prueba
- Una ejecución de prueba que no corrió nada, menos pruebas que la última ejecución exitosa, una ejecución parcial reportada como completa y resultados en caché presentados como una nueva ejecución.
Tests: 0 total--onlyChanged
- Código de producción
- Implementaciones de marcador de posición, código de depuración, notas como 'en una implementación real', instrucciones para personas, datos ficticios y código de producción que importa código de prueba.
throw new Error('Not implemented')debugger;
- Manejo de errores
- Errores ocultados o disfrazados tras un valor predeterminado, comprobaciones de permisos que permiten acceso aunque fallen y reintentos sin límite.
except: pass.catch(() => {})
- Seguridad
- Secrets codificados de forma permanente, verificación TLS desactivada, mecanismos de autenticación eliminados, políticas CORS con comodines y credenciales, y consultas SQL generadas a partir de cadenas de texto.
rejectUnauthorized: falseverify=False
- Arquitectura
- Nuevos ciclos de importación, importaciones entre límites declarados, bloques duplicados, código que el cambio dejó sin usar y nuevas copias de patrones retirados.
- Dependencias
- Un cambio en el manifiesto sin su archivo de bloqueo, una segunda biblioteca para una tarea que ya realiza otra, versiones sin fijar y actualizaciones que la especificación no solicitó.
"latest"
- Almacenamiento en caché
- Claves de caché sin el inquilino, cachés en memoria que nunca expiran y valores de tiempo de compilación que deberían leerse al ejecutar el código.
- Comentarios
- Comentarios que repiten la línea siguiente, describen la edición, matizan o contradicen el código que está al lado.
// Updated to// should work
- Ámbito del cambio
- Archivos fuera de lo que toca la especificación, cambios solo de formato y renombrados que la tarea no necesitaba.
- Seguimiento del agente
- Lo que hizo el agente en el proceso, como eliminar la prueba que estaba fallando o cambiar un valor esperado por lo que imprimió la ejecución fallida.
Solo lo que introduce el cambio se bloquea
La mayoría de los repositorios ya contienen algunos de estos patrones. Anti-slop clasifica cada hallazgo según su origen, para que la deuda existente nunca bloquee trabajo no relacionado.
- Introducido
- Nuevo en este cambio. Un hallazgo de una regla bloqueante envía el cambio de vuelta al agente desarrollador.
- Toque
- Ya existía, en una línea o función que el cambio modifica. Se registra y se corrige cuando tu disciplina de cambios lo solicita.
- Existente
- En otra parte del repositorio. Se registra como deuda en Factory, donde puedes crear una tarea para corregir los hallazgos de una regla.
Mover código no cuenta como introducirlo. Copiarlo sí.
Usted decide hasta dónde puede extenderse un cambio
La disciplina de cambios indica al agente desarrollador qué puede limpiar mientras trabaja.
- QuirúrgicoSolo lo que necesita la especificación. Otros problemas se reportan, pero no se corrigen.
- EquilibradoPredeterminadoTambién corrige pequeños problemas en las líneas que el cambio toca de todos modos.
- RestauradorTambién limpia los hallazgos dentro de las funciones que el cambio modifica.
El agente desarrollador trabaja bajo las mismas reglas
Anti-slop no es solo un veredicto al final. El agente recibe las reglas mientras escribe el cambio y no puede ignorarlas.
- El agente comienza con tu disciplina de cambios y los patrones que has puesto en cuarentena, cada uno con el reemplazo a usar en su lugar.
- Detecta las reglas rápidas tras cada edición y tiene una oportunidad para corregir los hallazgos bloqueantes antes de que se ejecute el control de calidad.
- Los agentes no pueden aceptar sus propios hallazgos. Cuando un agente indica que una prueba es incorrecta y la modifica, un revisor debe aprobar ese cambio.
- Un archivo del repositorio,
.coroid/anti-slop.yml, puede agregar reglas y excluir rutas generadas. Se lee desde la base del cambio, por lo que un cambio no puede debilitar sus propias reglas.
Haga que los agentes que ya ejecuta cumplan con las mismas reglas
Los ingenieros que trabajan con sus propios agentes de programación también pueden utilizar las reglas de su organización.
- AGENTS.md snippet
- Descargue una sección con las instrucciones para sus agentes, incluyendo la disciplina de cambios del proyecto, los patrones aislados y las reglas más importantes.
- Coroid MCP server
anti_slop_rulesdescribe su política publicada yanti_slop_scananaliza una rama de un proyecto sincronizado. Ambos son de solo lectura.- Coroid Check en solicitudes de extracción
- Con los controles de pull request activados, el mismo control se ejecuta en las solicitudes de extracción de GitHub que abren sus desarrolladores y marca cada hallazgo en su línea correspondiente.
Se probó primero en nuestro propio código
Coroid fue creado por una persona y cien agentes, por lo que anti-slop se ejecutó en el propio repositorio de Coroid antes de hacerlo en el de cualquier otra persona.
Un análisis de cada archivo fuente
Escaneamos todos los archivos fuente 11.536 en el repositorio de Coroid como si un agente los hubiera escrito recientemente. El escaneo detectó 6 patrones que las reglas identificaron erróneamente. Los corregimos y la cantidad de hallazgos bloqueantes pasó de 5366 a 2253.
Lo que sigue bloqueando son los elementos que las reglas deben detectar, como una nota dejada en nuestro código de notificaciones: «En una implementación real, se obtendría el token FCM del usuario».
Reglas que evalúa un modelo
Dos reglas solicitan al modelo que analice una línea a la vez: una comprobación defensiva para detectar elementos que el código ya excluye y un comentario que contradice al código circundante. Solo brindan recomendaciones. De 600 las líneas candidatas procedentes de cambios fusionados reales, identificaron ninguna de forma incorrecta, y su coste máximo es 0,0015 US$ por escaneo.
Actívelo en Control de Calidad
Los propietarios y administradores activan anti-slop como opción predeterminada de la organización o para un proyecto concreto. La siguiente ejecución de ese proyecto lo incluirá.
- Abra Control de Calidad y seleccione el valor predeterminado de la organización o un proyecto.
- Activa anti-slop. Añade cinco expectativas a la política.
- Seleccione la disciplina de cambios y los grupos que deben bloquear. Al desactivarlo, se conservarán estos ajustes para la próxima vez.
Las cinco expectativas que establece
- Las pruebas siguen validando el cambio
- Nada sin terminar ni solo para pruebas llega a producción
- Sin nueva deuda estructural
- El cambio se mantiene dentro del alcance y se integra con este código base
- Las nuevas dependencias son reales y reputables
- Configuración predeterminada de la organización3 proyectos lo siguen2 de 5
- Tienda onlineConfiguración personalizada4 de 5
- Sitio de documentaciónSigue la configuración predeterminada2 de 5
- Facturación APISigue la configuración predeterminada2 de 5
- Aplicación móvilSigue la configuración predeterminada2 de 5
- Anti-slopDevuelve un cambio al equipo cuando debilita las pruebas, oculta errores, incluye marcadores de posición o genera deuda técnica.
- Pruebas unitariasLocaliza y ejecuta las pruebas unitarias del repositorio en cada modificación.
- Pruebas en navegador2 de 3difiere de la configuración predeterminadaEjecuta sus flujos de navegador contra la modificación realizada.
- Traduccionesdifiere de la configuración predeterminadaVerifica que las cadenas de texto modificadas estén traducidas y que sus marcadores de posición y formas plurales coincidan correctamente.
- Comprobaciones del repositorioEjecuta sus propios comandos, como formatado, comprobación de tamaño de archivos, migraciones, pruebas de integración y análisis de seguridad.
- Control de calidad exhaustivoThoroughEl control de calidad recopila pruebas y capturas de pantalla en tiempo real conforme a la Especificación. Si está desactivado, el proceso pasa a QA estándar.