feat: agregar comando /init para configuración de Claude
Añade el comando /init que permite inicializar la configuración de Claude para un repositorio. El comando es interactivo y solicita al usuario información sobre el proyecto para generar un archivo CLAUDE.md personalizado. Flujo del comando: - Verifica que estamos en un repo git - Analiza la estructura del repositorio automáticamente - Pregunta al usuario sobre descripción, stack, convenciones, flujos y restricciones - Genera .claude/CLAUDE.md con la información recopilada - Confirma con el usuario antes de guardar - Ejecuta git:push automáticamente si el usuario aprueba Esto facilita que Claude entienda el contexto específico de cada proyecto.
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user