merge: quick/add-init-command — agregar comando /init
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