specleap-framework 2.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/.agents/backend.md +419 -0
- package/.agents/frontend.md +577 -0
- package/.agents/producto.md +516 -0
- package/.commands/adoptar.md +323 -0
- package/.commands/ayuda.md +142 -0
- package/.commands/crear-tickets.md +55 -0
- package/.commands/documentar.md +285 -0
- package/.commands/explicar.md +234 -0
- package/.commands/implementar.md +383 -0
- package/.commands/inicio.md +824 -0
- package/.commands/nuevo/README.md +292 -0
- package/.commands/nuevo/questions-base.yaml +320 -0
- package/.commands/nuevo/responses-example.yaml +53 -0
- package/.commands/planificar.md +253 -0
- package/.commands/refinar.md +306 -0
- package/LICENSE +21 -0
- package/README.md +603 -0
- package/SETUP.md +351 -0
- package/install.sh +152 -0
- package/package.json +60 -0
- package/proyectos/_template/.gitkeep +1 -0
- package/proyectos/_template/ANEXOS.md +21 -0
- package/proyectos/_template/CONTRATO.md +26 -0
- package/proyectos/_template/context/.gitkeep +1 -0
- package/rules/development-rules.md +113 -0
- package/rules/environment-protection.md +97 -0
- package/rules/git-workflow.md +142 -0
- package/rules/session-protocol.md +121 -0
- package/scripts/README.md +129 -0
- package/scripts/analyze-project.sh +826 -0
- package/scripts/create-asana-tasks.sh +133 -0
- package/scripts/detect-project-type.sh +141 -0
- package/scripts/estimate-effort.sh +290 -0
- package/scripts/generate-asana-structure.sh +262 -0
- package/scripts/generate-contract.sh +360 -0
- package/scripts/generate-contrato.sh +555 -0
- package/scripts/install-git-hooks.sh +141 -0
- package/scripts/install-skills.sh +130 -0
- package/scripts/lib/asana-utils.sh +191 -0
- package/scripts/lib/jira-project-utils.sh +222 -0
- package/scripts/lib/questions.json +831 -0
- package/scripts/lib/render-contrato.py +195 -0
- package/scripts/lib/validate.sh +325 -0
- package/scripts/parse-contrato.sh +190 -0
- package/scripts/setup-mcp.sh +654 -0
- package/scripts/test-cuestionario.sh +428 -0
- package/setup.sh +458 -0
|
@@ -0,0 +1,824 @@
|
|
|
1
|
+
# Comando: inicio (Protocolo "Hola")
|
|
2
|
+
|
|
3
|
+
**Trigger:** Usuario escribe exactamente "Hola" (case-insensitive)
|
|
4
|
+
|
|
5
|
+
**Objetivo:** Iniciar sesión de trabajo cargando el contexto del proyecto y determinando qué tarea realizar.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Flujo Completo
|
|
10
|
+
|
|
11
|
+
### Paso 1: Listar Proyectos Disponibles
|
|
12
|
+
|
|
13
|
+
Ejecuta bash para listar proyectos:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ls proyectos/
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Output esperado:**
|
|
20
|
+
```
|
|
21
|
+
_template
|
|
22
|
+
app-tienda
|
|
23
|
+
api-backend
|
|
24
|
+
dashboard-analytics
|
|
25
|
+
...
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Paso 2: Saludar y Presentar Proyectos
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
¡Hola! 👋 Bienvenido a SpecLeap.
|
|
32
|
+
|
|
33
|
+
**Proyectos disponibles:**
|
|
34
|
+
|
|
35
|
+
[Listar proyectos excluyendo _template]
|
|
36
|
+
|
|
37
|
+
**¿Quieres crear un proyecto nuevo, o trabajar con uno existente que aún no esté registrado?**
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Paso 3: Esperar Respuesta del Usuario
|
|
41
|
+
|
|
42
|
+
Usar `AskUserQuestion` (modal interactivo):
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
## ¿Qué tipo de trabajo realizarás hoy?
|
|
46
|
+
|
|
47
|
+
○ **Proyecto nuevo** — Crear proyecto desde cero
|
|
48
|
+
○ **Proyecto existente** — Trabajar en un proyecto ya creado
|
|
49
|
+
○ **Adoptar proyecto legacy** — Integrar proyecto existente en SpecLeap
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Flujo A: Proyecto Nuevo (Cuestionario Interactivo)
|
|
55
|
+
|
|
56
|
+
### Paso A1: Nombre del Proyecto
|
|
57
|
+
|
|
58
|
+
Usar `AskUserQuestion`:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## Proyecto
|
|
62
|
+
|
|
63
|
+
¿Cuál es el nombre del nuevo proyecto?
|
|
64
|
+
|
|
65
|
+
○ **Nombre con guiones** (Recomendado)
|
|
66
|
+
Ejemplo: mi-proyecto-web, app-mobile, api-backend
|
|
67
|
+
|
|
68
|
+
○ **Nombre simple**
|
|
69
|
+
Ejemplo: portfolio, dashboard, ecommerce
|
|
70
|
+
|
|
71
|
+
○ **Other**
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Esperar respuesta (ej: "Nombre con guiones")
|
|
75
|
+
|
|
76
|
+
Luego preguntar:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
¿Cuál es el nombre exacto del proyecto?
|
|
80
|
+
|
|
81
|
+
Por ejemplo: `mi-proyecto-web`, `app-tienda`, `api-users`, `landing-corporativa`
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Esperar nombre (ej: "casa-de-peli")
|
|
85
|
+
|
|
86
|
+
**Validar nombre:**
|
|
87
|
+
- Solo minúsculas, números y guiones
|
|
88
|
+
- Mínimo 3 caracteres
|
|
89
|
+
- Máximo 50 caracteres
|
|
90
|
+
- Pattern: `^[a-z0-9-]+$`
|
|
91
|
+
|
|
92
|
+
Si es inválido:
|
|
93
|
+
```markdown
|
|
94
|
+
❌ **Error:** El nombre debe tener solo minúsculas, números y guiones.
|
|
95
|
+
|
|
96
|
+
Ejemplo válido: `casa-de-peli`, `mi-tienda-online`, `api-rest-v2`
|
|
97
|
+
|
|
98
|
+
Por favor, intenta de nuevo:
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Si es válido, continuar.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### Paso A2: Iniciar Cuestionario (58 preguntas)
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
Perfecto, vamos a crear el proyecto **casa-de-peli**.
|
|
109
|
+
|
|
110
|
+
Para generar el CONTRATO completo, necesito hacerte **58 preguntas** sobre el proyecto.
|
|
111
|
+
|
|
112
|
+
⏱️ **Tiempo estimado:** 15-20 minutos
|
|
113
|
+
💾 **Guardado automático:** Cada 10 preguntas
|
|
114
|
+
♻️ **Puedes pausar y continuar después**
|
|
115
|
+
|
|
116
|
+
**¿Comenzamos?**
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Esperar confirmación (usuario responde: "Sí", "Adelante", "Ok", etc.)
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Paso A3: Preguntas (Leer desde questions.json)
|
|
124
|
+
|
|
125
|
+
**IMPORTANTE:** Leer `scripts/lib/questions.json` y procesar las preguntas en orden.
|
|
126
|
+
|
|
127
|
+
#### Estructura de cada pregunta:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"id": "project.type",
|
|
132
|
+
"number": 1,
|
|
133
|
+
"section": "Tipo de Proyecto",
|
|
134
|
+
"text": "¿Qué tipo de proyecto es?",
|
|
135
|
+
"type": "select",
|
|
136
|
+
"options": ["nuevo", "existente"],
|
|
137
|
+
"required": true,
|
|
138
|
+
"help": "nuevo = desde cero | existente = adoptar proyecto legacy",
|
|
139
|
+
"example": "nuevo"
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Renderizar pregunta:
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
### Pregunta 1/58 — Tipo de Proyecto
|
|
147
|
+
|
|
148
|
+
**¿Qué tipo de proyecto es?**
|
|
149
|
+
|
|
150
|
+
○ nuevo
|
|
151
|
+
○ existente
|
|
152
|
+
|
|
153
|
+
💡 **Ayuda:** nuevo = desde cero | existente = adoptar proyecto legacy
|
|
154
|
+
📝 **Ejemplo:** nuevo
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Si la pregunta tiene `skip_if`, evaluar la condición:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
"skip_if": {
|
|
161
|
+
"project.type": "nuevo"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Si la condición se cumple (project.type == "nuevo"), **saltar esta pregunta**.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
#### Validaciones por tipo:
|
|
170
|
+
|
|
171
|
+
**type: string**
|
|
172
|
+
- Validar `pattern` si existe (regex)
|
|
173
|
+
- Validar `min_length` / `max_length`
|
|
174
|
+
- Si tiene `auto_suggest`, ofrecer sugerencia según respuesta previa
|
|
175
|
+
|
|
176
|
+
**type: select**
|
|
177
|
+
- Validar que la respuesta esté en `options`
|
|
178
|
+
- Mostrar opciones como lista enumerada
|
|
179
|
+
|
|
180
|
+
**type: multiselect**
|
|
181
|
+
- Validar que todas las opciones seleccionadas estén en `options`
|
|
182
|
+
- Separador: coma (`,`)
|
|
183
|
+
|
|
184
|
+
**type: boolean**
|
|
185
|
+
- Aceptar: `true`, `false`, `sí`, `no`, `s`, `n`, `yes`, `y`, `1`, `0`
|
|
186
|
+
- Normalizar a `true` / `false`
|
|
187
|
+
|
|
188
|
+
**type: number**
|
|
189
|
+
- Validar que sea número
|
|
190
|
+
- Validar `min` / `max` si existen
|
|
191
|
+
|
|
192
|
+
**type: array**
|
|
193
|
+
- Separar por coma
|
|
194
|
+
- Validar `min_items` / `max_items`
|
|
195
|
+
|
|
196
|
+
**type: text**
|
|
197
|
+
- Validar `max_length` si existe
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
#### Guardado parcial (cada 10 preguntas):
|
|
202
|
+
|
|
203
|
+
Cuando `number % 10 == 0`:
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
✅ **Checkpoint: 10/58 preguntas completadas**
|
|
207
|
+
|
|
208
|
+
💾 Progreso guardado. Puedes pausar aquí y continuar después.
|
|
209
|
+
|
|
210
|
+
**¿Continuamos?**
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### Paso A4: Generar CONTRATO.md
|
|
216
|
+
|
|
217
|
+
Una vez completadas las 58 preguntas:
|
|
218
|
+
|
|
219
|
+
```markdown
|
|
220
|
+
🎉 **¡Cuestionario completado!**
|
|
221
|
+
|
|
222
|
+
**Respuestas recopiladas:** 58
|
|
223
|
+
**Guardando datos...**
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Leer `proyectos/_template/CONTRATO.md` como plantilla base.
|
|
227
|
+
|
|
228
|
+
**Generar CONTRATO.md dinámicamente:**
|
|
229
|
+
|
|
230
|
+
```yaml
|
|
231
|
+
---
|
|
232
|
+
meta:
|
|
233
|
+
project: [respuesta: project.name]
|
|
234
|
+
display_name: [respuesta: project.display_name]
|
|
235
|
+
responsible: [respuesta: project.responsible]
|
|
236
|
+
created_at: [fecha actual]
|
|
237
|
+
version: 1.0
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
# [project.display_name]
|
|
241
|
+
|
|
242
|
+
## Identidad del Proyecto
|
|
243
|
+
|
|
244
|
+
**Objetivo:** [respuesta: identity.objective]
|
|
245
|
+
|
|
246
|
+
**Problema que resuelve:** [respuesta: identity.problem_solved]
|
|
247
|
+
|
|
248
|
+
**Usuario objetivo:** [respuesta: identity.target_audience]
|
|
249
|
+
|
|
250
|
+
**Referencias/Competidores:** [respuesta: identity.competitors]
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Stack Tecnológico
|
|
255
|
+
|
|
256
|
+
### Backend
|
|
257
|
+
- **Framework:** [respuesta: stack.backend.framework] [respuesta: stack.backend.version]
|
|
258
|
+
- **Lenguaje:** [respuesta: stack.backend.language]
|
|
259
|
+
|
|
260
|
+
### Base de Datos
|
|
261
|
+
- **Motor:** [respuesta: stack.database.engine] [respuesta: stack.database.version]
|
|
262
|
+
|
|
263
|
+
### Frontend
|
|
264
|
+
- **Framework:** [respuesta: stack.frontend.framework]
|
|
265
|
+
- **Lenguaje:** [respuesta: stack.frontend.language]
|
|
266
|
+
- **Build Tool:** [respuesta: stack.frontend.build_tool]
|
|
267
|
+
- **UI Library:** [respuesta: stack.frontend.ui_library]
|
|
268
|
+
|
|
269
|
+
### DevOps
|
|
270
|
+
- **Hosting:** [respuesta: stack.devops.hosting]
|
|
271
|
+
- **CI/CD:** [respuesta: stack.devops.ci_cd]
|
|
272
|
+
- **Contenedores:** [respuesta: stack.devops.containers]
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Funcionalidades
|
|
277
|
+
|
|
278
|
+
### Principales (Core)
|
|
279
|
+
[Listar respuesta: features.core, cada item como bullet point]
|
|
280
|
+
|
|
281
|
+
### Secundarias (Nice-to-have)
|
|
282
|
+
[Listar respuesta: features.secondary, cada item como bullet point]
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Sistema de Usuarios
|
|
287
|
+
|
|
288
|
+
**Autenticación:**
|
|
289
|
+
- Métodos: [respuesta: features.auth.methods]
|
|
290
|
+
- 2FA: [respuesta: features.auth.two_factor]
|
|
291
|
+
|
|
292
|
+
**Registro:** [respuesta: users.registration]
|
|
293
|
+
|
|
294
|
+
**Roles:** [respuesta: users.roles]
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Panel de Administración
|
|
299
|
+
|
|
300
|
+
**Habilitado:** [respuesta: features.admin_panel.enabled]
|
|
301
|
+
**Nivel:** [respuesta: features.admin_panel.level]
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Subida de Archivos
|
|
306
|
+
|
|
307
|
+
**Habilitado:** [respuesta: features.file_uploads.enabled]
|
|
308
|
+
**Almacenamiento:** [respuesta: features.file_uploads.storage]
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Sistema de Pagos
|
|
313
|
+
|
|
314
|
+
**Habilitado:** [respuesta: features.payments.enabled]
|
|
315
|
+
**Proveedores:** [respuesta: features.payments.providers]
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Notificaciones
|
|
320
|
+
|
|
321
|
+
- **Email:** [respuesta: features.notifications.email]
|
|
322
|
+
- **Push:** [respuesta: features.notifications.push]
|
|
323
|
+
- **In-App:** [respuesta: features.notifications.in_app]
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Diseño
|
|
328
|
+
|
|
329
|
+
- **Estilo visual:** [respuesta: design.visual_style]
|
|
330
|
+
- **Color primario:** [respuesta: design.primary_color]
|
|
331
|
+
- **Modo oscuro:** [respuesta: design.dark_mode]
|
|
332
|
+
- **Responsive:** [respuesta: design.responsive]
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Arquitectura
|
|
337
|
+
|
|
338
|
+
- **Patrón:** [respuesta: architecture.pattern]
|
|
339
|
+
- **Separación:** [respuesta: architecture.separation]
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Despliegue
|
|
344
|
+
|
|
345
|
+
- **HTTPS:** [respuesta: deployment.ssl]
|
|
346
|
+
- **Dominio:** [respuesta: deployment.custom_domain]
|
|
347
|
+
- **Entornos:** [respuesta: deployment.environments]
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Seguridad
|
|
352
|
+
|
|
353
|
+
- **Nivel:** [respuesta: security.level]
|
|
354
|
+
- **GDPR Compliant:** [respuesta: security.gdpr_compliant]
|
|
355
|
+
- **Datos Sensibles:** [respuesta: security.sensitive_data]
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Rendimiento
|
|
360
|
+
|
|
361
|
+
- **Tiempo de carga objetivo:** [respuesta: performance.load_time_target]
|
|
362
|
+
- **Tiempo respuesta API objetivo:** [respuesta: performance.api_response_target]
|
|
363
|
+
- **Usuarios concurrentes esperados:** [respuesta: performance.concurrent_users]
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Testing
|
|
368
|
+
|
|
369
|
+
- **Tests unitarios:** [respuesta: testing.unit]
|
|
370
|
+
- **Tests de integración:** [respuesta: testing.integration]
|
|
371
|
+
- **Tests E2E:** [respuesta: testing.e2e]
|
|
372
|
+
- **Cobertura objetivo:** [respuesta: testing.coverage_target]%
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## Restricciones
|
|
377
|
+
|
|
378
|
+
**Plazo de entrega:** [respuesta: constraints.time_limit]
|
|
379
|
+
|
|
380
|
+
**Fuera de Alcance:**
|
|
381
|
+
[Listar respuesta: constraints.out_of_scope, cada item con ❌]
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## Problemas Potenciales
|
|
386
|
+
|
|
387
|
+
[Generar automáticamente según las respuestas del cuestionario. Ejemplos:]
|
|
388
|
+
|
|
389
|
+
- Si `performance.concurrent_users` > 1000: Escalabilidad — Necesario balanceador de carga
|
|
390
|
+
- Si `features.payments.enabled` == true: Cumplimiento PCI-DSS
|
|
391
|
+
- Si `security.gdpr_compliant` == true: Implementar política de privacidad y consentimiento
|
|
392
|
+
- Si `features.file_uploads.enabled` == true: Validación de tipos de archivo y límites de tamaño
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
### Paso A5: Mostrar Preview del CONTRATO
|
|
398
|
+
|
|
399
|
+
```markdown
|
|
400
|
+
✅ **CONTRATO.md generado**
|
|
401
|
+
|
|
402
|
+
**Preview:**
|
|
403
|
+
|
|
404
|
+
[Mostrar CONTRATO completo o primeras 50 líneas + "..."]
|
|
405
|
+
|
|
406
|
+
**¿Quieres:**
|
|
407
|
+
- **A) Aceptar** — Crear proyecto con este CONTRATO
|
|
408
|
+
- **B) Editar** — Modificar algo antes de crear
|
|
409
|
+
- **C) Cancelar** — No crear el proyecto
|
|
410
|
+
|
|
411
|
+
Responde A, B o C:
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
### Paso A6: Si el usuario acepta (opción A)
|
|
417
|
+
|
|
418
|
+
Crear estructura del proyecto:
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Copiar template
|
|
422
|
+
cp -r proyectos/_template proyectos/casa-de-peli
|
|
423
|
+
|
|
424
|
+
# Guardar CONTRATO.md
|
|
425
|
+
# (Usar Write con el contenido generado)
|
|
426
|
+
|
|
427
|
+
# Crear context/ con información específica
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Generar archivos adicionales:
|
|
431
|
+
|
|
432
|
+
**context/brief.md:**
|
|
433
|
+
```markdown
|
|
434
|
+
# Brief — casa-de-peli
|
|
435
|
+
|
|
436
|
+
**Proyecto:** [project.display_name]
|
|
437
|
+
**Responsable:** [project.responsible]
|
|
438
|
+
**Fecha creación:** [fecha actual]
|
|
439
|
+
|
|
440
|
+
## Resumen Ejecutivo
|
|
441
|
+
|
|
442
|
+
[Tomar identity.objective y identity.problem_solved para generar resumen de 2-3 párrafos]
|
|
443
|
+
|
|
444
|
+
## Alcance
|
|
445
|
+
|
|
446
|
+
**Funcionalidades Core:**
|
|
447
|
+
[Listar features.core]
|
|
448
|
+
|
|
449
|
+
**Fuera de Alcance:**
|
|
450
|
+
[Listar constraints.out_of_scope]
|
|
451
|
+
|
|
452
|
+
## Entregables
|
|
453
|
+
|
|
454
|
+
- Aplicación web funcional
|
|
455
|
+
- Panel de administración
|
|
456
|
+
- Documentación técnica
|
|
457
|
+
- Tests automatizados
|
|
458
|
+
|
|
459
|
+
## Timeline
|
|
460
|
+
|
|
461
|
+
**Plazo:** [constraints.time_limit]
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**context/tech-stack.md:**
|
|
465
|
+
```markdown
|
|
466
|
+
# Tech Stack — casa-de-peli
|
|
467
|
+
|
|
468
|
+
## Backend
|
|
469
|
+
|
|
470
|
+
- **Framework:** [stack.backend.framework] [stack.backend.version]
|
|
471
|
+
- **Lenguaje:** [stack.backend.language]
|
|
472
|
+
|
|
473
|
+
## Base de Datos
|
|
474
|
+
|
|
475
|
+
- **Motor:** [stack.database.engine] [stack.database.version]
|
|
476
|
+
|
|
477
|
+
## Frontend
|
|
478
|
+
|
|
479
|
+
- **Framework:** [stack.frontend.framework]
|
|
480
|
+
- **Lenguaje:** [stack.frontend.language]
|
|
481
|
+
- **Build Tool:** [stack.frontend.build_tool]
|
|
482
|
+
- **UI Library:** [stack.frontend.ui_library]
|
|
483
|
+
|
|
484
|
+
## DevOps
|
|
485
|
+
|
|
486
|
+
- **Hosting:** [stack.devops.hosting]
|
|
487
|
+
- **CI/CD:** [stack.devops.ci_cd]
|
|
488
|
+
- **Contenedores:** [stack.devops.containers]
|
|
489
|
+
|
|
490
|
+
## Versiones
|
|
491
|
+
|
|
492
|
+
[Generar tabla con todas las versiones]
|
|
493
|
+
|
|
494
|
+
| Tecnología | Versión |
|
|
495
|
+
|-----------|---------|
|
|
496
|
+
| [stack.backend.framework] | [stack.backend.version] |
|
|
497
|
+
| [stack.database.engine] | [stack.database.version] |
|
|
498
|
+
| ... | ... |
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
**context/architecture.md:**
|
|
502
|
+
```markdown
|
|
503
|
+
# Arquitectura — casa-de-peli
|
|
504
|
+
|
|
505
|
+
## Patrón Arquitectónico
|
|
506
|
+
|
|
507
|
+
**Seleccionado:** [architecture.pattern]
|
|
508
|
+
|
|
509
|
+
## Separación de Capas
|
|
510
|
+
|
|
511
|
+
**Tipo:** [architecture.separation]
|
|
512
|
+
|
|
513
|
+
[Generar diagrama Mermaid según el patrón seleccionado]
|
|
514
|
+
|
|
515
|
+
## Flujo de Datos
|
|
516
|
+
|
|
517
|
+
[Generar descripción del flujo según el patrón]
|
|
518
|
+
|
|
519
|
+
## Decisiones Arquitectónicas
|
|
520
|
+
|
|
521
|
+
1. **Backend/Frontend:** [architecture.separation]
|
|
522
|
+
- Justificación: [Generar según la elección]
|
|
523
|
+
|
|
524
|
+
2. **Base de Datos:** [stack.database.engine]
|
|
525
|
+
- Justificación: [Generar según la elección]
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
**context/conventions.md:**
|
|
529
|
+
```markdown
|
|
530
|
+
# Convenciones — casa-de-peli
|
|
531
|
+
|
|
532
|
+
## Nomenclatura
|
|
533
|
+
|
|
534
|
+
[Generar convenciones según stack.backend.framework]
|
|
535
|
+
|
|
536
|
+
## Estructura de Carpetas
|
|
537
|
+
|
|
538
|
+
[Generar según stack.backend.framework + stack.frontend.framework]
|
|
539
|
+
|
|
540
|
+
## Commits
|
|
541
|
+
|
|
542
|
+
**Formato:** [tipo]: [descripción corta]
|
|
543
|
+
|
|
544
|
+
**Tipos:**
|
|
545
|
+
- feat: Nueva funcionalidad
|
|
546
|
+
- fix: Corrección de bug
|
|
547
|
+
- docs: Documentación
|
|
548
|
+
- test: Tests
|
|
549
|
+
- refactor: Refactorización
|
|
550
|
+
- chore: Tareas de mantenimiento
|
|
551
|
+
|
|
552
|
+
## Code Style
|
|
553
|
+
|
|
554
|
+
[Generar según lenguajes seleccionados]
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
**context/decisions.md:**
|
|
558
|
+
```markdown
|
|
559
|
+
# Decisiones — casa-de-peli
|
|
560
|
+
|
|
561
|
+
**Fecha:** [fecha actual]
|
|
562
|
+
|
|
563
|
+
## Stack Tecnológico
|
|
564
|
+
|
|
565
|
+
### Backend: [stack.backend.framework]
|
|
566
|
+
**Razón:** [Generar justificación]
|
|
567
|
+
|
|
568
|
+
### Frontend: [stack.frontend.framework]
|
|
569
|
+
**Razón:** [Generar justificación]
|
|
570
|
+
|
|
571
|
+
### Base de Datos: [stack.database.engine]
|
|
572
|
+
**Razón:** [Generar justificación]
|
|
573
|
+
|
|
574
|
+
## Arquitectura
|
|
575
|
+
|
|
576
|
+
### Patrón: [architecture.pattern]
|
|
577
|
+
**Razón:** [Generar justificación]
|
|
578
|
+
|
|
579
|
+
## Seguridad
|
|
580
|
+
|
|
581
|
+
### Nivel: [security.level]
|
|
582
|
+
**Razón:** [Generar justificación]
|
|
583
|
+
|
|
584
|
+
## Testing
|
|
585
|
+
|
|
586
|
+
### Cobertura: [testing.coverage_target]%
|
|
587
|
+
**Razón:** [Generar justificación]
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**README.md:**
|
|
591
|
+
```markdown
|
|
592
|
+
# [project.display_name]
|
|
593
|
+
|
|
594
|
+
> [identity.objective]
|
|
595
|
+
|
|
596
|
+
## Stack
|
|
597
|
+
|
|
598
|
+
- Backend: [stack.backend.framework] [stack.backend.version]
|
|
599
|
+
- Frontend: [stack.frontend.framework]
|
|
600
|
+
- Database: [stack.database.engine] [stack.database.version]
|
|
601
|
+
|
|
602
|
+
## Instalación
|
|
603
|
+
|
|
604
|
+
[Generar instrucciones según el stack]
|
|
605
|
+
|
|
606
|
+
## Desarrollo
|
|
607
|
+
|
|
608
|
+
[Generar comandos según el stack]
|
|
609
|
+
|
|
610
|
+
## Testing
|
|
611
|
+
|
|
612
|
+
[Generar comandos de testing]
|
|
613
|
+
|
|
614
|
+
## Licencia
|
|
615
|
+
|
|
616
|
+
[Pendiente definir]
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
---
|
|
620
|
+
|
|
621
|
+
### Paso A7: Confirmar Creación
|
|
622
|
+
|
|
623
|
+
```markdown
|
|
624
|
+
✅ **Proyecto casa-de-peli creado exitosamente**
|
|
625
|
+
|
|
626
|
+
**Estructura creada:**
|
|
627
|
+
|
|
628
|
+
```
|
|
629
|
+
proyectos/casa-de-peli/
|
|
630
|
+
├── CONTRATO.md (🔒 inmutable — 58 preguntas procesadas)
|
|
631
|
+
├── ANEXOS.md (✏️ editable)
|
|
632
|
+
├── README.md
|
|
633
|
+
├── .coderabbit.yaml
|
|
634
|
+
└── context/
|
|
635
|
+
├── brief.md
|
|
636
|
+
├── architecture.md
|
|
637
|
+
├── tech-stack.md
|
|
638
|
+
├── conventions.md
|
|
639
|
+
└── decisions.md
|
|
640
|
+
```
|
|
641
|
+
|
|
642
|
+
**Próximos pasos:**
|
|
643
|
+
|
|
644
|
+
1. **Revisar CONTRATO.md:**
|
|
645
|
+
Abre `CONTRATO.md` para revisar el contrato completo
|
|
646
|
+
|
|
647
|
+
2. **Crear tickets en Asana:**
|
|
648
|
+
Lee `.commandscrear-tickets.md` y ejecuta
|
|
649
|
+
|
|
650
|
+
3. **Empezar desarrollo:**
|
|
651
|
+
Elige un ticket:
|
|
652
|
+
- `refinar SCRUM-XX` — Refinar user story
|
|
653
|
+
- `planificar SCRUM-XX` — Generar plan de implementación
|
|
654
|
+
- `implementar @plan.md` — Ejecutar el plan
|
|
655
|
+
|
|
656
|
+
**¿Quieres crear ahora los tickets en Asana?**
|
|
657
|
+
|
|
658
|
+
[Sí] [No]
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
### Paso A8: Respuesta a creación de tickets
|
|
662
|
+
|
|
663
|
+
#### Si el usuario responde "Sí":
|
|
664
|
+
|
|
665
|
+
```markdown
|
|
666
|
+
✅ Perfecto. Voy a crear los tickets ahora...
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
**Acción:** Leer `.commandscrear-tickets.md` y ejecutar las instrucciones paso a paso.
|
|
670
|
+
|
|
671
|
+
#### Si el usuario responde "No":
|
|
672
|
+
|
|
673
|
+
```markdown
|
|
674
|
+
✅ Entendido. Puedes crear los tickets cuando quieras.
|
|
675
|
+
|
|
676
|
+
**Para crearlos después, escribe:**
|
|
677
|
+
|
|
678
|
+
```
|
|
679
|
+
Lee .commandscrear-tickets.md y ejecuta
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
**O desde terminal:**
|
|
683
|
+
|
|
684
|
+
```bash
|
|
685
|
+
cd proyectos/[nombre-proyecto]
|
|
686
|
+
../../scripts/generate-asana-structure.sh CONTRATO.md
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
**Otros comandos disponibles:**
|
|
690
|
+
|
|
691
|
+
| Comando | Cómo ejecutarlo |
|
|
692
|
+
|---------|-----------------|
|
|
693
|
+
| Crear tickets Asana | `Lee .commandscrear-tickets.md y ejecuta` |
|
|
694
|
+
| Refinar story | `Lee .commandsrefinar.md y ejecuta` |
|
|
695
|
+
| Planificar implementación | `Lee .commandsplanificar.md y ejecuta` |
|
|
696
|
+
| Implementar | `Lee .commandsimplementar.md y ejecuta` |
|
|
697
|
+
| Adoptar proyecto legacy | `Lee .commandsadoptar.md y ejecuta` |
|
|
698
|
+
|
|
699
|
+
¿Hay algo más en lo que pueda ayudarte?
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
704
|
+
## Flujo B: Proyecto Existente (Trabajar en proyecto ya creado)
|
|
705
|
+
|
|
706
|
+
### Paso B1: Seleccionar Proyecto
|
|
707
|
+
|
|
708
|
+
```markdown
|
|
709
|
+
**¿En cuál proyecto vas a trabajar?**
|
|
710
|
+
|
|
711
|
+
Proyectos disponibles:
|
|
712
|
+
1. app-tienda
|
|
713
|
+
2. api-backend
|
|
714
|
+
3. dashboard-analytics
|
|
715
|
+
|
|
716
|
+
Responde con el número o el nombre:
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
### Paso B2: Cargar Contexto
|
|
720
|
+
|
|
721
|
+
Leer archivos del proyecto:
|
|
722
|
+
|
|
723
|
+
1. `proyectos/[proyecto]/CONTRATO.md`
|
|
724
|
+
2. `proyectos/[proyecto]/ANEXOS.md` (si existe)
|
|
725
|
+
3. `proyectos/[proyecto]/context/brief.md`
|
|
726
|
+
4. `proyectos/[proyecto]/context/architecture.md`
|
|
727
|
+
5. `proyectos/[proyecto]/context/tech-stack.md`
|
|
728
|
+
6. `proyectos/[proyecto]/context/conventions.md`
|
|
729
|
+
|
|
730
|
+
### Paso B3: Confirmar Carga
|
|
731
|
+
|
|
732
|
+
```markdown
|
|
733
|
+
✅ **Proyecto [nombre] cargado correctamente**
|
|
734
|
+
|
|
735
|
+
**Contexto:**
|
|
736
|
+
- Stack: [Laravel 11 + React 18 + PostgreSQL]
|
|
737
|
+
- Arquitectura: [MVC Separado]
|
|
738
|
+
- Módulos principales: [Lista de funcionalidades core]
|
|
739
|
+
|
|
740
|
+
**¿Qué vas a hacer?**
|
|
741
|
+
- **A) Desarrollo** — Trabajar en código
|
|
742
|
+
- **B) Documentación** — Actualizar docs
|
|
743
|
+
|
|
744
|
+
Responde A o B:
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
### Paso B4A: Si elige Desarrollo
|
|
748
|
+
|
|
749
|
+
```markdown
|
|
750
|
+
**¿Qué ticket vas a trabajar?**
|
|
751
|
+
|
|
752
|
+
Opciones:
|
|
753
|
+
- Dime el ID del ticket (ejemplo: SCRUM-23)
|
|
754
|
+
- O describe la tarea que vas a hacer
|
|
755
|
+
|
|
756
|
+
**Comandos disponibles:**
|
|
757
|
+
- `refinar SCRUM-XX` — Refinar user story
|
|
758
|
+
- `planificar SCRUM-XX` — Generar plan de implementación
|
|
759
|
+
- `implementar @plan.md` — Ejecutar el plan
|
|
760
|
+
- `explicar [concepto]` — Explicar código o arquitectura
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
### Paso B4B: Si elige Documentación
|
|
764
|
+
|
|
765
|
+
```markdown
|
|
766
|
+
**¿Qué documentación vas a actualizar?**
|
|
767
|
+
|
|
768
|
+
Archivos del proyecto:
|
|
769
|
+
- `CONTRATO.md` (🔒 inmutable — solo consulta)
|
|
770
|
+
- `ANEXOS.md` (agregar módulos nuevos)
|
|
771
|
+
- `context/brief.md` (resumen ejecutivo)
|
|
772
|
+
- `context/architecture.md` (decisiones arquitectónicas)
|
|
773
|
+
- `context/tech-stack.md` (stack y versiones)
|
|
774
|
+
- `context/conventions.md` (patrones de código)
|
|
775
|
+
- `context/decisions.md` (log de decisiones)
|
|
776
|
+
|
|
777
|
+
**Comando disponible:**
|
|
778
|
+
- `documentar` — Actualizar documentación técnica
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
---
|
|
782
|
+
|
|
783
|
+
## Flujo C: Adoptar Proyecto Legacy
|
|
784
|
+
|
|
785
|
+
Ver `.commandsadoptar.md` para el flujo completo de adopción.
|
|
786
|
+
|
|
787
|
+
---
|
|
788
|
+
|
|
789
|
+
## Reglas Críticas
|
|
790
|
+
|
|
791
|
+
1. **"Hola" es la única palabra clave** — No aceptar "hola como estas", solo "Hola" exacto.
|
|
792
|
+
|
|
793
|
+
2. **SIEMPRE listar proyectos** — Ejecutar bash para descubrir proyectos, no asumir.
|
|
794
|
+
|
|
795
|
+
3. **Cargar contexto COMPLETO** — Leer todos los archivos de context/ antes de continuar.
|
|
796
|
+
|
|
797
|
+
4. **58 preguntas OBLIGATORIAS para proyectos nuevos** — No saltarlas. Son necesarias para CONTRATO completo.
|
|
798
|
+
|
|
799
|
+
5. **Validar TODAS las respuestas** — Según el tipo y validaciones en questions.json.
|
|
800
|
+
|
|
801
|
+
6. **Guardar checkpoint cada 10 preguntas** — Para permitir pausar y continuar.
|
|
802
|
+
|
|
803
|
+
7. **NO modificar CONTRATO.md** después de aceptado — Solo agregar en ANEXOS.md.
|
|
804
|
+
|
|
805
|
+
8. **Confirmar antes de crear** — Mostrar preview del CONTRATO y esperar aprobación.
|
|
806
|
+
|
|
807
|
+
---
|
|
808
|
+
|
|
809
|
+
## Herramientas Disponibles
|
|
810
|
+
|
|
811
|
+
- **Read** — Leer `scripts/lib/questions.json` y archivos de contexto
|
|
812
|
+
- **Write** — Crear archivos del nuevo proyecto
|
|
813
|
+
- **AskUserQuestion** — Modales interactivos (usar cuando esté disponible)
|
|
814
|
+
- **Bash** — Listar proyectos, copiar template
|
|
815
|
+
|
|
816
|
+
---
|
|
817
|
+
|
|
818
|
+
## Referencias
|
|
819
|
+
|
|
820
|
+
- **Preguntas:** `scripts/lib/questions.json` (58 preguntas completas)
|
|
821
|
+
- **Template:** `proyectos/_template/CONTRATO.md`
|
|
822
|
+
- **Agentes:** `.agents/backend.md`, `.agents/frontend.md`, `.agents/producto.md`
|
|
823
|
+
- **Otros Comandos:** `.commandsrefinar.md`, `.commandsplanificar.md`, etc.
|
|
824
|
+
- **Standards:** `specs/base-standards.mdc`
|