specleap-framework 2.1.12 → 2.1.14
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/CHANGELOG.md +47 -0
- package/README.md +46 -5
- package/SETUP.md +59 -6
- package/package.json +1 -1
- package/setup.sh +81 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.14] - 2026-05-01
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`setup.sh` ahora pregunta SIEMPRE el nombre de la carpeta como Paso 0**, antes de la selección de idioma y antes de pedir cualquier token. Si el usuario escribe un nombre distinto al actual, el script renombra la carpeta in-place (`mv`) y sigue trabajando desde el nuevo path. Si pulsa Enter, se mantiene el nombre que ya tiene.
|
|
15
|
+
- El warning condicional introducido en v2.1.13 (que solo aparecía cuando la carpeta se llamaba exactamente `specleap-framework`) se elimina: el nuevo prompt activo lo reemplaza por completo, sin importar cómo se llame la carpeta de partida.
|
|
16
|
+
|
|
17
|
+
#### Por qué
|
|
18
|
+
|
|
19
|
+
Reportado por Styng tras testear v2.1.13: él esperaba un prompt activo, no un warning condicional. Con `git clone <url> mi-proyecto && cd mi-proyecto && bash setup.sh`, la v2.1.13 no preguntaba nada porque la carpeta no se llamaba `specleap-framework` (el filtro original era demasiado estrecho). Ahora el flujo es uniforme: el usuario siempre tiene la oportunidad de elegir el nombre, sin tener que recordar la sintaxis del segundo argumento de `git clone`.
|
|
20
|
+
|
|
21
|
+
#### Detalles del flujo
|
|
22
|
+
|
|
23
|
+
- Validación del nombre: letras, números, `-`, `_` y `.`, no puede empezar con `.`, máximo 100 caracteres. El prompt re-pregunta hasta que sea válido.
|
|
24
|
+
- Si el nombre escrito coincide con el actual, no hace `mv` (no-op), simplemente continúa.
|
|
25
|
+
- Si el nuevo path ya existe, se mantiene el nombre actual y se imprime un aviso (no aborta el setup).
|
|
26
|
+
- Si `SPECLEAP_INSTALL_PATH` ya está set (caso `npx` que pasa por `bin/specleap`), el bloque se salta entero — `bin/specleap` ya pidió el nombre antes de copiar archivos.
|
|
27
|
+
- El proceso bash sobrevive al `mv` del directorio activo porque mantiene el inode, no el path; tras el rename hace `cd` al nuevo path antes de continuar.
|
|
28
|
+
|
|
29
|
+
#### Tests cubiertos (4 escenarios, todos pasaron)
|
|
30
|
+
|
|
31
|
+
1. Enter en una carpeta llamada `specleap-framework` → mantiene nombre, no renombra.
|
|
32
|
+
2. Carpeta `mi-proyecto` + nombre nuevo `tienda-online` → renombra, vieja desaparece, nueva existe.
|
|
33
|
+
3. Carpeta `inicio` + nombre inválido `mi proyecto con espacios` + nombre válido `mi-proyecto-valido` → re-pregunta y luego renombra.
|
|
34
|
+
4. Carpeta `specleap-framework` + `SPECLEAP_INSTALL_PATH` set → no pregunta, va directo a Paso 1/6.
|
|
35
|
+
|
|
36
|
+
### Updated
|
|
37
|
+
|
|
38
|
+
- `README.md` y `SETUP.md`: la sección "Opción B: vía git clone" ahora explica que `setup.sh` pregunta el nombre como Paso 0 y que pasarlo a `git clone` es solo un atajo, no una obligación.
|
|
39
|
+
|
|
40
|
+
## [2.1.13] - 2026-05-01
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- **Confusion between the two install flows.** Reported by Styng during testing: with `git clone … && bash setup.sh`, the installer was not asking the carpeta-base / folder-name prompts that `bin/specleap` (the npx entry point) does ask. That looked like a regression but it's by design — the prompts live in `bin/specleap` (Node), not in `setup.sh` (bash). When the user clones with git they already chose where the code lives, and the second positional argument of `git clone` is the canonical way to set a custom folder name. The fix is making the difference obvious in docs and in runtime.
|
|
45
|
+
|
|
46
|
+
#### Changes
|
|
47
|
+
|
|
48
|
+
- `setup.sh` now prints a bilingual heads-up at the very start (before the language step) when the current folder is named `specleap-framework` (the `git clone` default) AND the script was invoked without `bin/specleap` having set `SPECLEAP_INSTALL_PATH`. The user gets a one-second pause, an explanation of how to clone with a custom name (`git clone <url> mi-proyecto`), and a [S/n] confirmation before continuing. If they cancel, the script exits 0 cleanly.
|
|
49
|
+
- `README.md`: rewrote the "Instalación Rápida" section as two clearly-labeled options (Opción A: vía npx — interactive prompts; Opción B: vía git clone — direct, name controlled by `git clone <url> <nombre>`) plus a comparison table so the reader picks intentionally.
|
|
50
|
+
- `SETUP.md`: replicated the same comparison upfront in the Quick Start section, with full examples for each path.
|
|
51
|
+
|
|
52
|
+
### Notes
|
|
53
|
+
|
|
54
|
+
- No code-path change in the actual installation logic. `bin/specleap` keeps its prompts; `setup.sh` runs the same setup it always ran. Only documentation and a single pre-check in `setup.sh` change.
|
|
55
|
+
- The pre-check in `setup.sh` is opt-out (Enter or `S` to continue), so users who really want a folder named `specleap-framework` aren't forced to do anything extra.
|
|
56
|
+
|
|
10
57
|
## [2.1.12] - 2026-04-30
|
|
11
58
|
|
|
12
59
|
### Added
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
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
22
|
|
|
23
|
-
**Versión actual:** 2.1.
|
|
23
|
+
**Versión actual:** 2.1.14 · **Licencia:** MIT · **Autor:** Styng Arias ([ConceptualCreative](https://conceptualcreative.com))
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -44,13 +44,31 @@ SpecLeap convierte cualquier IDE con asistente de IA en un entorno de desarrollo
|
|
|
44
44
|
|
|
45
45
|
## Instalación Rápida
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Hay dos formas de instalar SpecLeap. Elige según tu preferencia:
|
|
48
|
+
|
|
49
|
+
### Opción A: Vía npm (instalación interactiva, recomendado)
|
|
48
50
|
|
|
49
51
|
```bash
|
|
50
52
|
npx specleap-framework@latest
|
|
51
53
|
```
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
El instalador te **pregunta dónde quieres la carpeta y con qué nombre** antes de copiar nada. Ideal si quieres un setup guiado paso a paso.
|
|
56
|
+
|
|
57
|
+
Ejemplo de lo que verás:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
📁 ¿En qué carpeta base instalar SpecLeap?
|
|
61
|
+
Default: /Users/tu-usuario/Desktop
|
|
62
|
+
Carpeta base: ~/Downloads
|
|
63
|
+
|
|
64
|
+
📝 ¿Qué nombre quieres para la carpeta?
|
|
65
|
+
Default: specleap-framework
|
|
66
|
+
Nombre: mi-app-tienda
|
|
67
|
+
|
|
68
|
+
→ Resultado: /Users/tu-usuario/Downloads/mi-app-tienda/
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Opción B: Vía git clone (control desde la terminal)
|
|
54
72
|
|
|
55
73
|
```bash
|
|
56
74
|
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
@@ -58,9 +76,32 @@ cd specleap-framework
|
|
|
58
76
|
bash setup.sh
|
|
59
77
|
```
|
|
60
78
|
|
|
61
|
-
|
|
79
|
+
Cuando arranque `setup.sh` lo primero que te preguntará es **cómo quieres que se llame la carpeta** del proyecto. Si pulsas Enter mantiene el nombre que tiene (`specleap-framework` por default de git clone). Si escribes otro nombre, **el setup renombra la carpeta automáticamente** y continúa desde ahí. Después sigue con idioma, tokens, skills y CodeRabbit.
|
|
80
|
+
|
|
81
|
+
Atajo: si ya sabes el nombre, lo pasas a `git clone` para evitar el rename:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git mi-proyecto
|
|
85
|
+
cd mi-proyecto
|
|
86
|
+
bash setup.sh
|
|
87
|
+
# El setup pregunta el nombre igualmente; pulsa Enter para mantener "mi-proyecto".
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Diferencias rápidas
|
|
91
|
+
|
|
92
|
+
| | Vía npm | Vía git clone |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| **Pregunta carpeta y nombre** | ✅ Sí, interactivo | ❌ No, lo decides con `cd` y `git clone <url> <nombre>` |
|
|
95
|
+
| **Requiere Node.js** | ✅ Sí (≥ 18) | ⛔ No, solo Git + Bash |
|
|
96
|
+
| **Trae los archivos** | npm los descarga | git los clona del repo |
|
|
97
|
+
| **Ideal para** | Empezar rápido, no recordar el flujo de git | Devs que ya manejan git fluidamente |
|
|
98
|
+
|
|
99
|
+
A partir de aquí ambos flows son idénticos: el `setup.sh` 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.
|
|
100
|
+
|
|
101
|
+
**Requisitos previos:**
|
|
62
102
|
|
|
63
|
-
|
|
103
|
+
- Vía npm → Node.js ≥ 18, Git, Bash.
|
|
104
|
+
- Vía git clone → Git, Bash.
|
|
64
105
|
|
|
65
106
|
---
|
|
66
107
|
|
package/SETUP.md
CHANGED
|
@@ -2,23 +2,76 @@
|
|
|
2
2
|
|
|
3
3
|
## ⚡ Quick Start (5 minutos)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Hay **dos formas de instalar SpecLeap**. Elige la que prefieras según cómo te resulte más cómodo trabajar.
|
|
6
|
+
|
|
7
|
+
### Comparativa rápida
|
|
8
|
+
|
|
9
|
+
| | Opción A: vía npx | Opción B: vía git clone |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| **Pregunta carpeta y nombre** | ✅ Sí, prompt interactivo | ❌ No (lo decides con `cd` y `git clone <url> <nombre>`) |
|
|
12
|
+
| **Requiere** | Node.js ≥ 18, Git, Bash | Git, Bash |
|
|
13
|
+
| **Cuándo usar** | Quieres setup guiado | Manejas git fluidamente |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
### Opción A: vía npx (recomendado para empezar)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cd ~/Downloads # o donde quieras que vaya el proyecto
|
|
21
|
+
npx specleap-framework@latest
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
El instalador te pregunta:
|
|
25
|
+
1. **Carpeta base** (default = donde estás).
|
|
26
|
+
2. **Nombre de la carpeta** (default = `specleap-framework`).
|
|
27
|
+
|
|
28
|
+
Después continúa con el setup normal (idioma, GitHub token, Asana token, skills, CodeRabbit).
|
|
29
|
+
|
|
30
|
+
**Ejemplo:**
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
📁 ¿En qué carpeta base instalar SpecLeap?
|
|
34
|
+
Default: /Users/tu-usuario/Downloads
|
|
35
|
+
Carpeta base: (Enter para usar default)
|
|
36
|
+
|
|
37
|
+
📝 ¿Qué nombre quieres para la carpeta?
|
|
38
|
+
Default: specleap-framework
|
|
39
|
+
Nombre: mi-app-tienda
|
|
40
|
+
|
|
41
|
+
→ Resultado final: /Users/tu-usuario/Downloads/mi-app-tienda/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### Opción B: vía git clone
|
|
6
47
|
|
|
7
48
|
```bash
|
|
8
49
|
git clone https://github.com/ConceptualCreative/specleap-framework.git
|
|
9
50
|
cd specleap-framework
|
|
51
|
+
bash setup.sh
|
|
10
52
|
```
|
|
11
53
|
|
|
12
|
-
|
|
54
|
+
**El primer paso del setup pregunta cómo quieres llamar la carpeta** (Paso 0). Pulsas Enter para mantenerla con el nombre que tiene, o escribes otro nombre y el setup renombra la carpeta automáticamente antes de seguir con idioma/tokens.
|
|
55
|
+
|
|
56
|
+
Atajo: si ya sabes el nombre, pásaselo a `git clone` y luego pulsas Enter en el Paso 0 para mantenerlo:
|
|
13
57
|
|
|
14
58
|
```bash
|
|
15
|
-
|
|
59
|
+
git clone https://github.com/ConceptualCreative/specleap-framework.git mi-proyecto
|
|
60
|
+
cd mi-proyecto
|
|
61
|
+
bash setup.sh
|
|
62
|
+
# Paso 0: pulsa Enter para mantener "mi-proyecto"
|
|
16
63
|
```
|
|
17
64
|
|
|
18
|
-
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### Después del setup (ambas opciones)
|
|
68
|
+
|
|
69
|
+
**Qué hace `setup.sh`:**
|
|
19
70
|
- Selecciona idioma (Español/English)
|
|
20
|
-
-
|
|
21
|
-
-
|
|
71
|
+
- Pide tokens GitHub y Asana
|
|
72
|
+
- Instala los 34 Agent Skills en `~/.skills/`
|
|
73
|
+
- Configura CodeRabbit
|
|
74
|
+
- Crea estructura base + archivos de configuración
|
|
22
75
|
|
|
23
76
|
### Paso 3: Responder cuestionario
|
|
24
77
|
|
package/package.json
CHANGED
package/setup.sh
CHANGED
|
@@ -48,6 +48,87 @@ echo -e "${YELLOW} v2.0.0 — Instalador Profesional${NC}"
|
|
|
48
48
|
echo -e "${CYAN}${LINE}${NC}"
|
|
49
49
|
echo ""
|
|
50
50
|
|
|
51
|
+
# ============================================
|
|
52
|
+
# PASO 0: Nombre de la carpeta del proyecto
|
|
53
|
+
# ============================================
|
|
54
|
+
# Solo se pregunta cuando setup.sh se ejecuta DIRECTAMENTE (`bash setup.sh`
|
|
55
|
+
# tras `git clone …`). Si vienes desde `bin/specleap` (vía `npx`) ese script
|
|
56
|
+
# ya preguntó nombre y ya creó la carpeta — entonces SPECLEAP_INSTALL_PATH
|
|
57
|
+
# está set y saltamos este bloque para no preguntar dos veces.
|
|
58
|
+
#
|
|
59
|
+
# Si el usuario escribe un nombre distinto al actual, el script RENOMBRA
|
|
60
|
+
# la carpeta in-place: `mv` del directorio actual al nuevo y `cd` al nuevo.
|
|
61
|
+
# El proceso bash sigue vivo durante el rename porque se aferra al inode,
|
|
62
|
+
# no al path.
|
|
63
|
+
|
|
64
|
+
CURRENT_PATH="$(pwd)"
|
|
65
|
+
CURRENT_FOLDER_NAME="$(basename "$CURRENT_PATH")"
|
|
66
|
+
PARENT_PATH="$(dirname "$CURRENT_PATH")"
|
|
67
|
+
|
|
68
|
+
is_valid_folder_name() {
|
|
69
|
+
local name="$1"
|
|
70
|
+
[ -z "$name" ] && return 1
|
|
71
|
+
[ ${#name} -gt 100 ] && return 1
|
|
72
|
+
[[ "$name" == .* ]] && return 1
|
|
73
|
+
[[ "$name" =~ ^[A-Za-z0-9_][A-Za-z0-9_.\-]*$ ]] && return 0
|
|
74
|
+
return 1
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if [ -z "${SPECLEAP_INSTALL_PATH:-}" ]; then
|
|
78
|
+
echo "📝 ¿Cómo quieres que se llame la carpeta del proyecto?"
|
|
79
|
+
echo " What name do you want for the project folder?"
|
|
80
|
+
echo ""
|
|
81
|
+
echo " Carpeta actual / Current: $CURRENT_FOLDER_NAME"
|
|
82
|
+
echo " Default si pulsas Enter / Default on Enter: specleap-framework"
|
|
83
|
+
echo " Permitido / Allowed: letras, números, '-', '_', '.'"
|
|
84
|
+
echo ""
|
|
85
|
+
|
|
86
|
+
while true; do
|
|
87
|
+
read -p "Nombre / Name: " RAW_NAME
|
|
88
|
+
# Si Enter vacío → default 'specleap-framework'
|
|
89
|
+
# Excepto si ya se llama así y el user pulsa Enter, mantenemos
|
|
90
|
+
if [ -z "$RAW_NAME" ]; then
|
|
91
|
+
NEW_NAME="specleap-framework"
|
|
92
|
+
else
|
|
93
|
+
NEW_NAME="$RAW_NAME"
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
if is_valid_folder_name "$NEW_NAME"; then
|
|
97
|
+
break
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
echo ""
|
|
101
|
+
echo "❌ Nombre inválido / Invalid name: \"$NEW_NAME\""
|
|
102
|
+
echo " Usa solo letras, números, '-', '_' y '.' (no empezar con '.')"
|
|
103
|
+
echo " Use only letters, numbers, '-', '_' and '.' (cannot start with '.')"
|
|
104
|
+
echo ""
|
|
105
|
+
done
|
|
106
|
+
|
|
107
|
+
# Si el nombre coincide con el actual, no renombramos
|
|
108
|
+
if [ "$NEW_NAME" = "$CURRENT_FOLDER_NAME" ]; then
|
|
109
|
+
echo ""
|
|
110
|
+
echo "✅ Carpeta: $CURRENT_FOLDER_NAME"
|
|
111
|
+
SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
|
|
112
|
+
else
|
|
113
|
+
NEW_PATH="$PARENT_PATH/$NEW_NAME"
|
|
114
|
+
if [ -e "$NEW_PATH" ]; then
|
|
115
|
+
echo ""
|
|
116
|
+
echo "❌ Ya existe / Already exists: $NEW_PATH"
|
|
117
|
+
echo " Se mantiene el nombre actual / Keeping current name: $CURRENT_FOLDER_NAME"
|
|
118
|
+
SPECLEAP_INSTALL_PATH="$CURRENT_PATH"
|
|
119
|
+
else
|
|
120
|
+
mv "$CURRENT_PATH" "$NEW_PATH"
|
|
121
|
+
cd "$NEW_PATH"
|
|
122
|
+
CURRENT_PATH="$NEW_PATH"
|
|
123
|
+
CURRENT_FOLDER_NAME="$NEW_NAME"
|
|
124
|
+
SPECLEAP_INSTALL_PATH="$NEW_PATH"
|
|
125
|
+
echo ""
|
|
126
|
+
echo "✅ Carpeta renombrada / Folder renamed: $NEW_NAME"
|
|
127
|
+
fi
|
|
128
|
+
fi
|
|
129
|
+
echo ""
|
|
130
|
+
fi
|
|
131
|
+
|
|
51
132
|
# ============================================
|
|
52
133
|
# PASO 1: Selección de Idioma
|
|
53
134
|
# ============================================
|