Mulai
CLI
CLI
Paket CLI: clawhub, biner: clawhub.
Instal secara global dengan npm atau pnpm:
npm i -g clawhub# ataupnpm add -g clawhubKemudian verifikasi:
clawhub --helpclawhub loginclawhub whoamiFlag global
--workdir <dir>: direktori kerja (default: cwd; beralih ke ruang kerja Clawdbot jika dikonfigurasi)--dir <dir>: direktori instalasi di bawah direktori kerja (default:skills)--site <url>: URL dasar untuk login melalui browser (default:https://clawhub.ai)--registry <url>: URL dasar API (default: ditemukan secara otomatis, jika tidakhttps://clawhub.ai)--no-input: nonaktifkan prompt
Padanan variabel lingkungan:
CLAWHUB_SITE(lamaCLAWDHUB_SITE)CLAWHUB_REGISTRY(lamaCLAWDHUB_REGISTRY)CLAWHUB_WORKDIR(lamaCLAWDHUB_WORKDIR)
Proksi HTTP
CLI mengikuti variabel lingkungan proksi HTTP standar untuk sistem di belakang proksi perusahaan atau jaringan terbatas:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyNO_PROXY/no_proxy
Ketika salah satu variabel ini ditetapkan, CLI merutekan permintaan keluar melalui
proksi yang ditentukan. HTTPS_PROXY digunakan untuk permintaan HTTPS, HTTP_PROXY
untuk HTTP biasa. NO_PROXY / no_proxy dipatuhi untuk melewati proksi bagi
host atau domain tertentu.
Hal ini diperlukan pada sistem tempat koneksi keluar langsung diblokir (misalnya kontainer Docker, VPS Hetzner dengan internet hanya melalui proksi, firewall perusahaan).
Contoh:
export HTTPS_PROXY=http://proxy.example.com:3128export NO_PROXY=localhost,127.0.0.1clawhub search "kueri saya"Ketika tidak ada variabel proksi yang ditetapkan, perilakunya tidak berubah (koneksi langsung).
File konfigurasi
Menyimpan token API Anda + URL registri yang di-cache.
- macOS:
~/Library/Application Support/clawhub/config.json - Linux/XDG:
$XDG_CONFIG_HOME/clawhub/config.jsonatau~/.config/clawhub/config.json - Windows:
%APPDATA%\\clawhub\\config.json - Fallback lama: jika
clawhub/config.jsonbelum ada tetapiclawdhub/config.jsonada, CLI menggunakan kembali jalur lama - penggantian:
CLAWHUB_CONFIG_PATH(lamaCLAWDHUB_CONFIG_PATH)
Perintah
login / auth login
- Default: membuka browser ke
<site>/cli/authdan menyelesaikan melalui callback loopback. - Tanpa antarmuka grafis:
clawhub login --token clh_... - Interaktif jarak jauh/tanpa antarmuka grafis:
clawhub login --devicemencetak kode dan menunggu selama Anda mengotorisasinya di<site>/cli/device.
whoami
- Memverifikasi token yang tersimpan melalui
/api/v1/whoami.
token
- Mencetak token API yang tersimpan ke stdout.
- Berguna untuk menyalurkan token login lokal ke perintah penyiapan rahasia CI.
star <skill> / unstar <skill>
- Menambahkan/menghapus skill dari sorotan Anda.
- Memanggil
POST /api/v1/stars/<slug>danDELETE /api/v1/stars/<slug>. --yesmelewati konfirmasi.
search <query...>
- Memanggil
/api/v1/search?q=.... - Output mencakup slug skill, handle pemilik, nama tampilan, dan skor relevansi.
- Pencarian memprioritaskan kecocokan token slug/nama yang persis sebelum popularitas unduhan. Token slug mandiri seperti
maplebih cocok denganpersonal-mapdaripada substring di dalamamap. - Popularitas hanya merupakan prioritas kecil dalam pemeringkatan, bukan jaminan penempatan teratas.
- Jika suatu skill seharusnya muncul tetapi tidak, jalankan
clawhub inspect @owner/slugsaat login untuk memeriksa diagnostik moderasi yang terlihat oleh pemilik sebelum mengganti nama metadata.
explore
- Mencantumkan skill terbaru melalui
/api/v1/skills?limit=...&sort=createdAt(diurutkan berdasarkancreatedAtmenurun). - Flag:
--limit <n>(1-200, default: 25)--sort newest|updated|rating|downloads|trending(default: terbaru). Alias pengurutan instalasi lama tetap berfungsi untuk kompatibilitas.--json(output yang dapat dibaca mesin)
- Output:
<slug> v<version> <age> <summary>(ringkasan dipotong menjadi 50 karakter).
inspect @owner/slug
- Mengambil metadata skill dan file versi tanpa menginstal.
--version <version>: periksa versi tertentu (default: terbaru).--tag <tag>: periksa versi bertag (misalnyalatest).--versions: cantumkan riwayat versi (halaman pertama).--limit <n>: jumlah maksimum versi yang dicantumkan (1-200).--files: cantumkan file untuk versi yang dipilih.--file <path>: ambil konten file mentah (hanya file teks; batas 200KB).--json: output yang dapat dibaca mesin.
install @owner/slug
- Menentukan versi terbaru untuk pemilik dan skill yang disebutkan.
- Mengunduh zip melalui
/api/v1/download. - Mengekstrak ke
<workdir>/<dir>/<slug>. - Menolak menimpa skill yang disematkan; jalankan
clawhub unpin <skill>terlebih dahulu. - Menulis:
<workdir>/.clawhub/lock.json(lama.clawdhub)<skill>/.clawhub/origin.json(lama.clawdhub)
uninstall <skill>
- Menghapus
<workdir>/<dir>/<slug>dan menghapus entri lockfile. - Mengirim telemetri upaya terbaik saat login agar jumlah instalasi saat ini dapat dinonaktifkan.
- Interaktif: meminta konfirmasi.
- Noninteraktif (
--no-input): memerlukan--yes.
list
- Membaca
<workdir>/.clawhub/lock.json(lama.clawdhub). - Menampilkan
pinneddi samping skill yang dibekukan denganclawhub pin, termasuk alasan opsional.
pin <skill>
- Menandai skill terinstal sebagai disematkan dalam lockfile.
--reason <text>mencatat alasan skill dibekukan.- Skill yang disematkan dilewati oleh
update --alldan ditolak olehupdate <skill>langsung. - Skill yang disematkan juga menolak
install --forceagar byte lokal tidak dapat diganti secara tidak sengaja.
unpin <skill>
- Menghapus sematan lockfile dari skill terinstal sehingga pembaruan mendatang dapat mengubahnya.
update [@owner/slug] / update --all
- Menghitung sidik jari dari file lokal.
- Jika sidik jari cocok dengan versi yang diketahui: tanpa prompt.
- Jika sidik jari tidak cocok:
- menolak secara default
- menimpa dengan
--force(atau prompt, jika interaktif)
- Skill yang disematkan tidak pernah diperbarui oleh
--force. update <skill>langsung gagal untuk skill yang disematkan dan meminta Anda menjalankanclawhub unpin <skill>terlebih dahulu.update --allmelewati slug yang disematkan dan mencetak ringkasan mengenai apa yang tetap dibekukan.
skill publish <path>
- Membandingkan sidik jari bundel lokal dengan ClawHub dan keluar dengan sukses ketika konten telah dipublikasikan.
- Skill baru secara default menggunakan
1.0.0; skill yang diubah secara default menggunakan versi patch berikutnya. --version <version>secara eksplisit memilih versi dan memublikasikannya meskipun konten cocok dengan versi yang sudah ada.--dry-runmenyelesaikan publikasi tanpa mengunggah;--jsonmencetak hasil yang dapat dibaca mesin.--owner <handle>memublikasikan di bawah handle penerbit organisasi/pengguna ketika pelaku memiliki akses penerbit.--migrate-ownermemindahkan skill yang sudah ada ke--ownersaat memublikasikan versi baru. Memerlukan akses admin/pemilik pada kedua penerbit.- Perilaku pemilik dan review dijelaskan dalam
docs/publishing.md. - Memublikasikan skill berarti skill tersebut dirilis di bawah
MIT-0di ClawHub. - Skill yang dipublikasikan bebas digunakan, dimodifikasi, dan didistribusikan ulang tanpa atribusi.
- ClawHub tidak mendukung skill berbayar atau harga per skill.
- Alias lama:
publish <path>.
clawhub skill publish ./my-skill --dry-runclawhub skill publish ./my-skillclawhub skill publish ./my-skill --version 2.0.0GitHub Actions
Alur kerja
skill-publish.yml
ClawHub yang dapat digunakan kembali memanggil skill publish untuk satu skill_path, atau untuk setiap folder skill
langsung di bawah root (default: skills). Alur kerja ini melewati skill yang tidak berubah dan menggunakan
perilaku versi patch otomatis yang sama.
Tetapkan dry_run: true untuk melihat pratinjau tanpa token. Publikasi sebenarnya memerlukan
rahasia clawhub_token.
sync
- Memindai direktori kerja saat ini, direktori skill yang dikonfigurasi, dan setiap
folder
--root <dir>untuk mencari folder skill lokal yang berisiSKILL.mdatauskill.md. - Membandingkan setiap sidik jari skill lokal dengan ClawHub dan hanya memublikasikan skill baru atau yang diubah.
- Skill baru dipublikasikan sebagai
1.0.0; skill yang diubah secara default dipublikasikan menggunakan versi patch berikutnya. Gunakan--bump minor|majoruntuk kumpulan pembaruan yang harus bergerak dengan langkah semver yang lebih besar. --dry-runmenampilkan rencana publikasi tanpa mengunggah;--jsonmencetak rencana yang dapat dibaca mesin.--allmemublikasikan setiap skill baru atau yang diubah tanpa prompt. Tanpa--all, terminal interaktif memungkinkan Anda memilih skill yang akan dipublikasikan.--owner <handle>memublikasikan di bawah handle penerbit organisasi/pengguna ketika pelaku memiliki akses penerbit.synchanya melakukan publikasi satu arah. Perintah ini tidak menginstal, memperbarui, mengunduh, atau melaporkan telemetri instalasi/unduhan.
clawhub sync --all --dry-runclawhub sync --allclawhub sync --root ./skills --owner openclaw --bump minorscan --slug <slug>
- Memerlukan
clawhub login. - Menjalankan ClawScan ClawHub melalui
POST /api/v1/skills/-/scan, lalu melakukan polling hingga pemindaian mencapai status terminal. - Pemindaian bersifat asinkron dan mungkin memerlukan waktu untuk selesai. Selama dalam antrean, spinner terminal menampilkan posisi pemindaian yang diprioritaskan saat ini dan jumlah pemindaian di depannya.
- Pemindaian yang dipublikasikan memerlukan akses kepemilikan atau pengelolaan penerbit. Moderator/admin dapat menggunakan backend yang sama melalui
clawhub-admin. --updatehanya valid dengan--slug; opsi ini menulis kembali hasil pemindaian terpublikasi yang berhasil ke versi yang dipilih.--output <file.zip>mengunduh arsip laporan lengkap denganmanifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.json, danREADME.md.--jsonmencetak respons polling lengkap untuk otomatisasi.- Pemindaian jalur lokal tidak lagi didukung. Unggah versi baru, lalu gunakan
scan downloaduntuk mengambil hasil pemindaian yang tersimpan bagi versi yang dikirimkan tersebut.
clawhub scan --slug gifgrepclawhub scan --slug gifgrep --version 1.2.3clawhub scan --slug gifgrep --update --output report.zipscan download <name>
- Memerlukan
clawhub login. - Mengunduh ZIP laporan pemindaian tersimpan untuk versi Skills atau Plugin yang dikirimkan, termasuk versi yang diblokir atau disembunyikan oleh pemeriksaan keamanan ClawHub.
- Unduhan Skills menggunakan slug Skills dan secara default menggunakan
--kind skill. - Unduhan Plugin menggunakan nama paket dan memerlukan
--kind plugin. --versiondiperlukan agar penulis memeriksa versi persis yang dikirimkan dan diblokir oleh ClawHub.--output <file.zip>memilih jalur tujuan.
clawhub scan download gifgrep --version 1.2.3clawhub scan download @scope/demo --version 2.0.0 --kind plugin --output report.zipGitHub Actions
ClawHub menyediakan alur kerja resmi yang dapat digunakan kembali di
/.github/workflows/skill-publish.yml
untuk repositori Skills dan repositori katalog.
Penyiapan katalog umum:
name: Publikasi Skills 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 }}Catatan:
rootsecara default menggunakanskillsuntuk repositori katalog.- Teruskan
skill_path: skills/review-helperuntuk memproses satu folder Skills. ownerdipetakan ke tanda CLI--owner; hilangkan untuk memublikasikan sebagai pengguna yang diautentikasi.- Publikasi Skills V1 menggunakan
clawhub_token; publikasi tepercaya GitHub OIDC saat ini hanya untuk paket.
delete <skill>
- Tanpa
--version, hapus sementara sebuah Skills (pemilik, moderator, atau admin). - Memanggil
DELETE /api/v1/skills/{slug}. - Penghapusan sementara yang dimulai pemilik mencadangkan slug selama 30 hari; perintah mencetak waktu kedaluwarsanya.
--version <version>menghapus secara permanen satu versi milik sendiri yang bukan versi terbaru melalui rute khusus versi yang tertutup jika terjadi kegagalan. Versi yang dihapus tidak dapat dipulihkan atau dipublikasikan ulang. Publikasikan pengganti sebelum menghapus versi terbaru saat ini. Staf platform tidak dapat mengesampingkan kepemilikan untuk alur khusus versi ini.--reason <text>mencatat catatan moderasi pada penghapusan sementara seluruh Skills dan log audit.--note <text>adalah alias untuk--reason.--yesmelewati konfirmasi.
undelete <skill>
- Pulihkan Skills yang disembunyikan (pemilik, moderator, atau admin).
- Tidak ada pembatalan penghapusan versi; versi yang dihapus secara permanen tidak dapat dipulihkan.
- Memanggil
POST /api/v1/skills/{slug}/undelete. --reason <text>mencatat catatan moderasi pada Skills dan log audit.--note <text>adalah alias untuk--reason.--yesmelewati konfirmasi.
hide <skill>
- Sembunyikan Skills (pemilik, moderator, atau admin).
- Alias untuk
delete.
unhide <skill>
- Tampilkan kembali Skills yang disembunyikan (pemilik, moderator, atau admin).
- Alias untuk
undelete.
skill rename <skill> <new-name>
- Ganti nama Skills milik sendiri dan pertahankan slug sebelumnya sebagai alias pengalihan.
- Memanggil
POST /api/v1/skills/{slug}/rename. --yesmelewati konfirmasi.
skill merge <source> <target>
- Gabungkan satu Skills milik sendiri ke dalam Skills milik sendiri lainnya.
- Slug sumber tidak lagi tercantum secara publik dan menjadi alias pengalihan ke target.
- Memanggil
POST /api/v1/skills/{sourceSlug}/merge. --yesmelewati konfirmasi.
transfer
- Alur kerja pengalihan kepemilikan.
- Pengalihan ke nama pengguna membuat permintaan tertunda yang harus diterima oleh penerima.
- Pengalihan ke nama organisasi/penerbit langsung diterapkan hanya jika pelaku memiliki akses admin ke pemilik saat ini dan penerbit tujuan.
- Subperintah:
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...]
- Menjelajahi atau mencari katalog paket terpadu melalui
GET /api/v1/packagesdanGET /api/v1/packages/search. - Gunakan ini untuk Plugin dan entri keluarga paket lainnya;
searchtingkat atas tetap menjadi antarmuka pencarian Skills. - Tanda:
--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, default: 25)--json
Contoh:
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>
- Mengambil metadata paket tanpa menginstal.
- Gunakan ini untuk memeriksa metadata, kompatibilitas, verifikasi, sumber, serta versi/berkas Plugin.
--version <version>: periksa versi tertentu (default: terbaru).--tag <tag>: periksa versi bertag (misalnyalatest).--versions: tampilkan riwayat versi (halaman pertama).--limit <n>: jumlah maksimum versi yang ditampilkan (1-100).--files: tampilkan berkas untuk versi yang dipilih.--file <path>: ambil konten berkas mentah (hanya berkas teks; batas 200KB).--json: keluaran yang dapat dibaca mesin.
package download <name>
- Menguraikan versi paket melalui
GET /api/v1/packages/{name}/versions/{version}/artifact. - Mengunduh artefak dari
downloadUrlmilik resolver. - Memverifikasi SHA-256 ClawHub untuk semua artefak.
- Untuk artefak npm-pack ClawPack, juga memverifikasi integritas
sha512npm, shasum npm, serta nama/versipackage.jsonmilik tarball. - Versi ZIP lama diunduh melalui rute ZIP lama.
- Tanda:
--version <version>: unduh versi tertentu.--tag <tag>: unduh versi bertag (default:latest).-o, --output <path>: berkas atau direktori keluaran.--force: timpa berkas keluaran yang sudah ada.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package download @openclaw/example-plugin --tag latestclawhub package download @openclaw/example-plugin --version 1.2.3 -o artifacts/package verify <file>
- Menghitung SHA-256 ClawHub, integritas
sha512npm, dan shasum npm untuk artefak lokal. - Dengan
--package, menguraikan metadata yang diharapkan dari ClawHub dan membandingkan berkas lokal dengan metadata artefak yang dipublikasikan. - Dengan tanda digest langsung, melakukan verifikasi tanpa pencarian jaringan.
- Tanda:
--package <name>: nama paket untuk menguraikan metadata artefak yang diharapkan.--version <version>atau--tag <tag>: versi paket yang diharapkan.--sha256 <hex>: SHA-256 ClawHub yang diharapkan.--npm-integrity <sri>: integritas npm yang diharapkan.--npm-shasum <sha1>: shasum npm yang diharapkan.--json: keluaran yang dapat dibaca mesin.
Contoh:
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>
- Menjalankan Plugin Inspector bawaan CLI ClawHub terhadap folder paket Plugin lokal.
- Secara default menggunakan validasi luring/statis, tanpa mencari atau mengimpor checkout OpenClaw lokal.
- Kesalahan kompatibilitas fatal menghasilkan kode keluar bukan nol. Temuan yang hanya berupa peringatan dicetak, tetapi menghasilkan kode keluar nol.
- Tanda:
--out <dir>: tulis laporan Plugin Inspector ke direktori ini.--openclaw <path>: periksa terhadap checkout OpenClaw lokal yang ditentukan secara eksplisit.--runtime: aktifkan penangkapan runtime; mengimpor kode Plugin.--allow-execute: izinkan penangkapan runtime dalam ruang kerja terisolasi.--no-mock-sdk: nonaktifkan SDK OpenClaw tiruan selama penangkapan runtime.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package validate ./example-pluginJika validasi melaporkan temuan paket, manifes, impor SDK, atau artefak, lihat Perbaikan validasi Plugin, lalu jalankan kembali perintah tersebut.
package delete <name>
- Tanpa
--version, menghapus sementara sebuah paket dan semua rilis. --version <version>menghapus secara permanen satu rilis milik sendiri yang bukan versi terbaru melalui rute khusus versi yang tertutup jika terjadi kegagalan. Versi yang dihapus tidak dapat dipulihkan atau dipublikasikan ulang. Publikasikan pengganti sebelum menghapus versi terbaru saat ini. Alur khusus versi ini memerlukan pemilik paket atau admin penerbit organisasi; staf platform tidak dapat mengesampingkan kepemilikan paket.- Penghapusan sementara seluruh paket memerlukan pemilik paket, pemilik/admin penerbit organisasi, moderator platform, atau admin platform.
- Tanda:
--version <version>: hapus secara permanen satu versi yang bukan versi terbaru.--yes: lewati konfirmasi.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package delete @openclaw/example-plugin --yesclawhub package delete @openclaw/example-plugin --version 1.2.3 --yespackage undelete <name>
- Memulihkan paket dan rilis yang dihapus sementara.
- Tidak ada pembatalan penghapusan versi; versi yang dihapus secara permanen tidak dapat dipulihkan.
- Memerlukan pemilik paket, pemilik/admin penerbit organisasi, moderator platform, atau admin platform.
- Memanggil
POST /api/v1/packages/{name}/undelete. - Tanda:
--yes: lewati konfirmasi.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package undelete @openclaw/example-plugin --yespackage transfer <name>
- Mentransfer paket ke penerbit lain.
- Memerlukan akses admin ke pemilik paket saat ini dan penerbit tujuan, kecuali dilakukan oleh admin platform.
- Nama paket berlingkup harus ditransfer ke pemilik lingkup yang sesuai.
- Memanggil
POST /api/v1/packages/{name}/transfer. - Flag:
--to <owner>: handle penerbit tujuan.--reason <text>: alasan audit opsional.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package transfer @openclaw/example-plugin --to openclawpackage report
- Perintah terautentikasi untuk melaporkan paket kepada moderator.
- Memanggil
POST /api/v1/packages/{name}/report. - Laporan berada pada tingkat paket, dapat dikaitkan secara opsional dengan suatu versi, dan dapat dilihat oleh moderator untuk ditinjau.
- Laporan tidak secara otomatis menyembunyikan paket atau memblokir unduhan.
- Flag:
--version <version>: versi paket opsional untuk dilampirkan pada laporan.--reason <text>: alasan laporan yang wajib diisi.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package report @openclaw/example-plugin --version 1.2.3 --reason "muatan native mencurigakan"package moderation-status
- Perintah pemilik untuk memeriksa visibilitas moderasi paket.
- Memanggil
GET /api/v1/packages/{name}/moderation. - Menampilkan status pemindaian paket saat ini, jumlah laporan terbuka, status moderasi manual rilis terbaru, status pemblokiran unduhan, dan alasan moderasi.
- Flag:
--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package moderation-status @openclaw/example-pluginpackage readiness <name>
- Memeriksa apakah paket siap digunakan oleh OpenClaw pada masa mendatang.
- Memanggil
GET /api/v1/packages/{name}/readiness. - Melaporkan penghambat untuk status resmi, ketersediaan ClawPack, digest artefak, asal-usul sumber, kompatibilitas OpenClaw, target host, metadata lingkungan, dan status pemindaian.
- Flag:
--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package readiness @openclaw/example-pluginpackage migration-status <name>
- Menampilkan status migrasi berorientasi operator untuk paket yang mungkin menggantikan plugin OpenClaw bawaan.
- Memanggil endpoint kesiapan terkomputasi yang sama dengan
package readiness, tetapi menampilkan status yang berfokus pada migrasi, versi terbaru, status paket resmi, pemeriksaan, dan penghambat. - Flag:
--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package migration-status @openclaw/example-pluginpublisher create <handle>
- Membuat penerbit organisasi yang dimiliki oleh pengguna terautentikasi.
- Handle dinormalisasi menjadi huruf kecil dan dapat diberikan dengan atau tanpa
@. - Penerbit organisasi yang baru dibuat tidak tepercaya/resmi secara default.
- Gagal jika handle sudah digunakan oleh penerbit, pengguna, atau rute yang dicadangkan.
clawhub publisher create opik --display-name "Opik"package publish <source>
- Menerbitkan plugin kode atau plugin bundel melalui
POST /api/v1/packages. <source>menerima:- Jalur folder lokal:
./my-plugin - Tarball npm-pack ClawPack lokal:
./my-plugin-1.2.3.tgz - Repo GitHub:
owner/repoatauowner/repo@ref - URL GitHub:
https://github.com/owner/repo
- Jalur folder lokal:
- Metadata dideteksi secara otomatis dari
package.json,openclaw.plugin.json, dan penanda bundel OpenClaw yang sebenarnya seperti.codex-plugin/plugin.json,.claude-plugin/plugin.json, dan.cursor-plugin/plugin.json. - Sumber
.tgzdiperlakukan sebagai ClawPack. CLI mengunggah byte npm-pack yang persis sama dan menggunakan kontenpackage/yang diekstrak hanya untuk validasi dan pengisian awal metadata. - Folder plugin kode dikemas menjadi tarball npm ClawPack sebelum diunggah agar instalasi OpenClaw dapat memverifikasi artefak yang persis sama. Folder plugin bundel tetap menggunakan jalur penerbitan berkas yang diekstrak.
- Untuk sumber GitHub, atribusi sumber diisi secara otomatis dari repo, commit yang di-resolve, ref, dan subjalur.
- Untuk folder lokal, atribusi sumber dideteksi secara otomatis dari git lokal ketika remote origin mengarah ke GitHub.
- Plugin kode eksternal harus mendeklarasikan
openclaw.compat.pluginApidanopenclaw.build.openclawVersionsecara eksplisit.package.json.versiontingkat atas tidak digunakan sebagai fallback untuk validasi penerbitan. --dry-runmenampilkan pratinjau payload penerbitan yang telah di-resolve tanpa mengunggah.--jsonmenghasilkan keluaran yang dapat dibaca mesin untuk CI.--owner <handle>menerbitkan di bawah handle penerbit pengguna atau organisasi ketika pelaku memiliki akses penerbit.- Nama paket berlingkup harus sesuai dengan pemilik yang dipilih. Lihat
docs/publishing.md. - Flag yang ada (
--family,--name,--version,--source-repo,--source-commit,--source-ref,--source-path) tetap berfungsi sebagai penggantian. - Repo GitHub privat memerlukan
GITHUB_TOKEN.
clawhub package publish ./plugin.tgz --owner openclawAlur lokal yang direkomendasikan
Gunakan --dry-run terlebih dahulu agar Anda dapat mengonfirmasi metadata paket yang telah di-resolve dan
atribusi sumber sebelum membuat rilis aktif:
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-pluginAlur folder lokal
Untuk plugin kode, penerbitan folder membangun dan mengunggah artefak ClawPack dari folder paket:
clawhub package publish ./my-plugin --family code-plugin --dry-runclawhub package publish ./my-plugin --family code-pluginpackage.json minimal untuk --family code-plugin
Plugin kode eksternal memerlukan sedikit metadata OpenClaw dalam
package.json. Manifes minimal ini cukup untuk penerbitan yang berhasil:
{ "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" } }}Kolom wajib:
openclaw.compat.pluginApiopenclaw.build.openclawVersion
Catatan:
package.json.versionadalah versi rilis paket Anda, tetapi tidak digunakan sebagai fallback untuk validasi kompatibilitas/build OpenClaw.openclaw.hostTargetsdanopenclaw.environmentmerupakan metadata opsional. ClawHub dapat menampilkannya jika tersedia, tetapi keduanya tidak diwajibkan untuk penerbitan.openclaw.compat.minGatewayVersiondanopenclaw.build.pluginSdkVersionmerupakan tambahan opsional jika Anda ingin menerbitkan metadata kompatibilitas yang lebih terperinci.- Jika Anda menggunakan rilis CLI
clawhubyang lebih lama, lakukan upgrade sebelum menerbitkan agar pemeriksaan pra-penerbitan lokal dijalankan sebelum pengunggahan. - Jika validasi melaporkan kode remediasi, lihat Perbaikan validasi plugin.
GitHub Actions
ClawHub juga menyediakan alur kerja resmi yang dapat digunakan kembali di
/.github/workflows/package-publish.yml
untuk repo plugin.
Konfigurasi pemanggil umum:
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 }}Catatan:
- Alur kerja yang dapat digunakan kembali menetapkan
sourcesecara default ke repo pemanggil. - Untuk monorepo, berikan
source_pathagar alur kerja menerbitkan folder paket plugin, misalnyasource_path: extensions/codex. - Sematkan alur kerja yang dapat digunakan kembali ke tag stabil atau SHA commit lengkap. Jangan jalankan penerbitan rilis dari
@main. pull_requestharus menggunakandry_run: trueagar CI tidak menghasilkan perubahan persisten.- Penerbitan sebenarnya harus dibatasi pada peristiwa tepercaya seperti
workflow_dispatchatau push tag. - Penerbitan tepercaya tanpa rahasia hanya berfungsi pada
workflow_dispatch; push tag tetap memerlukanclawhub_token. - Pastikan
clawhub_tokentetap tersedia untuk penerbitan pertama, paket tidak tepercaya, atau penerbitan darurat. - Alur kerja mengunggah hasil JSON sebagai artefak dan mengeksposnya sebagai keluaran alur kerja.
package trusted-publisher get <name>
- Menampilkan konfigurasi penerbit tepercaya GitHub Actions untuk sebuah paket.
- Gunakan ini setelah mengatur konfigurasi untuk mengonfirmasi repositori, nama berkas alur kerja, dan penyematan lingkungan opsional.
- Flag:
--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package trusted-publisher get @openclaw/example-pluginpackage trusted-publisher set <name>
- Melampirkan atau mengganti konfigurasi penerbit tepercaya GitHub Actions untuk paket yang sudah ada.
- Paket harus dibuat terlebih dahulu melalui
clawhub package publishmanual atau terautentikasi token seperti biasa. - Setelah konfigurasi diatur, penerbitan GitHub Actions yang didukung pada masa mendatang dapat menggunakan OIDC/penerbitan tepercaya tanpa token ClawHub berumur panjang.
--repository <repo>harus berupaowner/repo.--workflow-filename <file>harus cocok dengan nama berkas alur kerja dalam.github/workflows/.--environment <name>bersifat opsional. Jika dikonfigurasi, lingkungan GitHub Actions dalam klaim OIDC harus sama persis.- ClawHub memverifikasi repositori GitHub yang dikonfigurasi saat perintah ini dijalankan. Repositori publik dapat diverifikasi melalui metadata GitHub publik. Repositori privat mengharuskan ClawHub memiliki akses GitHub ke repositori tersebut, misalnya melalui instalasi GitHub App ClawHub pada masa mendatang atau integrasi GitHub lain yang diotorisasi.
- Flag:
--repository <repo>: repositori GitHub, misalnyaopenclaw/example-plugin.--workflow-filename <file>: nama berkas alur kerja, misalnyapackage-publish.yml.--environment <name>: lingkungan GitHub Actions opsional dengan kecocokan persis.--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package trusted-publisher set @openclaw/example-plugin \ --repository openclaw/example-plugin \ --workflow-filename package-publish.yml \ --environment releasepackage trusted-publisher delete <name>
- Menghapus konfigurasi penerbit tepercaya dari sebuah paket.
- Gunakan ini sebagai rollback jika penyematan alur kerja, repositori, atau lingkungan perlu dinonaktifkan atau dibuat ulang.
- Penerbitan sebenarnya pada masa mendatang harus menggunakan penerbitan terautentikasi biasa hingga konfigurasi diatur kembali.
- Flag:
--json: keluaran yang dapat dibaca mesin.
Contoh:
clawhub package trusted-publisher delete @openclaw/example-pluginTelemetri instalasi
- Dikirim setelah
clawhub install <slug>saat sudah masuk, kecualiCLAWHUB_DISABLE_TELEMETRY=1ditetapkan. - Pelaporan dilakukan atas dasar upaya terbaik. Perintah instalasi tidak gagal jika telemetri tidak tersedia.
- Detail:
docs/telemetry.md.