claude-agent-framework 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +128 -0
- package/bin/claude-framework +3 -0
- package/framework/agents/design-lead.md +240 -0
- package/framework/agents/product-owner.md +179 -0
- package/framework/agents/tech-lead.md +226 -0
- package/framework/commands/ayuda.md +127 -0
- package/framework/commands/a/303/261adir.md +98 -0
- package/framework/commands/backup.md +397 -0
- package/framework/commands/cambiar.md +110 -0
- package/framework/commands/cloud.md +457 -0
- package/framework/commands/code.md +142 -0
- package/framework/commands/debug.md +334 -0
- package/framework/commands/deploy.md +383 -0
- package/framework/commands/deshacer.md +120 -0
- package/framework/commands/estado.md +218 -0
- package/framework/commands/explica.md +227 -0
- package/framework/commands/feature.md +120 -0
- package/framework/commands/git.md +427 -0
- package/framework/commands/historial.md +202 -0
- package/framework/commands/learn.md +408 -0
- package/framework/commands/movil.md +245 -0
- package/framework/commands/nuevo.md +118 -0
- package/framework/commands/plan.md +134 -0
- package/framework/commands/prd.md +113 -0
- package/framework/commands/probar.md +148 -0
- package/framework/commands/revisar.md +208 -0
- package/framework/commands/seeds.md +230 -0
- package/framework/commands/seguridad.md +226 -0
- package/framework/commands/tasks.md +157 -0
- package/framework/skills/architecture/algorithms.md +970 -0
- package/framework/skills/architecture/clean-code.md +1080 -0
- package/framework/skills/architecture/design-patterns.md +1984 -0
- package/framework/skills/architecture/functional-programming.md +972 -0
- package/framework/skills/architecture/solid.md +991 -0
- package/framework/skills/cloud/cloud-aws.md +848 -0
- package/framework/skills/cloud/cloud-azure.md +931 -0
- package/framework/skills/cloud/cloud-gcp.md +848 -0
- package/framework/skills/cloud/message-queues.md +1229 -0
- package/framework/skills/core/accessibility.md +401 -0
- package/framework/skills/core/api.md +474 -0
- package/framework/skills/core/authentication.md +306 -0
- package/framework/skills/core/authorization.md +388 -0
- package/framework/skills/core/background-jobs.md +341 -0
- package/framework/skills/core/caching.md +473 -0
- package/framework/skills/core/code-review.md +341 -0
- package/framework/skills/core/controllers.md +290 -0
- package/framework/skills/core/cua.md +285 -0
- package/framework/skills/core/documentation.md +472 -0
- package/framework/skills/core/file-uploads.md +351 -0
- package/framework/skills/core/hotwire-native.md +296 -0
- package/framework/skills/core/hotwire.md +278 -0
- package/framework/skills/core/i18n.md +334 -0
- package/framework/skills/core/imports-exports.md +750 -0
- package/framework/skills/core/infrastructure.md +337 -0
- package/framework/skills/core/models.md +228 -0
- package/framework/skills/core/notifications.md +672 -0
- package/framework/skills/core/payments.md +581 -0
- package/framework/skills/core/performance.md +361 -0
- package/framework/skills/core/rails-scaffold.md +131 -0
- package/framework/skills/core/search.md +518 -0
- package/framework/skills/core/security.md +565 -0
- package/framework/skills/core/seeds.md +307 -0
- package/framework/skills/core/seo.md +542 -0
- package/framework/skills/core/testing.md +393 -0
- package/framework/skills/core/views.md +260 -0
- package/framework/skills/core/websockets.md +564 -0
- package/framework/skills/data/advanced-sql.md +1204 -0
- package/framework/skills/data/nosql.md +1141 -0
- package/framework/skills/devops/containers-advanced.md +1237 -0
- package/framework/skills/devops/debugging.md +834 -0
- package/framework/skills/devops/git-workflow.md +752 -0
- package/framework/skills/devops/networking.md +932 -0
- package/framework/skills/devops/shell-scripting.md +1132 -0
- package/framework/sub-agents/architecture-patterns-agent.md +1450 -0
- package/framework/sub-agents/cloud-agent.md +677 -0
- package/framework/sub-agents/data.md +504 -0
- package/framework/sub-agents/debugging-agent.md +554 -0
- package/framework/sub-agents/devops.md +483 -0
- package/framework/sub-agents/docs.md +176 -0
- package/framework/sub-agents/frontend-dev.md +349 -0
- package/framework/sub-agents/git-workflow-agent.md +697 -0
- package/framework/sub-agents/integrations.md +630 -0
- package/framework/sub-agents/native-dev.md +434 -0
- package/framework/sub-agents/qa.md +138 -0
- package/framework/sub-agents/rails-dev.md +375 -0
- package/framework/sub-agents/security.md +526 -0
- package/framework/sub-agents/ui.md +437 -0
- package/framework/sub-agents/ux.md +284 -0
- package/framework/templates/api-spec.md +500 -0
- package/framework/templates/component-spec.md +248 -0
- package/framework/templates/feature.json +13 -0
- package/framework/templates/model-spec.md +318 -0
- package/framework/templates/prd-template.md +80 -0
- package/framework/templates/task-plan.md +122 -0
- package/framework/templates/task-user-story.md +52 -0
- package/framework/templates/technical-spec.md +260 -0
- package/framework/templates/user-story.md +95 -0
- package/package.json +42 -0
- package/project-templates/CLAUDE.md +42 -0
- package/project-templates/contexts/architecture.md +25 -0
- package/project-templates/contexts/conventions.md +46 -0
- package/project-templates/contexts/design-system.md +47 -0
- package/project-templates/contexts/requirements.md +38 -0
- package/project-templates/contexts/stack.md +30 -0
- package/project-templates/history/active/models.md +11 -0
- package/project-templates/history/changelog.md +15 -0
- package/project-templates/workspace/.gitkeep +0 -0
- package/src/cli.js +52 -0
- package/src/init.js +104 -0
- package/src/status.js +75 -0
- package/src/update.js +88 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Comando: /deshacer
|
|
2
|
+
|
|
3
|
+
Revierte el último cambio realizado en el proyecto.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Identificar el último cambio
|
|
8
|
+
|
|
9
|
+
1. Lee `.claude/history/changelog.md`
|
|
10
|
+
2. Identifica la entrada más reciente
|
|
11
|
+
3. Muestra al usuario qué se va a deshacer:
|
|
12
|
+
```
|
|
13
|
+
El último cambio fue:
|
|
14
|
+
- Fecha: [fecha]
|
|
15
|
+
- Descripción: [qué se hizo]
|
|
16
|
+
- Archivos afectados: [lista]
|
|
17
|
+
|
|
18
|
+
¿Quieres deshacer este cambio?
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Paso 2: Confirmar con el usuario
|
|
22
|
+
|
|
23
|
+
**Importante**: Siempre pedir confirmación antes de deshacer.
|
|
24
|
+
|
|
25
|
+
Si el usuario confirma, continuar. Si no, preguntar qué cambio específico quiere deshacer.
|
|
26
|
+
|
|
27
|
+
### Paso 3: Verificar disponibilidad de backup
|
|
28
|
+
|
|
29
|
+
1. Buscar en `.claude/history/legacy/` si existe backup del estado anterior
|
|
30
|
+
2. Si existe, usarlo para restaurar
|
|
31
|
+
3. Si no existe, intentar revertir manualmente
|
|
32
|
+
|
|
33
|
+
### Paso 4: Revertir el cambio
|
|
34
|
+
|
|
35
|
+
#### Si hay backup:
|
|
36
|
+
```bash
|
|
37
|
+
# Restaurar archivos desde backup
|
|
38
|
+
cp -r .claude/history/legacy/[timestamp]/* [destino]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
#### Si es un cambio de código simple:
|
|
42
|
+
1. Identificar los archivos modificados
|
|
43
|
+
2. Revertir cada archivo a su estado anterior
|
|
44
|
+
|
|
45
|
+
#### Si es una migración de base de datos:
|
|
46
|
+
```bash
|
|
47
|
+
# Revertir última migración
|
|
48
|
+
rails db:rollback
|
|
49
|
+
|
|
50
|
+
# Si son varias migraciones
|
|
51
|
+
rails db:rollback STEP=n
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Paso 5: Verificar
|
|
55
|
+
|
|
56
|
+
1. Ejecutar tests: `bundle exec rspec`
|
|
57
|
+
2. Verificar que la app funciona
|
|
58
|
+
3. Confirmar visualmente si aplica
|
|
59
|
+
|
|
60
|
+
### Paso 6: Actualizar historial
|
|
61
|
+
|
|
62
|
+
Añadir entrada en `.claude/history/changelog.md`:
|
|
63
|
+
```markdown
|
|
64
|
+
## [Fecha] - Revertido: [Descripción del cambio deshecho]
|
|
65
|
+
|
|
66
|
+
### Motivo
|
|
67
|
+
[Por qué se deshizo - si el usuario lo especificó]
|
|
68
|
+
|
|
69
|
+
### Estado restaurado
|
|
70
|
+
La aplicación ha vuelto al estado anterior a [descripción del cambio].
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Paso 7: Confirmar al usuario
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
✅ Cambio deshecho exitosamente.
|
|
77
|
+
|
|
78
|
+
Se ha revertido: [descripción]
|
|
79
|
+
La aplicación está ahora en el estado de [fecha/descripción del estado anterior].
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Casos especiales
|
|
83
|
+
|
|
84
|
+
### Cambios que no se pueden deshacer fácilmente
|
|
85
|
+
|
|
86
|
+
Algunos cambios son difíciles de revertir:
|
|
87
|
+
- Eliminación de datos de la base de datos
|
|
88
|
+
- Cambios en archivos que luego fueron modificados de nuevo
|
|
89
|
+
- Múltiples cambios interdependientes
|
|
90
|
+
|
|
91
|
+
En estos casos:
|
|
92
|
+
1. Explicar la situación al usuario
|
|
93
|
+
2. Ofrecer alternativas:
|
|
94
|
+
- Crear una nueva versión que "arregle" el problema
|
|
95
|
+
- Restaurar desde un backup de base de datos si existe
|
|
96
|
+
- Recrear manualmente el estado anterior
|
|
97
|
+
|
|
98
|
+
### Deshacer varios cambios
|
|
99
|
+
|
|
100
|
+
Si el usuario quiere deshacer más de un cambio:
|
|
101
|
+
|
|
102
|
+
1. Mostrar lista de cambios recientes
|
|
103
|
+
2. Preguntar cuántos quiere deshacer
|
|
104
|
+
3. Advertir sobre posibles conflictos
|
|
105
|
+
4. Proceder paso a paso, confirmando cada uno
|
|
106
|
+
|
|
107
|
+
## Ejemplos de uso
|
|
108
|
+
|
|
109
|
+
- "Deshaz el último cambio"
|
|
110
|
+
- "Vuelve atrás"
|
|
111
|
+
- "Eso no me gusta, déjalo como estaba"
|
|
112
|
+
- "Revierte los cambios de hoy"
|
|
113
|
+
|
|
114
|
+
## Notas importantes
|
|
115
|
+
|
|
116
|
+
- **Siempre confirmar** antes de deshacer
|
|
117
|
+
- Mantener el historial actualizado
|
|
118
|
+
- Si no hay backup, ser honesto sobre las limitaciones
|
|
119
|
+
- Para cambios de base de datos, verificar que no haya pérdida de datos
|
|
120
|
+
- Si el cambio afectó múltiples archivos, revertir todos juntos
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Comando: /estado
|
|
2
|
+
|
|
3
|
+
Muestra un resumen del estado actual del proyecto.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Recopilar información
|
|
8
|
+
|
|
9
|
+
Leer archivos de contexto:
|
|
10
|
+
- `.claude/contexts/requirements.md`
|
|
11
|
+
- `.claude/contexts/architecture.md`
|
|
12
|
+
- `.claude/history/changelog.md`
|
|
13
|
+
- `.claude/history/active/`
|
|
14
|
+
|
|
15
|
+
### Paso 1b: Verificar Features (si existen)
|
|
16
|
+
|
|
17
|
+
Buscar en `features/*/feature.json`:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ls features/*/feature.json 2>/dev/null
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Si hay features, incluir en el resumen:
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## Features Activos
|
|
27
|
+
|
|
28
|
+
| Feature | Estado | Progreso | Siguiente Acción |
|
|
29
|
+
|---------|--------|----------|------------------|
|
|
30
|
+
| {título} | {status} | {X}% | /plan {path} |
|
|
31
|
+
|
|
32
|
+
### Detalle de Feature en Progreso
|
|
33
|
+
{Para cada feature con status in_progress}
|
|
34
|
+
- Tareas completadas: X/Y
|
|
35
|
+
- Tarea actual: {nombre}
|
|
36
|
+
- Próxima acción: {comando sugerido}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Paso 2: Analizar el proyecto
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Contar modelos
|
|
43
|
+
ls -la app/models/*.rb 2>/dev/null | wc -l
|
|
44
|
+
|
|
45
|
+
# Contar controladores
|
|
46
|
+
ls -la app/controllers/*.rb 2>/dev/null | wc -l
|
|
47
|
+
|
|
48
|
+
# Contar vistas
|
|
49
|
+
find app/views -name "*.erb" 2>/dev/null | wc -l
|
|
50
|
+
|
|
51
|
+
# Contar tests
|
|
52
|
+
find spec -name "*_spec.rb" 2>/dev/null | wc -l
|
|
53
|
+
|
|
54
|
+
# Verificar estado de tests
|
|
55
|
+
bundle exec rspec --format progress 2>/dev/null || echo "Tests no configurados"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Paso 3: Generar resumen
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
# Estado del Proyecto: [Nombre]
|
|
62
|
+
|
|
63
|
+
## Información General
|
|
64
|
+
- **Nombre**: [nombre del proyecto]
|
|
65
|
+
- **Creado**: [fecha de creación]
|
|
66
|
+
- **Última modificación**: [fecha]
|
|
67
|
+
- **Stack**: Rails 8.1 + SQLite3 + Tailwind + Hotwire
|
|
68
|
+
|
|
69
|
+
## Estructura Actual
|
|
70
|
+
|
|
71
|
+
### Modelos (X)
|
|
72
|
+
| Modelo | Campos principales | Relaciones |
|
|
73
|
+
|--------|-------------------|------------|
|
|
74
|
+
| User | email, name | has_many :articles |
|
|
75
|
+
| Article | title, body, published | belongs_to :user |
|
|
76
|
+
|
|
77
|
+
### Controladores (X)
|
|
78
|
+
- `ApplicationController`
|
|
79
|
+
- `SessionsController`
|
|
80
|
+
- `ArticlesController`
|
|
81
|
+
- ...
|
|
82
|
+
|
|
83
|
+
### Vistas (X páginas)
|
|
84
|
+
- Home
|
|
85
|
+
- Artículos (index, show, new, edit)
|
|
86
|
+
- Autenticación (login, registro)
|
|
87
|
+
|
|
88
|
+
## Funcionalidades
|
|
89
|
+
|
|
90
|
+
### ✅ Implementadas
|
|
91
|
+
- [x] Autenticación de usuarios
|
|
92
|
+
- [x] CRUD de artículos
|
|
93
|
+
- [x] Sistema de comentarios
|
|
94
|
+
|
|
95
|
+
### 🔄 En progreso
|
|
96
|
+
- [ ] [Funcionalidad en desarrollo]
|
|
97
|
+
|
|
98
|
+
### 📋 Pendientes
|
|
99
|
+
- [ ] [Funcionalidad planificada]
|
|
100
|
+
- [ ] [Otra funcionalidad]
|
|
101
|
+
|
|
102
|
+
## Tests
|
|
103
|
+
|
|
104
|
+
| Tipo | Total | Pasando | Fallando |
|
|
105
|
+
|------|-------|---------|----------|
|
|
106
|
+
| Modelos | X | X | 0 |
|
|
107
|
+
| Controladores | X | X | 0 |
|
|
108
|
+
| Features | X | X | 0 |
|
|
109
|
+
|
|
110
|
+
**Cobertura estimada**: X%
|
|
111
|
+
|
|
112
|
+
## Últimos Cambios
|
|
113
|
+
|
|
114
|
+
### [Fecha más reciente]
|
|
115
|
+
- [Cambio 1]
|
|
116
|
+
- [Cambio 2]
|
|
117
|
+
|
|
118
|
+
### [Fecha anterior]
|
|
119
|
+
- [Cambio 3]
|
|
120
|
+
|
|
121
|
+
## Métricas del Proyecto
|
|
122
|
+
|
|
123
|
+
| Métrica | Valor |
|
|
124
|
+
|---------|-------|
|
|
125
|
+
| Archivos Ruby | X |
|
|
126
|
+
| Líneas de código | ~X |
|
|
127
|
+
| Migraciones | X |
|
|
128
|
+
| Rutas | X |
|
|
129
|
+
|
|
130
|
+
## Dependencias Principales
|
|
131
|
+
|
|
132
|
+
```ruby
|
|
133
|
+
# Gemfile highlights
|
|
134
|
+
rails (~> 8.1)
|
|
135
|
+
sqlite3
|
|
136
|
+
tailwindcss-rails
|
|
137
|
+
turbo-rails
|
|
138
|
+
stimulus-rails
|
|
139
|
+
pundit
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Próximos Pasos Sugeridos
|
|
143
|
+
|
|
144
|
+
1. [Sugerencia basada en el estado actual]
|
|
145
|
+
2. [Otra sugerencia]
|
|
146
|
+
3. [Tercera sugerencia]
|
|
147
|
+
|
|
148
|
+
## Comandos Útiles
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Iniciar servidor
|
|
152
|
+
bin/dev
|
|
153
|
+
|
|
154
|
+
# Correr tests
|
|
155
|
+
bundle exec rspec
|
|
156
|
+
|
|
157
|
+
# Consola de Rails
|
|
158
|
+
rails console
|
|
159
|
+
|
|
160
|
+
# Ver rutas
|
|
161
|
+
rails routes
|
|
162
|
+
```
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Paso 4: Mostrar al usuario
|
|
166
|
+
|
|
167
|
+
Presentar el resumen de forma amigable:
|
|
168
|
+
|
|
169
|
+
1. Estado general (todo bien / hay problemas)
|
|
170
|
+
2. Lo que está funcionando
|
|
171
|
+
3. Lo que falta por hacer
|
|
172
|
+
4. Recomendaciones
|
|
173
|
+
|
|
174
|
+
## Variantes del comando
|
|
175
|
+
|
|
176
|
+
### `/estado breve`
|
|
177
|
+
Muestra solo un resumen corto:
|
|
178
|
+
```
|
|
179
|
+
📊 Proyecto: [Nombre]
|
|
180
|
+
✅ 5 modelos, 8 controladores, 15 vistas
|
|
181
|
+
🧪 45 tests pasando
|
|
182
|
+
📝 Última modificación: hace 2 horas
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### `/estado modelos`
|
|
186
|
+
Muestra detalle de los modelos y sus relaciones.
|
|
187
|
+
|
|
188
|
+
### `/estado tests`
|
|
189
|
+
Muestra estado detallado de los tests.
|
|
190
|
+
|
|
191
|
+
### `/estado cambios`
|
|
192
|
+
Muestra los últimos cambios realizados.
|
|
193
|
+
|
|
194
|
+
## Información adicional
|
|
195
|
+
|
|
196
|
+
### Si hay problemas
|
|
197
|
+
```
|
|
198
|
+
⚠️ Se detectaron algunos problemas:
|
|
199
|
+
- 3 tests fallando
|
|
200
|
+
- 1 migración pendiente
|
|
201
|
+
|
|
202
|
+
¿Quieres que los arregle?
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Si todo está bien
|
|
206
|
+
```
|
|
207
|
+
✅ Todo en orden
|
|
208
|
+
- Tests pasando
|
|
209
|
+
- Sin migraciones pendientes
|
|
210
|
+
- Sin errores detectados
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Notas importantes
|
|
214
|
+
|
|
215
|
+
- Mantener actualizado el archivo de requirements
|
|
216
|
+
- Actualizar changelog con cada cambio
|
|
217
|
+
- Si falta información, sugerir crearla
|
|
218
|
+
- Usar lenguaje sencillo y visual (emojis para estado)
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Comando: /explica
|
|
2
|
+
|
|
3
|
+
Explica cualquier concepto técnico en lenguaje sencillo.
|
|
4
|
+
|
|
5
|
+
## Flujo de trabajo
|
|
6
|
+
|
|
7
|
+
### Paso 1: Identificar qué explicar
|
|
8
|
+
|
|
9
|
+
El usuario puede preguntar sobre:
|
|
10
|
+
- Conceptos técnicos ("¿qué es una migración?")
|
|
11
|
+
- Código específico ("explícame este archivo")
|
|
12
|
+
- Arquitectura ("¿cómo funciona el sistema de usuarios?")
|
|
13
|
+
- Errores ("¿qué significa este error?")
|
|
14
|
+
- Decisiones ("¿por qué usamos SQLite?")
|
|
15
|
+
|
|
16
|
+
### Paso 2: Adaptar la explicación
|
|
17
|
+
|
|
18
|
+
Usar analogías del mundo real y evitar jerga técnica:
|
|
19
|
+
|
|
20
|
+
#### Ejemplo: Explicar una base de datos
|
|
21
|
+
```
|
|
22
|
+
❌ Técnico:
|
|
23
|
+
"SQLite es un sistema de gestión de bases de datos relacional
|
|
24
|
+
que implementa un motor SQL autónomo, sin servidor, de
|
|
25
|
+
configuración cero y transaccional."
|
|
26
|
+
|
|
27
|
+
✅ Sencillo:
|
|
28
|
+
"La base de datos es como un archivador muy organizado donde
|
|
29
|
+
guardamos toda la información de tu app.
|
|
30
|
+
|
|
31
|
+
Imagina que tienes:
|
|
32
|
+
- Una carpeta para usuarios
|
|
33
|
+
- Una carpeta para artículos
|
|
34
|
+
- Una carpeta para comentarios
|
|
35
|
+
|
|
36
|
+
Cada carpeta tiene fichas ordenadas, y podemos encontrar
|
|
37
|
+
cualquier información rápidamente. SQLite es el encargado
|
|
38
|
+
de mantener todo esto ordenado."
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Paso 3: Estructurar la respuesta
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## [Concepto]
|
|
45
|
+
|
|
46
|
+
### ¿Qué es?
|
|
47
|
+
[Explicación en una o dos frases simples]
|
|
48
|
+
|
|
49
|
+
### ¿Para qué sirve?
|
|
50
|
+
[Propósito práctico]
|
|
51
|
+
|
|
52
|
+
### Analogía
|
|
53
|
+
[Comparación con algo cotidiano]
|
|
54
|
+
|
|
55
|
+
### En tu proyecto
|
|
56
|
+
[Cómo se usa específicamente en este proyecto]
|
|
57
|
+
|
|
58
|
+
### Ejemplo práctico
|
|
59
|
+
[Código o demostración simple si aplica]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Explicaciones comunes
|
|
63
|
+
|
|
64
|
+
### MVC (Model-View-Controller)
|
|
65
|
+
```markdown
|
|
66
|
+
## MVC - Cómo se organiza tu app
|
|
67
|
+
|
|
68
|
+
### ¿Qué es?
|
|
69
|
+
Es una forma de organizar el código en tres partes separadas.
|
|
70
|
+
|
|
71
|
+
### Analogía: Un restaurante
|
|
72
|
+
- **Modelo (Cocina)**: Donde se prepara la comida (los datos)
|
|
73
|
+
- **Vista (Mesa)**: Lo que ve el cliente (las páginas web)
|
|
74
|
+
- **Controlador (Mesero)**: Conecta pedidos con cocina (la lógica)
|
|
75
|
+
|
|
76
|
+
### En tu proyecto
|
|
77
|
+
```
|
|
78
|
+
app/
|
|
79
|
+
├── models/ ← Los datos (User, Article)
|
|
80
|
+
├── views/ ← Las páginas HTML
|
|
81
|
+
└── controllers/ ← La lógica que conecta todo
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Cuando alguien visita /articles:
|
|
85
|
+
1. El controlador recibe la visita
|
|
86
|
+
2. Pide los artículos al modelo
|
|
87
|
+
3. Los envía a la vista para mostrarlos
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Migraciones
|
|
91
|
+
```markdown
|
|
92
|
+
## Migraciones - Cambios en la base de datos
|
|
93
|
+
|
|
94
|
+
### ¿Qué es?
|
|
95
|
+
Son instrucciones para modificar la estructura de tu base de datos.
|
|
96
|
+
|
|
97
|
+
### Analogía: Reformas en una casa
|
|
98
|
+
Imagina que tu base de datos es una casa:
|
|
99
|
+
- Añadir un campo = añadir un enchufe
|
|
100
|
+
- Crear una tabla = construir una habitación nueva
|
|
101
|
+
- Una migración = el plano de la reforma
|
|
102
|
+
|
|
103
|
+
Las migraciones guardan el historial de todos los cambios,
|
|
104
|
+
así que siempre puedes ver qué modificaciones se hicieron.
|
|
105
|
+
|
|
106
|
+
### Ejemplo
|
|
107
|
+
```ruby
|
|
108
|
+
# "Añadir columna 'avatar' a la tabla 'users'"
|
|
109
|
+
add_column :users, :avatar, :string
|
|
110
|
+
```
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Rutas
|
|
114
|
+
```markdown
|
|
115
|
+
## Rutas - Las direcciones de tu app
|
|
116
|
+
|
|
117
|
+
### ¿Qué es?
|
|
118
|
+
Las rutas conectan las URLs con el código que debe ejecutarse.
|
|
119
|
+
|
|
120
|
+
### Analogía: Recepción de un edificio
|
|
121
|
+
Cuando alguien llega y dice "quiero ir a contabilidad",
|
|
122
|
+
el recepcionista le indica el piso y oficina correctos.
|
|
123
|
+
|
|
124
|
+
Las rutas hacen lo mismo:
|
|
125
|
+
- Alguien visita `/articles`
|
|
126
|
+
- Rails lo envía al controlador de artículos
|
|
127
|
+
- Se muestra la lista de artículos
|
|
128
|
+
|
|
129
|
+
### En tu proyecto
|
|
130
|
+
```ruby
|
|
131
|
+
# config/routes.rb
|
|
132
|
+
resources :articles
|
|
133
|
+
# Esto crea automáticamente:
|
|
134
|
+
# GET /articles → ver todos
|
|
135
|
+
# GET /articles/1 → ver uno
|
|
136
|
+
# GET /articles/new → formulario nuevo
|
|
137
|
+
# POST /articles → crear
|
|
138
|
+
# GET /articles/1/edit → formulario editar
|
|
139
|
+
# PATCH /articles/1 → actualizar
|
|
140
|
+
# DELETE /articles/1 → borrar
|
|
141
|
+
```
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Hotwire
|
|
145
|
+
```markdown
|
|
146
|
+
## Hotwire - Páginas rápidas sin JavaScript complejo
|
|
147
|
+
|
|
148
|
+
### ¿Qué es?
|
|
149
|
+
Una forma de hacer páginas web rápidas y dinámicas sin escribir
|
|
150
|
+
mucho JavaScript.
|
|
151
|
+
|
|
152
|
+
### Analogía: Remodelación vs Reconstrucción
|
|
153
|
+
Sin Hotwire: Cada vez que haces clic, se derriba toda la casa
|
|
154
|
+
y se construye de nuevo (la página se recarga completamente).
|
|
155
|
+
|
|
156
|
+
Con Hotwire: Solo se cambia la habitación que necesita cambios
|
|
157
|
+
(se actualiza solo una parte de la página).
|
|
158
|
+
|
|
159
|
+
### Componentes
|
|
160
|
+
- **Turbo Drive**: Hace clics más rápidos automáticamente
|
|
161
|
+
- **Turbo Frames**: Actualiza solo partes de la página
|
|
162
|
+
- **Turbo Streams**: Actualiza varias partes a la vez
|
|
163
|
+
- **Stimulus**: JavaScript simple para interacciones
|
|
164
|
+
|
|
165
|
+
### Ejemplo
|
|
166
|
+
Cuando añades un comentario, solo aparece el comentario nuevo
|
|
167
|
+
sin recargar toda la página.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Variantes del comando
|
|
171
|
+
|
|
172
|
+
### `/explica [concepto]`
|
|
173
|
+
Explica un concepto técnico general.
|
|
174
|
+
|
|
175
|
+
### `/explica [archivo]`
|
|
176
|
+
Explica qué hace un archivo específico.
|
|
177
|
+
|
|
178
|
+
### `/explica [error]`
|
|
179
|
+
Explica qué significa un mensaje de error.
|
|
180
|
+
|
|
181
|
+
### `/explica arquitectura`
|
|
182
|
+
Explica cómo está organizado el proyecto.
|
|
183
|
+
|
|
184
|
+
## Formato de respuesta
|
|
185
|
+
|
|
186
|
+
Para errores:
|
|
187
|
+
```markdown
|
|
188
|
+
## Error: [mensaje de error]
|
|
189
|
+
|
|
190
|
+
### ¿Qué significa?
|
|
191
|
+
[Explicación en lenguaje sencillo]
|
|
192
|
+
|
|
193
|
+
### ¿Por qué ocurre?
|
|
194
|
+
[Causa común]
|
|
195
|
+
|
|
196
|
+
### ¿Cómo solucionarlo?
|
|
197
|
+
[Pasos para arreglarlo]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Para código:
|
|
201
|
+
```markdown
|
|
202
|
+
## Este código hace...
|
|
203
|
+
|
|
204
|
+
### Resumen
|
|
205
|
+
[Una frase explicando el propósito]
|
|
206
|
+
|
|
207
|
+
### Línea por línea
|
|
208
|
+
```ruby
|
|
209
|
+
# Esta línea busca al usuario por su email
|
|
210
|
+
user = User.find_by(email: params[:email])
|
|
211
|
+
|
|
212
|
+
# Esta comprueba si la contraseña es correcta
|
|
213
|
+
if user&.authenticate(params[:password])
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### En contexto
|
|
217
|
+
[Cómo encaja en el resto de la aplicación]
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Notas importantes
|
|
221
|
+
|
|
222
|
+
- Siempre usar lenguaje sencillo
|
|
223
|
+
- Incluir analogías del mundo real
|
|
224
|
+
- Evitar acrónimos sin explicarlos
|
|
225
|
+
- Si algo es complejo, dividirlo en partes
|
|
226
|
+
- Usar ejemplos concretos del proyecto
|
|
227
|
+
- Preguntar si la explicación fue clara
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Comando: /feature
|
|
2
|
+
|
|
3
|
+
Gestiona features del proyecto: crea nuevos, lista existentes, o detecta automáticamente el trabajo pendiente.
|
|
4
|
+
|
|
5
|
+
## Argumentos
|
|
6
|
+
- `description` (opcional): Descripción del feature a crear
|
|
7
|
+
|
|
8
|
+
## Comportamiento
|
|
9
|
+
|
|
10
|
+
### Sin argumentos: Listar y Recomendar
|
|
11
|
+
|
|
12
|
+
1. Buscar `features/*/feature.json`
|
|
13
|
+
2. Mostrar cada feature con: ID, título, estado, progreso, lista de tareas
|
|
14
|
+
3. **Detectar siguiente acción** para features en progreso:
|
|
15
|
+
|
|
16
|
+
| Estado de Tarea | Siguiente Comando |
|
|
17
|
+
|-----------------|-------------------|
|
|
18
|
+
| `defined` | `/plan {task_path}` |
|
|
19
|
+
| `planned` | `/code {task_path}` |
|
|
20
|
+
| `in_progress` | `/code {task_path}` |
|
|
21
|
+
|
|
22
|
+
Buscar la primera tarea no completada (ordenadas por priority) y recomendar el comando apropiado.
|
|
23
|
+
|
|
24
|
+
**Ejemplo de salida:**
|
|
25
|
+
```
|
|
26
|
+
FEATURES DEL PROYECTO
|
|
27
|
+
=====================
|
|
28
|
+
|
|
29
|
+
ID: 2025-12-19-175523-crm-rails
|
|
30
|
+
Título: CRM con Rails y Tailwind
|
|
31
|
+
Estado: in_progress
|
|
32
|
+
Progreso: [███████░░░░░░░░░] 43% (3/7 tareas)
|
|
33
|
+
|
|
34
|
+
Tareas:
|
|
35
|
+
✓ 001 - Setup del Proyecto
|
|
36
|
+
✓ 002 - CRUD de Empresas
|
|
37
|
+
✓ 003 - CRUD de Contactos
|
|
38
|
+
○ 004 - CRUD de Oportunidades (planned) ← PRIMERA PENDIENTE
|
|
39
|
+
○ 005 - Dashboard con Métricas (defined)
|
|
40
|
+
○ 006 - Búsqueda (defined)
|
|
41
|
+
○ 007 - Vista Pipeline (defined)
|
|
42
|
+
|
|
43
|
+
═══════════════════════════════════════════════════════════════
|
|
44
|
+
SIGUIENTE ACCIÓN:
|
|
45
|
+
|
|
46
|
+
/code features/.../tasks/004-crud-oportunidades
|
|
47
|
+
═══════════════════════════════════════════════════════════════
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Si no hay features:**
|
|
51
|
+
```
|
|
52
|
+
No hay features creados todavía.
|
|
53
|
+
|
|
54
|
+
Para crear uno nuevo:
|
|
55
|
+
/feature "Descripción de lo que quieres construir..."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Con descripción: Crear Feature
|
|
59
|
+
|
|
60
|
+
1. **Verificar solapamiento** con features existentes (revisar títulos, descripciones, PRDs)
|
|
61
|
+
- Si hay solapamiento potencial, alertar y pedir confirmación
|
|
62
|
+
2. **Generar ID**: `{YYYY-MM-DD-hhmmss}-{slug}`
|
|
63
|
+
- Slug: palabras clave, lowercase, sin acentos, guiones, max 30 chars
|
|
64
|
+
3. **Crear estructura**:
|
|
65
|
+
```
|
|
66
|
+
features/{id}/
|
|
67
|
+
features/{id}/feature.json
|
|
68
|
+
```
|
|
69
|
+
4. **Crear feature.json** usando template de `.claude/templates/feature.json`:
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"version": "1.0",
|
|
73
|
+
"id": "{id}",
|
|
74
|
+
"title": "{título inferido}",
|
|
75
|
+
"description": "{descripción}",
|
|
76
|
+
"original_request": "{texto exacto del usuario}",
|
|
77
|
+
"created_at": "{ISO timestamp}",
|
|
78
|
+
"updated_at": "{ISO timestamp}",
|
|
79
|
+
"status": "created",
|
|
80
|
+
"progress": 0,
|
|
81
|
+
"current_phase": "initial",
|
|
82
|
+
"tasks": []
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**IMPORTANTE:** El campo `original_request` debe contener el texto EXACTO que el usuario proporcionó, sin modificaciones.
|
|
87
|
+
|
|
88
|
+
5. **Validar** que se creó correctamente
|
|
89
|
+
6. **Actualizar** `.claude/history/changelog.md`
|
|
90
|
+
|
|
91
|
+
## Report de Creación
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Feature creado exitosamente!
|
|
95
|
+
|
|
96
|
+
## Metadata
|
|
97
|
+
id: `{id}`
|
|
98
|
+
created_at: `{timestamp}`
|
|
99
|
+
|
|
100
|
+
## Detalles
|
|
101
|
+
Título: {título}
|
|
102
|
+
Ubicación: features/{id}/
|
|
103
|
+
|
|
104
|
+
## Request Original
|
|
105
|
+
> {original_request}
|
|
106
|
+
|
|
107
|
+
## Análisis de Solapamiento
|
|
108
|
+
Features revisados: {N}
|
|
109
|
+
Solapamientos detectados: {M}
|
|
110
|
+
{lista de solapamientos si hay}
|
|
111
|
+
|
|
112
|
+
## Siguiente Paso
|
|
113
|
+
/prd {id}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Notas importantes
|
|
117
|
+
|
|
118
|
+
- Siempre mostrar el siguiente paso recomendado
|
|
119
|
+
- Mantener el historial actualizado
|
|
120
|
+
- Detectar y alertar sobre solapamientos antes de crear
|