specleap-framework 2.1.1 → 2.1.6
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 +292 -0
- package/CLAUDE.md +54 -13
- package/README.md +169 -529
- 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 +13 -6
- 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 +8 -8
- 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
package/README.md
CHANGED
|
@@ -1,624 +1,264 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/specleap-logo.png" alt="SpecLeap Framework" width="420" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Framework de Spec-Driven Development para desarrollo asistido por IA.</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/ConceptualCreative/specleap-framework/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-3b82f6.svg" alt="MIT License" /></a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/specleap-framework"><img src="https://img.shields.io/npm/v/specleap-framework.svg?color=22c55e&label=npm" alt="npm version" /></a>
|
|
12
|
+
<img src="https://img.shields.io/badge/agents-3-6366f1" alt="3 agents" />
|
|
13
|
+
<img src="https://img.shields.io/badge/commands-10-f97316" alt="10 commands" />
|
|
14
|
+
<img src="https://img.shields.io/badge/skills-34-22c55e" alt="34 Agent Skills" />
|
|
15
|
+
<img src="https://img.shields.io/badge/hooks-1-ec4899" alt="1 hook" />
|
|
16
|
+
<img src="https://img.shields.io/badge/rules-4-eab308" alt="4 rules" />
|
|
17
|
+
<img src="https://img.shields.io/badge/built%20for-Claude%20Code-000000" alt="Built for Claude Code" />
|
|
18
|
+
<a href="https://ko-fi.com/specleap"><img src="https://img.shields.io/badge/Ko--fi-Support%20SpecLeap-FF5E5B?logo=ko-fi&logoColor=white" alt="Ko-fi" /></a>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
SpecLeap convierte cualquier IDE con asistente de IA en un entorno de desarrollo spec-first. Combina un contrato de proyecto inmutable, agentes conversacionales especializados, 34 Agent Skills profesionales y un pipeline de validación en tres capas para entregar código consistente y probado sin improvisación.
|
|
22
|
+
|
|
23
|
+
**Versión actual:** 2.1.6 · **Licencia:** MIT · **Autor:** Styng Arias ([ConceptualCreative](https://conceptualcreative.com))
|
|
6
24
|
|
|
7
25
|
---
|
|
8
26
|
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
27
|
+
## Tabla de Contenidos
|
|
28
|
+
|
|
29
|
+
- [Instalación Rápida](#instalación-rápida)
|
|
30
|
+
- [Qué Aporta](#qué-aporta)
|
|
31
|
+
- [Comandos Conversacionales](#comandos-conversacionales)
|
|
32
|
+
- [Agent Skills](#agent-skills)
|
|
33
|
+
- [Cuestionario Interactivo](#cuestionario-interactivo)
|
|
34
|
+
- [Pipeline de Validación](#pipeline-de-validación)
|
|
35
|
+
- [Estructura del Framework](#estructura-del-framework)
|
|
36
|
+
- [Tokens Requeridos](#tokens-requeridos)
|
|
37
|
+
- [IDEs Compatibles](#ides-compatibles)
|
|
38
|
+
- [Dos Modos de Trabajo](#dos-modos-de-trabajo)
|
|
39
|
+
- [Documentación](#documentación)
|
|
40
|
+
- [Licencia y Contribución](#licencia-y-contribución)
|
|
19
41
|
|
|
20
42
|
---
|
|
21
43
|
|
|
22
|
-
##
|
|
44
|
+
## Instalación Rápida
|
|
23
45
|
|
|
24
|
-
|
|
25
|
-
- La IA improvisa código sin contexto
|
|
26
|
-
- Specs incompletas → implementación incorrecta
|
|
27
|
-
- Sin memoria → repite errores
|
|
28
|
-
- Cambios de scope sin control
|
|
29
|
-
|
|
30
|
-
✅ **Con SpecLeap:**
|
|
31
|
-
- CONTRATO define alcance inmutable
|
|
32
|
-
- Context/ guarda decisiones arquitectónicas
|
|
33
|
-
- Agentes especializados siguen standards
|
|
34
|
-
- Comandos conversacionales guían el flujo
|
|
35
|
-
- Memoria persistente por proyecto
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 🚀 Instalación
|
|
40
|
-
|
|
41
|
-
### Opción 1: Instalación desde npm (Recomendado)
|
|
46
|
+
### Vía npm (recomendado)
|
|
42
47
|
|
|
43
48
|
```bash
|
|
44
49
|
npx specleap-framework@latest
|
|
45
50
|
```
|
|
46
51
|
|
|
47
|
-
|
|
48
|
-
- ✅ GitHub token (control versiones + CodeRabbit)
|
|
49
|
-
- ✅ Asana token + workspace (backlog automático)
|
|
50
|
-
- ✅ Instala 34 Agent Skills automáticamente
|
|
51
|
-
- ✅ Configura CodeRabbit (.coderabbit.yaml)
|
|
52
|
-
- ✅ Crea estructura completa
|
|
53
|
-
- ⏱️ **Tiempo total: 10-15 minutos**
|
|
54
|
-
|
|
55
|
-
### Opción 2: Clonar desde GitHub
|
|
52
|
+
### Desde GitHub
|
|
56
53
|
|
|
57
54
|
```bash
|
|
58
|
-
git clone https://github.com/
|
|
59
|
-
cd specleap-framework
|
|
55
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
56
|
+
cd specleap-framework
|
|
60
57
|
bash setup.sh
|
|
61
58
|
```
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## 📋 Tokens Necesarios (se piden durante instalación)
|
|
60
|
+
El instalador interactivo solicita los tokens de GitHub y Asana, instala los 34 Agent Skills en `~/.skills/` y genera la estructura base. Tiempo total: 10 a 15 minutos.
|
|
68
61
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
**Cómo obtener los tokens:**
|
|
72
|
-
|
|
73
|
-
1. **GitHub Token:**
|
|
74
|
-
- Ve a https://github.com/settings/tokens
|
|
75
|
-
- "Generate new token (classic)"
|
|
76
|
-
- Scopes: `repo`, `workflow`
|
|
77
|
-
|
|
78
|
-
2. **Asana Token:**
|
|
79
|
-
- Ve a https://app.asana.com/0/my-apps
|
|
80
|
-
- "Create new token"
|
|
81
|
-
- Nombre: "SpecLeap Integration"
|
|
82
|
-
- Copia el token (empieza con `0/`)
|
|
83
|
-
|
|
84
|
-
**El instalador te pedirá estos tokens y configurará todo automáticamente.**
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## ⭐ Agent Skills — Lo Que Hace la Diferencia
|
|
89
|
-
|
|
90
|
-
SpecLeap incluye **20 skills especializadas** que transforman la calidad del código:
|
|
91
|
-
|
|
92
|
-
### Sin Skills vs Con Skills
|
|
93
|
-
|
|
94
|
-
| Aspecto | Sin Skills | Con Skills TIER 1 |
|
|
95
|
-
|---------|-----------|-------------------|
|
|
96
|
-
| **Diseño** | Bootstrap genérico | Estilo Vercel/Linear profesional |
|
|
97
|
-
| **Seguridad** | Vulnerabilidades básicas | OWASP Top 10 + STRIDE threat modeling |
|
|
98
|
-
| **Código** | Duplicación frecuente | DRY automático, verifica antes de crear |
|
|
99
|
-
| **APIs** | Diseño inconsistente | REST/GraphQL best practices |
|
|
100
|
-
| **Tests** | Coverage <60% | TDD methodology, coverage >=90% |
|
|
101
|
-
|
|
102
|
-
### 34 Agent Skills Profesionales
|
|
103
|
-
|
|
104
|
-
SpecLeap instala automáticamente **34 skills de calidad profesional** durante el setup.
|
|
105
|
-
|
|
106
|
-
#### 🔄 Consistencia & Code Quality (6)
|
|
107
|
-
- **Verification-before-completion** ⭐ **CRÍTICO**
|
|
108
|
-
- Systematic debugging
|
|
109
|
-
- Code review (requesting + receiving)
|
|
110
|
-
- Security reviewer
|
|
111
|
-
- GDPR/DSGVO compliance expert
|
|
112
|
-
|
|
113
|
-
#### 🎨 Diseño & Frontend (7)
|
|
114
|
-
- Frontend design (Anthropic)
|
|
115
|
-
- Web design guidelines (Vercel)
|
|
116
|
-
- Vercel composition patterns
|
|
117
|
-
- Agent browser automation
|
|
118
|
-
- Canvas design
|
|
119
|
-
- Algorithmic art
|
|
120
|
-
- Skill creator
|
|
121
|
-
|
|
122
|
-
#### 🛠️ Backend & APIs (8)
|
|
123
|
-
- Laravel specialist
|
|
124
|
-
- API designer
|
|
125
|
-
- Database optimizer
|
|
126
|
-
- Code documenter
|
|
127
|
-
- Python pro
|
|
128
|
-
- React expert
|
|
129
|
-
- TypeScript pro
|
|
130
|
-
- Debugging wizard
|
|
131
|
-
|
|
132
|
-
#### ☁️ DevOps & Infrastructure (5)
|
|
133
|
-
- DevOps engineer
|
|
134
|
-
- Cloud architect
|
|
135
|
-
- Architecture designer
|
|
136
|
-
- Terraform engineer
|
|
137
|
-
- Monitoring expert
|
|
138
|
-
|
|
139
|
-
#### 🧪 Testing (5)
|
|
140
|
-
- Test-driven development
|
|
141
|
-
- Playwright expert (E2E)
|
|
142
|
-
- Test master
|
|
143
|
-
- Code reviewer
|
|
144
|
-
- Receiving code review
|
|
145
|
-
|
|
146
|
-
#### 📱 Mobile Development (2)
|
|
147
|
-
- React Native expert
|
|
148
|
-
- Flutter expert
|
|
149
|
-
|
|
150
|
-
#### 💡 Otros (1)
|
|
151
|
-
- Brainstorming
|
|
152
|
-
- PDF analysis
|
|
153
|
-
|
|
154
|
-
**Instalación:** Automática durante `setup.sh` — Total: **34 skills** — [Ver SETUP.md](SETUP.md)
|
|
62
|
+
**Requisitos previos:** Node.js ≥ 18, Git, Bash.
|
|
155
63
|
|
|
156
64
|
---
|
|
157
65
|
|
|
158
|
-
##
|
|
66
|
+
## Qué Aporta
|
|
159
67
|
|
|
160
|
-
|
|
68
|
+
El desarrollo asistido por IA suele improvisar sin contexto, repetir errores pasados y dejar que el alcance se escape silenciosamente. SpecLeap impone una disciplina spec-first:
|
|
161
69
|
|
|
162
|
-
|
|
70
|
+
- Un **CONTRATO.md inmutable** define el proyecto y no cambia una vez aprobado. Las mejoras posteriores se registran en `ANEXOS.md`.
|
|
71
|
+
- Un banco de memoria `context/` guarda arquitectura, stack, convenciones y un log de decisiones técnicas.
|
|
72
|
+
- Tres agentes especializados (`backend`, `frontend`, `producto`) adoptan el rol adecuado según la tarea.
|
|
73
|
+
- Comandos conversacionales en español guían los ciclos de refinamiento, planificación, implementación y documentación.
|
|
74
|
+
- Un pipeline de validación de tres capas (pre-commit hooks, tests en `implementar` y CodeRabbit en el PR) bloquea merges de baja calidad.
|
|
163
75
|
|
|
164
|
-
|
|
165
|
-
# Ejecuta el cuestionario
|
|
166
|
-
./scripts/generate-contrato.sh
|
|
167
|
-
|
|
168
|
-
# Te hace 58 preguntas sobre tu proyecto
|
|
169
|
-
# Guarda progreso cada 10 preguntas (puedes interrumpir)
|
|
170
|
-
# Genera CONTRATO.md completo con YAML frontmatter
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### Lo Que Obtienes
|
|
174
|
-
|
|
175
|
-
✅ **CONTRATO.md completo** con:
|
|
176
|
-
- Información del proyecto (nombre, responsable, fecha)
|
|
177
|
-
- Identidad (objetivo, problema que resuelve, público objetivo)
|
|
178
|
-
- Stack tecnológico (backend, frontend, base de datos, DevOps)
|
|
179
|
-
- Funcionalidades core y secundarias
|
|
180
|
-
- Sistema de usuarios (roles, autenticación, permisos)
|
|
181
|
-
- Diseño (colores, estilo visual, responsive)
|
|
182
|
-
- Arquitectura (patrón, separación)
|
|
183
|
-
- Seguridad (nivel, GDPR, datos sensibles)
|
|
184
|
-
- Rendimiento (targets de carga, usuarios concurrentes)
|
|
185
|
-
- Testing (unit, integration, e2e, coverage)
|
|
186
|
-
- Restricciones (plazo, presupuesto, fuera de alcance)
|
|
187
|
-
|
|
188
|
-
✅ **Validaciones inteligentes:**
|
|
189
|
-
- Tipos de datos (string, select, boolean, number, array)
|
|
190
|
-
- Rangos y longitudes
|
|
191
|
-
- Patterns regex (slug, hexcolor, etc.)
|
|
192
|
-
- Skip condicional (si no tiene auth, no pregunta métodos)
|
|
193
|
-
- Auto-sugerencias (si eliges Laravel, sugiere PHP 8.3)
|
|
194
|
-
|
|
195
|
-
✅ **Guardado parcial:**
|
|
196
|
-
- Checkpoint cada 10 preguntas
|
|
197
|
-
- Puedes interrumpir y continuar después
|
|
198
|
-
- Detecta sesiones incompletas automáticamente
|
|
199
|
-
|
|
200
|
-
✅ **Integración Asana:**
|
|
201
|
-
- Genera backlog (secciones + user tareas)
|
|
202
|
-
- Preview visual antes de crear
|
|
203
|
-
- Confirmación manual
|
|
204
|
-
- Actualiza CONTRATO.md con metadata Asana
|
|
205
|
-
|
|
206
|
-
### Workflow Completo
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
1. Ejecuta cuestionario (20 min)
|
|
210
|
-
↓
|
|
211
|
-
2. Responde 58 preguntas
|
|
212
|
-
↓
|
|
213
|
-
3. CONTRATO.md generado automáticamente
|
|
214
|
-
↓
|
|
215
|
-
4. Push a GitHub (OBLIGATORIO — control de versiones)
|
|
216
|
-
↓
|
|
217
|
-
5. planificar → crea backlog Asana
|
|
218
|
-
↓
|
|
219
|
-
6. implementar → desarrolla según spec
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**⚠️ IMPORTANTE:** El CONTRATO.md DEBE guardarse en GitHub. Es la fuente de verdad del proyecto y debe estar versionado junto con el código.
|
|
76
|
+
---
|
|
223
77
|
|
|
224
|
-
|
|
78
|
+
## Comandos Conversacionales
|
|
225
79
|
|
|
226
|
-
|
|
227
|
-
$ cd specleap
|
|
228
|
-
$ ./scripts/generate-contrato.sh
|
|
80
|
+
Los comandos se escriben como palabras planas, sin prefijo (ni `/` ni `.`). El asistente detecta la palabra clave y ejecuta las instrucciones definidas en `.commands/*.md`.
|
|
229
81
|
|
|
230
|
-
|
|
231
|
-
|
|
82
|
+
| Comando | Descripción |
|
|
83
|
+
|---------|-------------|
|
|
84
|
+
| `Hola` | Inicia sesión: lista proyectos o arranca uno nuevo con el cuestionario |
|
|
85
|
+
| `refinar [proyecto]-XXX` | Refina la user story de una tarea Asana |
|
|
86
|
+
| `planificar [proyecto]-XXX` | Genera un plan de implementación desde el contrato |
|
|
87
|
+
| `implementar @plan.md` | Ejecuta el plan: rama, código, tests, PR |
|
|
88
|
+
| `explicar [concepto]` | Explica código, arquitectura o decisiones |
|
|
89
|
+
| `documentar` | Actualiza la documentación técnica |
|
|
90
|
+
| `adoptar` | Analiza un proyecto legacy y genera un CONTRATO retroactivo |
|
|
91
|
+
| `crear-tickets` | Alias de `planificar` |
|
|
92
|
+
| `ayuda` | Lista todos los comandos disponibles |
|
|
232
93
|
|
|
233
|
-
|
|
234
|
-
💾 Guardado automático cada 10 preguntas
|
|
235
|
-
🔄 Puedes interrumpir con Ctrl+C
|
|
94
|
+
El prefijo `/` está reservado por Claude Code para sus propios slash commands (`/help`, `/clear`, etc.), por lo que los comandos de SpecLeap deben escribirse sin él para evitar colisión.
|
|
236
95
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
━━━ Información del Proyecto ━━━
|
|
96
|
+
---
|
|
240
97
|
|
|
241
|
-
|
|
242
|
-
💡 Usa solo minúsculas, números y guiones
|
|
243
|
-
📝 Ejemplo: mi-proyecto
|
|
244
|
-
> mi-tienda-online
|
|
98
|
+
## Agent Skills
|
|
245
99
|
|
|
246
|
-
|
|
247
|
-
💡 Puede tener mayúsculas, espacios
|
|
248
|
-
📝 Ejemplo: Mi Proyecto Awesome
|
|
249
|
-
> Mi Tienda Online
|
|
100
|
+
SpecLeap instala **34 Agent Skills profesionales** en `~/.skills/` durante el setup. Se activan automáticamente cuando el contexto lo requiere.
|
|
250
101
|
|
|
251
|
-
|
|
102
|
+
### TIER 1 — 20 skills base
|
|
252
103
|
|
|
253
|
-
|
|
104
|
+
| Categoría | Skills |
|
|
105
|
+
|-----------|--------|
|
|
106
|
+
| Consistencia | `verification-before-completion`, `systematic-debugging`, `requesting-code-review`, `receiving-code-review`, `code-reviewer`, `debugging-wizard` |
|
|
107
|
+
| Backend | `laravel-specialist`, `api-designer`, `database-optimizer`, `python-pro`, `react-expert`, `typescript-pro` |
|
|
108
|
+
| Diseño | `frontend-design`, `canvas-design`, `algorithmic-art`, `skill-creator` |
|
|
109
|
+
| DevOps | `devops-engineer`, `cloud-architect`, `architecture-designer` |
|
|
110
|
+
| Testing | `test-driven-development` |
|
|
254
111
|
|
|
255
|
-
|
|
112
|
+
### TIER 2 — 14 skills añadidas en v2.1
|
|
256
113
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
114
|
+
| Categoría | Skills |
|
|
115
|
+
|-----------|--------|
|
|
116
|
+
| Frontend web | `web-design-guidelines`, `vercel-composition-patterns`, `agent-browser` |
|
|
117
|
+
| Mobile | `react-native-expert`, `flutter-expert` |
|
|
118
|
+
| Testing avanzado | `playwright-expert`, `test-master` |
|
|
119
|
+
| Seguridad | `security-reviewer`, `gdpr-dsgvo-expert` |
|
|
120
|
+
| Infraestructura | `terraform-engineer`, `monitoring-expert` |
|
|
121
|
+
| Otras | `brainstorming`, `code-documenter`, `pdf` |
|
|
260
122
|
|
|
261
|
-
|
|
123
|
+
La skill `verification-before-completion` obliga al asistente a verificar si el código solicitado ya existe antes de crearlo, evitando duplicación de lógica.
|
|
262
124
|
|
|
263
125
|
---
|
|
264
126
|
|
|
265
|
-
##
|
|
127
|
+
## Cuestionario Interactivo
|
|
266
128
|
|
|
267
|
-
|
|
268
|
-
specleap/
|
|
269
|
-
├── proyectos/ # Proyectos independientes
|
|
270
|
-
│ ├── _template/ # Template para nuevos proyectos
|
|
271
|
-
│ │ ├── CONTRATO.md # 🔒 Contrato inmutable
|
|
272
|
-
│ │ ├── ANEXOS.md # ✏️ Mejoras/módulos adicionales
|
|
273
|
-
│ │ ├── context/ # Memory-bank del proyecto
|
|
274
|
-
│ │ │ ├── brief.md
|
|
275
|
-
│ │ │ ├── architecture.md
|
|
276
|
-
│ │ │ ├── tech-stack.md
|
|
277
|
-
│ │ │ ├── conventions.md
|
|
278
|
-
│ │ │ ├── decisions.md
|
|
279
|
-
│ │ │ ├── personas.md
|
|
280
|
-
│ │ │ └── user-stories.md
|
|
281
|
-
│ │ └── openspec/ # CLI state (propuestas)
|
|
282
|
-
│ │ └── proposals/
|
|
283
|
-
│ └── mi-proyecto/ # Tu proyecto activo
|
|
284
|
-
│ └── [misma estructura]
|
|
285
|
-
├── .agents/ # Agentes especializados
|
|
286
|
-
│ ├── backend.md
|
|
287
|
-
│ ├── frontend.md
|
|
288
|
-
│ └── producto.md
|
|
289
|
-
├── .commands/ # Comandos conversacionales
|
|
290
|
-
│ ├── inicio.md # Cuestionario 58 preguntas
|
|
291
|
-
│ ├── refinar.md
|
|
292
|
-
│ ├── planificar.md
|
|
293
|
-
│ ├── implementar.md
|
|
294
|
-
│ ├── documentar.md
|
|
295
|
-
│ ├── explicar.md
|
|
296
|
-
│ └── adoptar.md
|
|
297
|
-
├── rules/ # Standards globales
|
|
298
|
-
│ ├── PHP-LARAVEL.md
|
|
299
|
-
│ ├── JAVASCRIPT-REACT.md
|
|
300
|
-
│ ├── CSS-TAILWIND.md
|
|
301
|
-
│ └── DOCS.md
|
|
302
|
-
├── scripts/ # Automatización
|
|
303
|
-
│ ├── generate-contrato.sh # Cuestionario interactivo ⭐
|
|
304
|
-
│ ├── generate-jira-structure.sh
|
|
305
|
-
│ ├── analyze-project.sh
|
|
306
|
-
│ ├── setup-mcp.sh # Install Asana + Skills
|
|
307
|
-
│ └── install-skills.sh # Agent Skills installer
|
|
308
|
-
├── openspec/ # CLI (opcional)
|
|
309
|
-
│ ├── bin/openspec
|
|
310
|
-
│ └── src/
|
|
311
|
-
├── CLAUDE.md # Reglas generales para IA
|
|
312
|
-
├── AGENTS.md # Orquestación de agentes
|
|
313
|
-
└── SETUP.md # Guía completa de setup
|
|
314
|
-
```
|
|
129
|
+
Tras decir `Hola` y elegir "Proyecto nuevo", SpecLeap arranca un cuestionario de **58 preguntas** con checkpoint automático cada 10 preguntas. Duración estimada: 15 a 20 minutos.
|
|
315
130
|
|
|
316
|
-
|
|
131
|
+
El cuestionario cubre 20 secciones que van desde la identidad del proyecto (objetivo, problema, audiencia) hasta restricciones (plazo, presupuesto, fuera de alcance), pasando por stack, funcionalidades, sistema de usuarios, panel de administración, almacenamiento, pagos, notificaciones, diseño, arquitectura, despliegue, seguridad, rendimiento y testing.
|
|
317
132
|
|
|
318
|
-
|
|
133
|
+
Al finalizar se genera:
|
|
319
134
|
|
|
320
|
-
|
|
135
|
+
- `proyectos/[nombre]/CONTRATO.md` con YAML frontmatter
|
|
136
|
+
- `context/` completo (`brief.md`, `architecture.md`, `tech-stack.md`, `conventions.md`, `decisions.md`)
|
|
137
|
+
- Propuesta de estructura Asana (con confirmación manual antes de crear las tareas)
|
|
321
138
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
```
|
|
325
|
-
Hola
|
|
326
|
-
→ Inicia cuestionario de 58 preguntas
|
|
327
|
-
→ Genera CONTRATO.md completo automáticamente
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Para Proyectos Existentes
|
|
331
|
-
|
|
332
|
-
```
|
|
333
|
-
refinar "añadir sistema de notificaciones push"
|
|
334
|
-
→ Analiza viabilidad
|
|
335
|
-
→ Genera propuesta de cambio
|
|
336
|
-
→ Actualiza context/
|
|
337
|
-
|
|
338
|
-
planificar
|
|
339
|
-
→ Lee CONTRATO.md
|
|
340
|
-
→ Genera backlog Asana
|
|
341
|
-
→ Crea secciones + user stories
|
|
342
|
-
|
|
343
|
-
implementar "login con google"
|
|
344
|
-
→ Verifica si está en CONTRATO
|
|
345
|
-
→ Lee context/ para contexto
|
|
346
|
-
→ Genera código siguiendo standards
|
|
347
|
-
|
|
348
|
-
documentar "api de usuarios"
|
|
349
|
-
→ Genera docs API (OpenAPI/Swagger)
|
|
350
|
-
→ Actualiza README técnico
|
|
351
|
-
|
|
352
|
-
explicar "arquitectura del sistema"
|
|
353
|
-
→ Genera diagrama + explicación
|
|
354
|
-
→ Basado en context/architecture.md
|
|
355
|
-
|
|
356
|
-
adoptar
|
|
357
|
-
→ Analiza proyecto existente
|
|
358
|
-
→ Genera CONTRATO retroactivo
|
|
359
|
-
→ Extrae arquitectura y decisiones
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
**Detalle completo:** Ver [docs/COMANDOS.md](docs/COMANDOS.md)
|
|
139
|
+
El sistema detecta sesiones incompletas al reiniciarlo y permite reanudar desde la última pregunta respondida.
|
|
363
140
|
|
|
364
141
|
---
|
|
365
142
|
|
|
366
|
-
##
|
|
143
|
+
## Pipeline de Validación
|
|
367
144
|
|
|
368
|
-
|
|
145
|
+
Un cambio solo llega a merge si pasa las tres capas automáticas:
|
|
369
146
|
|
|
370
|
-
|
|
147
|
+
| Capa | Momento | Duración | Valida |
|
|
148
|
+
|------|---------|----------|--------|
|
|
149
|
+
| Git hooks pre-commit | Antes de cada commit | <5 s | Sintaxis, linters, formato, inmutabilidad del CONTRATO |
|
|
150
|
+
| Validación en `implementar` | Al terminar una feature | 1 a 5 min | Tests unitarios e integración, specs, cobertura ≥ 80% |
|
|
151
|
+
| CodeRabbit en PR | Al abrir el Pull Request | 5 a 10 min | Arquitectura, seguridad, lógica de negocio, complejidad |
|
|
371
152
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
```
|
|
375
|
-
# Ver todos los comandos disponibles
|
|
376
|
-
ayuda
|
|
377
|
-
|
|
378
|
-
# Comandos principales
|
|
379
|
-
refinar "Como usuario quiero login"
|
|
380
|
-
planificar
|
|
381
|
-
implementar
|
|
382
|
-
documentar
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
**Cuándo usarlo:**
|
|
386
|
-
- ✅ Equipos pequeños (1-3 devs) o desarrollo individual
|
|
387
|
-
- ✅ Prefieres chat natural vs terminal
|
|
388
|
-
- ✅ Desarrollo ágil y rápido
|
|
389
|
-
- ✅ Proyectos personales o startups
|
|
390
|
-
|
|
391
|
-
---
|
|
392
|
-
|
|
393
|
-
### ⚙️ **Modo CLI Formal** (OpenSpec)
|
|
394
|
-
|
|
395
|
-
**Usa comandos de terminal** para workflow estructurado:
|
|
153
|
+
Instalación de los hooks desde la raíz del proyecto:
|
|
396
154
|
|
|
397
155
|
```bash
|
|
398
|
-
|
|
399
|
-
openspec --help
|
|
400
|
-
|
|
401
|
-
# Workflow completo con propuestas formales
|
|
402
|
-
openspec new CHANGE-001 "Añadir autenticación JWT"
|
|
403
|
-
openspec ff CHANGE-001 # Fast-forward: genera propuesta completa
|
|
404
|
-
openspec apply CHANGE-001 # Implementa
|
|
405
|
-
openspec verify CHANGE-001 # Verifica tests + specs
|
|
406
|
-
openspec code-review CHANGE-001 # Review con CodeRabbit
|
|
407
|
-
openspec archive CHANGE-001 # Archiva completado
|
|
156
|
+
bash scripts/install-git-hooks.sh
|
|
408
157
|
```
|
|
409
158
|
|
|
410
|
-
|
|
411
|
-
- ✅ Equipos grandes (4+ devs) o distribuidos
|
|
412
|
-
- ✅ Necesitas propuestas de cambio formales y trazables
|
|
413
|
-
- ✅ Workflow enterprise con auditoría y trazabilidad completa
|
|
159
|
+
La configuración de CodeRabbit vive en `.coderabbit.yaml` con perfil `assertive` y comentarios en español.
|
|
414
160
|
|
|
415
161
|
---
|
|
416
162
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
**¡Sí!** Usa conversacional para el día a día y CLI para cambios grandes:
|
|
163
|
+
## Estructura del Framework
|
|
420
164
|
|
|
421
165
|
```
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
166
|
+
specleap/
|
|
167
|
+
├── proyectos/ Proyectos independientes
|
|
168
|
+
│ └── mi-proyecto/
|
|
169
|
+
│ ├── CONTRATO.md Contrato inmutable
|
|
170
|
+
│ ├── ANEXOS.md Mejoras y módulos adicionales
|
|
171
|
+
│ ├── context/ Memory bank del proyecto
|
|
172
|
+
│ └── specs/ Planes de implementación por ticket
|
|
173
|
+
├── .agents/ Agentes (backend, frontend, producto)
|
|
174
|
+
├── .commands/ Comandos conversacionales
|
|
175
|
+
├── rules/ Standards globales (PHP/Laravel, React, Tailwind, docs)
|
|
176
|
+
├── scripts/ Automatización (cuestionario, Asana, skills, hooks)
|
|
177
|
+
├── openspec/ CLI opcional para workflow formal
|
|
178
|
+
├── CLAUDE.md Contexto para Claude Code
|
|
179
|
+
├── AGENTS.md Contexto genérico multi-IDE
|
|
180
|
+
├── GEMINI.md Contexto para Google Gemini
|
|
181
|
+
├── codex.md Contexto para GitHub Copilot
|
|
182
|
+
└── SETUP.md Guía de instalación completa
|
|
429
183
|
```
|
|
430
184
|
|
|
431
|
-
|
|
185
|
+
Cada proyecto dentro de `proyectos/` es independiente, con su propio contrato y memoria, y se crea dinámicamente durante el flujo de `Hola`.
|
|
432
186
|
|
|
433
187
|
---
|
|
434
188
|
|
|
435
|
-
##
|
|
436
|
-
|
|
437
|
-
**SpecLeap es agnóstico al IDE.** Funciona con **cualquier editor que tenga asistente de IA**:
|
|
189
|
+
## Tokens Requeridos
|
|
438
190
|
|
|
439
|
-
|
|
440
|
-
- ✅ **Cursor** — IDE nativo con Claude integrado
|
|
441
|
-
- ✅ **JetBrains** (IntelliJ, PhpStorm, WebStorm) — Con AI Assistant
|
|
442
|
-
- ✅ **Vim/Neovim** — Con plugins de IA (copilot.vim, etc.)
|
|
443
|
-
- ✅ **Zed** — Editor moderno con IA integrada
|
|
444
|
-
- ✅ **Cualquier IDE con asistente IA** — Si tu editor tiene IA, SpecLeap funciona
|
|
191
|
+
Durante el setup se solicitan dos tokens que el instalador guarda en la configuración del IDE:
|
|
445
192
|
|
|
446
|
-
**
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
- Usa comandos conversacionales o CLI según tu preferencia
|
|
193
|
+
**GitHub Personal Access Token**
|
|
194
|
+
URL: https://github.com/settings/tokens
|
|
195
|
+
Tipo: classic · Scopes: `repo`, `workflow`
|
|
450
196
|
|
|
451
|
-
**
|
|
197
|
+
**Asana Personal Access Token**
|
|
198
|
+
URL: https://app.asana.com/0/my-apps
|
|
199
|
+
El token empieza por `0/`.
|
|
452
200
|
|
|
453
201
|
---
|
|
454
202
|
|
|
455
|
-
##
|
|
456
|
-
|
|
457
|
-
SpecLeap garantiza calidad de código con **3 capas de validación automática**:
|
|
458
|
-
|
|
459
|
-
### **🔹 Capa 1: Git Hooks Pre-Commit** (Validación rápida - <5 seg)
|
|
460
|
-
|
|
461
|
-
**Se ejecuta ANTES de cada commit automáticamente.**
|
|
462
|
-
|
|
463
|
-
✅ **Valida:**
|
|
464
|
-
- Sintaxis (PHP, JS/TS)
|
|
465
|
-
- Linters (ESLint, PHPStan)
|
|
466
|
-
- Formatters (Prettier, PHP-CS-Fixer)
|
|
467
|
-
- CONTRATO.md no se modifica (es inmutable)
|
|
468
|
-
- No hay console.log / var_dump olvidados
|
|
469
|
-
|
|
470
|
-
❌ **Si falla:** Rechaza el commit y muestra errores
|
|
471
|
-
|
|
472
|
-
**Instalación:**
|
|
473
|
-
```bash
|
|
474
|
-
cd tu-proyecto
|
|
475
|
-
bash scripts/install-git-hooks.sh
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
**Para saltarte (NO recomendado):**
|
|
479
|
-
```bash
|
|
480
|
-
git commit --no-verify -m "mensaje"
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
---
|
|
484
|
-
|
|
485
|
-
### **🔹 Capa 2: Validación Completa en `implementar`** (1-5 min)
|
|
486
|
-
|
|
487
|
-
**Se ejecuta al terminar una feature antes de push.**
|
|
203
|
+
## IDEs Compatibles
|
|
488
204
|
|
|
489
|
-
|
|
490
|
-
- Tests unitarios
|
|
491
|
-
- Tests de integración
|
|
492
|
-
- Validación vs CONTRATO.md
|
|
493
|
-
- Validación vs specs
|
|
494
|
-
- Coverage > 80%
|
|
205
|
+
SpecLeap es agnóstico al editor. Funciona con cualquier IDE que incorpore un asistente de IA:
|
|
495
206
|
|
|
496
|
-
|
|
207
|
+
- VSCode con Claude Code, GitHub Copilot o Continue
|
|
208
|
+
- Cursor
|
|
209
|
+
- JetBrains (IntelliJ, PhpStorm, WebStorm) con AI Assistant
|
|
210
|
+
- Vim y Neovim con plugins de IA
|
|
211
|
+
- Zed
|
|
497
212
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
**Uso:**
|
|
501
|
-
```
|
|
502
|
-
implementar "login con Google"
|
|
503
|
-
→ Escribe código
|
|
504
|
-
→ Valida TODO automáticamente
|
|
505
|
-
→ Si pasa: push + PR creado
|
|
506
|
-
```
|
|
213
|
+
El framework detecta el IDE y aplica los archivos de contexto apropiados (`CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `codex.md`).
|
|
507
214
|
|
|
508
215
|
---
|
|
509
216
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
**Se ejecuta automáticamente al crear PR en GitHub.**
|
|
217
|
+
## Dos Modos de Trabajo
|
|
513
218
|
|
|
514
|
-
|
|
515
|
-
- Arquitectura y patrones
|
|
516
|
-
- Seguridad (vulnerabilidades)
|
|
517
|
-
- Lógica de negocio
|
|
518
|
-
- Cumplimiento de specs
|
|
519
|
-
- Complejidad ciclomática
|
|
520
|
-
- Documentación
|
|
219
|
+
**Modo conversacional** — Recomendado para equipos pequeños o desarrollo individual. El flujo se ejecuta escribiendo los comandos en el chat con el asistente.
|
|
521
220
|
|
|
522
|
-
|
|
523
|
-
- Problemas encontrados
|
|
524
|
-
- Sugerencias de mejora
|
|
525
|
-
- Labels automáticos
|
|
526
|
-
- Estimación de esfuerzo de review
|
|
221
|
+
**Modo CLI formal (OpenSpec)** — Recomendado para equipos grandes o distribuidos con requisitos de trazabilidad. Expone comandos de terminal para gestionar propuestas de cambio con design, tasks y testing report estructurado:
|
|
527
222
|
|
|
528
|
-
**Setup:**
|
|
529
223
|
```bash
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
**Idioma:** Español
|
|
537
|
-
**Más info:** Ver `.coderabbit.yaml`
|
|
538
|
-
|
|
539
|
-
---
|
|
540
|
-
|
|
541
|
-
### **🎯 Resultado: Código de Calidad Garantizado**
|
|
542
|
-
|
|
543
|
-
```
|
|
544
|
-
Escribes código
|
|
545
|
-
↓
|
|
546
|
-
🔹 Capa 1: Pre-commit hook valida básicos
|
|
547
|
-
↓ (si pasa)
|
|
548
|
-
git commit exitoso
|
|
549
|
-
↓
|
|
550
|
-
Comando `implementar` termina
|
|
551
|
-
↓
|
|
552
|
-
🔹 Capa 2: Validación completa (tests + specs)
|
|
553
|
-
↓ (si pasa)
|
|
554
|
-
Push + PR creado
|
|
555
|
-
↓
|
|
556
|
-
🔹 Capa 3: CodeRabbit revisa arquitectura + seguridad
|
|
557
|
-
↓
|
|
558
|
-
Merge (solo si las 3 capas pasan)
|
|
224
|
+
openspec new CHANGE-001 "Añadir autenticación JWT"
|
|
225
|
+
openspec ff CHANGE-001
|
|
226
|
+
openspec apply CHANGE-001
|
|
227
|
+
openspec verify CHANGE-001
|
|
228
|
+
openspec code-review CHANGE-001
|
|
229
|
+
openspec archive CHANGE-001
|
|
559
230
|
```
|
|
560
231
|
|
|
561
|
-
|
|
562
|
-
- ✅ Menos bugs en producción
|
|
563
|
-
- ✅ Code reviews más rápidos (lo obvio ya está validado)
|
|
564
|
-
- ✅ Aprendes de CodeRabbit (explica el "por qué")
|
|
565
|
-
- ✅ Cumplimiento de specs garantizado
|
|
232
|
+
Ambos modos coexisten. Lo habitual es trabajar conversacionalmente en el día a día y reservar el CLI para cambios grandes con auditoría completa.
|
|
566
233
|
|
|
567
234
|
---
|
|
568
235
|
|
|
569
|
-
##
|
|
236
|
+
## Documentación
|
|
570
237
|
|
|
571
|
-
-
|
|
572
|
-
-
|
|
573
|
-
-
|
|
574
|
-
-
|
|
575
|
-
-
|
|
576
|
-
-
|
|
577
|
-
- 📋 `proyectos/_template/CONTRATO.md` — Template contrato
|
|
578
|
-
- 🏗️ `CLAUDE.md` — Configuración para Claude Code
|
|
238
|
+
- [SETUP.md](SETUP.md) — Guía de instalación paso a paso
|
|
239
|
+
- [openspec/README.md](openspec/README.md) — Referencia del CLI formal
|
|
240
|
+
- `.commands/ayuda.md` — Lista completa de comandos conversacionales
|
|
241
|
+
- `.agents/` — Definiciones de los tres roles especializados
|
|
242
|
+
- `rules/` — Standards globales por tecnología
|
|
243
|
+
- `proyectos/_template/CONTRATO.md` — Plantilla de contrato
|
|
579
244
|
|
|
580
245
|
---
|
|
581
246
|
|
|
582
|
-
##
|
|
247
|
+
## Licencia y Contribución
|
|
583
248
|
|
|
584
|
-
|
|
249
|
+
Distribuido bajo licencia MIT. Ver [LICENSE](LICENSE).
|
|
585
250
|
|
|
586
|
-
|
|
251
|
+
Para contribuir:
|
|
587
252
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
- ✅ Crear más Agent Skills
|
|
593
|
-
- ✅ Soporte a la comunidad
|
|
253
|
+
1. Haz fork del repositorio.
|
|
254
|
+
2. Crea una rama: `git checkout -b feature/mi-cambio`.
|
|
255
|
+
3. Aplica los cambios y verifica que las tres capas de validación pasan.
|
|
256
|
+
4. Abre un Pull Request siguiendo Conventional Commits.
|
|
594
257
|
|
|
595
|
-
|
|
258
|
+
Mantenido por Styng Arias — [ConceptualCreative](https://conceptualcreative.com).
|
|
596
259
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
---
|
|
602
|
-
|
|
603
|
-
## 🤝 Contribuciones
|
|
604
|
-
|
|
605
|
-
¡Contribuciones bienvenidas! Por favor:
|
|
606
|
-
|
|
607
|
-
1. Fork el proyecto
|
|
608
|
-
2. Crea una branch (`git checkout -b feature/nueva-feature`)
|
|
609
|
-
3. Commit tus cambios (`git commit -am 'Add nueva feature'`)
|
|
610
|
-
4. Push a la branch (`git push origin feature/nueva-feature`)
|
|
611
|
-
5. Abre un Pull Request
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
## 🔗 Enlaces
|
|
616
|
-
|
|
617
|
-
- 🌐 **Website:** [specleap.com](https://specleap.com)
|
|
618
|
-
- 📦 **GitHub:** [github.com/iapanderson/specleap](https://github.com/iapanderson/specleap-framework)
|
|
619
|
-
- 💬 **Comunidad:** (próximamente Discord/Slack)
|
|
620
|
-
- 📧 **Contacto:** [Abrir Issue en GitHub](https://github.com/iapanderson/specleap-framework/issues)
|
|
621
|
-
|
|
622
|
-
---
|
|
260
|
+
**Repositorio:** https://github.com/ConceptualCreative/specleap-framework
|
|
261
|
+
**Issues y feedback:** https://github.com/ConceptualCreative/specleap-framework/issues
|
|
262
|
+
**Sitio web:** https://specleap.com
|
|
623
263
|
|
|
624
|
-
|
|
264
|
+
Si SpecLeap te resulta útil y quieres apoyar el mantenimiento, puedes hacerlo en [Ko-fi](https://ko-fi.com/specleap).
|