# pptx - **Autore:** Anthropic - **Repository:** [anthropics/skills](https://github.com/anthropics/skills), la raccolta di skill di esempio di Anthropic - **Sorgente:** [skills/pptx/SKILL.md](https://github.com/anthropics/skills/blob/main/skills/pptx/SKILL.md), con `LICENSE.txt` e una cartella `scripts/` - **Pagina su skills.sh:** [anthropics/skills/pptx](https://skills.sh/anthropics/skills/pptx) - **Diffusione (ottobre 2026):** circa 245.300 installazioni (su skills.sh dal 20 gennaio 2026); il repository ha circa 184.900 stelle e 21.900 fork su GitHub - **Controlli di sicurezza su skills.sh:** Gen Agent Trust Hub e Snyk superati; Socket segnala un avviso (la pagina non spiega il motivo) - **Licenza:** proprietaria (termini in `LICENSE.txt`). Il README del repository precisa che le skill per i documenti (`docx`, `pdf`, `pptx`, `xlsx`) sono *source-available*, non open source, e che le skill del repository sono dimostrative: conviene provarle bene prima di affidarsi a loro. ## A cosa serve Fa creare, leggere e modificare presentazioni PowerPoint all'agente, controllando poi il risultato slide per slide. Non si limita a scrivere un file: lo trasforma in immagini, cerca testo che esce dai bordi, sovrapposizioni e problemi di spaziatura, e li corregge prima di consegnare. ## Cosa fa ### Quando si attiva Ogni volta che la richiesta riguarda un file `.pptx` o `.potx`: - creare una presentazione nuova (slide, pitch deck); - leggere o estrarre il testo di una presentazione; - modificarne una esistente: duplicare o riordinare slide, cambiare i contenuti; - partire da un modello (`.potx`), lavorare con layout, note del relatore e commenti. ### Come lavora L'agente sceglie il percorso in base al compito: | Compito | Come | |---|---| | Creare | scrive uno script **pptxgenjs** (libreria JavaScript) che genera il file | | Modificare o usare un modello | decomprime il file, modifica l'XML delle slide e lo ricomprime | | Leggere | estrae il testo con **markitdown** (un blocco per slide) o costruisce una griglia di miniature per vedere i layout | Alternativa nominata per la creazione: **python-pptx**, con limiti nella duplicazione delle slide, nella formattazione del testo e in alcuni tipi di immagine. **Script di aiuto** (cartella `scripts/`): | Script | A cosa serve | |---|---| | `thumbnail.py` | griglia di miniature con etichette; ogni presentazione deve avere un prefisso suo, così le griglie non si sovrascrivono | | `add_slide.py` | duplica slide o layout e gestisce da solo la contabilità interna del pacchetto | | `clean.py` | toglie slide, immagini e relazioni non più referenziate; va lanciato quando l'elenco delle slide è definitivo | | `validate.py` | controlla schema, relazioni, tipi di contenuto e grafici; con `--original` per le presentazioni nate da un modello | | `soffice.py` | avvolge LibreOffice per la conversione senza interfaccia | **Controllo di qualità**, in quattro passi: 1. controlla il contenuto con markitdown: testo mancante, refusi, segnaposto dimenticati; 2. esegue la validazione (con `--original` se parte da un modello); 3. converte in PDF e poi in immagini JPEG e ispeziona ogni slide: bordi, sovrapposizioni, spaziatura, allineamento, contrasto; 4. dopo le correzioni rigenera PDF e immagini dal file modificato e ricontrolla solo le slide cambiate. ### Regole per modificare - prima tutte le modifiche strutturali (aggiungere, togliere, riordinare), poi i contenuti, perché duplicare una slide ne copia lo stato attuale; - le slide non si copiano a mano, ma con `add_slide.py`; - l'XML si legge con `defusedxml.minidom` e non con `ElementTree`, per non perdere gli spazi dei nomi; - gli spazi non usati di un modello vanno rimossi del tutto, con le immagini che contengono; - un paragrafo per ogni voce di elenco, con i puntini ereditati dal layout. ### Trappole di pptxgenjs che la skill segnala - imposta il layout prima di aggiungere le slide: quello predefinito è 10" × 5,625", non il formato panoramico; - colori esadecimali senza `#` e senza cifre di trasparenza, altrimenti il file si corrompe; - non riusare gli stessi oggetti di opzioni tra le chiamate, perché la libreria li modifica; - gli scostamenti delle ombre non possono essere negativi; - si usa `charSpacing`, non `letterSpacing`; - gli elenchi puntati con l'opzione `bullet`, non con caratteri letterali; - un'istanza del generatore per ogni file di uscita; - niente sfumature: si usa un'immagine con la sfumatura; - i grafici restano nativi (quelli in pila non accettano le etichette `outEnd`; i grafici combinati con assi secondari richiedono due voci per `valAxes` e `catAxes`); - non riordinare mai i figli di ``; - validare dopo ogni generazione e correggere il problema nel generatore, non nel file. ### Indicazioni di design - una palette adatta all'argomento, con un colore dominante e un accento deciso; - un elemento visivo per slide (immagine, grafico, icona, forma) e layout vari; - caratteri sicuri per il corpo del testo (Arial, Calibri, Cambria, Times New Roman e simili); - titoli da 36-44 pt, intestazioni di sezione da 20-24 pt, testo da 14-16 pt, didascalie da 10-12 pt; - margini di almeno 0,5" e distanze di 0,3-0,5"; - da evitare: righe decorative sotto i titoli, barre o strisce colorate, sfondi color crema, testo centrato nel corpo, testo che esce dalla forma. ### Da sapere - **Requisiti:** Node.js con pptxgenjs, Python con markitdown, Pillow, defusedxml e lxml, LibreOffice e Poppler (`pdftoppm`). La skill indica anche react-icons, react, react-dom e sharp tra i pacchetti usati (per le icone). pptxgenjs è dato come già installato nell'ambiente previsto. - **Script eseguiti:** i cinque della cartella `scripts/`, più i comandi di LibreOffice e `pdftoppm`. Non ho letto i file Python: GitHub non mostrava il contenuto di `scripts/`. - **Nessun accesso esterno** dichiarato: lavora sui file locali. - **Qualità del risultato:** il controllo è visivo e lo fa il modello guardando le immagini; non sostituisce una rilettura tua. ## Installazione ### Claude Code e Codex ```bash npx skills add anthropics/skills --skill pptx -g -a codex -a claude-code ``` | Opzione | Significato | |---|---| | `--skill pptx` | installa solo questa skill del repository | | `-g` | installazione globale (`~/.claude/skills/`, `~/.codex/skills/`); senza, solo nel progetto corrente (`.claude/skills/`, `.agents/skills/`) | | `-a ` | agente di destinazione, ripetibile (`claude-code`, `codex`, ...) | | `-y` | salta le domande di conferma | | `--copy` | copia i file invece di creare collegamenti simbolici | Non ho trovato il comando esatto sulla pagina di skills.sh: è la forma standard dello strumento `skills`, la stessa usata per le altre schede. Alternativa solo per Claude Code, dal marketplace di Anthropic (installa tutte le skill per i documenti: `docx`, `pdf`, `pptx`, `xlsx`): ```text /plugin marketplace add anthropics/skills /plugin install document-skills@anthropic-agent-skills ``` Dopo l'installazione riavvia la sessione. Claude Code la usa da solo quando la richiesta è pertinente. In Codex la richiami con `$pptx` o la vedi con `/skills`. Gestione: ```bash npx skills list -g # skill installate npx skills update pptx # aggiornamento npx skills remove pptx # rimozione ``` ```text /plugin uninstall document-skills@anthropic-agent-skills # rimozione del plugin ``` ### App desktop di Claude e ChatGPT Queste app richiedono di caricare la skill come ZIP. Preparalo così: ```bash git clone --depth 1 https://github.com/anthropics/skills.git cd skills/skills && zip -r ~/pptx.zip pptx ``` Lo ZIP deve contenere la cartella `pptx/` con dentro `SKILL.md` e la cartella `scripts/`. **Claude (desktop o web)** 1. Attiva l'esecuzione del codice in **Settings → Capabilities**. 2. Vai in **Customize → Skills → + → Create skill → Upload a skill** e scegli lo ZIP. 3. Attiva l'interruttore della skill. **ChatGPT (desktop o web)** 1. Vai in **Skills** nella barra laterale, poi **Create → Upload from your computer**, e scegli lo ZIP o la cartella. 2. Attendi l'analisi di sicurezza di ChatGPT. 3. Richiamala con `@` nella chat. Le skill personali caricate su desktop e web non si sincronizzano: vanno caricate su ciascuna. > **Limite:** nelle app di chat la skill gira in un ambiente isolato con esecuzione del codice. Funziona solo se lì sono disponibili pptxgenjs, LibreOffice e Poppler (non l'ho verificato), e legge solo i file che alleghi alla conversazione. Il README del repository dice che le skill di esempio sono già disponibili sui piani a pagamento di Claude.ai, ma non specifica se `pptx` sia tra queste. ## Fonti - [README di anthropics/skills](https://github.com/anthropics/skills) - [SKILL.md di pptx](https://github.com/anthropics/skills/blob/main/skills/pptx/SKILL.md) - [Cartella skills/pptx](https://github.com/anthropics/skills/tree/main/skills/pptx) - [pptx su skills.sh](https://skills.sh/anthropics/skills/pptx) - [Use skills in Claude – Claude Help Center](https://support.claude.com/en/articles/12512180-use-skills-in-claude) - [Skills in ChatGPT – OpenAI Help Center](https://help.openai.com/en/articles/20001066-skills-in-chatgpt)