1---2name: generar-presentacion3description: Create presentations from a template and a source document while preserving colors, backgrounds, structure, and slide flow. Use when the user wants slides based on an uploaded template or base document, when one of those files is missing, or when the skill must decide between using the provided template, a default template, or asking for more input.4---56# Generar Presentacion78## Objetivo910- Crear una presentacion basada en una plantilla y un documento base.11- Respetar el sistema visual de la plantilla: colores, fondos, tipografia, espaciado y jerarquia.12- Mantener una narrativa clara de inicio, desarrollo y cierre.1314## Decision de entrada1516- Si hay plantilla y documento, generar la presentacion usando esa plantilla como base.17- Si solo hay plantilla, pedir el contenido faltante antes de continuar.18- Si solo hay documento, usar la plantilla fisica por defecto ubicada en `./assets/default-template.pptx` solo si ese archivo existe.19- Si no hay nada, pedir que suba archivos antes de seguir.20- Si no existe una plantilla fisica por defecto disponible, pedir al usuario que suba una antes de continuar.21- No guardar dentro de la skill la plantilla que suba el usuario; usarla solo como archivo de entrada para esa solicitud.2223## Plantilla fisica por defecto2425- La plantilla por defecto debe ser un archivo real, por ejemplo un `.pptx`.26- Guardar en `assets/` solo la plantilla por defecto propia de la skill, no las plantillas subidas por el usuario.27- Usar `./assets/default-template.pptx` como ruta por defecto.28- No asumir una plantilla solo a partir de reglas escritas si el objetivo es conservar diseno, fondos, placeholders o distribucion exacta.29- Si existe una plantilla fisica por defecto en la skill, usar siempre esa misma cuando el usuario no suba plantilla.30- Si no existe ese archivo, detener la generacion y pedir al usuario que suba una plantilla valida.3132## Flujo de trabajo3334- Inspeccionar primero la plantilla para extraer colores, fondos, estilos de titulo, espaciado y ritmo visual.35- Usar la informacion que el usuario suministre en el prompt o en archivos subidos como documento base.36- Si el usuario sube una plantilla nueva, usar esa plantilla solo para esa solicitud.37- Si el usuario no sube plantilla, usar `./assets/default-template.pptx`.38- Leer despues el documento base para identificar tesis, secciones, datos clave y cierre.39- Sintetizar el contenido en formato de slides, no copiarlo completo.40- Preferir el generador reutilizable `./build_presentation.py` para inspeccionar la plantilla y construir el `.pptx`.41- No modificar ejemplos existentes ni archivos de referencia de la skill, salvo que el usuario lo pida explicitamente.42- No dejar archivos intermedios persistentes para cada solicitud; el unico archivo final que debe quedar por defecto es la presentacion generada.43- Usar una estructura base:44 - Portada o apertura45 - Contexto o agenda46 - Desarrollo principal47 - Cierre o conclusiones48- Ajustar la densidad de texto para que cada diapositiva respire.49- Si la plantilla tiene lineamientos de marca, respetarlos por encima de preferencias genericas.5051## Automatizacion recomendada5253- Inspeccionar la plantilla:54 - `python ./.codex/skills/generar-presentacion/build_presentation.py inspect`55- Generar una presentacion desde especificacion persistida, si hace falta depurar o dejar un ejemplo:56 - `python ./.codex/skills/generar-presentacion/build_presentation.py build --spec <ruta-del-spec.json>`57- Generar una presentacion desde una especificacion transitoria, sin guardar JSON intermedio:58 - `python ./.codex/skills/generar-presentacion/build_presentation.py build --spec - --base-dir <ruta-base>`59- Si se usa una especificacion, debe contener:60 - `template_path`61 - `output_pptx`62 - `slide_order`63 - `slide_replacements`64- Puede incluir tambien:65 - `slide_images`66- Usar `notes_markdown` o `notes_markdown_path` solo cuando el usuario tambien necesite un archivo adicional con fuentes o notas.67- Si se necesita una copia adicional en otra ruta, usar `extra_output_paths`.68- `./ikusi-spec.json` es solo un ejemplo funcional de referencia, no el flujo normal para todas las presentaciones.69- `slide_images` permite insertar imagenes reales dentro del `.pptx` por numero de slide. Cada entrada puede usar:70 - una ruta simple de imagen, por ejemplo `"4": "./logo.png"`71 - o una lista de objetos con `image_path`, `placement`, `max_width`, `max_height`, `x`, `y`, `cx`, `cy`, `box`, `name`, `target_existing`, `use_target_geometry`, `remove_target_image` y `missing_ok`72- Si se usa `placement: "center"`, la imagen se centra automaticamente preservando proporcion.73- Si la plantilla ya trae una imagen o icono donde debe ir el nuevo logo, preferir `target_existing` para reutilizar la geometria del objetivo existente y evitar deformaciones.74- Selectores disponibles para `target_existing`:75 - `center`76 - `bottom-center`77- Cuando se use `target_existing`, normalmente conviene:78 - `use_target_geometry: true`79 - `remove_target_image: true`80 - `missing_ok: true`8182## Criterios8384- No inventar datos que no esten en el documento.85- No romper la composicion de la plantilla.86- No saturar las diapositivas con texto.87- Mantener coherencia visual entre apertura, cuerpo y cierre.8889## Salida esperada9091- Entregar la presentacion final o un esquema slide por slide listo para convertir.92- Incluir notas breves cuando ayuden a aplicar la plantilla correctamente.