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,285 @@
1
+ # Comando: documentar
2
+
3
+ **Sintaxis:** `documentar` o `documentar [archivo]`
4
+
5
+ **Objetivo:** Actualizar documentación técnica (context/) cuando hay cambios importantes.
6
+
7
+ **Motor:** Usa Git para analizar cambios + actualización manual guiada.
8
+
9
+ ---
10
+
11
+ ## Flujo
12
+
13
+ ### 1. Identificar Qué Documentar
14
+
15
+ **Opción A: Archivo específico**
16
+ ```
17
+ documentar context/architecture.md
18
+ ```
19
+
20
+ **Opción B: Análisis automático**
21
+ ```
22
+ documentar
23
+ ```
24
+ → Analiza cambios recientes y determina qué actualizar
25
+
26
+ ---
27
+
28
+ ### 2. Analizar Cambios Recientes (Git)
29
+
30
+ ```bash
31
+ cd [directorio-proyecto]
32
+
33
+ # Ver commits recientes
34
+ git log --oneline -20
35
+
36
+ # Ver archivos modificados
37
+ git diff HEAD~10..HEAD --name-only
38
+
39
+ # Ver cambios en dependencias
40
+ git diff HEAD~10..HEAD package.json composer.json
41
+ ```
42
+
43
+ **Identificar:**
44
+ - ✅ Nuevas features implementadas
45
+ - ✅ Cambios arquitectónicos
46
+ - ✅ Nuevas dependencias
47
+ - ✅ Decisiones técnicas tomadas
48
+
49
+ ---
50
+
51
+ ### 3. Leer Documentación Actual
52
+
53
+ ```bash
54
+ cd proyectos/[proyecto]/context/
55
+
56
+ # Leer todos los archivos
57
+ cat brief.md
58
+ cat architecture.md
59
+ cat tech-stack.md
60
+ cat conventions.md
61
+ cat decisions.md
62
+ ```
63
+
64
+ ---
65
+
66
+ ### 4. Determinar Actualizaciones Necesarias
67
+
68
+ **Checklist:**
69
+
70
+ **brief.md:**
71
+ - [ ] Cambió el propósito del proyecto
72
+ - [ ] Hay nuevos módulos completados
73
+ - [ ] Cambió el estado (% progreso)
74
+
75
+ **architecture.md:**
76
+ - [ ] Nueva capa/componente agregado
77
+ - [ ] Cambió estructura de directorios
78
+ - [ ] Modificó patrón arquitectónico
79
+ - [ ] Nuevas dependencias entre módulos
80
+
81
+ **tech-stack.md:**
82
+ - [ ] Nueva dependencia (npm/composer)
83
+ - [ ] Actualización de versión importante
84
+ - [ ] Cambió herramienta (ej: Webpack → Vite)
85
+ - [ ] Nuevo servicio externo
86
+
87
+ **conventions.md:**
88
+ - [ ] Nuevo patrón de código establecido
89
+ - [ ] Cambió naming convention
90
+ - [ ] Nueva regla de testing
91
+
92
+ **decisions.md:**
93
+ - [ ] Decisión técnica importante tomada
94
+ - [ ] Alternativas evaluadas
95
+ - [ ] Decisión pendiente resuelta
96
+
97
+ ---
98
+
99
+ ### 5. Actualizar Archivos
100
+
101
+ Para cada archivo que necesita actualización:
102
+
103
+ **A) Mostrar contenido actual:**
104
+ ```markdown
105
+ 📄 **Contenido actual de [archivo]:**
106
+
107
+ [Mostrar primeras 30 líneas]
108
+
109
+ ...
110
+
111
+ ¿Qué quieres actualizar?
112
+ ```
113
+
114
+ **B) Esperar input del usuario:**
115
+
116
+ Ejemplos:
117
+ - "Agrega que ahora usamos Redis para cache"
118
+ - "Actualiza la versión de Laravel a 11.x"
119
+ - "Agrega decisión sobre usar PostgreSQL en lugar de MySQL"
120
+
121
+ **C) Aplicar cambios:**
122
+
123
+ Editar el archivo con los cambios especificados.
124
+
125
+ **D) Mostrar diff:**
126
+ ```bash
127
+ git diff context/[archivo]
128
+ ```
129
+
130
+ ```markdown
131
+ **Cambios en [archivo]:**
132
+
133
+ [Mostrar diff con colores]
134
+
135
+ ¿Aprobar cambios? (s/n)
136
+ ```
137
+
138
+ ---
139
+
140
+ ### 6. Confirmar y Commitear
141
+
142
+ Si el usuario aprueba:
143
+
144
+ ```bash
145
+ git add context/*.md
146
+ git commit -m "docs: update context/ documentation
147
+
148
+ Updated:
149
+ - [archivo1]: [cambio1]
150
+ - [archivo2]: [cambio2]
151
+
152
+ Refs: [commits que motivaron la actualización]"
153
+ ```
154
+
155
+ ```markdown
156
+ ✅ **Documentación actualizada**
157
+
158
+ **Archivos modificados:**
159
+ - context/architecture.md
160
+ - context/tech-stack.md
161
+ - context/decisions.md
162
+
163
+ **Commit:** docs: update context/ documentation
164
+
165
+ ¿Pushear cambios? (s/n)
166
+ ```
167
+
168
+ ---
169
+
170
+ ## Ejemplo Completo
171
+
172
+ ```
173
+ Usuario: "documentar"
174
+
175
+ IA:
176
+ 🔍 Analizando cambios recientes...
177
+
178
+ git log --oneline -20:
179
+ a1b2c3d feat: implement Redis cache
180
+ d4e5f6g feat: upgrade Laravel to 11.x
181
+ g7h8i9j refactor: move to PostgreSQL
182
+
183
+ 📋 **Cambios detectados:**
184
+ 1. Redis implementado para cache (commit a1b2c3d)
185
+ 2. Laravel actualizado a 11.x (commit d4e5f6g)
186
+ 3. Migración a PostgreSQL (commit g7h8i9j)
187
+
188
+ **Archivos a actualizar:**
189
+ - ✅ context/tech-stack.md (Redis + Laravel 11.x + PostgreSQL)
190
+ - ✅ context/architecture.md (nueva capa de cache)
191
+ - ✅ context/decisions.md (decisión PostgreSQL vs MySQL)
192
+
193
+ ¿Actualizar estos archivos? (s/n)
194
+
195
+ Usuario: "s"
196
+
197
+ IA:
198
+ 📝 Actualizando context/tech-stack.md...
199
+
200
+ **Agregando:**
201
+ - Laravel: 10.x → 11.x
202
+ - Cache: Redis 7.x (nuevo)
203
+ - Database: MySQL 8.0 → PostgreSQL 16.x
204
+
205
+ ✅ tech-stack.md actualizado.
206
+
207
+ 📝 Actualizando context/decisions.md...
208
+
209
+ **Agregando decisión:**
210
+ ## 2026-02-26: Migración a PostgreSQL
211
+
212
+ **Contexto:** MySQL presentaba limitaciones con JSON queries.
213
+
214
+ **Alternativas evaluadas:**
215
+ 1. MySQL 8.0 con JSON
216
+ 2. PostgreSQL 16
217
+ 3. MongoDB
218
+
219
+ **Decisión:** PostgreSQL 16
220
+
221
+ **Razones:**
222
+ - JSON nativo + mejor performance
223
+ - JSONB indexable
224
+ - Full-text search integrado
225
+ - Compatibilidad Laravel excelente
226
+
227
+ ✅ decisions.md actualizado.
228
+
229
+ 📝 Actualizando context/architecture.md...
230
+
231
+ **Agregando capa:**
232
+ ## Cache Layer (Redis)
233
+
234
+ Implementado para reducir carga en base de datos.
235
+
236
+ **Cache keys:**
237
+ - `user:{id}` — Datos de usuario (TTL: 1h)
238
+ - `product:{id}` — Datos de producto (TTL: 30min)
239
+ - `categories` — Árbol de categorías (TTL: 24h)
240
+
241
+ ✅ architecture.md actualizado.
242
+
243
+ 💾 **Commiteando cambios...**
244
+
245
+ git commit -m "docs: update context/ - Redis cache + Laravel 11.x + PostgreSQL"
246
+
247
+ ✅ Commit realizado.
248
+
249
+ ¿Pushear? (s/n)
250
+
251
+ Usuario: "s"
252
+
253
+ git push origin main
254
+
255
+ ✅ Documentación actualizada y pusheada.
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Comandos/Herramientas Usados
261
+
262
+ | Comando | Propósito |
263
+ |---------|-----------|
264
+ | `git log --oneline -20` | Ver commits recientes |
265
+ | `git diff HEAD~10..HEAD --name-only` | Archivos modificados |
266
+ | `git diff HEAD~10..HEAD package.json` | Cambios en dependencias |
267
+ | `git diff context/[archivo]` | Preview de cambios |
268
+ | `git add context/*.md` | Preparar commit |
269
+ | `git commit -m "..."` | Commitear |
270
+
271
+ ---
272
+
273
+ ## Reglas
274
+
275
+ 1. **Siempre usar Git** para detectar cambios reales
276
+ 2. **Mostrar diff** antes de commitear
277
+ 3. **Pedir aprobación** al usuario
278
+ 4. **Commits atómicos** (documentación separada de código)
279
+ 5. **Referencias** a commits que motivaron la actualización
280
+
281
+ ---
282
+
283
+ ## Próximo Comando
284
+
285
+ - `explicar [concepto]` — Explicar código/arquitectura existente
@@ -0,0 +1,234 @@
1
+ # Comando: explicar
2
+
3
+ **Sintaxis:**
4
+ - `explicar [concepto]`
5
+ - `explicar @archivo.php`
6
+ - `explicar esta función`
7
+
8
+ **Objetivo:** Explicar código, arquitectura o decisiones técnicas de forma clara.
9
+
10
+ **Motor:** Usa lectura directa de archivos + análisis contextual.
11
+
12
+ ---
13
+
14
+ ## Flujo
15
+
16
+ ### 1. Identificar Qué Explicar
17
+
18
+ Analiza el argumento:
19
+
20
+ - **Concepto general** — "cómo funciona el carrito"
21
+ - **Archivo específico** — "@ProductController.php"
22
+ - **Función/método** — "esta función" (contexto previo)
23
+ - **Arquitectura** — "por qué usamos services"
24
+ - **Decisión técnica** — "por qué PostgreSQL"
25
+
26
+ ---
27
+
28
+ ### 2. Leer Contexto Relevante
29
+
30
+ **Para Conceptos/Arquitectura:**
31
+ ```bash
32
+ cat proyectos/[proyecto]/CONTRATO.md
33
+ cat proyectos/[proyecto]/context/architecture.md
34
+ cat proyectos/[proyecto]/context/tech-stack.md
35
+ cat proyectos/[proyecto]/context/decisions.md
36
+ ```
37
+
38
+ **Para Código Específico:**
39
+ ```bash
40
+ # Encontrar archivo
41
+ find [directorio-proyecto] -name "[archivo]"
42
+
43
+ # Leer archivo
44
+ cat [ruta-archivo]
45
+
46
+ # Ver imports/dependencias
47
+ grep -E "^use |^import " [ruta-archivo]
48
+ ```
49
+
50
+ **Para Decisiones Técnicas:**
51
+ ```bash
52
+ # Buscar en decisions.md
53
+ grep -A 10 "[tecnología/decisión]" context/decisions.md
54
+ ```
55
+
56
+ ---
57
+
58
+ ### 3. Generar Explicación
59
+
60
+ **Estructura:**
61
+
62
+ ```markdown
63
+ # Explicación: [Concepto/Archivo/Función]
64
+
65
+ ## Resumen
66
+ [1-2 párrafos: qué es y para qué sirve]
67
+
68
+ ## ¿Cómo Funciona?
69
+ [Explicación paso a paso]
70
+
71
+ ## Código Relevante
72
+ [Fragmentos de código con explicación]
73
+
74
+ ## Relaciones
75
+ [Qué otros componentes están relacionados]
76
+
77
+ ## Decisiones Técnicas
78
+ [Por qué se hizo de esta manera]
79
+
80
+ ## Referencias
81
+ [Enlaces a docs, CONTRATO.md, context/]
82
+ ```
83
+
84
+ ---
85
+
86
+ ### 4. Ejemplo Completo
87
+
88
+ ```
89
+ Usuario: "explicar cómo funciona el sistema de autenticación"
90
+
91
+ IA:
92
+ 🔍 Leyendo contexto del proyecto...
93
+
94
+ cat proyectos/app-tienda/CONTRATO.md:
95
+ Sistema de Usuarios → Autenticación: Laravel Sanctum (SPA)
96
+
97
+ cat proyectos/app-tienda/context/tech-stack.md:
98
+ Autenticación: Laravel Sanctum 4.x
99
+ Frontend: React 18 con axios
100
+
101
+ cat proyectos/app-tienda/context/architecture.md:
102
+ API stateless, tokens en localStorage
103
+
104
+ ---
105
+
106
+ # Explicación: Sistema de Autenticación
107
+
108
+ ## Resumen
109
+
110
+ El proyecto usa **Laravel Sanctum** para autenticación SPA (Single Page Application).
111
+
112
+ Es un sistema **stateless** basado en tokens: el frontend (React) envía credenciales al backend (Laravel), recibe un token, y lo incluye en cada request posterior.
113
+
114
+ ## ¿Cómo Funciona?
115
+
116
+ ### 1. Login (Frontend → Backend)
117
+
118
+ Usuario ingresa email + password:
119
+
120
+ ```javascript
121
+ // LoginForm.tsx
122
+ const response = await axios.post('/api/login', {
123
+ email: 'user@example.com',
124
+ password: 'secreto123'
125
+ });
126
+
127
+ const token = response.data.token;
128
+ localStorage.setItem('auth_token', token);
129
+ ```
130
+
131
+ ### 2. Backend Valida Credenciales
132
+
133
+ ```php
134
+ // AuthController.php
135
+ public function login(Request $request)
136
+ {
137
+ $credentials = $request->validate([
138
+ 'email' => 'required|email',
139
+ 'password' => 'required',
140
+ ]);
141
+
142
+ if (!Auth::attempt($credentials)) {
143
+ return response()->json(['error' => 'Invalid credentials'], 401);
144
+ }
145
+
146
+ $user = Auth::user();
147
+ $token = $user->createToken('auth_token')->plainTextToken;
148
+
149
+ return response()->json(['token' => $token]);
150
+ }
151
+ ```
152
+
153
+ ### 3. Requests Autenticados
154
+
155
+ Frontend incluye el token en cada request:
156
+
157
+ ```javascript
158
+ axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
159
+
160
+ // Ahora todas las requests llevan el token
161
+ const products = await axios.get('/api/products');
162
+ ```
163
+
164
+ ### 4. Backend Verifica Token
165
+
166
+ Laravel Sanctum valida automáticamente el token:
167
+
168
+ ```php
169
+ // routes/api.php
170
+ Route::middleware('auth:sanctum')->group(function () {
171
+ Route::get('/products', [ProductController::class, 'index']);
172
+ Route::post('/products', [ProductController::class, 'store']);
173
+ });
174
+ ```
175
+
176
+ ## Relaciones
177
+
178
+ - **Frontend:** LoginForm.tsx, ProtectedRoute.tsx, axiosConfig.js
179
+ - **Backend:** AuthController.php, User model, Sanctum middleware
180
+ - **Base de Datos:** personal_access_tokens table (guarda tokens)
181
+
182
+ ## Decisiones Técnicas
183
+
184
+ **¿Por qué Sanctum y no JWT/Passport?**
185
+
186
+ Referencia: context/decisions.md línea 45
187
+
188
+ **Decisión:** Laravel Sanctum
189
+
190
+ **Razones:**
191
+ 1. Más simple que Passport
192
+ 2. Integrado nativamente en Laravel
193
+ 3. Perfecto para SPAs
194
+ 4. No requiere OAuth server
195
+
196
+ **Alternativas evaluadas:**
197
+ - JWT (tymon/jwt-auth) — Más complejo
198
+ - Laravel Passport — Overkill para SPA simple
199
+
200
+ ## Referencias
201
+
202
+ - CONTRATO.md: "Sistema de Usuarios" sección
203
+ - context/tech-stack.md: Laravel Sanctum 4.x
204
+ - context/decisions.md: Línea 45-60
205
+ - Docs oficiales: https://laravel.com/docs/11.x/sanctum
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Comandos/Herramientas Usados
211
+
212
+ | Comando | Propósito |
213
+ |---------|-----------|
214
+ | `cat proyectos/[proyecto]/CONTRATO.md` | Leer contrato |
215
+ | `cat context/*.md` | Leer contexto |
216
+ | `find . -name "[archivo]"` | Buscar archivo |
217
+ | `grep -A 10 "[patrón]" [archivo]` | Buscar en archivo |
218
+ | `cat [archivo]` | Leer código |
219
+
220
+ ---
221
+
222
+ ## Reglas
223
+
224
+ 1. **Siempre leer contexto** antes de explicar
225
+ 2. **Ejemplos de código** cuando ayude
226
+ 3. **Referencias** a archivos/líneas específicas
227
+ 4. **No inventar** — Si no hay info, decir "No lo sé"
228
+ 5. **Claridad** sobre precisión técnica excesiva
229
+
230
+ ---
231
+
232
+ ## Próximo Comando
233
+
234
+ - `refinar SCRUM-XX` — Refinar user story para implementación