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.
Files changed (47) hide show
  1. package/.agents/backend.md +419 -0
  2. package/.agents/frontend.md +577 -0
  3. package/.agents/producto.md +516 -0
  4. package/.commands/adoptar.md +323 -0
  5. package/.commands/ayuda.md +142 -0
  6. package/.commands/crear-tickets.md +55 -0
  7. package/.commands/documentar.md +285 -0
  8. package/.commands/explicar.md +234 -0
  9. package/.commands/implementar.md +383 -0
  10. package/.commands/inicio.md +824 -0
  11. package/.commands/nuevo/README.md +292 -0
  12. package/.commands/nuevo/questions-base.yaml +320 -0
  13. package/.commands/nuevo/responses-example.yaml +53 -0
  14. package/.commands/planificar.md +253 -0
  15. package/.commands/refinar.md +306 -0
  16. package/LICENSE +21 -0
  17. package/README.md +603 -0
  18. package/SETUP.md +351 -0
  19. package/install.sh +152 -0
  20. package/package.json +60 -0
  21. package/proyectos/_template/.gitkeep +1 -0
  22. package/proyectos/_template/ANEXOS.md +21 -0
  23. package/proyectos/_template/CONTRATO.md +26 -0
  24. package/proyectos/_template/context/.gitkeep +1 -0
  25. package/rules/development-rules.md +113 -0
  26. package/rules/environment-protection.md +97 -0
  27. package/rules/git-workflow.md +142 -0
  28. package/rules/session-protocol.md +121 -0
  29. package/scripts/README.md +129 -0
  30. package/scripts/analyze-project.sh +826 -0
  31. package/scripts/create-asana-tasks.sh +133 -0
  32. package/scripts/detect-project-type.sh +141 -0
  33. package/scripts/estimate-effort.sh +290 -0
  34. package/scripts/generate-asana-structure.sh +262 -0
  35. package/scripts/generate-contract.sh +360 -0
  36. package/scripts/generate-contrato.sh +555 -0
  37. package/scripts/install-git-hooks.sh +141 -0
  38. package/scripts/install-skills.sh +130 -0
  39. package/scripts/lib/asana-utils.sh +191 -0
  40. package/scripts/lib/jira-project-utils.sh +222 -0
  41. package/scripts/lib/questions.json +831 -0
  42. package/scripts/lib/render-contrato.py +195 -0
  43. package/scripts/lib/validate.sh +325 -0
  44. package/scripts/parse-contrato.sh +190 -0
  45. package/scripts/setup-mcp.sh +654 -0
  46. package/scripts/test-cuestionario.sh +428 -0
  47. package/setup.sh +458 -0
@@ -0,0 +1,253 @@
1
+ # Comando: planificar
2
+
3
+ **Sintaxis:** `planificar` o `planificar <ruta-proyecto>`
4
+
5
+ **Objetivo:** Generar secciones y tareas desde el CONTRATO.md y subirlas a Asana.
6
+
7
+ **Motor:** Usa `scripts/generate-asana-structure.sh` (CLI) para generación de backlog.
8
+
9
+ ---
10
+
11
+ ## 🌐 Idioma
12
+
13
+ **TODOS los mensajes de feedback deben estar en ESPAÑOL.**
14
+
15
+ Esto incluye:
16
+ - Mensajes de progreso ("Generando backlog...", "Analizando CONTRATO...")
17
+ - Vista previa de épicas y stories
18
+ - Mensajes de confirmación
19
+ - Errores y advertencias
20
+
21
+ ---
22
+
23
+ ## Flujo
24
+
25
+ ### 1. Identificar Proyecto
26
+
27
+ Si no se especifica ruta:
28
+ ```markdown
29
+ ¿Para qué proyecto quieres crear el backlog?
30
+
31
+ **Proyectos disponibles:**
32
+ 1. app-tienda
33
+ 2. api-backend
34
+ 3. dashboard-analytics
35
+
36
+ Responde con el número o nombre:
37
+ ```
38
+
39
+ ---
40
+
41
+ ### 2. Leer CONTRATO.md
42
+
43
+ ```bash
44
+ cat proyectos/[proyecto]/CONTRATO.md
45
+ ```
46
+
47
+ Extraer:
48
+ - Nombre del proyecto
49
+ - Features core
50
+ - Features secundarias
51
+
52
+ ---
53
+
54
+ ### 3. Generar Backlog (Usar CLI)
55
+
56
+ ```bash
57
+ cd specleap
58
+ ./scripts/generate-asana-structure.sh -p proyectos/[proyecto]
59
+ ```
60
+
61
+ Esto genera:
62
+ - Proyecto en Asana
63
+ - Secciones (Infraestructura, Backend, Frontend, Testing)
64
+ - Tareas (3-8 por sección)
65
+ - Story points asignados en notas
66
+ - Prioridades
67
+
68
+ ---
69
+
70
+ ### 4. Confirmación
71
+
72
+ Mostrar al usuario:
73
+ ```markdown
74
+ 📊 **Backlog Generado — Preview**
75
+
76
+ **Proyecto:** [Nombre]
77
+
78
+ 🛠️ **Infraestructura** (3 tareas, 11 pts)
79
+ - Setup inicial del proyecto [3 pts]
80
+ - Configurar CI/CD [5 pts]
81
+ - Configurar entornos (dev/staging/prod) [3 pts]
82
+
83
+ ⚙️ **Backend** (5-8 tareas, 25-40 pts)
84
+ - Implementar API REST básica [8 pts]
85
+ - Implementar autenticación [5 pts]
86
+ - Implementar autorización (roles) [5 pts]
87
+ - ...
88
+
89
+ 🎨 **Frontend** (3 tareas, 16 pts)
90
+ - Implementar sistema de diseño base [8 pts]
91
+ - Implementar autenticación UI [5 pts]
92
+ - Implementar navegación principal [3 pts]
93
+
94
+ 🧪 **Testing** (3 tareas, 13 pts)
95
+ - Tests unitarios backend (>=90% coverage) [5 pts]
96
+ - Tests E2E críticos [5 pts]
97
+ - Tests de integración [3 pts]
98
+
99
+ **Resumen:**
100
+ - Secciones: 4
101
+ - Tareas: 14-17
102
+ - Story Points: 65-80
103
+ - Esfuerzo estimado: ~40-50 días
104
+
105
+ ¿Crear este backlog en Asana? (s/n)
106
+ ```
107
+
108
+ ---
109
+
110
+ ### 5A. Si el usuario acepta: Crear en Asana
111
+
112
+ ```bash
113
+ # Crear proyecto y tareas en Asana
114
+ ./scripts/generate-asana-structure.sh -p proyectos/[proyecto]
115
+ ```
116
+
117
+ Esto:
118
+ - Crea proyecto en Asana
119
+ - Crea secciones (Infraestructura, Backend, Frontend, Testing)
120
+ - Crea tareas vinculadas a secciones
121
+ - Asigna story points en notas
122
+
123
+ **Mostrar confirmación:**
124
+ ```markdown
125
+ ✅ **Backlog creado en Asana**
126
+
127
+ **Proyecto:** https://app.asana.com/0/[PROJECT_GID]
128
+
129
+ **Secciones creadas:**
130
+ - 🛠️ Infraestructura (3 tareas)
131
+ - ⚙️ Backend (5-8 tareas)
132
+ - 🎨 Frontend (3 tareas)
133
+ - 🧪 Testing (3 tareas)
134
+
135
+ **Actualizar CONTRATO.md con metadata:**
136
+ ```yaml
137
+ asana:
138
+ project_gid: "[PROJECT_GID]"
139
+ section_count: 4
140
+ task_count: 14-17
141
+ synced_at: 2026-03-06T20:00:00Z
142
+ ```
143
+
144
+ ✅ CONTRATO.md actualizado.
145
+
146
+ **Próximos pasos:**
147
+ 1. Revisa el proyecto en Asana
148
+ 2. Prioriza las tareas
149
+ 3. Asigna tareas a miembros del equipo
150
+ 4. Ejecuta `implementar` cuando estés listo
151
+ ```
152
+
153
+ ---
154
+
155
+ ### 5B. Si el usuario NO acepta: Modo Dry-Run
156
+
157
+ Usuario puede usar modo dry-run para ver preview sin crear nada:
158
+
159
+ ```bash
160
+ ./scripts/generate-asana-structure.sh -p proyectos/[proyecto] --dry-run
161
+ ```
162
+
163
+ ```markdown
164
+ 💾 **Preview generado (sin crear en Asana)**
165
+
166
+ Ejecuta sin `--dry-run` cuando estés listo para crear el backlog real.
167
+ ```
168
+
169
+ Ejecuta sin `--dry-run` cuando estés listo para crear el backlog real.
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Comandos CLI/Scripts Usados
175
+
176
+ | Comando | Propósito |
177
+ |---------|-----------|
178
+ | `scripts/generate-asana-structure.sh` | Generar proyecto y tareas en Asana desde CONTRATO.md |
179
+ | `scripts/create-asana-tasks.sh` | Crear tareas individuales en Asana |
180
+ | `scripts/lib/asana-utils.sh` | Utilidades de API Asana |
181
+
182
+ ---
183
+
184
+ ## Personalización
185
+
186
+ ### Ajustar generación de tareas
187
+
188
+ Edita `scripts/generate-asana-structure.sh`:
189
+ - Líneas 145-200: Secciones y tareas generadas
190
+ - Story points asignados por tipo de tarea
191
+ - Nombres de secciones personalizados
192
+
193
+ ### Crear tareas individuales
194
+
195
+ ```bash
196
+ # Listar proyectos
197
+ ./scripts/create-asana-tasks.sh --listar
198
+
199
+ # Crear tarea
200
+ ./scripts/create-asana-tasks.sh \
201
+ -p [PROJECT_GID] \
202
+ -t "Nombre de la tarea" \
203
+ -P 5
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Requisitos
209
+
210
+ 1. **CONTRATO.md** existente
211
+ 2. **ASANA_ACCESS_TOKEN** configurado en ~/.zshrc
212
+ 3. **ASANA_WORKSPACE_GID** configurado (o se detecta automáticamente)
213
+
214
+ ---
215
+
216
+ ## Troubleshooting
217
+
218
+ ### "Script no encontrado"
219
+
220
+ ```bash
221
+ cd ~/.openclaw/workspace/specleap
222
+ ls scripts/generate-asana-structure.sh
223
+ # Si no existe, verifica instalación
224
+ ```
225
+
226
+ ### "ASANA_ACCESS_TOKEN no configurado"
227
+
228
+ ```bash
229
+ # Verifica que está en tu ~/.zshrc
230
+ grep ASANA_ACCESS_TOKEN ~/.zshrc
231
+
232
+ # Si no está, agrégalo:
233
+ echo 'export ASANA_ACCESS_TOKEN="tu-token-aqui"' >> ~/.zshrc
234
+ source ~/.zshrc
235
+ ```
236
+
237
+ ### "Error: Not Authorized"
238
+
239
+ Tu token de Asana puede haber expirado. Genera uno nuevo en:
240
+ https://app.asana.com/0/my-apps
241
+
242
+ ---
243
+
244
+ ## Workflow Típico
245
+
246
+ 1. `/inicio` → genera CONTRATO.md
247
+ 2. **`planificar`** → crea backlog en Asana ✅ **ESTÁS AQUÍ**
248
+ 3. Asigna tareas en Asana
249
+ 4. `implementar` → desarrolla features
250
+
251
+ ---
252
+
253
+ **Próximo paso:** Revisa el proyecto en Asana y asigna tareas
@@ -0,0 +1,306 @@
1
+ # Comando: refinar
2
+
3
+ **Sintaxis:** `refinar [TASK_GID]` o `refinar [nombre-tarea]`
4
+
5
+ **Objetivo:** Refinar una tarea de Asana para que sea completa, específica y lista para implementación técnica.
6
+
7
+ **Motor:** Usa `openspec enrich` (CLI) para el refinamiento con AI.
8
+
9
+ ---
10
+
11
+ ## 🌐 Idioma
12
+
13
+ **TODOS los mensajes y análisis deben estar en ESPAÑOL.**
14
+
15
+ Esto incluye:
16
+ - User stories refinadas
17
+ - Criterios de aceptación
18
+ - Preguntas de clarificación
19
+ - Análisis de complejidad
20
+ - Recomendaciones
21
+
22
+ ---
23
+
24
+ ## Flujo
25
+
26
+ ### 1. Leer Tarea de Asana
27
+
28
+ **Obtener tarea por GID:**
29
+
30
+ ```bash
31
+ source scripts/lib/asana-utils.sh
32
+ curl -s -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
33
+ "https://app.asana.com/api/1.0/tasks/[TASK_GID]" | jq '.data'
34
+ ```
35
+
36
+ **Si el usuario proporciona nombre de tarea:**
37
+
38
+ Buscar en el proyecto:
39
+ ```bash
40
+ source scripts/lib/asana-utils.sh
41
+ asana_list_tasks [PROJECT_GID] | grep -i "[nombre-tarea]"
42
+ ```
43
+
44
+ **Si no se encuentra:**
45
+ ```markdown
46
+ No encontré esa tarea en Asana.
47
+
48
+ Por favor, proporciona:
49
+ 1. El GID de la tarea (número largo)
50
+ 2. O el título exacto de la tarea
51
+ 3. O pega aquí el contenido completo de la tarea
52
+ ```
53
+
54
+ Espera la respuesta del usuario.
55
+
56
+ ---
57
+
58
+ ### 2. Leer Contexto del Proyecto
59
+
60
+ Lee los siguientes archivos para entender el proyecto:
61
+
62
+ 1. `proyectos/[proyecto-actual]/CONTRATO.md`
63
+ 2. `proyectos/[proyecto-actual]/context/architecture.md`
64
+ 3. `proyectos/[proyecto-actual]/context/tech-stack.md`
65
+ 4. `proyectos/[proyecto-actual]/context/conventions.md`
66
+
67
+ **Nota:** El proyecto actual se determina por el último comando `/inicio` ejecutado, o pregunta cuál es si no está claro.
68
+
69
+ ---
70
+
71
+ ### 3. Preparar Input para CLI
72
+
73
+ Crea un archivo temporal con la user story + contexto:
74
+
75
+ ```bash
76
+ cat > /tmp/user-story-input.md <<EOF
77
+ # User Story Original
78
+ $TICKET_CONTENT
79
+
80
+ # Contexto del Proyecto
81
+
82
+ ## Stack
83
+ $TECH_STACK
84
+
85
+ ## Arquitectura
86
+ $ARCHITECTURE
87
+
88
+ ## Convenciones
89
+ $CONVENTIONS
90
+ EOF
91
+ ```
92
+
93
+ ---
94
+
95
+ ### 4. Refinar con CLI
96
+
97
+ Ejecuta el refinamiento usando CLI:
98
+
99
+ ```bash
100
+ openspec enrich --file /tmp/user-story-input.md --output /tmp/user-story-refined.md
101
+ ```
102
+
103
+ Esto genera una user story completa con:
104
+ - Contexto técnico
105
+ - Criterios de aceptación (GIVEN/WHEN/THEN)
106
+ - Especificación técnica (endpoints, componentes, DB)
107
+ - Validaciones
108
+ - Reglas de negocio
109
+ - Estimación
110
+ - Riesgos
111
+ - Fuera de alcance
112
+
113
+ ---
114
+
115
+ ### 5. Mostrar Preview
116
+
117
+ Lee el resultado:
118
+
119
+ ```bash
120
+ cat /tmp/user-story-refined.md
121
+ ```
122
+
123
+ Muestra al usuario:
124
+
125
+ ```markdown
126
+ 📋 **Tarea Refinada (Preview):**
127
+
128
+ [Primeras 30 líneas del contenido refinado]
129
+
130
+ ...
131
+
132
+ **¿Aprobar y actualizar Asana?** (s/n)
133
+ ```
134
+
135
+ Espera confirmación del usuario.
136
+
137
+ ---
138
+
139
+ ### 6A. Si el usuario aprueba: Actualizar Asana
140
+
141
+ ```bash
142
+ # Actualizar tarea en Asana
143
+ source scripts/lib/asana-utils.sh
144
+
145
+ # Leer contenido refinado
146
+ REFINED_CONTENT=$(cat /tmp/user-story-refined.md)
147
+
148
+ # Actualizar notas de la tarea
149
+ curl -s -X PUT \
150
+ -H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
151
+ -H "Content-Type: application/json" \
152
+ -d "{\"data\": {\"notes\": \"$REFINED_CONTENT\"}}" \
153
+ "https://app.asana.com/api/1.0/tasks/[TASK_GID]"
154
+ ```
155
+
156
+ **También guardar localmente:**
157
+
158
+ ```bash
159
+ cp /tmp/user-story-refined.md proyectos/[proyecto]/specs/task-[TASK_GID]_refined.md
160
+ ```
161
+
162
+ **Mostrar confirmación:**
163
+ ```markdown
164
+ ✅ **Tarea actualizada en Asana**
165
+
166
+ 📋 **Local:** `proyectos/[proyecto]/specs/task-[TASK_GID]_refined.md`
167
+
168
+ 📊 **Ver en Asana:** https://app.asana.com/0/[PROJECT_GID]/[TASK_GID]
169
+
170
+ **Próximos pasos:**
171
+ 1. Revisa la tarea refinada en Asana
172
+ 2. Asigna la tarea a un desarrollador
173
+ 3. Ejecuta `implementar` cuando estés listo
174
+ ```
175
+
176
+ ---
177
+
178
+ ### 6B. Si el usuario NO aprueba: Editar
179
+
180
+ ```markdown
181
+ **¿Qué quieres modificar?**
182
+
183
+ Puedes decir cosas como:
184
+ - "Agrega que debe soportar OAuth"
185
+ - "Cambia la estimación a 5 días"
186
+ - "Elimina el criterio de aceptación 3"
187
+ - "Agrega validación de email único"
188
+ ```
189
+
190
+ Espera feedback, edita `/tmp/user-story-refined.md` y vuelve al paso 5.
191
+
192
+ ---
193
+
194
+ ### 7. Confirmar Actualización
195
+
196
+ ```markdown
197
+ ✅ **Tarea refinada exitosamente.**
198
+
199
+ **Agregado:**
200
+ - ✅ [X] criterios de aceptación (GIVEN/WHEN/THEN)
201
+ - ✅ Especificación técnica completa
202
+ - ✅ Validaciones (server + client)
203
+ - ✅ Estimación: [X días]
204
+
205
+ **Ubicación:**
206
+ - Asana: https://app.asana.com/0/[PROJECT_GID]/[TASK_GID]
207
+ - Local: `proyectos/[proyecto]/specs/task-[TASK_GID]_refined.md`
208
+
209
+ 🔄 **Próximo paso:**
210
+ - Ejecuta `implementar` para comenzar el desarrollo
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Ejemplos de Uso
216
+
217
+ ### Ejemplo 1: Con GID de Asana
218
+
219
+ ```
220
+ Usuario: "refinar 1234567890123456"
221
+
222
+ IA:
223
+ 📥 Leyendo tarea de Asana...
224
+ ✅ Tarea leída: "Implementar sistema de login"
225
+
226
+ 📚 Cargando contexto del proyecto...
227
+ ✅ CONTRATO.md, architecture.md, tech-stack.md, conventions.md cargados.
228
+
229
+ 🤖 Refinando con openspec enrich...
230
+ ✅ Tarea refinada (7 criterios de aceptación, 4 endpoints API, validaciones).
231
+
232
+ 📋 Preview:
233
+ [Muestra primeras 30 líneas]
234
+
235
+ ¿Aprobar y actualizar Asana? (s/n)
236
+
237
+ Usuario: "s"
238
+
239
+ IA:
240
+ ✅ Tarea actualizada en Asana.
241
+ ✅ Guardada localmente en specs/task-1234567890123456_refined.md
242
+
243
+ Próximo: implementar
244
+ ```
245
+
246
+ ### Ejemplo 2: Por nombre de tarea
247
+
248
+ ```
249
+ Usuario: "refinar login"
250
+
251
+ IA:
252
+ 🔍 Buscando tarea 'login' en el proyecto...
253
+ ✅ Encontrada: "Implementar sistema de login" (GID: 1234567890123456)
254
+
255
+ 📚 Cargando contexto...
256
+ ✅ Contexto cargado.
257
+
258
+ 🤖 Refinando con openspec enrich...
259
+ ✅ Tarea refinada.
260
+
261
+ 📋 Preview:
262
+ [Muestra contenido]
263
+
264
+ ¿Aprobar? (s/n)
265
+
266
+ Usuario: "s"
267
+
268
+ IA:
269
+ ✅ Tarea actualizada en Asana
270
+ ✅ Guardado en specs/task-1234567890123456_refined.md
271
+
272
+ 📊 Ver en Asana: https://app.asana.com/0/[PROJECT_GID]/1234567890123456
273
+ ```
274
+
275
+ ---
276
+
277
+ ## Comandos CLI Usados
278
+
279
+ | Comando | Propósito |
280
+ |---------|-----------|
281
+ | `scripts/lib/asana-utils.sh` | Utilidades para API de Asana |
282
+ | `curl ... /api/1.0/tasks/[GID]` | Leer tarea de Asana |
283
+ | `openspec enrich --file <input> --output <output>` | Refinar tarea con AI |
284
+ | `curl -X PUT ... /api/1.0/tasks/[GID]` | Actualizar tarea en Asana |
285
+
286
+ ---
287
+
288
+ ## Reglas Críticas
289
+
290
+ 1. **SIEMPRE usar CLI** — Delegar refinamiento a `openspec enrich`
291
+ 2. **Leer CONTRATO.md** — Alinear refinamiento con contrato
292
+ 3. **Preview antes de actualizar** — Pedir confirmación al usuario
293
+ 4. **Guardar localmente** — Siempre guardar en specs/ además de actualizar Asana
294
+ 5. **No asumir** — Si falta contexto, preguntar
295
+
296
+ ---
297
+
298
+ ## Agente Relacionado
299
+
300
+ - `.agents/producto.md` — El CLI `openspec enrich` sigue este rol
301
+
302
+ ---
303
+
304
+ ## Próximo Comando
305
+
306
+ - `implementar` — Comenzar el desarrollo de la tarea refinada
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SpecLeap Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.