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.
- package/.agents/backend.md +3 -3
- package/.agents/frontend.md +2 -2
- package/.agents/producto.md +9 -11
- package/.claude/hooks/spec-guard.sh +132 -0
- package/.claude/settings.json.template +15 -0
- package/.clinerules +3 -3
- package/.coderabbit.yaml +2 -4
- package/.commands/compliance.md +89 -0
- package/.commands/inicio.md +15 -15
- package/.commands/nuevo/README.md +2 -2
- package/.commands/planificar.md +1 -1
- package/.continue/rules/04-git-workflow.md +5 -5
- package/.continuerules +3 -4
- package/.cursorrules +1 -1
- package/.github/copilot-instructions.md +1 -1
- package/.specleap/i18n/en.json +177 -0
- package/.specleap/i18n/es.json +177 -0
- package/.specleap/i18n.sh +63 -0
- package/CHANGELOG.md +276 -0
- package/CLAUDE.md +54 -13
- package/README.md +169 -528
- package/SETUP.md +16 -13
- package/openspec/INDEX.md +53 -0
- package/openspec/README.md +104 -0
- package/openspec/SPEC-FORMAT.md +168 -0
- package/openspec/changes/.gitkeep +0 -0
- package/openspec/cli/COMMAND_REFERENCE.md +817 -0
- package/openspec/cli/README.md +189 -0
- package/openspec/cli/apply.sh +229 -0
- package/openspec/cli/archive.sh +240 -0
- package/openspec/cli/code-review.sh +207 -0
- package/openspec/cli/common.sh +171 -0
- package/openspec/cli/enrich.sh +188 -0
- package/openspec/cli/ff.sh +329 -0
- package/openspec/cli/new.sh +260 -0
- package/openspec/cli/openspec +82 -0
- package/openspec/cli/report.sh +244 -0
- package/openspec/cli/status.sh +178 -0
- package/openspec/cli/verify.sh +246 -0
- package/openspec/config.yaml +76 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/00-original-user-story.md +5 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/01-refined-user-story.md +106 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/README.md +333 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/design.md +461 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/proposal.md +124 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/functional/F001-authentication.spec.md +399 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/specs/technical/T001-jwt-implementation.spec.md +606 -0
- package/openspec/examples/CHANGE-SAMPLE-001-user-authentication/tasks.md +433 -0
- package/openspec/examples/MERMAID_DIAGRAMS.md +481 -0
- package/openspec/examples/README.md +334 -0
- package/openspec/specs/functional/.gitkeep +0 -0
- package/openspec/specs/integration/.gitkeep +0 -0
- package/openspec/specs/security/.gitkeep +0 -0
- package/openspec/specs/technical/.gitkeep +0 -0
- package/openspec/templates/.coderabbit.yaml +259 -0
- package/openspec/templates/design.md +181 -0
- package/openspec/templates/proposal.md +79 -0
- package/openspec/templates/tasks.md +193 -0
- package/package.json +10 -5
- package/rules/git-workflow.md +3 -3
- package/rules/session-protocol.md +3 -3
- package/scripts/README.md +13 -25
- package/scripts/compliance-audit.sh +325 -0
- package/scripts/generate-contract.sh +4 -4
- package/scripts/install-skills.sh +12 -11
- package/scripts/lib/render-contrato.py +1 -1
- package/scripts/quality-baseline.sh +210 -0
- package/scripts/quality-healing.sh +241 -0
- package/setup.sh +3 -3
- package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/.claude/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
- package/scripts/lib/jira-project-utils.sh +0 -222
- package/scripts/setup-mcp.sh +0 -654
- package/scripts/test-cuestionario.sh +0 -428
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
# OpenSpec — Ejemplos Completos
|
|
2
|
+
|
|
3
|
+
Ejemplos end-to-end del workflow completo de SpecLeap.
|
|
4
|
+
|
|
5
|
+
## 📚 Ejemplos Disponibles
|
|
6
|
+
|
|
7
|
+
### CHANGE-SAMPLE-001: Autenticación de Usuario
|
|
8
|
+
|
|
9
|
+
**Categoría:** Backend / Security
|
|
10
|
+
**Stack:** PHP (Laravel) / JWT
|
|
11
|
+
**Complejidad:** Alta
|
|
12
|
+
**Estado:** Completado
|
|
13
|
+
|
|
14
|
+
Sistema completo de autenticación con email y contraseña, tokens JWT, rate limiting, y protección contra brute force.
|
|
15
|
+
|
|
16
|
+
**Qué demuestra:**
|
|
17
|
+
- ✅ Workflow completo (enrich → new → ff → apply → verify → code-review → archive)
|
|
18
|
+
- ✅ User story refinada con AI
|
|
19
|
+
- ✅ Propuesta completa (proposal + design + tasks)
|
|
20
|
+
- ✅ Delta specs (functional + technical)
|
|
21
|
+
- ✅ Testing Report real (60 tests, 91% coverage)
|
|
22
|
+
- ✅ CodeRabbit integration
|
|
23
|
+
- ✅ ADRs (Architecture Decision Records)
|
|
24
|
+
|
|
25
|
+
**Ver:** [CHANGE-SAMPLE-001-user-authentication/README.md](./CHANGE-SAMPLE-001-user-authentication/README.md)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🎯 Cómo Usar los Ejemplos
|
|
30
|
+
|
|
31
|
+
### 1. Aprender el Flujo
|
|
32
|
+
|
|
33
|
+
Navega los ejemplos en orden de archivos:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
00-original-user-story.md # INPUT inicial
|
|
37
|
+
↓
|
|
38
|
+
01-refined-user-story.md # Refinada con AI (/enrich)
|
|
39
|
+
↓
|
|
40
|
+
proposal.md # QUÉ y POR QUÉ (/new)
|
|
41
|
+
design.md # CÓMO técnico (/ff)
|
|
42
|
+
tasks.md # Tareas + Testing Report
|
|
43
|
+
↓
|
|
44
|
+
specs/ # Delta specs aplicados
|
|
45
|
+
↓
|
|
46
|
+
COMPLETION_REPORT.md # Reporte final (/archive)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. Adaptar a Tu Proyecto
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Copiar estructura a tu proyecto
|
|
53
|
+
cp -r openspec/examples/CHANGE-SAMPLE-001-* openspec/changes/CHANGE-001-mi-feature/
|
|
54
|
+
|
|
55
|
+
# Editar archivos con tu contexto
|
|
56
|
+
# - Reemplazar stack (Laravel → tu framework)
|
|
57
|
+
# - Ajustar arquitectura
|
|
58
|
+
# - Adaptar testing strategy
|
|
59
|
+
|
|
60
|
+
# Ejecutar workflow completo
|
|
61
|
+
openspec verify CHANGE-001
|
|
62
|
+
openspec code-review CHANGE-001 --create-pr
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 3. Crear Tu Propio Ejemplo
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Empezar desde cero
|
|
69
|
+
openspec new --auto "Mi Feature" --ticket [proyecto]-XXX
|
|
70
|
+
openspec ff CHANGE-XXX
|
|
71
|
+
# ... editar manualmente ...
|
|
72
|
+
openspec apply CHANGE-XXX
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 📖 Guías por Tipo de Proyecto
|
|
78
|
+
|
|
79
|
+
### Backend API
|
|
80
|
+
|
|
81
|
+
**Ejemplo:** CHANGE-SAMPLE-001 (Autenticación)
|
|
82
|
+
|
|
83
|
+
**Incluye:**
|
|
84
|
+
- Endpoints API (REST)
|
|
85
|
+
- Modelo de datos
|
|
86
|
+
- Validación de inputs
|
|
87
|
+
- Seguridad (autenticación, autorización)
|
|
88
|
+
- Testing (unit + integration)
|
|
89
|
+
|
|
90
|
+
**Comandos clave:**
|
|
91
|
+
```bash
|
|
92
|
+
openspec enrich "API para gestionar usuarios"
|
|
93
|
+
openspec new --auto "CRUD de usuarios" --priority high
|
|
94
|
+
openspec ff CHANGE-XXX
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Frontend Component
|
|
98
|
+
|
|
99
|
+
**Ejemplo:** (próximamente)
|
|
100
|
+
|
|
101
|
+
**Incluiría:**
|
|
102
|
+
- Componentes UI
|
|
103
|
+
- State management
|
|
104
|
+
- API integration
|
|
105
|
+
- Testing (unit + e2e)
|
|
106
|
+
|
|
107
|
+
### Microservicio
|
|
108
|
+
|
|
109
|
+
**Ejemplo:** (próximamente)
|
|
110
|
+
|
|
111
|
+
**Incluiría:**
|
|
112
|
+
- Service architecture
|
|
113
|
+
- Message queue integration
|
|
114
|
+
- Service discovery
|
|
115
|
+
- Distributed tracing
|
|
116
|
+
|
|
117
|
+
### Database Migration
|
|
118
|
+
|
|
119
|
+
**Ejemplo:** (próximamente)
|
|
120
|
+
|
|
121
|
+
**Incluiría:**
|
|
122
|
+
- Schema changes
|
|
123
|
+
- Data migration
|
|
124
|
+
- Rollback plan
|
|
125
|
+
- Performance impact
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 🔍 Anatomía de un Ejemplo Completo
|
|
130
|
+
|
|
131
|
+
### Archivos Requeridos
|
|
132
|
+
|
|
133
|
+
| Archivo | Propósito | Generado Por |
|
|
134
|
+
|---------|-----------|--------------|
|
|
135
|
+
| `README.md` | Guía del ejemplo | Manual |
|
|
136
|
+
| `00-original-user-story.md` | User story inicial | Manual (usuario) |
|
|
137
|
+
| `01-refined-user-story.md` | User story refinada | `/enrich` (AI) |
|
|
138
|
+
| `proposal.md` | QUÉ y POR QUÉ | `/new` (template) |
|
|
139
|
+
| `design.md` | CÓMO técnico | `/ff` (AI) o manual |
|
|
140
|
+
| `tasks.md` | Tareas + Testing Report | `/ff` (AI) o manual |
|
|
141
|
+
| `specs/` | Delta specs | Manual |
|
|
142
|
+
| `COMPLETION_REPORT.md` | Reporte final | `/archive` |
|
|
143
|
+
|
|
144
|
+
### Archivos Opcionales
|
|
145
|
+
|
|
146
|
+
| Archivo | Propósito |
|
|
147
|
+
|---------|-----------|
|
|
148
|
+
| `diagrams/` | Diagramas de arquitectura (PNG, SVG) |
|
|
149
|
+
| `migrations/` | Scripts SQL de ejemplo |
|
|
150
|
+
| `code-samples/` | Snippets de código implementado |
|
|
151
|
+
| `screenshots/` | Capturas de UI (si aplica) |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 💡 Mejores Prácticas
|
|
156
|
+
|
|
157
|
+
### 1. User Stories Refinadas
|
|
158
|
+
|
|
159
|
+
❌ **Mal:**
|
|
160
|
+
```
|
|
161
|
+
Como usuario quiero login
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
✅ **Bien:**
|
|
165
|
+
```
|
|
166
|
+
Como usuario registrado del sistema,
|
|
167
|
+
quiero autenticarme con email y contraseña
|
|
168
|
+
para acceder de forma segura a mi cuenta y funcionalidades personalizadas.
|
|
169
|
+
|
|
170
|
+
GIVEN un usuario registrado
|
|
171
|
+
WHEN ingresa credenciales correctas
|
|
172
|
+
THEN accede al dashboard
|
|
173
|
+
AND recibe token JWT válido por 24h
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 2. Propuestas Completas
|
|
177
|
+
|
|
178
|
+
Incluir siempre:
|
|
179
|
+
- ✅ Resumen ejecutivo (2-3 oraciones)
|
|
180
|
+
- ✅ Contexto y problema a resolver
|
|
181
|
+
- ✅ Propuesta de solución
|
|
182
|
+
- ✅ Alcance (incluido + excluido)
|
|
183
|
+
- ✅ Riesgos y mitigaciones
|
|
184
|
+
- ✅ Estimación inicial
|
|
185
|
+
|
|
186
|
+
### 3. Diseño Técnico Detallado
|
|
187
|
+
|
|
188
|
+
Incluir siempre:
|
|
189
|
+
- ✅ Diagrama de componentes (ASCII o imagen)
|
|
190
|
+
- ✅ Modelo de datos (DDL o diagrama ER)
|
|
191
|
+
- ✅ API contracts (request/response examples)
|
|
192
|
+
- ✅ ADRs (decisiones técnicas justificadas)
|
|
193
|
+
- ✅ Testing strategy (unit, integration, e2e)
|
|
194
|
+
- ✅ Plan de rollback
|
|
195
|
+
|
|
196
|
+
### 4. Tareas Desglosadas
|
|
197
|
+
|
|
198
|
+
Cada tarea debe tener:
|
|
199
|
+
- ✅ ID único (TASK-001, TASK-002, ...)
|
|
200
|
+
- ✅ Estimación (story points)
|
|
201
|
+
- ✅ Criterios de aceptación claros
|
|
202
|
+
- ✅ Dependencias explícitas
|
|
203
|
+
- ✅ Branch name sugerido
|
|
204
|
+
|
|
205
|
+
### 5. Delta Specs Claros
|
|
206
|
+
|
|
207
|
+
Usar notación de cambios:
|
|
208
|
+
```markdown
|
|
209
|
+
## Escenario X: Login exitoso
|
|
210
|
+
|
|
211
|
+
- GIVEN un usuario registrado
|
|
212
|
+
- WHEN ingresa credenciales válidas
|
|
213
|
+
+ AND el sistema verifica 2FA (NUEVO)
|
|
214
|
+
- THEN genera token JWT
|
|
215
|
+
~ AND redirige al dashboard (MODIFICADO: añadir analytics)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 🧪 Validación de Ejemplos
|
|
221
|
+
|
|
222
|
+
Antes de publicar un ejemplo, verificar:
|
|
223
|
+
|
|
224
|
+
### Checklist de Calidad
|
|
225
|
+
|
|
226
|
+
- [ ] README.md completo con guía de uso
|
|
227
|
+
- [ ] User story original → refinada incluida
|
|
228
|
+
- [ ] Proposal + design + tasks completos
|
|
229
|
+
- [ ] Delta specs con formato correcto
|
|
230
|
+
- [ ] Testing Report con datos reales (no template vacío)
|
|
231
|
+
- [ ] Sin placeholders ("TODO", "XXX", "...")
|
|
232
|
+
- [ ] Archivos markdown válidos (sin errores de formato)
|
|
233
|
+
- [ ] Comandos CLI documentados y probados
|
|
234
|
+
- [ ] Referencias a specs source of truth correctas
|
|
235
|
+
|
|
236
|
+
### Test del Ciclo Completo
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# 1. Verificar que los comandos funcionan
|
|
240
|
+
cd openspec/examples/CHANGE-SAMPLE-XXX/
|
|
241
|
+
openspec verify CHANGE-SAMPLE-XXX --dry-run
|
|
242
|
+
|
|
243
|
+
# 2. Validar YAML
|
|
244
|
+
yq eval ../config.yaml > /dev/null
|
|
245
|
+
|
|
246
|
+
# 3. Validar markdown
|
|
247
|
+
markdownlint *.md
|
|
248
|
+
|
|
249
|
+
# 4. Verificar links
|
|
250
|
+
markdown-link-check README.md
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 🚀 Contribuir Ejemplos
|
|
256
|
+
|
|
257
|
+
¿Quieres añadir un ejemplo nuevo?
|
|
258
|
+
|
|
259
|
+
### 1. Estructura
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
# Crear directorio
|
|
263
|
+
mkdir -p openspec/examples/CHANGE-SAMPLE-XXX-nombre/
|
|
264
|
+
|
|
265
|
+
# Crear archivos base
|
|
266
|
+
touch README.md
|
|
267
|
+
touch 00-original-user-story.md
|
|
268
|
+
# ... etc
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 2. Contenido
|
|
272
|
+
|
|
273
|
+
Usar CHANGE-SAMPLE-001 como plantilla:
|
|
274
|
+
- Copiar estructura de archivos
|
|
275
|
+
- Adaptar contenido a tu caso de uso
|
|
276
|
+
- Mantener mismo nivel de detalle
|
|
277
|
+
|
|
278
|
+
### 3. Validación
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# Ejecutar checklist de calidad
|
|
282
|
+
./scripts/validate-example.sh CHANGE-SAMPLE-XXX
|
|
283
|
+
|
|
284
|
+
# Revisar con AI
|
|
285
|
+
openspec verify CHANGE-SAMPLE-XXX
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### 4. Pull Request
|
|
289
|
+
|
|
290
|
+
- Título: `docs: Añadir ejemplo CHANGE-SAMPLE-XXX (descripción)`
|
|
291
|
+
- Descripción:
|
|
292
|
+
- Qué demuestra el ejemplo
|
|
293
|
+
- Stack/tecnologías usadas
|
|
294
|
+
- Comandos CLI cubiertos
|
|
295
|
+
- Lecciones aprendidas
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 📊 Índice de Ejemplos por Categoría
|
|
300
|
+
|
|
301
|
+
### Backend
|
|
302
|
+
- ✅ CHANGE-SAMPLE-001: Autenticación JWT
|
|
303
|
+
- 🔜 CHANGE-SAMPLE-002: CRUD con validación
|
|
304
|
+
- 🔜 CHANGE-SAMPLE-003: API con paginación
|
|
305
|
+
|
|
306
|
+
### Frontend
|
|
307
|
+
- 🔜 CHANGE-SAMPLE-010: Componente de formulario
|
|
308
|
+
- 🔜 CHANGE-SAMPLE-011: State management con Redux
|
|
309
|
+
|
|
310
|
+
### DevOps
|
|
311
|
+
- 🔜 CHANGE-SAMPLE-020: CI/CD pipeline
|
|
312
|
+
- 🔜 CHANGE-SAMPLE-021: Docker compose setup
|
|
313
|
+
|
|
314
|
+
### Seguridad
|
|
315
|
+
- ✅ CHANGE-SAMPLE-001: Autenticación (incluye rate limiting)
|
|
316
|
+
- 🔜 CHANGE-SAMPLE-030: 2FA implementation
|
|
317
|
+
|
|
318
|
+
### Performance
|
|
319
|
+
- 🔜 CHANGE-SAMPLE-040: Caché con Redis
|
|
320
|
+
- 🔜 CHANGE-SAMPLE-041: Query optimization
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 🔗 Referencias
|
|
325
|
+
|
|
326
|
+
- [OpenSpec CLI](../cli/README.md)
|
|
327
|
+
- [Metodología SDD](../../.continue/rules/01-sdd-methodology.md)
|
|
328
|
+
- [Templates](../templates/)
|
|
329
|
+
- [Config Reference](../config.yaml)
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
**Última actualización:** 2026-02-12
|
|
334
|
+
**Ejemplos totales:** 1 (más en desarrollo)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# CodeRabbit Configuration — DevFlow Pro
|
|
2
|
+
# Copiar este archivo a la raíz de cada repositorio
|
|
3
|
+
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
|
|
4
|
+
|
|
5
|
+
# Idioma de los reviews
|
|
6
|
+
language: "es"
|
|
7
|
+
|
|
8
|
+
# Tono personalizado
|
|
9
|
+
tone_instructions: |
|
|
10
|
+
Eres un reviewer senior enfocado en calidad y mantenibilidad.
|
|
11
|
+
Sé constructivo pero riguroso. Señala problemas de seguridad como críticos.
|
|
12
|
+
Verifica que el código sigue las specs definidas en openspec/.
|
|
13
|
+
Idioma: español.
|
|
14
|
+
|
|
15
|
+
# Configuración de reviews
|
|
16
|
+
reviews:
|
|
17
|
+
# Perfil: assertive = más feedback (recomendado para equipos que buscan calidad)
|
|
18
|
+
profile: "assertive"
|
|
19
|
+
|
|
20
|
+
# Workflow de cambios solicitados
|
|
21
|
+
request_changes_workflow: true
|
|
22
|
+
|
|
23
|
+
# Resumen de alto nivel
|
|
24
|
+
high_level_summary: true
|
|
25
|
+
high_level_summary_in_walkthrough: true
|
|
26
|
+
|
|
27
|
+
# Diagramas de secuencia
|
|
28
|
+
sequence_diagrams: true
|
|
29
|
+
|
|
30
|
+
# Estimación de esfuerzo de review
|
|
31
|
+
estimate_code_review_effort: true
|
|
32
|
+
|
|
33
|
+
# Evaluar issues vinculados
|
|
34
|
+
assess_linked_issues: true
|
|
35
|
+
|
|
36
|
+
# Sugerir labels
|
|
37
|
+
suggested_labels: true
|
|
38
|
+
labeling_instructions:
|
|
39
|
+
- label: "needs-spec"
|
|
40
|
+
instructions: "Aplicar cuando el PR no tiene spec de referencia en openspec/"
|
|
41
|
+
- label: "has-tests"
|
|
42
|
+
instructions: "Aplicar cuando el PR incluye tests"
|
|
43
|
+
- label: "breaking-change"
|
|
44
|
+
instructions: "Aplicar cuando hay cambios que rompen compatibilidad"
|
|
45
|
+
- label: "security"
|
|
46
|
+
instructions: "Aplicar cuando hay cambios relacionados con seguridad"
|
|
47
|
+
- label: "performance"
|
|
48
|
+
instructions: "Aplicar cuando hay optimizaciones de rendimiento"
|
|
49
|
+
|
|
50
|
+
# Auto-aplicar labels sugeridos
|
|
51
|
+
auto_apply_labels: true
|
|
52
|
+
|
|
53
|
+
# Sugerir reviewers
|
|
54
|
+
suggested_reviewers: true
|
|
55
|
+
|
|
56
|
+
# Sin poemas ni fortunes (profesional)
|
|
57
|
+
poem: false
|
|
58
|
+
in_progress_fortune: false
|
|
59
|
+
|
|
60
|
+
# Path filters - excluir archivos generados
|
|
61
|
+
path_filters:
|
|
62
|
+
- "!**/node_modules/**"
|
|
63
|
+
- "!**/vendor/**"
|
|
64
|
+
- "!**/dist/**"
|
|
65
|
+
- "!**/build/**"
|
|
66
|
+
- "!**/*.min.js"
|
|
67
|
+
- "!**/*.min.css"
|
|
68
|
+
- "!**/package-lock.json"
|
|
69
|
+
- "!**/composer.lock"
|
|
70
|
+
- "!**/*.generated.*"
|
|
71
|
+
|
|
72
|
+
# Instrucciones por ruta
|
|
73
|
+
path_instructions:
|
|
74
|
+
- path: "src/**"
|
|
75
|
+
instructions: |
|
|
76
|
+
Verificar:
|
|
77
|
+
- TypeScript strict mode
|
|
78
|
+
- Manejo de errores
|
|
79
|
+
- Tipos correctos (no any)
|
|
80
|
+
- Comentarios en español
|
|
81
|
+
|
|
82
|
+
- path: "**/*.spec.ts"
|
|
83
|
+
instructions: |
|
|
84
|
+
Verificar:
|
|
85
|
+
- Cobertura de casos edge
|
|
86
|
+
- Nombres descriptivos en español
|
|
87
|
+
- Arrange-Act-Assert pattern
|
|
88
|
+
|
|
89
|
+
- path: "**/*.test.ts"
|
|
90
|
+
instructions: |
|
|
91
|
+
Verificar:
|
|
92
|
+
- Cobertura de casos edge
|
|
93
|
+
- Nombres descriptivos en español
|
|
94
|
+
- Arrange-Act-Assert pattern
|
|
95
|
+
|
|
96
|
+
- path: "openspec/**"
|
|
97
|
+
instructions: |
|
|
98
|
+
Verificar:
|
|
99
|
+
- Formato correcto de spec
|
|
100
|
+
- GIVEN/WHEN/THEN completos
|
|
101
|
+
- Criterios de aceptación claros
|
|
102
|
+
- Referencias cruzadas válidas
|
|
103
|
+
|
|
104
|
+
- path: "**/*.php"
|
|
105
|
+
instructions: |
|
|
106
|
+
Verificar:
|
|
107
|
+
- PSR-12 compliance
|
|
108
|
+
- Type hints en parámetros y retornos
|
|
109
|
+
- Validación de inputs
|
|
110
|
+
- Sin SQL raw (usar Eloquent)
|
|
111
|
+
|
|
112
|
+
- path: "**/migrations/**"
|
|
113
|
+
instructions: |
|
|
114
|
+
Verificar:
|
|
115
|
+
- Migración reversible
|
|
116
|
+
- Índices necesarios
|
|
117
|
+
- Sin pérdida de datos
|
|
118
|
+
|
|
119
|
+
- path: "docs/**"
|
|
120
|
+
instructions: |
|
|
121
|
+
Verificar:
|
|
122
|
+
- Español correcto
|
|
123
|
+
- Enlaces funcionan
|
|
124
|
+
- Ejemplos actualizados
|
|
125
|
+
|
|
126
|
+
# Auto review
|
|
127
|
+
auto_review:
|
|
128
|
+
enabled: true
|
|
129
|
+
auto_incremental_review: true
|
|
130
|
+
drafts: false
|
|
131
|
+
ignore_title_keywords:
|
|
132
|
+
- "WIP"
|
|
133
|
+
- "DO NOT MERGE"
|
|
134
|
+
- "DRAFT"
|
|
135
|
+
labels:
|
|
136
|
+
- "!skip-review"
|
|
137
|
+
|
|
138
|
+
# Finishing touches
|
|
139
|
+
finishing_touches:
|
|
140
|
+
docstrings:
|
|
141
|
+
enabled: true
|
|
142
|
+
unit_tests:
|
|
143
|
+
enabled: true
|
|
144
|
+
|
|
145
|
+
# Pre-merge checks
|
|
146
|
+
pre_merge_checks:
|
|
147
|
+
docstrings:
|
|
148
|
+
mode: "warning"
|
|
149
|
+
threshold: 80
|
|
150
|
+
title:
|
|
151
|
+
mode: "warning"
|
|
152
|
+
requirements: |
|
|
153
|
+
El título debe seguir conventional commits:
|
|
154
|
+
tipo(alcance): descripción
|
|
155
|
+
Tipos: feat, fix, refactor, docs, test, chore, style, perf
|
|
156
|
+
description:
|
|
157
|
+
mode: "warning"
|
|
158
|
+
issue_assessment:
|
|
159
|
+
mode: "warning"
|
|
160
|
+
custom_checks:
|
|
161
|
+
- name: "Spec Reference"
|
|
162
|
+
mode: "warning"
|
|
163
|
+
instructions: |
|
|
164
|
+
Verificar que el PR hace referencia a una spec en openspec/.
|
|
165
|
+
El PR description debe incluir una línea como:
|
|
166
|
+
Spec: openspec/specs/domain/nombre.spec.md
|
|
167
|
+
Si no hay spec, el check falla.
|
|
168
|
+
- name: "Testing Report"
|
|
169
|
+
mode: "warning"
|
|
170
|
+
instructions: |
|
|
171
|
+
Verificar que el PR incluye resultados de tests.
|
|
172
|
+
Debe haber evidencia de que los tests pasan.
|
|
173
|
+
Si es un cambio de código, debe haber tests nuevos o modificados.
|
|
174
|
+
|
|
175
|
+
# Herramientas de análisis
|
|
176
|
+
tools:
|
|
177
|
+
# JavaScript/TypeScript
|
|
178
|
+
eslint:
|
|
179
|
+
enabled: true
|
|
180
|
+
biome:
|
|
181
|
+
enabled: true
|
|
182
|
+
|
|
183
|
+
# PHP
|
|
184
|
+
phpstan:
|
|
185
|
+
enabled: true
|
|
186
|
+
level: "max"
|
|
187
|
+
phpcs:
|
|
188
|
+
enabled: true
|
|
189
|
+
phpmd:
|
|
190
|
+
enabled: true
|
|
191
|
+
|
|
192
|
+
# Python (si aplica)
|
|
193
|
+
ruff:
|
|
194
|
+
enabled: true
|
|
195
|
+
pylint:
|
|
196
|
+
enabled: true
|
|
197
|
+
|
|
198
|
+
# Seguridad
|
|
199
|
+
gitleaks:
|
|
200
|
+
enabled: true
|
|
201
|
+
semgrep:
|
|
202
|
+
enabled: true
|
|
203
|
+
|
|
204
|
+
# Markdown/Docs
|
|
205
|
+
markdownlint:
|
|
206
|
+
enabled: true
|
|
207
|
+
languagetool:
|
|
208
|
+
enabled: true
|
|
209
|
+
level: "picky"
|
|
210
|
+
|
|
211
|
+
# YAML
|
|
212
|
+
yamllint:
|
|
213
|
+
enabled: true
|
|
214
|
+
|
|
215
|
+
# Docker
|
|
216
|
+
hadolint:
|
|
217
|
+
enabled: true
|
|
218
|
+
|
|
219
|
+
# GitHub Actions
|
|
220
|
+
actionlint:
|
|
221
|
+
enabled: true
|
|
222
|
+
|
|
223
|
+
# Shell
|
|
224
|
+
shellcheck:
|
|
225
|
+
enabled: true
|
|
226
|
+
|
|
227
|
+
# Chat
|
|
228
|
+
chat:
|
|
229
|
+
auto_reply: true
|
|
230
|
+
art: false
|
|
231
|
+
integrations:
|
|
232
|
+
# Ticket tracker integration — uses TICKET_ID field extracted from proposal.md
|
|
233
|
+
linear:
|
|
234
|
+
usage: "disabled"
|
|
235
|
+
|
|
236
|
+
# Knowledge base
|
|
237
|
+
knowledge_base:
|
|
238
|
+
opt_out: false
|
|
239
|
+
web_search:
|
|
240
|
+
enabled: true
|
|
241
|
+
code_guidelines:
|
|
242
|
+
enabled: true
|
|
243
|
+
filePatterns:
|
|
244
|
+
- "**/AGENTS.md"
|
|
245
|
+
- "**/CLAUDE.md"
|
|
246
|
+
- "**/.cursorrules"
|
|
247
|
+
- "**/openspec/**/*.md"
|
|
248
|
+
learnings:
|
|
249
|
+
scope: "global"
|
|
250
|
+
issues:
|
|
251
|
+
scope: "global"
|
|
252
|
+
# Ticket tracker integration — uses TICKET_ID field extracted from proposal.md
|
|
253
|
+
pull_requests:
|
|
254
|
+
scope: "global"
|
|
255
|
+
|
|
256
|
+
# Generación de código
|
|
257
|
+
code_generation:
|
|
258
|
+
docstrings:
|
|
259
|
+
language: "es"
|