Salta al contenuto
28/30Capitolo 28 di 30

Agent Skills e SKILL.md: disclosure progressiva, misurata

Cinque skill reali con 128.374 token di istruzioni occupano 253 token di context. Riduci le descrizioni e l’agent non le trova più.

In questa pagina

Prendi un progetto con cinque skill pubblicate installate. Ecco quanto costano.

terminalBASH
ls .claude/skills/
TEXT
next-best-practices  next-cache-components  vercel-composition-patterns
vercel-react-best-practices  vercel-react-native-skills
o200k_base tokens, measuredTEXT
skill                              level 1   level 2    level 3   files
next-best-practices                     40       966     19,374      19
next-cache-components                   28     2,334          0       0
vercel-composition-patterns             59       533     10,667      13
vercel-react-best-practices             68     1,670     53,670      75
vercel-react-native-skills              58       950     37,957      41
                                    ------   -------   --------
total                                  253     6,453    121,668

Centoventottomila token di istruzioni, esempi e regole — più di quanto entri in una context window da 128.000 token — e il costo fisso per avere tutte e cinque disponibili è 253 token, due decimi dell’uno per cento. Nient’altro in questo corso ha questa forma. La definizione di uno strumento si paga a ogni richiesta, che venga usato oppure no, e il Capitolo 26 ha misurato un server MCP a 1.619 token prima ancora che faccia qualunque cosa: trentadue volte la riga media di livello 1 nella tabella sopra.

Questo capitolo parla del meccanismo che produce quel rapporto, dei due modi in cui si rompe, e della domanda che il meccanismo impone e a cui quasi nessuno risponde: dato un pezzo di conoscenza, in quale dei quattro posti deve stare.

Perché questo capitolo non ha un linguaggio di programmazione

Link alla sezione: Perché questo capitolo non ha un linguaggio di programmazione

Il Capitolo 14 ha fissato la regola per la seconda metà di questo corso — connessioni, retry e cancellazione sono TypeScript — e ha dichiarato cinque eccezioni. Questa è una di quelle, e il motivo non è una preferenza.

Una skill è un file Markdown. Non un file che configura un programma, non un file che un programma compila: un documento che il modello legge, nello stesso modo in cui legge il messaggio che hai scritto. Dare a questo capitolo un linguaggio di programmazione significherebbe non aver capito il formato, e questo fraintendimento è il più comune sulle skill. Tutto qui sotto è Markdown e YAML, più un piccolo script shell che esiste proprio per mostrare dove il codice deve e non deve stare dentro una skill.

Il conto che risolve, ed è l’aritmetica del Capitolo 16

Link alla sezione: Il conto che risolve, ed è l’aritmetica del Capitolo 16

Ecco un’istruzione reale: come un’azienda scrive le sue note di rilascio. È una procedura, non una preferenza — ha una sequenza ordinata di passaggi, una tassonomia, una voce, un template e uno script che raccoglie il materiale grezzo.

Metti tutto nel system prompt, come fanno quasi tutti i team, e l’aritmetica del Capitolo 16 prende il controllo. Un system prompt è un prefisso, e un prefisso si paga a ogni chiamata. Misurato con o200k_base sulla cartella scritta per questo capitolo:

the same instruction, two ways, 40 turnsTEXT
whole thing pasted into the system prompt   1,716 x 40  =  68,640 input tokens   $0.1373
as a skill, activated once on turn 12          46 x 40
                                            + 324 (SKILL.md body)
                                            + 665 (two reference files read)
                                                        =   2,829 input tokens   $0.0057
as a skill, never activated at all             46 x 40  =   1,840 input tokens   $0.0037

Ventiquattro volte più economico quando viene usata, trentasette volte più economico quando non viene usata. Le tariffe sono quelle del Capitolo 16: $2,00 per milione di token in input.

Ora l’obiezione onesta, perché un capitolo che la saltasse sarebbe pubblicità. Il prompt caching chiude quasi del tutto il divario economico. Un system prompt è stabile e sta all’inizio, il che lo rende il miglior candidato possibile per la cache; a $0,20 per milione per input in cache, gli stessi 68.640 token costano $0,0168 invece di $0,1373. Ancora tre volte la skill, ma non più un ordine di grandezza diverso.

Il denaro non è mai stato l’argomento più forte. Questo lo è:

Il caching rende più economico un prefisso permanente. Non lo rende più piccolo.

Al turno 40 la versione con system prompt ha ancora 1.716 token di policy sulle note di rilascio dentro la finestra durante una conversazione su tutt’altro, in competizione per ciò che il Capitolo 24 ha chiamato il budget di attention del modello. La versione con skill ne ha 46. Metti in cache la cosa sbagliata e hai comprato uno sconto su una distrazione.

Scritta come formula, con nn turni, L1L_1 i metadati, L2L_2 il corpo, L3L_3 l’intero bundle e RR l’insieme dei file inclusi effettivamente letti:

system prompt=n(L1+L2+L3)skill=nL1+1[used](L2+iRL3(i))\text{system prompt} = n\,(L_1 + L_2 + L_3) \qquad \text{skill} = n\,L_1 + \mathbb{1}[\text{used}]\left(L_2 + \sum_{i \in R} L_3^{(i)}\right)

Tutto questo capitolo è la differenza tra moltiplicare il secondo termine per nn e moltiplicarlo per uno o per zero.

Una skill è una directory. La specifica è abbastanza breve da poterla enunciare per intero:

the whole formatTEXT
release-notes/
├── SKILL.md          # required: YAML frontmatter + Markdown instructions
├── scripts/          # optional: executable code
├── references/       # optional: documentation read on demand
├── assets/           # optional: templates, schemas, examples
└── ...               # anything else you like

SKILL.md deve iniziare con YAML frontmatter, e sono richiesti esattamente due campi: name e description.1 Altri quattro sono opzionali e non ne sono definiti altri:

CampoObbligatorioVincolo
name1–64 caratteri, lettere minuscole, cifre e trattini; nessun trattino iniziale, finale o doppio; deve corrispondere al nome della directory
description1–1024 caratteri, non vuoto; dice che cosa fa la skill e quando usarla
licensenoil nome di una licenza, o il nome di un file di licenza incluso
compatibilitynofino a 500 caratteri: prodotto previsto, pacchetti richiesti, accesso di rete
metadatanouna mappa libera da chiavi stringa a valori stringa, per i tuoi strumenti
allowed-toolsnoelenco separato da spazi di strumenti pre-approvati; marcato come sperimentale

Ecco la skill per le note di rilascio, completa, con il corpo sotto le trenta righe:

release-notes/SKILL.mdMARKDOWN
---
name: release-notes
description: Write the release notes for a tagged version in this company's house style. Use when preparing a release, drafting a changelog entry, or when someone asks for the notes for a version number or a tag.
allowed-tools: Bash(git log:*) Bash(git tag:*) Read
---

# Release notes

## Procedure

1. Run `scripts/collect.sh <previous-tag> <new-tag>`. It prints one line per merged
   pull request: number, title, author and the labels.
2. Drop every line whose labels contain `internal`, `ci` or `chore`.
3. Put each surviving line into exactly one of the four categories in
   [references/categories.md](references/categories.md). A change that seems to fit two
   belongs in the higher one; the order in that file is the order of precedence.
4. Rewrite each line as a sentence in the voice defined in
   [references/voice.md](references/voice.md). The pull request title is a note to
   the team; the release note is a note to a stranger.
5. Check the result against [references/examples.md](references/examples.md).

## The one rule that is not negotiable

Every note says what a person can now do, or what stopped happening to them. If a
sentence can only be understood by someone who has read the diff, it is not finished.

Leggi che cosa è quel corpo. Non è la policy — è un indice con un ordine operativo. La policy vive in tre file che il corpo nomina e non include. E il primo passaggio affida il lavoro a uno script, perché il codice di uno script non entra mai nella context window: entra solo il suo output.2

Il modello di caricamento ha un nome e tre fasi. La specifica le enuncia con un budget di token associato:1

  1. Metadati, circa 100 token: name e description, caricati all’avvio per ogni skill installata.
  2. Istruzioni, raccomandate sotto i 5.000 token: il corpo di SKILL.md, caricato quando la skill viene attivata.
  3. Risorse, secondo necessità: file inclusi, caricati solo quando qualcosa li richiede.

La documentazione di riferimento aggiunge una quarta colonna alla stessa tabella — quando viene caricato, costo in token, contenuto — e la riga che conta è la terza: nessuno finché non viene aperto.3 Anche la frase che riassume l’intero capitolo è lì:

Files don't consume context until accessed, so Skills can include comprehensive API documentation, large datasets, or extensive examples. There's no context penalty for bundled content that isn't used.3

La tabella misurata all’inizio di questo capitolo è quella affermazione verificata su cinque skill che nessuno ha scritto per questo articolo. Due righe meritano di essere lette una contro l’altra.

next-best-practices ha un corpo da 966 token che rimanda a diciannove file contenenti 19.374 token. Chiedigli di correggere un errore di hydration e l’agent legge il corpo più hydration-error.md: 1.409 token su 20.340, un fattore quattordici, e gli altri diciotto file non vengono mai aperti.

next-cache-components ha un corpo da 2.334 token e nessun file incluso. È una skill valida e ben scritta, e non ha un livello 3 da rivelare. Questo è il limite onesto della tecnica: la disclosure progressiva risparmia solo se c’è qualcosa da rinviare. Una skill la cui conoscenza non si scompone paga tutto il suo corpo all’attivazione, e l’unica leva rimasta è non attivarla.

Rompilo: la descrizione è tutta l’interfaccia

Link alla sezione: Rompilo: la descrizione è tutta l’interfaccia

Il livello 1 è una decisione di routing presa da una frase. Nient’altro di una skill influenza se verrà mai aperta — non la qualità del corpo, non gli esempi, non gli script. Quindi la descrizione non è documentazione. È la superficie di query, e può essere sbagliata.

La specifica lo dice sotto forma di buon esempio e cattivo esempio, e quello cattivo è di quattro parole: description: Helps with PDFs.1 Vale la pena misurarlo invece di accettarlo.

Sei skill, ciascuna con una descrizione plausibile che dice che cosa fa e quando usarla. Ventiquattro richieste, quattro per skill, formulate come le formulerebbe una persona e senza mai nominare la skill. Il modello vede le sei righe nel suo system prompt e deve rispondere con un nome o con NONE. Greedy decoding, quindi riproducibile. Poi le stesse ventiquattro richieste con le stesse sei skill, e le descrizioni ridotte al loro soggetto nudo.

the two system promptsTEXT
rich   - sql-review: Review a SQL migration for locks, missing indexes and unsafe
         defaults before it runs on the production database. Use when someone adds
         or changes a migration, an index, or a table column.
thin   - sql-review: Helps with SQL.
24 requests, Qwen2.5-0.5B-Instruct, greedy decodingTEXT
rich   295 tokens of level 1 for six skills   18/24 correct = 75.0 %  [55.1, 88.0]
thin    81 tokens of level 1 for six skills   10/24 correct = 41.7 %  [24.5, 61.2]

paired: rich only 9, thin only 1, two-sided sign test p = 0.0215
answered NONE: rich 1 of 24, thin 9 of 24

Leggi prima gli intervalli, come ha insistito il Capitolo 4 e come insisterà di nuovo il Capitolo 29: si sovrappongono, e ventiquattro casi non possono ordinare due sistemi solo sui loro aggregati. Il confronto appaiato è ciò che decide, ed è lo strumento del Capitolo 15: dei dieci casi in cui i due rami hanno discordato, nove sono andati alle descrizioni ricche e uno a quelle sottili. Questo è stabilito alla soglia abituale.

Ora leggi l’ultima riga, che è il vero risultato. Con descrizioni sottili il modello ha risposto NONE su nove richieste su ventiquattro. Non la skill sbagliata: nessuna skill. Eccone quattro, parola per parola:

TEXT
"Check this migration before I run it against production."     -> release-notes
"Will this CREATE INDEX lock writes?"                          -> NONE
"Is this ALTER TABLE safe to deploy at peak traffic?"          -> NONE
"Is 'seamless and powerful' allowed in the app store listing?" -> next-best-practices

Una skill sql-review perfetta era installata, con corpo, esempi e checklist, e non è mai stata aperta, tre volte di fila, sulle tre domande per cui era stata scritta. I livelli 2 e 3 sono irrilevanti per una skill che il livello 1 non raggiunge mai.

Il costo della correzione: 214 token, la differenza tra 295 e 81, distribuita su sei skill. Che è il risultato del Capitolo 18 che arriva dall’altro lato. Lì, cambiare solo la descrizione di uno strumento ha portato la formattazione delle date da 2 corrette su 24 a 24 su 24. Qui, cambiare solo la descrizione di una skill porta l’attivazione da 10 su 24 a 18. In entrambi i casi la correzione più economica del sistema è una frase, e in entrambi i casi la frase deve nominare il trigger e non solo il soggetto: non che cos’è la cosa, ma che cosa l’utente avrà appena detto quando si applica.

Una cautela che questo capitolo deve ai propri standard. Questo è un modello da mezzo miliardo di parametri, e un modello frontier fa routing molto meglio del 75%. Leggi il meccanismo, non la grandezza: il segnale di routing è lungo una frase qualunque sia il modello che lo legge, e nessun modello può selezionare in base a informazioni che non hai messo in quella frase.

Rompilo di nuovo: la via di fuga che costa 26.362 token

Link alla sezione: Rompilo di nuovo: la via di fuga che costa 26.362 token

Il secondo fallimento è l’opposto del primo. La skill viene trovata, i livelli sono divisi correttamente, e l’agent legge comunque tutto.

vercel-react-best-practices è una skill costruita davvero bene. Il suo corpo da 1.670 token è una tabella di priorità di otto categorie e un riferimento rapido che nomina 70 file di regole, una riga ciascuno. Le regole sono su disco accanto a esso: 70 file, il più piccolo 132 token, mediana 319, il più grande 1.052. Fai una domanda sugli import barrel e il costo onesto è il corpo più un file — sotto i 2.400 token contro un bundle di 53.670.

Poi l’ultima riga del corpo dice questo:

the final section of SKILL.mdTEXT
## Full Compiled Document

For the complete guide with all rules expanded: `AGENTS.md`

AGENTS.md è 26.362 token. Sono i 70 file di regole concatenati: la loro somma è 25.784, e la differenza sono i titoli tra loro. Quindi la skill offre all’agent una scelta tra leggere una regola mediana da 319 token e leggere lo stesso contenuto, tutto, a ottantatré volte il prezzo — e offre quella scelta in una frase senza costo associato e senza condizione su quando prenderla.

Non è un bug e il file non è sbagliato; un documento compilato è davvero utile a una persona, e a un agent a cui è stato chiesto di fare audit di un’intera codebase. È un file di livello 3 con un invito di livello 2, e la lezione si generalizza oltre questa skill: ogni percorso che esce da un SKILL.md dovrebbe dire quanto costa e quando ne vale la pena, perché il modello non ha modo di sapere che un nome file è ottantatré volte più caro del nome file sopra di lui.

La stessa cartella contiene una lezione più piccola sulla staleness. Il corpo dice «70 regole in 8 categorie» e ne elenca 70; la directory rules/ contiene 72 file, due dei quali sono scaffolding (_template.md e _sections.md); e il sidecar metadata.json dice «40+ regole». Tre conteggi dello stesso insieme in una cartella, uno giusto, uno aritmetico e uno rimasto da una versione precedente. Una skill è un documento, e i documenti marciscono esattamente come un commento nel codice che si è allontanato dal codice accanto a sé — con la differenza che questo viene letto da una macchina che non alzerà un sopracciglio.

I campi che l’implementazione di riferimento aggiunge, e la trappola della portabilità

Link alla sezione: I campi che l’implementazione di riferimento aggiunge, e la trappola della portabilità

La specifica aperta definisce sei campi di frontmatter. L’implementazione di riferimento, Claude Code, ne accetta venti.2 Cinque gruppi vale la pena conoscerli per nome, perché sono il punto in cui il formato smette di essere solo un documento:

Permessi e invocazione. allowed-tools pre-approva gli strumenti per il turno che ha invocato la skill e la concessione scade al messaggio successivo; disallowed-tools li rimuove. disable-model-invocation impedisce al modello di caricarla da solo, trasformando la skill in un comando eseguito da una persona. user-invocable: false fa l’opposto: nascosta alle persone, disponibile solo al modello, per conoscenza di background.

Isolamento e costo. context: fork esegue la skill in un contesto di sub-agent separato con la propria finestra — il confine del sub-agent del Capitolo 25 come una riga di YAML — con agent che sceglie quale tipo e background che decide se il turno attende. model e effort cambiano quale modello viene eseguito mentre la skill è attiva, solo per quel turno.

Argomenti (arguments, argument-hint) permettono a una persona di passare valori che vengono sostituiti nel corpo, ed è questo che rende una skill usabile come slash command. Lo scoping (paths) limita l’attivazione ai file che corrispondono a un glob. E la dynamic context injection è quella che cambia il modello mentale: una riga della forma !`git diff HEAD` viene eseguita prima che il corpo sia inviato, e il suo output viene sostituito nel testo. Il documento è un template, e parte di esso viene calcolata al momento della lettura.

Ora la trappola, ed è dichiarata nella stessa documentazione: fuori da Claude Code — nel prodotto web, tramite la Skills API, nel packaging — sono permessi solo i sei campi specificati, e qualunque altro campo è un errore bloccante in upload.2 Quindi una skill che funziona perfettamente in un prodotto non si installa in un altro dello stesso vendor, e fallisce nel frontmatter invece che in qualcosa che potresti testare leggendo la prosa. Se vuoi che una skill sia portabile, i sei campi sono tutto il budget. Se non lo vuoi, dillo in compatibility, che esiste esattamente per questo.

La tabella per cui esiste questo capitolo

Link alla sezione: La tabella per cui esiste questo capitolo

Quattro cose vengono confuse continuamente, e la confusione non è pedanteria lessicale: scegliere male costa denaro a ogni turno, oppure ti costa una garanzia che pensavi di avere.

System promptSkillStrumentoServer MCP
Che cos’ètesto in ogni richiestauna cartella la cui radice è un SKILL.mdun JSON Schema più un endpoint nel tuo codiceun processo o servizio che parla un protocollo
Che cosa fa il modellolo legge, semprelo legge, quando decide che la descrizione corrispondelo chiama, e attende il tuo risultatolo chiama, tramite l’host, un client per server
Quanto costala sua lunghezza completa, ogni turno, per semprecirca 50 token a turno; il corpo una volta, se usatoil suo schema, ogni turno; esecuzione quando viene chiamatoogni schema più il instructions del server, ogni turno
Che cosa può garantirenulla — è un consiglionulla — è un consiglio che il modello può saltaretutto ciò che il tuo codice applica prima di agiretutto ciò che il server applica
Chi lo scrivetutu, un collega o un vendortuqualcun altro, per molti host
Capitolo15questo1826 e 27

Le due righe in grassetto sono tutta la distinzione. Una skill viene letta; uno strumento viene invocato. Una skill è prosa che arriva nella context window e compete per l’attention con tutto il resto lì dentro; il modello può seguirla, fraintenderla o ignorarla, e nulla nel sistema se ne accorge. Uno strumento è una chiamata che esce del tutto dalle mani del modello: il tuo codice riceve argomenti, li valida, controlla i permessi e decide. Il Capitolo 18 l’ha formulato come il modello che propone e il tuo codice che dispone, e quella divisione è esattamente ciò che una skill non ha.

Quindi sei casi reali, risolti:

«Rispondi nella lingua dell’utente. Non dichiarare mai un prezzo che non ti è stato fornito.»

Link alla sezione: «Rispondi nella lingua dell’utente. Non dichiarare mai un prezzo che non ti è stato fornito.»

System prompt. Si applica a ogni turno, è un vincolo invece che una procedura, ed è lungo due frasi. Qualcosa che si applica sempre non ha nulla da rivelare progressivamente, e pagare una riga di discovery a ogni turno per evitare di pagare due frasi a ogni turno non è un risparmio.

«Come scriviamo qui le note di rilascio.»

Link alla sezione: «Come scriviamo qui le note di rilascio.»

Skill. Procedurale, necessaria forse in un turno su quaranta, scomponibile in voce, tassonomia ed esempi, ed è prosa che una persona modificherà. Questa è la forma per cui il formato è stato progettato, e la misura sopra è ciò che fa risparmiare.

«Cerca un ordine tramite il suo identificatore nel database del magazzino.»

Link alla sezione: «Cerca un ordine tramite il suo identificatore nel database del magazzino.»

Strumento. Dietro c’è una funzione deterministica e il modello non deve improvvisare la query. Scriverlo come skill — un documento che spiega come interrogare il magazzino — consegna al modello lo schema e spera. Uno schema più un endpoint gli consegna una risposta.

«Leggere e scrivere issue nel nostro tracker, da ogni prodotto agent usato dall’azienda.»

Link alla sezione: «Leggere e scrivere issue nel nostro tracker, da ogni prodotto agent usato dall’azienda.»

Server MCP. La capability non è tua, diversi host ne hanno bisogno, e ha una storia di autenticazione. Questo è il problema N×MN \times M con cui si è aperto il Capitolo 26, un protocollo è la risposta, e il Capitolo 27 ne spedisce uno due volte. Una skill non può essere scoperta da un host che non ha mai visto il tuo filesystem — che è precisamente il divario che il lavoro sugli standard alla fine di questo capitolo sta chiudendo.

«Il manuale di brand da quattrocento pagine.»

Link alla sezione: «Il manuale di brand da quattrocento pagine.»

Nessuno dei quattro. È conoscenza da cercare, non una procedura da seguire, e appartiene a un indice che l’agent interroga: Capitolo 19. Includerlo come livello 3 è permesso, allettante e sbagliato, perché il modello dovrebbe indovinare solo dai nomi quale dei quaranta file contiene la risposta. Quello che è una buona skill è la procedura di due pagine che dice all’agent quando cercare in quell’indice, che cosa significa un punteggio di similarità basso e come citare ciò che trova.

«Non rimborsare mai più di duecento euro senza un umano.»

Link alla sezione: «Non rimborsare mai più di duecento euro senza un umano.»

Uno strumento con un approval gate, e mai una skill. Questo è il caso che conta. Scritta in un SKILL.md, la soglia è una frase che il modello legge e di solito rispetta; scritta nello strumento di rimborso, è un ramo che viene eseguito prima che qualsiasi denaro si muova. Un limite che ti metterebbe in imbarazzo se venisse superato non è documentazione. La regola, da memorizzare: se la conseguenza dell’ignorare l’istruzione è peggiore di una risposta formattata male, l’istruzione non appartiene a un documento.

Dal gergo interno a uno standard, con i numeri

Link alla sezione: Dal gergo interno a uno standard, con i numeri

La storia è breve, insolitamente ben datata, ed è la parte che quasi nessuno racconta.

Agent Skills è stato pubblicato il 16 ottobre 2025 come funzionalità di un vendor, definito in quell’annuncio come «organized folders of instructions, scripts, and resources that agents can discover and load dynamically to perform better at specific tasks», con i tre livelli descritti tramite un’analogia che vale la pena conservare: «like a well-organized manual that starts with a table of contents, then specific chapters, and finally a detailed appendix».4

Il 18 dicembre 2025 la stessa pagina è stata aggiornata per annunciare il formato come standard aperto, con una specifica propria su agentskills.io, governance aperta ai contributi e un validatore di riferimento.3 Letto il 7 settembre 2026, lo showcase dei client dello standard elenca quarantasei prodotti — editor, terminali, piattaforme cloud e runtime mobili, inclusi gli agent di coding first-party di Anthropic, OpenAI, Google e Mistral — ciascuno con link alla propria documentazione di setup.1

La convergenza con MCP viene fatta in pubblico, con numeri che puoi verificare:

Che cos’èApertoStato al 7 set 2026
SEP-2076Agent Skills as a First-Class MCP Primitive: nuovi metodi skills/list e skills/get, una capability skills, una notifica list_changed13 gennaio 2026chiuso, 24 febbraio 2026
Skills Over MCP working groupdefinisce come le skill vengono «discovered, distributed, and consumed through MCP»; si riunisce settimanalmente; diciassette membri elencati, due dei quali leadinterest group 1 febbraio 2026; working group 16 aprile 2026attivo
SEP-2640Skills Extension, Extensions Track: una convenzione di risorsa skill://, identificatore di estensione io.modelcontextprotocol/skills, discovery tramite skills/list e contenuto tramite resources/read23 aprile 2026in review

La parte interessante è la chiusura, non le proposte. SEP-2076 chiedeva una quarta primitiva accanto a strumenti, risorse e prompt. Il working group nato da quella proposta ha deciso che la risposta era no: le skill viaggiano sulla primitiva resources già esistente, come estensione opt-in.5 Il Capitolo 26 ha misurato lo stesso istinto nel changelog del protocollo, dove sampling, roots e logging sono stati deprecati invece che mantenuti. Un ente di standardizzazione che rimuove una proposta che aveva scritto si sta comportando bene, e il motivo per raccontare questa storia con i numeri davanti è che i riassunti che leggerai altrove descrivono ancora le skill come una primitiva MCP.

Ora puoi scrivere un SKILL.md, dividerlo in tre livelli che si ripagano, leggere il frontmatter della skill di qualcun altro e sapere quali campi non sopravviveranno a un upload altrove, e rispondere alla domanda attorno a cui è stato costruito l’intero capitolo — system prompt, skill, strumento o server — con una ragione invece che per abitudine.

Quello che non puoi fare è dire se la tua funziona.

Ogni affermazione importante in questo capitolo era una misura, e quella più importante era un’accuratezza: 18 su 24 contro 10 su 24, con un intervallo su ciascuna e un test appaiato tra loro, perché due aggregati che si sovrappongono non decidono nulla. Quello strumento è stato preso in prestito. La descrizione di una skill è una chiave di routing, il suo corpo è una procedura che il modello può seguire oppure no, ed entrambe sono proprietà che puoi scoprire solo eseguendo la cosa molte volte e valutando ciò che è tornato — cioè un golden set, un grader che hai scritto prima dell’esecuzione, e la metrica che chiede se ha funzionato ogni volta invece che almeno una volta.

Il Capitolo 29 è questo, e si apre con il numero da cui dipende il metodo di questo capitolo: un agent che riesce sette volte su dieci sembra al 70%, e il suo pass^10 — la probabilità che riesca in tutte e dieci — è zero. Misura anche tre grader sugli stessi duecento transcript e ottiene 0%, 13% e 26% senza rigenerare un solo token. Prima di fidarti della frase che hai appena scritto in un description, ti serve lo strumento che possa dirti che è peggiore di quella che hai sostituito.


Ogni conteggio di token in questo capitolo è stato prodotto localmente con tiktoken 0.14.0 e l’encoding o200k_base, il 7 settembre 2026: sulle cinque skill di terze parti elencate all’inizio di questo capitolo, e sulla skill release-notes scritta per questo capitolo, il cui testo completo è riprodotto sopra in parte. Il livello 1 è misurato come la singola riga - name: description che un host renderizza nel system prompt; il livello 2 è il corpo di SKILL.md dopo il frontmatter; il livello 3 è ogni altro file nella cartella. I costi usano le tariffe misurate del Capitolo 16 per gpt-5.6-terra, $2,00 per milione di token in input e $0,20 per milione di token di input in cache, applicate a quei conteggi — sono aritmetica su token misurati, non osservazioni di una fattura live. Nessuna API a pagamento è stata chiamata per scrivere questo capitolo.

L’esperimento di attivazione ha eseguito Qwen/Qwen2.5-0.5B-Instruct in mezza precisione su una GPU consumer, greedy decoding, 24 richieste su sei skill, due volte — una con descrizioni che dichiarano che cosa fa la skill e quando si applica, una con le descrizioni ridotte a un soggetto nudo nello stile del «poor example» della specifica. Gli intervalli sono Wilson al 95%; il confronto appaiato è un exact sign test a due code sui dieci casi discordanti; l’intervallo di Wilson è quello del Capitolo 4 e l’exact paired sign test è quello del Capitolo 15, entrambi riutilizzati senza modifiche. Leggi le grandezze come proprietà di un modello molto piccolo e il metodo come trasferibile.

Le cinque skill misurate qui sono pacchetti di terze parti, non scritti per questo capitolo: next-best-practices e next-cache-components da vercel-labs/next-skills, e vercel-composition-patterns, vercel-react-best-practices e vercel-react-native-skills da vercel-labs/agent-skills. I loro conteggi interni — 70 file di regole, AGENTS.md a 26.362 token, metadata.json datato gennaio 2026 e con l’affermazione «40+ rules» — sono stati letti dai file su disco il 7 settembre 2026 e sono proprietà di quella versione pubblicata, non critiche ai loro autori: ciascuno è il tipo di drift che appare in qualunque albero di documentazione modificato più spesso di quanto venga contato.

  1. Agent Skills Specification e Overview, agentskills.io/specification e agentskills.io, letti il 7 settembre 2026. Fonte del layout della directory; della tabella del frontmatter riprodotta sopra con ogni vincolo (name 1–64 caratteri e corrispondenza con la directory, description 1–1024 caratteri, compatibility fino a 500, allowed-tools marcato sperimentale); degli esempi buoni e scarsi di description; della descrizione della disclosure progressiva in tre fasi con il suo budget di token (metadati circa 100 token, istruzioni sotto 5.000 raccomandati, risorse secondo necessità) e del consiglio di tenere SKILL.md sotto le 500 righe; della nota secondo cui «the agent will load this entire file once it's decided to activate a skill»; delle convenzioni scripts/, references/ e assets/; del comando skills-ref validate; dell’affermazione che il formato «was originally developed by Anthropic, released as an open standard, and has been adopted by a growing number of agent products»; e dello showcase dei client, che alla data di lettura elencava quarantasei prodotti. 2 3 4

  2. Skills nella documentazione di Claude Code, code.claude.com/docs/en/skills, letta il 7 settembre 2026. Fonte della tabella completa dei campi usata nella sezione «i campi che l’implementazione di riferimento aggiunge» — when_to_use, argument-hint, arguments, disable-model-invocation, user-invocable, allowed-tools, disallowed-tools, model, effort, context, agent, background, hooks, paths, shell, metadata, license, compatibility — della descrizione della dynamic context injection con !`command` eseguito prima che il corpo sia inviato, della regola secondo cui una concessione allowed-tools scade al messaggio successivo, e della nota di conformità secondo cui fuori da Claude Code sono accettati solo i sei campi specificati e qualunque altro causa un errore bloccante in upload o packaging. 2 3

  3. Panoramica Agent Skills, platform.claude.com/docs/en/agents-and-tools/agent-skills/overview, letta il 7 settembre 2026. Fonte della tabella dei livelli con le sue quattro colonne (metadati di Livello 1, sempre, circa 100 token per skill; istruzioni di Livello 2, quando triggerate, sotto 5k token; risorse di Livello 3+, secondo necessità, nessuna finché non viene aperta); della frase citata per intero sul contenuto incluso che non comporta penalità di context; di «until a Skill is triggered, only its name and description occupy context»; dell’affermazione che il codice di uno script non entra mai nella context window e che entra solo il suo output; e della sezione di sicurezza, che dice di usare skill solo da fonti fidate e avverte che una skill malevola «can direct Claude to invoke tools or execute code in ways that don't match the Skill's stated purpose» — il tema del Capitolo 30, che arriva tramite un documento invece che tramite la descrizione di uno strumento. 2 3

  4. Anthropic, Equipping agents for the real world with Agent Skills, 16 ottobre 2025, anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills, letto il 7 settembre 2026. Fonte della definizione citata sopra, dell’analogia indice/capitoli/appendice, dei tre livelli come descritti originariamente e del framing secondo cui gli agent hanno bisogno di modi «more composable, scalable, and portable» per ricevere competenza di dominio. L’annuncio di prodotto associato su claude.com/blog/skills riporta la data di pubblicazione del 16 ottobre 2025 e l’aggiornamento del 18 dicembre 2025 che ha introdotto la gestione a livello di organizzazione e lo standard aperto.

  5. Skills Over MCP Charter, modelcontextprotocol.io/community/working-groups/skills-over-mcp, letto il 7 settembre 2026. Fonte della missione citata sopra, delle date del changelog (interest group formato il 1 febbraio 2026, charter iniziale 14 aprile 2026, convertito in working group il 16 aprile 2026, SEP-2640 linkato il 25 aprile 2026), della leadership e dei diciassette membri elencati, della cadenza settimanale delle riunioni, e del criterio di successo che nomina la bozza Skills Extension come «a formal extension using existing Resources primitives». SEP-2076, Agent Skills as a First-Class MCP Primitive, github.com/modelcontextprotocol/modelcontextprotocol/pull/2076, è stato aperto il 13 gennaio 2026 e chiuso il 24 febbraio 2026; proponeva skills/list, skills/get, una capability server skills e una notifica skills/list_changed, e definiva una skill come «a named bundle of instructions plus references to tools, prompts, and resources that together teach an agent how to perform a domain-specific workflow». SEP-2640, Skills Extension, .../pull/2640, è stato aperto il 23 aprile 2026 nell’Extensions Track e contiene la convenzione di risorsa skill:// e l’identificatore di estensione io.modelcontextprotocol/skills. Il Capitolo 26 elenca lo stesso working group tra le estensioni opzionali del protocollo.

Pronto a lasciare scegliere LIA?

Crea con ogni modello AI in un unico posto — inizia gratis oggi.