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,181 @@
|
|
|
1
|
+
# [CHANGE-XXX] Diseño Técnico: Título del Cambio
|
|
2
|
+
|
|
3
|
+
| Campo | Valor |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | CHANGE-XXX |
|
|
6
|
+
| Propuesta | `proposal.md` |
|
|
7
|
+
| Fecha | YYYY-MM-DD |
|
|
8
|
+
| Estado | draft / review / approved |
|
|
9
|
+
| Arquitecto | nombre |
|
|
10
|
+
|
|
11
|
+
## Resumen del Diseño
|
|
12
|
+
|
|
13
|
+
Descripción técnica de alto nivel de cómo se implementará la propuesta.
|
|
14
|
+
|
|
15
|
+
## Arquitectura
|
|
16
|
+
|
|
17
|
+
### Diagrama de Componentes
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
21
|
+
│ Componente A│────▶│ Componente B│────▶│ Componente C│
|
|
22
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Componentes Afectados
|
|
26
|
+
|
|
27
|
+
| Componente | Tipo de Cambio | Descripción |
|
|
28
|
+
|------------|----------------|-------------|
|
|
29
|
+
| ComponenteA | Nuevo / Modificado | Qué cambia |
|
|
30
|
+
| ComponenteB | Modificado | Qué cambia |
|
|
31
|
+
|
|
32
|
+
## Modelo de Datos
|
|
33
|
+
|
|
34
|
+
### Nuevas Entidades
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
interface NuevaEntidad {
|
|
38
|
+
id: string;
|
|
39
|
+
campo1: string;
|
|
40
|
+
campo2: number;
|
|
41
|
+
createdAt: Date;
|
|
42
|
+
updatedAt: Date;
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Cambios en Entidades Existentes
|
|
47
|
+
|
|
48
|
+
```diff
|
|
49
|
+
interface EntidadExistente {
|
|
50
|
+
id: string;
|
|
51
|
+
campoExistente: string;
|
|
52
|
+
+ nuevoCampo: string; // Añadido
|
|
53
|
+
- campoEliminado: string; // Eliminado
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Migraciones de Base de Datos
|
|
58
|
+
|
|
59
|
+
```sql
|
|
60
|
+
-- Migration: YYYYMMDDHHMMSS_descripcion
|
|
61
|
+
ALTER TABLE tabla ADD COLUMN nuevo_campo VARCHAR(255);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## API / Interfaces
|
|
65
|
+
|
|
66
|
+
### Nuevos Endpoints
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
POST /api/v1/recurso
|
|
70
|
+
GET /api/v1/recurso/:id
|
|
71
|
+
PUT /api/v1/recurso/:id
|
|
72
|
+
DELETE /api/v1/recurso/:id
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Contratos de API
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// POST /api/v1/recurso
|
|
79
|
+
interface CreateRecursoRequest {
|
|
80
|
+
campo1: string;
|
|
81
|
+
campo2: number;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
interface CreateRecursoResponse {
|
|
85
|
+
id: string;
|
|
86
|
+
campo1: string;
|
|
87
|
+
campo2: number;
|
|
88
|
+
createdAt: string;
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Flujo de Datos
|
|
93
|
+
|
|
94
|
+
### Secuencia Principal
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
Usuario → Frontend → API → Service → Repository → Database
|
|
98
|
+
↓
|
|
99
|
+
Validación
|
|
100
|
+
↓
|
|
101
|
+
Lógica de Negocio
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Casos de Error
|
|
105
|
+
|
|
106
|
+
| Código | Escenario | Respuesta |
|
|
107
|
+
|--------|-----------|-----------|
|
|
108
|
+
| 400 | Validación fallida | `{ error: "Campo X inválido" }` |
|
|
109
|
+
| 404 | Recurso no encontrado | `{ error: "No encontrado" }` |
|
|
110
|
+
| 500 | Error interno | `{ error: "Error del servidor" }` |
|
|
111
|
+
|
|
112
|
+
## Seguridad
|
|
113
|
+
|
|
114
|
+
### Autenticación/Autorización
|
|
115
|
+
- Método de autenticación requerido
|
|
116
|
+
- Roles con acceso: admin, user, etc.
|
|
117
|
+
|
|
118
|
+
### Validación de Inputs
|
|
119
|
+
- Campo1: string, max 255 chars, sanitizado
|
|
120
|
+
- Campo2: number, min 0, max 1000
|
|
121
|
+
|
|
122
|
+
### Consideraciones de Seguridad
|
|
123
|
+
- [ ] CSRF protection
|
|
124
|
+
- [ ] Rate limiting
|
|
125
|
+
- [ ] Input sanitization
|
|
126
|
+
- [ ] SQL injection prevention
|
|
127
|
+
|
|
128
|
+
## Performance
|
|
129
|
+
|
|
130
|
+
### Estimaciones de Carga
|
|
131
|
+
- Requests esperados: X/segundo
|
|
132
|
+
- Tamaño de datos: X registros
|
|
133
|
+
|
|
134
|
+
### Optimizaciones
|
|
135
|
+
- Índices de base de datos necesarios
|
|
136
|
+
- Caché strategy
|
|
137
|
+
- Paginación
|
|
138
|
+
|
|
139
|
+
## Testing Strategy
|
|
140
|
+
|
|
141
|
+
### Unit Tests
|
|
142
|
+
- [ ] Service layer: lógica de negocio
|
|
143
|
+
- [ ] Validators: validación de inputs
|
|
144
|
+
- [ ] Utils: funciones auxiliares
|
|
145
|
+
|
|
146
|
+
### Integration Tests
|
|
147
|
+
- [ ] API endpoints
|
|
148
|
+
- [ ] Database operations
|
|
149
|
+
|
|
150
|
+
### E2E Tests (si aplica)
|
|
151
|
+
- [ ] Flujo principal del usuario
|
|
152
|
+
|
|
153
|
+
## Plan de Rollback
|
|
154
|
+
|
|
155
|
+
### Pasos para Revertir
|
|
156
|
+
1. Revertir código (git revert)
|
|
157
|
+
2. Revertir migración de BD
|
|
158
|
+
3. Limpiar caché
|
|
159
|
+
|
|
160
|
+
### Datos a Preservar
|
|
161
|
+
- Qué datos no se pueden perder
|
|
162
|
+
- Estrategia de backup
|
|
163
|
+
|
|
164
|
+
## Decisiones Técnicas (ADR)
|
|
165
|
+
|
|
166
|
+
### ADR-001: Elección de X sobre Y
|
|
167
|
+
|
|
168
|
+
**Contexto:** Necesitamos decidir entre X e Y para...
|
|
169
|
+
|
|
170
|
+
**Decisión:** Elegimos X porque...
|
|
171
|
+
|
|
172
|
+
**Consecuencias:**
|
|
173
|
+
- Positivo: ...
|
|
174
|
+
- Negativo: ...
|
|
175
|
+
|
|
176
|
+
## Referencias
|
|
177
|
+
|
|
178
|
+
- Propuesta: `proposal.md`
|
|
179
|
+
- Spec principal: `openspec/specs/domain/spec.md`
|
|
180
|
+
- Delta specs: `specs/domain/spec.md`
|
|
181
|
+
- Documentación externa: links
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# [CHANGE-XXX] Propuesta: Título del Cambio
|
|
2
|
+
|
|
3
|
+
| Campo | Valor |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | CHANGE-XXX |
|
|
6
|
+
| Fecha | YYYY-MM-DD |
|
|
7
|
+
| Estado | draft / review / approved / rejected |
|
|
8
|
+
| Autor | nombre |
|
|
9
|
+
| Prioridad | critical / high / medium / low |
|
|
10
|
+
| Ticket | TICKET-XXX |
|
|
11
|
+
|
|
12
|
+
## Resumen Ejecutivo
|
|
13
|
+
|
|
14
|
+
Descripción breve (2-3 oraciones) de qué se propone y por qué.
|
|
15
|
+
|
|
16
|
+
## Contexto y Problema
|
|
17
|
+
|
|
18
|
+
### Situación Actual
|
|
19
|
+
Descripción del estado actual y por qué necesita cambiar.
|
|
20
|
+
|
|
21
|
+
### Problema a Resolver
|
|
22
|
+
- Problema 1
|
|
23
|
+
- Problema 2
|
|
24
|
+
|
|
25
|
+
### Impacto si No se Resuelve
|
|
26
|
+
Qué pasa si no hacemos nada.
|
|
27
|
+
|
|
28
|
+
## Propuesta de Solución
|
|
29
|
+
|
|
30
|
+
### Descripción General
|
|
31
|
+
Qué se va a hacer a alto nivel.
|
|
32
|
+
|
|
33
|
+
### User Stories Afectadas
|
|
34
|
+
|
|
35
|
+
#### US-01: Como [rol], quiero [acción] para [beneficio]
|
|
36
|
+
- Criterios de aceptación:
|
|
37
|
+
- [ ] CA-01: ...
|
|
38
|
+
- [ ] CA-02: ...
|
|
39
|
+
|
|
40
|
+
## Alcance
|
|
41
|
+
|
|
42
|
+
### Incluido
|
|
43
|
+
- Funcionalidad A
|
|
44
|
+
- Funcionalidad B
|
|
45
|
+
|
|
46
|
+
### Excluido (fuera de alcance)
|
|
47
|
+
- Funcionalidad X (se hará en otra propuesta)
|
|
48
|
+
- Funcionalidad Y (no es necesaria)
|
|
49
|
+
|
|
50
|
+
## Riesgos y Mitigaciones
|
|
51
|
+
|
|
52
|
+
| Riesgo | Probabilidad | Impacto | Mitigación |
|
|
53
|
+
|--------|--------------|---------|------------|
|
|
54
|
+
| Riesgo 1 | Alta/Media/Baja | Alto/Medio/Bajo | Cómo mitigar |
|
|
55
|
+
|
|
56
|
+
## Dependencias
|
|
57
|
+
|
|
58
|
+
- [ ] Depende de CHANGE-XXX (descripción)
|
|
59
|
+
- [ ] Depende de integración externa X
|
|
60
|
+
|
|
61
|
+
## Estimación Inicial
|
|
62
|
+
|
|
63
|
+
| Concepto | Estimación |
|
|
64
|
+
|----------|------------|
|
|
65
|
+
| Esfuerzo | S / M / L / XL |
|
|
66
|
+
| Tiempo | X días/semanas |
|
|
67
|
+
| Complejidad | Baja / Media / Alta |
|
|
68
|
+
|
|
69
|
+
## Decisión
|
|
70
|
+
|
|
71
|
+
- [ ] **Aprobada** — Fecha: YYYY-MM-DD
|
|
72
|
+
- [ ] **Rechazada** — Motivo: ...
|
|
73
|
+
- [ ] **Pendiente de revisión**
|
|
74
|
+
|
|
75
|
+
## Referencias
|
|
76
|
+
|
|
77
|
+
- Spec relacionada: `openspec/specs/domain/spec.md`
|
|
78
|
+
- Documentación: link
|
|
79
|
+
- Diseño: `openspec/changes/CHANGE-XXX/design.md`
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# [CHANGE-XXX] Tareas: Título del Cambio
|
|
2
|
+
|
|
3
|
+
| Campo | Valor |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| ID | CHANGE-XXX |
|
|
6
|
+
| Propuesta | `proposal.md` |
|
|
7
|
+
| Diseño | `design.md` |
|
|
8
|
+
| Fecha | YYYY-MM-DD |
|
|
9
|
+
| Sprint | Sprint X |
|
|
10
|
+
|
|
11
|
+
## Resumen
|
|
12
|
+
|
|
13
|
+
Total de tareas: X
|
|
14
|
+
Estimación total: X story points
|
|
15
|
+
Ticket Epic: [proyecto]-XXX
|
|
16
|
+
|
|
17
|
+
## Tareas
|
|
18
|
+
|
|
19
|
+
### 🏗️ Setup & Scaffolding
|
|
20
|
+
|
|
21
|
+
#### TASK-001: Crear estructura base
|
|
22
|
+
- **Ticket:** [proyecto]-XXX
|
|
23
|
+
- **Estimación:** 1 SP
|
|
24
|
+
- **Asignado:** @nombre
|
|
25
|
+
- **Estado:** ⬜ Pendiente / 🔄 En progreso / ✅ Completada
|
|
26
|
+
- **Branch:** `feat/TICKET-XXX-estructura-base`
|
|
27
|
+
|
|
28
|
+
**Subtareas:**
|
|
29
|
+
- [ ] Crear carpeta de feature
|
|
30
|
+
- [ ] Configurar rutas
|
|
31
|
+
- [ ] Crear archivos base
|
|
32
|
+
|
|
33
|
+
**Criterios de aceptación:**
|
|
34
|
+
- [ ] Estructura creada según design.md
|
|
35
|
+
- [ ] Rutas registradas
|
|
36
|
+
- [ ] Tests de humo pasan
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### 📊 Backend / API
|
|
41
|
+
|
|
42
|
+
#### TASK-002: Implementar modelo de datos
|
|
43
|
+
- **Ticket:** [proyecto]-XXX
|
|
44
|
+
- **Estimación:** 2 SP
|
|
45
|
+
- **Asignado:** @nombre
|
|
46
|
+
- **Estado:** ⬜ Pendiente
|
|
47
|
+
- **Branch:** `feat/TICKET-XXX-modelo-datos`
|
|
48
|
+
|
|
49
|
+
**Subtareas:**
|
|
50
|
+
- [ ] Crear entidades/modelos
|
|
51
|
+
- [ ] Crear migraciones
|
|
52
|
+
- [ ] Crear seeders (si aplica)
|
|
53
|
+
|
|
54
|
+
**Criterios de aceptación:**
|
|
55
|
+
- [ ] Migraciones ejecutan sin error
|
|
56
|
+
- [ ] Modelo tiene validaciones según spec
|
|
57
|
+
- [ ] Tests unitarios del modelo
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
#### TASK-003: Implementar endpoints API
|
|
62
|
+
- **Ticket:** [proyecto]-XXX
|
|
63
|
+
- **Estimación:** 3 SP
|
|
64
|
+
- **Asignado:** @nombre
|
|
65
|
+
- **Estado:** ⬜ Pendiente
|
|
66
|
+
- **Branch:** `feat/TICKET-XXX-api-endpoints`
|
|
67
|
+
|
|
68
|
+
**Subtareas:**
|
|
69
|
+
- [ ] POST /api/recurso
|
|
70
|
+
- [ ] GET /api/recurso/:id
|
|
71
|
+
- [ ] PUT /api/recurso/:id
|
|
72
|
+
- [ ] DELETE /api/recurso/:id
|
|
73
|
+
|
|
74
|
+
**Criterios de aceptación:**
|
|
75
|
+
- [ ] Endpoints responden según contrato en design.md
|
|
76
|
+
- [ ] Validación de inputs
|
|
77
|
+
- [ ] Manejo de errores
|
|
78
|
+
- [ ] Tests de integración
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### 🎨 Frontend / UI
|
|
83
|
+
|
|
84
|
+
#### TASK-004: Implementar componentes UI
|
|
85
|
+
- **Ticket:** [proyecto]-XXX
|
|
86
|
+
- **Estimación:** 3 SP
|
|
87
|
+
- **Asignado:** @nombre
|
|
88
|
+
- **Estado:** ⬜ Pendiente
|
|
89
|
+
- **Branch:** `feat/TICKET-XXX-ui-components`
|
|
90
|
+
|
|
91
|
+
**Subtareas:**
|
|
92
|
+
- [ ] Componente de lista
|
|
93
|
+
- [ ] Componente de formulario
|
|
94
|
+
- [ ] Componente de detalle
|
|
95
|
+
|
|
96
|
+
**Criterios de aceptación:**
|
|
97
|
+
- [ ] Componentes renderizan correctamente
|
|
98
|
+
- [ ] Responsive design
|
|
99
|
+
- [ ] Accesibilidad WCAG 2.1
|
|
100
|
+
- [ ] Tests de comportamiento
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### 🧪 Testing
|
|
105
|
+
|
|
106
|
+
#### TASK-005: Tests unitarios
|
|
107
|
+
- **Ticket:** [proyecto]-XXX
|
|
108
|
+
- **Estimación:** 2 SP
|
|
109
|
+
- **Asignado:** @nombre
|
|
110
|
+
- **Estado:** ⬜ Pendiente
|
|
111
|
+
- **Branch:** `feat/TICKET-XXX-unit-tests`
|
|
112
|
+
|
|
113
|
+
**Cobertura requerida:**
|
|
114
|
+
- [ ] Lógica de negocio: 80%+
|
|
115
|
+
- [ ] Validadores: 90%+
|
|
116
|
+
- [ ] Utils: 90%+
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
#### TASK-006: Tests de integración
|
|
121
|
+
- **Ticket:** [proyecto]-XXX
|
|
122
|
+
- **Estimación:** 2 SP
|
|
123
|
+
- **Asignado:** @nombre
|
|
124
|
+
- **Estado:** ⬜ Pendiente
|
|
125
|
+
- **Branch:** `feat/TICKET-XXX-integration-tests`
|
|
126
|
+
|
|
127
|
+
**Escenarios:**
|
|
128
|
+
- [ ] Happy path completo
|
|
129
|
+
- [ ] Casos de error
|
|
130
|
+
- [ ] Edge cases
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### 📚 Documentación
|
|
135
|
+
|
|
136
|
+
#### TASK-007: Documentación técnica
|
|
137
|
+
- **Ticket:** [proyecto]-XXX
|
|
138
|
+
- **Estimación:** 1 SP
|
|
139
|
+
- **Asignado:** @nombre
|
|
140
|
+
- **Estado:** ⬜ Pendiente
|
|
141
|
+
- **Branch:** `docs/TICKET-XXX-documentacion`
|
|
142
|
+
|
|
143
|
+
**Subtareas:**
|
|
144
|
+
- [ ] README del módulo
|
|
145
|
+
- [ ] Documentación de API (OpenAPI/Swagger)
|
|
146
|
+
- [ ] Actualizar Wiki técnica
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Dependencias entre Tareas
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
TASK-001 (Setup)
|
|
154
|
+
↓
|
|
155
|
+
TASK-002 (Modelo) ───┬──▶ TASK-003 (API)
|
|
156
|
+
│ ↓
|
|
157
|
+
└──▶ TASK-004 (UI)
|
|
158
|
+
↓
|
|
159
|
+
┌─────────┴─────────┐
|
|
160
|
+
↓ ↓
|
|
161
|
+
TASK-005 (Unit) TASK-006 (Integration)
|
|
162
|
+
└─────────┬─────────┘
|
|
163
|
+
↓
|
|
164
|
+
TASK-007 (Docs)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Testing Report
|
|
168
|
+
|
|
169
|
+
### Pre-merge Checklist
|
|
170
|
+
- [ ] Todos los tests pasan
|
|
171
|
+
- [ ] Cobertura mínima alcanzada
|
|
172
|
+
- [ ] Sin errores de linting
|
|
173
|
+
- [ ] CodeRabbit review aprobado
|
|
174
|
+
- [ ] PR review manual aprobado
|
|
175
|
+
|
|
176
|
+
### Resultados de Tests
|
|
177
|
+
| Suite | Tests | Passed | Failed | Coverage |
|
|
178
|
+
|-------|-------|--------|--------|----------|
|
|
179
|
+
| Unit | X | X | 0 | XX% |
|
|
180
|
+
| Integration | X | X | 0 | N/A |
|
|
181
|
+
| E2E | X | X | 0 | N/A |
|
|
182
|
+
|
|
183
|
+
### CodeRabbit Report
|
|
184
|
+
- **PR:** #XXX
|
|
185
|
+
- **Status:** ✅ Aprobado / ❌ Cambios requeridos
|
|
186
|
+
- **Issues encontrados:** X
|
|
187
|
+
- **Issues resueltos:** X
|
|
188
|
+
|
|
189
|
+
## Notas
|
|
190
|
+
|
|
191
|
+
- Notas adicionales sobre la implementación
|
|
192
|
+
- Decisiones tomadas durante el desarrollo
|
|
193
|
+
- Problemas encontrados y soluciones
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specleap-framework",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.5",
|
|
4
4
|
"description": "Spec-Driven Development Framework — Transform VSCode, Cursor, JetBrains into spec-first development machines",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"spec-driven-development",
|
|
@@ -20,15 +20,16 @@
|
|
|
20
20
|
"homepage": "https://specleap.com",
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
|
-
"url": "https://github.com/
|
|
23
|
+
"url": "https://github.com/ConceptualCreative/specleap-framework.git"
|
|
24
24
|
},
|
|
25
25
|
"bugs": {
|
|
26
|
-
"url": "https://github.com/
|
|
26
|
+
"url": "https://github.com/ConceptualCreative/specleap-framework/issues"
|
|
27
27
|
},
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"author": {
|
|
30
|
-
"name": "
|
|
31
|
-
"
|
|
30
|
+
"name": "Styng Arias",
|
|
31
|
+
"email": "developers@conceptualcreative.com",
|
|
32
|
+
"url": "https://conceptualcreative.com"
|
|
32
33
|
},
|
|
33
34
|
"bin": "bin/specleap",
|
|
34
35
|
"scripts": {
|
|
@@ -49,12 +50,16 @@
|
|
|
49
50
|
".continuerules",
|
|
50
51
|
".cursorrules",
|
|
51
52
|
".github/**",
|
|
53
|
+
".specleap/i18n/**",
|
|
54
|
+
".specleap/i18n.sh",
|
|
52
55
|
".vscode/**",
|
|
53
56
|
"bin/**",
|
|
57
|
+
"openspec/**",
|
|
54
58
|
"rules/**",
|
|
55
59
|
"scripts/**",
|
|
56
60
|
"setup.sh",
|
|
57
61
|
"install.sh",
|
|
62
|
+
"CHANGELOG.md",
|
|
58
63
|
"CLAUDE.md",
|
|
59
64
|
"README.md",
|
|
60
65
|
"SETUP.md",
|
package/rules/git-workflow.md
CHANGED
|
@@ -62,9 +62,9 @@ tipo/TICKET-ID-descripcion-corta
|
|
|
62
62
|
|
|
63
63
|
**Ejemplos:**
|
|
64
64
|
```
|
|
65
|
-
feature/
|
|
66
|
-
fix/
|
|
67
|
-
refactor/
|
|
65
|
+
feature/app-tienda-23-integracion-tracker
|
|
66
|
+
fix/app-tienda-45-error-login-timeout
|
|
67
|
+
refactor/app-tienda-12-optimizar-queries
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### 5. Formato de Commits
|
|
@@ -39,7 +39,7 @@ Si hay trabajo en progreso sin commit → preguntar antes de continuar.
|
|
|
39
39
|
### Paso 4: Verificar Ticket
|
|
40
40
|
|
|
41
41
|
```
|
|
42
|
-
¿Hay un ticket en
|
|
42
|
+
¿Hay un ticket en Asana asociado a esta tarea?
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
- **Sí** → Usar el ID del ticket (SCRUM-XX) en rama y commits
|
|
@@ -82,7 +82,7 @@ Dejar nota clara de:
|
|
|
82
82
|
## Flujo Completo de Feature
|
|
83
83
|
|
|
84
84
|
```
|
|
85
|
-
1. TICKET (
|
|
85
|
+
1. TICKET (Asana)
|
|
86
86
|
└── Crear/asignar ticket SCRUM-XX
|
|
87
87
|
|
|
88
88
|
2. SPEC (SpecLeap)
|
|
@@ -113,7 +113,7 @@ Dejar nota clara de:
|
|
|
113
113
|
8. POST-DESARROLLO
|
|
114
114
|
├── Actualizar context/ si hubo decisiones
|
|
115
115
|
├── Actualizar spec si cambió
|
|
116
|
-
└── Cerrar ticket en
|
|
116
|
+
└── Cerrar ticket en Asana
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
---
|
package/scripts/README.md
CHANGED
|
@@ -41,40 +41,28 @@ git commit --no-verify -m "mensaje"
|
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
-
### `setup-mcp.sh`
|
|
45
|
-
|
|
46
|
-
**Propósito:** Instalación rápida de dependencias SpecLeap
|
|
47
|
-
|
|
48
|
-
**Uso:**
|
|
49
|
-
```bash
|
|
50
|
-
bash scripts/setup-mcp.sh
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Instala:**
|
|
54
|
-
- ✅ Cliente Asana (npm global)
|
|
55
|
-
- ✅ 20 Agent Skills TIER 1
|
|
56
|
-
- ✅ Context7 MCP (opcional)
|
|
57
|
-
|
|
58
|
-
**Tiempo:** ~5 minutos
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
44
|
### `install-skills.sh`
|
|
63
45
|
|
|
64
|
-
**Propósito:** Instalar Agent Skills
|
|
46
|
+
**Propósito:** Instalar los 34 Agent Skills del framework en `~/.skills/`.
|
|
65
47
|
|
|
66
48
|
**Uso:**
|
|
67
49
|
```bash
|
|
68
50
|
bash scripts/install-skills.sh
|
|
69
51
|
```
|
|
70
52
|
|
|
71
|
-
**Instala:**
|
|
53
|
+
**Instala:** 34 skills (20 TIER 1 + 14 TIER 2).
|
|
54
|
+
|
|
55
|
+
**Categorías:**
|
|
56
|
+
- Consistencia: `verification-before-completion`, `systematic-debugging`, `requesting-code-review`, `receiving-code-review`, `code-reviewer`, `debugging-wizard`
|
|
57
|
+
- Backend: `laravel-specialist`, `api-designer`, `database-optimizer`, `python-pro`, `react-expert`, `typescript-pro`
|
|
58
|
+
- Diseño y frontend: `frontend-design`, `canvas-design`, `algorithmic-art`, `skill-creator`, `web-design-guidelines`, `vercel-composition-patterns`, `agent-browser`
|
|
59
|
+
- DevOps: `devops-engineer`, `cloud-architect`, `architecture-designer`, `terraform-engineer`, `monitoring-expert`
|
|
60
|
+
- Mobile: `react-native-expert`, `flutter-expert`
|
|
61
|
+
- Testing: `test-driven-development`, `playwright-expert`, `test-master`
|
|
62
|
+
- Seguridad: `security-reviewer`, `gdpr-dsgvo-expert`
|
|
63
|
+
- Documentación y otros: `code-documenter`, `brainstorming`, `pdf`
|
|
72
64
|
|
|
73
|
-
|
|
74
|
-
- 5 skills de seguridad (SAST, STRIDE, OWASP)
|
|
75
|
-
- 3 skills de consistencia (verification-before-completion, DRY)
|
|
76
|
-
- 6 skills de diseño (Vercel-style, Tailwind, shadcn/ui)
|
|
77
|
-
- 6 skills de backend/dev (Laravel, React, TDD, API design)
|
|
65
|
+
El script detecta las skills ya instaladas y las salta. Puede volver a ejecutarse con seguridad.
|
|
78
66
|
|
|
79
67
|
---
|
|
80
68
|
|