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,292 @@
|
|
|
1
|
+
# Sistema de Cuestionario Adaptativo — SpecLeap
|
|
2
|
+
|
|
3
|
+
Este directorio contiene el sistema de preguntas adaptativas para generar CONTRATOs completos y personalizados según el tipo de proyecto.
|
|
4
|
+
|
|
5
|
+
## 📁 Estructura
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
.commands/nuevo/
|
|
9
|
+
├── README.md ← Este archivo
|
|
10
|
+
├── questions-base.yaml ← Preguntas obligatorias (todos los proyectos)
|
|
11
|
+
├── questions-ecommerce.yaml ← Preguntas específicas e-commerce
|
|
12
|
+
├── questions-saas.yaml ← Preguntas específicas SaaS
|
|
13
|
+
├── questions-api.yaml ← Preguntas específicas API/Backend
|
|
14
|
+
├── questions-cms.yaml ← Preguntas específicas CMS/Blog
|
|
15
|
+
├── questions-auth.yaml ← Preguntas específicas autenticación
|
|
16
|
+
├── questions-admin.yaml ← Preguntas específicas panel admin
|
|
17
|
+
├── questions-storage.yaml ← Preguntas específicas almacenamiento
|
|
18
|
+
├── questions-oauth.yaml ← Preguntas específicas OAuth
|
|
19
|
+
├── questions-aws.yaml ← Preguntas específicas AWS
|
|
20
|
+
├── responses-example.yaml ← Ejemplo de archivo de respuestas
|
|
21
|
+
└── responses-schema.json ← JSON Schema para validación
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 🔄 Flujo de Funcionamiento
|
|
25
|
+
|
|
26
|
+
### 1. Inicio del Cuestionario
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Usuario ejecuta
|
|
30
|
+
/nuevo
|
|
31
|
+
|
|
32
|
+
# Claude carga questions-base.yaml
|
|
33
|
+
# Realiza 18-20 preguntas obligatorias
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. Detección de Tipo de Proyecto
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Analiza respuestas con detect-project-type.sh
|
|
40
|
+
./scripts/detect-project-type.sh responses.yaml
|
|
41
|
+
|
|
42
|
+
# Output: ecommerce auth admin storage
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 3. Carga de Preguntas Condicionales
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Según tipos detectados, carga archivos adicionales:
|
|
49
|
+
# - questions-ecommerce.yaml
|
|
50
|
+
# - questions-auth.yaml
|
|
51
|
+
# - questions-admin.yaml
|
|
52
|
+
# - questions-storage.yaml
|
|
53
|
+
|
|
54
|
+
# Total: 18 base + 30-40 condicionales = 48-58 preguntas
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 4. Generación del CONTRATO
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Genera CONTRATO.md con frontmatter YAML
|
|
61
|
+
./scripts/generate-contract.sh responses.yaml
|
|
62
|
+
|
|
63
|
+
# Output: proyectos/<nombre>/CONTRATO.md
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## 📋 Formato questions-*.yaml
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
version: "1.0"
|
|
70
|
+
category: <nombre>
|
|
71
|
+
description: "Descripción del conjunto de preguntas"
|
|
72
|
+
|
|
73
|
+
questions:
|
|
74
|
+
- id: unique_id
|
|
75
|
+
section: <identity|stack|features|deployment|etc>
|
|
76
|
+
text: "¿Pregunta?"
|
|
77
|
+
type: <text|textarea|select|boolean|multiline>
|
|
78
|
+
required: true|false
|
|
79
|
+
options: # Solo para type=select
|
|
80
|
+
- value: valor
|
|
81
|
+
label: "Etiqueta"
|
|
82
|
+
triggers: [questions-oauth] # Activa otros archivos
|
|
83
|
+
follow_up: # Pregunta de seguimiento
|
|
84
|
+
- condition: "valor"
|
|
85
|
+
question: "¿Pregunta adicional?"
|
|
86
|
+
type: text
|
|
87
|
+
depends_on: # Solo mostrar si...
|
|
88
|
+
- other_question_id: [valor1, valor2]
|
|
89
|
+
validation: "regex" # Validación opcional
|
|
90
|
+
help: "Texto de ayuda"
|
|
91
|
+
default: valor_por_defecto
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 🎯 Tipos de Pregunta
|
|
95
|
+
|
|
96
|
+
### `text`
|
|
97
|
+
Respuesta corta (1 línea)
|
|
98
|
+
|
|
99
|
+
```yaml
|
|
100
|
+
- id: project_name
|
|
101
|
+
type: text
|
|
102
|
+
validation: "^[a-z0-9-]+$"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `textarea`
|
|
106
|
+
Respuesta larga (múltiples líneas)
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
- id: project_objective
|
|
110
|
+
type: textarea
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `select`
|
|
114
|
+
Opción única de una lista
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
- id: backend_framework
|
|
118
|
+
type: select
|
|
119
|
+
options:
|
|
120
|
+
- value: laravel
|
|
121
|
+
label: "Laravel (PHP)"
|
|
122
|
+
- value: nodejs
|
|
123
|
+
label: "Node.js"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### `boolean`
|
|
127
|
+
Sí/No
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
- id: needs_ssl
|
|
131
|
+
type: boolean
|
|
132
|
+
default: true
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### `multiline`
|
|
136
|
+
Lista de items (uno por línea)
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
- id: core_features
|
|
140
|
+
type: multiline
|
|
141
|
+
help: |
|
|
142
|
+
Una funcionalidad por línea:
|
|
143
|
+
- Login de usuarios
|
|
144
|
+
- CRUD de productos
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 🔍 Detectores de Tipo
|
|
148
|
+
|
|
149
|
+
El sistema analiza las respuestas en busca de patrones (keywords) para determinar qué preguntas condicionales cargar.
|
|
150
|
+
|
|
151
|
+
### Patrones Detectados
|
|
152
|
+
|
|
153
|
+
| Tipo | Keywords | Archivo Cargado |
|
|
154
|
+
|------|----------|-----------------|
|
|
155
|
+
| **E-commerce** | pago, compra, carrito, stripe, paypal, producto | `questions-ecommerce.yaml` |
|
|
156
|
+
| **SaaS** | suscripción, plan, billing, mensualidad, trial | `questions-saas.yaml` |
|
|
157
|
+
| **API** | api, endpoint, rest, graphql, webhook | `questions-api.yaml` |
|
|
158
|
+
| **CMS** | blog, post, artículo, contenido, cms | `questions-cms.yaml` |
|
|
159
|
+
| **Realtime** | chat, mensaje, notificación, websocket | `questions-realtime.yaml` |
|
|
160
|
+
| **Auth** | login, usuario, registro, perfil | `questions-auth.yaml` |
|
|
161
|
+
|
|
162
|
+
### Configuración en questions-base.yaml
|
|
163
|
+
|
|
164
|
+
```yaml
|
|
165
|
+
analyzers:
|
|
166
|
+
detect_project_type:
|
|
167
|
+
triggers:
|
|
168
|
+
- keywords: [pago, compra, carrito]
|
|
169
|
+
activate: questions-ecommerce
|
|
170
|
+
- keywords: [blog, post, artículo]
|
|
171
|
+
activate: questions-cms
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## 📝 Archivo de Respuestas (responses.yaml)
|
|
175
|
+
|
|
176
|
+
Las respuestas se guardan en formato YAML plano:
|
|
177
|
+
|
|
178
|
+
```yaml
|
|
179
|
+
# Respuestas básicas
|
|
180
|
+
project_name: mi-proyecto
|
|
181
|
+
project_objective: Descripción del proyecto
|
|
182
|
+
backend_framework: laravel
|
|
183
|
+
frontend_framework: react
|
|
184
|
+
|
|
185
|
+
# Listas
|
|
186
|
+
core_features:
|
|
187
|
+
- Funcionalidad 1
|
|
188
|
+
- Funcionalidad 2
|
|
189
|
+
|
|
190
|
+
# Booleanos
|
|
191
|
+
use_typescript: true
|
|
192
|
+
needs_ssl: true
|
|
193
|
+
|
|
194
|
+
# Opciones
|
|
195
|
+
target_audience: public
|
|
196
|
+
visual_style: modern
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## 🏗️ Generación del CONTRATO
|
|
200
|
+
|
|
201
|
+
El script `generate-contract.sh`:
|
|
202
|
+
|
|
203
|
+
1. Lee `responses.yaml`
|
|
204
|
+
2. Carga template `proyectos/_template/CONTRATO.md`
|
|
205
|
+
3. Reemplaza placeholders con valores reales
|
|
206
|
+
4. Genera frontmatter YAML con metadata
|
|
207
|
+
5. Crea archivos `context/*.md`
|
|
208
|
+
6. Guarda todo en `proyectos/<nombre>/`
|
|
209
|
+
|
|
210
|
+
### Frontmatter Generado
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
---
|
|
214
|
+
project:
|
|
215
|
+
name: "mi-proyecto"
|
|
216
|
+
display_name: "Mi Proyecto"
|
|
217
|
+
created_at: "2026-02-24"
|
|
218
|
+
status: draft
|
|
219
|
+
version: "1.0"
|
|
220
|
+
|
|
221
|
+
stack:
|
|
222
|
+
backend:
|
|
223
|
+
framework: "laravel"
|
|
224
|
+
frontend:
|
|
225
|
+
framework: "react"
|
|
226
|
+
database:
|
|
227
|
+
engine: "postgresql"
|
|
228
|
+
|
|
229
|
+
features:
|
|
230
|
+
core: [...]
|
|
231
|
+
auth:
|
|
232
|
+
enabled: true
|
|
233
|
+
methods: [email_password]
|
|
234
|
+
---
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## 🧪 Testing
|
|
238
|
+
|
|
239
|
+
### Probar el Sistema Completo
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# 1. Analizar respuestas de ejemplo
|
|
243
|
+
cd /path/to/specleap
|
|
244
|
+
./scripts/detect-project-type.sh .commands/nuevo/responses-example.yaml
|
|
245
|
+
|
|
246
|
+
# Output esperado:
|
|
247
|
+
# ✓ Detectado: Autenticación de usuarios
|
|
248
|
+
# ✓ Detectado: Panel de administración
|
|
249
|
+
# ✓ Detectado: Almacenamiento en la nube
|
|
250
|
+
# ✓ Detectado: Stack PHP/Laravel
|
|
251
|
+
# ✓ Detectado: Frontend React
|
|
252
|
+
|
|
253
|
+
# 2. Generar CONTRATO
|
|
254
|
+
./scripts/generate-contract.sh .commands/nuevo/responses-example.yaml
|
|
255
|
+
|
|
256
|
+
# Output esperado:
|
|
257
|
+
# ✅ CONTRATO.md generado exitosamente
|
|
258
|
+
# 📁 Archivos creados:
|
|
259
|
+
# - proyectos/casa-de-peli/CONTRATO.md
|
|
260
|
+
# - proyectos/casa-de-peli/context/brief.md
|
|
261
|
+
# - ...
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Validar CONTRATO Generado
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# Ver frontmatter
|
|
268
|
+
head -n 100 proyectos/casa-de-peli/CONTRATO.md
|
|
269
|
+
|
|
270
|
+
# Ver estructura completa
|
|
271
|
+
cat proyectos/casa-de-peli/CONTRATO.md
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## 🔧 Próximos Pasos (Fase 2)
|
|
275
|
+
|
|
276
|
+
- [ ] Crear archivos `questions-*.yaml` para cada tipo
|
|
277
|
+
- [ ] Implementar orquestador `ask-questions.sh`
|
|
278
|
+
- [ ] Integrar con comando `/nuevo` en Claude
|
|
279
|
+
- [ ] Testing con proyecto real
|
|
280
|
+
|
|
281
|
+
## 🔧 Próximos Pasos (Fase 3)
|
|
282
|
+
|
|
283
|
+
- [ ] Parser CONTRATO → Jira (`parse-contract-to-jira.sh`)
|
|
284
|
+
- [ ] Integración con `planificar`
|
|
285
|
+
- [ ] Sincronización bidireccional Jira ↔ CONTRATO
|
|
286
|
+
|
|
287
|
+
## 📚 Referencias
|
|
288
|
+
|
|
289
|
+
- Template CONTRATO: `proyectos/_template/CONTRATO.md`
|
|
290
|
+
- Script detector: `scripts/detect-project-type.sh`
|
|
291
|
+
- Script generador: `scripts/generate-contract.sh`
|
|
292
|
+
- Ejemplo respuestas: `.commands/nuevo/responses-example.yaml`
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
# PREGUNTAS BASE (Obligatorias para todos los proyectos)
|
|
2
|
+
# Estas preguntas determinan el tipo de proyecto y activan preguntas condicionales
|
|
3
|
+
|
|
4
|
+
version: "1.0"
|
|
5
|
+
category: base
|
|
6
|
+
description: "Preguntas fundamentales que aplican a cualquier tipo de proyecto"
|
|
7
|
+
|
|
8
|
+
questions:
|
|
9
|
+
# ===== IDENTIDAD DEL PROYECTO =====
|
|
10
|
+
- id: project_name
|
|
11
|
+
section: identity
|
|
12
|
+
text: "¿Cuál es el nombre del proyecto?"
|
|
13
|
+
type: text
|
|
14
|
+
required: true
|
|
15
|
+
validation: "^[a-z0-9-]+$"
|
|
16
|
+
help: "Usa formato slug: mi-proyecto-web (solo minúsculas, números y guiones)"
|
|
17
|
+
|
|
18
|
+
- id: project_objective
|
|
19
|
+
section: identity
|
|
20
|
+
text: "¿Cuál es el objetivo principal del proyecto?"
|
|
21
|
+
type: textarea
|
|
22
|
+
required: true
|
|
23
|
+
help: "Describe en 1-2 frases qué problema resuelve o qué necesidad cubre"
|
|
24
|
+
|
|
25
|
+
- id: target_audience
|
|
26
|
+
section: identity
|
|
27
|
+
text: "¿Quién es el público objetivo?"
|
|
28
|
+
type: select
|
|
29
|
+
required: true
|
|
30
|
+
options:
|
|
31
|
+
- value: personal
|
|
32
|
+
label: "Uso personal"
|
|
33
|
+
- value: team
|
|
34
|
+
label: "Equipo/empresa específica"
|
|
35
|
+
- value: public
|
|
36
|
+
label: "Público general"
|
|
37
|
+
- value: niche
|
|
38
|
+
label: "Nicho específico"
|
|
39
|
+
follow_up:
|
|
40
|
+
- condition: "niche"
|
|
41
|
+
question: "Especifica el nicho:"
|
|
42
|
+
type: text
|
|
43
|
+
|
|
44
|
+
- id: problem_solved
|
|
45
|
+
section: identity
|
|
46
|
+
text: "¿Qué problema específico resuelve?"
|
|
47
|
+
type: textarea
|
|
48
|
+
required: true
|
|
49
|
+
|
|
50
|
+
- id: competitors
|
|
51
|
+
section: identity
|
|
52
|
+
text: "¿Hay algún competidor o referencia? (Ejemplo: 'Como Trello pero para...')"
|
|
53
|
+
type: text
|
|
54
|
+
required: false
|
|
55
|
+
|
|
56
|
+
# ===== STACK TECNOLÓGICO BASE =====
|
|
57
|
+
- id: backend_framework
|
|
58
|
+
section: stack
|
|
59
|
+
text: "¿Qué framework de backend prefieres?"
|
|
60
|
+
type: select
|
|
61
|
+
required: true
|
|
62
|
+
options:
|
|
63
|
+
- value: laravel
|
|
64
|
+
label: "Laravel (PHP)"
|
|
65
|
+
triggers: [questions-php]
|
|
66
|
+
- value: nodejs
|
|
67
|
+
label: "Node.js (Express/NestJS)"
|
|
68
|
+
triggers: [questions-nodejs]
|
|
69
|
+
- value: python
|
|
70
|
+
label: "Python (Django/FastAPI)"
|
|
71
|
+
triggers: [questions-python]
|
|
72
|
+
- value: rails
|
|
73
|
+
label: "Ruby on Rails"
|
|
74
|
+
triggers: [questions-ruby]
|
|
75
|
+
- value: other
|
|
76
|
+
label: "Otro"
|
|
77
|
+
follow_up:
|
|
78
|
+
- condition: "other"
|
|
79
|
+
question: "Especifica el framework:"
|
|
80
|
+
type: text
|
|
81
|
+
|
|
82
|
+
- id: frontend_framework
|
|
83
|
+
section: stack
|
|
84
|
+
text: "¿Qué framework de frontend prefieres?"
|
|
85
|
+
type: select
|
|
86
|
+
required: true
|
|
87
|
+
options:
|
|
88
|
+
- value: react
|
|
89
|
+
label: "React"
|
|
90
|
+
triggers: [questions-react]
|
|
91
|
+
- value: vue
|
|
92
|
+
label: "Vue.js"
|
|
93
|
+
triggers: [questions-vue]
|
|
94
|
+
- value: angular
|
|
95
|
+
label: "Angular"
|
|
96
|
+
- value: svelte
|
|
97
|
+
label: "Svelte"
|
|
98
|
+
- value: blade
|
|
99
|
+
label: "Blade (solo Laravel)"
|
|
100
|
+
requires: {backend_framework: laravel}
|
|
101
|
+
- value: none
|
|
102
|
+
label: "Sin frontend (API/Backend solo)"
|
|
103
|
+
triggers: [questions-api]
|
|
104
|
+
- value: other
|
|
105
|
+
label: "Otro"
|
|
106
|
+
|
|
107
|
+
- id: use_typescript
|
|
108
|
+
section: stack
|
|
109
|
+
text: "¿Usar TypeScript en el frontend?"
|
|
110
|
+
type: boolean
|
|
111
|
+
required: true
|
|
112
|
+
depends_on:
|
|
113
|
+
- frontend_framework: [react, vue, angular, svelte]
|
|
114
|
+
default: true
|
|
115
|
+
|
|
116
|
+
- id: database
|
|
117
|
+
section: stack
|
|
118
|
+
text: "¿Qué base de datos prefieres?"
|
|
119
|
+
type: select
|
|
120
|
+
required: true
|
|
121
|
+
options:
|
|
122
|
+
- value: postgresql
|
|
123
|
+
label: "PostgreSQL"
|
|
124
|
+
- value: mysql
|
|
125
|
+
label: "MySQL/MariaDB"
|
|
126
|
+
- value: mongodb
|
|
127
|
+
label: "MongoDB"
|
|
128
|
+
triggers: [questions-nosql]
|
|
129
|
+
- value: sqlite
|
|
130
|
+
label: "SQLite"
|
|
131
|
+
- value: other
|
|
132
|
+
label: "Otro"
|
|
133
|
+
|
|
134
|
+
# ===== FUNCIONALIDADES CORE =====
|
|
135
|
+
- id: core_features
|
|
136
|
+
section: features
|
|
137
|
+
text: "Lista las funcionalidades CORE (MVP mínimo viable)"
|
|
138
|
+
type: multiline
|
|
139
|
+
required: true
|
|
140
|
+
help: |
|
|
141
|
+
Una funcionalidad por línea. Ejemplos:
|
|
142
|
+
- Login de usuarios
|
|
143
|
+
- CRUD de productos
|
|
144
|
+
- Búsqueda de contenido
|
|
145
|
+
- Carrito de compras
|
|
146
|
+
analyzer: detect_project_type
|
|
147
|
+
|
|
148
|
+
- id: secondary_features
|
|
149
|
+
section: features
|
|
150
|
+
text: "Lista las funcionalidades SECUNDARIAS (nice-to-have)"
|
|
151
|
+
type: multiline
|
|
152
|
+
required: false
|
|
153
|
+
help: |
|
|
154
|
+
Funcionalidades deseables pero no críticas para el MVP.
|
|
155
|
+
Ejemplos:
|
|
156
|
+
- Notificaciones email
|
|
157
|
+
- Modo oscuro
|
|
158
|
+
- Exportar a PDF
|
|
159
|
+
|
|
160
|
+
- id: needs_auth
|
|
161
|
+
section: features
|
|
162
|
+
text: "¿El proyecto necesita autenticación de usuarios?"
|
|
163
|
+
type: select
|
|
164
|
+
required: true
|
|
165
|
+
options:
|
|
166
|
+
- value: email_password
|
|
167
|
+
label: "Sí, email + password"
|
|
168
|
+
triggers: [questions-auth]
|
|
169
|
+
- value: oauth
|
|
170
|
+
label: "Sí, OAuth (Google, GitHub, etc.)"
|
|
171
|
+
triggers: [questions-auth, questions-oauth]
|
|
172
|
+
- value: both
|
|
173
|
+
label: "Ambas opciones"
|
|
174
|
+
triggers: [questions-auth, questions-oauth]
|
|
175
|
+
- value: none
|
|
176
|
+
label: "No necesita autenticación"
|
|
177
|
+
|
|
178
|
+
- id: needs_admin_panel
|
|
179
|
+
section: features
|
|
180
|
+
text: "¿Necesita panel de administración?"
|
|
181
|
+
type: select
|
|
182
|
+
required: true
|
|
183
|
+
options:
|
|
184
|
+
- value: full
|
|
185
|
+
label: "Sí, completo (CRUD de todo)"
|
|
186
|
+
triggers: [questions-admin]
|
|
187
|
+
- value: basic
|
|
188
|
+
label: "Sí, básico (solo usuarios y config)"
|
|
189
|
+
triggers: [questions-admin]
|
|
190
|
+
- value: none
|
|
191
|
+
label: "No"
|
|
192
|
+
|
|
193
|
+
- id: file_uploads
|
|
194
|
+
section: features
|
|
195
|
+
text: "¿Necesita subida de archivos/imágenes?"
|
|
196
|
+
type: select
|
|
197
|
+
required: true
|
|
198
|
+
options:
|
|
199
|
+
- value: local
|
|
200
|
+
label: "Sí, almacenamiento local"
|
|
201
|
+
- value: cloud
|
|
202
|
+
label: "Sí, cloud (S3, Cloudinary...)"
|
|
203
|
+
triggers: [questions-storage]
|
|
204
|
+
- value: none
|
|
205
|
+
label: "No"
|
|
206
|
+
|
|
207
|
+
# ===== DESPLIEGUE =====
|
|
208
|
+
- id: hosting
|
|
209
|
+
section: deployment
|
|
210
|
+
text: "¿Dónde se desplegará el proyecto?"
|
|
211
|
+
type: select
|
|
212
|
+
required: true
|
|
213
|
+
options:
|
|
214
|
+
- value: hostinger
|
|
215
|
+
label: "Hostinger"
|
|
216
|
+
- value: aws
|
|
217
|
+
label: "AWS"
|
|
218
|
+
triggers: [questions-aws]
|
|
219
|
+
- value: digitalocean
|
|
220
|
+
label: "DigitalOcean"
|
|
221
|
+
- value: vercel
|
|
222
|
+
label: "Vercel/Netlify (frontend) + otro (backend)"
|
|
223
|
+
- value: local
|
|
224
|
+
label: "Local/desarrollo solamente"
|
|
225
|
+
- value: other
|
|
226
|
+
label: "Otro"
|
|
227
|
+
|
|
228
|
+
- id: needs_ssl
|
|
229
|
+
section: deployment
|
|
230
|
+
text: "¿Necesita SSL/HTTPS?"
|
|
231
|
+
type: boolean
|
|
232
|
+
required: true
|
|
233
|
+
default: true
|
|
234
|
+
|
|
235
|
+
- id: custom_domain
|
|
236
|
+
section: deployment
|
|
237
|
+
text: "¿Necesita dominio personalizado?"
|
|
238
|
+
type: text
|
|
239
|
+
required: false
|
|
240
|
+
help: "Deja vacío si usarás subdominio temporal"
|
|
241
|
+
|
|
242
|
+
# ===== DISEÑO =====
|
|
243
|
+
- id: color_palette
|
|
244
|
+
section: design
|
|
245
|
+
text: "¿Tienes una paleta de colores definida?"
|
|
246
|
+
type: select
|
|
247
|
+
required: true
|
|
248
|
+
options:
|
|
249
|
+
- value: custom
|
|
250
|
+
label: "Sí, tengo colores específicos"
|
|
251
|
+
- value: suggest
|
|
252
|
+
label: "No, sugiéreme una"
|
|
253
|
+
- value: default
|
|
254
|
+
label: "Usar defaults de Tailwind/Bootstrap"
|
|
255
|
+
follow_up:
|
|
256
|
+
- condition: "custom"
|
|
257
|
+
question: "Especifica colores (primario, secundario, acento):"
|
|
258
|
+
type: text
|
|
259
|
+
|
|
260
|
+
- id: visual_style
|
|
261
|
+
section: design
|
|
262
|
+
text: "¿Qué estilo visual prefieres?"
|
|
263
|
+
type: select
|
|
264
|
+
required: true
|
|
265
|
+
options:
|
|
266
|
+
- value: minimal
|
|
267
|
+
label: "Minimalista (Vercel-style)"
|
|
268
|
+
- value: modern
|
|
269
|
+
label: "Moderno (Gradientes, glassmorphism)"
|
|
270
|
+
- value: professional
|
|
271
|
+
label: "Profesional (Corporate, serio)"
|
|
272
|
+
- value: creative
|
|
273
|
+
label: "Creativo (Ilustraciones, colores vivos)"
|
|
274
|
+
- value: other
|
|
275
|
+
label: "Otro"
|
|
276
|
+
|
|
277
|
+
# ===== RESTRICCIONES =====
|
|
278
|
+
- id: time_limit
|
|
279
|
+
section: constraints
|
|
280
|
+
text: "¿Hay límite de tiempo para el MVP?"
|
|
281
|
+
type: text
|
|
282
|
+
required: false
|
|
283
|
+
help: "Ejemplos: 2 semanas, 3 meses, sin prisa..."
|
|
284
|
+
|
|
285
|
+
- id: budget_limit
|
|
286
|
+
section: constraints
|
|
287
|
+
text: "¿Hay presupuesto máximo para servicios externos?"
|
|
288
|
+
type: text
|
|
289
|
+
required: false
|
|
290
|
+
help: "Para hosting, APIs, servicios de terceros..."
|
|
291
|
+
|
|
292
|
+
- id: out_of_scope
|
|
293
|
+
section: constraints
|
|
294
|
+
text: "¿Qué NO debe incluir el proyecto?"
|
|
295
|
+
type: multiline
|
|
296
|
+
required: false
|
|
297
|
+
help: |
|
|
298
|
+
Cosas que explícitamente quedan fuera del alcance.
|
|
299
|
+
Ejemplos:
|
|
300
|
+
- No app móvil nativa
|
|
301
|
+
- No sistema de pagos
|
|
302
|
+
- No chat en vivo
|
|
303
|
+
|
|
304
|
+
# ===== ANALIZADORES =====
|
|
305
|
+
analyzers:
|
|
306
|
+
detect_project_type:
|
|
307
|
+
description: "Detecta el tipo de proyecto basándose en las funcionalidades listadas"
|
|
308
|
+
triggers:
|
|
309
|
+
- keywords: [login, usuario, registro, perfil, auth]
|
|
310
|
+
activate: questions-auth
|
|
311
|
+
- keywords: [pago, compra, carrito, stripe, paypal]
|
|
312
|
+
activate: questions-ecommerce
|
|
313
|
+
- keywords: [suscripción, plan, billing, mensualidad]
|
|
314
|
+
activate: questions-saas
|
|
315
|
+
- keywords: [api, endpoint, rest, graphql]
|
|
316
|
+
activate: questions-api
|
|
317
|
+
- keywords: [blog, post, artículo, contenido, cms]
|
|
318
|
+
activate: questions-cms
|
|
319
|
+
- keywords: [chat, mensaje, notificación, tiempo real]
|
|
320
|
+
activate: questions-realtime
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Archivo de ejemplo de respuestas
|
|
2
|
+
# Este archivo muestra cómo se guardan las respuestas del cuestionario
|
|
3
|
+
|
|
4
|
+
# ===== IDENTIDAD =====
|
|
5
|
+
project_name: casa-de-peli
|
|
6
|
+
project_display_name: Casa de Peli
|
|
7
|
+
project_objective: Plataforma web de catálogo y reseñas de películas donde los usuarios pueden descubrir películas, ver detalles y crear listas personalizadas
|
|
8
|
+
problem_solved: Los usuarios no tienen un lugar centralizado para llevar registro de películas vistas, escribir reseñas y gestionar listas de películas
|
|
9
|
+
target_audience: public
|
|
10
|
+
competitors: IMDb, Letterboxd, FilmAffinity
|
|
11
|
+
|
|
12
|
+
# ===== STACK TECNOLÓGICO =====
|
|
13
|
+
backend_framework: laravel
|
|
14
|
+
frontend_framework: react
|
|
15
|
+
use_typescript: true
|
|
16
|
+
database: postgresql
|
|
17
|
+
css_framework: tailwind
|
|
18
|
+
|
|
19
|
+
# ===== FUNCIONALIDADES =====
|
|
20
|
+
core_features:
|
|
21
|
+
- Catálogo de películas con búsqueda y filtros
|
|
22
|
+
- Sistema de reseñas y calificaciones
|
|
23
|
+
- Listas personalizadas (favoritas, por ver, vistas)
|
|
24
|
+
- Autenticación de usuarios
|
|
25
|
+
- Perfil de usuario
|
|
26
|
+
|
|
27
|
+
secondary_features:
|
|
28
|
+
- Feed de actividad reciente
|
|
29
|
+
- Recomendaciones basadas en gustos
|
|
30
|
+
- Modo oscuro
|
|
31
|
+
- Compartir reseñas en redes sociales
|
|
32
|
+
|
|
33
|
+
needs_auth: email_password
|
|
34
|
+
needs_admin_panel: basic
|
|
35
|
+
file_uploads: cloud
|
|
36
|
+
|
|
37
|
+
# ===== DISEÑO =====
|
|
38
|
+
color_palette: suggest
|
|
39
|
+
visual_style: modern
|
|
40
|
+
|
|
41
|
+
# ===== DESPLIEGUE =====
|
|
42
|
+
hosting: hostinger
|
|
43
|
+
needs_ssl: true
|
|
44
|
+
custom_domain: casadepeli.com
|
|
45
|
+
|
|
46
|
+
# ===== RESTRICCIONES =====
|
|
47
|
+
time_limit: 3 meses
|
|
48
|
+
budget_limit: 500 USD
|
|
49
|
+
out_of_scope:
|
|
50
|
+
- Streaming de películas (no reproducción)
|
|
51
|
+
- App móvil nativa
|
|
52
|
+
- Sistema de pagos
|
|
53
|
+
- Chat entre usuarios
|