Communitygithub.com

pptx

Usa este skill cada vez que un archivo .pptx o .potx esté involucrado de alguna manera — como entrada, salida o ambos. Esto incluye: crear decks de diapositivas, presentaciones tipo pitch o presentaciones; leer, analizar o extraer texto de cualquier archivo .pptx o .potx (incluso si el contenido extraído se usará en otro lugar, como en un correo o resumen); editar, modificar o actualizar presentaciones existentes; combinar o dividir archivos de diapositivas; trabajar con plantillas (.potx), diseños, notas del orador o comentarios. Actívalo cada vez que el usuario mencione

¿Qué es pptx?

Este skill está diseñado para la creación, edición y análisis integral de archivos .pptx (PowerPoint) y .potx (plantillas). Proporciona un enfoque modular y basado en scripts: para crear nuevas presentaciones se recomienda usar `pptxgenjs`, mientras que para editar presentaciones existentes o trabajar con plantillas se sugiere descomprimir el archivo ZIP, editar los archivos XML directamente y volver a comprimirlos. También incluye herramientas para leer contenido (como `markitdown` para extraer texto por diapositiva) y generar miniaturas visuales con `thumbnail.py` para facilitar la selección de diseños. El skill es compatible con plataformas como Claude Code, Cursor y Codex, y ofrece scripts auxiliares para validación de esquemas, limpieza de referencias huérfanas y conversión a PDF. Además, incorpora guías detalladas sobre diseño (paletas de colores, tipografía, maquetación) para evitar resultados genéricos y garantizar presentaciones profesionales.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/pptx

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 .pptx es un archivo ZIP que contiene archivos XML. Elige tu enfoque según la tarea:

TareaEnfoque
Crear un nuevo deckEscribe un script de pptxgenjs — consulta las advertencias a continuación
Editar un deck existente, o crear 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 este skill. Todo lo demás es Python, node o shell.

ScriptQué hace
scripts/thumbnail.py deck.pptx [prefijo]Cuadrícula etiquetada de cada diapositiva, para elegir diseños de plantilla. Solo .pptx. Pasa un prefijo — por defecto es thumbnails, que sobrescribe las cuadrículas de cualquier otro deck en el mismo directorio
scripts/add_slide.py descomprimido/ slide2.xml [--after slideN.xml]Duplica una diapositiva (o un slideLayoutN.xml) con toda la contabilidad del paquete. También acepta un .pptx directamente con -o out.pptx
scripts/clean.py descomprimido/Elimina diapositivas, medios y rels que ya no se referencian. Ejecuta después de que <p:sldIdLst> esté finalizado
scripts/office/validate.py deck.pptx [--original src.pptx]Comprobaciones de esquema, relaciones, tipos de contenido, gráficos y diapositivas; cada fallo nombra su solución. Pasa --original para cualquier deck derivado de una plantilla: compara las comprobaciones 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 más 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 peligros:

  • Establece pres.layout antes de añadir diapositivas. El lienzo predeterminado es LAYOUT_16x9 = 10" × 5.625", no 13.3" de ancho. Las coordenadas más allá del borde se escriben, no se recortan — la forma simplemente no está en la diapositiva. (LAYOUT_WIDE es 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 su lugar (convierte valores a EMU en el primer uso). Nunca compartas un mismo objeto shadow/opciones en 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). Establece breakLine: true en cada elemento del array excepto el último. Espacia los párrafos con viñetas con paraSpaceAfter, no lineSpacing (grandes espacios).
  • 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 en su lugar.
  • Los cuadros de texto tienen un relleno interno incorporado — establece margin: 0 siempre que el texto deba alinearse con una forma, línea o icono en la misma 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 pueda graficar (pasa un array de {type, data, options} para combinados). Para funciones nativas de PowerPoint que la biblioteca no expone (líneas de tendencia, barras de error), calcula las series adicionales tú mismo o posprocesa el OOXML generado — no recurras a una imagen renderizada. Solo los tipos de gráficos para los que PowerPoint no tiene una forma nativa (Sankey, red, chord) se incluyen como imágenes.
  • Los gráficos predeterminados se renderizan desnudos — sin título, sin etiquetas de datos, paleta anticuada. Establece 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 usa secondaryValAxis/secondaryCatAxis necesita tanto valAxes como catAxes en las opciones del gráfico, dos entradas cada uno. Sin ellos, pptxgenjs escribe ID de ejes que nunca declara, y PowerPoint descarta ese gráfico e informa que el archivo está corrupto. Proporcionar solo valAxes no es suficiente.
  • Después de writeFile(), ejecuta python scripts/office/validate.py deck.pptx. Informa de 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 manualmente el XML empaquetado.
  • Nunca reordenes los hijos de <p:presentation>. pptxgenjs escribe <p:notesMasterIdLst> justo después de <p:sldIdLst> y apunta ambos maestros a una parte de tema. PowerPoint lo lee felizmente — mueve el elemento y el mismo deck se vuelve inabrible.
  • 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 — npm install react-icons react react-dom sharp solo si falla un require).

Editar decks y plantillas existentes

Primero elige los diseños: python scripts/thumbnail.py plantilla.pptx plantilla-thumbs escribe una cuadrícula etiquetada de cada diapositiva e imprime los archivos que creó — plantilla-thumbs.jpg, dividido en plantilla-thumbs-N.jpg a partir de 12 diapositivas. Pasa siempre ese segundo argumento, nombrado como el deck. Por defecto es thumbnails, por lo que dos decks con miniaturas en un mismo directorio sobrescriben silenciosamente las cuadrículas del otro — las del primer deck simplemente desaparecen (solo análisis de plantilla — la revisión visual necesita los renders de resolución completa de Conversión a Imágenes; solo acepta .pptx, así que copia un .potx a un nombre .pptx primero). Úsalo con markitdown para mapear cada sección de contenido a 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('descomprimido')" deck.pptx
python scripts/add_slide.py descomprimido/ slide2.xml --after slide2.xml   # duplica una diapositiva (o slideLayoutN.xml); imprime la ruta de la nueva diapositiva
# reordenar / eliminar diapositivas = edita <p:sldIdLst> en ppt/presentation.xml
python scripts/clean.py descomprimido/                                     # después de eliminaciones: elimina diapositivas, medios y rels huérfanos
# edita el contenido de la diapositiva en ppt/slides/slideN.xml
(cd descomprimido && 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 deck.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 acabes de escribir.
  • Nunca copies un archivo de diapositiva manualmente — add_slide.py hace todo el registro que necesita una diapositiva nueva e informa de lo que creó (Created ppt/slides/slide17.xml from slide2.xml). También funciona directamente sobre un archivo: add_slide.py deck.pptx slide2.xml -o out.pptx — pasa -o, o sobrescribe el deck de entrada en su 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 = "..." (eso 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 lanza UnidentifiedImageError).
  • El .ppt heredado debe convertirse primero: python scripts/office/soffice.py --headless --convert-to pptx file.ppt. Las plantillas .potx se descomprimen y comprimen 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 rellenar una plantilla:

  • Si escribes un script de transformación XML, analiza con defusedxml.minidom — pasar OOXML a través de xml.etree.ElementTree reescribe los prefijos de espacio de nombres y corrompe el deck.
  • Los espacios de la plantilla ≠ elementos de origen. Si la plantilla muestra 4 miembros del equipo y tienes 3, elimina todo el grupo del 4º 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 (Status:, Owner:).
  • 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.
  • Dominancia 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 + conclusión, claros para contenido (estructura "sándwich"). O apuesta por el 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 color. Llévalo a cada diapositiva. No uses una barra de color o franja de acento como tu motivo (ver lista de Evitar).

Paletas de Colores

Elige colores que coincidan con tu tema — no uses el 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 (medianoche)
Carbón Mínimal36454F (carbón)F2F2F2 (blanco roto)212121 (negro)
Confianza Verdeazulada028090 (verde azulado)00A896 (espuma de mar)02C39A (menta)
Baya y Crema6D2E46 (baya)A26769 (rosa polvoriento)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 de texto son olvidables.

Opciones de maquetación:

  • 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 a medio sangrado (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/contra, 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 lemas

Tipografía

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

  • Fuentes seguras (se renderizan fielmente al ancho en el control de calidad y vienen con Office): Arial, Calibri, Cambria, Times New Roman, Courier New, Bookman Old Style, Century Schoolbook. Usa estas 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 lista segura (Cambria, Bookman Old Style, Century Schoolbook) con un cuerpo sans-serif de lista segura (Calibri o Arial). Obtienes contraste visual sin renunciar a comprobaciones de desbordamiento confiables.
  • Si el usuario pide una fuente fuera de la lista segura (por ejemplo, Georgia o Trebuchet MS): úsala donde el usuario lo pidió, pero dimensiona esos contenedores con un margen extra (~10%) y no confíes en la revisión de ajuste de texto en esos elementos — la vista previa de esa fuente es aproximada. Si el usuario no lo ha especificado, prefiere fuentes de lista segura para el texto del cuerpo.
  • Fuentes no confiables para control de calidad (el sustituto tiene diferentes anchos — 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. Buena para títulos/acentos con margen; no confíes en la revisión de ajuste de texto en estas.
  • Nunca uses Aptos por defecto — el valor predeterminado posterior a 2023 de Office no tiene un sustituto compatible con métricas 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

Individual skills in this repo

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

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

Skills relacionados