Una skill per linkare le norme italiane con Normattiva.it: costruita con il vibe coding
Quello che stai per leggere è un articolo scritto grazie all’IA: ad un LLM, in particolare Claude Sonnet 4.6. Fa parte di un esperimento di cui ti parlerò più avanti su queste pagine ma, per ora, mi interessa solo segnalarti la cosa.
Se il documento è scritto (prevalentemente) dall’IA, quello che stai leggendo tuttavia nasce dalla mio pensiero; l’IA l’ha eseguito al mio posto ed “impersonandomi” (usando la mia “voce”).
Qui trovi l’articolo originale generato completamente dall’IA, l’ultima revisione è la mia e qui trovi la versione che stai leggendo ma con annotate le parti mie e quelle dell’IA.
Ultima nota prima di iniziare: ho revisionato questo articolo con iAWriter ed utilizzando le funzioni di Authorship.
Se ti interessa solo la skill la puoi scaricare da qui.
Ho passato anni a dire ai colleghi che usare bene la tecnologia significa non fare mai due volte la stessa cosa stupida. Poi un giorno mi sono accorto che costruivo a mano i link a Normattiva.it ogni volta che scrivevo un documento con riferimenti normativi; copiavo la data di emanazione, cercavo di ricordarmi che il codice civile è l'allegato 2 del R.D. 262/1942, di non dimenticare il ; prima del numero.
David Sparks chiama questo genere di attività donkey work: lavoro da mulo… meccanico, ripetitivo, che non aggiunge nessun valore intellettuale.
Creare i link a Normattiva ha un secondo motivo, tutto pratico: come ti ho già spiegato nei miei articoli sugli atti telematici avanzati, i link iper-testuali ai riferimenti normativi sono uno dei requisiti che ti permettono di ottenere l'aumento del 30% sulla liquidazione del compenso professionale.
In questo mese ho sperimentato molto con l’IA per automatizzare la mia attività lavorativa e così ho fatto quello che avrei dovuto fare da subito: ho provato a creare una skill per Claude che genera questi link in automatico e ci sono riuscito!
In questo articolo ti racconto cos'è una skill di Claude, come funziona, come l'ho costruita progressivamente — prima con Perplexity, poi con Claude Cowork — senza scrivere una riga di codice e come l’ho utilizzata in sistemi differenti da Claude.
1. Normattiva.it e il sistema URN-NIR
Normattiva.it è il portale ufficiale della normativa italiana, gestito dalla Presidenza del Consiglio dei Ministri. Non è solo un motore di ricerca delle leggi: è una banca dati con URL stabili e permanenti per ogni singolo articolo di ogni norma italiana — dalle leggi ai decreti legislativi, dalla Costituzione ai codici storici.
Il sistema che rende possibile tutto questo si chiama URN-NIR (Uniform Resource Name – Norme In Rete), uno standard definito originariamente dal CNIPA (oggi AgID). Ogni norma ha un identificatore univoco che non cambia nel tempo, costruito seguendo una struttura precisa.
Un link a Normattiva ha questa forma:
https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:{tipo}:{data};{numero}~art{N}
Per esempio, l'art. 2043 del codice civile diventa:
https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:regio.decreto:1942-03-16;262:2~art2043
1.1 La trappola dei “grandi” codici
I grandi codici italiani — civile, penale, procedura civile, legge fallimentare — furono approvati nel periodo pre-repubblicano come allegati numerati di Regi Decreti. Questi codici sono anche quelli più utilizzati abitualmente nei documenti legali. Sono anche quelli con una particolarità specifica: nell'URN bisogna indicare anche il numero dell'allegato, dopo il numero del decreto, separato da :.
Codice R.D. Allegato Codice civile R.D. 262/1942 :2 Cod. proc. civile R.D. 1443/1940 :1 Codice penale R.D. 1398/1930 :1 Legge fallimentare R.D. 267/1942 :1
Se ometti il numero allegato, il link porta irrimediabilmente al primo articolo del Regio Decreto originale — non al numero specifico dell’articolo del codice indicato. È un errore che si fa facilmente se non si conosce questa particolarità ed è la prima grossa barriera nell’utilizzo di Normattiva.it da parte dell’avvocato inesperto.
1.2 La data di emanazione, non quella della G.U.
La data nell'URN è quella di emanazione dell'atto — quando il provvedimento è stato firmato — non quella di pubblicazione in Gazzetta Ufficiale. Possono differire di giorni o settimane. Usare la data sbagliata genera un link rotto. Inoltre, raramente ci si ricorda della data specifica di una Legge, quindi creare i link a memoria è praticamente impossibile.
Normattiva mette già a disposizione un parser normativo incorporato nel portale, che analizza testi giuridici e trasforma i riferimenti in link URN. Il problema è che funziona solo sul sito — non è qualcosa che puoi integrare nel tuo flusso di lavoro esterno.
2. Il donkey work: perché costruire questi link a mano è un problema
Il termine donkey work — letteralmente "lavoro da mulo" — è usato da David Sparks (MacSparky) per descrivere tutto il lavoro attorno al lavoro vero: smistare email, riorganizzare task, fare data entry ripetitivo. Attività meccaniche che non richiedono intelligenza ma che consumano tempo e, soprattutto, attenzione.
Se ti interessa approfondire l’argomento ti segnalo questo suo post in inglese e questa puntata del podcast Focused (sempre in inglese).
Costruire a mano i link URN per ogni riferimento normativo in un atto o in un parere per me è lavoro da mulo (donkey work). Il processo richiede di identificare il tipo di atto, trovare la data esatta di emanazione, inserire il numero corretto, ricordarsi, nel caso sia un “grande” codice del numero allegato, comporre la stringa URN senza errori di sintassi, e testare che il link funzioni.
Nel concreto io vado su Normattiva.it, cerco il Codice o la legge e poi copio l’URN di base e poi aggiungo l’articolo a mano (ad esempio ~art2043). Ma è un lavoro tedioso.
In un atto con venti o trenta citazioni normative, questo giro si ripete decine di volte. Non c'è nulla di altamente professionale.
2.1 Comandi Rapidi in soccorso
Trovo che inserire i riferimenti normativi nei miei atti sia una buona prassi, oltre che potenzialmente utile per far riconoscere il 30% in più in giudizio.
Infatti i link rendono più semplice e fruibile anche all’utente inesperto l’accesso alle norme e, secondariamente, permettono di far conoscere il servizio di Normattiva.it che, secondo me, dovrebbe essere diventare un progetto conosciuto ai tecnici (avvocati, commercialisti, etc…) e non.
Nel 2023 mi ero già dedicato ad automatizzare e spiegare il sistema (un po astruso bisogna dirlo) di Normattiva in questa Office Hour ma Comandi Rapidi è disponibile solo nella “gabbia dorata” di Apple.
Così mentre stava facendo generare una ricerca alla IA mi è balenata l’idea della skill…
3. Cosa sono le skill di Anthropic?
Veniamo quindi al cuore dell’articolo: cosa sono le skill di Anthropic?
Una skill (nel senso che usa Anthropic) è una directory su filesystem con un file SKILL.md che contiene istruzioni strutturate per un task specifico. Quando Claude legge una skill prima di rispondere, acquisisce quelle istruzioni e le applica — come un assistente che consulta un manuale di procedura prima di fare un lavoro.
La differenza rispetto a un prompt in chat si vede nell'uso quotidiano. Un prompt in chat dura una conversazione e poi sparisce. Una skill invece è un file: vive su disco, la puoi modificare, versionarla in git, passarla a un collega. Claude si comporta allo stesso modo ogni volta che la invoca. Se cambio le istruzioni nel file, cambia il comportamento in tutte le sessioni future — senza dover riscrivere niente.
Un altro aspetto utile è la modularità. Il contesto della skill arriva solo quando la skill viene invocata, non appesantisce ogni conversazione. Anthropic ha un repository pubblico di skill su GitHub — il concetto viene dalla tradizione degli strumenti professionali: come un modello di atto o uno stencil per i brief, la skill codifica le best practice una volta sola.
La skill che ho creato si chiama normattiva. Il suo compito è semplice: ogni volta che Claude produce un testo con riferimenti normativi italiani, genera automaticamente i link a Normattiva.it al posto delle citazioni nude.
4. Come l'ho costruita: vibe coding con Perplexity e Claude
Il termine vibe coding è stato coniato da Andrej Karpathy — co-fondatore di OpenAI — nel febbraio 2025. La definizione originale:
> ”there's a new kind of coding I call 'vibe coding', where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.”
ovvero in italiano: C'è un nuovo tipo di scrittura del codice che chiamo “vibe coding”, in cui si cede completamente alle vibrazioni, si abbracciano gli esponenziali e si dimentica che il codice esiste.
Il termine è entrato nel Collins English Dictionary come Word of the Year 2025.
Di solito si parla di vibe coding in riferimento al software tradizionale. Nel mio caso non si trattava di scrivere codice Python o Swift, ma il principio è lo stesso: ho descritto in linguaggio naturale quello che volevo ottenere, ho iterato finché il risultato era giusto, e non ho mai aperto un editor di codice.
4.1 Prima fase: la ricerca con Perplexity
Ho iniziato con Perplexity: ho l’abbonamento a questo servizio di ricerca aumentato con IA da Settembre 2025 ed ormai lo padroneggio professionalmente.\
Ho imparato ad hackerare Perplexity per permettermi di creare in modo semplice una prima soluzione e “risparmiare” tokens.
Il mio primo prompt è stato il seguente:
Sei programmatore, un esperto di Claude Code. Ragiona passo passo e segui un filo logico.
Esamina il funzionamento di Normattiva.it, in particolare degli
UNR https://www.normattiva.it/staticPage/guidaAllUso_Normattiva.
Fatto uno studio approfondito del funzionamento, crea una skill
per Claude https://github.com/anthropics/skills che permetta di
inserire i link ai riferimenti normativi italiani usando normattiva come da specifiche.
Esempio di collegamento a norma:
- [art. 2028 c.c.](https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:regio.decreto:1942-03-16;262:2~art2048)
- [art. 83 c.p.c.](https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:regio.decreto:1940-10-28;1443:1~art83)
Di seguito vedi il risultato del mio prompt.
Immagine dell’interfaccia di Perplexity e realizzazione file skill.md
Ne è uscita una prima versione del file SKILL.md — funzionante, ma non ottimizzata. Un unico file lungo con tutte le tabelle, tutti i casi, tutte le eccezioni. Caricava molto contesto a ogni invocazione.
4.2 Seconda fase: la strutturazione con Claude Cowork
Ho fatto l’abbonamento Pro (quello da 22 € mese per intenderci) a Claude di Anthropic a Marzo 2026 e, dopo un mese di “prova”, ho deciso di fare quello annuale.
Proprio mentre passavo all’abbonamento annuale Anthropic ha gentilmente deciso di limitare (ulteriormente) il suo utilizzo per i clienti Pro. Sono quindi molto attento ai tokens che utilizzo nelle mie sessioni con le varie sfaccettature di Claude: per me prevalentemente Claude Cowork e Claude Code.
È proprio per questo motivo che ho fatto fare il lavoro “sporco” prima a Perplexity.
Ho passato, quindi, il materiale a Claude Cowork con una richiesta precisa: ristrutturare la skill applicando il principio di progressive disclosure — di cui ti parlo nella sezione successiva — per ridurre il consumo di token senza perdere precisione nei risultati.
Esempio della skill in Claude Cowork
Il risultato è una skill in due file:
SKILL.md— regole essenziali, tabella di lookup rapida con le norme più citate, workflow in tre passilookup-extended.md— tabella completa, tipi di atto rari, note sugli allegati, errori comuni
Il file principale è snello. Il file esteso viene letto solo quando serve.
5. La skill ottimizzata: progressive disclosure
La progressive disclosure è un principio di UX design formulato da Carroll e Rosson all'IBM nel 1983. L'idea: mostra prima solo le informazioni essenziali, e rivela i dettagli solo quando — e solo se — servono davvero.
Applicata al design di una skill per LLM, la logica è identica. Un LLM legge il file SKILL.md intero ogni volta che la skill viene invocata: se il file è lungo, consuma molti token. La soluzione è strutturare il contenuto in livelli:
- Livello 1 (SKILL.md): regole fondamentali + tabella rapida delle norme più frequenti (c.c., c.p.c., c.p., Costituzione, i D.Lgs. più usati). Per il 90% dei casi, basta questo.
- Livello 2 (lookup-extended.md): tutto il resto — tipi di atto rari, tabella completa, note sugli allegati, errori comuni. Viene letto solo se la norma cercata non è nella tabella rapida.
Il workflow nella skill è esplicito: se la norma è nella quick lookup, genera subito il link; se non c'è, vai a leggere il file esteso (punto 1 immagine sottostante).
Esempio di progressive disclosure nella skill
Come ti dicevo, Anthropic è molto “avara” con l’uso dei tokens, per questo motivo, oltre ad ottimizzare la skill con il grogressive disclosure ho fatto dei test con Haiku (il modello più leggero e meno costoso di Anthropic) e, dopo aver confermato che gestisce la skill correttamente, ho implementato una ulteriore opzione: la skill come sub-agent (punto 2 immagine soprastante).
Infatti, per i documenti con molte citazioni normative: la skill prevede di delegare la generazione dei link a un subagente con il modello Haiku — più piccolo e veloce — invece di usare il modello principale. Il modello principale rimane libero per i ragionamenti complessi, questa skill infatti è utile a se stante ma molto di più in congiunzione con la generazione di documenti da parte dell’LLM.
In futuri articoli ti racconterò di come uso Claude Cowork per abbozzare gli atti assieme all’MCPBuddaLaw.
Il lavoro meccanico di costruzione degli URN, così, viene scaricato su un modello più leggero. Stesso principio: usa le risorse giuste per il task giusto.
Qui ho pubblicato la skill: ho creato un repository su GitHub per condividere questa e future skill nel mondo legale.
6. Usare la skill negli Spazi di Perplexity e in qualsiasi sistema RAG
Dopo aver creato la skill, ho scoperto che si può usare anche fuori da Claude; in particolare in qualsiasi sistema che supporti documenti allegati come fonte di conoscenza.
Il meccanismo è semplice: alleghi il file SKILL.md come documento allo Spazio di Perplexity o al tuo sistema RAG (ad esempio OpenWeb UIhttps://docs.openwebui.com/), e nel system prompt istruisci il modello a consultarlo ogni volta che deve citare riferimenti normativi. Il modello applica le regole della skill come se fossero sue.
Nel video qui sotto puoi vedere come funziona in pratica: Perplexity produce i link URN corretti a Normattiva.it semplicemente perché ha il file SKILL.md a disposizione.
Lo stesso approccio funziona con NotebookLM (anche se può essere limitato se non esegue le ricerche online delle norme – da cui vengono estrapolate i dati per generare l’URN). Teoricamente questa “skill” funziona anche con gli spazi documentali di sistemi specializzati legali come Lexroom, BuddaLaw o DIKAIA o similare, e con qualsiasi altro sistema che consenta di allegare file e personalizzare il system prompt.
Il file diventa un modulo portabile: lo prepari una volta e lo alleghi dove ti serve.
Ovviamente questo principio non si applica solo alla mia skill, ma a qualsiasi skill. È uno dei corollari più interessanti e meno utilizzati delle capacità linguistiche degli LLM.
È il mio hack che ti regalo.
In conclusione
Ho costruito la versione iniziale della skill in un pomeriggio con Perplexity, l'ho ottimizzata con Claude Cowork applicando il principio di progressive disclosure, e adesso la uso sia in Claude che negli Spazi di Perplexity. Il mio sistema genera i link URN corretti a Normattiva.it senza che io debba pensarci, e nei documenti per il PCT mi aiuta a soddisfare uno dei requisiti per poter richiedere la maggiorazione del 30% sul compenso professionale. Win win!
Il vibe coding — inteso come "descrivere in linguaggio naturale quello che vuoi all’LLM ed iterare finché funziona" — è una di quelle cose che all'inizio sembrano “cose da programmatore”, lontane dal mondo legale, spero con questo articolo di averti dimostrato il contrario.
Usando il vibe coding non è necessario saper scrivere codice. È necessario saper descrivere con precisione cosa si vuole ottenere; come avvocati dovremmo essere in grado di farlo.
Come sempre, se ti è piaciuto quel che hai letto o visto e non l'hai già fatto, ti suggerisco di iscriverti alla mia newsletter. Ti avvertirò dei nuovi articoli che pubblico (oltre ai podcast e video su YouTube) e, mensilmente, ti segnalerò articoli che ho raccolto nel corso del mese ed ho ritenuto interessanti.