merge: quick/add-init-command — agregar comando /init

This commit is contained in:
2026-03-18 22:15:41 +01:00
+262
View File
@@ -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