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 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.12 · **Licencia:** MIT · **Autor:** Styng Arias ([ConceptualCreative](https://conceptualcreative.com))
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
- ### Vía npm (recomendado)
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
- ### Desde GitHub
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
- 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.
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
- **Requisitos previos:** Node.js ≥ 18, Git, Bash.
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
- ### Paso 1: Clonar el repositorio
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
- ### Paso 2: Ejecutar instalador
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
- bash install.sh
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
- **Qué hace:**
65
+ ---
66
+
67
+ ### Después del setup (ambas opciones)
68
+
69
+ **Qué hace `setup.sh`:**
19
70
  - Selecciona idioma (Español/English)
20
- - Crea estructura de carpetas
21
- - Genera archivos base
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specleap-framework",
3
- "version": "2.1.12",
3
+ "version": "2.1.14",
4
4
  "description": "Spec-Driven Development Framework — Transform VSCode, Cursor, JetBrains into spec-first development machines",
5
5
  "keywords": [
6
6
  "spec-driven-development",
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
  # ============================================