agentleFS
angelgabrieljacintohuayllascoangelgabrieljacintohuayllasco/clipboard-skills/skills/quality-gate/SKILL.md

quality-gate

Skill0 starsChanged 42 days agoMITView on GitHub

Before saying done, delivering, merging or deploying: run lint, types, tests, coverage, security checks and report real output. \"está listo?\", \"verify this\", \"is this production ready\".

Files
SKILL.md

Quality-Gate — "listo" es un código de salida, no una sensación

Overview

El momento más peligroso de una sesión con IA es cuando dice "listo, ya funciona". Esta skill convierte esa frase en algo verificable: un comando corre, produce números, y esos números se comparan contra la constitución del proyecto.

Si la salida no está pegada en el reporte, no se corrió. Decir "los tests pasan" sin mostrar la salida es la mentira más común del desarrollo asistido por IA — y casi siempre es involuntaria: el modelo infiere el resultado en lugar de observarlo.

Cuándo usar

  • Antes de decir "terminado" o entregar a alguien.
  • Antes de merge, tag, release o deploy.
  • Al recibir código de otro agente o de otra sesión.
  • Periódicamente en un proyecto vivo (el trinquete se verifica, no se supone).

Cuándo NO usar

SituaciónRuta
No existen umbrales todavíaconstitution
No hay tests que corrertest-strategy
El gate falla y hay que arreglarlofixer (bug) / refactor (estructura)
Deuda acumulada demasiado grande para un gatetech-debt

Regla de hierro: sin salida pegada, no pasó

CADA AFIRMACION DE CALIDAD VIENE CON: COMANDO EJECUTADO + SALIDA REAL + NUMERO vs UMBRAL.

Prohibido: "todo verde", "los tests pasan", "no hay errores de tipos", "cobertura ~80%", si no se ejecutó en esta sesión y no se está mostrando la evidencia. Si un comando no existe o no se puede ejecutar, se reporta como NO VERIFICADO, no como aprobado.

Proceso

1. Localiza el gate

Busca en este orden: docs/project/constitution.md → AGENTS.md → scripts del manifiesto (package.json, Makefile, justfile, pyproject.toml) → configuración de CI. Si no hay gate: no continúes verificando a ciegas; ejecuta constitution primero y dilo.

2. Ejecuta, en orden barato → caro

OrdenCapaPor qué antes
1Formato + lint + tiposSegundos. Atrapa la mitad de los errores triviales.
2Tests unitarios + cobertura de código nuevoMinutos. El corazón del gate.
3Complejidad, tamaño, parámetros, duplicaciónRápido. Es lo que evita el monolito dentro de 6 meses.
4Ciclos de dependencias + dependencias sin usarRápido. Estructura sana = cambios baratos.
5Auditoría de vulnerabilidades + escaneo de secretos + existencia de paquetes (anti-slopsquatting) + lockfile íntegroRápido. Nunca opcional.
6E2E de caminos críticosLento. Solo los flujos del spec.
7Mutación (núcleo o archivos cambiados)Muy lento. Incremental aquí, completo de noche.

Ejecuta todo aunque algo falle temprano. Un reporte con un solo fallo obliga a repetir el ciclo entero; uno con la lista completa se arregla de una pasada.

3. Compara contra umbrales y decide

ResultadoAcción
Todo dentro de umbralPASA — se puede entregar/desplegar
Falla algo de la capa 1-5BLOQUEA — no se entrega. Reportar y arreglar.
Cobertura o mutación baja respecto a la medición anteriorBLOQUEA (trinquete roto)
Herramienta ausenteNO VERIFICADO — decirlo explícitamente, nunca contarlo como verde
Falla un E2E críticoBLOQUEA, sin importar lo demás

4. Revisión humana de capa 2

Si el diff toca zonas sensibles declaradas en la constitución (auth, dinero, datos personales, migraciones, criptografía, envíos masivos), el gate verde no alcanza: marca el diff como pendiente de lectura humana y di exactamente qué archivos y por qué. Las métricas no detectan un if (user.role) invertido ni un endpoint sin verificación de propiedad.

5. Reporte

GATE: <PASA | BLOQUEA> — <proyecto> @ <commit/rama>

| Chequeo        | Comando                  | Resultado | Umbral | Estado |
|----------------|--------------------------|-----------|--------|--------|
| Tipos          | tsc --noEmit             | 0 errores | 0      | OK     |
| Tests          | vitest run               | 84/84     | todos  | OK     |
| Cobertura nueva| vitest --coverage        | 71%       | ≥80%   | FALLA  |
| Complejidad    | eslint                   | máx 14    | ≤10    | FALLA  |
| Secretos       | gitleaks detect          | 0         | 0      | OK     |
| Paquetes       | lockfile + existencia    | 0 fantasma| 0      | OK     |
| Mutación       | —                        | —         | ≥60%   | NO VERIFICADO |

BLOQUEA por: cobertura de código nuevo, complejidad en src/orders/calc.ts:88
Revisión humana pendiente: src/auth/session.ts (zona sensible)
Siguiente paso: tests para calc.ts + extraer la rama de descuentos.

Trampas del propio gate

TrampaCómo se veQué hacer
Tests que no afirman nadaCobertura alta, mutación bajaSubir mutación en el núcleo; borrar tests sin aserciones
Cobertura global en vez de código nuevo78% estable eternamenteMedir sobre el diff (clean as you code)
Tests que se saltan solosskip, only, xit olvidadosFallar el gate si existen marcas de salto sin ticket
Mocks de todoVerde en CI, roto en producciónAl menos un test de integración real por camino crítico
Umbral bajado para pasarCommit que toca el config del gateCambiar un umbral requiere entrada en el historial de la constitución
Gate lento que nadie corre"lo corro después"Partir: rápido en pre-push, completo en CI, mutación nocturna

Anti-racionalización

ExcusaRealidad
"Funciona, lo probé a mano"Probaste una vez, un camino, hoy. El gate prueba todos los caminos cada vez, para siempre.
"Los tests fallan pero es del entorno"Entonces el gate está roto y esa es la falla número uno a arreglar. Un gate en el que no se confía no sirve para nada.
"Es poquito código, no hace falta"El tamaño del diff no predice el tamaño del incidente.
"El cliente tiene prisa"Entregar roto cuesta más tiempo del que ahorra saltarse el gate. Si de verdad hay que entregar con fallas, se entrega declarando cuáles.
"Subo cobertura escribiendo tests triviales"Sube el número, no la seguridad. La mutación lo delata en la siguiente corrida.
"El lint me molesta, lo desactivo"Desactivar la regla no elimina el problema: lo esconde y lo hace crecer.

Formato de salida

Tabla de chequeos (comando, resultado real, umbral, estado), veredicto PASA/BLOQUEA, lista de fallas con archivo:línea, chequeos NO VERIFICADOS, diffs pendientes de revisión humana, y el siguiente paso concreto.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.