diff --git a/.claude/commands/init.md b/.claude/commands/init.md new file mode 100644 index 0000000..9af8ea5 --- /dev/null +++ b/.claude/commands/init.md @@ -0,0 +1,262 @@ +--- +version: 1.0.0 +updated: 2025-03-18 +tags: [proyecto, setup, configuracion] +--- + +# Command: init + +Inicializa la configuración de Claude para un repositorio. Solicita al usuario que explique cómo funciona su repo, analiza la estructura y genera un archivo `CLAUDE.md` con instrucciones personalizadas. + +## Para el usuario + +### Cuándo usar este comando + +- Al configurar Claude Code por primera vez en un repositorio +- Cuando quieras regenerar las instrucciones de Claude para el proyecto +- Después de cambios significativos en la arquitectura del proyecto + +### Sintaxis + +```bash +/init +``` + +### Ejemplos + +**Ejemplo 1:** +```bash +/init +``` + +Claude te preguntará sobre tu proyecto y generará `.claude/CLAUDE.md` automáticamente. + +## Para Claude + +### Precondiciones + +Verificar antes de ejecutar: + +- [ ] Estamos en la raíz de un repositorio git +- [ ] Existe la carpeta `.claude/` + +### Inputs + +Este comando es interactivo. Claude debe recopilar la siguiente información del usuario: + +- `descripcion_proyecto`: Qué hace el proyecto, su propósito principal +- `stack_tecnologico`: Lenguajes, frameworks, herramientas principales +- `estructura_directorios`: Cómo está organizado el código (si el usuario quiere explicarlo) +- `convenciones`: Reglas de código, estilo, naming conventions +- `flujos_trabajo`: Cómo se trabaja (branches, PRs, deploys) +- `comandos_importantes`: Scripts o comandos que Claude debe conocer +- `restricciones`: Cosas que Claude NO debe hacer en este proyecto + +### Flujo obligatorio + +#### 1. Verificar que estamos en un repo git + +```bash +git rev-parse --is-inside-work-tree +``` + +Si falla, informar al usuario que debe ejecutar desde un repositorio git. + +#### 2. Analizar la estructura del repositorio + +Ejecutar análisis automático para entender el proyecto: + +```bash +# Estructura de directorios (primer nivel) +ls -la + +# Archivos de configuración comunes +ls -la package.json go.mod Cargo.toml requirements.txt pyproject.toml 2>/dev/null + +# Estructura de carpetas principales +find . -maxdepth 2 -type d -not -path '*/\.*' | head -30 + +# README si existe +cat README.md 2>/dev/null | head -50 +``` + +#### 3. Solicitar información al usuario + +Hacer las siguientes preguntas AL USUARIO (no asumas, pregunta): + +**Pregunta 1 - Descripción del proyecto:** +``` +Cuéntame sobre tu proyecto: +- ¿Qué hace? +- ¿Cuál es su propósito principal? +``` + +**Pregunta 2 - Stack tecnológico:** +``` +¿Qué tecnologías usa el proyecto? +- Lenguajes de programación +- Frameworks principales +- Base de datos (si aplica) +- Otras herramientas importantes +``` + +**Pregunta 3 - Convenciones de código:** +``` +¿Hay convenciones específicas que deba seguir? +- Estilo de código +- Naming conventions +- Patrones de diseño preferidos +- Estructura de archivos +``` + +**Pregunta 4 - Flujo de trabajo:** +``` +¿Cómo es el flujo de trabajo del proyecto? +- ¿Cómo se manejan las ramas? (trunk-based, gitflow, etc.) +- ¿Hay proceso de PR/review? +- ¿Cómo se hace deploy? +``` + +**Pregunta 5 - Comandos importantes:** +``` +¿Qué comandos debo conocer? +- Build +- Test +- Lint +- Deploy +- Otros scripts útiles +``` + +**Pregunta 6 - Restricciones:** +``` +¿Hay algo que NO deba hacer en este proyecto? +- Archivos que no tocar +- Patrones a evitar +- Dependencias prohibidas +- Cualquier otra restricción +``` + +#### 4. Generar el archivo CLAUDE.md + +Con la información recopilada, generar el archivo `.claude/CLAUDE.md` con la siguiente estructura: + +```markdown +# Instrucciones para Claude - [Nombre del Proyecto] + +## Descripción del proyecto + +[Descripción proporcionada por el usuario] + +## Stack tecnológico + +- [Lista de tecnologías] + +## Estructura del proyecto + +[Estructura analizada + explicaciones del usuario] + +## Convenciones + +### Código +- [Convenciones de código] + +### Git +- [Flujo de trabajo con git] + +## Comandos importantes + +| Comando | Descripción | +|---------|-------------| +| `comando` | descripción | + +## Restricciones + +- [Lista de cosas que Claude NO debe hacer] + +## Notas adicionales + +[Cualquier otra información relevante] +``` + +#### 5. Mostrar el archivo generado y confirmar + +Mostrar el contenido completo al usuario: + +```bash +cat .claude/CLAUDE.md +``` + +Preguntar: + +``` +He generado el archivo CLAUDE.md con las instrucciones para este proyecto. + +¿Te parece bien? +- Si es correcto: se hará commit y push automáticamente +- Si necesitas ajustes: puedes editarlo y luego ejecutar /git:push +``` + +**Esperar respuesta del usuario:** + +- Si responde **SI** / afirmativo → continuar al paso 6 +- Si responde **NO** / necesita cambios → **STOP** y decir: "Edita el archivo y cuando estés listo ejecuta `/git:push`" + +#### 6. Ejecutar git:push automáticamente + +Una vez confirmado por el usuario, ejecutar `/git:push` para: + +1. Crear rama `quick/init-claude-md` +2. Commitear `.claude/CLAUDE.md` +3. Mergear a master +4. Push a remoto + +### Verificación final + +```bash +cat .claude/CLAUDE.md +``` + +Informar al usuario: + +``` +✓ CLAUDE.md generado e integrado a master + +Claude ahora tiene instrucciones específicas para este proyecto. +El archivo está en: .claude/CLAUDE.md + +Para actualizar las instrucciones en el futuro, ejecuta /init nuevamente. +``` + +## Convenciones + +- **Preguntar, no asumir**: Siempre solicitar la información al usuario, no inventar +- **Analizar primero**: Usar el análisis automático como contexto, pero priorizar lo que dice el usuario +- **Estructura clara**: El CLAUDE.md debe ser fácil de leer y mantener +- **No duplicar**: Si ya existe información en README.md, referenciarla en lugar de copiarla + +## Troubleshooting + +### Error: "No es un repositorio git" + +**Causa:** Se ejecutó fuera de un repositorio git + +**Solución:** +```bash +git init +``` + +### Error: "No existe .claude/" + +**Causa:** La carpeta .claude no fue creada + +**Solución:** +```bash +mkdir -p .claude +``` + +## Reglas críticas + +- **SIEMPRE preguntar al usuario**: Este comando es interactivo, no generar contenido sin input del usuario +- **Confirmar antes de guardar**: Mostrar el CLAUDE.md generado y esperar aprobación +- **Respetar la información del usuario**: Lo que dice el usuario tiene prioridad sobre lo que se analiza automáticamente +- **No sobrescribir sin avisar**: Si ya existe CLAUDE.md con contenido, advertir antes de sobrescribir