SKILL.md con istruzioni, e Claude lo aggiunge al suo toolkit. Claude utilizza le skills quando rilevante, oppure puoi invocare una direttamente con /skill-name.
Per i comandi integrati come
/help e /compact, consulta il riferimento dei comandi integrati.I comandi personalizzati sono stati uniti alle skills. Un file in .claude/commands/deploy.md e una skill in .claude/skills/deploy/SKILL.md creano entrambi /deploy e funzionano allo stesso modo. I tuoi file .claude/commands/ esistenti continuano a funzionare. Le skills aggiungono funzionalità opzionali: una directory per i file di supporto, frontmatter per controllare se sei tu o Claude a invocarle, e la capacità per Claude di caricarle automaticamente quando rilevante.Skills raggruppate
Le skills raggruppate vengono fornite con Claude Code e sono disponibili in ogni sessione. A differenza dei comandi integrati, che eseguono logica fissa direttamente, le skills raggruppate sono basate su prompt: danno a Claude un playbook dettagliato e gli permettono di orchestrare il lavoro utilizzando i suoi strumenti. Questo significa che le skills raggruppate possono generare agenti paralleli, leggere file e adattarsi al tuo codebase. Invochi le skills raggruppate allo stesso modo di qualsiasi altra skill: digita/ seguito dal nome della skill. Nella tabella sottostante, <arg> indica un argomento obbligatorio e [arg] indica uno opzionale.
| Skill | Scopo |
|---|---|
/batch <instruction> | Orchestra cambiamenti su larga scala in un codebase in parallelo. Ricerca il codebase, decompone il lavoro in 5-30 unità indipendenti e presenta un piano. Una volta approvato, genera un agente di background per unità in un git worktree isolato. Ogni agente implementa la sua unità, esegue i test e apre una pull request. Richiede un repository git. Esempio: /batch migrate src/ from Solid to React |
/claude-api | Carica il materiale di riferimento dell’API Claude per il linguaggio del tuo progetto (Python, TypeScript, Java, Go, Ruby, C#, PHP, o cURL) e il riferimento dell’Agent SDK per Python e TypeScript. Copre l’uso degli strumenti, lo streaming, i batch, gli output strutturati e le insidie comuni. Si attiva anche automaticamente quando il tuo codice importa anthropic, @anthropic-ai/sdk, o claude_agent_sdk |
/debug [description] | Abilita la registrazione del debug per la sessione attuale e risolvi i problemi leggendo il log di debug della sessione. La registrazione del debug è disattivata per impostazione predefinita a meno che non hai avviato con claude --debug, quindi eseguire /debug a metà sessione inizia a catturare i log da quel momento in poi. Opzionalmente descrivi il problema per focalizzare l’analisi |
/loop [interval] <prompt> | Esegui un prompt ripetutamente a intervalli mentre la sessione rimane aperta. Utile per il polling di un deployment, la supervisione di una PR, o l’esecuzione periodica di un’altra skill. Esempio: /loop 5m check if the deploy finished. Vedi Esegui prompt su una pianificazione |
/simplify [focus] | Rivedi i tuoi file modificati di recente per problemi di riutilizzo del codice, qualità ed efficienza, quindi correggili. Genera tre agenti di revisione in parallelo, aggrega i loro risultati e applica le correzioni. Passa il testo per focalizzare su preoccupazioni specifiche: /simplify focus on memory efficiency |
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 skills personali. Le skills personali sono disponibili su 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 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 skills
Dove archivi una skill determina chi può usarla:| Posizione | Percorso | Si applica a |
|---|---|---|
| Enterprise | Vedi impostazioni gestite | Tutti gli utenti della 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 |
plugin-name:skill-name, quindi non possono entrare in conflitto con altri livelli. Se hai file in .claude/commands/, funzionano allo stesso modo, ma se una skill e un comando condividono lo stesso nome, la skill ha la precedenza.
Scoperta automatica da directory annidate
Quando lavori con file in sottodirectory, Claude Code scopre automaticamente le skills da directory.claude/skills/ annidate. Ad esempio, se stai modificando un file in packages/frontend/, Claude Code cerca anche le skills in packages/frontend/.claude/skills/. Questo supporta configurazioni monorepo dove i pacchetti hanno le loro proprie skills.
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 skills 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 da 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 skills sono consigliate poiché supportano funzionalità aggiuntive come i file di supporto.Skills da directory aggiuntive
Le skills definite in.claude/skills/ all’interno di directory aggiunte tramite --add-dir vengono caricate automaticamente e rilevate dal rilevamento dei cambiamenti in tempo reale, quindi puoi modificarle durante una sessione senza riavviare.
I file CLAUDE.md da directory
--add-dir non vengono caricati per impostazione predefinita. Per caricarli, imposta CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1. Vedi Carica da directory aggiuntive.Configura le skills
Le skills vengono configurate tramite frontmatter YAML in cima aSKILL.md e il contenuto markdown che segue.
Tipi di contenuto della skill
I file delle skills 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 venga invocata (da te, da Claude, o da entrambi) e dove vuoi che venga eseguita (inline o in un subagent) aiuta a guidare cosa includere. Per skills complesse, puoi anche aggiungere file di supporto per mantenere la skill principale focalizzata.
Riferimento del frontmatter
Oltre al contenuto markdown, puoi configurare il comportamento della skill utilizzando 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, utilizza il nome della directory. Solo lettere minuscole, numeri e trattini (max 64 caratteri). |
description | Consigliato | Cosa fa la skill e quando usarla. Claude utilizza questo per decidere quando applicare la skill. Se omesso, utilizza 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. |
effort | No | Livello di sforzo quando questa skill è attiva. Sostituisce il livello di sforzo della sessione. Predefinito: eredita dalla sessione. Opzioni: low, medium, high, max (solo Opus 4.6). |
context | No | Imposta su fork per eseguire in un contesto subagent con fork. |
agent | No | Quale tipo di subagent usare quando context: fork è impostato. |
hooks | No | Hooks limitati al ciclo di vita di questa skill. Vedi Hooks in skills e agents per il formato di configurazione. |
Sostituzioni di stringhe disponibili
Le skills 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>. |
$ARGUMENTS[N] | Accedi a un argomento specifico per indice a base 0, come $ARGUMENTS[0] per il primo argomento. |
$N | Abbreviazione per $ARGUMENTS[N], come $0 per il primo argomento o $1 per il secondo. |
${CLAUDE_SESSION_ID} | L’ID della sessione attuale. Utile per il logging, la creazione di file specifici della sessione, o la correlazione dell’output della skill con le sessioni. |
${CLAUDE_SKILL_DIR} | La directory contenente il file SKILL.md della skill. Per le skills dei plugin, questa è la sottodirectory della skill all’interno del plugin, non la radice del plugin. Usa questo nei comandi di iniezione bash per fare riferimento a script o file raggruppati con la skill, indipendentemente dalla directory di lavoro attuale. |
Aggiungi file di supporto
Le skills 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 fare il deploy 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 saperlo 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 skills vengono caricate nel contesto in modo che Claude sappia cosa è disponibile, ma il contenuto completo della skill si carica solo quando invocato. I subagents con skills 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 skills
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 “Fix GitHub issue 123 following our coding standards…”
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.
Per accedere agli argomenti individuali per posizione, usa $ARGUMENTS[N] o il più breve $N:
/migrate-component SearchBar React Vue sostituisce $ARGUMENTS[0] con SearchBar, $ARGUMENTS[1] con React, e $ARGUMENTS[2] con Vue. La stessa skill usando la scorciatoia $N:
Pattern avanzati
Inietta contesto dinamico
La sintassi!`<command>` esegue 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 in tempo reale 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 qualsiasi cosa) - L’output sostituisce il placeholder nel contenuto della skill
- Claude riceve il prompt completamente renderizzato con dati PR effettivi
Esegui skills 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 skills e i subagents funzionano insieme in due direzioni:
| Approccio | System prompt | Attività | 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 | Skills precaricate + CLAUDE.md |
context: fork, scrivi l’attività nella tua skill e scegli un tipo di agent per eseguirla. Per l’inverso (definire un subagent personalizzato che usa le skills come materiale di riferimento), vedi Subagents.
Esempio: Skill di ricerca usando l’agent Explore
Questa skill esegue la ricerca in un agent Explore con fork. Il contenuto della skill diventa l’attività, e l’agent fornisce strumenti di sola lettura ottimizzati per l’esplorazione del codebase:- Viene creato un nuovo contesto isolato
- Il subagent riceve il contenuto della skill come suo prompt (“Research $ARGUMENTS thoroughly…”)
- 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, utilizza general-purpose.
Limita l’accesso alle skills di Claude
Per impostazione predefinita, Claude può invocare qualsiasi skill che non abbiadisable-model-invocation: true impostato. Le skills che definiscono allowed-tools concedono a Claude l’accesso a quegli strumenti senza approvazione per uso quando la skill è attiva. Le tue impostazioni di permesso governano comunque il comportamento di approvazione di base per tutti gli altri strumenti. I comandi integrati come /compact e /init non sono disponibili tramite lo strumento Skill.
Tre modi per controllare quali skills Claude può invocare:
Disabilita tutte le skills negando lo strumento Skill in /permissions:
Skill(name) per corrispondenza esatta, Skill(name *) per corrispondenza di prefisso con qualsiasi argomento.
Nascondi skills 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 skills
Le skills possono essere distribuite a diversi ambiti a seconda del tuo pubblico:- Skills di progetto: Esegui il commit di
.claude/skills/al controllo di versione - Plugin: Crea una directory
skills/nel tuo plugin - Gestito: Distribuisci a livello di organizzazione tramite impostazioni gestite
Genera output visuale
Le skills 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 visuale: 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 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 il codebase per tipo di file (i primi 8 per dimensione)
- Un albero comprimibile dove puoi espandere e comprimere 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 visuale: grafici di dipendenza, report di copertura dei test, documentazione API, o visualizzazioni di schema di database. Lo script raggruppato fa il lavoro pesante mentre Claude gestisce l’orchestrazione.
Risoluzione dei problemi
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
What skills are available? - Prova a riformulare la tua richiesta per corrispondere più strettamente alla descrizione
- Invocarla direttamente con
/skill-namese la skill è invocabile dall’utente
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 skills
Le descrizioni delle skills vengono caricate nel contesto in modo che Claude sappia cosa è disponibile. Se hai molte skills, potrebbero superare il budget dei caratteri. Il budget si ridimensiona dinamicamente al 2% della finestra di contesto, con un fallback di 16.000 caratteri. Esegui/context per verificare un avviso sulle skills escluse.
Per sovrascrivere il limite, imposta la variabile di ambiente SLASH_COMMAND_TOOL_CHAR_BUDGET.
Risorse correlate
- Subagents: delega attività ad agenti specializzati
- Plugins: pacchetto e distribuisci skills con altre estensioni
- Hooks: automatizza i flussi di lavoro intorno agli eventi degli strumenti
- Memory: gestisci i file CLAUDE.md per il contesto persistente
- Built-in commands: riferimento per i comandi
/integrati - Permissions: controlla l’accesso agli strumenti e alle skills