Educational HTML Pipeline — Generación y Mejora de HTML Educativos
Resumen
Pipeline completo para crear y mejorar HTML educativos interactivos en dos proyectos:
- Dibujo Técnico (
/root/workspace/DibujoTecnico) — generación desde template
- DeSumarIntegrar (
/root/workspace/DeSumarIntegrar) — mejora iterativa nocturna
1. Generación de Temas (Dibujo Técnico)
Flujo
- Cargar skill TD fuente (
skill_view(name='stem/td/<nombre>'))
- Verificar archivos existentes vs progress.json (detectar nombres mismatch)
- Leer template en
generate_td.py (líneas 8-136)
- Mapear contenido → rellenar placeholders
- Generar SVG interactivo inline (mínimo 6-8 tipos visuales, viewBox 700x520)
- Generar HTML completo con
write_file
- Verificar calidad (>12KB, tiene
<svg, tiene quiz-btn)
- Actualizar progress.json → Git commit + push
Placeholders del template
{title}, {subtitle}, {key_idea}, {learning_goals}, {theory_title}, {theory_text}, {example_1/2/3}, {interactive_title}, {interactive_desc}, {svg_content}, {interactive_content}, {exercises_html}, {summary_items}, {prev_link}, {next_link}, {js_code}
Funciones JS requeridas
checkAnswer(btn, isCorrect, resultId) — quizzes selección múltiple
checkExercise(btn, isCorrect, resultId) — ejercicios selección
checkVF(btn, isCorrect, resultId) — Verdadero/Falso
showPaso(n) — SVG paso a paso (usar inline style.display, NO CSS global)
Pitfalls de generación
- NUNCA usar
read_file para leer progress.json → prependea números de línea → rompe JSON. Usar terminal("cat ...") + json.loads()
- NUNCA usar
patch para HTML → siempre write_file con contenido completo
- Mínimo 12KB de contenido real — cada tema debe tener: SVG, 3+ ejemplos, 5 ejercicios, teoría, error clásico, resumen
- GitHub Pages requiere
index.html (minúsculas) — INDEX.html → 404
- CSS con dobles llaves
{{}} — puede venir de template engine, romper estilos. Detectar con grep -n '{{' *.html
- Nombres de archivo en progress.json ≠ archivos reales — verificar con
os.path.exists()
Deploy a GitHub Pages
- Renombrar INDEX.html → index.html
- Push a master/main
- Activar Pages via API
- Verificar con
curl -s -o /dev/null -w "%{http_code}" URL
2. Mejora Nocturna Iterativa (DeSumarIntegrar + DibujoTecnico)
Flujo de mejora
- Seleccionar temas — priorizar menos improvement_count, rotación de niveles, excluir mejorados hoy
- Backup —
cp tema.html tema.html.bak
- Analizar — evaluar 8 dimensiones: exercises, text, visual, real_world, connections, difficulty_range, manim_quality, css_coherence
- Mejorar — exactamente lo que falta (máx 3 ejercicios nuevos, tipos diferentes)
- Quality Gates — HTML válido, ejercicios funcionales, CSS coherence (17 clases), títulos únicos
- Si gate falla → REVERTIR —
cp tema.html.bak tema.html
- Si OK → actualizar progress.json + git commit
Dimensiones de evaluación
| Dimensión |
Qué buscar |
| exercises |
3+ tipos diferentes (quiz, VF, completar, ordenar, problema, emparejar, input) |
| text |
Patrón 4 pasos: qué es → para qué → cómo → error |
| visual |
SVG/gráfico informativo (no decorativo) |
| real_world |
Casos cotidianos concretos |
| connections |
Connection-box con enlaces a temas relacionados |
| difficulty_range |
Badges easy/medium/hard |
| manim_quality |
SVG animado para bachiller/universidad |
| css_coherence |
TODAS las clases del template base |
CSS Coherente — 17 clases requeridas
header, container, chapter-title, box, box-teoria, box-ejemplo, box-error, box-idea, box-success, interactive, exercises, exercise, quiz-options, quiz-btn, summary, nav, footer
CSS Coherence Drift — Patrón detectado
Muchos temas tienen CSS custom en vez del template base. Diferencias típicas:
.comparison grid vs flex
.step-dot 32px vs 12px
.real-world-badge con gradient vs sin gradient
.stack-item con fondo gris vs borde azul
Corrección: reemplazar CSS custom con template base completo.
Variables CSS obligatorias
--azul:#2563eb, --naranja:#f97316, --verde:#10b981, --rojo:#ef4444
Clases CSS siempre faltantes
.feedback, .feedback.correct, .feedback.incorrect — siempre añadir
.svg-container — añadir si falta
.difficulty-badge, .difficulty-badge.easy/medium/hard — añadir si falta
.connection-box — usar class="connection-box" (con 'n', no conexion-box)
Pitfalls críticos de mejora
- DOBLE ESCAPE KATEX —
$\\\\\\\\pm$ vs $\\\\pm$ — verificar con grep tras patch
- CONVERSIÓN KATEX EN PATCHES — el patch tool puede escapar barras invertidas
- read_file con offset/limit no carga todo — siempre leer archivo completo antes de patchear
- PATCH ENTRE PIERDE WRAPPER — verificar estructura HTML tras patch
- FUNCIONES JS DUPLICADAS — contar con grep, eliminar duplicadas
- CLOSURE ONCLICK ROTO —
onclick="checkFillIn(['respuesta'])()" → cambiar a onclick="checkFillIn(['respuesta'])(this)"
- Ejercicios FUERA de div.exercises — verificar y mover dentro del wrapper
- Añadir V/F requiere función JS — verificar
checkVF existe antes de patchear ejercicio
- box-success definido pero nunca usado — añadir al menos un box-success cuando se mejora real_world
- NO bajar scores ya en 10 — nunca reducir un score máximo existente
- progress.json improvements puede ser string o lista — normalizar antes de append
- DibujoTecnico progress.json: claves con .html y scores anidados — estructura diferente a DeSumarIntegrar
- SVG interactividad ronda 2 — toggleHighlight con data-info, mínimo 5 elementos
.bak files en git — siempre hacer git rm --cached *.bak && rm -f *.bak && git commit --amend
MODO RÁPIDO (batch 4-6 temas)
- 1 acción por dimensión: 1 CSS batch, 1 caso real, 1 error comparativo
- Usar
execute_code (Python) para todo: leer, patchear, actualizar progress.json
- Git commit después de cada batch
- NO hacer SVGs interactivos nuevos en modo rápido
Casos reales por bloque (Dibujo Técnico)
| Bloque |
Caso real |
| b02 Proyecciones |
Biela de motor, brida de tubería |
| b03 Perspectivas |
Tuercas/arandelas, planos arquitectónicos |
| b04 Diedrico |
Control calidad CMM, cableado/tuberías |
| b05 Cortes |
Motor de combustión, carcasa bomba |
| b06 Acotación |
Pieza aeronáutica, taladrero CNC |
| b07 Intersecciones |
Unión tuberías HVAC, vigas acero |
Errores comparativos por bloque
| Bloque |
Error típico |
| b02 |
Planta encima del alzado, confundir X con Z |
| b03 |
Círculo en vez de elipse en isométrica |
| b04 |
Punto en 2º diedro, recta paralela a LT |
| b05 |
Corte total innecesario, sin corte |
| b06 |
Cota dentro del objeto, cotas en cadena |
| b07 |
Intersección recta en vez de curva |
3. Pipeline Auditoría → Corrección → Generación → Deploy
Cuando el usuario pide completar y desplegar un proyecto HTML:
- Auditoría — cargar
audit-html-project, escaneo masivo, generar informe
- Corrección críticos — enlaces rotos, archivos huérfanos, commit
- Generación temas faltantes — batch de 3-6 temas, actualizar progress.json
- Deploy — push a GitHub, activar Pages, verificar
Reglas de oro
- NO crear temas nuevos — solo mejorar existentes (modo mejora)
- NO más de 3 ejercicios nuevos por tema
- NO ejercicios del mismo tipo seguidos
- NO SVG decorativos sin propósito
- Si un quality gate falla, REVERTIR — no hacer commit con HTML roto
- Siempre usar backup antes de cualquier cambio
- Cada commit debe ser autónomo y funcional
Referencias
references/curriculum-map.md — Mapa completo del curso Dibujo Técnico
references/svg-perspectiva-isometrica.md — Patrón SVG ejes isométricos
references/patrones-ejercicios.md — Patrones de ejercicios interactivos
references/casos-reales-industriales.md — Banco de casos reales por bloque
references/css-coherence-drift.md — Detección y corrección de CSS drift
references/patron-svg-paso-a-paso-interactive.md — Patrón SVG interactivo paso a paso
references/katex-double-escape-fix.md — Detección y corrección doble escape KaTeX
references/closure-onclick-fix.md — Patrón closure onclick roto y fix
references/svg-interactivity-pattern.md — Patrón toggleHighlight con data-info
references/duplicate-content-after-patch.md — Detectar contenido duplicado tras patch
references/svg-animation-pattern.md — Patrón CSS keyframes para SVG animado
references/svg-area-model-decimal.md — Patrón SVG modelo de área (primaria)
references/svg-bar-chart-calendar.md — Patrón SVG gráfico de barras
references/svg-zigzag-pattern.md — Patrón SVG zigzag animado
references/ronda2-selection-pattern.md — Patrón selección temas score 9 (ronda 2)
references/dibujotecnico-ronda2-patterns.md — Diferencias DibujoTecnico vs DeSumarIntegrar
references/naming-mismatch-progress-json.md — Nombres de archivo mismatch
references/quality-gates-checklist.md — Checklist visual quality gates
1---2name: educational-html-pipeline3description: Pipeline completo de HTML educativos: generación desde template (Dibujo Técnico), mejora nocturna iterativa (DeSumarIntegrar), quality gates, SVG interactivo, quizzes, y deploy a GitHub Pages. Incluye ambos proyectos.4---56# Educational HTML Pipeline — Generación y Mejora de HTML Educativos78## Resumen910Pipeline completo para crear y mejorar HTML educativos interactivos en dos proyectos:11- **Dibujo Técnico** (`/root/workspace/DibujoTecnico`) — generación desde template12- **DeSumarIntegrar** (`/root/workspace/DeSumarIntegrar`) — mejora iterativa nocturna1314## 1. Generación de Temas (Dibujo Técnico)1516### Flujo171. Cargar skill TD fuente (`skill_view(name='stem/td/<nombre>')`)182. Verificar archivos existentes vs progress.json (detectar nombres mismatch)193. Leer template en `generate_td.py` (líneas 8-136)204. Mapear contenido → rellenar placeholders215. Generar SVG interactivo inline (mínimo 6-8 tipos visuales, viewBox 700x520)226. Generar HTML completo con `write_file`237. Verificar calidad (>12KB, tiene `<svg`, tiene `quiz-btn`)248. Actualizar progress.json → Git commit + push2526### Placeholders del template27{title}, {subtitle}, {key_idea}, {learning_goals}, {theory_title}, {theory_text}, {example_1/2/3}, {interactive_title}, {interactive_desc}, {svg_content}, {interactive_content}, {exercises_html}, {summary_items}, {prev_link}, {next_link}, {js_code}2829### Funciones JS requeridas30- `checkAnswer(btn, isCorrect, resultId)` — quizzes selección múltiple31- `checkExercise(btn, isCorrect, resultId)` — ejercicios selección32- `checkVF(btn, isCorrect, resultId)` — Verdadero/Falso33- `showPaso(n)` — SVG paso a paso (usar inline style.display, NO CSS global)3435### Pitfalls de generación36- **NUNCA usar `read_file` para leer progress.json** → prependea números de línea → rompe JSON. Usar `terminal("cat ...")` + `json.loads()`37- **NUNCA usar `patch` para HTML** → siempre `write_file` con contenido completo38- **Mínimo 12KB de contenido real** — cada tema debe tener: SVG, 3+ ejemplos, 5 ejercicios, teoría, error clásico, resumen39- **GitHub Pages requiere `index.html` (minúsculas)** — `INDEX.html` → 40440- **CSS con dobles llaves `{{}}`** — puede venir de template engine, romper estilos. Detectar con `grep -n '{{' *.html`41- **Nombres de archivo en progress.json ≠ archivos reales** — verificar con `os.path.exists()`4243### Deploy a GitHub Pages441. Renombrar INDEX.html → index.html452. Push a master/main463. Activar Pages via API474. Verificar con `curl -s -o /dev/null -w "%{http_code}" URL`4849## 2. Mejora Nocturna Iterativa (DeSumarIntegrar + DibujoTecnico)5051### Flujo de mejora521. **Seleccionar temas** — priorizar menos improvement_count, rotación de niveles, excluir mejorados hoy532. **Backup** — `cp tema.html tema.html.bak`543. **Analizar** — evaluar 8 dimensiones: exercises, text, visual, real_world, connections, difficulty_range, manim_quality, css_coherence554. **Mejorar** — exactamente lo que falta (máx 3 ejercicios nuevos, tipos diferentes)565. **Quality Gates** — HTML válido, ejercicios funcionales, CSS coherence (17 clases), títulos únicos576. **Si gate falla → REVERTIR** — `cp tema.html.bak tema.html`587. **Si OK → actualizar progress.json + git commit**5960### Dimensiones de evaluación61| Dimensión | Qué buscar |62|-----------|-----------|63| exercises | 3+ tipos diferentes (quiz, VF, completar, ordenar, problema, emparejar, input) |64| text | Patrón 4 pasos: qué es → para qué → cómo → error |65| visual | SVG/gráfico informativo (no decorativo) |66| real_world | Casos cotidianos concretos |67| connections | Connection-box con enlaces a temas relacionados |68| difficulty_range | Badges easy/medium/hard |69| manim_quality | SVG animado para bachiller/universidad |70| css_coherence | TODAS las clases del template base |7172### CSS Coherente — 17 clases requeridas73`header`, `container`, `chapter-title`, `box`, `box-teoria`, `box-ejemplo`, `box-error`, `box-idea`, `box-success`, `interactive`, `exercises`, `exercise`, `quiz-options`, `quiz-btn`, `summary`, `nav`, `footer`7475### CSS Coherence Drift — Patrón detectado76Muchos temas tienen CSS custom en vez del template base. Diferencias típicas:77- `.comparison` grid vs flex78- `.step-dot` 32px vs 12px79- `.real-world-badge` con gradient vs sin gradient80- `.stack-item` con fondo gris vs borde azul8182**Corrección:** reemplazar CSS custom con template base completo.8384### Variables CSS obligatorias85`--azul:#2563eb`, `--naranja:#f97316`, `--verde:#10b981`, `--rojo:#ef4444`8687### Clases CSS siempre faltantes88- `.feedback`, `.feedback.correct`, `.feedback.incorrect` — siempre añadir89- `.svg-container` — añadir si falta90- `.difficulty-badge`, `.difficulty-badge.easy/medium/hard` — añadir si falta91- `.connection-box` — usar `class="connection-box"` (con 'n', no `conexion-box`)9293### Pitfalls críticos de mejora94- **DOBLE ESCAPE KATEX** — `$\\\\\\\\pm$` vs `$\\\\pm$` — verificar con grep tras patch95- **CONVERSIÓN KATEX EN PATCHES** — el patch tool puede escapar barras invertidas96- **read_file con offset/limit no carga todo** — siempre leer archivo completo antes de patchear97- **PATCH ENTRE </div> PIERDE WRAPPER** — verificar estructura HTML tras patch98- **FUNCIONES JS DUPLICADAS** — contar con grep, eliminar duplicadas99- **CLOSURE ONCLICK ROTO** — `onclick="checkFillIn(['respuesta'])()"` → cambiar a `onclick="checkFillIn(['respuesta'])(this)"`100- **Ejercicios FUERA de div.exercises** — verificar y mover dentro del wrapper101- **Añadir V/F requiere función JS** — verificar `checkVF` existe antes de patchear ejercicio102- **box-success definido pero nunca usado** — añadir al menos un box-success cuando se mejora real_world103- **NO bajar scores ya en 10** — nunca reducir un score máximo existente104- **progress.json improvements puede ser string o lista** — normalizar antes de append105- **DibujoTecnico progress.json: claves con .html y scores anidados** — estructura diferente a DeSumarIntegrar106- **SVG interactividad ronda 2** — toggleHighlight con data-info, mínimo 5 elementos107- **`.bak` files en git** — siempre hacer `git rm --cached *.bak && rm -f *.bak && git commit --amend`108109### MODO RÁPIDO (batch 4-6 temas)110- 1 acción por dimensión: 1 CSS batch, 1 caso real, 1 error comparativo111- Usar `execute_code` (Python) para todo: leer, patchear, actualizar progress.json112- Git commit después de cada batch113- NO hacer SVGs interactivos nuevos en modo rápido114115### Casos reales por bloque (Dibujo Técnico)116| Bloque | Caso real |117|--------|-----------|118| b02 Proyecciones | Biela de motor, brida de tubería |119| b03 Perspectivas | Tuercas/arandelas, planos arquitectónicos |120| b04 Diedrico | Control calidad CMM, cableado/tuberías |121| b05 Cortes | Motor de combustión, carcasa bomba |122| b06 Acotación | Pieza aeronáutica, taladrero CNC |123| b07 Intersecciones | Unión tuberías HVAC, vigas acero |124125### Errores comparativos por bloque126| Bloque | Error típico |127|--------|-------------|128| b02 | Planta encima del alzado, confundir X con Z |129| b03 | Círculo en vez de elipse en isométrica |130| b04 | Punto en 2º diedro, recta paralela a LT |131| b05 | Corte total innecesario, sin corte |132| b06 | Cota dentro del objeto, cotas en cadena |133| b07 | Intersección recta en vez de curva |134135## 3. Pipeline Auditoría → Corrección → Generación → Deploy136137Cuando el usuario pide completar y desplegar un proyecto HTML:1381. **Auditoría** — cargar `audit-html-project`, escaneo masivo, generar informe1392. **Corrección críticos** — enlaces rotos, archivos huérfanos, commit1403. **Generación temas faltantes** — batch de 3-6 temas, actualizar progress.json1414. **Deploy** — push a GitHub, activar Pages, verificar142143## Reglas de oro144- NO crear temas nuevos — solo mejorar existentes (modo mejora)145- NO más de 3 ejercicios nuevos por tema146- NO ejercicios del mismo tipo seguidos147- NO SVG decorativos sin propósito148- Si un quality gate falla, REVERTIR — no hacer commit con HTML roto149- Siempre usar backup antes de cualquier cambio150- Cada commit debe ser autónomo y funcional151152## Referencias153- `references/curriculum-map.md` — Mapa completo del curso Dibujo Técnico154- `references/svg-perspectiva-isometrica.md` — Patrón SVG ejes isométricos155- `references/patrones-ejercicios.md` — Patrones de ejercicios interactivos156- `references/casos-reales-industriales.md` — Banco de casos reales por bloque157- `references/css-coherence-drift.md` — Detección y corrección de CSS drift158- `references/patron-svg-paso-a-paso-interactive.md` — Patrón SVG interactivo paso a paso159- `references/katex-double-escape-fix.md` — Detección y corrección doble escape KaTeX160- `references/closure-onclick-fix.md` — Patrón closure onclick roto y fix161- `references/svg-interactivity-pattern.md` — Patrón toggleHighlight con data-info162- `references/duplicate-content-after-patch.md` — Detectar contenido duplicado tras patch163- `references/svg-animation-pattern.md` — Patrón CSS keyframes para SVG animado164- `references/svg-area-model-decimal.md` — Patrón SVG modelo de área (primaria)165- `references/svg-bar-chart-calendar.md` — Patrón SVG gráfico de barras166- `references/svg-zigzag-pattern.md` — Patrón SVG zigzag animado167- `references/ronda2-selection-pattern.md` — Patrón selección temas score 9 (ronda 2)168- `references/dibujotecnico-ronda2-patterns.md` — Diferencias DibujoTecnico vs DeSumarIntegrar169- `references/naming-mismatch-progress-json.md` — Nombres de archivo mismatch170- `references/quality-gates-checklist.md` — Checklist visual quality gates