Salta ai contenuti

Sistema di plugin del Marketplace

Il sistema marketplace consente di scoprire, installare e gestire plugin da cataloghi ospitati su Git. È compatibile con il formato del registro plugin di Claude Code.

/marketplace add anthropics/f5-sales-demo-marketplace
/marketplace install wordpress.com@f5-sales-demo-marketplace

Oppure digita semplicemente /marketplace senza argomenti per aprire il browser interattivo dei plugin.

Un marketplace è un repository Git (o una directory locale) contenente un file di catalogo in .xcsh-plugin/marketplace.json. Il catalogo elenca i plugin disponibili con le relative sorgenti, descrizioni e metadati.

Un plugin è una directory contenente skill, comandi, hook, server MCP o server LSP. I plugin sono identificati da nome@marketplace (es. code-review@f5-sales-demo-marketplace).

Ambiti: i plugin possono essere installati in due ambiti:

  • user (predefinito) — disponibile in tutti i progetti, memorizzato in ~/.xcsh/plugins/installed_plugins.json
  • project — disponibile solo nel progetto corrente, memorizzato in .xcsh/installed_plugins.json

Le installazioni con ambito project hanno la precedenza sulle installazioni con ambito user dello stesso plugin.

ComandoEffetto
/marketplaceApre il browser interattivo dei plugin (installa)
ComandoEffetto
/marketplace add <source>Aggiunge una sorgente marketplace
/marketplace remove <name>Rimuove un marketplace
/marketplace update [name]Recupera nuovamente i cataloghi; omettere il nome per aggiornare tutti
/marketplace listElenca i marketplace configurati
ComandoEffetto
/marketplace discover [marketplace]Sfoglia i plugin disponibili
/marketplace install [--force] [--scope user|project] name@marketplaceInstalla un plugin
/marketplace uninstall [--scope user|project] name@marketplaceDisinstalla un plugin
/marketplace installedElenca i plugin del marketplace installati
/marketplace upgrade [--scope user|project] [name@marketplace]Aggiorna uno o tutti i plugin

Le stesse operazioni sono disponibili dalla riga di comando:

xcsh plugin marketplace add <source>
xcsh plugin marketplace remove <name>
xcsh plugin marketplace update [name]
xcsh plugin marketplace list
xcsh plugin discover [marketplace]
xcsh plugin install --scope project name@marketplace

Quando si esegue /marketplace add <source>, il sistema classifica la sorgente:

Formato della sorgenteTipoEsempio
owner/repoScorciatoia GitHubanthropics/f5-sales-demo-marketplace
https://...*.jsonURL diretto del catalogohttps://example.com/marketplace.json
https://...*.git o git@...Repository Githttps://github.com/org/repo.git
./path o ~/path o /pathDirectory locale./my-marketplace

Il sistema clona il repository (o legge la directory locale), individua .xcsh-plugin/marketplace.json, lo valida e memorizza il catalogo nella cache locale.

Un catalogo marketplace risiede in .xcsh-plugin/marketplace.json nella root del repository:

{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "my-marketplace",
"owner": {
"name": "Your Name",
"email": "you@example.com"
},
"description": "A collection of plugins",
"plugins": [
{
"name": "my-plugin",
"description": "What this plugin does",
"source": "./plugins/my-plugin",
"category": "development",
"homepage": "https://github.com/you/my-plugin"
}
]
}
CampoDescrizione
nameNome del marketplace. Alfanumerico minuscolo, trattini e punti. Deve iniziare e terminare con un carattere alfanumerico. Massimo 64 caratteri.
owner.nameNome del proprietario del marketplace
pluginsArray di voci di plugin
CampoObbligatorioDescrizione
nameNome del plugin (stesse regole del nome del marketplace)
sourceDove trovare il plugin (vedi sotto)
descriptionnoBreve descrizione
versionnoStringa di versione
authorno{ name, email? }
homepagenoURL
categorynoStringa di categoria (es. development, productivity, security)
tagsnoArray di tag stringa
strictnoBooleano
commandsnoComandi slash forniti
agentsnoAgenti forniti
hooksnoDefinizioni di hook
mcpServersnoDefinizioni di server MCP
lspServersnoDefinizioni di server LSP

Il campo source supporta diversi formati:

Percorso relativo (all’interno del repository del marketplace):

"source": "./plugins/my-plugin"

URL repository Git:

"source": {
"source": "url",
"url": "https://github.com/org/repo.git",
"sha": "abc123..."
}

Scorciatoia GitHub:

"source": {
"source": "github",
"repo": "org/repo",
"ref": "main",
"sha": "abc123..."
}

Sottodirectory Git (monorepo):

"source": {
"source": "git-subdir",
"url": "https://github.com/org/monorepo.git",
"path": "plugins/my-plugin",
"ref": "main",
"sha": "abc123..."
}

Pacchetto npm:

"source": {
"source": "npm",
"package": "@scope/my-plugin",
"version": "1.0.0"
}
~/.xcsh/
config/
marketplaces.json # Registro dei marketplace aggiunti
plugins/
installed_plugins.json # Plugin installati con ambito user
cache/
marketplaces/ # Cataloghi marketplace memorizzati nella cache
plugins/ # Directory dei plugin memorizzate nella cache
<project>/.xcsh/
installed_plugins.json # Plugin installati con ambito project

I nomi di marketplace e plugin devono:

  • Iniziare e terminare con una lettera minuscola o una cifra
  • Contenere solo lettere minuscole, cifre, trattini e punti
  • Avere al massimo 64 caratteri

Gli ID dei plugin (nome@marketplace) devono avere al massimo 128 caratteri in totale.

Esempi validi: my-plugin, code-review, wordpress.com, ai-firstify Esempi non validi: -bad, bad-, .bad, Bad, under_score