swl-ses 3.3.2

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 (177) hide show
  1. package/CLAUDE.md +425 -0
  2. package/_userland/agentes/.gitkeep +0 -0
  3. package/_userland/habilidades/.gitkeep +0 -0
  4. package/agentes/accesibilidad-wcag-swl.md +683 -0
  5. package/agentes/arquitecto-swl.md +210 -0
  6. package/agentes/auto-evolucion-swl.md +408 -0
  7. package/agentes/backend-api-swl.md +442 -0
  8. package/agentes/backend-node-swl.md +439 -0
  9. package/agentes/backend-python-swl.md +469 -0
  10. package/agentes/backend-workers-swl.md +444 -0
  11. package/agentes/cloud-infra-swl.md +466 -0
  12. package/agentes/consolidador-swl.md +487 -0
  13. package/agentes/datos-swl.md +568 -0
  14. package/agentes/depurador-swl.md +301 -0
  15. package/agentes/devops-ci-swl.md +352 -0
  16. package/agentes/disenador-ui-swl.md +546 -0
  17. package/agentes/documentador-swl.md +323 -0
  18. package/agentes/frontend-angular-swl.md +603 -0
  19. package/agentes/frontend-css-swl.md +700 -0
  20. package/agentes/frontend-react-swl.md +672 -0
  21. package/agentes/frontend-swl.md +483 -0
  22. package/agentes/frontend-tailwind-swl.md +808 -0
  23. package/agentes/implementador-swl.md +235 -0
  24. package/agentes/investigador-swl.md +274 -0
  25. package/agentes/investigador-ux-swl.md +482 -0
  26. package/agentes/migrador-swl.md +389 -0
  27. package/agentes/mobile-android-swl.md +473 -0
  28. package/agentes/mobile-cross-swl.md +501 -0
  29. package/agentes/mobile-ios-swl.md +464 -0
  30. package/agentes/notificador-swl.md +886 -0
  31. package/agentes/observabilidad-swl.md +408 -0
  32. package/agentes/orquestador-swl.md +490 -0
  33. package/agentes/planificador-swl.md +222 -0
  34. package/agentes/producto-prd-swl.md +565 -0
  35. package/agentes/release-manager-swl.md +545 -0
  36. package/agentes/rendimiento-swl.md +691 -0
  37. package/agentes/revisor-codigo-swl.md +254 -0
  38. package/agentes/revisor-seguridad-swl.md +316 -0
  39. package/agentes/tdd-qa-swl.md +323 -0
  40. package/agentes/ux-disenador-swl.md +498 -0
  41. package/bin/swl-ses.js +119 -0
  42. package/comandos/swl/actualizar.md +117 -0
  43. package/comandos/swl/aprender.md +348 -0
  44. package/comandos/swl/auditar-deps.md +390 -0
  45. package/comandos/swl/autoresearch.md +346 -0
  46. package/comandos/swl/checkpoint.md +296 -0
  47. package/comandos/swl/compactar.md +283 -0
  48. package/comandos/swl/crear-skill.md +609 -0
  49. package/comandos/swl/discutir-fase.md +230 -0
  50. package/comandos/swl/ejecutar-fase.md +302 -0
  51. package/comandos/swl/evolucionar.md +377 -0
  52. package/comandos/swl/instalar.md +220 -0
  53. package/comandos/swl/mapear-codebase.md +205 -0
  54. package/comandos/swl/nuevo-proyecto.md +154 -0
  55. package/comandos/swl/planear-fase.md +221 -0
  56. package/comandos/swl/release.md +405 -0
  57. package/comandos/swl/salud.md +382 -0
  58. package/comandos/swl/verificar.md +292 -0
  59. package/habilidades/accesibilidad-a11y/SKILL.md +584 -0
  60. package/habilidades/angular-avanzado/SKILL.md +491 -0
  61. package/habilidades/angular-moderno/SKILL.md +326 -0
  62. package/habilidades/api-rest-diseno/SKILL.md +302 -0
  63. package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
  64. package/habilidades/aprendizaje-continuo/SKILL.md +369 -0
  65. package/habilidades/async-python/SKILL.md +474 -0
  66. package/habilidades/auth-patrones/SKILL.md +488 -0
  67. package/habilidades/auto-evolucion-protocolo/SKILL.md +376 -0
  68. package/habilidades/autoresearch/SKILL.md +248 -0
  69. package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
  70. package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
  71. package/habilidades/checklist-calidad/SKILL.md +247 -0
  72. package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
  73. package/habilidades/checklist-seguridad/SKILL.md +224 -0
  74. package/habilidades/checkpoints-verificacion/SKILL.md +309 -0
  75. package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
  76. package/habilidades/ci-cd-pipelines/SKILL.md +583 -0
  77. package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
  78. package/habilidades/cloud-aws/SKILL.md +497 -0
  79. package/habilidades/compactacion-contexto/SKILL.md +201 -0
  80. package/habilidades/contenedores-docker/SKILL.md +453 -0
  81. package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
  82. package/habilidades/css-moderno/SKILL.md +463 -0
  83. package/habilidades/datos-etl/SKILL.md +486 -0
  84. package/habilidades/dependencias-auditoria/SKILL.md +293 -0
  85. package/habilidades/deprecacion-migracion/SKILL.md +485 -0
  86. package/habilidades/design-tokens/SKILL.md +519 -0
  87. package/habilidades/discutir-fase/SKILL.md +167 -0
  88. package/habilidades/diseno-responsivo/SKILL.md +326 -0
  89. package/habilidades/django-experto/SKILL.md +395 -0
  90. package/habilidades/doc-sync/SKILL.md +259 -0
  91. package/habilidades/ejecutar-fase/SKILL.md +199 -0
  92. package/habilidades/estructura-proyecto-claude/SKILL.md +459 -0
  93. package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
  94. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +213 -0
  95. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
  96. package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
  97. package/habilidades/event-driven/SKILL.md +580 -0
  98. package/habilidades/extractor-de-aprendizajes/SKILL.md +234 -0
  99. package/habilidades/fastapi-experto/SKILL.md +368 -0
  100. package/habilidades/frontend-avanzado/SKILL.md +555 -0
  101. package/habilidades/git-worktrees-paralelo/SKILL.md +246 -0
  102. package/habilidades/iam-secretos/SKILL.md +511 -0
  103. package/habilidades/instalar-sistema/SKILL.md +140 -0
  104. package/habilidades/kubernetes-orquestacion/SKILL.md +549 -0
  105. package/habilidades/manejo-errores/SKILL.md +512 -0
  106. package/habilidades/mapear-codebase/SKILL.md +199 -0
  107. package/habilidades/microservicios/SKILL.md +473 -0
  108. package/habilidades/mobile-flutter/SKILL.md +566 -0
  109. package/habilidades/mobile-react-native/SKILL.md +493 -0
  110. package/habilidades/monitoring-alertas/SKILL.md +447 -0
  111. package/habilidades/node-experto/SKILL.md +521 -0
  112. package/habilidades/notificaciones-multicanal/SKILL.md +448 -0
  113. package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
  114. package/habilidades/nuevo-proyecto/SKILL.md +183 -0
  115. package/habilidades/patrones-python/SKILL.md +381 -0
  116. package/habilidades/performance-baseline/SKILL.md +243 -0
  117. package/habilidades/planear-fase/SKILL.md +184 -0
  118. package/habilidades/postgresql-experto/SKILL.md +379 -0
  119. package/habilidades/react-experto/SKILL.md +434 -0
  120. package/habilidades/react-optimizacion/SKILL.md +328 -0
  121. package/habilidades/release-semver/SKILL.md +226 -0
  122. package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
  123. package/habilidades/sql-optimizacion/SKILL.md +314 -0
  124. package/habilidades/tailwind-experto/SKILL.md +412 -0
  125. package/habilidades/tdd-workflow/SKILL.md +267 -0
  126. package/habilidades/testing-python/SKILL.md +350 -0
  127. package/habilidades/threat-model-lite/SKILL.md +218 -0
  128. package/habilidades/typescript-avanzado/SKILL.md +454 -0
  129. package/habilidades/ux-diseno/SKILL.md +488 -0
  130. package/habilidades/validacion-ci-sistema/SKILL.md +543 -0
  131. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
  132. package/habilidades/verificar-trabajo/SKILL.md +208 -0
  133. package/habilidades/wireframes-flujos/SKILL.md +396 -0
  134. package/habilidades/workflow-claude-code/SKILL.md +359 -0
  135. package/hooks/calidad-pre-commit.js +578 -0
  136. package/hooks/escaneo-secretos.js +302 -0
  137. package/hooks/extraccion-aprendizajes.js +550 -0
  138. package/hooks/linea-estado.js +249 -0
  139. package/hooks/monitor-contexto.js +230 -0
  140. package/hooks/proteccion-rutas.js +249 -0
  141. package/manifiestos/hooks-config.json +41 -0
  142. package/manifiestos/modulos.json +318 -0
  143. package/manifiestos/perfiles.json +189 -0
  144. package/package.json +45 -0
  145. package/plantillas/PROJECT.md +122 -0
  146. package/plantillas/REQUIREMENTS.md +132 -0
  147. package/plantillas/ROADMAP.md +143 -0
  148. package/plantillas/STATE.md +109 -0
  149. package/plantillas/research/ARCHITECTURE.md +220 -0
  150. package/plantillas/research/FEATURES.md +175 -0
  151. package/plantillas/research/PITFALLS.md +299 -0
  152. package/plantillas/research/STACK.md +233 -0
  153. package/plantillas/research/SUMMARY.md +165 -0
  154. package/plugin.json +144 -0
  155. package/reglas/accesibilidad.md +269 -0
  156. package/reglas/api-diseno.md +400 -0
  157. package/reglas/arquitectura.md +183 -0
  158. package/reglas/cloud-infra.md +247 -0
  159. package/reglas/docs.md +245 -0
  160. package/reglas/estilo-codigo.md +179 -0
  161. package/reglas/git-workflow.md +186 -0
  162. package/reglas/performance.md +195 -0
  163. package/reglas/pruebas.md +159 -0
  164. package/reglas/seguridad.md +151 -0
  165. package/reglas/skills-estandar.md +473 -0
  166. package/scripts/actualizar.js +51 -0
  167. package/scripts/desinstalar.js +86 -0
  168. package/scripts/doctor.js +222 -0
  169. package/scripts/inicializar.js +89 -0
  170. package/scripts/instalador.js +333 -0
  171. package/scripts/lib/detectar-runtime.js +177 -0
  172. package/scripts/lib/estado.js +112 -0
  173. package/scripts/lib/hooks-settings.js +283 -0
  174. package/scripts/lib/manifiestos.js +138 -0
  175. package/scripts/lib/seguridad.js +160 -0
  176. package/scripts/publicar.js +209 -0
  177. package/scripts/validar.js +120 -0
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: performance-baseline
3
+ description: Establece y documenta una línea base de rendimiento para el sistema. Mide latencia p50/p95/p99, throughput, uso de memoria y CPU. Identifica cuellos de botella con herramientas de profiling. Guía la optimización con datos, no con suposiciones.
4
+ ---
5
+
6
+ # Habilidad: Performance Baseline
7
+
8
+ ## Propósito
9
+
10
+ "Optimizar sin medir es adivinar." Esta habilidad establece mediciones reales
11
+ del sistema antes de cualquier optimización, documenta el baseline y guía
12
+ el trabajo de mejora con evidencia. Ninguna optimización se acepta sin una
13
+ comparación before/after con los mismos benchmarks.
14
+
15
+ ## Cuándo activar
16
+
17
+ - Antes de iniciar una fase de optimización de rendimiento
18
+ - Cuando el usuario reporta "el sistema está lento" sin métricas
19
+ - Al establecer SLOs para un sistema nuevo
20
+ - Antes y después de cambios en queries, caching o arquitectura
21
+
22
+ ---
23
+
24
+ ## Métricas clave a medir
25
+
26
+ ### Latencia (la más importante para APIs)
27
+
28
+ | Percentil | Descripción | Target típico web |
29
+ |-----------|-------------|------------------|
30
+ | p50 | Mediana — 50% de requests son más rápidos | < 100ms |
31
+ | p95 | 95% de requests terminan antes de este tiempo | < 300ms |
32
+ | p99 | El "peor caso razonable" | < 1000ms |
33
+ | p99.9 | Outliers extremos | < 3000ms |
34
+
35
+ **Por qué p95 y p99, no promedio**: El promedio oculta las colas lentas. Un
36
+ sistema con p50=50ms y p99=10000ms tiene un promedio "aceptable" pero una
37
+ experiencia terrible para 1 de cada 100 usuarios.
38
+
39
+ ### Throughput
40
+
41
+ - **Requests por segundo (RPS)**: Cuántas peticiones puede manejar el sistema
42
+ - **Concurrencia máxima**: Número de requests simultáneos sin degradación
43
+ - **Punto de quiebre**: RPS donde la latencia p99 supera el threshold aceptable
44
+
45
+ ### Recursos del sistema
46
+
47
+ - **CPU**: % de uso en carga normal, pico y stress
48
+ - **Memoria**: RSS basal, memoria en carga, crecimiento por hora (leak detection)
49
+ - **I/O de BD**: queries/segundo, tiempo de query p95, conexiones activas
50
+ - **Network**: bytes in/out, conexiones abiertas
51
+
52
+ ---
53
+
54
+ ## Herramientas de medición por stack
55
+
56
+ ### Backend Python / FastAPI
57
+
58
+ **Profiling de CPU** — encontrar funciones lentas:
59
+ ```python
60
+ # Con cProfile (incluido en stdlib)
61
+ import cProfile
62
+ import pstats
63
+ import io
64
+
65
+ def profile_function():
66
+ pr = cProfile.Profile()
67
+ pr.enable()
68
+ # ... función a perfilar
69
+ pr.disable()
70
+
71
+ s = io.StringIO()
72
+ ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
73
+ ps.print_stats(20) # Top 20 funciones más lentas
74
+ print(s.getvalue())
75
+ ```
76
+
77
+ **Profiling de memoria** — detectar leaks:
78
+ ```bash
79
+ pip install memory-profiler
80
+ python -m memory_profiler mi_script.py
81
+ ```
82
+
83
+ **Profiling de queries SQL** — con SQLAlchemy:
84
+ ```python
85
+ # En desarrollo, activar logging de queries con tiempo
86
+ import logging
87
+ logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
88
+
89
+ # O con pgBadger / pg_stat_statements en PostgreSQL
90
+ # Ver queries más lentas:
91
+ SELECT query, calls, total_time, mean_time, stddev_time
92
+ FROM pg_stat_statements
93
+ ORDER BY mean_time DESC
94
+ LIMIT 20;
95
+ ```
96
+
97
+ **Load testing** — con locust:
98
+ ```python
99
+ # locustfile.py
100
+ from locust import HttpUser, task, between
101
+
102
+ class APIUser(HttpUser):
103
+ wait_time = between(0.1, 0.5)
104
+
105
+ @task(3) # peso 3 = ejecuta 3x más frecuente
106
+ def listar_recursos(self):
107
+ self.client.get("/api/v1/recursos",
108
+ headers={"Authorization": f"Bearer {self.token}"})
109
+
110
+ @task(1)
111
+ def crear_recurso(self):
112
+ self.client.post("/api/v1/recursos",
113
+ json={"nombre": "test"},
114
+ headers={"Authorization": f"Bearer {self.token}"})
115
+ ```
116
+
117
+ ```bash
118
+ # Ejecutar con 100 usuarios, rampa de 10/segundo
119
+ locust -f locustfile.py --headless -u 100 -r 10 --run-time 2m \
120
+ --host http://localhost:8000
121
+ ```
122
+
123
+ ### Frontend Angular
124
+
125
+ **Core Web Vitals** (métricas que Google y usuarios ven):
126
+ | Métrica | Descripción | Target |
127
+ |---------|-------------|--------|
128
+ | LCP | Largest Contentful Paint — tiempo hasta que el contenido principal es visible | < 2.5s |
129
+ | FID / INP | First Input Delay / Interaction to Next Paint | < 100ms |
130
+ | CLS | Cumulative Layout Shift — estabilidad visual | < 0.1 |
131
+ | TTFB | Time to First Byte | < 600ms |
132
+
133
+ ```bash
134
+ # Lighthouse CLI
135
+ npm install -g lighthouse
136
+ lighthouse http://localhost:4200 --output=json --output-path=lighthouse-report.json
137
+
138
+ # Analizar bundle size
139
+ ng build --stats-json
140
+ npx webpack-bundle-analyzer dist/*/stats.json
141
+ ```
142
+
143
+ **Profiling de Angular en desarrollo**:
144
+ ```typescript
145
+ // Habilitar profiler de Angular
146
+ import { enableProdMode } from '@angular/core';
147
+ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
148
+
149
+ // En main.ts para development
150
+ platformBrowserDynamic().bootstrapModule(AppModule)
151
+ .then(() => {
152
+ // Chrome DevTools > Performance > Profile
153
+ // Buscar "Angular" en la traza para ver change detection cycles
154
+ });
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Plantilla de documento baseline
160
+
161
+ ### `.planning/PERFORMANCE-BASELINE.md`
162
+
163
+ ```markdown
164
+ # PERFORMANCE-BASELINE.md
165
+ **Fecha de medición**: [fecha]
166
+ **Versión del sistema**: [git commit hash]
167
+ **Entorno**: [staging / producción / local con datos reales]
168
+ **Herramientas usadas**: [locust, pytest-benchmark, lighthouse, etc.]
169
+
170
+ ## Condiciones del test
171
+ - Datos en BD: [número de registros en tablas principales]
172
+ - Concurrencia simulada: [N usuarios simultáneos]
173
+ - Duración del test: [N minutos]
174
+ - Hardware del servidor: [specs o instancia cloud]
175
+
176
+ ## Resultados de latencia (API)
177
+
178
+ | Endpoint | p50 | p95 | p99 | RPS máx |
179
+ |----------|-----|-----|-----|---------|
180
+ | GET /api/v1/[recurso] | Xms | Xms | Xms | N |
181
+ | POST /api/v1/[recurso] | Xms | Xms | Xms | N |
182
+
183
+ ## Resultados de recursos
184
+
185
+ | Métrica | Basal | Bajo carga | Pico |
186
+ |---------|-------|-----------|------|
187
+ | CPU % | | | |
188
+ | Memoria RSS | | | |
189
+ | Conexiones BD activas | | | |
190
+ | Queries/segundo | | | |
191
+
192
+ ## Core Web Vitals (si aplica)
193
+
194
+ | Métrica | Valor medido | Target | Estado |
195
+ |---------|-------------|--------|--------|
196
+ | LCP | | < 2.5s | PASS/FAIL |
197
+ | INP | | < 100ms | PASS/FAIL |
198
+ | CLS | | < 0.1 | PASS/FAIL |
199
+
200
+ ## Top 5 queries más lentas
201
+ | Query | Duración media | Llamadas/min | Plan de optimización |
202
+ |-------|---------------|-------------|---------------------|
203
+ | | | | |
204
+
205
+ ## Cuellos de botella identificados
206
+ 1. [Descripción, causa raíz, impacto estimado]
207
+
208
+ ## SLOs propuestos (basados en baseline)
209
+ | Métrica | SLO | Alerta si supera |
210
+ |---------|-----|-----------------|
211
+ | Latencia p95 | < Xms | > Xms |
212
+ | Error rate | < 0.1% | > 0.5% |
213
+ | Disponibilidad | > 99.5% | < 99.0% |
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Proceso de optimización guiada por datos
219
+
220
+ ```
221
+ 1. Medir → documentar baseline
222
+ 2. Identificar el cuello de botella más costoso (no el más fácil)
223
+ 3. Hipótesis: "Creo que X es lento porque Y"
224
+ 4. Implementar UNA optimización
225
+ 5. Medir con los MISMOS benchmarks del baseline
226
+ 6. Comparar before/after
227
+ 7. Documentar resultado en PERFORMANCE-BASELINE.md
228
+ 8. Si mejoró: hacer commit, continuar con siguiente cuello de botella
229
+ 9. Si no mejoró: revertir, revisar hipótesis
230
+ ```
231
+
232
+ ### Optimizaciones por orden de impacto típico
233
+
234
+ 1. **Índices de BD faltantes** — impacto: 10x-1000x en queries lentas
235
+ 2. **N+1 queries** — impacto: reducción de O(n) queries a O(1)
236
+ 3. **Caching de resultados costosos** — impacto: 5x-50x en datos calientes
237
+ 4. **Connection pooling** — impacto: elimina overhead de conexiones
238
+ 5. **Paginación de resultados grandes** — impacto: reducción de tiempo y memoria
239
+ 6. **Bundle splitting en frontend** — impacto: reducción de tiempo de carga inicial
240
+
241
+ **Anti-patrón a evitar**: optimizar código Python/TypeScript antes de verificar
242
+ que las queries de BD no son el problema real. El 80% de los problemas de
243
+ rendimiento en aplicaciones web tienen origen en la capa de datos.
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: planear-fase
3
+ description: Crea el PLAN.md ejecutable para una fase de desarrollo. Descompone la fase en tareas atómicas con dependencias explícitas, las agrupa en oleadas de ejecución paralela cuando es posible, y aplica verificación goal-backward para garantizar que el plan completo satisface los criterios de éxito definidos en CONTEXT.md.
4
+ ---
5
+
6
+ # Habilidad: Planear Fase de Desarrollo
7
+
8
+ ## Propósito
9
+
10
+ Un plan ejecutable no es una lista de tareas — es un grafo de dependencias con
11
+ criterios de verificación por tarea. Esta habilidad transforma el CONTEXT.md de
12
+ una fase en un PLAN.md que el agente ejecutor puede seguir sin ambigüedad y sin
13
+ interrumpir al usuario para pedir aclaraciones.
14
+
15
+ ## Cuándo activar
16
+
17
+ - Después de ejecutar `discutir-fase` y tener CONTEXT.md listo
18
+ - Cuando el usuario pide "planear la fase N"
19
+ - Cuando un plan existente necesita revisión o replanificación
20
+
21
+ ## Prerrequisito obligatorio
22
+
23
+ Leer `.planning/CONTEXT-[fase].md` antes de generar cualquier tarea. Si no existe,
24
+ activar primero `discutir-fase`.
25
+
26
+ ---
27
+
28
+ ## Principios de descomposición
29
+
30
+ ### 1. Atomicidad
31
+
32
+ Una tarea es atómica si:
33
+ - Puede completarse en una sola sesión de trabajo (< 2 horas de desarrollo)
34
+ - Tiene un único criterio de verificación binario (funciona / no funciona)
35
+ - Puede hacerse commit de forma independiente sin romper el sistema
36
+
37
+ Si una tarea viola alguna de estas condiciones, subdividirla.
38
+
39
+ ### 2. Dependencias explícitas
40
+
41
+ Cada tarea declara sus dependencias en formato `[T-XX, T-YY]`. Una tarea sin
42
+ dependencias puede ejecutarse en la primera oleada. El grafo NO puede tener ciclos.
43
+
44
+ ### 3. Clasificación AFK / HITL
45
+
46
+ | Tipo | Definición |
47
+ |------|-----------|
48
+ | AFK (autónoma) | El agente puede completarla sin intervención humana |
49
+ | HITL (human-in-the-loop) | Requiere decisión, revisión o input del usuario |
50
+
51
+ Las tareas HITL son puntos de parada obligatoria en la ejecución.
52
+
53
+ ### 4. Oleadas de ejecución
54
+
55
+ Agrupa tareas sin dependencias mutuas en la misma oleada. Las tareas de una
56
+ oleada pueden ejecutarse en paralelo (o en secuencia rápida si el contexto lo
57
+ requiere).
58
+
59
+ ---
60
+
61
+ ## Algoritmo de construcción del plan
62
+
63
+ **Paso 1 — Listar entregables**
64
+ Del CONTEXT.md, extraer todos los entregables (features, endpoints, componentes,
65
+ migraciones, documentos).
66
+
67
+ **Paso 2 — Identificar capas**
68
+ Para cada entregable de software, descomponerlo en capas estándar:
69
+ - Tipos e interfaces / esquemas
70
+ - Modelos de datos y migraciones
71
+ - Lógica de negocio (services)
72
+ - Interfaz externa (endpoints / componentes UI)
73
+ - Tests
74
+ - Documentación
75
+
76
+ **Paso 3 — Asignar dependencias**
77
+ Aplicar regla: una capa no puede implementarse sin las capas de las que depende.
78
+ Orden típico: tipos → modelos → services → endpoints → UI → tests.
79
+
80
+ **Paso 4 — Agrupar en oleadas**
81
+ Usar topological sort mental: la Oleada N contiene todas las tareas cuyas
82
+ dependencias están en oleadas anteriores.
83
+
84
+ **Paso 5 — Verificación goal-backward**
85
+ Preguntar: "Si ejecuto todas las tareas del plan, ¿el criterio de éxito del
86
+ CONTEXT.md queda satisfecho?" Si la respuesta es no, agregar las tareas faltantes.
87
+
88
+ ---
89
+
90
+ ## Estructura del PLAN.md
91
+
92
+ ```markdown
93
+ # PLAN.md — Fase [N]: [Nombre]
94
+ **Generado**: [fecha]
95
+ **Basado en**: CONTEXT-[fase].md
96
+ **Criterio de éxito**: [copiado del CONTEXT.md]
97
+
98
+ ## Resumen del plan
99
+ - Total de tareas: N
100
+ - Oleadas: M
101
+ - Tareas HITL: K (paradas de revisión)
102
+ - Duración estimada: X horas / Y días
103
+
104
+ ---
105
+
106
+ ## Oleada 1 — Fundamentos (sin dependencias)
107
+
108
+ ### T-01: [Nombre de la tarea]
109
+ - **Tipo**: AFK
110
+ - **Descripción**: [Qué hacer, sin ambigüedad. Incluir nombres de archivos si aplica.]
111
+ - **Entregable verificable**: [Qué existe cuando está completa]
112
+ - **Criterio de verificación**: [Comando de verificación o descripción observable]
113
+ - **Dependencias**: ninguna
114
+ - **Tiempo estimado**: 30 min
115
+
116
+ ### T-02: [Nombre]
117
+ - **Tipo**: AFK
118
+ - **Descripción**:
119
+ - **Entregable verificable**:
120
+ - **Criterio de verificación**:
121
+ - **Dependencias**: ninguna
122
+ - **Tiempo estimado**:
123
+
124
+ ---
125
+
126
+ ## Oleada 2 — [Nombre conceptual]
127
+
128
+ ### T-03: [Nombre]
129
+ - **Tipo**: AFK
130
+ - **Descripción**:
131
+ - **Entregable verificable**:
132
+ - **Criterio de verificación**:
133
+ - **Dependencias**: [T-01, T-02]
134
+ - **Tiempo estimado**:
135
+
136
+ ---
137
+
138
+ ## Oleada N — Verificación y cierre
139
+
140
+ ### T-NN: Verificación goal-backward
141
+ - **Tipo**: HITL
142
+ - **Descripción**: Revisar que todos los criterios de éxito del CONTEXT.md estén
143
+ satisfechos. Presentar evidencia al usuario.
144
+ - **Entregable verificable**: Reporte de verificación firmado
145
+ - **Criterio de verificación**: Usuario confirma aprobación
146
+ - **Dependencias**: [todas las tareas anteriores]
147
+ - **Tiempo estimado**: 30 min
148
+
149
+ ---
150
+
151
+ ## Matriz de riesgos del plan
152
+
153
+ | Tarea | Riesgo | Probabilidad | Mitigación |
154
+ |-------|--------|-------------|-----------|
155
+ | | | | |
156
+
157
+ ## Tareas excluidas explícitamente
158
+ - [Feature X]: diferida a siguiente fase por [razón]
159
+
160
+ ## Notas de diseño del plan
161
+ [Decisiones tomadas durante la planeación que el ejecutor debe conocer]
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Anti-patrones a evitar en el plan
167
+
168
+ - **Tarea "Implementar módulo X"**: demasiado vaga, no atómica
169
+ - **Dependencias circulares**: T-03 depende de T-05 que depende de T-03
170
+ - **Tarea sin criterio de verificación**: no se puede saber si está hecha
171
+ - **Plan sin oleada de verificación final**: el plan puede estar completo pero
172
+ los criterios de éxito sin satisfacer
173
+ - **Mezclar implementación y tests en una sola tarea**: deben ser tareas separadas
174
+
175
+ ---
176
+
177
+ ## Checklist antes de entregar el PLAN.md
178
+
179
+ - [ ] Todas las tareas son atómicas (< 2 horas)
180
+ - [ ] Todas las dependencias forman un DAG (sin ciclos)
181
+ - [ ] Cada tarea tiene criterio de verificación binario
182
+ - [ ] Las tareas HITL están identificadas y justificadas
183
+ - [ ] La verificación goal-backward confirma que el plan satisface CONTEXT.md
184
+ - [ ] El plan está guardado en `.planning/PLAN-fase-[N].md`