MemoryLake
Volver a todos los artículos
Tutorial14 de agosto de 2026·12 min de lectura

Cómo migrar tu CLAUDE.md a GitHub Copilot sin perder el contexto (2026)

La mayoría de las guías de migración comienzan con un paso de copia. Esta comienza con un paso que no tienes que dar: la documentación de GitHub incluye `CLAUDE.md` en la raíz del repositorio como una alternativa aceptada a `AGENTS.md`, lo que significa que Copilot ya lee el archivo que pasaste meses escribiendo. Nada que convertir, nada que renombrar.

Esa es la buena noticia, y también es la trampa. El archivo raíz es solo una capa de un sistema de cinco capas. Claude Code recorre tu árbol de directorios cargando archivos `CLAUDE.md` a medida que avanza, expande las importaciones `@` en el contexto al iniciarse, mantiene un `CLAUDE.local.md` personal fuera del control de versiones, carga reglas con alcance de ruta desde `.claude/rules/` y mantiene por separado un directorio de memoria automática que Claude escribe por sí mismo. Copilot lee exactamente uno de esos archivos (el de la raíz) y tiene un lugar documentado para otros dos. El resto requiere una decisión, y el modo de fallo es silencioso: Copilot se comporta como si tuviera tus instrucciones, porque de hecho tiene algunas de ellas.

Esta guía detalla qué se transfiere realmente, las dos capas que puedes mapear con confianza, las tres que no, y cómo dejar de repetir este ejercicio la próxima vez que agregues un agente.

Qué se transfiere realmente

La perspectiva capa por capa, utilizando la propia documentación de ambos proveedores.

El archivo raíz: se transfiere tal cual. La documentación de instrucciones de GitHub enumera los archivos AGENTS.md en cualquier lugar del repositorio, teniendo prioridad el archivo más cercano en el árbol de directorios, y nombra a CLAUDE.md o GEMINI.md en la raíz del repositorio como alternativas. Por lo tanto, Copilot lee un CLAUDE.md raíz sin modificaciones. Si el conocimiento de tu proyecto está concentrado allí (comandos de compilación, convenciones, notas de arquitectura), ya has migrado la mayor parte de lo que importa.

Reglas con alcance de ruta: se transfieren con un mapeo limpio. Este es el par mejor emparejado en todo el proceso. El directorio .claude/rules/ de Claude Code contiene archivos markdown que pueden llevar un campo de frontmatter paths:, de modo que una regla solo se carga cuando Claude trabaja con archivos que coinciden. El equivalente de Copilot es .github/instructions/NAME.instructions.md, cuyo frontmatter acepta un campo applyTo utilizando sintaxis glob. Misma idea, mismo vocabulario glob, diferente convención de nombres de archivo. Una regla con alcance para src/api/**/*.ts en un sistema es una regla con alcance para src/api/**/*.ts en el otro.

Instrucciones para todo el repositorio: un segundo hogar redundante. Copilot también admite .github/copilot-instructions.md, que se aplica a todas las solicitudes en el contexto del repositorio. No lo necesitas si ya se está leyendo tu CLAUDE.md raíz, y mantener ambos invita al problema de la desincronización: dos archivos, uno se actualiza y el otro no. Elige uno como la fuente de verdad.

Archivos `CLAUDE.md` anidados: no se transfieren. Aquí está la parte que confunde a la gente. La documentación de Claude Code describe el recorrido hacia arriba en el árbol de directorios desde el directorio de trabajo, cargando CLAUDE.md y CLAUDE.local.md de cada directorio a lo largo del camino, concatenando todos los archivos descubiertos en el contexto; los archivos en los subdirectorios también se descubren y se cargan bajo demanda cuando Claude lee archivos allí. Copilot acepta CLAUDE.md en la raíz del repositorio; ese es el alcance documentado. Tu packages/billing/CLAUDE.md es invisible para él. La forma nativa de Copilot para expresar instrucciones por directorio es un AGENTS.md anidado, que según la documentación tiene prioridad cuando es el más cercano en el árbol. En un monorepo, esta única diferencia puede ser la causa de que la mayoría de tus instrucciones no se apliquen silenciosamente.

Importaciones `@`: sin destino. El archivo CLAUDE.md de Claude Code puede incorporar otros archivos con la sintaxis @ruta/al/archivo, de forma recursiva, hasta una profundidad máxima documentada de cuatro saltos. La documentación de instrucciones de GitHub no describe ningún mecanismo de importación. Si tu archivo raíz es un índice delgado que importa cinco documentos reales, Copilot leerá el índice y ninguno de los documentos.

`CLAUDE.local.md`: sin destino. Claude Code admite un archivo CLAUDE.local.md en la raíz del proyecto para preferencias personales que mantienes fuera del control de versiones. La capa de Copilot para preferencias personales son las instrucciones personales, que residen en tu cuenta de GitHub en lugar de en el repositorio. Es una capa real (la prioridad declarada por GitHub es: "Las instrucciones personales tienen la prioridad más alta. Las instrucciones del repositorio vienen a continuación, y luego las instrucciones de la organización se priorizan al final"), pero no es un archivo en tu copia local, por lo que el contenido se traslada escribiéndolo de nuevo, no copiándolo.

Memoria automática: sin destino, y para empezar, no era portable. La memoria automática de Claude Code está activada por defecto, almacena notas por proyecto en ~/.claude/projects/<proyecto>/memory/, carga las primeras 200 líneas o 25 KB de MEMORY.md en cada sesión, y es explícitamente local de la máquina (la documentación dice que los archivos "no se comparten entre máquinas o entornos en la nube"). La documentación de instrucciones de GitHub no contiene ninguna declaración sobre la persistencia de la memoria o el contexto entre sesiones; los archivos de instrucciones son el mecanismo de persistencia documentado. Por lo tanto, esta capa no se transfiere, y la razón no es el diseño de Copilot, sino que la capa nunca fue un artefacto compartido en primer lugar. Si ya te has topado con esa pared, es la misma que se describe en por qué Claude Code olvida entre máquinas.

Una nota de encuadre antes de los pasos: ambos sistemas describen las instrucciones como contexto en lugar de imposición. La documentación de Claude Code dice que las instrucciones son "contexto, no configuración impuesta" y que el contenido se entrega como un mensaje de usuario después del prompt del sistema con "ninguna garantía de cumplimiento estricto". La declaración de prioridad de GitHub termina con "Sin embargo, todos los conjuntos de instrucciones relevantes se proporcionan a Copilot". Ningún proveedor promete obediencia. Planifica la migración en torno a lo que se lee, no en torno a lo que esperas que se obedezca.

La migración manual

Paso 1: Mapear las capas que tienen un hogar

Trabaja de arriba hacia abajo y resiste la tentación de consolidar todo en un solo archivo gigante.

Deja el CLAUDE.md raíz donde está. Funciona. Si prefieres ser explícito para los compañeros de equipo que no saben que Copilot lo lee, agrega un comentario de una línea en la parte superior del archivo que diga que ambos agentes leen esto. No lo dupliques en .github/copilot-instructions.md; mantendrás dos copias y una quedará desactualizada.

Convierte cada archivo .claude/rules/*.md que tenga un campo paths: en .github/instructions/<nombre>.instructions.md con los mismos globs bajo applyTo. Mantén los nombres de archivo reconocibles para que el par sea obvio en un diff. Las reglas que no tienen un campo paths: son del tipo incondicional (Claude Code las carga al inicio con la misma prioridad que .claude/CLAUDE.md), por lo que pertenecen a tu archivo raíz o a un AGENTS.md, no al directorio con alcance de ruta.

Promueve los archivos CLAUDE.md anidados a archivos AGENTS.md anidados en los mismos directorios. Esto es un cambio de nombre más una decisión: si deseas que ambos agentes lean el mismo contenido anidado, ten en cuenta que la documentación de Claude Code es directa sobre la asimetría: "Claude Code lee CLAUDE.md, no AGENTS.md", y su patrón recomendado es un CLAUDE.md que importa AGENTS.md con @AGENTS.md, o un enlace simbólico (symlink). Así que en cada subdirectorio puedes mantener un archivo real (AGENTS.md) y un CLAUDE.md de una línea que lo importe. Ambos agentes leerán el mismo texto; solo hay un lugar para editar.

Aplana tus importaciones antes de continuar. Cada archivo importado con @ debe convertirse en contenido integrado (inline) en el archivo que lo importó, en un AGENTS.md anidado en el directorio correspondiente, o en un archivo de instrucciones con alcance de ruta. Las propias notas de Claude Code señalan que dividir en importaciones "ayuda a la organización pero no reduce el contexto, ya que los archivos importados se cargan al inicio", por lo que aplanar no te cuesta nada en términos de contexto en el lado de Claude, y es la única forma en que el contenido llega a Copilot.

Paso 2: Decidir qué pasa con las capas que no tienen hogar

Tres grupos, y cada uno necesita una decisión real en lugar de una por defecto.

`CLAUDE.local.md`. Léelo y clasifícalo. La mayoría de estos archivos son una mezcla de preferencias genuinamente personales (tu URL de sandbox, tus datos de prueba preferidos) y datos del proyecto que deberían haberse confirmado (commit) hace meses. Confirma el segundo tipo en el archivo raíz (te alegrarás de haberlo hecho, independientemente de Copilot) y vuelve a escribir el primer tipo en las instrucciones personales de Copilot, recordando que estas se aplican a cada repositorio en el que trabajas, no solo a este. Elimina todo lo que no quieras en ninguno de los dos lugares. Un archivo que solo una herramienta en una máquina puede leer no es un almacén de conocimiento.

Memoria automática. Abre el directorio de memoria y lee MEMORY.md junto con los archivos de temas. Esta es la hora de mayor valor de toda la migración, porque es un registro escrito de lo que Claude descubrió sobre tu proyecto y que nunca te molestaste en documentar: peculiaridades de compilación, ideas de depuración, la razón por la que una prueba es inestable. Nada de esto va a llegar a Copilot por sí solo. Promueve los datos duraderos a tu archivo raíz o a un archivo de instrucciones con alcance de ruta. Deja el resto (notas sobre los hábitos de un modelo, seguimientos de depuración únicos) donde están. No están mal, simplemente no son conocimiento compartido.

Mecanismos exclusivos de Copilot que querrás en el camino de regreso. Existen dos cosas en el lado de Copilot que no tienen equivalente en Claude Code, y conocerlas ahora evita sorpresas más adelante. Los archivos de instrucciones específicos de ruta admiten un campo opcional excludeAgent, que evita su uso por parte de "code-review" o "cloud-agent", por lo que una regla que mantuviste deliberadamente fuera de la revisión de código no tiene forma de quedarse fuera en el otro lado. Y las instrucciones de la organización son una capa real que alguien más puede controlar; GitHub las clasifica en último lugar de prioridad, pero aun así las proporciona. Si migras de regreso, o ejecutas ambos, pregúntale a un administrador qué hay en esa capa. Da forma a resultados que nunca configuraste.

El camino mejor: una capa de memoria, cualquier agente

Hacer lo anterior una vez es razonable. Hacerlo cada vez que aparece un nuevo agente es el verdadero problema, y la aritmética está empeorando: cada herramienta inventa su propio nombre de archivo, su propio frontmatter, su propio orden de prioridad y su propio almacén de memoria privado, por lo que N herramientas significan N copias del mismo conocimiento del proyecto desincronizándose a N ritmos diferentes.

MemoryLake existe para romper ese patrón: mantén el conocimiento del proyecto en una sola capa de memoria y deja que cada agente lea de ella en lugar de su propia copia local. Los archivos de instrucciones se quedan donde pertenecen (para las reglas que deben estar en el contexto en cada sesión), mientras que el cuerpo de conocimiento acumulado y en crecimiento vive en un lugar al que ambos agentes pueden acceder. La configuración consta de tres pasos.

Paso 1: Crear una clave API

Inicia sesión en MemoryLake y crea una clave API. Una sola credencial, utilizada por cada herramienta que conectes, que es el punto: la credencial sobrevive a tu elección actual de agente.

Creación de una clave API de MemoryLake para migrar CLAUDE.md a GitHub Copilot
Creación de una clave API de MemoryLake para migrar CLAUDE.md a GitHub Copilot

Paso 2: Sube tus primeras memorias

Comienza con el material que acabas de excavar durante la migración: los datos duraderos de la memoria automática, las verdades del proyecto que se escondían en CLAUDE.local.md, el registro de decisiones, las razones detrás de las convenciones que parecen arbitrarias sin ellas. Mantén las entradas cortas y específicas. La prueba de una buena entrada es si un nuevo compañero de equipo, o un nuevo agente, podría actuar en consecuencia sin hacer una pregunta de seguimiento.

Subir el conocimiento de CLAUDE.md y las notas de memoria automática a MemoryLake
Subir el conocimiento de CLAUDE.md y las notas de memoria automática a MemoryLake

Paso 3: Conecta tu IA y agentes

Conecta tus herramientas. MemoryLake es accesible a través de MCP y de una API, por lo que los agentes nativos de MCP (entre ellos Claude Code, Codex, OpenClaw) se conectan apuntando al servidor MCP, mientras que cualquier otra cosa lee la misma memoria a través de la API. Los archivos de instrucciones siguen haciendo su trabajo específico; el conocimiento compartido deja de duplicarse por herramienta.

Conectar Claude Code y GitHub Copilot a una capa de memoria compartida
Conectar Claude Code y GitHub Copilot a una capa de memoria compartida

Dos límites honestos. MemoryLake no es una capa de imposición: si una regla debe cumplirse independientemente de lo que decida un modelo, eso pertenece a un hook o a una verificación de CI, exactamente como sugieren los documentos de ambos proveedores cuando llaman a las instrucciones contexto en lugar de configuración. Y no lee tus archivos existentes por ti: el inventario de migración anterior sigue siendo un trabajo que haces una sola vez.

Qué cambia esto en la práctica

El segundo agente cuesta menos que el primero. La parte costosa de agregar Copilot junto a Claude Code no es la configuración, sino volver a deducir el conocimiento que ya estaba implícito en la configuración de la primera herramienta. Haz eso una vez en una capa compartida y el tercer agente será una simple conexión, no un proyecto entero.

Los monorepos dejan de ser un caso especial. La asimetría de los archivos anidados es la forma más común en que las instrucciones fallan silenciosamente al aplicarse. Cuando el conocimiento por área es recuperable en lugar de depender de qué archivo descubre cada herramienta en qué directorio, la estructura de árbol deja de ser una superficie de compatibilidad.

Los archivos de instrucciones se vuelven más cortos, lo que hace que funcionen mejor. Los documentos de Claude Code recomiendan apuntar a menos de 200 líneas por archivo y señalan que los archivos más largos "consumen más contexto y reducen el cumplimiento". La guía de Copilot va en la misma dirección. Mover el conocimiento de referencia fuera del archivo que siempre se carga y llevarlo a algo que se recupera bajo demanda no es solo orden: mejora notablemente la confiabilidad con la que se siguen las reglas restantes.

La revisión detecta la desincronización en lugar de ocultarla. Con una sola fuente de verdad, una entrada desactualizada es un diff. Con cinco copias por herramienta, una entrada desactualizada es un misterio sobre por qué un agente cree algo que el otro no.

Buenas prácticas para ejecutar CLAUDE.md y Copilot juntos

Un archivo real por directorio, más un puntero. Mantén AGENTS.md como el contenido y un CLAUDE.md de una línea que lo importe. Ambos agentes leen el mismo texto y hay exactamente un lugar para editar.

Nunca dupliques el archivo raíz. Un CLAUDE.md raíz y un .github/copilot-instructions.md que contengan texto casi idéntico es una inconsistencia futura garantizada. Elige uno.

Mantén los globs idénticos en ambos sistemas. Cuando paths: y applyTo describen el mismo conjunto de archivos con la misma sintaxis, puedes revisarlos como un par. Cuando se desvían, obtienes reglas específicas de área que se aplican en una herramienta y no en la otra, lo cual es peor que no tenerlas.

Verifica qué se cargó después de cada cambio estructural. Claude Code expone la lista de archivos de memoria cargados en la sesión; verifícala después de mover archivos. En el lado de Copilot, confirma que realmente se esté detectando un AGENTS.md anidado antes de asumir que es así. Un archivo que no se lee se ve exactamente como un modelo que ignora las instrucciones, la distinción que se cubre en por qué GitHub Copilot olvida el contexto del código base.

Pregunta sobre la capa de la organización. Si tu repositorio está bajo una organización con instrucciones configuradas, ese texto se le está proporcionando a Copilot lo hayas leído o no. Léelo.

Coloca las reglas que deben cumplirse en la imposición, no en las instrucciones. Ambos proveedores son explícitos en que los archivos de instrucciones moldean el comportamiento en lugar de garantizarlo. Cualquier cosa que deba suceder antes de cada commit pertenece a un hook o a la CI.

Conclusión

El titular de esta migración es inusualmente agradable: Copilot lee un CLAUDE.md raíz, por lo que el archivo que ya mantienes sigue funcionando. El trabajo está en las cuatro capas que lo rodean: archivos anidados que deben promoverse a AGENTS.md, importaciones que deben aplanarse, un archivo local que debe clasificarse y un directorio de memoria automática que contiene conocimiento que nunca fue compartible.

Haz ese inventario una vez y coloca su resultado en un lugar al que ambos agentes puedan acceder. De lo contrario, lo harás de nuevo para la próxima herramienta, desde una posición inicial ligeramente peor, porque para entonces dos copias se habrán desincronizado. Si también te estás moviendo en la otra dirección, migrar GitHub Copilot a Claude Code cubre el viaje inverso, y migrar CLAUDE.md a Cursor maneja el tercer destino común.

Preguntas frecuentes

¿Realmente lee GitHub Copilot el archivo CLAUDE.md?

Sí, en la raíz del repositorio. La documentación de instrucciones personalizadas de GitHub enumera CLAUDE.md o GEMINI.md en la raíz del repositorio como alternativas a AGENTS.md, que los documentos describen como utilizables en cualquier lugar del repositorio, teniendo prioridad el archivo más cercano. El alcance de la raíz es el detalle importante: los archivos CLAUDE.md anidados no están cubiertos.

¿Qué pasa con mis archivos CLAUDE.md anidados en un monorepo?

Copilot no los leerá. Claude Code descubre los archivos CLAUDE.md recorriendo el árbol de directorios y cargando los archivos de los subdirectorios bajo demanda, pero el equivalente documentado de Copilot para las instrucciones por directorio es un AGENTS.md anidado. Renombra o agrega archivos AGENTS.md anidados, y usa la importación @AGENTS.md documentada de Claude Code o un enlace simbólico para que ambas herramientas lean una sola copia.

¿Cómo convierto los archivos de `.claude/rules/` con frontmatter `paths:`?

Mueve cada uno a .github/instructions/<nombre>.instructions.md y coloca los mismos patrones glob bajo applyTo en el frontmatter. Los conceptos se alinean estrechamente. Las reglas sin un campo paths: son incondicionales, por lo que pertenecen a tu archivo de instrucciones raíz en lugar de al directorio con alcance de ruta.

¿Tiene Copilot memoria entre sesiones como la memoria automática de Claude Code?

La documentación de instrucciones personalizadas de GitHub no contiene ninguna declaración sobre la persistencia de la memoria o el contexto entre sesiones; los archivos de instrucciones son el mecanismo de persistencia documentado allí. La memoria automática de Claude Code es un mecanismo independiente y local de la máquina almacenado en ~/.claude/projects/<proyecto>/memory/, y sus propios documentos señalan que esos archivos no se comparten entre máquinas o entornos en la nube. Trata el conocimiento que contiene como algo que promueves a archivos compartidos, no como algo que se sincroniza.

¿Qué hago con CLAUDE.local.md?

Divídelo. Los datos del proyecto que resulten no estar confirmados deben confirmarse en tu archivo de instrucciones compartido. Las preferencias genuinamente personales van a las instrucciones personales de Copilot, que GitHub clasifica con la prioridad más alta pero que residen en tu cuenta y se aplican a todos los repositorios en lugar de a una sola copia local. Elimina lo que no encaje en ninguno de los dos lugares.

¿Puedo mantener ambas herramientas sin mantener dos conjuntos de archivos?

En su mayoría. Usa un archivo real por alcance con un archivo puntero para la otra herramienta, mantén los globs idénticos entre paths: y applyTo, y mueve el conocimiento de referencia a una capa de memoria compartida que ambas puedan consultar. Lo que no puedes fusionar son los extras específicos de cada herramienta: excludeAgent de Copilot y las instrucciones de la organización no tienen contraparte en Claude Code, y la memoria automática de Claude Code no tiene ninguna en el lado de Copilot.