Lo que rellena y marca se queda solo en esta ventana del navegador. No enviamos nada salvo que pida la evaluación por correo. Al cerrar la página desaparece, así que imprima su resultado.
Para CTO y tech leads cuyo equipo ya escribe código con Claude Code, Codex o Cursor. Una regla en AGENTS.md el agente se la puede saltar. Una puerta en la CI, no. Los ejemplos son para GitHub Actions y pnpm. En GitLab CI cada puerta es el mismo comando dentro de script:.
Hoy la IA escribe todo nuestro código y un senior responde del resultado. La mayoría de los ejemplos sale de nuestro repositorio público claude-code-production-starter, donde los encontrará completos.
1. ¿Qué puertas tiene ya?
Marque solo lo que de verdad bloquea la fusión. Una puerta que solo avisa no cuenta.
2. Diez puertas con ejemplos
El lint bloquea la fusión
Un lint que solo avisa, el agente lo ignora. Ejecútelo en la CI y deje que falle. Cuando introduzca una regla estricta nueva en código antiguo, registre las infracciones de hoy y haga que la CI falle si aumentan.
- run: pnpm lint --max-warnings 0Comprobación de tipos en modo strict
Al agente le gusta cambiar un tipo a any para que el código pase. El modo strict y un paso propio en la CI lo impiden.
# tsconfig.json: "strict": true
- run: pnpm exec tsc --noEmitLos tests son obligatorios y demuestran algo
Un test que también pasa en la rama principal no demuestra nada. El código fuente cambiado necesita un test cambiado, y ese test debe fallar en la rama principal y pasar en la suya. Una excepción (un refactor puro) la aprueba una persona con una etiqueta, no el agente.
- name: Los tests cambiados fallan en base y pasan aquí
if: "!contains(github.event.pull_request.labels.*.name, 'skip-red-proof')"
run: bash scripts/gate.sh red-proof "origin/${{ github.base_ref }}"Patrones prohibidos
Algunos atajos de los agentes se encuentran con una búsqueda simple: .only en un test, la comprobación de tipos desactivada, el lint desactivado. Haga que fallen en la CI.
- name: Patrones prohibidos
run: "! git grep -nE '(it|test|describe)\\.only\\(|@ts-ignore|eslint-disable' -- src tests"Escaneo de secretos
Una clave en un commit sigue siendo un problema aunque la borre, porque queda en el historial. Escanee antes del commit (hook) y en la CI.
- uses: actions/checkout@v5
with:
fetch-depth: 0
- run: docker run --rm -v "$PWD:/repo" ghcr.io/gitleaks/gitleaks:latest git /repo --redactGuardián de migraciones
Una migración de base de datos no se deshace tan fácil como el código. Un PR que cambia migraciones solo pasa con una etiqueta puesta por una persona. Ejecutar una migración en producción requiere confirmación en la configuración del agente.
- name: Migraciones solo con etiqueta
if: "!contains(github.event.pull_request.labels.*.name, 'migration-ok')"
run: "! git diff --name-only origin/${{ github.base_ref }}... | grep -E '(^|/)migrations/'"Control de dependencias
El agente añade un paquete cuando la tarea lo necesita. Compruebe que no tiene ninguna vulnerabilidad grave conocida y mantenga las dependencias actualizadas con regularidad.
- run: pnpm audit --audit-level high
# .github/dependabot.yml: package-ecosystem npm, schedule weeklyPlantilla de PR con sección sobre IA
El PR debe decir cómo se verificó el cambio y qué no hizo el autor. Así el revisor sabe dónde mirar.
## Cómo se verificó
- [ ] el gate está en verde, incluido red-proof
- [ ] ningún test se debilitó, se saltó ni se borró
## Qué escribió el agente y qué revisó el autor
<!-- Qué partes generó el agente, qué revisó usted línea por línea. -->
## Qué no está hechoRegla de review
Un cambio lo aprueba alguien que no lo escribió. Las reglas para agentes y la CI solo las cambian sus dueños; si no, con el tiempo el agente afloja sus propias puertas.
# .github/CODEOWNERS
* @su-empresa/equipo
/.claude/ @su-empresa/dueno-reglas
/.github/ @su-empresa/dueno-reglas
/AGENTS.md @su-empresa/dueno-reglasRama protegida
Todo lo anterior solo vale si la rama principal no se puede saltar. Una comprobación resumen ci, PR obligatorio, aprobación del dueño del código y reglas también para los administradores.
gh api -X PUT repos/SU-EMPRESA/REPO/branches/main/protection \
-F 'required_status_checks[strict]=true' -f 'required_status_checks[contexts][]=ci' \
-F 'required_pull_request_reviews[required_approving_review_count]=1' \
-F 'required_pull_request_reviews[require_code_owner_reviews]=true' \
-F enforce_admins=true -F restrictions=nullMás herramientas para usted
12 preguntas sobre reglas para agentes de IA, controles de CI y responsabilidad. Vea dónde está hoy su equipo.
Reglas en AGENTS.md, puertas de CI y hooks, review y medición. Cuatro semanas con ejemplos de nuestro repositorio público.