claude plugin dalla tua shell o da uno script, oppure come /plugin e /reload-plugins all’interno di una sessione Claude Code. Questo riferimento fornisce i flag, i valori predefiniti, l’output e i codici di uscita di ogni comando, insieme ai due flag che caricano un plugin per una sola sessione.
Le tabelle seguenti elencano le opzioni di uso comune di ogni sottocomando, non tutte le opzioni. Esegui claude plugin --help nella tua shell per vedere quali sottocomandi ha la tua versione, e claude plugin <subcommand> --help per l’elenco completo delle opzioni di un sottocomando.
Questi casi sono trattati su altre pagine:
- Installa e gestisci i passaggi, e dove
/pluginviene eseguito: vedi Installa e gestisci i plugin - Cosa un comando cambia su disco e quale ambito ha la precedenza: vedi Riferimento caricamento plugin
- Cosa significa un messaggio di errore: vedi Risolvi i problemi dei plugin
Comandi claude plugin
Eseguiclaude plugin <subcommand> dalla tua shell o da uno script, al di fuori di una sessione Claude Code. Questi sottocomandi installano e gestiscono i plugin senza aprire il pannello /plugin.
claude plugins è un alias per claude plugin.
Ogni sottocomando condivide questi codici di uscita, argomenti plugin e valori di ambito:
- Codici di uscita:
0in caso di successo e1in caso di errore.validateaggiunge l’uscita2per un errore inaspettato, eevalaggiunge i codici elencati nella sua sezione. - Argomenti plugin: un argomento
<plugin>è un pluginnameoname@marketplace. Quando due marketplace offrono lo stesso nome, usa la forma qualificata.configureaccetta solo la forma qualificata. - Ambiti:
--scopeaccettauser,projectolocal, e nomina il file di impostazioni in cui il comando scrive.updateaccetta anchemanaged.
plugin init
Crea lo scaffolding di un nuovo plugin in~/.claude/skills/<name>/. Si carica nella tua prossima sessione come <name>@skills-dir senza alcun passaggio di installazione.
new è un alias per init.
Per il workflow di creazione, test e modifica che inizia con questo comando, vedi Crea un plugin.
<name> diventa il nome della directory sotto ~/.claude/skills/ e il name del plugin nel suo manifest.
Il comando non ha un flag per un’altra posizione. Per creare lo scaffolding all’interno di un progetto, vedi Crea un plugin.
Crea lo scaffolding di un plugin con file skill e hook starter:
Created plugin "my-helper" at ~/.claude/skills/my-helper, seguito dall’id con cui si carica e dal comando claude plugin disable che lo disattiva.
Claude Code esce con 1 senza scrivere quando non può creare lo scaffolding in sicurezza, e il messaggio nomina il motivo. Questi sono motivi comuni:
- Un valore
--withsconosciuto - Uno scaffolding esistente al target senza
--force - Un’impostazione gestita che blocca i plugin della directory skills
plugin install
Installa un plugin da uno dei tuoi marketplace.i è un alias per install.
headersHelper per il suo download, Claude Code prima stampa il comando e chiede Run this command now? [y/N].
Esegui
claude plugin install --help nella tua shell per vedere ogni opzione che la tua versione supporta.
Passa -y dal tuo terminale per accettare il comando visualizzato senza il prompt. Ecco cosa succede senza un TTY e quando Claude esegue il comando:
- stdin o stdout non è un TTY, e non passi né
-yné--accept-command: l’installazione viene rifiutata. L’output dice che il comando è stato solo visualizzato, e il codice di uscita è1 - Claude esegue il comando attraverso il suo strumento Bash:
-yviene ignorato. Esegui il comando dal tuo terminale invece
Successfully installed plugin: formatter@my-marketplace (scope: project). Quando nulla di nuovo viene installato, l’output dice perché:
- Già installato a quell’ambito: l’output è
Plugin "formatter@my-marketplace" is already installed (scope: project)e il codice di uscita è0 - Rifiuti un prompt di origine comando: l’output è
Aborted.e il codice di uscita è1 - Rifiuti un prompt
headersHelper, o non può essere confermato senza un TTY: l’output èAborted — the command was not run.e il codice di uscita è1
Formato risultato JSON
Quando passi--json a plugin install, l’ultima riga di stdout è un oggetto JSON. Analizza solo quella riga, perché Claude Code stampa qualsiasi comando che il marketplace dichiara prima di essa.
Tre campi sono sempre presenti:
command: il sottocomando che è stato eseguito, ad esempioinstalloutcome:okofailedmessage: una descrizione leggibile del risultato
pluginId, scope e failureCode, appaiono solo quando si applicano.
L’opzione --json su plugin uninstall, plugin update, plugin enable e plugin disable stampa lo stesso oggetto con i campi propri di quel sottocomando.
Un errore di utilizzo, come uno --scope non valido, non stampa alcuna riga di risultato ed esce con 1 con il motivo su stderr.
Risultato JSON per i comandi marketplace
Suplugin marketplace add, plugin marketplace remove e plugin marketplace update, --json stampa un oggetto JSON sull’ultima riga di stdout con i campi command, outcome e message. Quanto segue è il risultato di claude plugin marketplace remove your-marketplace --json:
command è marketplace-add, marketplace-remove o marketplace-update. I campi seguenti appaiono solo quando si applicano:
marketplace: il nome del marketplace su cui il comando ha agitofailureCode: un codice che indica perché il comando è fallito, comeinvalid_source
plugin marketplace add e plugin marketplace remove possono non stampare alcuna riga di risultato quando l’argomento è il nome riservato anthropic-plugin-directory, quindi controlla il codice di uscita per quel nome.
Accetta un comando di installazione visualizzato
Quando un’esecuzione--json visualizza un comando dichiarato dal marketplace e non lo esegue, il risultato failed porta anche un oggetto shownCommand. I suoi campi includono il comando come visualizzato, il plugin a cui appartiene, e lo sha256 del comando.
Per accettare esattamente quel comando, esegui di nuovo con quello sha256 come --accept-command dal tuo terminale, perché il flag non ha effetto all’interno di una sessione Claude Code. Richiede Claude Code v2.1.271 o successivo.
Lo sha256 conta come accettazione per esattamente quel comando, plugin e catalogo marketplace. Se uno di essi è cambiato dal momento in cui il comando è stato visualizzato, Claude Code non accetta lo sha256 e mostra di nuovo il comando. Un cambiamento che l’aggiornamento del marketplace della stessa esecuzione recupera conta anche come tale cambiamento.
Se shownCommand.acceptCommandMatched è false, lo sha256 che hai passato non corrisponde al comando ora visualizzato. Rivedi quel comando prima di eseguire di nuovo con il suo sha256.
plugin uninstall
Rimuovi un plugin installato da un ambito.remove e rm sono alias per uninstall.
Disinstalla un plugin dall’ambito del progetto:
Successfully uninstalled plugin: formatter (scope: project). Quando il plugin non è installato a quell’ambito, il comando stampa una riga che inizia con Failed to uninstall plugin "formatter@my-marketplace": ed esce con 1.
Se la riga di errore continua con "formatter" was not uninstalled: e nomina un file di impostazioni, Claude Code non ha potuto confermare che le impostazioni dell’ambito non attivano più il plugin, quindi il plugin rimane installato con tutto ciò che ha salvato. Con --json, il risultato porta failureCode: "settings_still_on". Questo controllo delle impostazioni richiede Claude Code v2.1.282 o successivo.
Cosa una disinstallazione elimina e conserva
Quando disinstalli un plugin dall’ultimo ambito in cui è installato, Claude Code elimina anche le opzioni e i segreti memorizzati del plugin e la sua directory di dati,~/.claude/plugins/data/<id>/. Ci sono tre eccezioni:
- Con
--keep-data, la directory di dati rimane - Quando un altro plugin installato usa la stessa cartella, come uno il cui ID differisce da questo solo per maiuscole/minuscole, la directory di dati rimane
- Quando Claude Code non può leggere l’elenco dei plugin installati dopo che rimuove il plugin da quell’ambito, le opzioni, i segreti e la directory di dati rimangono tutti, perché il plugin potrebbe essere ancora installato a un altro ambito. La disinstallazione ha comunque successo. Il messaggio elenca cosa è rimasto e come eliminarlo, e con
--jsonil risultato portasavedKept: "install_records_unreadable"
--json, keptData riporta se la directory è rimasta, e /plugin mostra · data preserved quando lo ha fatto. Per una directory che rimane senza --keep-data, questo rapporto richiede Claude Code v2.1.281 o successivo. Il campo savedKept richiede Claude Code v2.1.282 o successivo.
plugin enable
Abilita un plugin disabilitato. Per un plugin sincronizzato da claude.ai, passa<name>@synced come plugin.
Senza
--scope, il comando controlla i tuoi file di impostazioni nell’ordine local, project, user, e usa il primo ambito che menziona il plugin.
Se passi uno --scope dove il plugin non è dichiarato, il comando scrive un override o fallisce:
- Un ambito che ha precedenza su quello dichiarante: Claude Code scrive un override all’ambito che hai passato. Ad esempio,
claude plugin disable formatter --scope localdisattiva un plugin abilitato a livello di progetto solo per te - Qualsiasi altro ambito: il comando fallisce con
Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.
Plugin "formatter" is already enabled ed esce con 1. Con --json, il risultato ha "failureCode": "already_in_goal_state" e "alreadyInGoalState": true, quindi uno script può trattare quel caso come successo.
Quando il plugin dichiara dipendenze, Claude Code le abilita anche. Il comando fallisce in questi casi:
- Una dipendenza non è installata: enable fallisce e stampa il comando
claude plugin installper ogni dipendenza mancante - Una dipendenza è bloccata dalla politica dei plugin della tua organizzazione: enable fallisce e nomina la dipendenza bloccata
- Una dipendenza è impostata a
falsea un ambito con precedenza più alta dell’ambito target: enable fallisce. Abilita la dipendenza a quell’ambito, o passa--scopeper scrivere lì
Successfully enabled plugin: formatter (scope: project), nominando l’ambito che ha rilevato.
plugin disable
Disabilita un plugin senza disinstallarlo. Per un plugin sincronizzato da claude.ai, passa<name>@synced come plugin.
Senza
--scope, l’ambito è auto-rilevato nello stesso ordine local, project, user di plugin enable.
Se non passi né un nome di plugin né --all, Claude Code stampa Please specify a plugin name or use --all to disable all plugins ed esce con 1. Disabilitare un plugin che è già disabilitato stampa Plugin "formatter" is already disabled ed esce con 1, come plugin enable fa per un plugin già abilitato.
Il comando fallisce per un plugin che è ancora richiesto:
- Un altro plugin abilitato dipende da esso: il comando fallisce e nomina i dipendenti da disabilitare prima
- La tua organizzazione lo richiede come plugin sincronizzato: il comando fallisce e non salva nulla
Successfully disabled plugin: formatter (scope: project).
plugin update
Aggiorna un plugin all’ultima versione che il suo marketplace offre. La nuova versione si carica nella tua prossima sessione, o dopo che esegui/reload-plugins in una sessione in esecuzione.