Skip to content
Back to skills

Esporta Documento Capazme

ASecurity

Esporta un deliverable legale (parere, informativa privacy, DPA, DPIA, registro trattamenti, parcella, atto, analisi giurisprudenziale) in un file Word (.docx) e/o PDF nella cartella attiva. Usa quando l'utente chiede di "esporta in word", "esporta in pdf", "salva il documento", "genera docx", "genera pdf", "metti in word", oppure "informativa/DPA/parere/parcella in word/pdf". Lavora sul markdown del documento gia' prodotto nella conversazione, oppure sul campo "testo" restituito da un tool (...

  • 85 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 8, 2026
ai-agentspythongobashnodegit

Works with

  • cli
  • mcp

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 8, 2026

npx -y skills add ThomasMoreAI/legal-skills-open --skill esporta-documento-capazme --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Esporta Documento Capazme?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Esporta Documento Capazme
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thomasmoreai-esporta-documento-capazme/badge)](https://www.skillsdirectory.com/skills/thomasmoreai-esporta-documento-capazme)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: esporta-documento-capazme
title: esporta-documento — Word/PDF di un deliverable legale
description: Esporta un deliverable legale (parere, informativa privacy, DPA, DPIA, registro trattamenti, parcella, atto, analisi giurisprudenziale) in un file Word (.docx) e/o PDF nella cartella attiva. Usa quando l'utente chiede di "esporta in word", "esporta in pdf", "salva il documento", "genera docx", "genera pdf", "metti in word", oppure "informativa/DPA/parere/parcella in word/pdf". Lavora sul markdown del documento gia' prodotto nella conversazione, oppure sul campo "testo" restituito da un tool (es. genera_informativa_privacy, genera_dpa).
author: capazme
author_url: https://github.com/capazme/mcp-legal-it/tree/main/plugin/skills/esporta-documento
license: Apache-2.0
version: 0.1.0
execution_mode: open
jurisdiction: it
practice: general
language: it
sources:
- title: Mapping
  path: references/mapping.md
---

# esporta-documento — Word/PDF di un deliverable legale

## Scopo

Rendere un deliverable testuale gia' prodotto (un parere, un'informativa privacy, un DPA,
una DPIA, un registro trattamenti, una parcella, un atto, una sintesi giurisprudenziale)
in un file **.docx** e/o **.pdf** salvato nella **cartella attiva**, applicando — quando
disponibile — il canone tipografico dello Studio SAPG (Times New Roman 12, interlinea 1,5,
rientro prima riga 0,5 cm, corpo giustificato).

Lo skill NON richiama alcun tool MCP: si limita a invocare due script locali via Bash.
La generazione del contenuto (il parere, l'informativa, ecc.) avviene PRIMA, con i tool o
le skill appropriate; questo skill prende quel testo e lo trasforma in un file consegnabile.

## Quando usare lo skill

- L'utente chiede esplicitamente di **esportare / salvare** un documento in Word o PDF.
- Al termine di un workflow (`/parere`, `/giurisprudenza`, `/compliance`, oppure le skill
  `parere-legale`, `analisi-giurisprudenziale`, `compliance-privacy`) quando l'utente vuole
  il deliverable come file.
- L'utente ha appena ricevuto da un tool un dict con un campo `testo`
  (es. `genera_informativa_privacy`, `genera_dpa`, `genera_dpia`,
  `genera_registro_trattamenti`, `genera_notifica_data_breach`) e vuole il file finito.

## Sorgente del contenuto

Due casi, entrambi gestiti dallo stesso flusso:

1. **Markdown dal transcript** — il documento e' gia' stato scritto nella conversazione
   come testo markdown. Riusa quel markdown tale e quale.
2. **Campo `testo` di un tool** — un tool GDPR/Privacy ha restituito un dict
   `{"testo": "...", ...}`. Estrai il valore di `testo` (e' gia' markdown/testo formattato)
   e usalo come contenuto.

In entrambi i casi: scrivi il contenuto in un file markdown temporaneo con lo strumento
`Write`, poi passalo agli script con `--input`. In alternativa puoi passarlo via stdin.

## Cartella attiva (active folder)

Il file viene scritto nella **cartella attiva**, cioe' la **directory di lavoro del processo**
(`process.cwd()` / `os.getcwd()`). L'utente puo' forzare una cartella diversa con `--dir`.
Lo script stampa su stdout il **path assoluto** del file creato: riportalo SEMPRE all'utente.

- Se l'utente non indica una cartella → si usa la cwd corrente (la "cartella attiva" di Cowork).
- Se l'utente indica una cartella (es. "salva in ~/Documenti/Clienti/Rossi") → passa `--dir <percorso>`.
- La cartella viene creata se non esiste (`mkdir -p` implicito).

## Nome del file (slug)

Il nome del file e' uno **slug**: minuscolo, accenti rimossi, spazi e simboli → trattino,
max 80 caratteri (es. "Parere — Responsabilità medica" → `parere-responsabilita-medica.docx`).
Lo slug deriva, in ordine di priorita': `--slug` esplicito → `--title` → primo titolo H1 del
markdown → `documento`. Per controllare il nome finale, passa `--slug`.

## Formato di output

- **Word (.docx)** — formato primario per la consegna allo studio/cliente; applica il canone
  SAPG (titoli numerati, corpo giustificato con rientro, tabelle, citazioni in blocco corsive).
- **PDF (.pdf)** — formato di sola lettura; resa essenziale con font built-in fpdf2.

Se l'utente non specifica il formato, **genera entrambi** (.docx + .pdf) e riporta i due path.
Se chiede solo Word o solo PDF, esegui solo lo script corrispondente.

## Esecuzione

### Word (.docx)

`docx-js` e' installato globalmente, quindi serve `NODE_PATH` puntato alle node_modules globali:

```bash
NODE_PATH=$(npm root -g) node \
  "${CLAUDE_PLUGIN_ROOT}/skills/esporta-documento/scripts/render_legal_docx.js" \
  --input /percorso/deliverable.md \
  --title "Parere — responsabilità medica" \
  --slug parere-rossi \
  --dir /cartella/attiva
```

oppure via stdin (utile per il campo `testo` di un tool, senza file temporaneo):

```bash
printf '%s' "$CONTENUTO_MARKDOWN" | NODE_PATH=$(npm root -g) node \
  "${CLAUDE_PLUGIN_ROOT}/skills/esporta-documento/scripts/render_legal_docx.js" \
  --title "Informativa Privacy art. 13 GDPR"
```

### PDF (.pdf)

Serve un Python 3.12 con `fpdf2`; il system python NON funziona. Usa `uv`, che il
plugin richiede gia' come prerequisito:

```bash
uv run --python 3.12 --with "fpdf2>=2.7" python \
  "${CLAUDE_PLUGIN_ROOT}/skills/esporta-documento/scripts/render_legal_pdf.py" \
  --input /percorso/deliverable.md \
  --title "Parere — responsabilità medica" \
  --slug parere-rossi \
  --dir /cartella/attiva
```

Entrambi gli script stampano su stdout SOLO il path assoluto del file generato (oppure
`FAIL: ...` su stderr con exit code 1 se manca il contenuto). Cattura quel path e mostralo
all'utente come conferma di consegna.

## Canone SAPG vs fallback

`render_legal_docx.js` tenta un `require` di `~/.claude/skills/docx-sapg/assets/sapg_styles.js`:

- **Modulo presente** → applica il canone SAPG completo (stili `SAPGHeading1/2/3`, `SAPGBody`,
  `SAPGQuote`, numerazione titoli multilivello 1. / 1.1 / 1.1.1, pagina A4, margini 1 inch).
- **Modulo assente** → fallback "plain" con gli stessi valori tipografici di base
  (Times New Roman 12, interlinea 1,5, rientro 0,5 cm, giustificato) ma senza la numerazione
  multilivello degli heading. Nessun errore: lo skill funziona comunque.

Il PDF non usa il canone SAPG (font built-in fpdf2 = Helvetica): e' una resa di lettura, non
il deliverable tipografico finale. Per la consegna formale usa sempre il .docx.

## Mappatura markdown → blocchi

La corrispondenza completa fra blocchi markdown e blocchi docx/pdf, le regole di slug e di
cartella attiva, e i casi limite sono in **`references/mapping.md`**.

## Dipendenze

- `node` con il pacchetto globale `docx` (`npm install -g docx`) — per il .docx.
- `uv` con `fpdf2` — per il .pdf. Senza `uv`, la venv che `start_server.sh` crea
  al primo avvio va bene: `"${MCP_CACHE_DIR:-$HOME/.cache/mcp-legal-it}/venv/bin/python"`.
- (Opzionale) `~/.claude/skills/docx-sapg/assets/sapg_styles.js` per il canone SAPG;
  in sua assenza il .docx usa il fallback plain.
- **Niente LibreOffice** (non installato): il PDF e' generato direttamente con fpdf2, non per
  conversione da .docx.

Lo skill non installa nulla. Se `docx` globale manca: `npm install -g docx`.

## Risorse

- **`scripts/render_legal_docx.js`** — markdown → .docx (canone SAPG con fallback plain).
- **`scripts/render_legal_pdf.py`** — markdown → .pdf (fpdf2, font built-in).
- **`references/mapping.md`** — mappatura blocchi markdown → docx/pdf, regole slug e cartella attiva.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.