specleap-framework 2.1.14 → 2.2.1
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/.commands/compliance.md +1 -1
- package/.commands/explicar.md +3 -3
- package/.commands/implementar.md +2 -2
- package/.commands/inicio.md +381 -24
- package/.commands/nuevo/README.md +4 -4
- package/.commands/nuevo/responses-example.yaml +17 -17
- package/.commands/planificar.md +49 -12
- package/CHANGELOG.md +56 -0
- package/CLAUDE.md +1 -1
- package/README.md +2 -2
- package/SETUP.md +5 -5
- package/package.json +1 -1
- package/scripts/README.md +1 -1
- package/scripts/create-asana-tasks.sh +9 -0
- package/scripts/generate-asana-structure.sh +11 -0
- package/scripts/install-skills.sh +20 -3
- package/scripts/lib/critical_fields.json +39 -0
- package/scripts/lib/questions.en.json +871 -61
- package/scripts/lib/questions.es.json +872 -62
- package/setup.sh +114 -72
package/.commands/planificar.md
CHANGED
|
@@ -22,6 +22,30 @@ Esto incluye:
|
|
|
22
22
|
|
|
23
23
|
## Flujo
|
|
24
24
|
|
|
25
|
+
### 0. Cargar credenciales desde .env
|
|
26
|
+
|
|
27
|
+
**ANTES de cualquier comando que necesite Asana**, cargar las variables de entorno desde el `.env` del proyecto SpecLeap. `setup.sh` guarda allí `ASANA_ACCESS_TOKEN` y `ASANA_WORKSPACE_GID`, pero la shell de Claude Code no las carga automáticamente.
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Cargar .env si existe (no fallar si no existe)
|
|
31
|
+
if [ -f .env ]; then
|
|
32
|
+
set -a
|
|
33
|
+
source .env
|
|
34
|
+
set +a
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# Verificar que el token quedó cargado
|
|
38
|
+
if [ -z "${ASANA_ACCESS_TOKEN:-}" ]; then
|
|
39
|
+
echo "❌ ASANA_ACCESS_TOKEN no está configurado en .env ni en la shell"
|
|
40
|
+
echo " Re-ejecuta bash setup.sh para configurar Asana, o exporta manualmente."
|
|
41
|
+
exit 1
|
|
42
|
+
fi
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Importante:** los scripts `scripts/generate-asana-structure.sh` y `scripts/create-asana-tasks.sh` también cargan `.env` por su cuenta como red de seguridad. Pero comprobar aquí permite dar un mensaje claro al usuario antes de invocar el script.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
25
49
|
### 1. Identificar Proyecto
|
|
26
50
|
|
|
27
51
|
Si no se especifica ruta:
|
|
@@ -29,9 +53,9 @@ Si no se especifica ruta:
|
|
|
29
53
|
¿Para qué proyecto quieres crear el backlog?
|
|
30
54
|
|
|
31
55
|
**Proyectos disponibles:**
|
|
32
|
-
1.
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
56
|
+
1. task-manager
|
|
57
|
+
2. inventory-app
|
|
58
|
+
3. crm-suite
|
|
35
59
|
|
|
36
60
|
Responde con el número o nombre:
|
|
37
61
|
```
|
|
@@ -208,8 +232,14 @@ Edita `scripts/generate-asana-structure.sh`:
|
|
|
208
232
|
## Requisitos
|
|
209
233
|
|
|
210
234
|
1. **CONTRATO.md** existente
|
|
211
|
-
2. **ASANA_ACCESS_TOKEN**
|
|
212
|
-
|
|
235
|
+
2. **ASANA_ACCESS_TOKEN** y **ASANA_WORKSPACE_GID** en `.env` del proyecto SpecLeap (`setup.sh` lo crea al instalar)
|
|
236
|
+
|
|
237
|
+
Los scripts cargan `.env` automáticamente. Si necesitas verificar manualmente:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
cd <ruta-proyecto-specleap>
|
|
241
|
+
cat .env | grep ASANA
|
|
242
|
+
```
|
|
213
243
|
|
|
214
244
|
---
|
|
215
245
|
|
|
@@ -218,20 +248,27 @@ Edita `scripts/generate-asana-structure.sh`:
|
|
|
218
248
|
### "Script no encontrado"
|
|
219
249
|
|
|
220
250
|
```bash
|
|
221
|
-
cd ~/specleap-framework
|
|
222
251
|
ls scripts/generate-asana-structure.sh
|
|
223
|
-
# Si no existe, verifica instalación
|
|
252
|
+
# Si no existe, verifica instalación o re-ejecuta setup.sh
|
|
224
253
|
```
|
|
225
254
|
|
|
226
255
|
### "ASANA_ACCESS_TOKEN no configurado"
|
|
227
256
|
|
|
257
|
+
El `.env` del proyecto SpecLeap no existe o no contiene el token. Soluciones:
|
|
258
|
+
|
|
228
259
|
```bash
|
|
229
|
-
#
|
|
230
|
-
grep
|
|
260
|
+
# Verificar que existe el .env y tiene el token
|
|
261
|
+
ls -la .env && grep ASANA .env
|
|
231
262
|
|
|
232
|
-
# Si
|
|
233
|
-
|
|
234
|
-
|
|
263
|
+
# Si falta o está vacío, re-ejecutar el paso de configuración Asana del setup
|
|
264
|
+
bash setup.sh
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Si por alguna razón prefieres exportar manualmente (sin pasar por `.env`):
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
export ASANA_ACCESS_TOKEN="tu-token-aqui"
|
|
271
|
+
export ASANA_WORKSPACE_GID="tu-workspace-gid"
|
|
235
272
|
```
|
|
236
273
|
|
|
237
274
|
### "Error: Not Authorized"
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,62 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.2.1] - 2026-05-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Bug crítico: los Agent Skills no se cargaban en Claude Code.** `scripts/install-skills.sh` instalaba en `$HOME/.skills/`, que es un path obsoleto que Claude Code dejó de monitorizar. El path canónico que auto-descubre Claude Code es `$HOME/.claude/skills/`. Resultado del bug: todos los usuarios de SpecLeap (incluido Styng) tenían los 34 Agent Skills instalados pero **invisibles** para el runtime — ninguno se activaba por contexto. Detectado tras consultar la doc oficial de Claude Code: solo lee skills de `~/.claude/skills/` (user-level) y `.claude/skills/` (project-level).
|
|
15
|
+
- **Fix**: `scripts/install-skills.sh` ahora instala en `$HOME/.claude/skills/`. Si detecta una instalación legacy en `$HOME/.skills/` (de versiones ≤ 2.2.0), crea un symlink desde el path canónico apuntando al legacy. Así los usuarios existentes no tienen que mover archivos ni reinstalar — solo ejecutar `bash scripts/install-skills.sh` una vez para que el symlink se cree.
|
|
16
|
+
- **Migración manual** (alternativa al symlink automático): `ln -s ~/.skills ~/.claude/skills`.
|
|
17
|
+
- **Verificación**: tras el fix, decirle "Hola" a Claude Code dentro del proyecto y pedir algo que dispare un skill conocido (ej: "qué debo verificar antes de cerrar un ticket") debe activar `verification-before-completion`.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- **`CLAUDE.md`, `README.md`, `SETUP.md`, `scripts/README.md`, `.commands/compliance.md`** actualizados para reflejar el path canónico `~/.claude/skills/` y documentar la compatibilidad con instalaciones legacy.
|
|
22
|
+
|
|
23
|
+
## [2.2.0] - 2026-05-02
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **`setup.sh` — el prompt del nombre de carpeta se movió a DESPUÉS del Paso 1 (idioma)**, antes del Paso 2 (GitHub). Ahora sale en el idioma elegido (sólo ES o sólo EN, no bilingüe a la vez como en v2.1.14). El comportamiento funcional es idéntico (Enter para mantener nombre actual con default `specleap-framework`, valida caracteres, renombra in-place si se cambia, salta si `SPECLEAP_INSTALL_PATH` ya está set por `bin/specleap`). Reportado por Styng tras testear v2.1.14: el bloque salía con texto bilingüe simultáneo porque se ejecutaba antes de saber qué idioma había elegido el usuario.
|
|
28
|
+
|
|
29
|
+
- **`.commands/inicio.md` — nuevo Paso 0 (antes de listar proyectos) que ofrece instalar `markitdown`** (Microsoft, MIT, Python 3.10+) como herramienta opcional. Convierte PDF/Word/Excel/PowerPoint/HTML/CSV/JSON/XML/EPUB a Markdown. Cuando SpecLeap procesa documentos no-markdown durante el flujo conversacional, esta conversión previa baja el consumo de tokens entre 20% y 50%. El prompt se ejecuta UNA SOLA VEZ por sesión "Hola", es bilingüe (ES default, EN si el usuario habla en inglés), y nunca bloquea el flujo principal: si el usuario dice "No" o "Más tarde" se sigue normalmente con el listado de proyectos. Si dice "Sí", se verifica con `command -v markitdown` y se muestran instrucciones de instalación (`pip install 'markitdown[all]'` o `pipx install`) si no está. Pedido por Styng tras validar v2.1.14: quería que tras "Hola" se ofreciera la herramienta antes de empezar el primer proyecto.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- **Bug Asana: `.env` no se cargaba en sesiones nuevas de Claude Code.** `setup.sh` guarda `ASANA_ACCESS_TOKEN` y `ASANA_WORKSPACE_GID` en `.env` del proyecto SpecLeap, pero la shell que arranca Claude Code no lo carga automáticamente. Resultado: `crear-tickets` y `planificar` reportaban "ASANA_ACCESS_TOKEN no configurado" aunque el token sí existía en el `.env`.
|
|
34
|
+
- **Fix**: `scripts/generate-asana-structure.sh` y `scripts/create-asana-tasks.sh` cargan `.env` con `set -a && source .env && set +a` al inicio (red de seguridad).
|
|
35
|
+
- **Fix**: `.commands/planificar.md` instruye a la AI a hacer la misma carga ANTES de comprobar el token, dando un mensaje claro al usuario si falta.
|
|
36
|
+
- **Fix**: `setup.sh` exporta tanto `ASANA_WORKSPACE_ID` como `ASANA_WORKSPACE_GID` (mismo valor) en `.env`, porque distintos scripts usan distintos nombres y antes había que hacer un roundtrip a la API para resolverlo.
|
|
37
|
+
- **Reportado por Styng** durante test 2026-05-01 de v2.1.14.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **Ejemplos sesgados en cuestionario y comandos sustituidos por nombres genéricos neutros.** Antes los ejemplos eran `casa-de-peli`, `app-tienda`, `Mi Proyecto Awesome`, `Casa de Películas`, `Tienda Online de Café`, `Juan Pérez`, etc. Cambiados a `task-manager`, `inventory-app`, `crm-suite`, `Task Manager Pro`, `María García`, etc. Afecta: `scripts/lib/questions.es.json`, `scripts/lib/questions.en.json`, `.commands/inicio.md`, `.commands/explicar.md`, `.commands/implementar.md`, `.commands/planificar.md`, `.commands/nuevo/README.md`, `.commands/nuevo/responses-example.yaml`. Reportado por Styng: los ejemplos eran reconocibles como proyectos suyos y eso confunde a usuarios nuevos.
|
|
42
|
+
- **Pregunta 9 (competidores) ahora explica el "para qué".** Antes el `help` decía solo "Productos similares que te sirven de inspiración" — el usuario no entendía por qué se preguntaba. Ahora dice "Si conoces apps similares, las usaré como referencia para sugerir features y patrones de UX. Si no, escribe `ninguno` o déjalo vacío".
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- **Tres modos de cuestionario al inicio del Flujo A (proyecto nuevo): MVP, Proyecto serio, Modo creativo.** Después de pedir el nombre del proyecto, `.commands/inicio.md` lanza un `AskUserQuestion` (Paso A0) preguntando qué tipo de proyecto se va a montar:
|
|
47
|
+
- **MVP** (58 preguntas, 15-20 min) — proyecto pequeño / prototipo / 1 persona o equipo pequeño. Es el comportamiento histórico.
|
|
48
|
+
- **Proyecto serio** (93 preguntas, 25-35 min) — equipo + departamentos + compliance + SLAs. Las 58 base + 35 nuevas: governance (5), departamentos involucrados (3), integraciones empresariales (5: SSO, ERP, CRM, BI, payroll), SLAs y resiliencia (5: uptime/RTO/RPO/DR/on-call), compliance (4: frameworks, DPO, audit log retention, data residency), roadmap por fases (3), procesos de release (3: feature flags, deploy strategy, rollback), observabilidad (3: APM/alerting/dashboards), multi-X (4: idiomas, tenant, regiones, i18n strategy).
|
|
49
|
+
- **Modo creativo** (5-10 min) — el usuario describe el proyecto en un párrafo libre; la AI extrae lo dicho con razonamiento estructurado, muestra un resumen para validar, y solo pregunta los **campos críticos** que no fueron mencionados (`scripts/lib/critical_fields.json` define 18 críticos para MVP y 11 extra para Serio).
|
|
50
|
+
|
|
51
|
+
- **Transiciones bidireccionales entre modos (Paso A9).** Tras generar el CONTRATO en cualquier modo, ofrecer al usuario:
|
|
52
|
+
- Mantener como está → seguir a `crear-tickets`.
|
|
53
|
+
- Pasar a Serio → contestar las 35 preguntas extra de governance/compliance/SLAs (manteniendo las respuestas existentes).
|
|
54
|
+
- Pasar a Creativo → describir matices en un párrafo libre que se añade como sección "Contexto Adicional" del CONTRATO.
|
|
55
|
+
El paso es iterativo: se puede repetir para ir construyendo el CONTRATO incrementalmente.
|
|
56
|
+
|
|
57
|
+
- **`scripts/lib/questions.es.json` y `scripts/lib/questions.en.json` ahora marcan cada pregunta con un campo `modes`.** Las 58 base llevan `["mvp", "serio"]` (aparecen en ambos modos); las 35 nuevas llevan `["serio"]` (solo en modo serio). El cuestionario filtra por modo elegido antes de renderizar.
|
|
58
|
+
|
|
59
|
+
- **Nuevo archivo `scripts/lib/critical_fields.json`** que define los campos mínimos que el modo creativo verifica tras la extracción del párrafo del usuario. Si falta alguno, la AI hace una pregunta dirigida con contexto explicando POR QUÉ se necesita.
|
|
60
|
+
|
|
61
|
+
### Removed
|
|
62
|
+
|
|
63
|
+
- **`composer.json`** — residual de un proyecto Laravel previo (`barryvdh/laravel-dompdf`). SpecLeap no usa Composer ni PHP en sus dependencias; el archivo nunca debió formar parte del paquete npm.
|
|
64
|
+
- **`package-lock.json`** — sin sentido en un paquete que no declara `dependencies` ni `devDependencies` en `package.json`. Solo añadía ruido al diff.
|
|
65
|
+
|
|
10
66
|
## [2.1.14] - 2026-05-01
|
|
11
67
|
|
|
12
68
|
### Changed
|
package/CLAUDE.md
CHANGED
|
@@ -172,7 +172,7 @@ Read and follow these standards for ALL code:
|
|
|
172
172
|
|
|
173
173
|
## Agent Skills (Progressive Disclosure)
|
|
174
174
|
|
|
175
|
-
If **
|
|
175
|
+
If **Agent Skills TIER 1 + TIER 2 (34 total)** are installed (`~/.claude/skills/`, path that Claude Code auto-discovers), they activate automatically:
|
|
176
176
|
|
|
177
177
|
### Activation Triggers
|
|
178
178
|
|
package/README.md
CHANGED
|
@@ -96,7 +96,7 @@ bash setup.sh
|
|
|
96
96
|
| **Trae los archivos** | npm los descarga | git los clona del repo |
|
|
97
97
|
| **Ideal para** | Empezar rápido, no recordar el flujo de git | Devs que ya manejan git fluidamente |
|
|
98
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.
|
|
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 `~/.claude/skills/` y genera la estructura base. Tiempo total: 10 a 15 minutos.
|
|
100
100
|
|
|
101
101
|
**Requisitos previos:**
|
|
102
102
|
|
|
@@ -139,7 +139,7 @@ El prefijo `/` está reservado por Claude Code para sus propios slash commands (
|
|
|
139
139
|
|
|
140
140
|
## Agent Skills
|
|
141
141
|
|
|
142
|
-
SpecLeap instala **34 Agent Skills profesionales** en `~/.skills/` durante el setup. Se activan automáticamente cuando el contexto lo requiere.
|
|
142
|
+
SpecLeap instala **34 Agent Skills profesionales** en `~/.claude/skills/` (path canónico que Claude Code auto-descubre) durante el setup. Se activan automáticamente cuando el contexto lo requiere.
|
|
143
143
|
|
|
144
144
|
### TIER 1 — 20 skills base
|
|
145
145
|
|
package/SETUP.md
CHANGED
|
@@ -69,7 +69,7 @@ bash setup.sh
|
|
|
69
69
|
**Qué hace `setup.sh`:**
|
|
70
70
|
- Selecciona idioma (Español/English)
|
|
71
71
|
- Pide tokens GitHub y Asana
|
|
72
|
-
- Instala los 34 Agent Skills en `~/.skills/`
|
|
72
|
+
- Instala los 34 Agent Skills en `~/.claude/skills/` (path canónico que Claude Code auto-descubre)
|
|
73
73
|
- Configura CodeRabbit
|
|
74
74
|
- Crea estructura base + archivos de configuración
|
|
75
75
|
|
|
@@ -233,7 +233,7 @@ Instalación:
|
|
|
233
233
|
bash scripts/install-skills.sh
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
Se descargan e instalan 34 skills en `~/.skills/` (20 TIER 1 más 14 TIER 2
|
|
236
|
+
Se descargan e instalan 34 skills en `~/.claude/skills/` (path canónico que Claude Code auto-descubre — desde v2.2.1; instalaciones legacy en `~/.skills/` siguen funcionando vía symlink automático). 20 TIER 1 más 14 TIER 2:
|
|
237
237
|
|
|
238
238
|
- **Consistencia (6):** `verification-before-completion`, `systematic-debugging`, `requesting-code-review`, `receiving-code-review`, `code-reviewer`, `debugging-wizard`
|
|
239
239
|
- **Backend (6):** `laravel-specialist`, `api-designer`, `database-optimizer`, `python-pro`, `react-expert`, `typescript-pro`
|
|
@@ -247,7 +247,7 @@ Se descargan e instalan 34 skills en `~/.skills/` (20 TIER 1 más 14 TIER 2):
|
|
|
247
247
|
Verificar lo instalado:
|
|
248
248
|
|
|
249
249
|
```bash
|
|
250
|
-
ls ~/.skills/
|
|
250
|
+
ls ~/.claude/skills/
|
|
251
251
|
```
|
|
252
252
|
|
|
253
253
|
---
|
|
@@ -393,7 +393,7 @@ export PATH="$PATH:$(pwd)/openspec/cli"
|
|
|
393
393
|
|
|
394
394
|
1. Verifica instalación:
|
|
395
395
|
```bash
|
|
396
|
-
ls -la ~/.skills/
|
|
396
|
+
ls -la ~/.claude/skills/
|
|
397
397
|
```
|
|
398
398
|
|
|
399
399
|
2. Reinicia tu IDE (VSCode/Cursor/JetBrains)
|
|
@@ -439,7 +439,7 @@ chmod +x .git/hooks/pre-commit
|
|
|
439
439
|
- [ ] IDE abierto (VSCode/Cursor) y chat con Claude funcional
|
|
440
440
|
- [ ] Comando `ayuda` ejecutado exitosamente
|
|
441
441
|
- [ ] **Asana configurado en `.env`** (OBLIGATORIO)
|
|
442
|
-
- [ ] **
|
|
442
|
+
- [ ] **34 Agent Skills instaladas en ~/.claude/skills/** (OBLIGATORIO)
|
|
443
443
|
- [ ] **Git hooks instalados** (OBLIGATORIO)
|
|
444
444
|
- [ ] **CodeRabbit configurado en GitHub** (OBLIGATORIO)
|
|
445
445
|
- [ ] **Repositorio pusheado a GitHub** (OBLIGATORIO)
|
package/package.json
CHANGED
package/scripts/README.md
CHANGED
|
@@ -43,7 +43,7 @@ git commit --no-verify -m "mensaje"
|
|
|
43
43
|
|
|
44
44
|
### `install-skills.sh`
|
|
45
45
|
|
|
46
|
-
**Propósito:** Instalar los 34 Agent Skills del framework en `~/.skills
|
|
46
|
+
**Propósito:** Instalar los 34 Agent Skills del framework en `~/.claude/skills/` (path canónico que Claude Code auto-descubre). Si existe `~/.skills/` de instalaciones previas (versiones ≤ 2.2.0), se crea un symlink desde el path canónico para mantener compatibilidad.
|
|
47
47
|
|
|
48
48
|
**Uso:**
|
|
49
49
|
```bash
|
|
@@ -8,6 +8,15 @@ set -euo pipefail
|
|
|
8
8
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
9
|
ASANA_UTILS="$SCRIPT_DIR/lib/asana-utils.sh"
|
|
10
10
|
|
|
11
|
+
# Auto-cargar .env desde el root del proyecto SpecLeap.
|
|
12
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
13
|
+
if [[ -f "$PROJECT_ROOT/.env" ]]; then
|
|
14
|
+
set -a
|
|
15
|
+
# shellcheck disable=SC1090
|
|
16
|
+
source "$PROJECT_ROOT/.env"
|
|
17
|
+
set +a
|
|
18
|
+
fi
|
|
19
|
+
|
|
11
20
|
source "$ASANA_UTILS"
|
|
12
21
|
|
|
13
22
|
# Colores
|
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
5
|
source "$SCRIPT_DIR/../.specleap/i18n.sh"
|
|
6
6
|
|
|
7
|
+
# Auto-cargar .env desde el root del proyecto SpecLeap.
|
|
8
|
+
# setup.sh guarda ASANA_ACCESS_TOKEN/ASANA_WORKSPACE_GID en .env, pero las
|
|
9
|
+
# shells nuevas (ej: las que arranca Claude Code) no lo cargan automáticamente.
|
|
10
|
+
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
11
|
+
if [[ -f "$PROJECT_ROOT/.env" ]]; then
|
|
12
|
+
set -a
|
|
13
|
+
# shellcheck disable=SC1090
|
|
14
|
+
source "$PROJECT_ROOT/.env"
|
|
15
|
+
set +a
|
|
16
|
+
fi
|
|
17
|
+
|
|
7
18
|
# SpecLeap — Generador de estructura Asana
|
|
8
19
|
# Convierte CONTRATO.md → proyecto Asana con secciones y tareas
|
|
9
20
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# SpecLeap — Instalador de Agent Skills TIER 1 + TIER 2
|
|
3
|
-
#
|
|
2
|
+
# SpecLeap — Instalador de Agent Skills TIER 1 + TIER 2 (34 skills profesionales)
|
|
3
|
+
#
|
|
4
|
+
# Path: instala en $HOME/.claude/skills/ (path canónico que Claude Code
|
|
5
|
+
# auto-descubre). Si existe $HOME/.skills/ (path legacy de versiones previas
|
|
6
|
+
# de SpecLeap), se crea un symlink desde el path canónico para mantener
|
|
7
|
+
# compatibilidad sin mover archivos.
|
|
4
8
|
|
|
5
9
|
set -e
|
|
6
10
|
|
|
@@ -85,9 +89,22 @@ INSTALLED=0
|
|
|
85
89
|
FAILED=0
|
|
86
90
|
SKIPPED=0
|
|
87
91
|
|
|
88
|
-
SKILLS_DIR="$HOME/.skills"
|
|
92
|
+
SKILLS_DIR="$HOME/.claude/skills"
|
|
93
|
+
LEGACY_SKILLS_DIR="$HOME/.skills"
|
|
89
94
|
TMP_DIR="/tmp/specleap-skills-$$"
|
|
90
95
|
|
|
96
|
+
# Compatibilidad con instalaciones legacy:
|
|
97
|
+
# Si el path antiguo ($HOME/.skills/) tiene skills y el path canónico
|
|
98
|
+
# no existe todavía, crear symlink. Así Claude Code los ve sin tener
|
|
99
|
+
# que mover archivos ni reinstalar nada.
|
|
100
|
+
if [ -d "$LEGACY_SKILLS_DIR" ] && [ ! -e "$SKILLS_DIR" ]; then
|
|
101
|
+
mkdir -p "$HOME/.claude"
|
|
102
|
+
ln -s "$LEGACY_SKILLS_DIR" "$SKILLS_DIR"
|
|
103
|
+
echo -e "${YELLOW}⚠️ Detected legacy skills path $LEGACY_SKILLS_DIR${NC}"
|
|
104
|
+
echo -e "${YELLOW} Created symlink at $SKILLS_DIR for Claude Code auto-discovery.${NC}"
|
|
105
|
+
echo ""
|
|
106
|
+
fi
|
|
107
|
+
|
|
91
108
|
mkdir -p "$SKILLS_DIR"
|
|
92
109
|
mkdir -p "$TMP_DIR"
|
|
93
110
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"version": "1.0",
|
|
4
|
+
"description": "Campos mínimos que el modo 'creativo' verifica tras extraer información del párrafo del usuario. Si falta alguno, la AI pregunta sólo ese (no las 58/93 completas). Las claves apuntan a IDs de questions.{es,en}.json."
|
|
5
|
+
},
|
|
6
|
+
"mvp_critical": [
|
|
7
|
+
"project.name",
|
|
8
|
+
"project.display_name",
|
|
9
|
+
"project.responsible",
|
|
10
|
+
"identity.objective",
|
|
11
|
+
"identity.target_audience",
|
|
12
|
+
"stack.backend.framework",
|
|
13
|
+
"stack.frontend.framework",
|
|
14
|
+
"stack.database.engine",
|
|
15
|
+
"features.core",
|
|
16
|
+
"features.auth.enabled",
|
|
17
|
+
"design.responsive",
|
|
18
|
+
"design.primary_color",
|
|
19
|
+
"deployment.hosting",
|
|
20
|
+
"deployment.ssl",
|
|
21
|
+
"security.level",
|
|
22
|
+
"security.gdpr_compliant",
|
|
23
|
+
"testing.coverage_target",
|
|
24
|
+
"constraints.time_limit"
|
|
25
|
+
],
|
|
26
|
+
"serio_critical_extra": [
|
|
27
|
+
"governance.product_owner",
|
|
28
|
+
"governance.release_approver",
|
|
29
|
+
"departments.list",
|
|
30
|
+
"compliance.frameworks",
|
|
31
|
+
"sla.uptime_target",
|
|
32
|
+
"sla.rto",
|
|
33
|
+
"roadmap.phases",
|
|
34
|
+
"release.deploy_strategy",
|
|
35
|
+
"observability.apm_logs_metrics",
|
|
36
|
+
"multi.tenant",
|
|
37
|
+
"multi.regions"
|
|
38
|
+
]
|
|
39
|
+
}
|