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
package/setup.sh ADDED
@@ -0,0 +1,458 @@
1
+ #!/bin/bash
2
+ # SpecLeap — Instalador Profesional Completo
3
+ # Versión 2.0 — Instalación guiada con todos los tokens
4
+
5
+ set -e
6
+
7
+ # Colores
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[1;33m'
11
+ BLUE='\033[0;34m'
12
+ CYAN='\033[0;36m'
13
+ BOLD='\033[1m'
14
+ NC='\033[0m'
15
+
16
+ # Ancho terminal
17
+ COLS=$(tput cols 2>/dev/null || echo 80)
18
+ LINE=$(printf '%*s\n' "$COLS" '' | tr ' ' '═')
19
+
20
+ clear
21
+
22
+ echo -e "${CYAN}${LINE}${NC}"
23
+ echo -e "${CYAN}${BOLD}"
24
+ cat << "EOF"
25
+ _____ ____ ___________ __ _________ ____
26
+ / ___// __ \/ ____/ ____/ / / / ____/ | / __ \
27
+ \__ \/ /_/ / __/ / / / / / __/ / /| | / /_/ /
28
+ ___/ / ____/ /___/ /___ / /___/ /___/ ___ |/ ____/
29
+ /____/_/ /_____/\____/ /_____/_____/_/ |_/_/
30
+
31
+ EOF
32
+ echo -e "${NC}${CYAN}${LINE}${NC}"
33
+ echo -e "${GREEN}${BOLD} Spec-Driven Development Framework${NC}"
34
+ echo -e "${YELLOW} v2.0.0 — Instalador Profesional${NC}"
35
+ echo -e "${CYAN}${LINE}${NC}"
36
+ echo ""
37
+
38
+ # ============================================
39
+ # PASO 1: Selección de Idioma
40
+ # ============================================
41
+
42
+ echo -e "${BLUE}${BOLD}Paso 1/6: Idioma / Language${NC}"
43
+ echo ""
44
+ echo " 1) Español"
45
+ echo " 2) English"
46
+ echo ""
47
+ read -p "$(echo -e ${YELLOW}Selecciona / Select [1-2]:${NC} )" lang_choice
48
+
49
+ case $lang_choice in
50
+ 1) LANG="es" ;;
51
+ 2) LANG="en" ;;
52
+ *) LANG="es" ;;
53
+ esac
54
+
55
+ # Textos según idioma
56
+ if [ "$LANG" = "es" ]; then
57
+ MSG_WELCOME="¡Bienvenido a SpecLeap!"
58
+ MSG_INSTALL_TIME="⏱️ Tiempo estimado: 10-15 minutos"
59
+ MSG_REQUIREMENTS="Verificando requisitos del sistema..."
60
+ MSG_GITHUB="Paso 2/6: Configuración GitHub"
61
+ MSG_ASANA="Paso 3/6: Configuración Asana (Obligatorio)"
62
+ MSG_SKILLS="Paso 4/6: Agent Skills (20 skills)"
63
+ MSG_CODERABBIT="Paso 5/6: CodeRabbit"
64
+ MSG_FINAL="Paso 6/6: Finalizando"
65
+ MSG_SUCCESS="✅ ¡Instalación completa!"
66
+ MSG_NEXT_STEPS="Próximos pasos:"
67
+ MSG_ERROR="❌ Error:"
68
+ else
69
+ MSG_WELCOME="Welcome to SpecLeap!"
70
+ MSG_INSTALL_TIME="⏱️ Estimated time: 10-15 minutes"
71
+ MSG_REQUIREMENTS="Checking system requirements..."
72
+ MSG_GITHUB="Step 2/6: GitHub Setup"
73
+ MSG_ASANA="Step 3/6: Asana Setup (Required)"
74
+ MSG_SKILLS="Step 4/6: Agent Skills (20 skills)"
75
+ MSG_CODERABBIT="Step 5/6: CodeRabbit"
76
+ MSG_FINAL="Step 6/6: Finishing"
77
+ MSG_SUCCESS="✅ Installation complete!"
78
+ MSG_NEXT_STEPS="Next steps:"
79
+ MSG_ERROR="❌ Error:"
80
+ fi
81
+
82
+ echo ""
83
+ echo -e "${GREEN}${BOLD}$MSG_WELCOME${NC}"
84
+ echo -e "${YELLOW}$MSG_INSTALL_TIME${NC}"
85
+ echo ""
86
+ sleep 2
87
+
88
+ # ============================================
89
+ # VERIFICACIONES PREVIAS
90
+ # ============================================
91
+
92
+ echo -e "${CYAN}${BOLD}$MSG_REQUIREMENTS${NC}"
93
+ echo ""
94
+
95
+ # Node.js
96
+ if ! command -v node &> /dev/null; then
97
+ echo -e "${RED}$MSG_ERROR Node.js not installed${NC}"
98
+ echo "Install from: https://nodejs.org"
99
+ exit 1
100
+ fi
101
+ echo -e "${GREEN}✅ Node.js:${NC} $(node --version)"
102
+
103
+ # npm
104
+ if ! command -v npm &> /dev/null; then
105
+ echo -e "${RED}$MSG_ERROR npm not installed${NC}"
106
+ exit 1
107
+ fi
108
+ echo -e "${GREEN}✅ npm:${NC} $(npm --version)"
109
+
110
+ # Git
111
+ if ! command -v git &> /dev/null; then
112
+ echo -e "${RED}$MSG_ERROR Git not installed${NC}"
113
+ echo "Install Git: https://git-scm.com"
114
+ exit 1
115
+ fi
116
+ echo -e "${GREEN}✅ Git:${NC} $(git --version | cut -d' ' -f3)"
117
+
118
+ # curl
119
+ if ! command -v curl &> /dev/null; then
120
+ echo -e "${RED}$MSG_ERROR curl not installed${NC}"
121
+ exit 1
122
+ fi
123
+ echo -e "${GREEN}✅ curl:${NC} available"
124
+
125
+ echo ""
126
+ sleep 1
127
+
128
+ # ============================================
129
+ # PASO 2: GitHub
130
+ # ============================================
131
+
132
+ echo -e "${CYAN}${LINE}${NC}"
133
+ echo -e "${BLUE}${BOLD}$MSG_GITHUB${NC}"
134
+ echo -e "${CYAN}${LINE}${NC}"
135
+ echo ""
136
+
137
+ if [ "$LANG" = "es" ]; then
138
+ echo "SpecLeap necesita GitHub para:"
139
+ echo " • Control de versiones del CONTRATO.md"
140
+ echo " • Integración con CodeRabbit (code review automático)"
141
+ echo " • Historial de cambios y decisiones"
142
+ echo ""
143
+ echo "🔗 Obtén tu token en: ${CYAN}https://github.com/settings/tokens${NC}"
144
+ echo " Permisos necesarios: repo, workflow"
145
+ echo ""
146
+ else
147
+ echo "SpecLeap needs GitHub for:"
148
+ echo " • CONTRACT.md version control"
149
+ echo " • CodeRabbit integration (automatic code review)"
150
+ echo " • Change and decision history"
151
+ echo ""
152
+ echo "🔗 Get your token at: ${CYAN}https://github.com/settings/tokens${NC}"
153
+ echo " Required scopes: repo, workflow"
154
+ echo ""
155
+ fi
156
+
157
+ read -p "$(echo -e ${YELLOW}GitHub Token:${NC} )" GITHUB_TOKEN
158
+ echo ""
159
+
160
+ if [ -z "$GITHUB_TOKEN" ]; then
161
+ echo -e "${RED}$MSG_ERROR GitHub token is required${NC}"
162
+ exit 1
163
+ fi
164
+
165
+ # Verificar token
166
+ echo -ne "Verificando token... "
167
+ GITHUB_USER=$(curl -s -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user | grep -o '"login": "[^"]*' | cut -d'"' -f4)
168
+
169
+ if [ -z "$GITHUB_USER" ]; then
170
+ echo -e "${RED}❌ Token inválido${NC}"
171
+ exit 1
172
+ fi
173
+
174
+ echo -e "${GREEN}✅ Token válido (Usuario: $GITHUB_USER)${NC}"
175
+ echo ""
176
+ sleep 1
177
+
178
+ # ============================================
179
+ # PASO 3: Asana (OBLIGATORIO)
180
+ # ============================================
181
+
182
+ echo -e "${CYAN}${LINE}${NC}"
183
+ echo -e "${BLUE}${BOLD}$MSG_ASANA${NC}"
184
+ echo -e "${CYAN}${LINE}${NC}"
185
+ echo ""
186
+
187
+ if [ "$LANG" = "es" ]; then
188
+ echo "⚠️ ${YELLOW}Asana es OBLIGATORIO para usar SpecLeap${NC}"
189
+ echo ""
190
+ echo "Asana te permite:"
191
+ echo " • Generar backlog automático desde CONTRATO.md"
192
+ echo " • Comando 'planificar' crea épicas + user stories"
193
+ echo " • Tracking de progreso"
194
+ echo ""
195
+ echo "📋 Cómo obtener tu token:"
196
+ echo " 1. Ve a: ${CYAN}https://app.asana.com/0/my-apps${NC}"
197
+ echo " 2. Click 'Create new token'"
198
+ echo " 3. Nombre: 'SpecLeap Integration'"
199
+ echo " 4. Copia el token (empieza con '0/')"
200
+ echo ""
201
+ else
202
+ echo "⚠️ ${YELLOW}Asana is REQUIRED to use SpecLeap${NC}"
203
+ echo ""
204
+ echo "Asana allows you to:"
205
+ echo " • Auto-generate backlog from CONTRACT.md"
206
+ echo " • 'planificar' command creates epics + user stories"
207
+ echo " • Progress tracking"
208
+ echo ""
209
+ echo "📋 How to get your token:"
210
+ echo " 1. Go to: ${CYAN}https://app.asana.com/0/my-apps${NC}"
211
+ echo " 2. Click 'Create new token'"
212
+ echo " 3. Name: 'SpecLeap Integration'"
213
+ echo " 4. Copy token (starts with '0/')"
214
+ echo ""
215
+ fi
216
+
217
+ read -p "$(echo -e ${YELLOW}Asana Token:${NC} )" ASANA_TOKEN
218
+ echo ""
219
+
220
+ if [ -z "$ASANA_TOKEN" ]; then
221
+ echo -e "${RED}$MSG_ERROR Asana token is required${NC}"
222
+ exit 1
223
+ fi
224
+
225
+ # Verificar token y obtener workspace
226
+ echo -ne "Verificando token Asana... "
227
+ ASANA_RESPONSE=$(curl -s -H "Authorization: Bearer $ASANA_TOKEN" https://app.asana.com/api/1.0/workspaces)
228
+
229
+ if echo "$ASANA_RESPONSE" | grep -q '"gid"'; then
230
+ echo -e "${GREEN}✅ Token válido${NC}"
231
+ echo ""
232
+
233
+ # Listar workspaces disponibles
234
+ if [ "$LANG" = "es" ]; then
235
+ echo "Workspaces disponibles:"
236
+ else
237
+ echo "Available workspaces:"
238
+ fi
239
+ echo ""
240
+
241
+ # Extraer workspaces (simple parsing)
242
+ WORKSPACE_COUNT=0
243
+ while IFS= read -r line; do
244
+ if echo "$line" | grep -q '"gid"'; then
245
+ WORKSPACE_COUNT=$((WORKSPACE_COUNT + 1))
246
+ WS_GID=$(echo "$line" | grep -o '"gid":"[^"]*' | cut -d'"' -f4)
247
+ WS_NAME=$(echo "$ASANA_RESPONSE" | grep -A1 "\"gid\":\"$WS_GID\"" | grep '"name"' | grep -o '"name":"[^"]*' | cut -d'"' -f4)
248
+ echo " $WORKSPACE_COUNT) $WS_NAME (ID: $WS_GID)"
249
+
250
+ # Guardar primer workspace como default
251
+ if [ $WORKSPACE_COUNT -eq 1 ]; then
252
+ DEFAULT_WORKSPACE_ID="$WS_GID"
253
+ fi
254
+ fi
255
+ done < <(echo "$ASANA_RESPONSE" | grep '"gid"')
256
+
257
+ echo ""
258
+ if [ "$LANG" = "es" ]; then
259
+ read -p "$(echo -e ${YELLOW}Workspace ID [Enter para usar el primero]:${NC} )" ASANA_WORKSPACE_INPUT
260
+ else
261
+ read -p "$(echo -e ${YELLOW}Workspace ID [Enter to use first]:${NC} )" ASANA_WORKSPACE_INPUT
262
+ fi
263
+
264
+ if [ -z "$ASANA_WORKSPACE_INPUT" ]; then
265
+ ASANA_WORKSPACE_ID="$DEFAULT_WORKSPACE_ID"
266
+ else
267
+ ASANA_WORKSPACE_ID="$ASANA_WORKSPACE_INPUT"
268
+ fi
269
+
270
+ echo -e "${GREEN}✅ Workspace seleccionado: $ASANA_WORKSPACE_ID${NC}"
271
+ else
272
+ echo -e "${RED}❌ Token inválido${NC}"
273
+ exit 1
274
+ fi
275
+
276
+ echo ""
277
+ sleep 1
278
+
279
+ # ============================================
280
+ # PASO 4: Agent Skills (20 TIER 1)
281
+ # ============================================
282
+
283
+ echo -e "${CYAN}${LINE}${NC}"
284
+ echo -e "${BLUE}${BOLD}$MSG_SKILLS${NC}"
285
+ echo -e "${CYAN}${LINE}${NC}"
286
+ echo ""
287
+
288
+ if [ "$LANG" = "es" ]; then
289
+ echo "SpecLeap incluye 20 Agent Skills profesionales:"
290
+ echo " • 5 Seguridad (OWASP, STRIDE)"
291
+ echo " • 3 Consistencia (verification-before-completion)"
292
+ echo " • 6 Diseño (Vercel-style, UI/UX)"
293
+ echo " • 6 Backend/Dev (Laravel, React, TDD)"
294
+ echo ""
295
+ echo "⏱️ Tiempo: 2-3 minutos"
296
+ echo ""
297
+ else
298
+ echo "SpecLeap includes 20 professional Agent Skills:"
299
+ echo " • 5 Security (OWASP, STRIDE)"
300
+ echo " • 3 Consistency (verification-before-completion)"
301
+ echo " • 6 Design (Vercel-style, UI/UX)"
302
+ echo " • 6 Backend/Dev (Laravel, React, TDD)"
303
+ echo ""
304
+ echo "⏱️ Time: 2-3 minutes"
305
+ echo ""
306
+ fi
307
+
308
+ read -p "$(echo -e ${YELLOW}Instalar Agent Skills? [S/n]:${NC} )" INSTALL_SKILLS
309
+
310
+ if [[ ! "$INSTALL_SKILLS" =~ ^[Nn]$ ]]; then
311
+ bash scripts/install-skills.sh || {
312
+ echo -e "${RED}$MSG_ERROR Skills installation failed${NC}"
313
+ exit 1
314
+ }
315
+ else
316
+ echo -e "${YELLOW}⏭️ Skills omitidas${NC}"
317
+ fi
318
+
319
+ echo ""
320
+ sleep 1
321
+
322
+ # ============================================
323
+ # PASO 5: CodeRabbit
324
+ # ============================================
325
+
326
+ echo -e "${CYAN}${LINE}${NC}"
327
+ echo -e "${BLUE}${BOLD}$MSG_CODERABBIT${NC}"
328
+ echo -e "${CYAN}${LINE}${NC}"
329
+ echo ""
330
+
331
+ if [ "$LANG" = "es" ]; then
332
+ echo "CodeRabbit hace code review automático en todos tus PRs."
333
+ echo ""
334
+ echo "Se copiará .coderabbit.yaml al proyecto."
335
+ echo "Después deberás instalar la app en GitHub:"
336
+ echo " ${CYAN}https://github.com/apps/coderabbitai${NC}"
337
+ echo ""
338
+ else
339
+ echo "CodeRabbit automatically reviews all your PRs."
340
+ echo ""
341
+ echo ".coderabbit.yaml will be copied to your project."
342
+ echo "Then install the GitHub app:"
343
+ echo " ${CYAN}https://github.com/apps/coderabbitai${NC}"
344
+ echo ""
345
+ fi
346
+
347
+ if [ -f "proyectos/_template/.coderabbit.yaml" ]; then
348
+ cp proyectos/_template/.coderabbit.yaml .coderabbit.yaml
349
+ echo -e "${GREEN}✅ .coderabbit.yaml copiado${NC}"
350
+ else
351
+ echo -e "${YELLOW}⚠️ Template no encontrado, se omite${NC}"
352
+ fi
353
+
354
+ echo ""
355
+ sleep 1
356
+
357
+ # ============================================
358
+ # PASO 6: Guardar Configuración
359
+ # ============================================
360
+
361
+ echo -e "${CYAN}${LINE}${NC}"
362
+ echo -e "${BLUE}${BOLD}$MSG_FINAL${NC}"
363
+ echo -e "${CYAN}${LINE}${NC}"
364
+ echo ""
365
+
366
+ # Crear directorios
367
+ mkdir -p .specleap
368
+ mkdir -p proyectos
369
+
370
+ # Config JSON
371
+ cat > .specleap/config.json <<EOF
372
+ {
373
+ "version": "2.0.0",
374
+ "language": "$LANG",
375
+ "installed_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
376
+ "github_user": "$GITHUB_USER",
377
+ "asana_workspace": "$ASANA_WORKSPACE_ID"
378
+ }
379
+ EOF
380
+
381
+ # .env
382
+ cat > .env <<EOF
383
+ # SpecLeap Configuration
384
+ SPECLEAP_LANG=$LANG
385
+
386
+ # GitHub
387
+ GITHUB_TOKEN=$GITHUB_TOKEN
388
+ GITHUB_USER=$GITHUB_USER
389
+
390
+ # Asana (REQUIRED)
391
+ ASANA_ACCESS_TOKEN=$ASANA_TOKEN
392
+ ASANA_WORKSPACE_ID=$ASANA_WORKSPACE_ID
393
+
394
+ # CodeRabbit (installed via GitHub App)
395
+ # https://github.com/apps/coderabbitai
396
+ EOF
397
+
398
+ # Hacer ejecutables los scripts
399
+ chmod +x scripts/*.sh 2>/dev/null || true
400
+
401
+ echo -e "${GREEN}✅ Configuración guardada${NC}"
402
+ echo ""
403
+
404
+ # ============================================
405
+ # RESUMEN FINAL
406
+ # ============================================
407
+
408
+ echo -e "${GREEN}${LINE}${NC}"
409
+ echo -e "${GREEN}${BOLD}"
410
+ echo " ✅ $MSG_SUCCESS"
411
+ echo -e "${NC}${GREEN}${LINE}${NC}"
412
+ echo ""
413
+
414
+ echo -e "${YELLOW}${BOLD}$MSG_NEXT_STEPS${NC}"
415
+ echo ""
416
+
417
+ if [ "$LANG" = "es" ]; then
418
+ echo " ${BOLD}1. Instalar CodeRabbit en GitHub:${NC}"
419
+ echo " ${CYAN}https://github.com/apps/coderabbitai${NC}"
420
+ echo ""
421
+ echo " ${BOLD}2. Ejecutar cuestionario (20 min):${NC}"
422
+ echo " ${GREEN}./scripts/generate-contrato.sh${NC}"
423
+ echo ""
424
+ echo " ${BOLD}3. Push a GitHub:${NC}"
425
+ echo " ${GREEN}git init && git add . && git commit -m 'init: SpecLeap setup'${NC}"
426
+ echo " ${GREEN}git push origin main${NC}"
427
+ echo ""
428
+ echo " ${BOLD}4. Abrir en tu IDE:${NC}"
429
+ echo " ${GREEN}code .${NC} (VSCode)"
430
+ echo " ${GREEN}cursor .${NC} (Cursor)"
431
+ echo ""
432
+ echo " ${BOLD}5. En el chat con la IA, escribe:${NC}"
433
+ echo " ${GREEN}ayuda${NC}"
434
+ echo ""
435
+ else
436
+ echo " ${BOLD}1. Install CodeRabbit on GitHub:${NC}"
437
+ echo " ${CYAN}https://github.com/apps/coderabbitai${NC}"
438
+ echo ""
439
+ echo " ${BOLD}2. Run questionnaire (20 min):${NC}"
440
+ echo " ${GREEN}./scripts/generate-contrato.sh${NC}"
441
+ echo ""
442
+ echo " ${BOLD}3. Push to GitHub:${NC}"
443
+ echo " ${GREEN}git init && git add . && git commit -m 'init: SpecLeap setup'${NC}"
444
+ echo " ${GREEN}git push origin main${NC}"
445
+ echo ""
446
+ echo " ${BOLD}4. Open in your IDE:${NC}"
447
+ echo " ${GREEN}code .${NC} (VSCode)"
448
+ echo " ${GREEN}cursor .${NC} (Cursor)"
449
+ echo ""
450
+ echo " ${BOLD}5. In AI chat, type:${NC}"
451
+ echo " ${GREEN}ayuda${NC}"
452
+ echo ""
453
+ fi
454
+
455
+ echo -e "${CYAN}${LINE}${NC}"
456
+ echo ""
457
+ echo -e "${GREEN}${BOLD}¡Disfruta SpecLeap! 🚀${NC}"
458
+ echo ""