CommunityProgramación y desarrollogithub.com

pptx

Usa esta skill cada vez que un archivo .pptx o .potx esté involucrado de alguna manera: como entrada, salida o ambos. Esto incluye crear, leer, editar, combinar o dividir presentaciones, trabajar con plantillas, notas del orador o comentarios. Actívala cuando el usuario mencione "deck", "diapositivas", "presentación" o cualquier archivo .pptx/.potx.

¿Qué es pptx?

Esta skill proporciona un conjunto completo de herramientas y scripts para crear, editar y analizar presentaciones de PowerPoint (.pptx) y plantillas (.potx). Te permite generar nuevas presentaciones programáticamente usando la biblioteca `pptxgenjs`, modificar presentaciones existentes descomprimiendo y manipulando directamente los archivos XML dentro del ZIP, y extraer contenido con herramientas como `markitdown`. También incluye scripts para generar vistas previas en miniatura, duplicar diapositivas, limpiar referencias huérfanas y validar la integridad estructural del archivo OOXML. La skill está optimizada para su uso con agentes de IA como Claude Code, Cursor o Codex, y ofrece guías detalladas sobre cómo evitar errores comunes, como el mal uso de propiedades de formato o la corrupción del archivo. Además, proporciona ideas de diseño, paletas de colores temáticas y recomendaciones tipográficas para crear presentaciones visualmente atractivas.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/anthropics/skills/tree/main/skills/pptx

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Creación, edición y análisis de PPTX

Un archivo .pptx es un archivo ZIP que contiene archivos XML. Elige tu enfoque según la tarea:

TareaEnfoque
Crear una nueva presentaciónEscribe un script de pptxgenjs — consulta las advertencias a continuación
Editar una presentación existente, o construir a partir de una plantilladescomprimir → editar ppt/slides/slideN.xml → comprimir
Leer contenidomarkitdown deck.pptx (un bloque por diapositiva bajo los marcadores <!-- Slide number: N -->); cuadrícula visual: python scripts/thumbnail.py deck.pptx

Scripts

Las rutas son relativas al directorio de esta skill. Todo lo demás es Python puro, node o shell.

ScriptQué hace
scripts/thumbnail.py deck.pptx [prefijo]Cuadrícula etiquetada de todas las diapositivas, para elegir diseños de plantilla. Solo .pptx. Pasa un prefijo; por defecto usa thumbnails, que sobrescribe las cuadrículas de cualquier otra presentación en el mismo directorio
scripts/add_slide.py unpacked/ slide2.xml [--after slideN.xml]Duplica una diapositiva (o un slideLayoutN.xml) con toda la gestión interna del paquete. También acepta un .pptx directamente con -o out.pptx
scripts/clean.py unpacked/Elimina diapositivas, medios y rels que ya no se referencian. Ejecutar después de que <p:sldIdLst> esté finalizado
scripts/office/validate.py deck.pptx [--original src.pptx]Verificaciones de esquema, relaciones, tipos de contenido, gráficos y diapositivas; cada fallo indica su solución. Pasa --original para cualquier presentación derivada de una plantilla: compara las verificaciones de esquema con la plantilla, para que los errores XSD propios de la plantilla no se lean como tuyos
scripts/office/soffice.py --headless --convert-to pdf deck.pptxEnvoltorio de LibreOffice: soffice sin entorno gráfico cuelga en este entorno limitado

Crear con pptxgenjs — advertencias

pptxgenjs está preinstalado: no ejecutes npm install primero; escribe el script y usa require('pptxgenjs') directamente. Solo si ese require falla: npm install pptxgenjs. El modelo conoce la API; estos son los errores comunes:

  • Configura pres.layout antes de añadir diapositivas. El lienzo predeterminado es LAYOUT_16x9 = 10" × 5.625", no 13.3" de ancho. Las coordenadas fuera del borde se escriben, no se recortan; la forma simplemente no está en la diapositiva. (LAYOUT_WIDE mide 13.3" × 7.5").
  • Colores hexadecimales: nunca #, nunca 8 dígitos. color: "FF0000". Tanto "#FF0000" como el alfa incluido en el hexadecimal ("00000020") corrompen el archivo. Para translucidez: transparency: 0-100 en rellenos e imágenes, opacity: 0.0-1.0 en sombras; cada uno se ignora silenciosamente en el otro.
  • pptxgenjs muta los objetos de opciones en el lugar (convierte los valores a EMU en el primer uso). Nunca compartas un mismo objeto shadow/opciones entre dos llamadas add*: crea un objeto nuevo cada vez.
  • El offset de la sombra debe ser ≥ 0 — un offset negativo corrompe el archivo. Para proyectar una sombra hacia arriba, usa angle: 270 con un offset positivo.
  • letterSpacing se ignora silenciosamente — la opción real es charSpacing.
  • Listas: bullet: true en cada elemento, nunca un • literal (representa viñetas dobles). Configura breakLine: true en cada elemento de la matriz excepto el último. Espacia los párrafos con viñetas usando paraSpaceAfter, no lineSpacing (genera espacios enormes).
  • Un new pptxgen() por archivo de salida — nunca reutilices una instancia.
  • rectRadius solo funciona en ROUNDED_RECTANGLE, no en RECTANGLE.
  • Los rellenos degradados no son compatibles — usa una imagen degradada como fondo.
  • Los cuadros de texto tienen un relleno interno incorporado — configura margin: 0 cuando el texto deba alinearse con una forma, línea o icono en la misma coordenada x.
  • Las notas del orador van en slide.addNotes("...") (texto plano, una vez por diapositiva), nunca en un cuadro de texto en la diapositiva.
  • Mantén los gráficos nativos. Usa addChart() para todo lo que PowerPoint puede graficar (pasa una matriz de {type, data, options} para combinaciones). Para funciones nativas de PowerPoint que la biblioteca no expone (líneas de tendencia, barras de error), calcula la serie adicional tú mismo o procesa posteriormente el OOXML generado; no recurras a una imagen renderizada. Solo los tipos de gráficos que PowerPoint no tiene de forma nativa (Sankey, red, acorde) se incorporan como imágenes.
  • Los gráficos predeterminados se renderizan desnudos — sin título, sin etiquetas de datos, paleta anticuada. Configura showTitle + title, showValue: true + dataLabelPosition, chartColors: [...] de tu paleta, y silencia el marco (catAxisLabelColor/valAxisLabelColor, valGridLine: { color, size }, catGridLine: { style: "none" }, showLegend: false para una serie única).
  • En un gráfico de barras o columnas apiladas, dataLabelPosition debe ser ctr, inEnd o inBase. outEnd corrompe el archivo.
  • Una serie combinada que use secondaryValAxis/secondaryCatAxis necesita tanto valAxes como catAxes en las opciones del gráfico, con dos entradas cada uno. Sin ellos, pptxgenjs escribe identificadores de ejes que nunca declara, y PowerPoint descarta ese gráfico e informa que el archivo está corrupto. Suministrar solo valAxes no es suficiente.
  • Después de writeFile(), ejecuta python scripts/office/validate.py deck.pptx. Informa los dos fallos de gráficos anteriores y los defectos de XML de diapositivas que PowerPoint rechaza, y nombra la solución para cada uno. Corrígelos en tu generador, no editando el XML empaquetado a mano.
  • Nunca reordenen los hijos de <p:presentation>. pptxgenjs escribe <p:notesMasterIdLst> justo después de <p:sldIdLst> y apunta ambos maestros a una misma parte de tema. PowerPoint lo lee felizmente: mueve el elemento y la misma presentación se vuelve imposible de abrir.
  • Iconos: renderiza react-icons a SVG (ReactDOMServer.renderToStaticMarkup), rasteriza con sharp a ≥256px, e inserta mediante addImage({ data: "image/png;base64," + buf.toString("base64") }) — el prefijo image/png;base64, es obligatorio (react-icons, react, react-dom y sharp están preinstalados; ejecuta npm install react-icons react react-dom sharp solo si un require falla).

Editar presentaciones y plantillas existentes

Primero elige diseños: python scripts/thumbnail.py plantilla.pptx plantilla-thumbs escribe una cuadrícula etiquetada de cada diapositiva e imprime los archivos creados: plantilla-thumbs.jpg, dividido en plantilla-thumbs-N.jpg si hay más de 12 diapositivas. Siempre pasa ese segundo argumento, nombrado según la presentación. Por defecto usa thumbnails, por lo que dos presentaciones con miniaturas en el mismo directorio sobrescriben silenciosamente las cuadrículas de la otra: las de la primera presentación simplemente desaparecen (solo para análisis de plantillas; la verificación visual necesita las representaciones de resolución completa de Conversión a imágenes; solo acepta .pptx, así que primero copia un .potx con nombre .pptx). Úsalo con markitdown para mapear cada sección de contenido en una diapositiva de plantilla y varía los diseños: no pongas cada sección en la misma diapositiva de título y viñetas.

python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall('unpacked')" presentacion.pptx
python scripts/add_slide.py unpacked/ slide2.xml --after slide2.xml   # duplica una diapositiva (o slideLayoutN.xml); imprime la ruta de la nueva diapositiva
# reordenar / eliminar diapositivas = editar <p:sldIdLst> en ppt/presentation.xml
python scripts/clean.py unpacked/                                     # después de eliminaciones: elimina diapositivas, medios, rels huérfanos
# editar contenido de la diapositiva en ppt/slides/slideN.xml
(cd unpacked && rm -f ../out.pptx && zip -Xr ../out.pptx .)           # comprimir DESDE DENTRO del directorio; rm primero o las partes eliminadas sobreviven
python scripts/office/validate.py out.pptx --original presentacion.pptx
  • Haz todo el trabajo estructural (añadir, eliminar, reordenar) antes de editar el contenido de cualquier diapositiva. add_slide.py copia un archivo de diapositiva textualmente, por lo que duplicar después de editar clona el contenido editado; y clean.py elimina cualquier diapositiva que falte en <p:sldIdLst>, incluida una que acabas de escribir.
  • Nunca copies un archivo de diapositiva a mano — add_slide.py hace todos los registros que necesita una nueva diapositiva e informa lo que creó (Created ppt/slides/slide17.xml from slide2.xml). También funciona directamente sobre un archivo: add_slide.py presentacion.pptx slide2.xml -o out.pptx — pasa -o, o sobrescribe la presentación de entrada en el lugar. Una diapositiva duplicada aún referencia las partes de gráfico/SmartArt/objeto incrustado de su fuente en lugar de clonarlas, por lo que editar el gráfico de una diapositiva cambia el de la otra.
  • Si usas python-pptx, tres cosas que no hará: duplicar una diapositiva (su único punto de entrada es add_slide(layout)), preservar el formato a través de text_frame.text = "..." (colapsa el párrafo a una sola ejecución sin estilo: asigna run.text en su lugar), o leer el SVG/EMF que usa la mayoría del arte de las plantillas (add_picture genera UnidentifiedImageError).
  • Los archivos .ppt heredados deben convertirse primero: python scripts/office/soffice.py --headless --convert-to pptx archivo.ppt. Las plantillas .potx se desempaquetan y empaquetan de manera idéntica: mantén la extensión .potx en la salida.
  • Para reutilizar un icono o imagen de plantilla, duplica una diapositiva o diseño que ya lo contenga.

Al completar una plantilla:

  • Si creas un script de transformación XML, analiza con defusedxml.minidom: pasar OOXML por xml.etree.ElementTree reescribe los prefijos de espacio de nombres y corrompe la presentación.
  • Los espacios de plantilla ≠ elementos fuente. Si la plantilla muestra 4 miembros del equipo y tienes 3, elimina el grupo completo del cuarto miembro (imagen + cuadros de texto), no solo su texto; luego verifica si hay elementos visuales huérfanos en el control de calidad.
  • Un <a:p> por elemento de lista: nunca concatenes elementos en un solo párrafo. Copia el <a:pPr> hermano para preservar el espaciado y pon b="1" en el <a:rPr> de títulos, encabezados de sección y etiquetas en línea (Estado:, Propietario:).
  • Deja que las viñetas hereden del diseño; solo añade <a:buChar>, <a:buAutoNum> (numeradas) o <a:buNone> para anular: nunca un • literal en el texto.
  • El texto con espacios iniciales o finales necesita xml:space="preserve" en su <a:t>.

Ideas de diseño

No crees diapositivas aburridas. Las viñetas simples sobre un fondo blanco no impresionarán a nadie. Considera ideas de esta lista para cada diapositiva.

Antes de empezar

  • Elige una paleta de colores audaz e informada por el contenido: La paleta debe sentirse diseñada PARA ESTE tema. Si intercambiar tus colores en una presentación completamente diferente aún "funcionara", no has hecho elecciones lo suficientemente específicas.
  • Dominio sobre igualdad: Un color debe dominar (60-70% de peso visual), con 1-2 tonos de apoyo y un acento marcado. Nunca des a todos los colores el mismo peso.
  • Contraste oscuro/claro: Fondos oscuros para diapositivas de título y conclusión, claros para contenido (estructura "sándwich"). O apuesta por oscuro en toda la presentación para una sensación premium.
  • Comprométete con un motivo visual: Elige UN elemento distintivo y repítelo: marcos de imagen redondeados, iconos en círculos de colores. Llévalo a través de cada diapositiva. No uses una barra de color o franja de acento como motivo (consulta la lista de Evitar).

Paletas de colores

Elige colores que coincidan con tu tema: no uses azul genérico por defecto. Usa estas paletas como inspiración:

TemaPrimarioSecundarioAcento
Ejecutivo nocturno1E2761 (azul marino)CADCFC (azul hielo)FFFFFF (blanco)
Bosque y musgo2C5F2D (bosque)97BC62 (musgo)F5F5F5 (crema)
Energía coralF96167 (coral)F9E795 (dorado)2F3C7E (azul marino)
Terracota cálidaB85042 (terracota)E7E8D1 (arena)A7BEAE (salvia)
Degradado oceánico065A82 (azul profundo)1C7293 (verde azulado)21295C (azul medianoche)
Carbón minimalista36454F (carbón)F2F2F2 (blanco roto)212121 (negro)
Confianza verde azulado028090 (verde azulado)00A896 (espuma de mar)02C39A (menta)
Baya y crema6D2E46 (baya)A26769 (rosa empolvado)ECE2D0 (crema)
Calma salvia84B59F (salvia)69A297 (eucalipto)50808E (pizarra)
Cereza audaz990011 (cereza)FCF6F5 (blanco roto)2F3C7E (azul marino)

Para cada diapositiva

Cada diapositiva necesita un elemento visual: imagen, gráfico, icono o forma. Las diapositivas solo con texto son olvidables.

Opciones de diseño:

  • Dos columnas (texto a la izquierda, ilustración a la derecha)
  • Filas de icono + texto (icono en círculo de color, encabezado en negrita, descripción debajo)
  • Cuadrícula 2x2 o 2x3 (imagen a un lado, cuadrícula de bloques de contenido al otro)
  • Imagen de sangría media (lado izquierdo o derecho completo) con superposición de contenido

Visualización de datos:

  • Destacados de estadísticas grandes (números grandes 60-72pt con etiquetas pequeñas debajo)
  • Columnas de comparación (antes/después, pros/contras, opciones lado a lado)
  • Línea de tiempo o flujo de proceso (pasos numerados, flechas)

Pulido visual:

  • Iconos en pequeños círculos de color junto a los encabezados de sección
  • Texto de acento en cursiva para estadísticas clave o eslóganes

Tipografía

Los nombres de fuentes que escribes en el .pptx son renderizados por el PowerPoint del usuario, no por este entorno. Tu control de calidad visual se renderiza a través de LibreOffice, que sustituye las fuentes que no tiene, y para algunas fuentes el sustituto tiene anchos diferentes, por lo que tu vista previa de control de calidad puede mostrar desbordamiento de texto (o ajuste) que la presentación real no tendrá. Para mantener tu control de calidad confiable:

  • Fuentes seguras (se renderizan con el ancho correcto en control de calidad y vienen con Office): Arial, Calibri, Cambria, Times New Roman, Courier New, Bookman Old Style, Century Schoolbook. Úsalas para el texto del cuerpo y cualquier cosa donde el ajuste importe.
  • Encabezados con personalidad sin riesgo de control de calidad: combina un encabezado serif de la lista segura (Cambria, Bookman Old Style, Century Schoolbook) con un cuerpo sans-serif de la lista segura (Calibri o Arial). Obtienes contraste visual sin renunciar a verificaciones confiables de desbordamiento.
  • Si el usuario solicita una fuente fuera de la lista segura (por ejemplo, Georgia o Trebuchet MS): úsala donde el usuario la pidió, pero dimensiona esos contenedores con un margen adicional (~10%) y no confíes en la verificación de ajuste de texto de control de calidad en esos elementos: la vista previa de esa fuente es aproximada. Si el usuario no ha especificado, prefiere fuentes de la lista segura para el texto del cuerpo.
  • Fuentes no confiables para control de calidad (el sustituto tiene anchos diferentes: las comprobaciones de desbordamiento pueden ser incorrectas): Georgia, Trebuchet MS, Impact, Arial Black, Garamond, Consolas, Palatino Linotype. La sustitución de Calibri Light varía según el entorno; trátala como no confiable para control de calidad. Está bien para títulos/acentos con margen; no confíes en la verificación de ajuste de texto de control de calidad en estos.
  • Nunca uses Aptos por defecto: el predeterminado de Office posterior a 2023 no tiene un sustituto compatible métricamente aquí y falta en instalaciones antiguas de Office, por lo que no es confiable en ambos extremos.
ElementoTamaño
Título de diapositiva36-44pt negrita
Encabezado de sección20-24pt negrita
Texto del cuerpo14-16pt
Leyendas10-12pt atenuado

…

[truncado para traducción]

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

academy-guide

Stop and check this skill before finishing any reply to a question about how to use Claude or a Claude product — it recommends matching courses, tutorials, and use cases from Claude Academy (academy.claude.com), Anthropic's learning hub. Trigger on: "how do I", "how can I", "getting started with", "what can Claude do", "teach me", "learn to use"; questions about artifacts, projects, skills, plugins, connectors, MCP; requests about rolling Claude out to a team, class, or organization; and any ask for training materials, onboarding content, or learning resources. Use it when the user is learning how to use a feature or product — not when they are mid-task and just want the task done. This skill composes with other skills: after consulting product documentation to answer how a Claude feature works, also check here for a matching course or tutorial — a docs-grounded answer and an Academy recommendation belong together. Only recommend on a strong match; never invent Academy content.

algorithmic-art

Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists

anthropics/template-skill

Replace with description of the skill and when Claude should use it.

brand-guidelines

Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.

canvas-design

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists

claude-api

|-

discernment-nudge

After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.

doc-coauthoring

Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.

docx

Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.

frontend-design

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

internal-comms

A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).

mcp-builder

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

pdf

Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.

skill-creator

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill

slack-gif-creator

Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like

theme-factory

Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.

webapp-testing

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

web-artifacts-builder

Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.

xlsx

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .xltx, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

Skills relacionados