Files
my-skills/skills/pptx.md
T

166 lines
9.0 KiB
Markdown
Raw Normal View History

# 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 `<p:presentation>`;
- 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>` | 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)