Communitygithub.com

pptx

Use esta habilidade sempre que um arquivo .pptx ou .potx estiver envolvido — como entrada, saída, ou ambos. Inclui: criação de decks de slides, pitches ou apresentações; leitura, análise ou extração de texto de qualquer arquivo .pptx ou .potx (mesmo que o conteúdo extraído seja usado em outro lugar, como em um e-mail ou resumo); edição, modificação ou atualização de apresentações existentes; combinação ou divisão de arquivos de slides; trabalho com modelos (.potx), layouts, notas do apresentador ou comentários.

O que é pptx?

Esta habilidade permite criar, editar e analisar arquivos .pptx (PowerPoint) de forma programática, usando diferentes abordagens conforme a tarefa: para criar uma nova apresentação, escreva um script com a biblioteca pptxgenjs (já pré-instalada); para editar ou partir de um modelo, descompacte o arquivo, edite o XML diretamente e recompacte; para ler conteúdo, use a ferramenta `markitdown` (markitdown deck.pptx) que exibe cada slide sob um marcador `<!-- Slide number: N -->`. Scripts auxiliares em Python/Node oferecem funcionalidades como: adicionar slides com rastreamento de pacote, excluir slides e limpar referências órfãs, validar o arquivo contra o esquema OOXML, e converter para PDF via LibreOffice. A habilidade também fornece orientações detalhadas sobre design (paletas de cores, tipografia segura, layout visual) e adverte sobre armadilhas comuns da pptxgenjs, como não usar `#` em cores hexadecimais, não reutilizar objetos de opções, e validar sempre o arquivo final. Funciona em ambientes que suportam Python, Node e LibreOffice (como sandboxes de agentes de IA).

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Criação, edição e análise de PPTX

Um arquivo .pptx é um arquivo ZIP contendo arquivos XML. Escolha sua abordagem de acordo com a tarefa:

TarefaAbordagem
Criar um novo deckEscreva um script com pptxgenjs — veja as armadilhas abaixo
Editar um deck existente, ou construir a partir de um modelodescompacte → edite ppt/slides/slideN.xml → compacte
Ler conteúdomarkitdown deck.pptx (um bloco por slide sob os marcadores <!-- Slide number: N -->); grade visual: python scripts/thumbnail.py deck.pptx

Scripts

Os caminhos são relativos ao diretório desta habilidade. O resto é Python puro, node ou shell.

ScriptO que faz
scripts/thumbnail.py deck.pptx [prefixo]Grade legendada de cada slide, para escolher layouts de modelo. Somente .pptx. Informe prefixo — o padrão é thumbnails, que sobrescreve as grades de qualquer outro deck no mesmo diretório
scripts/add_slide.py descompactado/ slide2.xml [--after slideN.xml]Duplica um slide (ou um slideLayoutN.xml) com toda a contabilidade do pacote. Também aceita um .pptx diretamente com -o saida.pptx
scripts/clean.py descompactado/Exclui slides, mídia e relacionamentos não mais referenciados. Execute após a <p:sldIdLst> estar final
scripts/office/validate.py deck.pptx [--original src.pptx]Verificações de esquema, relacionamento, tipo de conteúdo, gráfico e slide; cada falha nomeia sua correção. Use --original para qualquer deck derivado de modelo — ele compara as verificações de esquema com o modelo, para que os erros XSD do próprio modelo não sejam interpretados como seus
scripts/office/soffice.py --headless --convert-to pdf deck.pptxWrapper do LibreOffice — o soffice simples trava neste sandbox

Criando com pptxgenjs — armadilhas

O pptxgenjs está pré-instalado — não execute npm install primeiro; escreva o script e use require('pptxgenjs') diretamente. Somente se esse require falhar: npm install pptxgenjs. O modelo conhece a API; estas são as pegadinhas:

  • Defina pres.layout antes de adicionar slides. A tela padrão é LAYOUT_16x9 = 10" × 5.625", não 13.3" de largura. Coordenadas além da borda são escritas, não limitadas — a forma simplesmente não está no slide. (LAYOUT_WIDE é 13.3" × 7.5".)
  • Cores hexadecimais: nunca #, nunca 8 dígitos. color: "FF0000". Tanto "#FF0000" quanto o alfa embutido no hex ("00000020") corrompem o arquivo. Para translucidez: transparency: 0-100 em preenchimentos e imagens, opacity: 0.0-1.0 em sombras — cada um é ignorado silenciosamente no outro.
  • pptxgenjs modifica objetos de opções in-place (converte valores para EMU no primeiro uso). Nunca compartilhe um mesmo objeto shadow/opções entre duas chamadas add* — crie um objeto novo a cada vez.
  • O offset da sombra deve ser ≥ 0 — um offset negativo corrompe o arquivo. Para projetar uma sombra para cima, use angle: 270 com um offset positivo.
  • letterSpacing é ignorado silenciosamente — a opção real é charSpacing.
  • Listas: bullet: true em cada item, nunca um • literal (renderiza balas duplicadas). Defina breakLine: true em cada item do array, exceto o último. Espaçamento entre parágrafos com marcadores use paraSpaceAfter, não lineSpacing (grandes lacunas).
  • Um new pptxgen() por arquivo de saída — nunca reutilize uma instância.
  • rectRadius funciona apenas em ROUNDED_RECTANGLE, não em RECTANGLE.
  • Preenchimentos gradientes não são suportados — use uma imagem gradiente como fundo.
  • Caixas de texto têm preenchimento interno embutido — defina margin: 0 sempre que o texto precisar alinhar com uma forma, linha ou ícone na mesma coordenada x.
  • Notas do apresentador vão em slide.addNotes("...") (texto simples, uma vez por slide), nunca em uma caixa de texto no slide.
  • Mantenha os gráficos nativos. Use addChart() para tudo que o PowerPoint pode criar (passe um array de {type, data, options} para combos). Para recursos nativos do PowerPoint que a biblioteca não expõe (linhas de tendência, barras de erro), calcule as séries extras você mesmo ou pós-processe o OOXML gerado — não recorra a uma imagem renderizada. Apenas tipos de gráfico que o PowerPoint não tem forma nativa (Sankey, rede, chord) vão como imagens.
  • Gráficos padrão renderizam nus — sem título, sem rótulos de dados, paleta datada. Defina showTitle + title, showValue: true + dataLabelPosition, chartColors: [...] da sua paleta, e silencie o quadro (catAxisLabelColor/valAxisLabelColor, valGridLine: { color, size }, catGridLine: { style: "none" }, showLegend: false para uma série única).
  • Em um gráfico de barras ou colunas empilhadas, dataLabelPosition deve ser ctr, inEnd ou inBase. outEnd corrompe o arquivo.
  • Uma série combinada usando secondaryValAxis/secondaryCatAxis precisa de ambos valAxes e catAxes nas opções do gráfico, com duas entradas cada. Sem eles, o pptxgenjs escreve ids de eixos que nunca declara, e o PowerPoint descarta esse gráfico e reporta o arquivo como corrompido. Fornecer apenas valAxes não é suficiente.
  • Após writeFile(), execute python scripts/office/validate.py deck.pptx. Ele reporta as duas falhas de gráfico acima e os defeitos de slide-XML que o PowerPoint recusa, e nomeia a correção para cada um. Corrija-os em seu gerador, não editando manualmente o XML compactado.
  • Nunca reordene os filhos de <p:presentation>. O pptxgenjs escreve <p:notesMasterIdLst> logo após <p:sldIdLst> e aponta ambos os mestres para uma mesma parte de tema. O PowerPoint lê isso feliz — mova o elemento e o mesmo deck se torna inabrível.
  • Ícones: renderize react-icons para SVG (ReactDOMServer.renderToStaticMarkup), rasterize com sharp em ≥256px, e insira via addImage({ data: "image/png;base64," + buf.toString("base64") }) — o prefixo image/png;base64, é obrigatório (react-icons, react, react-dom e sharp estão pré-instalados — npm install react-icons react react-dom sharp apenas se um require falhar).

Editando decks e modelos existentes

Escolha os layouts primeiro: python scripts/thumbnail.py modelo.pptx modelo-thumbs escreve uma grade legendada de cada slide e imprime o(s) arquivo(s) criado(s) — modelo-thumbs.jpg, dividido em modelo-thumbs-N.jpg após 12 slides. Sempre informe esse segundo argumento, nomeado após o deck. O padrão é thumbnails, então dois decks com miniaturas no mesmo diretório sobrescrevem silenciosamente as grades um do outro — as do primeiro deck simplesmente desaparecem (análise de modelo apenas — a inspeção visual precisa das renderizações em resolução total de Convertendo para Imagens; aceita apenas .pptx, então copie um .potx para um nome .pptx primeiro). Use com markitdown para mapear cada seção de conteúdo para um slide de modelo, e varie os layouts — não coloque toda seção no mesmo slide de título e marcadores.

python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall('descompactado'" deck.pptx
python scripts/add_slide.py descompactado/ slide2.xml --after slide2.xml   # duplica um slide (ou slideLayoutN.xml); imprime o caminho do novo slide
# reordenar / excluir slides = edite <p:sldIdLst> em ppt/presentation.xml
python scripts/clean.py descompactado/                                     # após exclusões: remove slides, mídia e relacionamentos órfãos
# edite o conteúdo do slide em ppt/slides/slideN.xml
(cd descompactado && rm -f ../saida.pptx && zip -Xr ../saida.pptx .)           # compacte DENTRO do diretório; rm primeiro ou partes excluídas sobrevivem
python scripts/office/validate.py saida.pptx --original deck.pptx
  • Faça todo o trabalho estrutural — adicionar, excluir, reordenar — antes de editar o conteúdo de qualquer slide. O add_slide.py copia um arquivo de slide literalmente, então duplicar depois de editar clona o conteúdo editado; e o clean.py exclui qualquer slide ausente da <p:sldIdLst>, incluindo um que você acabou de escrever.
  • Nunca copie um arquivo de slide manualmente — o add_slide.py faz todo o registro que um novo slide precisa e reporta o que criou (Created ppt/slides/slide17.xml from slide2.xml). Também funciona diretamente em um arquivo: add_slide.py deck.pptx slide2.xml -o saida.pptx — use -o, ou ele reescreve o deck de entrada in-place. Um slide duplicado ainda referencia as partes de gráfico/SmartArt/objeto incorporado de sua origem em vez de cloná-los, então editar o gráfico de um slide altera o do outro.
  • Se você usar python-pptx, três coisas que ele não faz: duplicar um slide (seu único ponto de entrada é add_slide(layout)), preservar formatação através de text_frame.text = "..." (isso colapsa o parágrafo para uma única execução sem estilo — atribua run.text), ou ler o SVG/EMF que a maioria das artes de modelo usa (add_picture levanta UnidentifiedImageError).
  • O legado .ppt deve ser convertido primeiro: python scripts/office/soffice.py --headless --convert-to pptx arquivo.ppt. Modelos .potx são descompactados e compactados identicamente — mantenha a extensão .potx na saída.
  • Para reutilizar um ícone ou imagem de modelo, duplique um slide ou layout que já o contenha.

Ao preencher um modelo:

  • Se você criar um script de transformação XML, faça o parse com defusedxml.minidom — passar OOXML por xml.etree.ElementTree reescreve prefixos de namespace e corrompe o deck.
  • Espaços reservados do modelo ≠ itens de origem. Se o modelo mostra 4 membros da equipe e você tem 3, exclua o grupo inteiro do 4º membro (imagem + caixas de texto), não apenas o texto — depois verifique se há visuais órfãos no QA.
  • Um <a:p> por item de lista — nunca concatene itens em um único parágrafo. Copie o <a:pPr> irmão para preservar o espaçamento, e coloque b="1" no <a:rPr> de títulos, cabeçalhos de seção e rótulos inline (Status:, Owner:).
  • Deixe os marcadores herdarem do layout; adicione apenas <a:buChar>, <a:buAutoNum> (numerados), ou <a:buNone> para substituir — nunca um • literal no texto.
  • Texto com espaços iniciais ou finais precisa de xml:space="preserve" em seu <a:t>.

Ideias de Design

Não crie slides chatos. Marcadores simples em fundo branco não impressionam ninguém. Considere ideias desta lista para cada slide.

Antes de Começar

  • Escolha uma paleta de cores ousada e informada pelo conteúdo: A paleta deve parecer projetada PARA ESTE tópico. Se trocar suas cores em uma apresentação completamente diferente ainda "funcionar", você não fez escolhas suficientemente específicas.
  • Dominância sobre igualdade: Uma cor deve dominar (60-70% de peso visual), com 1-2 tons de apoio e um acento marcante. Nunca dê a todas as cores peso igual.
  • Contraste claro/escuro: Fundos escuros para slides de título + conclusão, claros para conteúdo (estrutura "sanduíche"). Ou use escuro em toda a apresentação para uma sensação premium.
  • Comprometa-se com um motivo visual: Escolha UM elemento distintivo e repita-o — molduras de imagem arredondadas, ícones em círculos coloridos. Leve-o por cada slide. Não use uma barra de cor ou faixa de acento como seu motivo (veja a lista de Evitar).

Paletas de Cores

Escolha cores que combinem com seu tópico — não use o azul genérico como padrão. Use estas paletas como inspiração:

TemaPrimáriaSecundáriaAcento
Executivo Meia-Noite1E2761 (marinho)CADCFC (azul gelo)FFFFFF (branco)
Floresta e Musgo2C5F2D (floresta)97BC62 (musgo)F5F5F5 (creme)
Energia CoralF96167 (coral)F9E795 (dourado)2F3C7E (marinho)
Terracota QuenteB85042 (terracota)E7E8D1 (areia)A7BEAE (sálvia)
Gradiente Oceânico065A82 (azul profundo)1C7293 (ciano)21295C (meia-noite)
Minimalista Carvão36454F (carvão)F2F2F2 (off-white)212121 (preto)
Confiança Verde-azulado028090 (verde-azulado)00A896 (espuma do mar)02C39A (hortelã)
Fruta Vermelha e Creme6D2E46 (fruta vermelha)A26769 (rosa poeira)ECE2D0 (creme)
Calma Sálvia84B59F (sálvia)69A297 (eucalipto)50808E (ardósia)
Cereja Ousada990011 (cereja)FCF6F5 (off-white)2F3C7E (marinho)

Para Cada Slide

Cada slide precisa de um elemento visual — imagem, gráfico, ícone ou forma. Slides só com texto são esquecíveis.

Opções de layout:

  • Duas colunas (texto à esquerda, ilustração à direita)
  • Linhas de ícone + texto (ícone em círculo colorido, cabeçalho em negrito, descrição abaixo)
  • Grade 2x2 ou 2x3 (imagem de um lado, grade de blocos de conteúdo do outro)
  • Imagem com sangria parcial (lado esquerdo ou direito inteiro) com sobreposição de conteúdo

Exibição de dados:

  • Chamadas de grandes estatísticas (números grandes 60-72pt com pequenos rótulos abaixo)
  • Colunas de comparação (antes/depois, prós/contras, opções lado a lado)
  • Linha do tempo ou fluxo de processo (etapas numeradas, setas)

Polimento visual:

  • Ícones em pequenos círculos coloridos ao lado de cabeçalhos de seção
  • Texto de acento em itálico para estatísticas-chave ou slogans

Tipografia

Os nomes de fontes que você escreve no .pptx são renderizados pelo PowerPoint do usuário, não por este ambiente. Sua inspeção visual via LibreOffice substitui fontes que ele não tem — e para algumas fontes o substituto tem larguras diferentes, então sua prévia de QA pode mostrar estouro de texto (ou ajuste) que o deck real não terá. Para manter seu QA confiável:

  • Fontes seguras (renderizam fielmente à largura no QA e vêm com o Office): Arial, Calibri, Cambria, Times New Roman, Courier New, Bookman Old Style, Century Schoolbook. Use estas para texto do corpo e qualquer coisa onde o ajuste importa.
  • Cabeçalhos com personalidade sem risco de QA: combine um cabeçalho serifado da lista segura (Cambria, Bookman Old Style, Century Schoolbook) com um corpo sans-serif da lista segura (Calibri ou Arial). Você obtém contraste visual sem abrir mão de verificações confiáveis de estouro.
  • Se o usuário pedir uma fonte fora da lista segura (ex.: Georgia ou Trebuchet MS): use-a onde o usuário pediu, mas dimensione esses contêineres com folga extra (~10%) e não confie no ajuste de texto do QA nesses elementos — a prévia dessa fonte é aproximada. Se o usuário não especificou, prefira fontes da lista segura para texto do corpo.
  • Fontes não confiáveis para QA (o substituto tem larguras diferentes — verificações de estouro podem estar erradas): Georgia, Trebuchet MS, Impact, Arial Black, Garamond, Consolas, Palatino Linotype. A substituição da Calibri Light varia por ambiente; trate como não confiável para QA. Bom para títulos/acentos com folga; não confie no ajuste de texto do QA para estas.
  • Nunca use Aptos como padrão — o padrão do Office pós-2023 não tem substituto compatível em métrica aqui e está ausente em instalações mais antigas do Office, então não é confiável em ambas as pontas.
ElementoTamanho
Título do slide36-44pt negrito
Cabeçalho de seção20-24pt negrito
Texto do corpo14-16pt
Legendas10-12pt suave

…

[truncado para tradução]

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.

Habilidades Relacionadas