Get started
CLI
CLI
Pacchetto CLI: clawhub, binario: clawhub.
Installalo globalmente con npm o pnpm:
npm i -g clawhub# orpnpm add -g clawhubPoi verificalo:
clawhub --helpclawhub loginclawhub whoamiFlag globali
--workdir <dir>: directory di lavoro (predefinita: cwd; ripiega sul workspace Clawdbot se configurato)--dir <dir>: directory di installazione sotto workdir (predefinita:skills)--site <url>: URL di base per l'accesso dal browser (predefinito:https://clawhub.ai)--registry <url>: URL di base dell'API (predefinito: rilevato, altrimentihttps://clawhub.ai)--no-input: disabilita i prompt
Equivalenti env:
CLAWHUB_SITE(legacyCLAWDHUB_SITE)CLAWHUB_REGISTRY(legacyCLAWDHUB_REGISTRY)CLAWHUB_WORKDIR(legacyCLAWDHUB_WORKDIR)
Proxy HTTP
La CLI rispetta le variabili d'ambiente proxy HTTP standard per i sistemi dietro proxy aziendali o reti con restrizioni:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
Quando una di queste variabili è impostata, la CLI instrada le richieste in uscita tramite
il proxy specificato. HTTPS_PROXY viene usato per le richieste HTTPS, HTTP_PROXY
per HTTP semplice. NO_PROXY / no_proxy viene rispettato per bypassare il proxy per
host o domini specifici.
Questo è necessario sui sistemi in cui le connessioni dirette in uscita sono bloccate (ad es. container Docker, VPS Hetzner con internet solo tramite proxy, firewall aziendali).
Esempio:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub search "my query"Quando non è impostata alcuna variabile proxy, il comportamento resta invariato (connessioni dirette).
File di configurazione
Memorizza il tuo token API + l'URL del registro nella cache.
- macOS:
~/Library/Application Support/clawhub/config.json - Linux/XDG:
$XDG_CONFIG_HOME/clawhub/config.jsono~/.config/clawhub/config.json - Windows:
%APPDATA%\\clawhub\\config.json - Fallback legacy: se
clawhub/config.jsonnon esiste ancora maclawdhub/config.jsonesiste, la CLI riusa il percorso legacy - override:
CLAWHUB_CONFIG_PATH(legacyCLAWDHUB_CONFIG_PATH)
Comandi
login / auth login
- Predefinito: apre il browser su
<site>/cli/authe completa tramite callback loopback. - Headless:
clawhub login --token clh_... - Remoto/headless interattivo:
clawhub login --devicestampa un codice e attende mentre lo autorizzi su<site>/cli/device.
whoami
- Verifica il token memorizzato tramite
/api/v1/whoami.
token
- Stampa il token API memorizzato su stdout.
- Utile per passare tramite pipe un token di accesso locale ai comandi di configurazione dei segreti CI.
star <skill> / unstar <skill>
- Aggiunge/rimuove una competenza dai tuoi elementi in evidenza.
- Chiama
POST /api/v1/stars/<slug>eDELETE /api/v1/stars/<slug>. --yessalta la conferma.
search <query...>
- Chiama
/api/v1/search?q=.... - L'output include lo slug della competenza, l'handle del proprietario, il nome visualizzato e il punteggio di rilevanza.
- La ricerca favorisce le corrispondenze esatte dei token di slug/nome prima della popolarità dei download. Un token slug autonomo come
mapcorrisponde apersonal-mappiù fortemente della sottostringa dentroamap. - La popolarità è un piccolo priore di classificazione, non una garanzia di posizionamento in cima.
- Se una competenza dovrebbe apparire ma non appare, esegui
clawhub inspect @owner/slugmentre sei autenticato per controllare la diagnostica di moderazione visibile al proprietario prima di rinominare i metadati.
explore
- Elenca le competenze più recenti tramite
/api/v1/skills?limit=...&sort=createdAt(ordinate percreatedAtdesc). - Flag:
--limit <n>(1-200, predefinito: 25)--sort newest|updated|rating|downloads|trending(predefinito: newest). Gli alias di ordinamento legacy dell'installazione funzionano ancora per compatibilità.--json(output leggibile da macchina)
- Output:
<slug> v<version> <age> <summary>(riepilogo troncato a 50 caratteri).
inspect @owner/slug
- Recupera i metadati della competenza e i file di versione senza installare.
--version <version>: ispeziona una versione specifica (predefinita: latest).--tag <tag>: ispeziona una versione con tag (ad es.latest).--versions: elenca la cronologia delle versioni (prima pagina).--limit <n>: numero massimo di versioni da elencare (1-200).--files: elenca i file per la versione selezionata.--file <path>: recupera il contenuto grezzo del file (solo file di testo; limite 200 KB).--json: output leggibile da macchina.
install @owner/slug
- Risolve l'ultima versione per il proprietario e la competenza indicati.
- Scarica lo zip tramite
/api/v1/download. - Estrae in
<workdir>/<dir>/<slug>. - Rifiuta di sovrascrivere le competenze bloccate; esegui prima
clawhub unpin <skill>. - Scrive:
<workdir>/.clawhub/lock.json(legacy.clawdhub)<skill>/.clawhub/origin.json(legacy.clawdhub)
uninstall <skill>
- Rimuove
<workdir>/<dir>/<slug>ed elimina la voce nel lockfile. - Invia telemetria non garantita mentre sei autenticato, così i conteggi di installazione correnti possono essere disattivati.
- Interattivo: chiede conferma.
- Non interattivo (
--no-input): richiede--yes.
list
- Legge
<workdir>/.clawhub/lock.json(legacy.clawdhub). - Mostra
pinnedaccanto alle competenze congelate conclawhub pin, incluso il motivo facoltativo.
pin <skill>
- Contrassegna una competenza installata come bloccata nel lockfile.
--reason <text>registra perché la competenza è congelata.- Le competenze bloccate vengono saltate da
update --alle rifiutate daupdate <skill>diretto. - Le competenze bloccate rifiutano anche
install --force, così i byte locali non possono essere sostituiti accidentalmente.
unpin <skill>
- Rimuove il blocco del lockfile da una competenza installata, così gli aggiornamenti futuri possono modificarla.
update [@owner/slug] / update --all
- Calcola l'impronta dai file locali.
- Se l'impronta corrisponde a una versione nota: nessun prompt.
- Se l'impronta non corrisponde:
- rifiuta per impostazione predefinita
- sovrascrive con
--force(o prompt, se interattivo)
- Le competenze bloccate non vengono mai aggiornate da
--force. update <skill>fallisce rapidamente per le competenze bloccate e ti dice di eseguire primaclawhub unpin <skill>.update --allsalta gli slug bloccati e stampa un riepilogo di ciò che è rimasto congelato.
skill publish <path>
- Confronta l'impronta del bundle locale con ClawHub ed esce con successo quando il contenuto è già pubblicato.
- Le nuove competenze usano come predefinito
1.0.0; le competenze modificate usano come predefinita la versione patch successiva. --version <version>seleziona esplicitamente una versione e pubblica anche quando il contenuto corrisponde a una versione esistente.--dry-runrisolve la pubblicazione senza caricare;--jsonstampa un risultato leggibile da macchina.--owner <handle>pubblica sotto un handle editore org/utente quando l'attore ha accesso di pubblicazione.--migrate-ownersposta una competenza esistente su--ownerpubblicando una nuova versione. Richiede accesso admin/proprietario su entrambi gli editori.- Il comportamento di proprietario e revisione è spiegato in
docs/publishing.md. - Pubblicare una competenza significa che viene rilasciata sotto
MIT-0su ClawHub. - Le competenze pubblicate sono libere da usare, modificare e ridistribuire senza attribuzione.
- ClawHub non supporta competenze a pagamento o prezzi per singola competenza.
- Alias legacy:
publish <path>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
Il workflow riutilizzabile di ClawHub
skill-publish.yml
chiama skill publish per uno skill_path, oppure per ogni cartella di competenza immediata
sotto root (predefinito: skills). Salta le competenze non modificate e usa lo
stesso comportamento automatico di versione patch.
Imposta dry_run: true per un'anteprima senza token. Le pubblicazioni reali richiedono il
segreto clawhub_token.
sync
- Scansiona la workdir corrente, la directory delle competenze configurata e qualsiasi
cartella
--root <dir>alla ricerca di cartelle di competenze locali contenentiSKILL.mdoskill.md. - Confronta l'impronta di ogni competenza locale con ClawHub e pubblica solo competenze nuove o modificate.
- Le nuove competenze vengono pubblicate come
1.0.0; le competenze modificate pubblicano la versione patch successiva per impostazione predefinita. Usa--bump minor|majorper batch di aggiornamento che dovrebbero avanzare di un passo semver più grande. --dry-runmostra il piano di pubblicazione senza caricare;--jsonstampa un piano leggibile da macchina.--allpubblica ogni competenza nuova o modificata senza prompt. Senza--all, i terminali interattivi ti permettono di selezionare le competenze da pubblicare.--owner <handle>pubblica sotto un handle editore org/utente quando l'attore ha accesso di pubblicazione.syncè solo pubblicazione unidirezionale. Non installa, aggiorna, scarica né segnala telemetria di installazione/download.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
- Richiede
clawhub login. - Esegue ClawHub ClawScan tramite
POST /api/v1/skills/-/scan, poi esegue polling finché la scansione è terminale. - Le scansioni sono asincrone e possono richiedere tempo per completarsi. Mentre sono in coda, l'indicatore del terminale mostra la posizione di scansione prioritaria corrente e quante scansioni la precedono.
- Le scansioni pubblicate richiedono proprietà o accesso di gestione dell'editore. Moderatori/admin possono usare lo stesso backend tramite
clawhub-admin. --updateè valido solo con--slug; scrive i risultati di scansione pubblicata riusciti nella versione selezionata.--output <file.zip>scarica l'archivio completo del report conmanifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.jsoneREADME.md.--jsonstampa la risposta completa del polling per l'automazione.- Le scansioni di percorsi locali non sono più supportate. Carica una nuova versione, poi usa
scan downloadper recuperare i risultati di scansione memorizzati per quella versione inviata.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- Richiede
clawhub login. - Scarica lo ZIP del report di scansione memorizzato per una versione di competenza o Plugin inviata, incluse le versioni bloccate o nascoste dai controlli di sicurezza di ClawHub.
- I download delle competenze usano lo slug della competenza e usano come predefinito
--kind skill. - I download dei Plugin usano il nome del pacchetto e richiedono
--kind plugin. --versionè richiesto affinché gli autori ispezionino l'esatta versione inviata che ClawHub ha bloccato.--output <file.zip>sceglie il percorso di destinazione.
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
ClawHub fornisce un workflow riutilizzabile ufficiale su
/.github/workflows/skill-publish.yml
per repository di competenze e repository di cataloghi.
Configurazione tipica del catalogo:
name: Skill Publish on: pull_request: workflow_dispatch: jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: true publish: if: github.event_name == 'workflow_dispatch' uses: openclaw/clawhub/.github/workflows/skill-publish.yml@v1 with: owner: nvidia dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}Note:
rootusa come predefinitoskillsper i repository di cataloghi.- Passa
skill_path: skills/review-helperper elaborare una cartella di competenza. ownercorrisponde al flag CLI--owner; omettilo per pubblicare come utente autenticato.- La pubblicazione di competenze V1 usa
clawhub_token; la pubblicazione attendibile GitHub OIDC è solo per pacchetti per ora.
delete <skill>
- Senza
--version, elimina in modo reversibile una skill (proprietario, moderatore o amministratore). - Chiama
DELETE /api/v1/skills/{slug}. - Le eliminazioni reversibili avviate dal proprietario riservano lo slug per 30 giorni; il comando stampa l'ora di scadenza.
--version <version>elimina definitivamente una versione posseduta non più recente tramite una route specifica per versione, fail-closed. Le versioni eliminate non possono essere ripristinate o ripubblicate. Pubblica una sostituzione prima di eliminare la versione più recente corrente. Il personale della piattaforma non aggira la proprietà per questo flusso solo versione.--reason <text>registra una nota di moderazione su un'eliminazione reversibile dell'intera skill e nel log di audit.--note <text>è un alias di--reason.--yessalta la conferma.
undelete <skill>
- Ripristina una skill nascosta (proprietario, moderatore o amministratore).
- Non esiste ripristino di versione; le versioni eliminate definitivamente non possono essere ripristinate.
- Chiama
POST /api/v1/skills/{slug}/undelete. --reason <text>registra una nota di moderazione sulla skill e nel log di audit.--note <text>è un alias di--reason.--yessalta la conferma.
hide <skill>
- Nasconde una skill (proprietario, moderatore o amministratore).
- Alias di
delete.
unhide <skill>
- Rende di nuovo visibile una skill (proprietario, moderatore o amministratore).
- Alias di
undelete.
skill rename <skill> <new-name>
- Rinomina una skill posseduta e mantiene lo slug precedente come alias di reindirizzamento.
- Chiama
POST /api/v1/skills/{slug}/rename. --yessalta la conferma.
skill merge <source> <target>
- Unisce una skill posseduta in un'altra skill posseduta.
- Lo slug di origine smette di essere elencato pubblicamente e diventa un alias di reindirizzamento verso la destinazione.
- Chiama
POST /api/v1/skills/{sourceSlug}/merge. --yessalta la conferma.
transfer
- Flusso di trasferimento della proprietà.
- I trasferimenti verso handle utente creano una richiesta in sospeso che il destinatario accetta.
- I trasferimenti verso handle di organizzazione/publisher vengono applicati immediatamente solo quando l'attore ha accesso amministratore sia al proprietario corrente sia al publisher di destinazione.
- Sottocomandi:
transfer request <skill> <handle> [--message "..."] [--yes]transfer list [--outgoing]transfer accept <skill> [--yes]transfer reject <skill> [--yes]transfer cancel <skill> [--yes]
- Endpoint:
POST /api/v1/skills/{slug}/transferPOST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancelGET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing
package explore [query...]
- Esplora o cerca nel catalogo pacchetti unificato tramite
GET /api/v1/packageseGET /api/v1/packages/search. - Usalo per Plugin e altre voci della famiglia di pacchetti;
searchdi primo livello resta la superficie di ricerca delle skill. - Flag:
--family skill|code-plugin|bundle-plugin--official--executes-code--target <target>,--os <os>,--arch <arch>,--libc <libc>--requires-browser,--requires-desktop,--requires-native-deps--requires-external-service,--external-service <name>--binary <name>,--os-permission <name>--artifact-kind legacy-zip|npm-pack--npm-mirror--limit <n>(1-100, predefinito: 25)--json
Esempi:
clawhub package explore --family code-pluginclawhub package explore --family code-plugin --os darwin --requires-desktopclawhub package explore --family code-plugin --artifact-kind npm-packclawhub package explore --npm-mirrorclawhub package explore episodic-claw --family code-pluginpackage inspect <name>
- Recupera i metadati del pacchetto senza installarlo.
- Usalo per metadati del Plugin, compatibilità, verifica, sorgente e ispezione di versioni/file.
--version <version>: ispeziona una versione specifica (predefinito: più recente).--tag <tag>: ispeziona una versione con tag (ad es.latest).--versions: elenca la cronologia delle versioni (prima pagina).--limit <n>: numero massimo di versioni da elencare (1-100).--files: elenca i file per la versione selezionata.--file <path>: recupera il contenuto grezzo del file (solo file di testo; limite 200 KB).--json: output leggibile da macchina.
package download <name>
- Risolve una versione del pacchetto tramite
GET /api/v1/packages/{name}/versions/{version}/artifact. - Scarica l'artefatto dal
downloadUrldel resolver. - Verifica lo SHA-256 di ClawHub per tutti gli artefatti.
- Per gli artefatti ClawPack npm-pack, verifica anche l'integrità npm
sha512, lo shasum npm e nome/versione delpackage.jsondel tarball. - Le versioni ZIP legacy vengono scaricate tramite la route ZIP legacy.
- Flag:
--version <version>: scarica una versione specifica.--tag <tag>: scarica una versione con tag (predefinito:latest).-o, --output <path>: file o directory di output.--force: sovrascrive un file di output esistente.--json: output leggibile da macchina.
Esempi:
clawhub package download @openclaw/example-plugin --tag latestclawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/package verify <file>
- Calcola lo SHA-256 di ClawHub, l'integrità npm
sha512e lo shasum npm per un artefatto locale. - Con
--package, risolve i metadati previsti da ClawHub e confronta il file locale con i metadati dell'artefatto pubblicato. - Con flag digest diretti, verifica senza una ricerca di rete.
- Flag:
--package <name>: nome del pacchetto per risolvere i metadati previsti dell'artefatto.--version <version>o--tag <tag>: versione prevista del pacchetto.--sha256 <hex>: SHA-256 di ClawHub previsto.--npm-integrity <sri>: integrità npm prevista.--npm-shasum <sha1>: shasum npm previsto.--json: output leggibile da macchina.
Esempi:
clawhub package verify ./example-plugin-1.2.3.tgz --package @openclaw/example-plugin --version 1.2.3clawhub package verify ./example-plugin-1.2.3.tgz --sha256 <hex>package validate <source>
- Esegue il Plugin Inspector incluso nella CLI di ClawHub su una cartella di pacchetto Plugin locale.
- Per impostazione predefinita usa la convalida offline/statica, senza localizzare o importare un checkout OpenClaw locale.
- Gli errori di compatibilità gravi escono con codice diverso da zero. I risultati solo di avviso vengono stampati ma escono con zero.
- Flag:
--out <dir>: scrive i report del Plugin Inspector in questa directory.--openclaw <path>: ispeziona rispetto a un checkout OpenClaw locale esplicito.--runtime: abilita l'acquisizione runtime; importa il codice del Plugin.--allow-execute: consente l'acquisizione runtime in un workspace isolato.--no-mock-sdk: disabilita l'SDK OpenClaw simulato durante l'acquisizione runtime.--json: output leggibile da macchina.
Esempio:
clawhub package validate ./example-pluginSe la convalida segnala un risultato relativo a pacchetto, manifest, import dell'SDK o artefatto, consulta Correzioni di convalida dei Plugin, quindi riesegui il comando.
package delete <name>
- Senza
--version, elimina in modo reversibile un pacchetto e tutte le release. --version <version>elimina definitivamente una release posseduta non più recente tramite una route specifica per versione, fail-closed. Le versioni eliminate non possono essere ripristinate o ripubblicate. Pubblica una sostituzione prima di eliminare la versione più recente corrente. Questo flusso solo versione richiede il proprietario del pacchetto o un amministratore del publisher dell'organizzazione; il personale della piattaforma non aggira la proprietà del pacchetto.- L'eliminazione reversibile dell'intero pacchetto richiede il proprietario del pacchetto, un proprietario/amministratore del publisher dell'organizzazione, un moderatore della piattaforma o un amministratore della piattaforma.
- Flag:
--version <version>: elimina definitivamente una versione non più recente.--yes: salta la conferma.--json: output leggibile da macchina.
Esempio:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- Ripristina un pacchetto eliminato in modo reversibile e le release.
- Non esiste ripristino di versione; le versioni eliminate definitivamente non possono essere ripristinate.
- Richiede il proprietario del pacchetto, un proprietario/amministratore del publisher dell'organizzazione, un moderatore della piattaforma o un amministratore della piattaforma.
- Chiama
POST /api/v1/packages/{name}/undelete. - Flag:
--yes: salta la conferma.--json: output leggibile da macchina.
Esempio:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- Trasferisce un pacchetto a un altro publisher.
- Richiede accesso amministratore sia al proprietario corrente del pacchetto sia al publisher di destinazione, salvo esecuzione da parte di un amministratore della piattaforma.
- I nomi dei pacchetti con ambito devono essere trasferiti al proprietario dell'ambito corrispondente.
- Chiama
POST /api/v1/packages/{name}/transfer. - Flag:
--to <owner>: handle del publisher di destinazione.--reason <text>: motivo di audit facoltativo.--json: output leggibile da macchina.
Esempio:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- Comando autenticato per segnalare un pacchetto ai moderatori.
- Chiama
POST /api/v1/packages/{name}/report. - Le segnalazioni sono a livello di pacchetto, possono essere facoltativamente collegate a una versione e diventano visibili ai moderatori per la revisione.
- Le segnalazioni non nascondono automaticamente i pacchetti né bloccano i download da sole.
- Flag:
--version <version>: versione del pacchetto facoltativa da allegare alla segnalazione.--reason <text>: motivo della segnalazione obbligatorio.--json: output leggibile da macchina.
Esempio:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "suspicious native payload"package moderation-status
- Comando per il proprietario per controllare la visibilità di moderazione del pacchetto.
- Chiama
GET /api/v1/packages/{name}/moderation. - Mostra lo stato attuale della scansione del pacchetto, il conteggio delle segnalazioni aperte, lo stato di moderazione manuale della release più recente, lo stato di blocco dei download e i motivi di moderazione.
- Flag:
--json: output leggibile da macchina.
Esempio:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- Controlla se un pacchetto è pronto per il consumo futuro da parte di OpenClaw.
- Chiama
GET /api/v1/packages/{name}/readiness. - Segnala i blocchi per stato ufficiale, disponibilità ClawPack, digest dell'artefatto, provenienza del sorgente, compatibilità OpenClaw, target host, metadati di ambiente e stato della scansione.
- Flag:
--json: output leggibile da macchina.
Esempio:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- Mostra lo stato di migrazione orientato agli operatori per un pacchetto che potrebbe sostituire un Plugin OpenClaw incluso.
- Chiama lo stesso endpoint di readiness calcolata di
package readiness, ma stampa stato focalizzato sulla migrazione, versione più recente, stato del pacchetto ufficiale, controlli e blocchi. - Flag:
--json: output leggibile da macchina.
Esempio:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- Crea un publisher dell'organizzazione posseduto dall'utente autenticato.
- L'handle viene normalizzato in minuscolo e può essere passato con o senza
@. - I publisher dell'organizzazione appena creati non sono attendibili/ufficiali per impostazione predefinita.
- Fallisce se l'handle è già usato da un publisher, utente o route riservata esistente.
clawhub publisher create opik --display-name "Opik"package publish <source>
- Pubblica un plugin di codice o un plugin bundle tramite
POST /api/v1/packages. <source>accetta:- Percorso di cartella locale:
./my-plugin - Tarball npm-pack ClawPack locale:
./my-plugin-1.2.3.tgz - Repository GitHub:
owner/repooowner/repo@ref - URL GitHub:
https://github.com/owner/repo
- Percorso di cartella locale:
- I metadati vengono rilevati automaticamente da
package.json,openclaw.plugin.jsone da marcatori reali di bundle OpenClaw come.codex-plugin/plugin.json,.claude-plugin/plugin.jsone.cursor-plugin/plugin.json. - Le sorgenti
.tgzsono trattate come ClawPack. La CLI carica i byte npm-pack esatti e usa i contenuti estratti dipackage/solo per la convalida e la precompilazione dei metadati. - Le cartelle dei plugin di codice vengono impacchettate in un tarball npm ClawPack prima del caricamento, in modo che le installazioni di OpenClaw possano verificare l'artefatto esatto. Le cartelle dei plugin bundle continuano a usare il percorso di pubblicazione con file estratti.
- Per le sorgenti GitHub, l'attribuzione della sorgente viene popolata automaticamente dal repository, dal commit risolto, dal ref e dal sottopercorso.
- Per le cartelle locali, l'attribuzione della sorgente viene rilevata automaticamente da git locale quando il remote origin punta a GitHub.
- I plugin di codice esterni devono dichiarare esplicitamente
openclaw.compat.pluginApieopenclaw.build.openclawVersion.package.json.versiondi primo livello non viene usato come fallback per la convalida della pubblicazione. --dry-runmostra un'anteprima del payload di pubblicazione risolto senza caricarlo.--jsonemette output leggibile da macchina per la CI.--owner <handle>pubblica sotto un handle editore utente o organizzazione quando l'attore ha accesso come editore.- I nomi dei pacchetti con ambito devono corrispondere al proprietario selezionato. Vedi
docs/publishing.md. - I flag esistenti (
--family,--name,--version,--source-repo,--source-commit,--source-ref,--source-path) continuano a funzionare come override. - I repository GitHub privati richiedono
GITHUB_TOKEN.
clawhub package publish ./plugin.tgz --owner openclawFlusso locale consigliato
Usa prima --dry-run così puoi confermare i metadati del pacchetto risolti e
l'attribuzione della sorgente prima di creare una release reale:
npm packclawhub package publish ./my-plugin-1.2.3.tgz --family code-plugin --dry-runclawhub package publish ./my-plugin-1.2.3.tgz --family code-pluginFlusso con cartella locale
Per i plugin di codice, la pubblicazione da cartella crea e carica un artefatto ClawPack dalla cartella del pacchetto:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginpackage.json minimale per --family code-plugin
I plugin di codice esterni richiedono una piccola quantità di metadati OpenClaw in
package.json. Questo manifest minimale è sufficiente per una pubblicazione riuscita:
{ "name": "@myorg/openclaw-my-plugin", "version": "1.0.0", "type": "module", "openclaw": { "extensions": ["./index.ts"], "compat": { "pluginApi": ">=2026.3.24-beta.2" }, "build": { "openclawVersion": "2026.3.24-beta.2" } }}Campi obbligatori:
openclaw.compat.pluginApiopenclaw.build.openclawVersion
Note:
package.json.versionè la versione di release del tuo pacchetto, ma non viene usata come fallback per la convalida di compatibilità/build di OpenClaw.openclaw.hostTargetseopenclaw.environmentsono metadati facoltativi. ClawHub può mostrarli quando presenti, ma non sono richiesti per la pubblicazione.openclaw.compat.minGatewayVersioneopenclaw.build.pluginSdkVersionsono extra facoltativi se vuoi pubblicare metadati di compatibilità più dettagliati.- Se stai usando una release precedente della CLI
clawhub, aggiorna prima di pubblicare affinché i controlli preliminari locali vengano eseguiti prima del caricamento. - Se la convalida riporta un codice di correzione, vedi Correzioni di convalida dei Plugin.
GitHub Actions
ClawHub distribuisce anche un workflow riutilizzabile ufficiale in
/.github/workflows/package-publish.yml
per repository di plugin.
Configurazione tipica del chiamante:
name: Package Publish on: pull_request: workflow_dispatch: push: tags: - "v*" jobs: dry-run: if: github.event_name == 'pull_request' uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: true publish: if: github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/') permissions: contents: read id-token: write uses: openclaw/clawhub/.github/workflows/package-publish.yml@v0.12.0 with: dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}Note:
- Il workflow riutilizzabile imposta per impostazione predefinita
sourcesul repository chiamante. - Per i monorepo, passa
source_pathaffinché il workflow pubblichi la cartella del pacchetto plugin, per esempiosource_path: extensions/codex. - Fissa il workflow riutilizzabile a un tag stabile o a uno SHA di commit completo. Non eseguire la pubblicazione di release da
@main. pull_requestdovrebbe usaredry_run: truecosì la CI rimane non inquinante.- Le pubblicazioni reali dovrebbero essere limitate a eventi attendibili come
workflow_dispatcho push di tag. - La pubblicazione attendibile senza un segreto funziona solo su
workflow_dispatch; i push di tag richiedono comunqueclawhub_token. - Mantieni
clawhub_tokendisponibile per la prima pubblicazione, per pacchetti non attendibili o per pubblicazioni di emergenza. - Il workflow carica il risultato JSON come artefatto e lo espone come output del workflow.
package trusted-publisher get <name>
- Mostra la configurazione dell'editore attendibile GitHub Actions per un pacchetto.
- Usalo dopo aver impostato la configurazione per confermare il repository, il nome file del workflow e il pin facoltativo dell'ambiente.
- Flag:
--json: output leggibile da macchina.
Esempio:
clawhub package trusted-publisher get @openclaw/example-pluginpackage trusted-publisher set <name>
- Collega o sostituisce la configurazione dell'editore attendibile GitHub Actions per un pacchetto esistente.
- Il pacchetto deve essere prima creato tramite la normale pubblicazione manuale o autenticata con token
clawhub package publish. - Dopo l'impostazione della configurazione, le future pubblicazioni GitHub Actions supportate possono usare OIDC/pubblicazione attendibile senza un token ClawHub a lunga durata.
--repository <repo>deve essereowner/repo.--workflow-filename <file>deve corrispondere al nome del file workflow in.github/workflows/.--environment <name>è facoltativo. Quando configurato, l'ambiente GitHub Actions nella dichiarazione OIDC deve corrispondere esattamente.- ClawHub verifica il repository GitHub configurato quando questo comando viene eseguito. I repository pubblici possono essere verificati tramite metadati GitHub pubblici. I repository privati richiedono che ClawHub abbia accesso GitHub a quel repository, per esempio tramite una futura installazione della GitHub App di ClawHub o un'altra integrazione GitHub autorizzata.
- Flag:
--repository <repo>: repository GitHub, per esempioopenclaw/example-plugin.--workflow-filename <file>: nome file del workflow, per esempiopackage-publish.yml.--environment <name>: ambiente GitHub Actions facoltativo con corrispondenza esatta.--json: output leggibile da macchina.
Esempio:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- Rimuove la configurazione dell'editore attendibile da un pacchetto.
- Usalo come rollback se il workflow, il repository o il pin dell'ambiente devono essere disabilitati o ricreati.
- Le future pubblicazioni reali devono usare la normale pubblicazione autenticata finché la configurazione non viene impostata di nuovo.
- Flag:
--json: output leggibile da macchina.
Esempio:
clawhub package trusted-publisher delete @openclaw/example-pluginTelemetria di installazione
- Inviata dopo
clawhub install <slug>quando hai effettuato l'accesso, a meno cheCLAWHUB_DISABLE_TELEMETRY=1sia impostato. - La segnalazione è best-effort. I comandi di installazione non falliscono se la telemetria non è disponibile.
- Dettagli:
docs/telemetry.md.