# 📚 REFERENCE - Código de Referencia

**Propósito:** Esta carpeta contiene proyectos y código de referencia para análisis, comparación y mejora del desarrollo actual.

---

## 🎯 USO

### Para Architecture-Analyst
- Analizar implementaciones de referencia
- Comparar patrones arquitectónicos
- Documentar mejores prácticas observadas
- Proponer mejoras basadas en referencias

### Para Agentes de Desarrollo
- Consultar implementaciones de funcionalidades similares
- Comparar enfoques de diseño
- Reutilizar patrones probados
- Entender mejores prácticas

### Para Claude Code Cloud
- Acceso a código de referencia desde cualquier instancia
- Comparaciones automáticas con código actual
- Análisis de implementaciones

---

## 📂 ESTRUCTURA

```
reference/
├── README.md                  # Este archivo
├── proyecto-ejemplo-1/        # Proyecto de referencia
│   ├── src/                   # Solo código fuente
│   ├── package.json           # Dependencias
│   └── README.md              # Descripción del proyecto
├── proyecto-ejemplo-2/
└── implementaciones/          # Implementaciones específicas
    ├── auth-patterns/         # Patrones de autenticación
    ├── multi-tenant/          # Implementaciones multi-tenant
    └── gamification/          # Sistemas de gamificación
```

---

## ⚠️ IMPORTANTE - Qué Versionar

### ✅ SÍ versionar (INCLUIR):
- Código fuente (.ts, .tsx, .js, .jsx, .vue, etc.)
- Archivos de configuración (package.json, tsconfig.json, etc.)
- Documentación (.md files)
- Esquemas de base de datos (.sql files)
- Archivos de tipos (.d.ts)
- README y documentación

### ❌ NO versionar (IGNORADO automáticamente):
- node_modules/
- dist/
- build/
- .next/
- .nuxt/
- coverage/
- .turbo/
- .nx/
- out/
- *.log
- *.tmp
- *.cache
- .DS_Store

**Razón:** Solo versionamos código fuente. Las dependencias y builds se pueden regenerar con `npm install` / `npm run build`.

---

## 📋 DIRECTRICES

### Al Agregar Proyectos de Referencia

1. **Limpiar antes de agregar:**
   ```bash
   # Eliminar node_modules y builds
   cd reference/nuevo-proyecto
   rm -rf node_modules dist build .next coverage
   ```

2. **Verificar que está limpio:**
   ```bash
   # No debe mostrar carpetas de build/dependencias
   du -sh reference/nuevo-proyecto/*
   ```

3. **Agregar README del proyecto:**
   ```markdown
   # Proyecto: {nombre}

   **Fuente:** {URL o descripción}
   **Propósito:** ¿Por qué se incluye como referencia?
   **Aspectos relevantes:** ¿Qué podemos aprender?

   ## Instalación (para probar localmente)
   ```bash
   npm install
   npm run dev
   ```

   ## Aspectos destacables
   - Feature 1: Descripción
   - Pattern 2: Descripción
   ```

4. **Commit con mensaje descriptivo:**
   ```bash
   git add reference/nuevo-proyecto
   git commit -m "ref: agregar proyecto {nombre} como referencia para {propósito}"
   ```

---

## 🔍 VALIDACIÓN

### Verificar que reference/ está en el repo:
```bash
# Debe devolver vacío (no ignorado)
git check-ignore reference/

# Debe mostrar archivos de reference/
git ls-files reference/
```

### Verificar que node_modules está ignorado dentro de reference/:
```bash
# Debe devolver: reference/proyecto/node_modules/
git check-ignore reference/proyecto/node_modules/
```

### Ejecutar validación automática:
```bash
bash orchestration/scripts/validate-gitignore.sh
```

Debe mostrar:
```
✅ reference/ NO está ignorado (correcto)
✅ reference/**/node_modules/ está ignorado (correcto)
✅ reference/**/dist/ está ignorado (correcto)
```

---

## 📊 TAMAÑO RECOMENDADO

**Máximo recomendado:** ~100MB por proyecto (solo código fuente)

Si un proyecto excede este tamaño:
- Considerar incluir solo las partes relevantes
- Crear subcarpeta con implementaciones específicas
- Documentar ubicación del proyecto completo (URL)

---

## 🎓 EJEMPLOS DE USO

### Ejemplo 1: Analizar Patrón de Autenticación

```markdown
**Tarea:** Implementar autenticación multi-tenant

**Agente:** Architecture-Analyst

**Proceso:**
1. Revisar `reference/proyecto-multi-tenant/src/auth/`
2. Analizar implementación de RLS y context
3. Comparar con implementación actual
4. Documentar mejoras en `docs/adr/ADR-XXX.md`
```

### Ejemplo 2: Implementar Feature Similar

```markdown
**Tarea:** Implementar sistema de gamificación

**Agente:** Backend-Agent

**Proceso:**
1. Consultar `reference/gamification-system/`
2. Revisar modelos de datos y APIs
3. Adaptar patrones al proyecto actual
4. Implementar con mejores prácticas observadas
```

### Ejemplo 3: Comparar Arquitectura

```markdown
**Tarea:** Refactorizar estructura de módulos

**Agente:** Architecture-Analyst

**Proceso:**
1. Analizar `reference/best-practices-nestjs/`
2. Comparar con estructura actual
3. Proponer mejoras arquitectónicas
4. Crear plan de refactorización
```

---

## 📚 REFERENCIAS

- [DIRECTIVA-GESTION-BACKUPS-GITIGNORE.md](../orchestration/directivas/DIRECTIVA-GESTION-BACKUPS-GITIGNORE.md) - Sección 1.5
- [PROMPT-ARCHITECTURE-ANALYST.md](../orchestration/prompts/PROMPT-ARCHITECTURE-ANALYST.md)
- `.gitignore` - Líneas 201-217

---

## ✅ CHECKLIST ANTES DE COMMIT

Antes de agregar un nuevo proyecto de referencia:

- [ ] Eliminar node_modules/, dist/, build/, .next/, etc.
- [ ] Verificar que solo hay código fuente
- [ ] Agregar README del proyecto explicando propósito
- [ ] Verificar tamaño total (< 100MB recomendado)
- [ ] Documentar aspectos relevantes del proyecto
- [ ] Commit con mensaje descriptivo

---

**Última actualización:** 2025-11-23
**Mantenido por:** Architecture-Analyst, Workspace-Manager
**Directiva:** DIRECTIVA-GESTION-BACKUPS-GITIGNORE.md sección 1.5
