Skip to main content
Sebuah marketplace plugin adalah katalog yang memungkinkan Anda mendistribusikan plugin kepada orang lain. Marketplace menyediakan penemuan terpusat, pelacakan versi, pembaruan otomatis, dan dukungan untuk berbagai jenis sumber, termasuk repositori git dan jalur lokal. Panduan ini menunjukkan cara membuat marketplace Anda sendiri untuk berbagi plugin dengan tim atau komunitas Anda. Mencari cara memasang plugin dari marketplace yang sudah ada? Lihat Temukan dan pasang plugin yang sudah dibuat.

Ikhtisar

Membuat dan mendistribusikan marketplace melibatkan:
  1. Membuat plugin: bangun satu atau lebih plugin dengan skills, agents, hooks, MCP servers, atau LSP servers. Panduan ini mengasumsikan Anda sudah memiliki plugin untuk didistribusikan; lihat Buat plugin untuk detail tentang cara membuat plugin.
  2. Membuat file marketplace: tentukan marketplace.json yang mencantumkan plugin Anda dan di mana menemukannya. Lihat Buat file marketplace.
  3. Host marketplace: dorong ke GitHub, GitLab, atau host git lainnya. Lihat Host dan distribusikan marketplace.
  4. Bagikan dengan pengguna: pengguna menambahkan marketplace Anda dengan /plugin marketplace add dan memasang plugin individual. Lihat Temukan dan pasang plugin.
Setelah marketplace Anda aktif, Anda dapat memperbaruinya dengan mendorong perubahan ke repositori Anda. Pengguna menyegarkan salinan lokal mereka dengan /plugin marketplace update.

Panduan: buat marketplace lokal

Contoh ini membuat marketplace dengan satu plugin: skill quality-review untuk ulasan kode. Anda akan membuat struktur direktori, menambahkan skill, membuat manifest plugin dan katalog marketplace, kemudian memasang dan mengujinya.
1

Buat struktur direktori

2

Buat skill

Buat file SKILL.md yang mendefinisikan apa yang dilakukan skill quality-review.
my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md
3

Buat manifest plugin

Buat file plugin.json yang mendeskripsikan plugin. Manifest berada di direktori .claude-plugin/.
my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json
Menetapkan version berarti pengguna hanya menerima pembaruan ketika Anda mengubah bidang ini, jadi tingkatkan pada setiap rilis. Jika Anda menghilangkan version dan menghosting marketplace ini di git, setiap commit secara otomatis dihitung sebagai versi baru. Lihat Version resolution untuk memilih pendekatan yang tepat.
4

Buat file marketplace

Buat katalog marketplace yang mencantumkan plugin Anda.
my-marketplace/.claude-plugin/marketplace.json
5

Tambahkan dan pasang

Tambahkan marketplace dan pasang plugin.
6

Coba

Pilih beberapa kode di editor Anda dan jalankan skill baru Anda. Plugin skills memiliki namespace dengan nama plugin.
Untuk mempelajari lebih lanjut tentang apa yang dapat dilakukan plugin, termasuk hooks, agents, MCP servers, dan LSP servers, lihat Plugins.
Cara plugin dipasang: Ketika pengguna memasang plugin, Claude Code menyalin direktori plugin ke lokasi cache. Ini berarti plugin tidak dapat mereferensikan file di luar direktorinya menggunakan jalur seperti ../shared-utils, karena file tersebut tidak akan disalin.Jika Anda perlu berbagi file di seluruh plugin, gunakan symlink. Lihat Plugin caching and file resolution untuk detail.

Buat file marketplace

Buat .claude-plugin/marketplace.json di root repositori Anda. File ini mendefinisikan nama marketplace Anda, informasi pemilik, dan daftar plugin dengan sumbernya. Setiap entri plugin memerlukan minimal name dan source yang memberitahu Claude Code di mana mengambilnya. Lihat skema lengkap di bawah untuk semua field yang tersedia.

Skema marketplace

Field yang diperlukan

Nama yang dicadangkan: Nama marketplace berikut dicadangkan untuk penggunaan resmi Anthropic dan tidak dapat digunakan oleh marketplace pihak ketiga: claude-code-marketplace, claude-code-plugins, claude-plugins-official, claude-plugins-community, claude-community, anthropic-marketplace, anthropic-plugins, agent-skills, anthropic-agent-skills, knowledge-work-plugins, life-sciences, claude-for-legal, claude-for-financial-services, financial-services-plugins, first-party-plugins, healthcare. Nama yang meniru marketplace resmi, seperti official-claude-plugins atau anthropic-plugins-v2, juga diblokir. Pencadangan nama-nama ini mencegah marketplace pihak ketiga menyajikan dirinya sebagai sumber yang diterbitkan Anthropic.Claude Code memeriksa kembali nama yang dicadangkan setiap kali memuat marketplace, bukan hanya saat Anda menambahkan satu. Marketplace yang terdaftar di bawah salah satu nama ini sebelum nama menjadi dicadangkan berhenti memuat dan melaporkan bahwa itu terdaftar dari sumber yang tidak terpercaya. Hapus marketplace itu dan tambahkan kembali dari sumber Anthropic resmi. Marketplace pihak ketiga yang terpengaruh oleh nama yang baru dicadangkan memuat lagi segera setelah Anda menambahkannya kembali dengan nama yang berbeda. Sebelum v2.1.205, first-party-plugins dan healthcare tidak dicadangkan, dan marketplace yang sudah terdaftar di bawah nama yang dicadangkan terus memuat.

Field pemilik

Field opsional

description dan version juga diterima di bawah metadata untuk kompatibilitas mundur.

Entri plugin

Setiap entri plugin dalam array plugins mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari skema manifest plugin, seperti description, version, author, commands, dan hooks, ditambah field khusus marketplace ini: source, category, tags, strict, dan relevance.

Field yang diperlukan

Field plugin opsional

Field metadata standar: Field konfigurasi komponen:

Plugin sources

Plugin sources memberitahu Claude Code di mana mengambil setiap plugin individual yang tercantum di marketplace Anda. Ini diatur dalam field source dari setiap entri plugin di marketplace.json. Setelah Claude Code mengklon atau mengunduh plugin ke mesin lokal, plugin disalin ke cache plugin lokal yang tersimpan di ~/.claude/plugins/cache.
Marketplace sources vs plugin sources: Ini adalah konsep berbeda yang mengontrol hal berbeda.
  • Marketplace source: di mana mengambil katalog marketplace.json itu sendiri. Diatur ketika pengguna menjalankan /plugin marketplace add atau dalam pengaturan extraKnownMarketplaces. Mendukung ref (branch/tag) tetapi bukan sha.
  • Plugin source: di mana mengambil plugin individual yang tercantum di marketplace. Diatur dalam field source dari setiap entri plugin di dalam marketplace.json. Mendukung baik ref (branch/tag) maupun sha (commit yang tepat).
Misalnya, marketplace yang dihosting di acme-corp/plugin-catalog (marketplace source) dapat mencantumkan plugin yang diambil dari acme-corp/code-formatter (plugin source). Marketplace source dan plugin source menunjuk ke repositori berbeda dan disematkan secara independen.
Jenis sumber berbasis git di bawah ini adalah github, url, dan git-subdir. Ketika baik ref maupun sha diatur pada salah satu dari mereka, sha adalah pin yang efektif. Claude Code mengambil dan melakukan checkout pada commit yang disematkan secara langsung. Pada sebagian besar host git, termasuk GitHub, GitLab, dan Bitbucket, ini berarti instalasi berhasil bahkan jika branch atau tag yang dinamai oleh ref telah dihapus upstream, selama commit masih dapat dijangkau dari repositori. Beberapa server, seperti AWS CodeCommit, tidak mendukung pengambilan commit berdasarkan SHA. Di server tersebut ref masih harus ada dan commit yang disematkan harus dapat dijangkau darinya.

Jalur relatif

Untuk plugin di repositori yang sama, gunakan jalur yang dimulai dengan ./:
Jalur diselesaikan relatif terhadap root marketplace, yang merupakan direktori yang berisi .claude-plugin/. Dalam contoh di atas, ./plugins/my-plugin menunjuk ke <repo>/plugins/my-plugin, meskipun marketplace.json berada di <repo>/.claude-plugin/marketplace.json. Jangan gunakan ../ untuk mereferensikan jalur di luar root marketplace.
Jalur relatif diselesaikan terhadap salinan lokal marketplace, jadi mereka berfungsi ketika pengguna menambahkan marketplace Anda dari sumber git atau direktori lokal. Jika pengguna menambahkan marketplace Anda melalui URL langsung ke file marketplace.json, jalur relatif tidak akan diselesaikan, karena hanya file itu yang diunduh. Untuk distribusi berbasis URL, gunakan sumber GitHub, npm, atau URL git sebagai gantinya. Lihat Troubleshooting untuk detail.

Repositori GitHub

Anda dapat menyematkan ke branch, tag, atau commit tertentu:

Repositori Git

Anda dapat menyematkan ke branch, tag, atau commit tertentu:

Subdirektori Git

Gunakan git-subdir untuk menunjuk ke plugin yang berada di dalam subdirektori repositori git. Claude Code menggunakan klon parsial dan sparse untuk mengambil hanya subdirektori, meminimalkan bandwidth untuk monorepo besar.
Anda dapat menyematkan ke branch, tag, atau commit tertentu:
Field url juga menerima shorthand GitHub (owner/repo) atau URL SSH (git@github.com:owner/repo.git).

Paket npm

Plugin yang didistribusikan sebagai paket npm dipasang menggunakan npm install. Ini berfungsi dengan paket apa pun di registry npm publik atau registry pribadi yang dihosting tim Anda.
Untuk menyematkan ke versi tertentu, tambahkan field version:
Untuk memasang dari registry pribadi atau internal, tambahkan field registry:

Entri plugin lanjutan

Contoh ini menunjukkan entri plugin menggunakan banyak field opsional, termasuk jalur kustom untuk commands, agents, hooks, dan MCP servers:
Hal-hal penting untuk diperhatikan:
  • commands dan agents: Anda dapat menentukan beberapa direktori atau file individual. Jalur relatif terhadap root plugin.
  • ${CLAUDE_PLUGIN_ROOT}: Gunakan variabel ini dalam hooks dan config MCP server untuk mereferensikan file dalam direktori instalasi plugin. Ini diperlukan karena plugin disalin ke lokasi cache saat dipasang.
    • Lihat tabel substitusi untuk field config mana yang mensubstitusinya per tipe server
    • Untuk dependensi atau state yang harus bertahan pembaruan plugin, gunakan ${CLAUDE_PLUGIN_DATA} sebagai gantinya
  • strict: false: Karena ini diatur ke false, plugin tidak memerlukan plugin.json sendiri. Entri marketplace mendefinisikan semuanya. Lihat Strict mode di bawah.
Secara default, skills plugin dimuat dari direktori skills/ di bawah source-nya. Jalur yang tercantum dalam field skills menambah pemindaian itu:
Ketika beberapa entri plugin berbagi satu folder skills/ di root marketplace (source: "./"), cantumkan subdirektori spesifik sebagai gantinya sehingga setiap entri hanya memuat skills-nya sendiri:
Dengan sumber root marketplace, jalur yang tercantum adalah set lengkap untuk entri itu, dan direktori lain di folder skills/ bersama tidak dimuat. Mencantumkan ./skills/ itu sendiri, atau root plugin, menjaga pemindaian penuh. Jika tidak ada jalur yang tercantum ada, pemindaian default berjalan sebagai gantinya.

Strict mode

Field strict mengontrol apakah plugin.json adalah otoritas untuk definisi komponen (skills, agents, hooks, MCP servers, output styles). Kapan menggunakan setiap mode:
  • strict: true: plugin memiliki plugin.json sendiri dan mengelola komponennya sendiri. Entri marketplace dapat menambahkan skills atau hooks tambahan di atas. Ini adalah default dan berfungsi untuk sebagian besar plugin.
  • strict: false: operator marketplace menginginkan kontrol penuh. Repo plugin menyediakan file mentah, dan entri marketplace mendefinisikan file mana yang diekspos sebagai skills, agents, hooks, dll. Berguna ketika marketplace merestruktur atau mengkurasi komponen plugin secara berbeda dari yang dimaksudkan penulis plugin.

Host dan distribusikan marketplace

GitHub adalah cara yang direkomendasikan untuk host dan distribusikan marketplace:
  1. Buat repositori: siapkan repositori baru untuk marketplace Anda
  2. Tambahkan file marketplace: buat .claude-plugin/marketplace.json dengan definisi plugin Anda
  3. Bagikan dengan tim: pengguna menambahkan marketplace Anda dengan /plugin marketplace add owner/repo
Manfaat: kontrol versi bawaan, pelacakan masalah, dan fitur kolaborasi tim.

Host di layanan git lainnya

Layanan hosting git apa pun berfungsi, seperti GitLab, Bitbucket, dan server yang dihosting sendiri. Pengguna menambahkan dengan URL repositori lengkap:

Repositori pribadi

Claude Code mendukung pemasangan plugin dari repositori pribadi. Untuk instalasi manual dan pembaruan, Claude Code menggunakan helper kredensial git yang ada, jadi akses HTTPS melalui gh auth login, Keychain macOS, atau git-credential-store berfungsi sama seperti di terminal Anda. Akses SSH berfungsi selama host sudah ada di file known_hosts Anda dan kunci dimuat di ssh-agent, karena Claude Code menekan prompt SSH interaktif untuk sidik jari host dan passphrase kunci. Shorthand owner/repo GitHub mengklon melalui SSH secara default; atur CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1 untuk mengklonnya melalui HTTPS sebagai gantinya. Pembaruan otomatis latar belakang berjalan berbeda. Secara default, refresh latar belakang menonaktifkan helper kredensial git untuk git pull-nya, jadi pull tidak dapat mengautentikasi ke repositori pribadi melalui HTTPS bahkan ketika helper dikonfigurasi. Remote SSH tidak terpengaruh: kunci yang dimuat di ssh-agent mengautentikasi pull latar belakang dengan cara yang sama seperti operasi manual. Ketika pull latar belakang gagal, Claude Code kembali ke pengklonaan ulang marketplace dari awal. Pengklonaan ulang memang menggunakan kredensial git yang disimpan, tetapi dapat time out pada repositori besar, jadi pembaruan otomatis marketplace pribadi mungkin gagal secara berkala. Dua pengaturan membuat marketplace pribadi berperilaku dapat diprediksi:
  • Atur CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 untuk menyimpan klon yang ada ketika pull latar belakang gagal, alih-alih menghapus dan mengklon ulang. Plugin Anda terus bekerja dari status terakhir yang disinkronkan, dan pembaruan manual dengan /plugin marketplace update masih pull dengan kredensial Anda.
  • Konfigurasikan helper kredensial git, misalnya dengan gh auth setup-git untuk GitHub, sehingga fallback pengklonaan ulang dapat mengautentikasi tanpa prompt.
Menetapkan token penyedia seperti GITHUB_TOKEN di lingkungan Anda tidak dengan sendirinya mengaktifkan autentikasi latar belakang. Token hanya berlaku melalui helper kredensial yang dikonfigurasi, misalnya helper CLI gh, yang membaca GH_TOKEN dan GITHUB_TOKEN. Untuk membuat pull latar belakang itu sendiri mengautentikasi melalui HTTPS, konfigurasikan penulisan ulang URL git global. Penulisan ulang menyematkan token dalam URL jarak jauh, jadi berlaku meskipun pull latar belakang menonaktifkan helper kredensial, dan pull yang berhasil melewati fallback pengklonaan ulang. Contoh berikut menulis ulang URL repositori marketplace untuk menyertakan token akses:
Cakupkan penulisan ulang ke jalur repositori marketplace atau organisasi. Penulisan ulang yang dasarnya hanya host berlaku untuk setiap fetch dan push ke host itu di mesin dan mengganti kredensial normal Anda, termasuk push ke repositori Anda sendiri. Setiap penyedia mengharapkan nama pengguna berbeda dalam URL yang ditulis ulang, dan cakupan jalur yang sama berlaku untuk setiap penyedia. Untuk server yang dihosting sendiri, ganti nama host dengan nama host server Anda: Penulisan ulang menyimpan token dalam plaintext di gitconfig Anda, jadi gunakan token dengan akses read-only ke repositori marketplace.
Dalam lingkungan CI/CD, konfigurasikan helper kredensial git sebelum memasang plugin dari repositori pribadi. Di GitHub Actions, ekspor token dengan akses read ke repositori marketplace sebagai GH_TOKEN, kemudian jalankan gh auth setup-git. Token workflow default hanya dapat mengakses repositori workflow itu sendiri, jadi marketplace pribadi di repositori lain memerlukan token akses pribadi atau token aplikasi. Penulisan ulang URL global yang dikonfigurasi dalam pipeline juga mengautentikasi pull latar belakang secara langsung.

Uji secara lokal sebelum distribusi

Uji marketplace Anda secara lokal sebelum berbagi:
Untuk rangkaian lengkap perintah add (GitHub, URL Git, jalur lokal, URL jarak jauh), lihat Tambahkan marketplace.

Wajibkan marketplace untuk tim Anda

Anda dapat mengonfigurasi repositori Anda sehingga anggota tim secara otomatis diminta untuk memasang marketplace Anda ketika mereka mempercayai folder proyek. Tambahkan marketplace Anda ke .claude/settings.json:
Anda juga dapat menentukan plugin mana yang harus diaktifkan secara default:
Untuk opsi konfigurasi lengkap, lihat Plugin settings.
Jika Anda menggunakan sumber directory atau file lokal dengan jalur relatif, jalur diselesaikan terhadap checkout utama repositori Anda. Ketika Anda menjalankan Claude Code dari git worktree, jalur masih menunjuk ke checkout utama, jadi semua worktrees berbagi lokasi marketplace yang sama. Status marketplace disimpan sekali per pengguna di ~/.claude/plugins/known_marketplaces.json, bukan per proyek.

Pra-isi plugin untuk container

Untuk image container dan lingkungan CI, Anda dapat pra-isi direktori plugin saat waktu build sehingga Claude Code dimulai dengan marketplace dan plugin yang sudah tersedia, tanpa mengklon apa pun saat runtime. Atur variabel lingkungan CLAUDE_CODE_PLUGIN_SEED_DIR untuk menunjuk ke direktori ini. Untuk melapisi beberapa direktori seed, pisahkan jalur dengan : di Unix atau ; di Windows. Claude Code mencari setiap direktori secara berurutan dan menggunakan seed pertama yang berisi marketplace atau cache plugin yang diberikan. Direktori seed mencerminkan struktur ~/.claude/plugins:
Untuk membangun direktori seed, jalankan Claude Code sekali selama image build, pasang plugin yang Anda butuhkan, kemudian salin direktori ~/.claude/plugins yang dihasilkan ke image Anda dan tunjukkan CLAUDE_CODE_PLUGIN_SEED_DIR ke sana. Untuk melewati langkah copy, atur CLAUDE_CODE_PLUGIN_CACHE_DIR ke jalur target seed Anda selama build sehingga plugin dipasang langsung ke sana:
Kemudian atur CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed di lingkungan runtime container Anda sehingga Claude Code membaca dari seed saat startup. Saat startup, Claude Code mendaftarkan marketplace yang ditemukan di known_marketplaces.json seed ke dalam konfigurasi utama, dan menggunakan cache plugin yang ditemukan di bawah cache/ di tempat tanpa mengklon ulang. Ini berfungsi dalam mode interaktif dan mode non-interaktif dengan flag -p. Detail perilaku:
  • Read-only: direktori seed tidak pernah ditulis. Pembaruan otomatis dinonaktifkan untuk marketplace seed karena git pull akan gagal di filesystem read-only.
  • Entri seed mengambil prioritas: marketplace yang dideklarasikan dalam seed menimpa entri yang cocok apa pun dalam konfigurasi pengguna di setiap startup. Untuk opt out dari plugin seed, gunakan /plugin disable daripada menghapus marketplace.
  • Resolusi jalur: Claude Code menemukan konten marketplace dengan menyelidiki $CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/ saat runtime, bukan dengan mempercayai jalur yang disimpan di dalam JSON seed. Ini berarti seed berfungsi dengan benar bahkan ketika dipasang di jalur berbeda dari tempat dibangun.
  • Mutasi diblokir: menjalankan /plugin marketplace remove atau /plugin marketplace update terhadap marketplace yang dikelola seed gagal dengan panduan untuk meminta administrator Anda memperbarui image seed.
  • Komposisi dengan pengaturan: jika extraKnownMarketplaces atau enabledPlugins mendeklarasikan marketplace yang sudah ada di seed, Claude Code menggunakan salinan seed alih-alih mengklon.

Pembatasan marketplace yang dikelola

Untuk organisasi yang memerlukan kontrol ketat atas sumber plugin, administrator dapat membatasi marketplace plugin mana yang diizinkan pengguna untuk tambahkan menggunakan pengaturan strictKnownMarketplaces dalam pengaturan yang dikelola. Untuk juga menolak flag CLI yang sideload plugin, agen, dan server MCP untuk satu kali jalankan, pasangkan dengan disableSideloadFlags. Untuk allowlist marketplace mana yang plugin-nya dapat muncul sebagai saran instalasi kontekstual, atur pluginSuggestionMarketplaces. Ketika strictKnownMarketplaces dikonfigurasi dalam pengaturan yang dikelola, perilaku pembatasan tergantung pada nilainya:

Konfigurasi umum

Nonaktifkan semua penambahan marketplace:
Izinkan marketplace tertentu saja:
Izinkan semua marketplace dari server git internal menggunakan pencocokan pola regex pada host. Ini adalah pendekatan yang direkomendasikan untuk GitHub Enterprise Server atau instance GitLab yang dihosting sendiri:
Izinkan marketplace berbasis filesystem dari direktori tertentu menggunakan pencocokan pola regex pada jalur:
Gunakan ".*" sebagai pathPattern untuk mengizinkan jalur filesystem apa pun sambil tetap mengontrol sumber jaringan dengan hostPattern.
strictKnownMarketplaces membatasi apa yang dapat ditambahkan pengguna, tetapi tidak mendaftarkan marketplace dengan sendirinya. Untuk membuat marketplace yang diizinkan tersedia secara otomatis tanpa pengguna menjalankan /plugin marketplace add, pasangkan dengan extraKnownMarketplaces dalam managed-settings.json yang sama. Lihat Menggunakan keduanya bersama-sama.

Cara pembatasan bekerja

Pembatasan diperiksa sebelum operasi jaringan atau filesystem apa pun. Pemeriksaan berjalan pada marketplace add dan pada plugin install, update, refresh, dan auto-update. Jika marketplace ditambahkan sebelum kebijakan dikonfigurasi dan sumbernya tidak lagi cocok dengan daftar izin, Claude Code menolak untuk memasang atau memperbarui plugin darinya. Penegakan yang sama berlaku untuk blockedMarketplaces. Daftar izin menggunakan pencocokan tepat untuk sebagian besar jenis sumber. Agar marketplace diizinkan, semua field yang ditentukan harus cocok secara tepat:
  • Untuk sumber GitHub: repo diperlukan, dan ref atau path juga harus cocok jika ditentukan dalam daftar izin
  • Untuk sumber URL: URL lengkap harus cocok secara tepat
  • Untuk sumber hostPattern: host marketplace dicocokkan dengan pola regex
  • Untuk sumber pathPattern: jalur filesystem marketplace dicocokkan dengan pola regex
Pencocokan tepat tidak menormalkan URL: garis miring trailing, akhiran .git, atau bentuk ssh:// versus https:// diperlakukan sebagai nilai berbeda. Jika marketplace organisasi Anda dapat diklon oleh lebih dari satu bentuk URL, lebih suka entri hostPattern daripada URL literal sehingga semua bentuk cocok. Karena strictKnownMarketplaces diatur dalam pengaturan yang dikelola, konfigurasi pengguna individual dan proyek tidak dapat mengganti pembatasan ini. Untuk detail konfigurasi lengkap termasuk semua jenis sumber yang didukung dan perbandingan dengan extraKnownMarketplaces, lihat referensi strictKnownMarketplaces.

Resolusi versi dan saluran rilis

Versi plugin menentukan jalur cache dan deteksi pembaruan: jika versi yang diselesaikan cocok dengan apa yang sudah dimiliki pengguna, /plugin update dan auto-update melewati plugin. Claude Code menyelesaikan versi plugin dari yang pertama dari ini yang diatur:
  1. version dalam plugin.json plugin
  2. version dalam entri marketplace plugin
  3. SHA commit git dari sumber plugin
Untuk jenis sumber berbasis git github, url, git-subdir, dan jalur relatif di dalam marketplace yang dihosting git, Anda dapat menghilangkan version sepenuhnya dan setiap commit baru diperlakukan sebagai versi baru. Ini adalah setup paling sederhana untuk plugin internal atau yang sedang dikembangkan secara aktif.
Menetapkan version menyematkan plugin. Jika plugin.json mendeklarasikan "version": "1.0.0", mendorong commit baru tanpa mengubah string itu tidak melakukan apa pun untuk pengguna yang ada, karena Claude Code melihat versi yang sama dan menyimpan salinan cache. Bump field pada setiap rilis, atau hilangkan untuk menggunakan SHA commit.Hindari menetapkan version di kedua plugin.json dan entri marketplace. Nilai plugin.json selalu menang secara diam-diam, jadi versi manifest yang basi dapat menyembunyikan versi yang Anda atur di marketplace.json.

Siapkan saluran rilis

Untuk mendukung saluran rilis “stable” dan “latest” untuk plugin Anda, Anda dapat menyiapkan dua marketplace yang menunjuk ke refs atau SHA berbeda dari repo yang sama. Anda kemudian dapat menetapkan dua marketplace ke grup pengguna berbeda melalui pengaturan yang dikelola.
Setiap saluran harus diselesaikan ke versi yang berbeda. Jika Anda menggunakan versi eksplisit, plugin.json harus mendeklarasikan version berbeda di setiap ref yang disematkan. Jika Anda menghilangkan version, SHA commit yang berbeda sudah membedakan saluran. Jika dua refs diselesaikan ke string versi yang sama, Claude Code memperlakukannya sebagai identik dan melewati pembaruan.
Tetapkan setiap marketplace ke grup pengguna yang sesuai melalui pengaturan yang dikelola. Misalnya, grup stabil menerima:
Grup early-access menerima latest-tools sebagai gantinya:

Sematkan versi dependensi

Plugin dapat membatasi dependensinya ke rentang semver sehingga pembaruan dependensi tidak merusak plugin yang bergantung. Lihat Batasi versi dependensi plugin untuk konvensi git-tag {plugin-name}--v{version}, sintaks rentang, dan bagaimana beberapa batasan pada dependensi yang sama digabungkan.

Ubah nama atau hapus plugin

name plugin adalah pengidentifikasi stabilnya. Pengguna mereferensikannya dalam enabledPlugins, pluginConfigs, dan perintah /plugin install, jadi mengubahnya merusak setiap instalasi yang ada. Untuk mengubah label yang ditampilkan di UI tanpa merusak instalasi, atur displayName dan jaga name tetap tidak berubah. Jika Anda harus mengubah name plugin, atau Anda menghapus plugin dari array plugins, tambahkan entri renames tingkat atas sehingga pengguna yang ada bermigrasi alih-alih melihat kesalahan plugin-not-found. Migrasi otomatis memerlukan Claude Code v2.1.193 atau lebih baru. Petakan setiap nama lama ke nama barunya, atau ke null jika plugin tidak lagi ada. Contoh berikut mengubah nama formatter menjadi code-formatter dan mencatat bahwa legacy-linter dihapus:
Ketika pengguna memulai Claude Code dengan nama lama masih dalam pengaturan mereka, Claude Code mengikuti peta renames:
  • Jika entri menunjuk ke nama baru, Claude Code memuat plugin dengan nama barunya dan menampilkan pemberitahuan satu baris seperti Renamed to "code-formatter" in the "acme-tools" marketplace. Kemudian menulis ulang kunci lama ke kunci baru dalam cakupan pengaturan pengguna, proyek, dan lokal untuk kedua enabledPlugins dan pluginConfigs, sehingga pemberitahuan muncul sekali.
  • Untuk entri null, Claude Code menghapus kunci lama dan pemberitahuan melaporkan bahwa plugin dihapus dari marketplace.
  • Jika plugin yang diubah nama menggunakan sumber jarak jauh seperti github atau npm, Claude Code melaporkan plugin-cache-miss setelah pengubahan nama dan pengguna harus menjalankan /plugin install sekali untuk mengambilnya dengan nama baru.
Perlakukan renames sebagai riwayat append-only: jaga entri lama tetap ada bahkan setelah Anda mengharapkan setiap pengguna untuk bermigrasi. Claude Code mengikuti rantai, jadi jika Anda kemudian mengubah nama code-formatter menjadi formatter-pro, tambahkan entri kedua daripada mengedit yang pertama. Pengguna yang masih memiliki formatter asli yang diaktifkan kemudian diselesaikan melalui kedua entri ke formatter-pro. Jalankan claude plugin validate . setelah mengedit peta; itu menolak entri apa pun yang rantainya membentuk siklus atau tidak berakhir di null atau nama yang terdaftar dalam plugins.
Pengaturan yang dikelola dan kebijakan adalah read-only untuk Claude Code, jadi plugin yang diaktifkan di sana tidak dapat ditulis ulang secara otomatis. Plugin yang diubah nama masih dimuat setiap sesi, tetapi pemberitahuan pengubahan nama berulang sampai administrator memperbarui enabledPlugins dalam file pengaturan yang dikelola untuk menggunakan nama baru. Hal yang sama berlaku untuk plugin yang diaktifkan melalui sumber read-only lainnya seperti --add-dir.
Versi Claude Code sebelumnya mengabaikan field renames dan melaporkan plugin-not-found untuk nama lama.

Validasi dan pengujian

Uji marketplace Anda sebelum berbagi. Validasi sintaks JSON marketplace Anda:
Atau dari dalam Claude Code:
Tambahkan marketplace untuk pengujian:
Pasang plugin uji untuk memverifikasi semuanya berfungsi:
Untuk alur kerja pengujian plugin lengkap, lihat Uji plugin Anda secara lokal. Untuk troubleshooting teknis, lihat Plugins reference.

Kelola marketplace dari CLI

Claude Code menyediakan subperintah claude plugin marketplace non-interaktif untuk scripting dan otomasi. Ini setara dengan perintah /plugin marketplace yang tersedia dalam sesi interaktif.

Plugin marketplace add

Tambahkan marketplace dari repositori GitHub, URL git, URL jarak jauh, atau jalur lokal.
Argumen:
  • <source>: Shorthand GitHub owner/repo, URL git, URL jarak jauh ke file marketplace.json, atau jalur direktori lokal. Untuk menyematkan ke branch atau tag, tambahkan @ref ke shorthand GitHub atau #ref ke URL git
URL harus menyertakan skemanya. Mulai dari Claude Code v2.1.196, host yang diketik tanpa skema, seperti gitlab.example.com/team/plugins, ditolak sebagai shorthand owner/repo yang tidak valid dan kesalahan memberi tahu Anda untuk menambahkan https:// atau menggunakan ./ untuk jalur lokal. Versi sebelumnya salah membacanya sebagai jalur repositori GitHub dan gagal saat clone dengan kesalahan GitHub not-found. Opsi: Tambahkan marketplace dari GitHub menggunakan shorthand owner/repo:
Sematkan ke branch atau tag tertentu dengan @ref:
Tambahkan dari URL git di host non-GitHub:
Tambahkan dari URL jarak jauh yang melayani file marketplace.json secara langsung:
Tambahkan dari direktori lokal untuk pengujian:
Deklarasikan marketplace di scope proyek sehingga dibagikan dengan tim Anda melalui .claude/settings.json:
Untuk monorepo, batasi checkout ke direktori yang berisi konten plugin:

Plugin marketplace list

Daftar semua marketplace yang dikonfigurasi.
Opsi: Dengan --json, setiap entri mencakup name, source, dan bidang khusus sumber: repo untuk sumber GitHub, url untuk sumber git dan URL, dan path untuk sumber lokal. Sumber GitHub dan git juga menyertakan bidang ref ketika marketplace ditambahkan dengan branch atau tag yang disematkan.

Plugin marketplace remove

Hapus marketplace yang dikonfigurasi. Alias rm juga diterima.
Argumen:
  • <name>: nama marketplace untuk dihapus, seperti yang ditunjukkan oleh claude plugin marketplace list. Ini adalah name dari marketplace.json, bukan sumber yang Anda teruskan ke add
Opsi:
Menghapus marketplace dari scope terakhirnya yang tersisa juga mencopot plugin apa pun yang Anda pasang darinya. Untuk menyegarkan marketplace tanpa kehilangan plugin yang dipasang, gunakan claude plugin marketplace update sebagai gantinya.

Plugin marketplace update

Segarkan marketplace dari sumbernya untuk mengambil plugin baru dan perubahan versi. Marketplace yang ditambahkan dengan branch atau tag ref diperbarui ke commit terbaru dari ref tersebut, bukan branch default repositori.
Argumen:
  • [name]: nama marketplace untuk diperbarui, seperti yang ditunjukkan oleh claude plugin marketplace list. Memperbarui semua marketplace jika dihilangkan
Baik remove maupun update gagal ketika dijalankan terhadap marketplace yang dikelola seed, yang bersifat read-only. Saat memperbarui semua marketplace, entri yang dikelola seed dilewati dan marketplace lainnya masih diperbarui. Untuk mengubah plugin yang disediakan seed, minta administrator Anda memperbarui image seed. Lihat Pra-isi plugin untuk container.

Troubleshooting

Marketplace tidak memuat

Gejala: Tidak dapat menambahkan marketplace atau melihat plugin darinya Solusi:
  • Verifikasi URL marketplace dapat diakses
  • Periksa bahwa .claude-plugin/marketplace.json ada di jalur yang ditentukan
  • Pastikan sintaks JSON valid menggunakan claude plugin validate atau /plugin validate. Untuk memeriksa frontmatter skill, agent, dan command, jalankan perintah terhadap setiap direktori plugin
  • Untuk repositori pribadi, konfirmasi Anda memiliki izin akses

Kesalahan validasi marketplace

Jalankan claude plugin validate . atau /plugin validate . dari direktori marketplace Anda untuk memeriksa masalah. Ketika ditunjukkan ke direktori marketplace, validator memeriksa marketplace.json untuk kesalahan skema, nama plugin duplikat, dan traversal jalur sumber. Untuk setiap entri yang source-nya adalah jalur lokal, validator juga memvalidasi plugin.json plugin tersebut dan memberikan peringatan ketika version entri tidak cocok dengan yang ada di plugin.json. Masalah yang ditemukan dalam plugin.json plugin diawali dengan indeks entri, dalam bentuk plugins[2] plugin.json →. Mulai dari Claude Code v2.1.196, pass per-entri juga:
  • mencakup plugin yang source-nya adalah .
  • berjalan ketika marketplace.json berada di luar direktori .claude-plugin, menyelesaikan sumber terhadap direktori file itu sendiri
  • melaporkan masalah setiap entri bahkan ketika bagian lain dari file memiliki kesalahan skema
Versi sebelumnya melewati plugin di root marketplace dan hanya turun dari .claude-plugin/marketplace.json. Untuk memvalidasi plugin.json plugin individual dan file skill, agent, command, dan hook-nya, jalankan perintah terhadap direktori plugin itu sendiri, misalnya claude plugin validate ./plugins/my-plugin. Kesalahan umum: Peringatan (non-blocking):
  • Marketplace has no plugins defined: tambahkan setidaknya satu plugin ke array plugins
  • No marketplace description provided: tambahkan description tingkat atas untuk membantu pengguna memahami marketplace Anda
  • Plugin name "x" is not kebab-case: nama plugin berisi huruf besar, spasi, atau karakter khusus. Ubah nama menjadi huruf kecil, digit, dan tanda hubung saja (misalnya, my-plugin). Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace claude.ai menolaknya.

Kegagalan instalasi plugin

Gejala: Marketplace muncul tetapi instalasi plugin gagal Solusi:
  • Verifikasi URL sumber plugin dapat diakses
  • Periksa bahwa direktori plugin berisi file yang diperlukan
  • Untuk sumber GitHub, pastikan repositori publik atau Anda memiliki akses
  • Uji sumber plugin secara manual dengan mengklon/mengunduh
  • Jika sumber menentukan baik ref maupun sha, cabang atau tag upstream yang dihapus tidak memblokir instalasi pada sebagian besar host git, termasuk GitHub, GitLab, dan Bitbucket. Pada server yang tidak mendukung pengambilan commit berdasarkan SHA, seperti AWS CodeCommit, ref masih harus ada dan commit yang ditentukan harus dapat dijangkau darinya. Jika instalasi masih gagal, konfirmasi commit yang ditentukan masih ada di repositori

Autentikasi repositori pribadi gagal

Gejala: Kesalahan autentikasi saat memasang plugin dari repositori pribadi Solusi: Untuk instalasi manual dan pembaruan:
  • Verifikasi Anda diautentikasi dengan penyedia git Anda (misalnya, jalankan gh auth status untuk GitHub)
  • Periksa bahwa helper kredensial Anda dikonfigurasi dengan benar: git config --global credential.helper
  • Coba klon repositori secara manual untuk memverifikasi kredensial Anda berfungsi
Untuk pembaruan otomatis latar belakang:
  • Secara default, penyegaran latar belakang menonaktifkan helper kredensial git untuk pull, sehingga pull tidak dapat diautentikasi melalui HTTPS. Remote SSH dengan kunci yang dimuat di ssh-agent masih diautentikasi. Pull yang gagal memicu re-clone dari awal, yang menggunakan kredensial tersimpan Anda tetapi mungkin time out pada repositori besar
  • Atur CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 untuk menyimpan klon yang ada ketika pull latar belakang gagal
  • Konfigurasikan helper kredensial git, misalnya gh auth setup-git, sehingga fallback re-clone dapat diautentikasi
  • Jika re-clone time out pada repositori besar, tingkatkan batas dengan CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS
  • Konfigurasikan rewrite URL git yang dibatasi pada repositori marketplace sehingga pull latar belakang diautentikasi secara langsung
  • Atau perbarui marketplace pribadi secara manual dengan /plugin marketplace update <name>, yang menggunakan kredensial Anda

Pembaruan marketplace gagal di lingkungan offline

Gejala: Marketplace git pull gagal di latar belakang dan Claude Code berulang kali mencoba re-clone yang tidak dapat berhasil. Penyebab: Secara default, ketika git pull gagal, Claude Code mencoba re-clone dari awal. Di lingkungan offline atau airgapped, re-cloning gagal dengan cara yang sama, dan pemulihan cache sebelumnya sesudahnya adalah best-effort. Refresh berjalan di latar belakang setelah startup, sehingga tidak menunda startup, tetapi setiap sesi mengulangi upaya yang gagal dan setiap operasi git dapat menunggu timeout 120 detik. Solusi: Atur CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 untuk melewati upaya re-clone dan terus menggunakan cache yang ada ketika pull gagal:
Dengan variabel ini diatur, Claude Code mempertahankan klon marketplace yang sudah usang pada kegagalan git pull dan terus menggunakan status terakhir yang diketahui baik. Untuk deployment yang sepenuhnya offline di mana repositori tidak akan pernah dapat dijangkau, gunakan CLAUDE_CODE_PLUGIN_SEED_DIR untuk pra-isi direktori plugin saat waktu build sebagai gantinya.

Operasi Git time out

Gejala: Instalasi plugin atau pembaruan marketplace gagal dengan kesalahan timeout seperti “Git clone timed out after 120s” atau “Git pull timed out after 120s”. Penyebab: Claude Code menggunakan timeout 120 detik untuk semua operasi git, termasuk mengklon repositori plugin dan menarik pembaruan marketplace. Repositori besar atau koneksi jaringan lambat mungkin melebihi batas ini. Solusi: Tingkatkan timeout menggunakan variabel lingkungan CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS. Nilainya dalam milidetik:

Plugin dengan jalur relatif gagal di marketplace berbasis URL

Gejala: Menambahkan marketplace melalui URL (seperti https://example.com/marketplace.json), tetapi plugin dengan sumber jalur relatif seperti "./plugins/my-plugin" gagal dipasang dengan kesalahan “path not found”. Penyebab: Marketplace berbasis URL hanya mengunduh file marketplace.json itu sendiri. Mereka tidak mengunduh file plugin dari server. Jalur relatif dalam entri marketplace mereferensikan file di server jarak jauh yang tidak diunduh. Solusi:
  • Gunakan sumber eksternal: Ubah entri plugin untuk menggunakan sumber GitHub, npm, atau URL git alih-alih jalur relatif:
  • Gunakan marketplace berbasis Git: Host marketplace Anda di repositori Git dan tambahkan dengan URL git. Marketplace berbasis Git mengklon seluruh repositori, membuat jalur relatif berfungsi dengan benar.

File tidak ditemukan setelah instalasi

Gejala: Plugin dipasang tetapi referensi ke file gagal, terutama file di luar direktori plugin Penyebab: Plugin disalin ke direktori cache daripada digunakan di tempat. Jalur yang mereferensikan file di luar direktori plugin (seperti ../shared-utils) tidak akan berfungsi karena file tersebut tidak disalin. Solusi: Lihat Plugin caching and file resolution untuk solusi termasuk symlink dan restruktur direktori. Untuk alat debugging tambahan dan masalah umum, lihat Debugging and development tools.

Lihat juga