--- 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