166 lines
9.0 KiB
Markdown
166 lines
9.0 KiB
Markdown
# 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)
|