SKILL.md con le istruzioni, e Claude lo aggiunge al suo toolkit. Claude utilizza le skill quando rilevante, oppure puoi invocare una direttamente con /skill-name.
Per i comandi integrati come
/help e /compact, vedi modalità interattiva.I comandi slash personalizzati sono stati uniti alle skill. Un file in .claude/commands/review.md e una skill in .claude/skills/review/SKILL.md creano entrambi /review e funzionano allo stesso modo. I tuoi file .claude/commands/ esistenti continuano a funzionare. Le skill aggiungono funzionalità opzionali: una directory per i file di supporto, frontmatter per controllare se tu o Claude le invoca, e la capacità per Claude di caricarle automaticamente quando rilevante.Iniziare
Crea la tua prima skill
Questo esempio crea una skill che insegna a Claude di spiegare il codice usando diagrammi visivi e analogie. Poiché utilizza frontmatter predefinito, Claude può caricarla automaticamente quando chiedi come funziona qualcosa, oppure puoi invocarla direttamente con/explain-code.
Crea la directory della skill
Crea una directory per la skill nella tua cartella di skill personali. Le skill personali sono disponibili in tutti i tuoi progetti.
Scrivi SKILL.md
Ogni skill ha bisogno di un file
SKILL.md con due parti: frontmatter YAML (tra i marcatori ---) che dice a Claude quando usare la skill, e contenuto markdown con le istruzioni che Claude segue quando la skill viene invocata. Il campo name diventa il /slash-command, e la description aiuta Claude a decidere quando caricarla automaticamente.Crea ~/.claude/skills/explain-code/SKILL.md:Dove vivono le skill
Dove memorizzi una skill determina chi può usarla:| Posizione | Percorso | Si applica a |
|---|---|---|
| Enterprise | Vedi impostazioni gestite | Tutti gli utenti nella tua organizzazione |
| Personale | ~/.claude/skills/<skill-name>/SKILL.md | Tutti i tuoi progetti |
| Progetto | .claude/skills/<skill-name>/SKILL.md | Solo questo progetto |
| Plugin | <plugin>/skills/<skill-name>/SKILL.md | Dove il plugin è abilitato |
.claude/commands/, funzionano allo stesso modo ma una skill ha la precedenza su un comando con lo stesso nome.
Scoperta automatica da directory annidate
Quando lavori con file in sottodirectory, Claude Code scopre automaticamente le skill da directory.claude/skills/ annidate. Ad esempio, se stai modificando un file in packages/frontend/, Claude Code cerca anche le skill in packages/frontend/.claude/skills/. Questo supporta configurazioni monorepo dove i pacchetti hanno le loro proprie skill.
Ogni skill è una directory con SKILL.md come punto di ingresso:
SKILL.md contiene le istruzioni principali ed è obbligatorio. Gli altri file sono opzionali e ti permettono di costruire skill più potenti: template per Claude da compilare, output di esempio che mostrano il formato previsto, script che Claude può eseguire, o documentazione di riferimento dettagliata. Fai riferimento a questi file dal tuo SKILL.md in modo che Claude sappia cosa contengono e quando caricarli. Vedi Aggiungi file di supporto per più dettagli.
I file in
.claude/commands/ continuano a funzionare e supportano lo stesso frontmatter. Le skill sono consigliate poiché supportano funzionalità aggiuntive come i file di supporto.Configura le skill
Le skill sono configurate tramite frontmatter YAML in cima aSKILL.md e il contenuto markdown che segue.
Tipi di contenuto della skill
I file skill possono contenere qualsiasi istruzione, ma pensare a come vuoi invocarle aiuta a guidare cosa includere: Contenuto di riferimento aggiunge conoscenza che Claude applica al tuo lavoro attuale. Convenzioni, pattern, guide di stile, conoscenza del dominio. Questo contenuto viene eseguito inline in modo che Claude possa usarlo insieme al contesto della tua conversazione./skill-name piuttosto che lasciare che Claude decida quando eseguirle. Aggiungi disable-model-invocation: true per impedire a Claude di attivarla automaticamente.
SKILL.md può contenere qualsiasi cosa, ma pensare a come vuoi che la skill sia invocata (da te, da Claude, o entrambi) e dove vuoi che venga eseguita (inline o in un subagent) aiuta a guidare cosa includere. Per skill complesse, puoi anche aggiungere file di supporto per mantenere la skill principale focalizzata.
Riferimento frontmatter
Oltre al contenuto markdown, puoi configurare il comportamento della skill usando campi frontmatter YAML tra i marcatori--- in cima al tuo file SKILL.md:
description è consigliato in modo che Claude sappia quando usare la skill.
| Campo | Obbligatorio | Descrizione |
|---|---|---|
name | No | Nome visualizzato per la skill. Se omesso, usa il nome della directory. Solo lettere minuscole, numeri e trattini (max 64 caratteri). |
description | Consigliato | Cosa fa la skill e quando usarla. Claude usa questo per decidere quando applicare la skill. Se omesso, usa il primo paragrafo del contenuto markdown. |
argument-hint | No | Suggerimento mostrato durante l’autocompletamento per indicare gli argomenti previsti. Esempio: [issue-number] o [filename] [format]. |
disable-model-invocation | No | Imposta su true per impedire a Claude di caricare automaticamente questa skill. Usa per i flussi di lavoro che vuoi attivare manualmente con /name. Predefinito: false. |
user-invocable | No | Imposta su false per nascondere dal menu /. Usa per la conoscenza di background che gli utenti non dovrebbero invocare direttamente. Predefinito: true. |
allowed-tools | No | Strumenti che Claude può usare senza chiedere il permesso quando questa skill è attiva. |
model | No | Modello da usare quando questa skill è attiva. |
context | No | Imposta su fork per eseguire in un contesto di subagent isolato. |
agent | No | Quale tipo di subagent usare quando context: fork è impostato. |
hooks | No | Hook scoped al ciclo di vita di questa skill. Vedi Hooks per il formato di configurazione. |
Sostituzioni di stringhe disponibili
Le skill supportano la sostituzione di stringhe per valori dinamici nel contenuto della skill:| Variabile | Descrizione |
|---|---|
$ARGUMENTS | Tutti gli argomenti passati quando si invoca la skill. Se $ARGUMENTS non è presente nel contenuto, gli argomenti vengono aggiunti come ARGUMENTS: <value>. |
${CLAUDE_SESSION_ID} | L’ID della sessione corrente. Utile per il logging, la creazione di file specifici della sessione, o la correlazione dell’output della skill con le sessioni. |
Aggiungi file di supporto
Le skill possono includere più file nella loro directory. Questo mantieneSKILL.md focalizzato sull’essenziale mentre permette a Claude di accedere a materiale di riferimento dettagliato solo quando necessario. Grandi documenti di riferimento, specifiche API, o collezioni di esempi non hanno bisogno di caricarsi nel contesto ogni volta che la skill viene eseguita.
SKILL.md in modo che Claude sappia cosa contiene ogni file e quando caricarlo:
Controlla chi invoca una skill
Per impostazione predefinita, sia tu che Claude potete invocare qualsiasi skill. Puoi digitare/skill-name per invocarla direttamente, e Claude può caricarla automaticamente quando rilevante per la tua conversazione. Due campi frontmatter ti permettono di limitare questo:
-
disable-model-invocation: true: Solo tu puoi invocare la skill. Usa questo per i flussi di lavoro con effetti collaterali o che vuoi controllare il timing, come/commit,/deploy, o/send-slack-message. Non vuoi che Claude decida di distribuire perché il tuo codice sembra pronto. -
user-invocable: false: Solo Claude può invocare la skill. Usa questo per la conoscenza di background che non è azionabile come comando. Una skilllegacy-system-contextspiega come funziona un vecchio sistema. Claude dovrebbe sapere questo quando rilevante, ma/legacy-system-contextnon è un’azione significativa per gli utenti da intraprendere.
disable-model-invocation: true impedisce a Claude di eseguirla automaticamente:
| Frontmatter | Puoi invocare | Claude può invocare | Quando caricato nel contesto |
|---|---|---|---|
| (predefinito) | Sì | Sì | La descrizione è sempre nel contesto, la skill completa si carica quando invocata |
disable-model-invocation: true | Sì | No | La descrizione non è nel contesto, la skill completa si carica quando la invochi |
user-invocable: false | No | Sì | La descrizione è sempre nel contesto, la skill completa si carica quando invocata |
In una sessione regolare, le descrizioni delle skill vengono caricate nel contesto in modo che Claude sappia cosa è disponibile, ma il contenuto completo della skill si carica solo quando invocato. Subagent con skill precaricate funzionano diversamente: il contenuto completo della skill viene iniettato all’avvio.
Limita l’accesso agli strumenti
Usa il campoallowed-tools per limitare quali strumenti Claude può usare quando una skill è attiva. Questa skill crea una modalità di sola lettura dove Claude può esplorare i file ma non modificarli:
Passa argomenti alle skill
Sia tu che Claude potete passare argomenti quando invocate una skill. Gli argomenti sono disponibili tramite il placeholder$ARGUMENTS.
Questa skill corregge un problema GitHub per numero. Il placeholder $ARGUMENTS viene sostituito con qualsiasi cosa segua il nome della skill:
/fix-issue 123, Claude riceve “Correggi il problema GitHub 123 seguendo i nostri standard di codifica…”
Se invochi una skill con argomenti ma la skill non include $ARGUMENTS, Claude Code aggiunge ARGUMENTS: <your input> alla fine del contenuto della skill in modo che Claude veda comunque quello che hai digitato.
Pattern avanzati
Inietta contesto dinamico
La sintassi!command“ esegue i comandi shell prima che il contenuto della skill venga inviato a Claude. L’output del comando sostituisce il placeholder, in modo che Claude riceva dati effettivi, non il comando stesso.
Questa skill riassume una pull request recuperando dati PR live con GitHub CLI. I comandi !gh pr diff“ e altri vengono eseguiti per primi, e il loro output viene inserito nel prompt:
- Ogni
!command“ viene eseguito immediatamente (prima che Claude veda qualcosa) - L’output sostituisce il placeholder nel contenuto della skill
- Claude riceve il prompt completamente renderizzato con dati PR effettivi
Esegui le skill in un subagent
Aggiungicontext: fork al tuo frontmatter quando vuoi che una skill venga eseguita in isolamento. Il contenuto della skill diventa il prompt che guida il subagent. Non avrà accesso alla tua cronologia di conversazione.
Le skill e i subagent funzionano insieme in due direzioni:
| Approccio | System prompt | Compito | Carica anche |
|---|---|---|---|
Skill con context: fork | Dal tipo di agent (Explore, Plan, ecc.) | Contenuto di SKILL.md | CLAUDE.md |
Subagent con campo skills | Corpo markdown del subagent | Messaggio di delega di Claude | Skill precaricate + CLAUDE.md |
context: fork, scrivi il compito nella tua skill e scegli un tipo di agent per eseguirlo. Per l’inverso (definire un subagent personalizzato che usa le skill come materiale di riferimento), vedi Subagent.
Esempio: Skill di ricerca usando agent Explore
Questa skill esegue la ricerca in un agent Explore con fork. Il contenuto della skill diventa il compito, e l’agent fornisce strumenti di sola lettura ottimizzati per l’esplorazione della codebase:- Viene creato un nuovo contesto isolato
- Il subagent riceve il contenuto della skill come suo prompt (“Ricerca $ARGUMENTS a fondo…”)
- Il campo
agentdetermina l’ambiente di esecuzione (modello, strumenti e permessi) - I risultati vengono riassunti e restituiti alla tua conversazione principale
agent specifica quale configurazione di subagent usare. Le opzioni includono agent integrati (Explore, Plan, general-purpose) o qualsiasi subagent personalizzato da .claude/agents/. Se omesso, usa general-purpose.
Limita l’accesso alle skill di Claude
Per impostazione predefinita, Claude può invocare qualsiasi skill che non abbiadisable-model-invocation: true impostato. I comandi integrati come /compact e /init non sono disponibili tramite lo strumento Skill.
Tre modi per controllare quali skill Claude può invocare:
Disabilita tutte le skill negando lo strumento Skill in /permissions:
Skill(name) per corrispondenza esatta, Skill(name:*) per corrispondenza di prefisso con qualsiasi argomento.
Nascondi skill individuali aggiungendo disable-model-invocation: true al loro frontmatter. Questo rimuove la skill dal contesto di Claude completamente.
Il campo
user-invocable controlla solo la visibilità del menu, non l’accesso allo strumento Skill. Usa disable-model-invocation: true per bloccare l’invocazione programmatica.Condividi le skill
Le skill possono essere distribuite a diversi ambiti a seconda del tuo pubblico:- Skill di progetto: Esegui il commit di
.claude/skills/nel controllo di versione - Plugin: Crea una directory
skills/nel tuo plugin - Gestito: Distribuisci a livello di organizzazione tramite impostazioni gestite
Genera output visivo
Le skill possono raggruppare ed eseguire script in qualsiasi linguaggio, dando a Claude capacità oltre ciò che è possibile in un singolo prompt. Un pattern potente è generare output visivo: file HTML interattivi che si aprono nel tuo browser per esplorare dati, eseguire il debug, o creare report. Questo esempio crea un esploratore di codebase: una vista ad albero interattiva dove puoi espandere e comprimere le directory, vedere le dimensioni dei file a colpo d’occhio, e identificare i tipi di file per colore. Crea la directory della Skill:~/.claude/skills/codebase-visualizer/SKILL.md. La descrizione dice a Claude quando attivare questa Skill, e le istruzioni dicono a Claude di eseguire lo script raggruppato:
~/.claude/skills/codebase-visualizer/scripts/visualize.py. Questo script scansiona un albero di directory e genera un file HTML autonomo con:
- Una barra laterale di riepilogo che mostra il conteggio dei file, il conteggio delle directory, la dimensione totale, e il numero di tipi di file
- Un grafico a barre che suddivide la codebase per tipo di file (i primi 8 per dimensione)
- Un albero comprimibile dove puoi espandere e comprimere le directory, con indicatori di tipo di file codificati per colore
codebase-map.html, e lo apre nel tuo browser.
Questo pattern funziona per qualsiasi output visivo: grafi di dipendenze, report di copertura dei test, documentazione API, o visualizzazioni di schemi di database. Lo script raggruppato fa il lavoro pesante mentre Claude gestisce l’orchestrazione.
Risoluzione dei problemi
La skill non si attiva
Se Claude non usa la tua skill quando previsto:- Controlla che la descrizione includa parole chiave che gli utenti direbbero naturalmente
- Verifica che la skill appaia in
Quali skill sono disponibili? - Prova a riformulare la tua richiesta per corrispondere più strettamente alla descrizione
- Invocala direttamente con
/skill-namese la skill è invocabile dall’utente
La skill si attiva troppo spesso
Se Claude usa la tua skill quando non vuoi:- Rendi la descrizione più specifica
- Aggiungi
disable-model-invocation: truese vuoi solo l’invocazione manuale
Claude non vede tutte le mie skill
Le descrizioni delle skill vengono caricate nel contesto in modo che Claude sappia cosa è disponibile. Se hai molte skill, potrebbero superare il budget di caratteri (predefinito 15.000 caratteri). Esegui/context per controllare un avviso sulle skill escluse.
Per aumentare il limite, imposta la variabile di ambiente SLASH_COMMAND_TOOL_CHAR_BUDGET.
Risorse correlate
- Subagent: delega i compiti ad agent specializzati
- Plugin: pacchetto e distribuisci le skill con altre estensioni
- Hooks: automatizza i flussi di lavoro attorno agli eventi degli strumenti
- Memoria: gestisci i file CLAUDE.md per il contesto persistente
- Modalità interattiva: comandi integrati e scorciatoie
- Permessi: controlla l’accesso agli strumenti e alle skill