Objetivo del tema
Aprender a preparar cualquier proyecto para trabajar con Claude Code: generar el archivo de memoria CLAUDE.md con el comando /init, entender qué información conviene incluir (y cuál no), diferenciar los niveles de memoria disponibles y aprovechar las importaciones modulares y el atajo rápido #.
Cuando abres Claude Code sobre un repositorio nuevo, el agente no sabe nada de él: cómo compilar, dónde viven los tests, qué convenciones sigue el equipo. El archivo CLAUDE.md resuelve esto: es un documento Markdown que Claude Code carga automáticamente en su contexto al iniciar cada sesión, convirtiéndose en la memoria persistente del proyecto.
Piensa en él como el "manual de incorporación" que le entregarías a un desarrollador nuevo en su primer día:
No se trata de documentación para humanos (el README cumple ese rol): es documentación para el agente, escrita en lenguaje natural pero con efecto directo sobre su comportamiento.
La forma recomendada de crear este archivo es dejar que el propio agente lo redacte. Desde la terminal, dentro del proyecto:
cd /ruta/a/tu/proyecto
claude
/init
Al ejecutar /init, el agente explora el repositorio (README, manifiestos, configuraciones, estructura de carpetas) y genera un CLAUDE.md conciso y específico del proyecto. Se centra en lo que las sesiones futuras más necesitan:
Build, lint y tests: cómo ejecutarlos y en qué orden cuando el orden importa.
Estructura del repositorio y relaciones entre módulos que no son obvias por los nombres de archivo.
Reglas del equipo, particularidades de configuración y errores comunes que evitar.
Si existen reglas de otras herramientas (Cursor, Copilot), las reutiliza como referencia.
Si ya existe un CLAUDE.md, /init lo mejora en lugar de reemplazarlo a ciegas, así que puedes re-ejecutarlo cuando el proyecto cambie de estructura sin miedo a perder el trabajo previo.
Consejo clave: agrega el CLAUDE.md al control de versiones y comitealo junto con tu proyecto. Así todo el equipo comparte las mismas instrucciones y el historial de cambios queda documentado en Git.
También puedes escribirlo a mano. Este ejemplo ilustra el nivel de detalle útil para un monorepo TypeScript:
# API de pedidos (monorepo)
## Comandos
- Instalar dependencias: bun install
- Tests: bun test
- Verificación completa antes de entregar: bun run check
## Estructura
- packages/core: lógica de negocio compartida
- packages/functions: funciones serverless
- infra/: definición de infraestructura por servicio
## Estándares de código
- TypeScript en modo estricto
- El código compartido va en packages/core con exports configurados
## Convenciones
- Importar módulos compartidos por nombre de workspace: @api/core/...
- IMPORTANTE: no modificar archivos generados en packages/functions/generated/
Tres principios que separan un buen archivo de uno inútil:
Claude Code lee instrucciones desde varias ubicaciones, cada una con un propósito distinto. Elegir el nivel correcto es la diferencia entre una configuración limpia y una mezcla confusa:
| Nivel | Ubicación | Alcance | Uso recomendado |
|---|---|---|---|
| Corporativo | Directorio del sistema gestionado por IT | Todos los usuarios de la organización | Políticas obligatorias de seguridad y estilo, definidas centralizadamente. |
| Usuario (global) | ~/.claude/CLAUDE.md |
Todas tus sesiones, en cualquier proyecto | Preferencias personales: idioma de respuesta, estilo de commits, atajos propios. |
| Proyecto | CLAUDE.md en la raíz (versionado) |
Todo el equipo sobre ese proyecto | Comandos, arquitectura y convenciones compartidas. El nivel más usado. |
| Subdirectorio | packages/api/CLAUDE.md, etc. |
Sesiones que trabajan en esa zona | Reglas específicas de un módulo en monorepos grandes. |
| Local (personal) | CLAUDE.local.md |
Solo tu máquina, en ese proyecto | Preferencias personales del proyecto; hoy se prefiere usar importaciones desde la memoria global. |
Las reglas globales y locales no viajan por Git, así que reserva esos niveles para gustos personales; lo compartido por el equipo pertenece al repositorio.
Al iniciar una sesión, Claude Code recorre el directorio de trabajo hacia arriba y carga los CLAUDE.md que encuentre, además del archivo global del usuario. Los archivos de subdirectorios siguen una regla distinta y eficiente: se cargan bajo demanda, cuando el agente lee o edita archivos de esa zona del proyecto.
Este diseño tiene una consecuencia práctica importante para monorepos: puedes mantener un CLAUDE.md breve en la raíz y memoria detallada por paquete, y el contexto se consumirá solo donde haga falta. Un monolito de documentación en la raíz paga peaje en cada sesión, incluso cuando el trabajo toca un solo archivo.
Dentro de cualquier archivo de memoria, la sintaxis @ruta/al/archivo importa el contenido de otros archivos, lo que permite organizar la memoria en módulos reutilizables:
CLAUDE.md individual de cada proyecto que importa reglas comunes:
See @~/.claude/docs/estilo-commits.md
Convenciones de API: @docs/api-standards.md
Guía de pruebas: @docs/testing.md
Detalles a tener en cuenta:
~ para tu home).Makefile, un JSON de configuración o cualquier texto relevante.Así mantienes un CLAUDE.md corto mientras la guía detallada vive en archivos modulares, potencialmente compartidos entre varios proyectos.
Dos utilidades convierten el mantenimiento de la memoria en un hábito continuo en lugar de una tarea aparte:
#: si una entrada del prompt comienza con #, Claude Code la interpreta como una memoria a guardar: te pregunta en qué archivo almacenarla (proyecto, usuario o local) y la agrega. Ejemplo: cuando descubres que los tests corren con make test-ci y no con npm test, escribes # los tests del CI corren con make test-ci y listo, queda registrado para siempre./memory: abre los archivos de memoria en tu editor para revisarlos y ajustarlos cómodamente.La práctica recomendada es tratar la memoria como un diario de aprendizaje del proyecto: cada gotcha descubierto, cada convención acordada en una revisión de código y cada comando olvidado termina, tarde o temprano, en el CLAUDE.md.
| Incluir | Evitar |
|---|---|
| Comandos de build, test y lint con su orden correcto. | Replicar contenido extenso del README o de la documentación existente. |
| Gotchas específicos: variables de entorno necesarias, servicios que deben estar levantados, comandos con nombres engañosos. | Frases vagas y aspiracionales ("escribe buen código", "sé cuidadoso") que no alteran el comportamiento. |
| Convenciones de estilo propias del equipo y excepciones a las reglas generales del lenguaje. | Instrucciones contradictorias entre sí o con la configuración real del repositorio. |
| Reglas críticas con énfasis explícito (IMPORTANT, YOU MUST). | Volcar todo el conocimiento del equipo en la raíz: usa subdirectorios e importaciones. |
| Referencias a documentos detallados para carga bajo demanda. | Información efímera (estado actual de ramas, tareas pendientes) que pertenece a issues. |
CLAUDE.md desactualizado es peor que ninguno, porque induce errores con confianza.@. Cada cosa en su lugar.Prueba rápida: después de crear tu CLAUDE.md, abre una sesión nueva y pregunta: "¿Cómo corro los tests de este proyecto?". Si la respuesta cita el comando exacto de tu archivo sin explorar el repositorio, la memoria está funcionando.
Conclusión: invertir quince minutos en un buen CLAUDE.md mejora todas las sesiones futuras: el agente compila, testa y respeta las convenciones sin que tengas que explicárselo cada vez. Con el proyecto inicializado, estamos listos para explorar a fondo la interfaz interactiva en el próximo tema.