specleap-framework 2.1.11 → 2.1.12
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 +13 -0
- package/README.md +36 -1
- package/SETUP.md +44 -0
- package/package.json +1 -1
- package/scripts/convert-docs.sh +165 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.12] - 2026-04-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`scripts/convert-docs.sh`** — wrapper sobre [Microsoft markitdown](https://github.com/microsoft/markitdown) para convertir PDF, Word, PowerPoint, Excel, HTML, CSV, JSON, XML, EPub, imágenes (OCR) y audio (transcripción) a Markdown que el framework pueda usar como contexto. markitdown es una **dependencia opcional** (no se incluye en el tarball npm, no se instala automáticamente): si no está presente, el script muestra el mensaje de instalación (`pip install markitdown` o `uv tool install markitdown`) y termina con exit 1 sin tocar ningún archivo. Bilingüe ES/EN según `SPECLEAP_LANG`.
|
|
15
|
+
- Acepta tanto un archivo individual (`brief.pdf` → `brief.md`) como una carpeta entera (recursivo, max 3 niveles, filtra por extensiones soportadas).
|
|
16
|
+
- Documentación en `README.md` (sección "Convertir documentos a Markdown") y `SETUP.md` (sección "Herramientas Opcionales") con caso de uso típico (briefs de cliente, user stories exportadas, reference docs).
|
|
17
|
+
|
|
18
|
+
### Notes
|
|
19
|
+
|
|
20
|
+
- Decisión de diseño: markitdown se queda como opcional para no imponer Python 3.10+ a usuarios que no lo necesiten. SpecLeap solo requiere bash + node + git + curl + jq como antes.
|
|
21
|
+
- Caso de uso típico: cliente entrega brief en PDF → `bash scripts/convert-docs.sh brief.pdf` → `brief.md` → se referencia desde el cuestionario inicial. El AI gana contexto rico desde el primer comando.
|
|
22
|
+
|
|
10
23
|
## [2.1.11] - 2026-04-30
|
|
11
24
|
|
|
12
25
|
### Fixed
|
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.12 · **Licencia:** MIT · **Autor:** Styng Arias ([ConceptualCreative](https://conceptualcreative.com))
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -245,6 +245,41 @@ Ambos modos coexisten. Lo habitual es trabajar conversacionalmente en el día a
|
|
|
245
245
|
|
|
246
246
|
---
|
|
247
247
|
|
|
248
|
+
## Convertir documentos a Markdown (opcional)
|
|
249
|
+
|
|
250
|
+
Si tienes el brief de un cliente en PDF, user stories en Word, o specs antiguas en Excel, SpecLeap incluye un wrapper sobre [Microsoft markitdown](https://github.com/microsoft/markitdown) para convertirlos a Markdown que el framework pueda usar como contexto.
|
|
251
|
+
|
|
252
|
+
**Instalación de markitdown** (dependencia opcional):
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
pip install markitdown
|
|
256
|
+
# o, si usas uv:
|
|
257
|
+
uv tool install markitdown
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Requiere Python 3.10+. No es obligatorio: SpecLeap funciona perfectamente sin él. Solo lo necesitas si vas a alimentar archivos no-Markdown.
|
|
261
|
+
|
|
262
|
+
**Uso:**
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Un archivo individual
|
|
266
|
+
bash scripts/convert-docs.sh brief.pdf
|
|
267
|
+
# → genera brief.md
|
|
268
|
+
|
|
269
|
+
# Una carpeta entera (recursivo, max 3 niveles)
|
|
270
|
+
bash scripts/convert-docs.sh ./briefings/
|
|
271
|
+
# → convierte todos los pdf/docx/xlsx/pptx/html/csv/json/xml/epub que encuentre
|
|
272
|
+
|
|
273
|
+
# Ayuda
|
|
274
|
+
bash scripts/convert-docs.sh --help
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Formatos soportados: **PDF, Word, PowerPoint, Excel, HTML, CSV, JSON, XML, EPub, imágenes (con OCR), audio (con transcripción)**.
|
|
278
|
+
|
|
279
|
+
Si markitdown no está instalado, el script muestra un mensaje claro con las instrucciones de instalación y termina sin tocar nada.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
248
283
|
## Preguntas Frecuentes (FAQ)
|
|
249
284
|
|
|
250
285
|
Las preguntas habituales están respondidas en archivos dedicados:
|
package/SETUP.md
CHANGED
|
@@ -254,6 +254,50 @@ El commit es rechazado. Corrige y vuelve a intentar.
|
|
|
254
254
|
|
|
255
255
|
---
|
|
256
256
|
|
|
257
|
+
## 🔄 Herramientas Opcionales
|
|
258
|
+
|
|
259
|
+
### markitdown — Convertir PDF/Word/Excel a Markdown
|
|
260
|
+
|
|
261
|
+
Útil cuando un cliente te entrega el brief en PDF, las user stories en Word, o cualquier doc de referencia que quieras alimentar a SpecLeap como contexto. **No es obligatorio**: SpecLeap funciona sin él, sólo lo necesitas si trabajas con archivos no-Markdown.
|
|
262
|
+
|
|
263
|
+
**Requisito previo:** Python 3.10 o superior.
|
|
264
|
+
|
|
265
|
+
**Instalación:**
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
pip install markitdown
|
|
269
|
+
# o, si prefieres uv:
|
|
270
|
+
uv tool install markitdown
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Uso (vía wrapper de SpecLeap):**
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# Un archivo
|
|
277
|
+
bash scripts/convert-docs.sh ./brief-cliente.pdf
|
|
278
|
+
|
|
279
|
+
# Una carpeta entera (max 3 niveles de profundidad)
|
|
280
|
+
bash scripts/convert-docs.sh ./referencias/
|
|
281
|
+
|
|
282
|
+
# Ayuda
|
|
283
|
+
bash scripts/convert-docs.sh --help
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**Formatos soportados:** PDF, Word (.docx), PowerPoint (.pptx), Excel (.xlsx), HTML, CSV, JSON, XML, EPub, imágenes (con OCR), audio (con transcripción).
|
|
287
|
+
|
|
288
|
+
Si markitdown no está instalado, el script muestra el mensaje de instalación y termina con exit 1. No toca ningún archivo. Es seguro ejecutarlo aunque no lo tengas.
|
|
289
|
+
|
|
290
|
+
**Caso típico de uso en SpecLeap:**
|
|
291
|
+
|
|
292
|
+
1. Recibes el brief de un cliente en PDF.
|
|
293
|
+
2. `bash scripts/convert-docs.sh ./brief.pdf` → genera `brief.md`.
|
|
294
|
+
3. Lo pegas o referencias en el cuestionario al responder "¿Qué hace este proyecto?" / "¿Qué problema resuelve?".
|
|
295
|
+
4. El AI tiene contexto rico desde el primer comando.
|
|
296
|
+
|
|
297
|
+
Más info sobre markitdown: https://github.com/microsoft/markitdown
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
257
301
|
## 📚 Documentación Completa
|
|
258
302
|
|
|
259
303
|
### Guías Detalladas
|
package/package.json
CHANGED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# SpecLeap — Wrapper para convertir documentos a Markdown.
|
|
3
|
+
#
|
|
4
|
+
# Usa Microsoft markitdown (https://github.com/microsoft/markitdown) por
|
|
5
|
+
# debajo. markitdown es una dependencia OPCIONAL: si no está instalada,
|
|
6
|
+
# este script muestra cómo instalarla y termina sin tocar nada.
|
|
7
|
+
#
|
|
8
|
+
# Formatos soportados (por markitdown): PDF, Word (.docx), PowerPoint
|
|
9
|
+
# (.pptx), Excel (.xlsx), HTML, imágenes (con OCR), audio (con
|
|
10
|
+
# transcripción), CSV, JSON, XML, ZIP, EPub, YouTube URLs.
|
|
11
|
+
#
|
|
12
|
+
# Uso:
|
|
13
|
+
# bash scripts/convert-docs.sh <archivo-o-carpeta>
|
|
14
|
+
#
|
|
15
|
+
# Ejemplos:
|
|
16
|
+
# bash scripts/convert-docs.sh brief.pdf
|
|
17
|
+
# bash scripts/convert-docs.sh ./docs/
|
|
18
|
+
# bash scripts/convert-docs.sh user-stories.docx
|
|
19
|
+
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
|
|
22
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
23
|
+
|
|
24
|
+
# ─── Detectar idioma ──────────────────────────────────────────────────────
|
|
25
|
+
SPECLEAP_LANG="${SPECLEAP_LANG:-}"
|
|
26
|
+
|
|
27
|
+
if [ -z "$SPECLEAP_LANG" ] && [ -f "$SCRIPT_DIR/../.specleap/config.json" ]; then
|
|
28
|
+
SPECLEAP_LANG=$(grep -o '"language": "[^"]*"' "$SCRIPT_DIR/../.specleap/config.json" 2>/dev/null | cut -d'"' -f4 || true)
|
|
29
|
+
fi
|
|
30
|
+
SPECLEAP_LANG="${SPECLEAP_LANG:-es}"
|
|
31
|
+
|
|
32
|
+
# ─── Mensajes bilingües ───────────────────────────────────────────────────
|
|
33
|
+
if [ "$SPECLEAP_LANG" = "en" ]; then
|
|
34
|
+
MSG_USAGE="Usage: bash scripts/convert-docs.sh <file-or-directory>"
|
|
35
|
+
MSG_NOT_INSTALLED="markitdown is not installed."
|
|
36
|
+
MSG_INSTALL_TIP="Install with: pip install markitdown (or: uv tool install markitdown)"
|
|
37
|
+
MSG_PYTHON_REQ="Requires Python 3.10 or higher."
|
|
38
|
+
MSG_DOCS="Docs: https://github.com/microsoft/markitdown"
|
|
39
|
+
MSG_CONVERTING="Converting"
|
|
40
|
+
MSG_DONE="Done"
|
|
41
|
+
MSG_NOT_FOUND="File or directory not found"
|
|
42
|
+
MSG_CONVERTED_TO="→"
|
|
43
|
+
MSG_NO_FILES="No convertible files found in"
|
|
44
|
+
MSG_SUMMARY="Summary"
|
|
45
|
+
MSG_FAIL="FAIL"
|
|
46
|
+
MSG_PROCESSING_DIR="Processing directory"
|
|
47
|
+
MSG_HELP_INTRO="Convert documents (PDF, Word, Excel, HTML, etc.) to Markdown using markitdown."
|
|
48
|
+
MSG_HELP_FORMATS="Supported formats: PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPub, images, audio."
|
|
49
|
+
MSG_HELP_EXAMPLES="Examples:"
|
|
50
|
+
else
|
|
51
|
+
MSG_USAGE="Uso: bash scripts/convert-docs.sh <archivo-o-carpeta>"
|
|
52
|
+
MSG_NOT_INSTALLED="markitdown no está instalado."
|
|
53
|
+
MSG_INSTALL_TIP="Instala con: pip install markitdown (o: uv tool install markitdown)"
|
|
54
|
+
MSG_PYTHON_REQ="Requiere Python 3.10 o superior."
|
|
55
|
+
MSG_DOCS="Docs: https://github.com/microsoft/markitdown"
|
|
56
|
+
MSG_CONVERTING="Convirtiendo"
|
|
57
|
+
MSG_DONE="Listo"
|
|
58
|
+
MSG_NOT_FOUND="Archivo o carpeta no encontrado"
|
|
59
|
+
MSG_CONVERTED_TO="→"
|
|
60
|
+
MSG_NO_FILES="No se encontraron archivos convertibles en"
|
|
61
|
+
MSG_SUMMARY="Resumen"
|
|
62
|
+
MSG_FAIL="FALLO"
|
|
63
|
+
MSG_PROCESSING_DIR="Procesando carpeta"
|
|
64
|
+
MSG_HELP_INTRO="Convierte documentos (PDF, Word, Excel, HTML, etc.) a Markdown usando markitdown."
|
|
65
|
+
MSG_HELP_FORMATS="Formatos soportados: PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPub, imágenes, audio."
|
|
66
|
+
MSG_HELP_EXAMPLES="Ejemplos:"
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
# ─── Colores ──────────────────────────────────────────────────────────────
|
|
70
|
+
if [[ -t 1 ]]; then
|
|
71
|
+
RED='\033[0;31m'
|
|
72
|
+
GREEN='\033[0;32m'
|
|
73
|
+
YELLOW='\033[1;33m'
|
|
74
|
+
CYAN='\033[0;36m'
|
|
75
|
+
BOLD='\033[1m'
|
|
76
|
+
NC='\033[0m'
|
|
77
|
+
else
|
|
78
|
+
RED=''; GREEN=''; YELLOW=''; CYAN=''; BOLD=''; NC=''
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# ─── Help ─────────────────────────────────────────────────────────────────
|
|
82
|
+
show_help() {
|
|
83
|
+
echo "$MSG_HELP_INTRO"
|
|
84
|
+
echo ""
|
|
85
|
+
echo "$MSG_USAGE"
|
|
86
|
+
echo ""
|
|
87
|
+
echo "$MSG_HELP_FORMATS"
|
|
88
|
+
echo ""
|
|
89
|
+
echo "$MSG_HELP_EXAMPLES"
|
|
90
|
+
echo " bash scripts/convert-docs.sh brief.pdf"
|
|
91
|
+
echo " bash scripts/convert-docs.sh ./docs/"
|
|
92
|
+
echo " bash scripts/convert-docs.sh user-stories.docx"
|
|
93
|
+
echo ""
|
|
94
|
+
echo "$MSG_DOCS"
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if [ $# -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
|
98
|
+
show_help
|
|
99
|
+
exit 0
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# ─── Verificar markitdown instalado ───────────────────────────────────────
|
|
103
|
+
if ! command -v markitdown >/dev/null 2>&1; then
|
|
104
|
+
echo -e "${RED}❌ $MSG_NOT_INSTALLED${NC}"
|
|
105
|
+
echo ""
|
|
106
|
+
echo -e "${YELLOW}💡 $MSG_INSTALL_TIP${NC}"
|
|
107
|
+
echo -e " $MSG_PYTHON_REQ"
|
|
108
|
+
echo ""
|
|
109
|
+
echo -e "${CYAN}📖 $MSG_DOCS${NC}"
|
|
110
|
+
exit 1
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
INPUT="$1"
|
|
114
|
+
if [ ! -e "$INPUT" ]; then
|
|
115
|
+
echo -e "${RED}❌ $MSG_NOT_FOUND: $INPUT${NC}"
|
|
116
|
+
exit 1
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
# ─── Conversión ────────────────────────────────────────────────────────────
|
|
120
|
+
CONVERTED_OK=0
|
|
121
|
+
CONVERTED_FAIL=0
|
|
122
|
+
|
|
123
|
+
convert_one() {
|
|
124
|
+
local file="$1"
|
|
125
|
+
local base="${file%.*}"
|
|
126
|
+
local out="${base}.md"
|
|
127
|
+
|
|
128
|
+
echo -ne " ${CYAN}→${NC} $MSG_CONVERTING $(basename "$file") ... "
|
|
129
|
+
if markitdown "$file" > "$out" 2>/dev/null; then
|
|
130
|
+
echo -e "${GREEN}✅${NC} $MSG_CONVERTED_TO $(basename "$out")"
|
|
131
|
+
CONVERTED_OK=$((CONVERTED_OK + 1))
|
|
132
|
+
else
|
|
133
|
+
echo -e "${RED}❌ $MSG_FAIL${NC}"
|
|
134
|
+
# No dejar archivo .md basura si falló
|
|
135
|
+
rm -f "$out"
|
|
136
|
+
CONVERTED_FAIL=$((CONVERTED_FAIL + 1))
|
|
137
|
+
fi
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if [ -f "$INPUT" ]; then
|
|
141
|
+
convert_one "$INPUT"
|
|
142
|
+
elif [ -d "$INPUT" ]; then
|
|
143
|
+
echo -e "${BOLD}📁 $MSG_PROCESSING_DIR: $INPUT${NC}"
|
|
144
|
+
echo ""
|
|
145
|
+
|
|
146
|
+
# Extensiones que markitdown soporta
|
|
147
|
+
EXTENSIONS=(pdf docx xlsx pptx html htm csv json xml epub rtf odt ods odp txt)
|
|
148
|
+
FOUND_ANY=0
|
|
149
|
+
|
|
150
|
+
for ext in "${EXTENSIONS[@]}"; do
|
|
151
|
+
while IFS= read -r -d '' file; do
|
|
152
|
+
convert_one "$file"
|
|
153
|
+
FOUND_ANY=1
|
|
154
|
+
done < <(find "$INPUT" -maxdepth 3 -type f -iname "*.${ext}" -print0 2>/dev/null)
|
|
155
|
+
done
|
|
156
|
+
|
|
157
|
+
if [ $FOUND_ANY -eq 0 ]; then
|
|
158
|
+
echo -e "${YELLOW}⚠️ $MSG_NO_FILES $INPUT${NC}"
|
|
159
|
+
echo " (pdf, docx, xlsx, pptx, html, csv, json, xml, epub, ...)"
|
|
160
|
+
exit 0
|
|
161
|
+
fi
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
echo ""
|
|
165
|
+
echo -e "${GREEN}✅ $MSG_DONE${NC} — $MSG_SUMMARY: ${BOLD}$CONVERTED_OK${NC} OK, ${BOLD}$CONVERTED_FAIL${NC} $MSG_FAIL"
|