specleap-framework 2.1.0 → 2.1.5

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 (75) hide show
  1. package/.agents/backend.md +3 -3
  2. package/.agents/frontend.md +2 -2
  3. package/.agents/producto.md +9 -11
  4. package/.claude/hooks/spec-guard.sh +132 -0
  5. package/.claude/settings.json.template +15 -0
  6. package/.clinerules +3 -3
  7. package/.coderabbit.yaml +2 -4
  8. package/.commands/compliance.md +89 -0
  9. package/.commands/inicio.md +15 -15
  10. package/.commands/nuevo/README.md +2 -2
  11. package/.commands/planificar.md +1 -1
  12. package/.continue/rules/04-git-workflow.md +5 -5
  13. package/.continuerules +3 -4
  14. package/.cursorrules +1 -1
  15. package/.github/copilot-instructions.md +1 -1
  16. package/.specleap/i18n/en.json +177 -0
  17. package/.specleap/i18n/es.json +177 -0
  18. package/.specleap/i18n.sh +63 -0
  19. package/CHANGELOG.md +276 -0
  20. package/CLAUDE.md +54 -13
  21. package/README.md +169 -528
  22. package/SETUP.md +16 -13
  23. package/openspec/INDEX.md +53 -0
  24. package/openspec/README.md +104 -0
  25. package/openspec/SPEC-FORMAT.md +168 -0
  26. package/openspec/changes/.gitkeep +0 -0
  27. package/openspec/cli/COMMAND_REFERENCE.md +817 -0
  28. package/openspec/cli/README.md +189 -0
  29. package/openspec/cli/apply.sh +229 -0
  30. package/openspec/cli/archive.sh +240 -0
  31. package/openspec/cli/code-review.sh +207 -0
  32. package/openspec/cli/common.sh +171 -0
  33. package/openspec/cli/enrich.sh +188 -0
  34. package/openspec/cli/ff.sh +329 -0
  35. package/openspec/cli/new.sh +260 -0
  36. package/openspec/cli/openspec +82 -0
  37. package/openspec/cli/report.sh +244 -0
  38. package/openspec/cli/status.sh +178 -0
  39. package/openspec/cli/verify.sh +246 -0
  40. package/openspec/config.yaml +76 -0
  41. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/00-original-user-story.md +5 -0
  42. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/01-refined-user-story.md +106 -0
  43. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/README.md +333 -0
  44. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/design.md +461 -0
  45. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/proposal.md +124 -0
  46. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/functional/F001-authentication.spec.md +399 -0
  47. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/technical/T001-jwt-implementation.spec.md +606 -0
  48. package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/tasks.md +433 -0
  49. package/openspec/examples/MERMAID_DIAGRAMS.md +481 -0
  50. package/openspec/examples/README.md +334 -0
  51. package/openspec/specs/functional/.gitkeep +0 -0
  52. package/openspec/specs/integration/.gitkeep +0 -0
  53. package/openspec/specs/security/.gitkeep +0 -0
  54. package/openspec/specs/technical/.gitkeep +0 -0
  55. package/openspec/templates/.coderabbit.yaml +259 -0
  56. package/openspec/templates/design.md +181 -0
  57. package/openspec/templates/proposal.md +79 -0
  58. package/openspec/templates/tasks.md +193 -0
  59. package/package.json +10 -5
  60. package/rules/git-workflow.md +3 -3
  61. package/rules/session-protocol.md +3 -3
  62. package/scripts/README.md +13 -25
  63. package/scripts/compliance-audit.sh +325 -0
  64. package/scripts/generate-contract.sh +4 -4
  65. package/scripts/install-skills.sh +12 -11
  66. package/scripts/lib/render-contrato.py +1 -1
  67. package/scripts/quality-baseline.sh +210 -0
  68. package/scripts/quality-healing.sh +241 -0
  69. package/setup.sh +3 -3
  70. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  71. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  72. package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  73. package/scripts/lib/jira-project-utils.sh +0 -222
  74. package/scripts/setup-mcp.sh +0 -654
  75. package/scripts/test-cuestionario.sh +0 -428
@@ -0,0 +1,76 @@
1
+ # OpenSpec Configuration
2
+ # DevFlow Pro — Spec-Driven Development
3
+
4
+ version: "1.0"
5
+
6
+ # Estructura de directorios
7
+ directories:
8
+ specs: "specs" # Source of truth
9
+ changes: "changes" # Propuestas de cambios
10
+ templates: "templates" # Plantillas
11
+
12
+ # Dominios de specs
13
+ domains:
14
+ - functional # Specs funcionales
15
+ - technical # Specs técnicas
16
+ - integration # Specs de integración
17
+ - security # Specs de seguridad
18
+
19
+ # Estados de specs
20
+ spec_states:
21
+ - draft # Borrador
22
+ - review # En revisión
23
+ - approved # Aprobada
24
+ - implemented # Implementada
25
+ - deprecated # Deprecada
26
+
27
+ # Estados de cambios (propuestas)
28
+ change_states:
29
+ - draft # Borrador de propuesta
30
+ - review # En revisión
31
+ - approved # Aprobada para desarrollo
32
+ - in_progress # En desarrollo
33
+ - testing # En testing
34
+ - completed # Completada
35
+ - archived # Archivada
36
+ - rejected # Rechazada
37
+
38
+ # Formato de IDs
39
+ id_format:
40
+ spec: "SPEC-{number:04d}" # SPEC-0001
41
+ change: "CHANGE-{number:04d}" # CHANGE-0001
42
+ task: "TASK-{number:03d}" # TASK-001
43
+
44
+ # Integración con ticket tracker
45
+ tracker:
46
+ enabled: true
47
+ project_key: "PROJ" # Cambiar por proyecto
48
+ epic_prefix: "Epic: "
49
+ story_prefix: "Story: "
50
+ labels:
51
+ - devflow
52
+ - has-spec
53
+ - sdd
54
+
55
+ # Integración con Git
56
+ git:
57
+ branch_prefix:
58
+ feature: "feat/"
59
+ bugfix: "fix/"
60
+ hotfix: "hotfix/"
61
+ docs: "docs/"
62
+ commit_refs: true # Incluir refs en commits
63
+
64
+ # Integración con CodeRabbit
65
+ coderabbit:
66
+ required: true # Obligatorio para PRs
67
+ profile: assertive # Perfil de review
68
+ language: es # Idioma de reviews
69
+
70
+ # Testing
71
+ testing:
72
+ coverage_threshold:
73
+ business_logic: 80
74
+ utilities: 90
75
+ components: 70
76
+ report_required: true # Testing report obligatorio
@@ -0,0 +1,5 @@
1
+ # User Story Original
2
+
3
+ Como usuario del sistema,
4
+ quiero poder hacer login con email y contraseña
5
+ para acceder a mi cuenta de forma segura.
@@ -0,0 +1,106 @@
1
+ # [US-AUTH-001] Autenticación de Usuario con Email y Contraseña
2
+
3
+ ## User Story
4
+ Como **usuario registrado del sistema**, quiero **autenticarme con mi email y contraseña** para **acceder de forma segura a mi cuenta y funcionalidades personalizadas**.
5
+
6
+ ## Contexto del Negocio
7
+ La autenticación es la primera barrera de seguridad del sistema. Permite identificar usuarios, proteger datos personales, y habilitar funcionalidades específicas según permisos. Sin autenticación robusta, no podemos garantizar privacidad ni cumplir con regulaciones de protección de datos.
8
+
9
+ ## Criterios de Aceptación
10
+
11
+ ### Escenario 1: Login exitoso con credenciales válidas
12
+ - **GIVEN** un usuario registrado con email `usuario@example.com` y contraseña válida
13
+ - **WHEN** ingresa sus credenciales correctas en el formulario de login
14
+ - **THEN** el sistema valida las credenciales contra la base de datos
15
+ - **AND** genera un token JWT válido por 24 horas
16
+ - **AND** redirige al usuario al dashboard principal
17
+ - **AND** registra el login en el log de auditoría
18
+
19
+ ### Escenario 2: Login fallido por credenciales inválidas
20
+ - **GIVEN** un usuario intenta hacer login
21
+ - **WHEN** ingresa un email válido pero contraseña incorrecta
22
+ - **THEN** el sistema muestra error genérico "Credenciales inválidas"
23
+ - **AND** NO revela si el email existe en el sistema
24
+ - **AND** registra el intento fallido con IP y timestamp
25
+ - **AND** incrementa contador de intentos fallidos
26
+
27
+ ### Escenario 3: Cuenta bloqueada por intentos fallidos
28
+ - **GIVEN** un usuario ha fallado 5 intentos de login en 15 minutos
29
+ - **WHEN** intenta hacer login nuevamente
30
+ - **THEN** el sistema bloquea la cuenta por 30 minutos
31
+ - **AND** muestra mensaje "Cuenta temporalmente bloqueada"
32
+ - **AND** envía notificación de seguridad al email del usuario
33
+ - **AND** registra el bloqueo en logs de seguridad
34
+
35
+ ### Escenario 4: Email no registrado
36
+ - **GIVEN** un usuario intenta login con email no registrado
37
+ - **WHEN** envía el formulario
38
+ - **THEN** muestra error genérico "Credenciales inválidas" (sin revelar que el email no existe)
39
+ - **AND** registra el intento con IP
40
+
41
+ ## Casos de Uso Adicionales
42
+
43
+ ### Caso 1: Recordar sesión (Remember Me)
44
+ - Checkbox opcional "Recordar en este dispositivo"
45
+ - Si marcado, token válido por 30 días (en lugar de 24h)
46
+ - Almacenado en cookie HttpOnly
47
+
48
+ ### Caso 2: Logout
49
+ - Invalidar token JWT actual
50
+ - Redirigir a página de login
51
+ - Limpiar sesión del navegador
52
+
53
+ ### Caso 3: Token expirado
54
+ - Detectar token expirado en requests
55
+ - Redirigir automáticamente a login
56
+ - Mostrar mensaje "Sesión expirada, inicia sesión nuevamente"
57
+
58
+ ## Requisitos No Funcionales
59
+
60
+ ### Performance
61
+ - Tiempo de respuesta < 500ms para validación de credenciales
62
+ - Soporte para 100 logins simultáneos sin degradación
63
+
64
+ ### Seguridad
65
+ - Contraseñas hasheadas con bcrypt (cost factor 12)
66
+ - Protección contra brute force (rate limiting)
67
+ - Tokens JWT firmados con RS256
68
+ - HTTPS obligatorio en producción
69
+ - Sanitización de inputs (prevenir SQL injection)
70
+ - Headers de seguridad (CSP, X-Frame-Options, etc.)
71
+
72
+ ### UX
73
+ - Formulario accesible (WCAG 2.1 nivel AA)
74
+ - Mensajes de error claros pero seguros
75
+ - Indicador de carga durante autenticación
76
+ - Feedback visual en campos inválidos
77
+ - Soporte para password managers (autocomplete)
78
+
79
+ ### Auditoría
80
+ - Logs detallados de todos los intentos de login
81
+ - Registro de IPs, user agents, timestamps
82
+ - Alertas automáticas para patrones sospechosos
83
+
84
+ ## Estimación Inicial
85
+
86
+ - **Complejidad:** Alta (seguridad crítica, múltiples casos edge)
87
+ - **Esfuerzo:** M (2-3 sprints)
88
+ - **Riesgos:**
89
+ - Vulnerabilidades de seguridad si no se implementa correctamente
90
+ - Bloqueo legítimo de usuarios por falsos positivos
91
+ - Problemas de performance con alta carga
92
+
93
+ ## Fuera de Alcance
94
+
95
+ - Autenticación con redes sociales (OAuth)
96
+ - Autenticación de dos factores (2FA)
97
+ - Recuperación de contraseña
98
+ - Registro de nuevos usuarios
99
+ - SSO (Single Sign-On)
100
+
101
+ Estas funcionalidades se abordarán en propuestas separadas.
102
+
103
+ ---
104
+
105
+ **Generado con:** `openspec enrich`
106
+ **Fecha:** 2026-02-12
@@ -0,0 +1,333 @@
1
+ # CHANGE-SAMPLE-001 — Ejemplo Completo: Autenticación de Usuario
2
+
3
+ Este directorio contiene un ejemplo completo del workflow de SpecLeap, desde la user story original hasta la propuesta completada y archivada.
4
+
5
+ ## 📋 Contenido
6
+
7
+ ```
8
+ CHANGE-SAMPLE-001-user-authentication/
9
+ ├── README.md # Este archivo
10
+ ├── 00-original-user-story.md # User story inicial (INPUT)
11
+ ├── 01-refined-user-story.md # User story refinada (output de /enrich)
12
+ ├── proposal.md # QUÉ y POR QUÉ (output de /new)
13
+ ├── design.md # CÓMO técnico (output de /ff o manual)
14
+ ├── tasks.md # Tareas + Testing Report
15
+ ├── specs/ # Delta specs aplicados
16
+ │ ├── functional/
17
+ │ │ └── F001-authentication.spec.md
18
+ │ └── technical/
19
+ │ └── T001-jwt-implementation.spec.md
20
+ └── COMPLETION_REPORT.md # Reporte final (output de /archive)
21
+ ```
22
+
23
+ ## 🔄 Workflow Completo
24
+
25
+ ### Fase 1: ENRICH — Refinar User Story
26
+
27
+ **Input:**
28
+ ```markdown
29
+ Como usuario del sistema,
30
+ quiero poder hacer login con email y contraseña
31
+ para acceder a mi cuenta de forma segura.
32
+ ```
33
+
34
+ **Comando:**
35
+ ```bash
36
+ openspec enrich "Como usuario quiero hacer login" \
37
+ --output 01-refined-user-story.md
38
+ ```
39
+
40
+ **Output:** `01-refined-user-story.md`
41
+ - User story en formato completo
42
+ - Contexto de negocio
43
+ - Criterios de aceptación (GIVEN/WHEN/THEN)
44
+ - Requisitos no funcionales
45
+ - Estimación inicial
46
+
47
+ ---
48
+
49
+ ### Fase 2: NEW — Crear Propuesta
50
+
51
+ **Comando:**
52
+ ```bash
53
+ openspec new --auto "Implementar autenticación JWT" \
54
+ --from 01-refined-user-story.md \
55
+ --ticket app-tienda-23 \
56
+ --priority high
57
+ ```
58
+
59
+ **Output:** `CHANGE-SAMPLE-001-user-authentication/`
60
+ - `proposal.md` — Propuesta con contexto, problema, solución, alcance
61
+ - `design.md` — Template vacío para diseño técnico
62
+ - `tasks.md` — Template vacío para tareas
63
+ - `README.md` — Guía de próximos pasos
64
+
65
+ ---
66
+
67
+ ### Fase 3: FF — Fast-Forward (Generar con AI)
68
+
69
+ **Comando:**
70
+ ```bash
71
+ openspec ff CHANGE-SAMPLE-001
72
+ ```
73
+
74
+ **Output:**
75
+ - `design.md` completado con AI:
76
+ - Arquitectura de componentes
77
+ - Modelo de datos
78
+ - API contracts
79
+ - Decisiones técnicas (ADRs)
80
+ - Testing strategy
81
+
82
+ - `tasks.md` completado con AI:
83
+ - Desglose de tareas (TASK-001, TASK-002, ...)
84
+ - Estimaciones (story points)
85
+ - Dependencias entre tareas
86
+ - Template de Testing Report
87
+
88
+ **IMPORTANTE:** Revisar y ajustar outputs del AI antes de aplicar.
89
+
90
+ ---
91
+
92
+ ### Fase 4: APPLY — Implementar Propuesta
93
+
94
+ **Comando:**
95
+ ```bash
96
+ openspec apply CHANGE-SAMPLE-001
97
+ ```
98
+
99
+ **Acciones:**
100
+ 1. Crea branch Git: `feat/CHANGE-SAMPLE-001-user-authentication`
101
+ 2. Aplica delta specs a `openspec/specs/`
102
+ 3. Actualiza estado a `in_progress`
103
+ 4. Commit inicial del setup
104
+
105
+ **Próximo paso:** Implementar código según design.md y tasks.md usando AI assistant (Continue, Copilot, Cursor).
106
+
107
+ ---
108
+
109
+ ### Fase 5: VERIFY — Verificar Tests y Specs
110
+
111
+ **Durante el desarrollo, ejecutar:**
112
+ ```bash
113
+ openspec verify CHANGE-SAMPLE-001
114
+ ```
115
+
116
+ **Verifica:**
117
+ - Tests unitarios + integración pasan
118
+ - Cobertura mínima alcanzada (>80%)
119
+ - Specs aplicadas correctamente
120
+ - Sin placeholders en archivos
121
+
122
+ **Output:** Testing Report actualizado en `tasks.md`
123
+
124
+ ---
125
+
126
+ ### Fase 6: CODE-REVIEW — Solicitar Review
127
+
128
+ **Comando:**
129
+ ```bash
130
+ openspec code-review CHANGE-SAMPLE-001 --create-pr
131
+ ```
132
+
133
+ **Acciones:**
134
+ 1. Ejecuta `openspec verify` primero
135
+ 2. Pushea branch a remoto
136
+ 3. Crea Pull Request en GitHub
137
+ 4. CodeRabbit hace review automático
138
+ 5. Actualiza estado a `testing`
139
+
140
+ **Revisar comentarios de CodeRabbit y aplicar cambios sugeridos.**
141
+
142
+ ---
143
+
144
+ ### Fase 7: ARCHIVE — Archivar al Completar
145
+
146
+ **Tras mergear PR:**
147
+ ```bash
148
+ openspec archive CHANGE-SAMPLE-001
149
+ ```
150
+
151
+ **Acciones:**
152
+ 1. Verifica que PR esté mergeado
153
+ 2. Actualiza estado a `completed`
154
+ 3. Marca specs como `implemented`
155
+ 4. Elimina branch feature
156
+ 5. Genera `COMPLETION_REPORT.md`
157
+
158
+ ---
159
+
160
+ ## 📊 Ejemplo de Testing Report
161
+
162
+ Ver `tasks.md` para el reporte completo. Resumen:
163
+
164
+ | Suite | Tests | Passed | Failed | Coverage |
165
+ |-------|-------|--------|--------|----------|
166
+ | Unit | 45 | 45 | 0 | 91% |
167
+ | Integration | 12 | 12 | 0 | N/A |
168
+ | E2E | 3 | 3 | 0 | N/A |
169
+
170
+ **CodeRabbit:** ✅ Aprobado (8 issues encontrados, 8 resueltos)
171
+
172
+ ---
173
+
174
+ ## 🎯 Especificaciones Generadas
175
+
176
+ ### Functional Spec: F001-authentication.spec.md
177
+
178
+ Especificación funcional completa con:
179
+ - 12 escenarios (GIVEN/WHEN/THEN)
180
+ - Reglas de negocio
181
+ - Dependencias
182
+ - Métricas y KPIs
183
+
184
+ ### Technical Spec: T001-jwt-implementation.spec.md
185
+
186
+ Especificación técnica detallada:
187
+ - Arquitectura de componentes
188
+ - Interfaces de clases
189
+ - Modelo de datos
190
+ - Endpoints API
191
+ - Configuración de seguridad
192
+ - Benchmarks de performance
193
+
194
+ ---
195
+
196
+ ## 💡 Lecciones Aprendidas
197
+
198
+ ### Lo que Funcionó Bien
199
+
200
+ 1. **Refinar user story ANTES de diseñar:** Ahorró re-trabajo al tener requisitos claros desde el inicio.
201
+
202
+ 2. **Fast-forward con AI:** Generó 80% del diseño técnico correcto. El 20% restante fue ajuste manual.
203
+
204
+ 3. **Testing Report automático:** Actualización automática desde results de PHPUnit/Jest evitó errores manuales.
205
+
206
+ 4. **CodeRabbit integration:** Detectó 8 issues que hubieran pasado code review manual.
207
+
208
+ 5. **Delta specs:** Mantener specs separadas en `changes/` permitió review sin contaminar source of truth.
209
+
210
+ ### Problemas Encontrados
211
+
212
+ 1. **Rate limiting en DB lento:** Solución temporal. Migrar a Redis en CHANGE-002.
213
+
214
+ 2. **AI generó placeholders:** Template de tasks.md tenía "TODO" que requirió limpieza manual.
215
+
216
+ 3. **Bloqueo de IPs compartidas:** Rate limiting solo por IP bloqueó usuarios legítimos en NAT corporativo. Ajustado a IP+email.
217
+
218
+ ---
219
+
220
+ ## 📚 Referencias
221
+
222
+ ### Documentación
223
+
224
+ - [OpenSpec CLI](../cli/README.md)
225
+ - [Metodología SDD](../../.continue/rules/01-sdd-methodology.md)
226
+ - [Templates](../templates/)
227
+
228
+ ### Specs Relacionadas
229
+
230
+ - `openspec/specs/functional/F001-authentication.spec.md` (aplicada desde delta)
231
+ - `openspec/specs/technical/T001-jwt-implementation.spec.md` (aplicada desde delta)
232
+
233
+ ### PRs y Commits
234
+
235
+ - **PR #45:** feat: Implementar autenticación JWT (merged)
236
+ - **Commits:** 12 commits en branch feature
237
+ - **Deploy:** Production v1.1.0
238
+
239
+ ---
240
+
241
+ ## 🚀 Cómo Usar Este Ejemplo
242
+
243
+ ### Para Aprender el Flujo
244
+
245
+ 1. Lee los archivos en orden:
246
+ - `00-original-user-story.md`
247
+ - `01-refined-user-story.md`
248
+ - `proposal.md`
249
+ - `design.md`
250
+ - `tasks.md`
251
+ - `specs/`
252
+
253
+ 2. Observa la evolución desde user story simple hasta propuesta completa.
254
+
255
+ 3. Nota los detalles:
256
+ - Criterios de aceptación específicos
257
+ - Arquitectura de componentes
258
+ - ADRs (decisiones técnicas justificadas)
259
+ - Testing strategy completo
260
+
261
+ ### Para Replicar en Tu Proyecto
262
+
263
+ 1. **Copia la estructura:**
264
+ ```bash
265
+ cp -r openspec/examples/CHANGE-SAMPLE-001-* openspec/changes/
266
+ ```
267
+
268
+ 2. **Adapta a tu stack:**
269
+ - Reemplaza referencias de Laravel/PHP por tu framework
270
+ - Ajusta nombres de componentes
271
+ - Modifica testing frameworks
272
+
273
+ 3. **Ejecuta el workflow completo:**
274
+ - Empieza con tu user story
275
+ - Sigue los comandos documentados arriba
276
+ - Ajusta outputs del AI según tu contexto
277
+
278
+ ---
279
+
280
+ ## ❓ FAQ
281
+
282
+ ### ¿Qué es un "delta spec"?
283
+
284
+ Un spec que vive en `changes/CHANGE-XXX/specs/` temporalmente, y se aplica al source of truth en `openspec/specs/` tras aprobación. Permite revisar cambios sin contaminar specs existentes.
285
+
286
+ ### ¿Por qué `proposal.md` + `design.md` separados?
287
+
288
+ - **proposal.md:** QUÉ y POR QUÉ (para Product Owner, stakeholders)
289
+ - **design.md:** CÓMO técnico (para desarrolladores, arquitectos)
290
+
291
+ Separarlos permite reviews independientes.
292
+
293
+ ### ¿Puedo omitir `/ff` y escribir manualmente?
294
+
295
+ Sí. `/ff` es opcional. Genera propuesta rápida con AI, pero siempre requiere revisión manual. Puedes escribir design.md y tasks.md directamente.
296
+
297
+ ### ¿Qué pasa si no uso CodeRabbit?
298
+
299
+ El flujo funciona sin CodeRabbit, pero pierdes:
300
+ - Review automático de código
301
+ - Detección de issues de seguridad/performance
302
+ - Sugerencias de mejora
303
+
304
+ Puedes sustituir con:
305
+ - Review manual más exhaustivo
306
+ - Herramientas SAST (Semgrep, SonarQube)
307
+ - Linters configurados
308
+
309
+ ### ¿Cómo escalo esto a equipos grandes?
310
+
311
+ 1. **Prefijos por equipo:**
312
+ - `CHANGE-FE-001` (Frontend)
313
+ - `CHANGE-BE-001` (Backend)
314
+ - `CHANGE-INFRA-001` (Infraestructura)
315
+
316
+ 2. **Ticket integration:**
317
+ - Vincular `CHANGE-XXX` con Epics/Stories
318
+ - Sincronizar estados
319
+
320
+ 3. **Templates personalizados:**
321
+ - Crear templates específicos por tipo de proyecto
322
+ - Ejemplo: `template-microservice.md`, `template-feature.md`
323
+
324
+ 4. **CI/CD checks:**
325
+ - Validar que PRs incluyan Testing Report
326
+ - Verificar cobertura mínima
327
+ - Requerir aprobación de CodeRabbit
328
+
329
+ ---
330
+
331
+ **Creado:** 2026-02-12
332
+ **Última actualización:** 2026-02-12
333
+ **Estado:** Ejemplo completado y archivado