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
package/README.md
CHANGED
|
@@ -1,623 +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.5 · **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 33 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
|
-
### 33 Agent Skills Profesionales
|
|
103
|
-
|
|
104
|
-
SpecLeap instala automáticamente **33 skills de calidad profesional** durante el setup.
|
|
105
|
-
|
|
106
|
-
#### 🔄 Consistencia & Code Quality (5)
|
|
107
|
-
- **Verification-before-completion** ⭐ **CRÍTICO**
|
|
108
|
-
- Systematic debugging
|
|
109
|
-
- Code review (requesting + receiving)
|
|
110
|
-
- Security reviewer
|
|
111
|
-
|
|
112
|
-
#### 🎨 Diseño & Frontend (7)
|
|
113
|
-
- Frontend design (Anthropic)
|
|
114
|
-
- Web design guidelines (Vercel)
|
|
115
|
-
- Vercel composition patterns
|
|
116
|
-
- Agent browser automation
|
|
117
|
-
- Canvas design
|
|
118
|
-
- Algorithmic art
|
|
119
|
-
- Skill creator
|
|
120
|
-
|
|
121
|
-
#### 🛠️ Backend & APIs (8)
|
|
122
|
-
- Laravel specialist
|
|
123
|
-
- API designer
|
|
124
|
-
- Database optimizer
|
|
125
|
-
- Code documenter
|
|
126
|
-
- Python pro
|
|
127
|
-
- React expert
|
|
128
|
-
- TypeScript pro
|
|
129
|
-
- Debugging wizard
|
|
130
|
-
|
|
131
|
-
#### ☁️ DevOps & Infrastructure (5)
|
|
132
|
-
- DevOps engineer
|
|
133
|
-
- Cloud architect
|
|
134
|
-
- Architecture designer
|
|
135
|
-
- Terraform engineer
|
|
136
|
-
- Monitoring expert
|
|
137
|
-
|
|
138
|
-
#### 🧪 Testing (5)
|
|
139
|
-
- Test-driven development
|
|
140
|
-
- Playwright expert (E2E)
|
|
141
|
-
- Test master
|
|
142
|
-
- Code reviewer
|
|
143
|
-
- Receiving code review
|
|
144
|
-
|
|
145
|
-
#### 📱 Mobile Development (2)
|
|
146
|
-
- React Native expert
|
|
147
|
-
- Flutter expert
|
|
148
|
-
|
|
149
|
-
#### 💡 Otros (1)
|
|
150
|
-
- Brainstorming
|
|
151
|
-
- PDF analysis
|
|
152
|
-
|
|
153
|
-
**Instalación:** Automática durante `setup.sh` — Total: **33 skills** — [Ver SETUP.md](SETUP.md)
|
|
62
|
+
**Requisitos previos:** Node.js ≥ 18, Git, Bash.
|
|
154
63
|
|
|
155
64
|
---
|
|
156
65
|
|
|
157
|
-
##
|
|
66
|
+
## Qué Aporta
|
|
158
67
|
|
|
159
|
-
|
|
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:
|
|
160
69
|
|
|
161
|
-
|
|
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.
|
|
162
75
|
|
|
163
|
-
|
|
164
|
-
# Ejecuta el cuestionario
|
|
165
|
-
./scripts/generate-contrato.sh
|
|
166
|
-
|
|
167
|
-
# Te hace 58 preguntas sobre tu proyecto
|
|
168
|
-
# Guarda progreso cada 10 preguntas (puedes interrumpir)
|
|
169
|
-
# Genera CONTRATO.md completo con YAML frontmatter
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Lo Que Obtienes
|
|
173
|
-
|
|
174
|
-
✅ **CONTRATO.md completo** con:
|
|
175
|
-
- Información del proyecto (nombre, responsable, fecha)
|
|
176
|
-
- Identidad (objetivo, problema que resuelve, público objetivo)
|
|
177
|
-
- Stack tecnológico (backend, frontend, base de datos, DevOps)
|
|
178
|
-
- Funcionalidades core y secundarias
|
|
179
|
-
- Sistema de usuarios (roles, autenticación, permisos)
|
|
180
|
-
- Diseño (colores, estilo visual, responsive)
|
|
181
|
-
- Arquitectura (patrón, separación)
|
|
182
|
-
- Seguridad (nivel, GDPR, datos sensibles)
|
|
183
|
-
- Rendimiento (targets de carga, usuarios concurrentes)
|
|
184
|
-
- Testing (unit, integration, e2e, coverage)
|
|
185
|
-
- Restricciones (plazo, presupuesto, fuera de alcance)
|
|
186
|
-
|
|
187
|
-
✅ **Validaciones inteligentes:**
|
|
188
|
-
- Tipos de datos (string, select, boolean, number, array)
|
|
189
|
-
- Rangos y longitudes
|
|
190
|
-
- Patterns regex (slug, hexcolor, etc.)
|
|
191
|
-
- Skip condicional (si no tiene auth, no pregunta métodos)
|
|
192
|
-
- Auto-sugerencias (si eliges Laravel, sugiere PHP 8.3)
|
|
193
|
-
|
|
194
|
-
✅ **Guardado parcial:**
|
|
195
|
-
- Checkpoint cada 10 preguntas
|
|
196
|
-
- Puedes interrumpir y continuar después
|
|
197
|
-
- Detecta sesiones incompletas automáticamente
|
|
198
|
-
|
|
199
|
-
✅ **Integración Asana:**
|
|
200
|
-
- Genera backlog (secciones + user tareas)
|
|
201
|
-
- Preview visual antes de crear
|
|
202
|
-
- Confirmación manual
|
|
203
|
-
- Actualiza CONTRATO.md con metadata Asana
|
|
204
|
-
|
|
205
|
-
### Workflow Completo
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
1. Ejecuta cuestionario (20 min)
|
|
209
|
-
↓
|
|
210
|
-
2. Responde 58 preguntas
|
|
211
|
-
↓
|
|
212
|
-
3. CONTRATO.md generado automáticamente
|
|
213
|
-
↓
|
|
214
|
-
4. Push a GitHub (OBLIGATORIO — control de versiones)
|
|
215
|
-
↓
|
|
216
|
-
5. planificar → crea backlog Asana
|
|
217
|
-
↓
|
|
218
|
-
6. implementar → desarrolla según spec
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**⚠️ 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
|
+
---
|
|
222
77
|
|
|
223
|
-
|
|
78
|
+
## Comandos Conversacionales
|
|
224
79
|
|
|
225
|
-
|
|
226
|
-
$ cd specleap
|
|
227
|
-
$ ./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`.
|
|
228
81
|
|
|
229
|
-
|
|
230
|
-
|
|
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 |
|
|
231
93
|
|
|
232
|
-
|
|
233
|
-
💾 Guardado automático cada 10 preguntas
|
|
234
|
-
🔄 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.
|
|
235
95
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
━━━ Información del Proyecto ━━━
|
|
96
|
+
---
|
|
239
97
|
|
|
240
|
-
|
|
241
|
-
💡 Usa solo minúsculas, números y guiones
|
|
242
|
-
📝 Ejemplo: mi-proyecto
|
|
243
|
-
> mi-tienda-online
|
|
98
|
+
## Agent Skills
|
|
244
99
|
|
|
245
|
-
|
|
246
|
-
💡 Puede tener mayúsculas, espacios
|
|
247
|
-
📝 Ejemplo: Mi Proyecto Awesome
|
|
248
|
-
> Mi Tienda Online
|
|
100
|
+
SpecLeap instala **34 Agent Skills profesionales** en `~/.skills/` durante el setup. Se activan automáticamente cuando el contexto lo requiere.
|
|
249
101
|
|
|
250
|
-
|
|
102
|
+
### TIER 1 — 20 skills base
|
|
251
103
|
|
|
252
|
-
|
|
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` |
|
|
253
111
|
|
|
254
|
-
|
|
112
|
+
### TIER 2 — 14 skills añadidas en v2.1
|
|
255
113
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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` |
|
|
259
122
|
|
|
260
|
-
|
|
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.
|
|
261
124
|
|
|
262
125
|
---
|
|
263
126
|
|
|
264
|
-
##
|
|
127
|
+
## Cuestionario Interactivo
|
|
265
128
|
|
|
266
|
-
|
|
267
|
-
specleap/
|
|
268
|
-
├── proyectos/ # Proyectos independientes
|
|
269
|
-
│ ├── _template/ # Template para nuevos proyectos
|
|
270
|
-
│ │ ├── CONTRATO.md # 🔒 Contrato inmutable
|
|
271
|
-
│ │ ├── ANEXOS.md # ✏️ Mejoras/módulos adicionales
|
|
272
|
-
│ │ ├── context/ # Memory-bank del proyecto
|
|
273
|
-
│ │ │ ├── brief.md
|
|
274
|
-
│ │ │ ├── architecture.md
|
|
275
|
-
│ │ │ ├── tech-stack.md
|
|
276
|
-
│ │ │ ├── conventions.md
|
|
277
|
-
│ │ │ ├── decisions.md
|
|
278
|
-
│ │ │ ├── personas.md
|
|
279
|
-
│ │ │ └── user-stories.md
|
|
280
|
-
│ │ └── openspec/ # CLI state (propuestas)
|
|
281
|
-
│ │ └── proposals/
|
|
282
|
-
│ └── mi-proyecto/ # Tu proyecto activo
|
|
283
|
-
│ └── [misma estructura]
|
|
284
|
-
├── .agents/ # Agentes especializados
|
|
285
|
-
│ ├── backend.md
|
|
286
|
-
│ ├── frontend.md
|
|
287
|
-
│ └── producto.md
|
|
288
|
-
├── .commands/ # Comandos conversacionales
|
|
289
|
-
│ ├── inicio.md # Cuestionario 58 preguntas
|
|
290
|
-
│ ├── refinar.md
|
|
291
|
-
│ ├── planificar.md
|
|
292
|
-
│ ├── implementar.md
|
|
293
|
-
│ ├── documentar.md
|
|
294
|
-
│ ├── explicar.md
|
|
295
|
-
│ └── adoptar.md
|
|
296
|
-
├── rules/ # Standards globales
|
|
297
|
-
│ ├── PHP-LARAVEL.md
|
|
298
|
-
│ ├── JAVASCRIPT-REACT.md
|
|
299
|
-
│ ├── CSS-TAILWIND.md
|
|
300
|
-
│ └── DOCS.md
|
|
301
|
-
├── scripts/ # Automatización
|
|
302
|
-
│ ├── generate-contrato.sh # Cuestionario interactivo ⭐
|
|
303
|
-
│ ├── generate-jira-structure.sh
|
|
304
|
-
│ ├── analyze-project.sh
|
|
305
|
-
│ ├── setup-mcp.sh # Install Asana + Skills
|
|
306
|
-
│ └── install-skills.sh # Agent Skills installer
|
|
307
|
-
├── openspec/ # CLI (opcional)
|
|
308
|
-
│ ├── bin/openspec
|
|
309
|
-
│ └── src/
|
|
310
|
-
├── CLAUDE.md # Reglas generales para IA
|
|
311
|
-
├── AGENTS.md # Orquestación de agentes
|
|
312
|
-
└── SETUP.md # Guía completa de setup
|
|
313
|
-
```
|
|
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.
|
|
314
130
|
|
|
315
|
-
|
|
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.
|
|
316
132
|
|
|
317
|
-
|
|
133
|
+
Al finalizar se genera:
|
|
318
134
|
|
|
319
|
-
|
|
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)
|
|
320
138
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
```
|
|
324
|
-
Hola
|
|
325
|
-
→ Inicia cuestionario de 58 preguntas
|
|
326
|
-
→ Genera CONTRATO.md completo automáticamente
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
### Para Proyectos Existentes
|
|
330
|
-
|
|
331
|
-
```
|
|
332
|
-
refinar "añadir sistema de notificaciones push"
|
|
333
|
-
→ Analiza viabilidad
|
|
334
|
-
→ Genera propuesta de cambio
|
|
335
|
-
→ Actualiza context/
|
|
336
|
-
|
|
337
|
-
planificar
|
|
338
|
-
→ Lee CONTRATO.md
|
|
339
|
-
→ Genera backlog Asana
|
|
340
|
-
→ Crea secciones + user stories
|
|
341
|
-
|
|
342
|
-
implementar "login con google"
|
|
343
|
-
→ Verifica si está en CONTRATO
|
|
344
|
-
→ Lee context/ para contexto
|
|
345
|
-
→ Genera código siguiendo standards
|
|
346
|
-
|
|
347
|
-
documentar "api de usuarios"
|
|
348
|
-
→ Genera docs API (OpenAPI/Swagger)
|
|
349
|
-
→ Actualiza README técnico
|
|
350
|
-
|
|
351
|
-
explicar "arquitectura del sistema"
|
|
352
|
-
→ Genera diagrama + explicación
|
|
353
|
-
→ Basado en context/architecture.md
|
|
354
|
-
|
|
355
|
-
adoptar
|
|
356
|
-
→ Analiza proyecto existente
|
|
357
|
-
→ Genera CONTRATO retroactivo
|
|
358
|
-
→ Extrae arquitectura y decisiones
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
**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.
|
|
362
140
|
|
|
363
141
|
---
|
|
364
142
|
|
|
365
|
-
##
|
|
143
|
+
## Pipeline de Validación
|
|
366
144
|
|
|
367
|
-
|
|
145
|
+
Un cambio solo llega a merge si pasa las tres capas automáticas:
|
|
368
146
|
|
|
369
|
-
|
|
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 |
|
|
370
152
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
# Ver todos los comandos disponibles
|
|
375
|
-
ayuda
|
|
376
|
-
|
|
377
|
-
# Comandos principales
|
|
378
|
-
refinar "Como usuario quiero login"
|
|
379
|
-
planificar
|
|
380
|
-
implementar
|
|
381
|
-
documentar
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
**Cuándo usarlo:**
|
|
385
|
-
- ✅ Equipos pequeños (1-3 devs) o desarrollo individual
|
|
386
|
-
- ✅ Prefieres chat natural vs terminal
|
|
387
|
-
- ✅ Desarrollo ágil y rápido
|
|
388
|
-
- ✅ Proyectos personales o startups
|
|
389
|
-
|
|
390
|
-
---
|
|
391
|
-
|
|
392
|
-
### ⚙️ **Modo CLI Formal** (OpenSpec)
|
|
393
|
-
|
|
394
|
-
**Usa comandos de terminal** para workflow estructurado:
|
|
153
|
+
Instalación de los hooks desde la raíz del proyecto:
|
|
395
154
|
|
|
396
155
|
```bash
|
|
397
|
-
|
|
398
|
-
openspec --help
|
|
399
|
-
|
|
400
|
-
# Workflow completo con propuestas formales
|
|
401
|
-
openspec new CHANGE-001 "Añadir autenticación JWT"
|
|
402
|
-
openspec ff CHANGE-001 # Fast-forward: genera propuesta completa
|
|
403
|
-
openspec apply CHANGE-001 # Implementa
|
|
404
|
-
openspec verify CHANGE-001 # Verifica tests + specs
|
|
405
|
-
openspec code-review CHANGE-001 # Review con CodeRabbit
|
|
406
|
-
openspec archive CHANGE-001 # Archiva completado
|
|
156
|
+
bash scripts/install-git-hooks.sh
|
|
407
157
|
```
|
|
408
158
|
|
|
409
|
-
|
|
410
|
-
- ✅ Equipos grandes (4+ devs) o distribuidos
|
|
411
|
-
- ✅ Necesitas propuestas de cambio formales y trazables
|
|
412
|
-
- ✅ 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.
|
|
413
160
|
|
|
414
161
|
---
|
|
415
162
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
**¡Sí!** Usa conversacional para el día a día y CLI para cambios grandes:
|
|
163
|
+
## Estructura del Framework
|
|
419
164
|
|
|
420
165
|
```
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
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
|
|
428
183
|
```
|
|
429
184
|
|
|
430
|
-
|
|
185
|
+
Cada proyecto dentro de `proyectos/` es independiente, con su propio contrato y memoria, y se crea dinámicamente durante el flujo de `Hola`.
|
|
431
186
|
|
|
432
187
|
---
|
|
433
188
|
|
|
434
|
-
##
|
|
435
|
-
|
|
436
|
-
**SpecLeap es agnóstico al IDE.** Funciona con **cualquier editor que tenga asistente de IA**:
|
|
189
|
+
## Tokens Requeridos
|
|
437
190
|
|
|
438
|
-
|
|
439
|
-
- ✅ **Cursor** — IDE nativo con Claude integrado
|
|
440
|
-
- ✅ **JetBrains** (IntelliJ, PhpStorm, WebStorm) — Con AI Assistant
|
|
441
|
-
- ✅ **Vim/Neovim** — Con plugins de IA (copilot.vim, etc.)
|
|
442
|
-
- ✅ **Zed** — Editor moderno con IA integrada
|
|
443
|
-
- ✅ **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:
|
|
444
192
|
|
|
445
|
-
**
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
- 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`
|
|
449
196
|
|
|
450
|
-
**
|
|
197
|
+
**Asana Personal Access Token**
|
|
198
|
+
URL: https://app.asana.com/0/my-apps
|
|
199
|
+
El token empieza por `0/`.
|
|
451
200
|
|
|
452
201
|
---
|
|
453
202
|
|
|
454
|
-
##
|
|
455
|
-
|
|
456
|
-
SpecLeap garantiza calidad de código con **3 capas de validación automática**:
|
|
457
|
-
|
|
458
|
-
### **🔹 Capa 1: Git Hooks Pre-Commit** (Validación rápida - <5 seg)
|
|
459
|
-
|
|
460
|
-
**Se ejecuta ANTES de cada commit automáticamente.**
|
|
461
|
-
|
|
462
|
-
✅ **Valida:**
|
|
463
|
-
- Sintaxis (PHP, JS/TS)
|
|
464
|
-
- Linters (ESLint, PHPStan)
|
|
465
|
-
- Formatters (Prettier, PHP-CS-Fixer)
|
|
466
|
-
- CONTRATO.md no se modifica (es inmutable)
|
|
467
|
-
- No hay console.log / var_dump olvidados
|
|
468
|
-
|
|
469
|
-
❌ **Si falla:** Rechaza el commit y muestra errores
|
|
470
|
-
|
|
471
|
-
**Instalación:**
|
|
472
|
-
```bash
|
|
473
|
-
cd tu-proyecto
|
|
474
|
-
bash scripts/install-git-hooks.sh
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
**Para saltarte (NO recomendado):**
|
|
478
|
-
```bash
|
|
479
|
-
git commit --no-verify -m "mensaje"
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
### **🔹 Capa 2: Validación Completa en `implementar`** (1-5 min)
|
|
485
|
-
|
|
486
|
-
**Se ejecuta al terminar una feature antes de push.**
|
|
203
|
+
## IDEs Compatibles
|
|
487
204
|
|
|
488
|
-
|
|
489
|
-
- Tests unitarios
|
|
490
|
-
- Tests de integración
|
|
491
|
-
- Validación vs CONTRATO.md
|
|
492
|
-
- Validación vs specs
|
|
493
|
-
- Coverage > 80%
|
|
205
|
+
SpecLeap es agnóstico al editor. Funciona con cualquier IDE que incorpore un asistente de IA:
|
|
494
206
|
|
|
495
|
-
|
|
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
|
|
496
212
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
**Uso:**
|
|
500
|
-
```
|
|
501
|
-
implementar "login con Google"
|
|
502
|
-
→ Escribe código
|
|
503
|
-
→ Valida TODO automáticamente
|
|
504
|
-
→ Si pasa: push + PR creado
|
|
505
|
-
```
|
|
213
|
+
El framework detecta el IDE y aplica los archivos de contexto apropiados (`CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `codex.md`).
|
|
506
214
|
|
|
507
215
|
---
|
|
508
216
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
**Se ejecuta automáticamente al crear PR en GitHub.**
|
|
217
|
+
## Dos Modos de Trabajo
|
|
512
218
|
|
|
513
|
-
|
|
514
|
-
- Arquitectura y patrones
|
|
515
|
-
- Seguridad (vulnerabilidades)
|
|
516
|
-
- Lógica de negocio
|
|
517
|
-
- Cumplimiento de specs
|
|
518
|
-
- Complejidad ciclomática
|
|
519
|
-
- 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.
|
|
520
220
|
|
|
521
|
-
|
|
522
|
-
- Problemas encontrados
|
|
523
|
-
- Sugerencias de mejora
|
|
524
|
-
- Labels automáticos
|
|
525
|
-
- 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:
|
|
526
222
|
|
|
527
|
-
**Setup:**
|
|
528
223
|
```bash
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
**Idioma:** Español
|
|
536
|
-
**Más info:** Ver `.coderabbit.yaml`
|
|
537
|
-
|
|
538
|
-
---
|
|
539
|
-
|
|
540
|
-
### **🎯 Resultado: Código de Calidad Garantizado**
|
|
541
|
-
|
|
542
|
-
```
|
|
543
|
-
Escribes código
|
|
544
|
-
↓
|
|
545
|
-
🔹 Capa 1: Pre-commit hook valida básicos
|
|
546
|
-
↓ (si pasa)
|
|
547
|
-
git commit exitoso
|
|
548
|
-
↓
|
|
549
|
-
Comando `implementar` termina
|
|
550
|
-
↓
|
|
551
|
-
🔹 Capa 2: Validación completa (tests + specs)
|
|
552
|
-
↓ (si pasa)
|
|
553
|
-
Push + PR creado
|
|
554
|
-
↓
|
|
555
|
-
🔹 Capa 3: CodeRabbit revisa arquitectura + seguridad
|
|
556
|
-
↓
|
|
557
|
-
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
|
|
558
230
|
```
|
|
559
231
|
|
|
560
|
-
|
|
561
|
-
- ✅ Menos bugs en producción
|
|
562
|
-
- ✅ Code reviews más rápidos (lo obvio ya está validado)
|
|
563
|
-
- ✅ Aprendes de CodeRabbit (explica el "por qué")
|
|
564
|
-
- ✅ 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.
|
|
565
233
|
|
|
566
234
|
---
|
|
567
235
|
|
|
568
|
-
##
|
|
236
|
+
## Documentación
|
|
569
237
|
|
|
570
|
-
-
|
|
571
|
-
-
|
|
572
|
-
-
|
|
573
|
-
-
|
|
574
|
-
-
|
|
575
|
-
-
|
|
576
|
-
- 📋 `proyectos/_template/CONTRATO.md` — Template contrato
|
|
577
|
-
- 🏗️ `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
|
|
578
244
|
|
|
579
245
|
---
|
|
580
246
|
|
|
581
|
-
##
|
|
247
|
+
## Licencia y Contribución
|
|
582
248
|
|
|
583
|
-
|
|
249
|
+
Distribuido bajo licencia MIT. Ver [LICENSE](LICENSE).
|
|
584
250
|
|
|
585
|
-
|
|
251
|
+
Para contribuir:
|
|
586
252
|
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
- ✅ Crear más Agent Skills
|
|
592
|
-
- ✅ 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.
|
|
593
257
|
|
|
594
|
-
|
|
258
|
+
Mantenido por Styng Arias — [ConceptualCreative](https://conceptualcreative.com).
|
|
595
259
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
---
|
|
601
|
-
|
|
602
|
-
## 🤝 Contribuciones
|
|
603
|
-
|
|
604
|
-
¡Contribuciones bienvenidas! Por favor:
|
|
605
|
-
|
|
606
|
-
1. Fork el proyecto
|
|
607
|
-
2. Crea una branch (`git checkout -b feature/nueva-feature`)
|
|
608
|
-
3. Commit tus cambios (`git commit -am 'Add nueva feature'`)
|
|
609
|
-
4. Push a la branch (`git push origin feature/nueva-feature`)
|
|
610
|
-
5. Abre un Pull Request
|
|
611
|
-
|
|
612
|
-
---
|
|
613
|
-
|
|
614
|
-
## 🔗 Enlaces
|
|
615
|
-
|
|
616
|
-
- 🌐 **Website:** [specleap.com](https://specleap.com)
|
|
617
|
-
- 📦 **GitHub:** [github.com/iapanderson/specleap](https://github.com/iapanderson/specleap-framework)
|
|
618
|
-
- 💬 **Comunidad:** (próximamente Discord/Slack)
|
|
619
|
-
- 📧 **Contacto:** [Abrir Issue en GitHub](https://github.com/iapanderson/specleap-framework/issues)
|
|
620
|
-
|
|
621
|
-
---
|
|
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
|
|
622
263
|
|
|
623
|
-
|
|
264
|
+
Si SpecLeap te resulta útil y quieres apoyar el mantenimiento, puedes hacerlo en [Ko-fi](https://ko-fi.com/specleap).
|