Saltar al contenido

Plantilla para el equipo

Reglas para agentes de IA en equipo: plantilla de CLAUDE.md y AGENTS.md

Las reglas para agentes de IA que programan (Claude Code, Codex, Cursor, Copilot) solo se cumplen cuando las impone un ajuste, un hook, CI o un test, no una frase en CLAUDE.md. La plantilla de abajo tiene ocho prohibiciones con lo que detiene cada una, patrones de ajustes para copiar y una hoja que su equipo rellena en 45 minutos.

Descargarpdf

Lo que rellena y marca se queda solo en esta ventana del navegador. No guardamos ni enviamos nada. Al cerrar la página desaparece, así que imprima su resultado.

Para CTO, tech leads y desarrolladores cuyo equipo ya usa Claude Code, Codex, Cursor o Copilot. Cada uno a su manera. Esta plantilla lo convierte en una capa común.

Hoy la IA escribe todo nuestro código y un sénior responde del resultado. Desde 2023 hemos entregado más de 15 proyectos en producción. Este es el marco que usamos en ellos.

1. Por qué no bastan las reglas escritas

Le prohíbe al agente abrir un archivo. No lo abre. Escribe un script que lo imprime.

No es malicia. El agente recibió una tarea y busca un camino. Una frase en el prompt es para él un obstáculo, no un muro. Por eso cada regla de abajo tiene una columna que falta en la mayoría de las “políticas de IA”: qué la detiene de verdad.

NivelQué significaFuerza
Solo una fraseUna regla en CLAUDE.md o AGENTS.md. El agente la cumple la mayoría de las veces.la más débil
Ajuste o hookEl comando se detiene antes de ejecutarse.media
CIEl cambio no llega a la rama principal hasta que el control está en verde.fuerte
Lint o testEl build falla y el mensaje dice por qué. El agente lo lee y lo corrige él mismo.la más fuerte

Una regla que se ha incumplido dos veces deja de ser solo una frase. Súbala un nivel.

2. Ocho cosas que el agente no debe hacer

#El agente no debePor quéQué lo detiene
1Conectarse a la base de datos de producciónUna consulta errónea en producción no se puede deshacer. Para el diagnóstico basta una réplica de solo lectura o una exportación de logs.ajuste (deny) + credenciales separadas
2Leer secretos (.env, claves, tokens)Lo que el agente lee acaba en el contexto, en los logs y a veces en un commit.ajuste + secretos fuera del repositorio
3Usar credenciales de producción del cloudEl mismo motivo que la base de datos, con más alcance.ajuste (deny)
4Lanzar un deploy o una migraciónLo que no se puede deshacer pasa por una persona.ajuste (ask) + aprobación del entorno en CI
5Reescribir el historial o hacer push a mainUn force-push o un reset --hard destruyen en silencio el trabajo de otros.ajuste + hook + protección de rama en el servidor
6Escribir el test con el que se le evalúaUn agente que escribe su propio test también se pone su propia nota.control en CI + una regla para el revisor
7Revisar su propio cambioUn mismo modelo que escribe y revisa tiene los mismos puntos ciegos dos veces.aprobación obligatoria del PR por una persona
8Meter datos de clientes en un promptLos datos personales no van en una herramienta que no ha aprobado para ello.solo una frase + acuerdo de equipo

En el punto ocho escribimos con honestidad “solo una frase”. Hoy nada lo impone de forma mecánica. Una regla que admite su debilidad es mejor que una regla que finge ser fuerte.

¿Cuántas de sus reglas son solo una frase? Esos son los agujeros que tiene.

3. Dónde va cada regla

El agente carga su archivo de reglas en cada ejecución. Cuanto más texto, peor se ciñe a lo importante. Por eso, tres niveles:

  1. Raíz del repositorio: un CLAUDE.md o AGENTS.md corto. Qué es este repositorio, cómo ejecutar los tests, qué no debe hacer el agente, cómo es un trabajo terminado.
  2. Carpeta: las reglas de un módulo, en un archivo dentro de ella. Solo se cargan cuando el agente trabaja ahí.
  3. Lint o test: las reglas más importantes. Nadie tiene que leerlas; detienen un cambio malo por sí solas.

¿Usa varias herramientas? Tenga las reglas en AGENTS.md y enlácelas desde CLAUDE.md con la línea @AGENTS.md. Dos copias se separan antes de que nadie lo note.

Estructura de archivos

CLAUDE.md  o  AGENTS.md       corto: repo, comandos, enlaces
.claude/
  settings.json               las prohibiciones en formato máquina
  hooks/push-gate.sh          lo que los ajustes no pueden expresar
  rules/
    00-nunca.md               8 prohibiciones + columna "qué lo impone"
    10-tarea.md               qué necesita una tarea antes de que empiece el agente
    20-controles.md           lint, typecheck, tests: bloquea sí/no
    30-revision.md            quién revisa y qué recibe
    90-responsable.md         quién es responsable de las reglas y cómo se añade una nueva

4. Patrones para su repositorio

Los ejemplos son para Claude Code. El principio (deny, hook, CI, lint) sirve también para otras herramientas; solo cambia la sintaxis.

Prohibiciones en los ajustes (puntos 1 a 5)

{
  "permissions": {
    "deny": [
      "Bash(psql:*)",
      "Bash(git push --force:*)",
      "Bash(git reset --hard:*)",
      "Read(.env.prod*)",
      "Read(**/*.pem)"
    ],
    "ask": [
      "Read(**/.env*)",
      "Bash(npx prisma migrate deploy:*)"
    ]
  }
}

Atención: una regla compara el texto del comando, no la intención. Si el agente puede ejecutar cat, cat .env se salta la prohibición de lectura. Por eso los secretos viven fuera del repositorio. Los scripts los cargan y nunca los imprimen.

Hook contra el push a main (punto 5)

#!/bin/bash
# .claude/hooks/push-gate.sh  (PreToolUse, Bash)
# exit 0 = permitir, exit 2 = detener
CMD=$(jq -r '.tool_input.command // empty')
[[ "$CMD" != *"git push"* ]] && exit 0
case "$CMD" in
  *" main"*|*" master"*)
    echo "No se permite hacer push a main. Abra un PR." >&2
    exit 2 ;;
esac
exit 0

Dos errores desactivan un hook en silencio. || true después del hook convierte el exit 2 en 0. Y 2>/dev/null tira el mensaje, así que el agente no sabe por qué ha fallado. Pruebe el hook una vez de verdad. Active también la protección de rama en el servidor, porque un hook solo se ejecuta donde está instalado.

Tests y revisión (puntos 6 y 7)

  • Un test tiene que fallar primero. Con el código original. Si no, solo demuestra que el agente está de acuerdo consigo mismo.
  • Los tests de la tarea los aprueba una persona. CI avisa cuando un PR cambia tests y código a la vez. Decide el revisor.
  • Quien lo escribió no lo revisa. Lance la revisión en un contexto nuevo, idealmente con otro modelo. Recibe el diff y sus reglas, no la conversación con el autor.
  • CI tiene que bloquear. Un pipeline que solo informa es decoración.

5. De dónde salen las reglas nuevas

De la revisión. Un comentario que aparece por segunda vez no es un error del desarrollador. Es un agujero en las reglas.

Cuántas vecesQué hacer
La primera vezCorregirlo y seguir
La segunda vezEscribir una regla para el agente
La tercera vezEscribir un lint o un test que lo detecte por sí solo

Una condición: la revisión se escribe en el pull request, no solo de palabra en una llamada. Una revisión hablada no deja nada de donde sacar una regla.

6. Responsable y medición

Las reglas sin responsable se quedan obsoletas en pocos meses. El agente las sigue obedeciendo aunque ya no apliquen. Copie esto en 90-responsable.md:

Responsable: [nombre]
Regla nueva: PR a .claude/rules/, la aprueba el responsable.
Limpieza: primer lunes del mes, 30 minutos.
Escalera: incumplida dos veces -> un nivel más arriba
  frase -> ajuste o hook -> CI -> lint
Cada mes anotamos: cuántas reglas siguen siendo solo una frase.

Tres cifras que vale la pena seguir cada mes:

  • Comentarios de revisión por PR. Si las reglas funcionan, bajan.
  • Cuántas veces un control detuvo un cambio. Y cuántas veces el agente lo corrigió después por sí mismo.
  • Cuántas reglas siguen siendo solo una frase. Es la lista de tareas del mes siguiente.

No mida commits ni líneas de código. La IA las infla en un segundo.

7. Hoja de trabajo para el equipo (45 minutos)

Imprímala, póngala sobre la mesa y rellénenla juntos.

#El agente nunca¿Qué lo impone? (frase / ajuste / CI / lint)Responsable
1Base de datos de producción, solo una réplica o una exportación
2Secretos fuera del contexto del agente
3Credenciales de producción del cloud
4Deploys y migraciones solo a través de una persona
5Force-push y push a main
6El test con el que se le evalúa
7Revisar su propio cambio
8Datos de clientes en un prompt
9
10

Está terminada cuando, en cada fila, sabe decir qué la impone y quién es el responsable.

Preguntas frecuentes

¿Qué va en CLAUDE.md o AGENTS.md?
En breve: qué es este repositorio, cómo ejecutar los tests, qué no debe hacer el agente y cómo es un trabajo terminado. Las reglas de un módulo van en un archivo dentro de su carpeta, y las más importantes, en una regla de lint o en un test.
¿Por qué el agente no cumple una regla del prompt?
El agente tiene una tarea y busca un camino. Una frase en el prompt es para él un obstáculo, no un muro: si le prohíbe abrir un archivo, escribe un script que lo imprime. Por eso cada regla de la plantilla tiene una columna con lo que de verdad la detiene.
¿CLAUDE.md o AGENTS.md?
Si su equipo usa varias herramientas, tenga las reglas en AGENTS.md y enlácelas desde CLAUDE.md con la línea @AGENTS.md. Dos copias se separan antes de que nadie lo note.
¿De dónde salen las reglas nuevas?
De la revisión. Un comentario que aparece por segunda vez se convierte en una regla para el agente. La tercera vez, escriba una regla de lint o un test que lo detecte por sí solo.

¿Quiere definir las reglas con alguien que trabaja con ellas cada día?

Díganos qué herramientas usa su equipo y qué hacen mal los agentes. Le respondemos en dos días hábiles con algunas preguntas sobre su trabajo. Después acordamos qué hacemos primero.