Cada asistente lee su propio archivo de instrucciones
Claude Code · Intermedio
Dos asistentes, un repoque Claude y otro agente trabajen el mismo proyecto sin pisarse
Tarde o temprano pruebas otro agente en un proyecto que ya lleva meses con Claude Code. Y el primer día va bien. El segundo, el nuevo agente 'ordena' tu STATE.md porque le pareció desprolijo, o Claude ignora una regla que escribiste en AGENTS.md porque ese archivo no existe para él. El código no se rompió; se rompió la continuidad, que es lo que hace útil trabajar con agentes. Este protocolo nació de eso: dos asistentes, un repo, y una regla sencilla sobre quién es dueño de cada archivo.
De un vistazo
Un archivo, un dueño: así dejan de pisarse
El protocolo de git que evita el conflicto
01 el punto de partida
Por qué se pisan
Cada agente de código llega con su propio sistema de memoria y ninguno sabe del otro. Claude Code carga CLAUDE.md (el de tu usuario, el del proyecto y los de las carpetas por arriba de donde lo lanzaste). Codex construye su cadena de instrucciones con AGENTS.md (el global en su carpeta de configuración y luego cada nivel desde la raíz del repo hasta tu directorio). Son mecanismos paralelos: si escribes una regla en uno, el otro nunca la ve.
A eso súmale la memoria de sesión. Si usas el sistema de STATE.md para retomar proyectos, ese archivo es la única fuente de 'qué hice ayer y por dónde sigo'. Un segundo agente que lo lee está bien. Uno que lo escribe con su propio formato lo deja inservible para el comando de inicio del otro, que espera una estructura fija.
Escribes 'nunca usar any' en AGENTS.md. Claude sigue usándolo, porque para Claude ese archivo no existe. Y al revés con CLAUDE.md.
El segundo agente cierra sesión en STATE.md con otro formato. Al día siguiente /iniciar-sesion no encuentra 'Próximo paso para retomar' y arranca a ciegas.
Dos sesiones abiertas en dos terminales sobre la misma rama. Una hace push; la otra, al cerrar, ve que está atrás y fuerza. Se pierde media tarde de trabajo.
Los tres choques tienen la misma raíz: no había un acuerdo escrito de quién es dueño de qué archivo. El protocolo es ese acuerdo, en un markdown que ambos agentes leen.
02 dos archivos, no uno
CLAUDE.md y AGENTS.md: cada quien el suyo
La primera decisión es aceptar que vas a mantener dos archivos de instrucciones. Intentar unificarlos a la fuerza funciona a medias: la doc de Claude Code ofrece importar AGENTS.md desde CLAUDE.md con @AGENTS.md, y sirve cuando las reglas son idénticas para ambos. En la práctica no lo son: Claude tiene slash-commands propios, Codex tiene los suyos, y cada uno cierra en una bitácora distinta. Lo que sí conviene compartir son las reglas de código, y para eso el import es perfecto.
| Claude Code | Codex CLI | |
|---|---|---|
| Instrucciones globales | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md |
| Instrucciones del proyecto | ./CLAUDE.md o ./.claude/CLAUDE.md | ./AGENTS.md (y AGENTS.override.md si existe) |
| Cómo se combinan | Se concatenan de la raíz hacia tu directorio; el más cercano se lee al final | Se concatenan de la raíz hacia tu directorio; el más cercano manda |
| Límite | Meta de menos de 200 líneas por archivo; un archivo mayor a 4 MiB se salta | 32 KiB combinados por defecto (project_doc_max_bytes) |
| Lee el del otro | No (salvo que lo importes) | No (salvo que lo agregues a project_doc_fallback_filenames) |
Este es el arreglo que uso en un proyecto donde trabajan los dos: las reglas de código viven en AGENTS.md porque es el formato que más herramientas leen, y CLAUDE.md lo importa y agrega debajo lo que solo aplica a Claude.
git clone https://github.com/davidiriza-lab/dos-asistentes-un-repo.git
@AGENTS.md ## Solo para Claude Code - Tu bitácora es STATE.md. La de Codex es CODEX_STATE.md: léela como contexto, nunca la escribas. - Los comandos /iniciar-sesion y /cerrar-sesion viven en ~/.claude/commands y son tuyos. - Protocolo de convivencia: lee ../ASSISTANT_COLLABORATION.md antes de tocar archivos de memoria.
# Reglas del proyecto ## Código (aplican a cualquier agente) - TypeScript estricto. Prohibido `any`; usa tipos explícitos o `unknown`. - Next.js: la lógica de backend va en API routes (`app/api/...`), nunca en server actions. - Escrituras a la base de datos solo desde el servidor con la clave de servicio. - Commits pequeños, en imperativo, un tema por commit. ## Solo para Codex - Tu bitácora es CODEX_STATE.md. La de Claude es STATE.md: léela como contexto, nunca la escribas. - No modifiques CLAUDE.md ni nada dentro de .claude/. - Protocolo de convivencia: ../ASSISTANT_COLLABORATION.md
Fíjate en que ambos archivos apuntan al mismo protocolo externo. Las reglas de convivencia no se duplican: se escriben una vez en un archivo neutral y cada asistente recibe solo la instrucción de leerlo.
03 no lo supongas, míralo
Comprobar qué instrucciones cargó cada asistente
La mitad de los 'no me hizo caso' son archivos que nunca entraron al contexto. Los dos asistentes traen una forma de ver exactamente qué leyeron, y conviene correrla la primera vez que montas el arreglo de dos archivos, y cada vez que muevas un AGENTS.md de carpeta.
/context
codex debug prompt-input "hola" | grep -n "AGENTS"
Lo probé con un repo de juguete: un AGENTS.md en la raíz, otro en una subcarpeta y un CLAUDE.md al lado con una frase marcada. Lanzando Codex desde la subcarpeta, el prompt trae primero la raíz y luego la subcarpeta, y el CLAUDE.md no aparece por ningún lado. Con la versión 0.150 del CLI, el comportamiento fue exactamente el que documenta OpenAI:
| Prueba | Qué recibió el modelo |
|---|---|
| AGENTS.md en raíz y en subcarpeta; Codex lanzado en la subcarpeta | Raíz primero, subcarpeta después. La más cercana manda porque se lee al final |
| CLAUDE.md al lado del AGENTS.md | Ignorado. Codex no lo busca |
| project_doc_fallback_filenames = ["CLAUDE.md"] en una carpeta que tiene AGENTS.md | Sigue ignorado: el fallback solo entra donde no hay AGENTS.md |
| Mismo fallback, en una subcarpeta que solo tiene CLAUDE.md | Ahora sí lo lee, concatenado después de la raíz |
| AGENTS.override.md junto a AGENTS.md | Solo el override. El AGENTS.md de esa carpeta desaparece del prompt |
Tentación: configurar el fallback para que Codex lea CLAUDE.md y 'ya'. No lo hagas. Solo aplica en carpetas sin AGENTS.md, así que te quedas con un comportamiento distinto por carpeta y nadie sabe qué leyó. El import @AGENTS.md desde CLAUDE.md es determinista; el fallback, no.
AGENTS.override.md merece su propia advertencia. Es útil para pruebas locales (lo dejas fuera del repo con .gitignore y sobreescribes reglas sin tocar el archivo compartido), pero si se te olvida, Codex deja de leer el AGENTS.md del proyecto sin avisar. Si un día Codex 'olvidó' las reglas, busca ese archivo antes que nada.
04 la tercera forma de convivir
Codex dentro de Claude Code: mismo repo, una sola terminal
Hasta aquí el escenario era dos terminales, dos sesiones. Hay una tercera: Codex corriendo como subagente dentro de tu sesión de Claude Code, con el plugin oficial de OpenAI. Claude piensa y coordina; Codex ejecuta o revisa, y su consumo se descuenta de tu cuenta de ChatGPT, no de la de Claude. Es una forma barata de repartir carga cuando el trabajo pesado no necesita al modelo más caro.
Instalar el plugin (dentro de Claude Code)
- /plugin marketplace add openai/codex-plugin-cc
- /plugin install codex@openai-codex
- /reload-plugins
- /codex:setup. Te dice si el CLI de Codex está instalado y con sesión iniciada; si falta, ofrece instalarlo con npm.
| Comando | Qué hace | Escribe archivos |
|---|---|---|
| /codex:review [--base main] | Revisión de tus cambios sin commitear, o de la rama contra main | No |
| /codex:adversarial-review <foco> | Revisión que cuestiona la decisión de diseño; acepta texto de enfoque | No |
| /codex:rescue <tarea> | Delega una investigación o un fix a Codex; --model y --effort opcionales | Sí |
| /codex:transfer | Convierte la sesión actual de Claude en un hilo de Codex y te da el codex resume <id> | No |
| /codex:status, /codex:result, /codex:cancel | Seguimiento de tareas en segundo plano | No |
Lo importante para esta guía: por debajo sigue siendo el CLI de Codex, así que el subagente lee AGENTS.md (no CLAUDE.md) y Claude sigue leyendo solo CLAUDE.md. La tabla de propiedad no cambia. Lo que sí cambia es que ahora es Claude quien le pasa el encargo a Codex, y ese encargo hereda las reglas de convivencia que Claude tiene en contexto solo si se las repite. Yo agrego una línea al CLAUDE.md del proyecto: 'Si delegas a Codex, incluye en la tarea: escribe solo en CODEX_STATE.md y nunca en STATE.md'.
Las dos revisiones son de solo lectura. Es el uso con menos riesgo: Claude construye, Codex critica, tú decides. Cero choques de memoria porque nadie más escribe.
Con --background, Codex trabaja mientras Claude sigue contigo. Ahí sí hay dos agentes editando el mismo árbol a la vez: úsalo para tareas acotadas a archivos que Claude no está tocando.
Si la sesión con Claude se atoró, /codex:transfer la convierte en un hilo de Codex y sigues ahí con codex resume. La bitácora de esa continuación va a CODEX_STATE.md, porque quien cierra es Codex.
codex exec -s workspace-write -o /tmp/ultimo.md "Lee CODEX_STATE.md y agrega la sesión de hoy"
No instalé el plugin en mi Claude Code para esta guía; cloné el repo openai/codex-plugin-cc y leí sus comandos y su README. Las banderas de arriba salen de ahí. Los nombres de modelo que acepta --model cambian seguido: no los pongo por escrito.
05 la regla que lo sostiene
Un archivo, un dueño
Toda la convivencia se reduce a una tabla de propiedad. Cada archivo de memoria, instrucciones o comandos tiene exactamente un dueño que puede escribirlo. El otro asistente puede leerlo cuando quiera, y no lo toca salvo que tú se lo pidas explícitamente en ese mensaje. Los archivos de trabajo (código, docs, config) son compartidos: cualquiera los edita cuando se lo pides.
| Archivo | Dueño | El otro |
|---|---|---|
| ~/.claude/** (config, comandos, memoria) | Claude | Ni lo lee |
| ~/.codex/** (config, comandos, memoria) | Codex | Ni lo lee |
| CLAUDE.md, STATE.md, SESIONES.md | Claude | Lee, no escribe |
| AGENTS.md, CODEX_STATE.md, CODEX_SESIONES.md | Codex | Lee, no escribe |
| Código, docs, config del proyecto | Compartido | Edita cuando se lo pides |
| ASSISTANT_COLLABORATION.md | Tú | Ambos leen, ninguno escribe |
La consecuencia práctica está en los comandos de sesión. Mi /iniciar-sesion de Claude lee STATE.md como memoria principal y, si existen CODEX_STATE.md o CODEX_SESIONES.md, los hojea como contexto secundario y agrega una línea al resumen: 'Última sesión de Codex: fecha y título'. Mi /cerrar-sesion escribe solo en STATE.md. El comando equivalente de Codex hace el espejo. Ninguno de los dos necesita saber cómo está escrito el comando del otro; solo el comportamiento es compartido.
### Paso 2 — Cargar contexto 1. Lee STATE.md (memoria principal de Claude). Extrae la sección "Última sesión". 2. Hojea la bitácora del otro asistente como contexto secundario: si existen CODEX_STATE.md o CODEX_SESIONES.md, léelos para saber si trabajó algo en paralelo. NUNCA los escribas ni modifiques (ver ASSISTANT_COLLABORATION.md). [...] 6. En el resumen, agrega esta línea solo si el archivo existe: **Última sesión de Codex:** [fecha + título de la última sesión en CODEX_STATE.md]
> Regla de coordinación (ASSISTANT_COLLABORATION.md): Claude solo escribe en su > propia bitácora (STATE.md / SESIONES.md / CLAUDE.md). NUNCA tocar CODEX_STATE.md, > CODEX_SESIONES.md ni AGENTS.md salvo instrucción explícita del usuario en este mensaje.
'Salvo instrucción explícita' significa en ese mensaje, con el nombre del archivo. 'Ordena las bitácoras' no cuenta. 'Copia la sección de decisiones de CODEX_STATE.md a STATE.md' sí.
06 donde de verdad se pierde trabajo
El protocolo git
Las bitácoras separadas evitan el choque de memoria. El choque de git es otro: dos sesiones, dos terminales, una rama. Cada agente commitea y sube por su cuenta al cerrar, y el que llega segundo encuentra que el remoto avanzó. Lo que hace en ese momento decide si pierdes trabajo o no. Cuatro reglas, en orden de importancia:
- Nunca --force. Ni --force-with-lease. Si el push no entra, se reporta y se resuelve en la siguiente sesión con un humano mirando. Un agente que fuerza un push borra los commits del otro sin que nadie lo note hasta días después.
- Fetch al abrir. Antes de cargar contexto, git fetch y leer git status -sb. Si estás atrás y tu copia está limpia, pull --ff-only y resumir qué llegó. Si estás atrás pero tienes cambios propios, no hacer pull automático: avisar y que tú decidas.
- Rebase al cerrar. Después del commit de cierre, fetch otra vez. Si el remoto avanzó, git pull --rebase. Sin conflictos: push y una línea diciendo qué llegó de fuera. Con conflictos: git rebase --abort, reportar los archivos y dejarlo para la siguiente sesión. El cierre continúa igual; el estado ya está en el archivo.
- Commits pequeños. Un tema por commit, mensaje en imperativo. Cuando dos agentes tocan el mismo repo, un commit gigante es garantía de conflicto en el rebase; diez pequeños casi siempre se aplican limpios.
# 1. Commit de la bitácora propia (solo la propia) git add STATE.md git commit -m "chore: cerrar sesión 2026-08-28" # 2. Ver si el remoto avanzó mientras trabajabas git fetch origin --quiet git status -sb # "## main...origin/main" -> al día, push directo # "## main...origin/main [behind 2]" -> alguien publicó, rebase # 3a. Al día git push # 3b. Atrás: rebase, nunca force git pull --rebase && git push # Si el rebase se detiene por conflicto: git rebase --abort # -> reportar archivos en conflicto y dejar la conciliación para la próxima sesión
El caso que más veces se presentó en la práctica fue el de 'ahead 1, behind 1': la sesión anterior cerró sin poder subir y desde entonces el otro asistente publicó. Mi comando de inicio lo detecta y no hace nada automático: reporta ambos números en 'Antes de empezar' y espera. Cinco segundos tuyos valen más que un rebase a ciegas sobre el trabajo de otro.
| git status -sb dice | Al abrir | Al cerrar |
|---|---|---|
| al día | Cargar contexto | push |
| behind N, copia limpia | pull --ff-only y resumir qué llegó | pull --rebase, push |
| behind N, cambios propios | Avisar, no hacer pull | pull --rebase; si conflicto, abort y reportar |
| ahead N | Avisar: hay commits sin subir | push |
| ahead N y behind M | Avisar con ambos números, no tocar nada | Intentar rebase; si conflicto, abort y reportar |
07 para copiar
El archivo de colaboración completo
Este es el protocolo, genérico, tal como lo uso. Va en la carpeta que contiene tus proyectos (un nivel arriba de los repos), para que ambos asistentes lo encuentren con la misma ruta relativa desde cualquier proyecto. Es neutral a propósito: no vive dentro de ~/.claude ni de ~/.codex, porque entonces sería propiedad de uno de los dos.
touch ~/proyectos/ASSISTANT_COLLABORATION.md
# Protocolo de colaboración entre asistentes Este archivo es neutral. Claude Code y Codex lo leen para coordinarse en los proyectos de esta carpeta. Ninguno de los dos lo escribe. ## Objetivo Que ambos asistentes trabajen sobre los mismos proyectos y retomen contexto entre sesiones sin pisar las memorias, comandos ni bitácoras del otro. ## Propiedad de archivos ### Codex escribe - ~/.codex/** (configuración, comandos, memoria global) - AGENTS.md dentro de cada proyecto - CODEX_STATE.md dentro de cada proyecto - CODEX_SESIONES.md dentro de cada proyecto Claude puede leerlos, pero no los escribe salvo instrucción explícita del usuario en el mensaje, nombrando el archivo. ### Claude escribe - ~/.claude/** (configuración, comandos, memoria global) - CLAUDE.md dentro de cada proyecto - STATE.md dentro de cada proyecto - SESIONES.md dentro de cada proyecto Codex puede leerlos, pero no los escribe salvo instrucción explícita del usuario en el mensaje, nombrando el archivo. ### Compartidos Ambos leen y, cuando el usuario lo pide, editan código fuente, docs y configuración del proyecto activo. ## Bitácoras Cada asistente cierra sesión en su propia bitácora: - Codex cierra en CODEX_STATE.md. - Claude cierra en STATE.md. Cada asistente hojea la bitácora del otro como contexto secundario al iniciar sesión y la menciona en una línea de su resumen (fecha y título de la última sesión del otro). No la modifica. ## Comandos Cada asistente mantiene sus propios comandos internos (~/.claude/commands para Claude; ~/.codex/skills, o ~/.codex/prompts en instalaciones viejas, para Codex). Ninguno modifica ni necesita conocer los del otro. La única convención compartida es el comportamiento: - iniciar sesión = cargar la memoria propia y hojear la del otro como contexto. - cerrar sesión = escribir solo en la bitácora propia del asistente activo. ## Git - Commits pequeños: un tema por commit, mensaje en imperativo. - Al abrir: git fetch. Si la copia local está limpia y atrás, pull --ff-only y resumir qué llegó. Si hay cambios propios, avisar y no hacer pull automático. - Al cerrar: commit de la bitácora propia, fetch, y si el remoto avanzó, pull --rebase. Con conflicto: rebase --abort, reportar archivos, no forzar. - Prohibido git push --force y --force-with-lease. Sin excepción. - Si el push falla por cualquier razón, avisar en una línea y continuar el cierre. El estado ya quedó en el archivo. ## Regla de oro Leer al otro está bien. Escribir en el espacio del otro, no, salvo que el usuario lo pida explícitamente.
Después de crearlo, agrega en tu CLAUDE.md global y en tu AGENTS.md global una sola línea: 'Antes de escribir cualquier archivo de memoria o bitácora, lee ~/proyectos/ASSISTANT_COLLABORATION.md'. Con eso ambos lo cargan en cada sesión sin que tengas que repetirlo.
08 paso a paso
Ponerlo en marcha en un proyecto existente
- Crea el protocolo en la carpeta padre de tus proyectos con el contenido de arriba.
- En el proyecto, deja las reglas de código en AGENTS.md y haz que CLAUDE.md lo importe con @AGENTS.md más su sección propia. Si el proyecto ya tenía todo en CLAUDE.md, mueve las reglas de código a AGENTS.md; no las dupliques.
- Agrega a tus comandos de sesión de Claude las dos reglas: hojear CODEX_STATE.md sin escribirlo al iniciar, y el candado de 'solo STATE.md' al cerrar. Haz lo simétrico en los comandos de Codex.
- Pon los archivos de memoria del otro asistente en tu radar de git: STATE.md y CODEX_STATE.md se commitean ambos. Son parte del repo, no archivos locales.
- Prueba el choque a propósito: abre una sesión con cada asistente, haz un commit en cada una y cierra las dos. La segunda en cerrar debe hacer rebase y push limpio, y su resumen debe mencionar qué llegó de fuera.
- Verifica que cada uno cargó lo suyo: en Claude Code, /context lista los archivos de memoria cargados; en Codex, pídele que resuma sus instrucciones actuales y revisa que aparezca AGENTS.md y no CLAUDE.md.
ls -1 STATE.md CODEX_STATE.md CLAUDE.md AGENTS.md 2>/dev/null
09 lo que probé y descarté
Decisiones y sus razones
Un STATE.md que escriben ambos no dura: cada asistente lo reordena a su formato y el comando de inicio del otro deja de encontrar los campos. Dos archivos con formato propio y lectura cruzada lo resuelve.
Funciona si las instrucciones son idénticas. No lo son en cuanto tienes comandos y bitácoras distintas por asistente. El import con sección propia debajo es más honesto.
Lo tuve ahí al principio. Problema: es territorio de Claude, y pedirle a Codex que lo lea rompe la propia regla del archivo. Se movió a la carpeta de proyectos, tierra de nadie.
Probé dejar que el agente resolviera conflictos de rebase solo. En archivos de código a veces sale bien; en bitácoras, siempre inventa. Ahora aborta y reporta. Conciliar dos bitácoras es trabajo de una persona.
Un dato de contexto: el proyecto donde más se usó esto es un CRM con más de 800 mil contactos y despliegues a producción varias veces por semana. Ahí un push forzado no es una molestia, es un incidente. Por eso la regla de nunca forzar va primero y sin excepciones.
FAQ lo que suelen preguntar
Preguntas frecuentes
¿Funciona con otros agentes además de Codex?
Sí. El protocolo solo asume que el otro agente lee un archivo de instrucciones (casi todos leen AGENTS.md) y puede escribir en un archivo de estado con su prefijo. Cambia el prefijo CODEX_ por el que corresponda y la tabla de propiedad sigue igual.
¿Por qué no un solo archivo de instrucciones para los dos?
Porque Claude Code no lee AGENTS.md y Codex no lee CLAUDE.md. Lo que sí se comparte son las reglas de código: van en AGENTS.md y CLAUDE.md lo importa. Lo que no se comparte (comandos, bitácora, candados) va en la sección propia de cada uno.
¿Y si los dos asistentes trabajan al mismo tiempo en la misma rama?
El protocolo lo tolera pero no lo recomienda. Con commits pequeños y rebase al cerrar casi siempre concilia limpio. Si van a tocar los mismos archivos a la vez, ponlos en ramas distintas o en worktrees: el rebase de dos cambios sobre la misma línea siempre acaba en conflicto y en tu escritorio.
¿Puedo pedirle a Claude que lea CODEX_STATE.md y actualice STATE.md con eso?
Sí, y es la forma correcta de 'pasar' contexto entre asistentes: cada uno escribe solo en el suyo, copiando lo que le sirva del otro. Lo que está prohibido por defecto es escribir directamente en el archivo ajeno.
¿Qué pasa con la memoria automática de Claude Code?
Vive en ~/.claude/projects/<proyecto>/memory/, fuera del repo, y es propiedad de Claude. Codex nunca la ve. Si hay algo ahí que el otro asistente necesita saber, pídele a Claude que lo copie a STATE.md o a AGENTS.md, no al revés.
¿Cómo sé qué archivos de instrucciones cargó cada asistente?
En Claude Code, /context lista los 'Memory files' de la sesión. En Codex, codex debug prompt-input "hola" imprime el prompt completo que recibiría el modelo, incluida la cadena de AGENTS.md, sin gastar una llamada. Corre los dos la primera vez que montes el arreglo y cada vez que muevas un archivo de carpeta.
¿Puedo hacer que Codex lea CLAUDE.md en vez de mantener AGENTS.md?
Técnicamente sí, con project_doc_fallback_filenames en ~/.codex/config.toml. Lo probé: solo aplica en carpetas donde no existe AGENTS.md, así que el resultado depende de la carpeta y se vuelve impredecible. Mejor al revés: reglas comunes en AGENTS.md y CLAUDE.md las importa con @AGENTS.md.
¿Dónde viven los comandos propios de Codex?
El mecanismo vigente son skills en ~/.codex/skills (o .codex/skills dentro del proyecto). Los custom prompts de ~/.codex/prompts siguen funcionando pero OpenAI los marca como en desuso. Da igual cuál uses para esta guía: lo que importa es que viven bajo ~/.codex y son propiedad de Codex, igual que ~/.claude/commands es de Claude.
¿Si uso el plugin de Codex dentro de Claude Code, sigo necesitando dos bitácoras?
Sí. El plugin ejecuta el CLI de Codex por debajo, así que sigue leyendo AGENTS.md y escribiendo lo que le pidas. Si Claude le delega un cierre de sesión, la bitácora es CODEX_STATE.md. Si la delegación es solo revisar (/codex:review), no escribe nada y no hay conflicto.
¿--force-with-lease no es seguro?
Es más seguro que --force para humanos que saben por qué lo usan. Para un agente que cierra sesión de forma semiautomática, sigue siendo una forma de reescribir historia ajena sin que nadie lo revise. Queda prohibido igual; el costo de esperar a la siguiente sesión es cero.
Cierre de la guía
Dos agentes en un repo no necesitan coordinarse en tiempo real; necesitan saber de quién es cada archivo y qué hacer cuando el remoto avanzó. Un markdown neutral con la tabla de propiedad, dos bitácoras que se leen pero no se escriben cruzado, y un protocolo git sin push forzado. Instálalo en un proyecto, provoca el choque a propósito una vez, y deja de pensar en ello. Esta guía vive en el Lab de David Iriza.
Fuentes oficiales5
- Cómo Claude recuerda tu proyecto: CLAUDE.md y memoria automática (Docs de Claude Code) ↗Jerarquía de CLAUDE.md (managed, usuario, proyecto, local), orden de carga, el import @archivo y la sección sobre AGENTS.md: Claude lee CLAUDE.md, no AGENTS.md.
- Custom instructions with AGENTS.md (Docs de Codex, OpenAI) ↗Cadena de instrucciones de Codex: ~/.codex/AGENTS.md, AGENTS.override.md, concatenación desde la raíz del repo, project_doc_max_bytes (32 KiB) y project_doc_fallback_filenames.
- Repositorio de Codex CLI (OpenAI, GitHub) ↗Instalación del CLI y enlace a la documentación oficial. Los subcomandos citados (exec, debug prompt-input, resume) se verificaron con codex --help en la versión 0.150.1.
- Codex plugin for Claude Code (OpenAI, GitHub) ↗Plugin oficial: /codex:review, /codex:adversarial-review, /codex:rescue, /codex:transfer, /codex:status, /codex:result y /codex:cancel. Requiere cuenta de ChatGPT o clave de API; el uso cuenta contra los límites de Codex.
- Custom prompts (Docs de Codex, OpenAI) ↗~/.codex/prompts está en desuso; la recomendación oficial son skills, invocables explícita o implícitamente.
Sigue con estas guías
- Nº 001 · Inicio y cierre de sesión →Los comandos que leen y escriben STATE.md; aquí se les agrega el candado de propiedad y la lectura de la bitácora del otro asistente.
- Nº 002 · Tus propios /comandos →Cómo editar los comandos de sesión para meterles las reglas de convivencia sin romper su formato de salida.
Guía escrita con la información oficial disponible al 28 de agosto de 2026. Esta página no está afiliada a Anthropic. Las herramientas cambian; ante la duda, revisa la documentación oficial de Claude Code.
por David Iriza