Anatomía de CLAUDE.md

Imagina que CLAUDE.md es el manual de instrucciones definitivo de tu proyecto de programación. Está diseñado específicamente para que una Inteligencia Artificial (o un programador nuevo que se sume al equipo) lo lea y entienda exactamente cómo trabajar en tu proyecto sin cometer errores.
Aquí tienes el resumen de las 7 cosas que debe tener este manual:
1. Comandos de Compilación (Build Commands)
¿Qué es? Los "botones" que hay que presionar para que el código funcione y comprobar que no esté roto.
En sencillo: Las instrucciones exactas que se escriben en la terminal para arrancar el proyecto.
2. Resumen de Arquitectura (Architecture Overview)
¿Qué es? El mapa del tesoro.
En sencillo: Una explicación corta (un par de párrafos) que explica cómo está organizado el proyecto y qué hace cada carpeta principal.
3. Patrones Críticos (Critical Patterns)
¿Qué es? Los "Mandamientos" del proyecto.
En sencillo: Una lista de 5 a 10 cosas que obligatoriamente se deben hacer siempre que se escriba código nuevo para mantener el orden.
4. Antipatrones (Anti-Patterns)
¿Qué es? Las "Líneas Rojas".
En sencillo: Lo opuesto a lo anterior. Una lista de 5 a 10 cosas que están prohibidas porque rompen el sistema o vuelven el código un caos.
5. Flujo de Trabajo de Git (Git Workflow)
¿Qué es? Las reglas de convivencia del equipo.
En sencillo: Cómo se deben registrar los cambios, qué nombres ponerle a las carpetas de trabajo (ramas) y cómo pedir permiso para fusionar tu código con el de los demás.
6. Requisitos de Prueba (Testing Requirements)
¿Qué es? El control de calidad.
En sencillo: Qué herramientas se usan para probar que el código funciona y qué porcentaje del proyecto debe estar vigilado por estas pruebas automáticas (por ejemplo, el 80%).
7. Errores Comunes (Common Pitfalls)
¿Qué es? El muro de los lamentos (y aprendizajes).
En sencillo: Una lista de metidas de pata que ya ocurrieron en el pasado para que la IA (o tú) no las vuelva a repetir.
💡 La regla de oro de la imagen: Ese documento no debe ser una enciclopedia gigante. Debe ser directo al grano, idealmente con una extensión de 500 a 1,000 líneas de texto. Así, cualquier IA lo lee en un segundo y programa exactamente como tú quieres.
Ejemplo de CLAUDE.md (Stack: Perú Corporativo)
1. Comandos de Compilación (Build Commands)
Backend (Spring Boot):
Levantar en desarrollo:
./mvnw spring-boot:run -Dspring-boot.run.profiles=devEjecutar pruebas:
./mvnw clean testConstruir JAR:
./mvnw clean package -DskipTests
Frontend (Angular):
Instalar dependencias:
npm installLevantar en desarrollo:
ng serveConstruir producción:
ng build --configuration production
2. Resumen de Arquitectura (Architecture Overview)
El proyecto es un sistema monolítico modular con backend y frontend separados.
/backend: Proyecto Java 25 estructurado bajo Arquitectura Limpia (Clean Architecture). Capas:domain(reglas de negocio),application(casos de uso) einfrastructure(controladores REST, entidades JPA de PostgreSQL)./frontend: Aplicación Angular estructurada por módulos funcionales (auth,dashboard,shared). Usamos Standalone Components y servicios reactivos conRxJS.
3. Patrones Críticos (Critical Patterns)
Java 25: Usar siempre Virtual Threads (
Executors.newVirtualThreadPerTaskExecutor()) para tareas asíncronas y procesamiento de reportes pesados.Spring Boot 4: Toda inyección de dependencias debe ser por constructor usando Lombok (
@RequiredArgsConstructor). Prohibido usar@Autowireden atributos.Angular: El manejo de estados locales debe hacerse mediante Signals en lugar de
BehaviorSubjecttradicionales.PostgreSQL: Usar
UUIDcomo llave primaria en lugar de IDs secuenciales para las tablas de transacciones financieras.
4. Antipatrones (Anti-Patterns)
NUNCA uses
@CrossOrigin("*")en los controladores de Spring Boot; la configuración de CORS se maneja centralizada enSecurityConfig.java.NUNCA realices consultas a la base de datos dentro de un bucle
for(problema de consulta \(N+1\)). UsaJOIN FETCHen los repositorios de Spring Data JPA.NUNCA hagas un
.subscribe()manual en los componentes de Angular si puedes usar el pipeasyncotoSignalen el HTML. Evita fugas de memoria.
5. Flujo de Trabajo de Git (Git Workflow)
Ramas: Usar GitFlow simplificado. Ramas principales:
main(producción) ydevelop(desarrollo). Las tareas se crean comofeature/TICKET-descripcion(ej.feature/PE-102-login-biometrico).Commits: Seguir la convención Conventional Commits:
feat(backend): agregar endpoint de consulta de RUCofix(frontend): corregir paginación en tabla de clientes.PRs: Todo Pull Request requiere la aprobación de al menos 1 Tech Lead antes de mezclarse a
develop.
6. Requisitos de Prueba (Testing Requirements)
Backend: Mínimo 80% de cobertura de código en la capa de aplicación usando JUnit 5 y Mockito. Las pruebas de integración con PostgreSQL deben usar Testcontainers.
Frontend: Pruebas unitarias para componentes críticos usando Jasmine/Karma. Cobertura mínima del 75%.
7. Errores Comunes (Common Pitfalls)
Error de Zona Horaria: PostgreSQL está configurado en UTC. Al guardar fechas en Java, usa siempre
OffsetDateTimeoInstant. No usesLocalDateTime, ya que trunca la zona horaria de Perú (PET / UTC-5).Bloqueos de Base de Datos: Las transacciones largas en Spring Boot con
@Transactionalsuelen bloquear las tablas de facturación. Mantén los métodos transaccionales lo más cortos posible.
¿Por qué esto le cambia la vida a una IA (o a un dev nuevo)?
Si dejas este archivo en la raíz de tu repositorio, la IA ya no intentará sugerirte código antiguo de Java 8 o Angular 12. Sabrá de inmediato que estás usando lo último (Java 25, Angular moderno con Signals), que no debe usar @Autowired, y que si va a probar la base de datos, tiene que usar Testcontainers.
Enjoy!
Joe




