specleap-framework 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/backend.md +419 -0
- package/.agents/frontend.md +577 -0
- package/.agents/producto.md +516 -0
- package/.commands/adoptar.md +323 -0
- package/.commands/ayuda.md +142 -0
- package/.commands/crear-tickets.md +55 -0
- package/.commands/documentar.md +285 -0
- package/.commands/explicar.md +234 -0
- package/.commands/implementar.md +383 -0
- package/.commands/inicio.md +824 -0
- package/.commands/nuevo/README.md +292 -0
- package/.commands/nuevo/questions-base.yaml +320 -0
- package/.commands/nuevo/responses-example.yaml +53 -0
- package/.commands/planificar.md +253 -0
- package/.commands/refinar.md +306 -0
- package/LICENSE +21 -0
- package/README.md +603 -0
- package/SETUP.md +351 -0
- package/install.sh +152 -0
- package/package.json +60 -0
- package/proyectos/_template/.gitkeep +1 -0
- package/proyectos/_template/ANEXOS.md +21 -0
- package/proyectos/_template/CONTRATO.md +26 -0
- package/proyectos/_template/context/.gitkeep +1 -0
- package/rules/development-rules.md +113 -0
- package/rules/environment-protection.md +97 -0
- package/rules/git-workflow.md +142 -0
- package/rules/session-protocol.md +121 -0
- package/scripts/README.md +129 -0
- package/scripts/analyze-project.sh +826 -0
- package/scripts/create-asana-tasks.sh +133 -0
- package/scripts/detect-project-type.sh +141 -0
- package/scripts/estimate-effort.sh +290 -0
- package/scripts/generate-asana-structure.sh +262 -0
- package/scripts/generate-contract.sh +360 -0
- package/scripts/generate-contrato.sh +555 -0
- package/scripts/install-git-hooks.sh +141 -0
- package/scripts/install-skills.sh +130 -0
- package/scripts/lib/asana-utils.sh +191 -0
- package/scripts/lib/jira-project-utils.sh +222 -0
- package/scripts/lib/questions.json +831 -0
- package/scripts/lib/render-contrato.py +195 -0
- package/scripts/lib/validate.sh +325 -0
- package/scripts/parse-contrato.sh +190 -0
- package/scripts/setup-mcp.sh +654 -0
- package/scripts/test-cuestionario.sh +428 -0
- package/setup.sh +458 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Reglas de Desarrollo — SpecLeap
|
|
2
|
+
|
|
3
|
+
> Reglas obligatorias para todo desarrollo dentro de proyectos gestionados con SpecLeap.
|
|
4
|
+
|
|
5
|
+
## 1. Centralización de Configuración
|
|
6
|
+
|
|
7
|
+
**NUNCA hardcodear valores.** Todo valor configurable debe estar en:
|
|
8
|
+
|
|
9
|
+
- Variables de entorno (`.env`)
|
|
10
|
+
- Archivos de configuración (`config/`)
|
|
11
|
+
- Constantes centralizadas
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
❌ $url = "https://api.example.com/v1";
|
|
15
|
+
✅ $url = config('services.api.url');
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Sin excepciones.** URLs, credenciales, puertos, rutas de archivos, claves API — todo centralizado.
|
|
19
|
+
|
|
20
|
+
## 2. Non-Destructive Development
|
|
21
|
+
|
|
22
|
+
Antes de cualquier cambio, evaluar la **jerarquía de impacto**:
|
|
23
|
+
|
|
24
|
+
| Nivel | Pregunta | Acción requerida |
|
|
25
|
+
|-------|----------|-----------------|
|
|
26
|
+
| 🔴 Crítico | ¿Puede romper producción? | Review obligatorio + rollback plan |
|
|
27
|
+
| 🟡 Alto | ¿Afecta datos existentes? | Migración reversible + backup |
|
|
28
|
+
| 🟢 Medio | ¿Cambia API pública? | Deprecación primero, luego cambio |
|
|
29
|
+
| ⚪ Bajo | ¿Cambio interno sin impacto externo? | Proceder con tests |
|
|
30
|
+
|
|
31
|
+
**Reglas:**
|
|
32
|
+
- Toda migración de base de datos debe ser **reversible** (`up` + `down`)
|
|
33
|
+
- Nunca eliminar columnas/tablas sin período de deprecación
|
|
34
|
+
- Cambios en APIs públicas requieren versionado
|
|
35
|
+
|
|
36
|
+
## 3. Análisis Previo Obligatorio
|
|
37
|
+
|
|
38
|
+
**ANTES de crear código nuevo:**
|
|
39
|
+
|
|
40
|
+
1. **Buscar** si ya existe funcionalidad similar en el proyecto
|
|
41
|
+
2. **Revisar** specs existentes relacionadas
|
|
42
|
+
3. **Verificar** patrones establecidos en el código
|
|
43
|
+
4. **Consultar** `context/conventions.md` del proyecto
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Buscar código existente antes de crear
|
|
47
|
+
grep -r "función_similar" src/
|
|
48
|
+
# Revisar specs relacionadas
|
|
49
|
+
ls openspec/specs/functional/ | grep "tema"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Si existe algo similar:** reutilizar o extender, NO duplicar.
|
|
53
|
+
|
|
54
|
+
## 4. Consistencia de Patrones
|
|
55
|
+
|
|
56
|
+
**Replicar EXACTAMENTE los patrones existentes del proyecto.**
|
|
57
|
+
|
|
58
|
+
- Si el proyecto usa Services → crear un Service, no inventar otra capa
|
|
59
|
+
- Si los Controllers siguen un formato → seguir ese formato exacto
|
|
60
|
+
- Si hay una convención de nombres → respetarla
|
|
61
|
+
|
|
62
|
+
**Antes de introducir un patrón nuevo:**
|
|
63
|
+
1. Documentar por qué el patrón actual no sirve
|
|
64
|
+
2. Proponer el nuevo patrón en una spec
|
|
65
|
+
3. Obtener aprobación antes de implementar
|
|
66
|
+
|
|
67
|
+
## 5. Comunicación de Errores
|
|
68
|
+
|
|
69
|
+
Cuando se detecta un error, documentar con esta estructura:
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
### Error detectado
|
|
73
|
+
- **Causa:** [descripción técnica de la causa raíz]
|
|
74
|
+
- **Impacto:** [qué afecta y a quién]
|
|
75
|
+
- **Solución:** [qué se hizo para resolverlo]
|
|
76
|
+
- **Verificación:** [cómo se verificó que está resuelto]
|
|
77
|
+
- **Prevención:** [qué se puede hacer para evitarlo en el futuro]
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 6. Fix de Errores por Análisis
|
|
81
|
+
|
|
82
|
+
Al encontrar un error:
|
|
83
|
+
|
|
84
|
+
1. **Primero:** Buscar código que YA funciona en el proyecto como referencia
|
|
85
|
+
2. **Segundo:** Analizar la diferencia entre lo que funciona y lo que falla
|
|
86
|
+
3. **Tercero:** Aplicar la corrección basándose en el patrón funcional
|
|
87
|
+
4. **Nunca:** Copiar soluciones externas sin adaptarlas al proyecto
|
|
88
|
+
|
|
89
|
+
## 7. Métodos Estáticos vs Instancia
|
|
90
|
+
|
|
91
|
+
Guía para decidir cuándo usar cada uno:
|
|
92
|
+
|
|
93
|
+
| Usar estático cuando | Usar instancia cuando |
|
|
94
|
+
|---------------------|----------------------|
|
|
95
|
+
| No necesita estado interno | Necesita estado o configuración |
|
|
96
|
+
| Es una utilidad pura (helper) | Tiene dependencias inyectadas |
|
|
97
|
+
| No necesita ser mockeado en tests | Debe ser testeable con mocks |
|
|
98
|
+
| Operación sin efectos secundarios | Interactúa con DB, APIs, filesystem |
|
|
99
|
+
|
|
100
|
+
## 8. Prohibición de Archivos en Raíz
|
|
101
|
+
|
|
102
|
+
**JAMÁS crear archivos sueltos en la raíz del proyecto** sin autorización explícita.
|
|
103
|
+
|
|
104
|
+
Todo archivo debe ir en su carpeta correspondiente:
|
|
105
|
+
- Código → `src/`
|
|
106
|
+
- Tests → `tests/`
|
|
107
|
+
- Configuración → `config/`
|
|
108
|
+
- Documentación → `docs/`
|
|
109
|
+
- Specs → `openspec/specs/`
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
*Estas reglas son obligatorias. Cualquier excepción debe ser aprobada y documentada en `context/decisions.md`.*
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Protección del Entorno — SpecLeap
|
|
2
|
+
|
|
3
|
+
> Reglas para proteger archivos críticos y mantener la integridad del proyecto.
|
|
4
|
+
|
|
5
|
+
## Archivos Protegidos
|
|
6
|
+
|
|
7
|
+
Los siguientes archivos y carpetas requieren **confirmación explícita** antes de ser modificados:
|
|
8
|
+
|
|
9
|
+
### 🔴 Nivel Máximo — Nunca modificar sin aprobación
|
|
10
|
+
|
|
11
|
+
| Archivo/Carpeta | Razón |
|
|
12
|
+
|----------------|-------|
|
|
13
|
+
| `openspec/specs/` | Contratos funcionales del proyecto |
|
|
14
|
+
| `openspec/changes/` | Historial de propuestas de cambio |
|
|
15
|
+
| `context/` | Memoria y contexto del proyecto |
|
|
16
|
+
| `.env` | Variables de entorno sensibles |
|
|
17
|
+
| `config/` | Configuración central |
|
|
18
|
+
| `main` branch | Rama de producción |
|
|
19
|
+
|
|
20
|
+
### 🟡 Nivel Alto — Confirmar antes de modificar
|
|
21
|
+
|
|
22
|
+
| Archivo/Carpeta | Razón |
|
|
23
|
+
|----------------|-------|
|
|
24
|
+
| `rules/` | Reglas del proyecto |
|
|
25
|
+
| `AGENTS.md` | Configuración de agentes AI |
|
|
26
|
+
| `README.md` | Documentación principal |
|
|
27
|
+
| Migraciones de DB | Afectan datos existentes |
|
|
28
|
+
|
|
29
|
+
## Reglas de Protección
|
|
30
|
+
|
|
31
|
+
### 1. Specs como Fuente de Verdad
|
|
32
|
+
|
|
33
|
+
Las specs en `openspec/specs/` son **contratos**. Para modificar una spec:
|
|
34
|
+
|
|
35
|
+
1. Crear una propuesta de cambio (`openspec/changes/`)
|
|
36
|
+
2. Documentar QUÉ cambia y POR QUÉ
|
|
37
|
+
3. Obtener aprobación
|
|
38
|
+
4. Solo entonces modificar la spec
|
|
39
|
+
|
|
40
|
+
**NUNCA** modificar una spec directamente sin propuesta.
|
|
41
|
+
|
|
42
|
+
### 2. Context como Memoria del Proyecto
|
|
43
|
+
|
|
44
|
+
Los archivos en `context/` documentan decisiones arquitectónicas. Para modificarlos:
|
|
45
|
+
|
|
46
|
+
1. Verificar que el cambio refleja una decisión real (no una suposición)
|
|
47
|
+
2. Documentar la fecha y razón del cambio
|
|
48
|
+
3. Actualizar `context/decisions.md` con la nueva decisión
|
|
49
|
+
|
|
50
|
+
### 3. Protección de Archivos en Producción
|
|
51
|
+
|
|
52
|
+
Antes de tocar archivos que afectan producción:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
⚠️ PREGUNTA: ¿Este cambio puede afectar al entorno de producción?
|
|
56
|
+
|
|
57
|
+
SI → Requiere:
|
|
58
|
+
1. Review de al menos 1 persona
|
|
59
|
+
2. Plan de rollback documentado
|
|
60
|
+
3. Ventana de mantenimiento acordada
|
|
61
|
+
|
|
62
|
+
NO → Proceder con el flujo normal
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 4. Archivos que NUNCA Deben Subirse al Repositorio
|
|
66
|
+
|
|
67
|
+
| Archivo | Razón |
|
|
68
|
+
|---------|-------|
|
|
69
|
+
| `.env` | Credenciales sensibles |
|
|
70
|
+
| `*.log` | Logs de desarrollo |
|
|
71
|
+
| `node_modules/` | Dependencias (se instalan) |
|
|
72
|
+
| `vendor/` | Dependencias PHP (se instalan) |
|
|
73
|
+
| `storage/*.key` | Claves privadas |
|
|
74
|
+
| `*.sqlite` | Bases de datos locales |
|
|
75
|
+
|
|
76
|
+
Verificar que `.gitignore` incluye todos estos patrones.
|
|
77
|
+
|
|
78
|
+
### 5. Backups Antes de Cambios Destructivos
|
|
79
|
+
|
|
80
|
+
Antes de:
|
|
81
|
+
- Eliminar archivos o carpetas
|
|
82
|
+
- Modificar migraciones existentes
|
|
83
|
+
- Cambiar estructura de base de datos
|
|
84
|
+
- Resetear ramas
|
|
85
|
+
|
|
86
|
+
**Hacer backup:**
|
|
87
|
+
```bash
|
|
88
|
+
# Backup de archivos
|
|
89
|
+
cp -r carpeta/ carpeta.backup/
|
|
90
|
+
|
|
91
|
+
# Backup de rama
|
|
92
|
+
git branch backup/nombre-rama
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
*La protección del entorno no es opcional. Estas reglas previenen pérdida de trabajo y datos.*
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Git Workflow — SpecLeap
|
|
2
|
+
|
|
3
|
+
> Protocolo completo de control de versiones. Todas las reglas son obligatorias.
|
|
4
|
+
|
|
5
|
+
## Reglas Críticas
|
|
6
|
+
|
|
7
|
+
### 1. NUNCA push sin autorización
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
🚫 PROHIBIDO hacer push directamente sin aprobación explícita del responsable.
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Flujo obligatorio:
|
|
14
|
+
1. Desarrollar en rama local
|
|
15
|
+
2. Verificar que tests pasan
|
|
16
|
+
3. Solicitar aprobación
|
|
17
|
+
4. Solo después de "aprobado" → push
|
|
18
|
+
|
|
19
|
+
### 2. Reglas de Ramas Protegidas
|
|
20
|
+
|
|
21
|
+
| Rama | Protección | Quién puede mergear |
|
|
22
|
+
|------|-----------|---------------------|
|
|
23
|
+
| `main` | 🔴 Máxima — solo releases | Lead/CTO |
|
|
24
|
+
| `stage` | 🟡 Alta — solo PRs aprobados | Lead + reviewer |
|
|
25
|
+
| `feature/*` | 🟢 Normal — desarrollo activo | Desarrollador asignado |
|
|
26
|
+
| `fix/*` | 🟢 Normal — correcciones | Desarrollador asignado |
|
|
27
|
+
|
|
28
|
+
**NUNCA:**
|
|
29
|
+
- Hacer commit directo a `main`
|
|
30
|
+
- Hacer commit directo a `stage`
|
|
31
|
+
- Forzar push (`--force`) a ramas protegidas
|
|
32
|
+
- Eliminar ramas protegidas
|
|
33
|
+
|
|
34
|
+
### 3. Crear Ramas desde Stage
|
|
35
|
+
|
|
36
|
+
**Toda rama nueva DEBE crearse desde `stage`:**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
git checkout stage
|
|
40
|
+
git pull origin stage
|
|
41
|
+
git checkout -b feature/SCRUM-XX-descripcion
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Verificar** que la rama parte de stage:
|
|
45
|
+
```bash
|
|
46
|
+
git log --oneline stage..HEAD # Debe mostrar solo tus commits
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 4. Convención de Nombres de Ramas
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
tipo/TICKET-ID-descripcion-corta
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Tipo | Uso |
|
|
56
|
+
|------|-----|
|
|
57
|
+
| `feature/` | Nueva funcionalidad |
|
|
58
|
+
| `fix/` | Corrección de bug |
|
|
59
|
+
| `refactor/` | Reestructuración sin cambio funcional |
|
|
60
|
+
| `docs/` | Solo documentación |
|
|
61
|
+
| `test/` | Solo tests |
|
|
62
|
+
|
|
63
|
+
**Ejemplos:**
|
|
64
|
+
```
|
|
65
|
+
feature/SCRUM-23-integracion-jira
|
|
66
|
+
fix/SCRUM-45-error-login-timeout
|
|
67
|
+
refactor/SCRUM-12-optimizar-queries
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 5. Formato de Commits
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
TICKET-ID: tipo(alcance): descripción
|
|
74
|
+
|
|
75
|
+
Cuerpo opcional con más detalle.
|
|
76
|
+
|
|
77
|
+
Refs: SPEC-XXX
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Ejemplos:**
|
|
81
|
+
```
|
|
82
|
+
SCRUM-23: feat(auth): implementar login con 2FA
|
|
83
|
+
SCRUM-45: fix(api): corregir timeout en endpoint /users
|
|
84
|
+
SCRUM-12: refactor(db): optimizar queries de dashboard
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Tipos:** `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, `style`
|
|
88
|
+
|
|
89
|
+
### 6. Protocolo Antes de Operaciones Git
|
|
90
|
+
|
|
91
|
+
Antes de cualquier operación Git significativa (merge, rebase, push):
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
1. VERIFICAR → git status, git log, rama correcta
|
|
95
|
+
2. PREGUNTAR → ¿Es seguro? ¿Afecta a otros?
|
|
96
|
+
3. GUARDAR → Stash o commit de trabajo en progreso
|
|
97
|
+
4. EJECUTAR → La operación Git
|
|
98
|
+
5. VERIFICAR → Confirmar que todo está correcto
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 7. Acciones Post-Pull (Laravel)
|
|
102
|
+
|
|
103
|
+
Después de un `git pull` en proyectos Laravel:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
composer install # Dependencias PHP
|
|
107
|
+
npm install # Dependencias JS
|
|
108
|
+
php artisan migrate # Migraciones pendientes
|
|
109
|
+
php artisan cache:clear # Limpiar cache
|
|
110
|
+
php artisan config:clear # Limpiar config cache
|
|
111
|
+
php artisan view:clear # Limpiar vistas compiladas
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 8. Pull Requests
|
|
115
|
+
|
|
116
|
+
**Todo PR debe incluir:**
|
|
117
|
+
|
|
118
|
+
- Referencia al ticket: `SCRUM-XX`
|
|
119
|
+
- Referencia a la spec: `SPEC-XXX`
|
|
120
|
+
- Descripción de cambios
|
|
121
|
+
- Checklist de verificación:
|
|
122
|
+
|
|
123
|
+
```markdown
|
|
124
|
+
## Checklist
|
|
125
|
+
- [ ] Tests pasan localmente
|
|
126
|
+
- [ ] Spec actualizada si hubo cambios
|
|
127
|
+
- [ ] Sin archivos hardcodeados
|
|
128
|
+
- [ ] Code review solicitado
|
|
129
|
+
- [ ] Documentación actualizada
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 9. Merge Strategy
|
|
133
|
+
|
|
134
|
+
| Situación | Estrategia |
|
|
135
|
+
|-----------|-----------|
|
|
136
|
+
| Feature → stage | Squash merge (1 commit limpio) |
|
|
137
|
+
| Stage → main | Merge commit (preservar historial) |
|
|
138
|
+
| Hotfix → main | Cherry-pick + merge a stage |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
*Estas reglas son obligatorias para todos los contribuidores del proyecto.*
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Protocolo de Inicio de Sesión — SpecLeap
|
|
2
|
+
|
|
3
|
+
> Procedimiento obligatorio al iniciar cualquier sesión de desarrollo.
|
|
4
|
+
|
|
5
|
+
## Al Iniciar Sesión
|
|
6
|
+
|
|
7
|
+
### Paso 1: Identificar Proyecto
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
¿En qué proyecto vamos a trabajar?
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Cargar el contexto del proyecto desde `context/`:
|
|
14
|
+
- `context/brief.md` — Resumen del proyecto
|
|
15
|
+
- `context/tech-stack.md` — Stack y versiones
|
|
16
|
+
- `context/conventions.md` — Patrones y convenciones
|
|
17
|
+
|
|
18
|
+
### Paso 2: Verificar Estado Git
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
git status # ¿Hay cambios pendientes?
|
|
22
|
+
git branch # ¿En qué rama estamos?
|
|
23
|
+
git log --oneline -5 # ¿Últimos commits?
|
|
24
|
+
git stash list # ¿Hay stashes pendientes?
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Si hay trabajo en progreso sin commit → preguntar antes de continuar.
|
|
28
|
+
|
|
29
|
+
### Paso 3: Identificar Tipo de Tarea
|
|
30
|
+
|
|
31
|
+
| Tipo | Flujo |
|
|
32
|
+
|------|-------|
|
|
33
|
+
| **Nueva feature** | Ticket → Spec → Rama → Implementar → Test → PR |
|
|
34
|
+
| **Fix/Bug** | Ticket → Analizar → Rama → Fix → Test → PR |
|
|
35
|
+
| **Refactor** | Ticket → Spec de cambio → Rama → Refactor → Test → PR |
|
|
36
|
+
| **Documentación** | Actualizar docs/context → Commit → PR |
|
|
37
|
+
| **Investigación** | Documentar hallazgos en context/ |
|
|
38
|
+
|
|
39
|
+
### Paso 4: Verificar Ticket
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
¿Hay un ticket en Jira asociado a esta tarea?
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- **Sí** → Usar el ID del ticket (SCRUM-XX) en rama y commits
|
|
46
|
+
- **No** → Crear el ticket antes de empezar
|
|
47
|
+
|
|
48
|
+
**No se empieza desarrollo sin ticket.**
|
|
49
|
+
|
|
50
|
+
### Paso 5: Verificar Spec
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
¿Existe una spec para esta funcionalidad?
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- **Sí** → Leerla antes de implementar
|
|
57
|
+
- **No** → Crearla con `openspec new` antes de codificar
|
|
58
|
+
- **Parcial** → Completarla antes de implementar
|
|
59
|
+
|
|
60
|
+
## Al Finalizar Sesión
|
|
61
|
+
|
|
62
|
+
### 1. Guardar Progreso
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
git add -A
|
|
66
|
+
git commit -m "SCRUM-XX: wip: descripción del progreso"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. Actualizar Contexto (si aplica)
|
|
70
|
+
|
|
71
|
+
Si durante la sesión se tomaron decisiones importantes:
|
|
72
|
+
- Actualizar `context/decisions.md`
|
|
73
|
+
- Actualizar specs si cambiaron requisitos
|
|
74
|
+
|
|
75
|
+
### 3. Documentar Estado
|
|
76
|
+
|
|
77
|
+
Dejar nota clara de:
|
|
78
|
+
- Qué se completó
|
|
79
|
+
- Qué queda pendiente
|
|
80
|
+
- Bloqueos encontrados
|
|
81
|
+
|
|
82
|
+
## Flujo Completo de Feature
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
1. TICKET (Jira)
|
|
86
|
+
└── Crear/asignar ticket SCRUM-XX
|
|
87
|
+
|
|
88
|
+
2. SPEC (SpecLeap)
|
|
89
|
+
└── openspec new "feature"
|
|
90
|
+
└── Revisar spec → Aprobar
|
|
91
|
+
|
|
92
|
+
3. PLANIFICACIÓN
|
|
93
|
+
└── openspec ff (genera design + tasks)
|
|
94
|
+
└── Revisar design → Aprobar
|
|
95
|
+
|
|
96
|
+
4. DESARROLLO
|
|
97
|
+
├── git checkout stage && git pull
|
|
98
|
+
├── git checkout -b feature/SCRUM-XX-nombre
|
|
99
|
+
├── Análisis previo (buscar código existente)
|
|
100
|
+
├── Implementar siguiendo patrones del proyecto
|
|
101
|
+
└── Tests unitarios + integración
|
|
102
|
+
|
|
103
|
+
5. VERIFICACIÓN
|
|
104
|
+
└── openspec verify
|
|
105
|
+
|
|
106
|
+
6. REVIEW
|
|
107
|
+
├── openspec code-review
|
|
108
|
+
└── PR con referencia a SCRUM-XX y SPEC-XXX
|
|
109
|
+
|
|
110
|
+
7. MERGE
|
|
111
|
+
└── Squash merge a stage (con aprobación)
|
|
112
|
+
|
|
113
|
+
8. POST-DESARROLLO
|
|
114
|
+
├── Actualizar context/ si hubo decisiones
|
|
115
|
+
├── Actualizar spec si cambió
|
|
116
|
+
└── Cerrar ticket en Jira
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
*Seguir este protocolo garantiza que ninguna tarea se ejecuta sin contexto, sin ticket, ni sin spec.*
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# SpecLeap Scripts
|
|
2
|
+
|
|
3
|
+
Colección de scripts de automatización para SpecLeap.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Scripts Disponibles
|
|
8
|
+
|
|
9
|
+
### `install-git-hooks.sh`
|
|
10
|
+
|
|
11
|
+
**Propósito:** Instalar git hooks de validación automática en proyectos
|
|
12
|
+
|
|
13
|
+
**Uso:**
|
|
14
|
+
```bash
|
|
15
|
+
# Desde la raíz del proyecto
|
|
16
|
+
bash scripts/install-git-hooks.sh
|
|
17
|
+
|
|
18
|
+
# O especificando ruta
|
|
19
|
+
bash scripts/install-git-hooks.sh /path/to/proyecto
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Qué instala:**
|
|
23
|
+
- **Pre-commit hook** — Validación rápida antes de cada commit
|
|
24
|
+
|
|
25
|
+
**Validaciones incluidas:**
|
|
26
|
+
- ✅ Sintaxis PHP (php -l)
|
|
27
|
+
- ✅ ESLint (JS/TS)
|
|
28
|
+
- ✅ Prettier (formateo)
|
|
29
|
+
- ✅ PHPStan (análisis estático PHP)
|
|
30
|
+
- ✅ PHP-CS-Fixer (estilo PHP)
|
|
31
|
+
- ✅ CONTRATO.md no se modifica (es inmutable)
|
|
32
|
+
- ✅ No hay TODOs críticos
|
|
33
|
+
- ✅ No hay código debug (console.log, var_dump, dd())
|
|
34
|
+
|
|
35
|
+
**Tiempo de ejecución:** <5 segundos
|
|
36
|
+
|
|
37
|
+
**Saltarse validación (NO recomendado):**
|
|
38
|
+
```bash
|
|
39
|
+
git commit --no-verify -m "mensaje"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
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
|
+
### `install-skills.sh`
|
|
63
|
+
|
|
64
|
+
**Propósito:** Instalar Agent Skills manualmente
|
|
65
|
+
|
|
66
|
+
**Uso:**
|
|
67
|
+
```bash
|
|
68
|
+
bash scripts/install-skills.sh
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Instala:** 20 Agent Skills TIER 1 en `~/.skills/`
|
|
72
|
+
|
|
73
|
+
**Skills incluidas:**
|
|
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)
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 🔧 Troubleshooting
|
|
82
|
+
|
|
83
|
+
### Git hooks no se ejecutan
|
|
84
|
+
|
|
85
|
+
**Causa:** Permisos incorrectos
|
|
86
|
+
|
|
87
|
+
**Solución:**
|
|
88
|
+
```bash
|
|
89
|
+
chmod +x .git/hooks/pre-commit
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### ESLint no encontrado
|
|
93
|
+
|
|
94
|
+
**Solución:**
|
|
95
|
+
```bash
|
|
96
|
+
npm install -D eslint
|
|
97
|
+
# o globalmente
|
|
98
|
+
npm install -g eslint
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### PHPStan no encontrado
|
|
102
|
+
|
|
103
|
+
**Solución:**
|
|
104
|
+
```bash
|
|
105
|
+
composer require --dev phpstan/phpstan
|
|
106
|
+
# o globalmente
|
|
107
|
+
composer global require phpstan/phpstan
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Hook muy lento
|
|
111
|
+
|
|
112
|
+
**Causa:** Demasiados archivos staged
|
|
113
|
+
|
|
114
|
+
**Solución:** Commit en batches más pequeños
|
|
115
|
+
```bash
|
|
116
|
+
git add archivo1.js
|
|
117
|
+
git commit -m "feat: archivo 1"
|
|
118
|
+
git add archivo2.js
|
|
119
|
+
git commit -m "feat: archivo 2"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 📚 Referencias
|
|
125
|
+
|
|
126
|
+
- **Git Hooks:** https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
|
|
127
|
+
- **ESLint:** https://eslint.org
|
|
128
|
+
- **PHPStan:** https://phpstan.org
|
|
129
|
+
- **PHP-CS-Fixer:** https://cs.symfony.com
|