Jawaban singkat untuk pertanyaan yang paling sering diajukan pembaca tentang topik ini.
01Apa itu plugin marketplace Claude Code?
Marketplace adalah katalog yang mendistribusikan plugin Claude Code. Ia satu file, .claude-plugin/marketplace.json, di akar sebuah repository, yang mendaftar name, owner, dan array plugin berikut source-nya. Pengguna menambahkan marketplace-nya sekali, lalu memasang plugin satu per satu dari sana berdasarkan nama.
02Kenapa pengguna saya tidak menerima pembaruan plugin saya?
Hampir selalu karena field version. Kalau Anda menyetel version di sebuah entri plugin, plugin-nya terkunci ke string itu dan pengguna menerima pembaruan hanya ketika string-nya berubah, jadi mendorong perbaikan tanpa menaikkannya meninggalkan semua orang di salinan cache. Kalau Anda menghilangkan version di source git, versinya datang dari commit yang terselesaikan dan tiap push menjadi pembaruan.
03Tipe source plugin mana yang sebaiknya saya pakai?
Path relatif paling sederhana ketika plugin tinggal di repository yang sama dengan marketplace-nya. Pakai source github atau url ketika sebuah plugin punya repository dan siklus rilisnya sendiri, git-subdir untuk direktori di dalam monorepo, dan npm kalau Anda memang sudah menerbitkan di sana. Source archive dan command ada untuk sistem build, bukan untuk manusia.
04Bagaimana mengganti nama plugin tanpa merusak instalasi yang ada?
Tambahkan objek renames ke marketplace.json yang memetakan nama lama ke nama baru, dan Claude Code mengikuti rantai penggantian namanya secara otomatis untuk pengguna yang memasang nama lama. Memetakan nama lama ke null menandai plugin-nya sudah dihapus. Ini butuh Claude Code v2.1.193 atau lebih baru.
05Bagaimana mendistribusikan marketplace ke seluruh tim saya?
Tambahkan extraKnownMarketplaces ke .claude/settings.json proyeknya supaya marketplace-nya tiba bersama repository begitu foldernya dipercaya, lalu daftarkan plugin-nya di bawah enabledPlugins. Organisasi juga bisa membatasi marketplace mana yang boleh dipakai sama sekali dengan managed setting strictKnownMarketplaces.
Plugin marketplace Claude Code adalah satu file, .claude-plugin/marketplace.json, di akar sebuah repository. Ia butuh name, owner, dan daftar plugin, masing-masing dengan source. Satu keputusan yang paling banyak melahirkan pekerjaan dukungan adalah field version: setel dan naikkan di tiap rilis, atau pengguna Anda diam-diam tetap menjalankan salinan cache.
Saya menerbitkan sebuah marketplace internal, mendorong perbaikan ke sebuah plugin, menyuruh tim memperbarui, lalu melihat tiga orang tetap melaporkan perilaku lama. Tidak ada yang rusak. Saya cuma lupa menaruh version di satu entri dan menyetelnya di entri lain, dan keduanya berperilaku berlawanan — jenis detail yang Anda ketahui dari rekan kerja ketimbang dari stack trace.
Tulisan ini sisi penulisan dari plugin: manifest-nya dan tiap field yang penting, tujuh tipe source dan kapan masing-masing jadi jawaban yang benar, bagaimana versioning sebenarnya menentukan siapa yang menerima pembaruan Anda, renames dan strict mode, memvalidasi sebelum menerbitkan, membawa marketplace-nya ke mesin sebuah tim tanpa menyuruh siapa pun mengetik perintah, serta mengunci marketplace mana yang boleh dipakai sebuah organisasi sama sekali.
Manifest-nya kecil, dan tiga field wajib
Hanya name, owner dan plugins yang wajib, dan tiap entri plugin cuma butuh name dan source. Sisanya — displayName, description, version, author, license, keywords, category — ada supaya entri itu terbaca enak di tab Discover dan supaya Anda bisa mengendalikan pembaruan. Ini file yang realistis, bukan yang minimal:
Dua detail gampang terlewat. Path relatif diselesaikan dari akar marketplace, bukan dari direktori .claude-plugin yang memuat file-nya. Dan sekumpulan nama marketplace dicadangkan untuk Anthropic — claude-plugins-official, anthropic-plugins, agent-skills dan belasan lainnya — berikut nama yang meniru mereka, jadi pilih sesuatu yang jelas milik Anda.
Tujuh tipe source, dan yang kemungkinan Anda butuhkan
Field source menentukan dari mana plugin-nya diambil, dan pilihannya berkonsekuensi lebih besar dari kelihatannya. Path relatif menaruh semuanya dalam satu repository dan adalah hal paling sederhana yang bekerja. Source github atau url membuat sebuah plugin bisa tinggal di repository-nya sendiri dengan siklus rilisnya sendiri. Sisanya ada untuk situasi khusus.
Memilih tipe source:
Source
Kapan ia jawaban yang benar
Path relatif
Plugin tinggal di repository yang sama dengan marketplace-nya. Harus diawali titik-garis miring, kecuali Anda menyetel metadata.pluginRoot dan memakai nama direktori polos
github atau url
Plugin-nya punya repository sendiri. ref opsional mengunci branch atau tag; sha opsional mengunci commit 40 karakter persis
git-subdir
Plugin-nya sebuah direktori di dalam monorepo besar. Sparse clone, jadi Anda tidak menarik seluruhnya
npm
Anda memang sudah menerbitkan ke sebuah registry. Menerima package, rentang version opsional, dan URL registry kustom
archive atau command
Sebuah zip lewat HTTPS dengan sha256 opsional untuk integritas, atau perintah lokal yang mencetak direktori plugin. Keduanya untuk sistem build, bukan untuk manusia
Dua batasan menggigit dalam praktik. Marketplace yang didistribusikan sebagai URL marketplace.json polos sama sekali tidak bisa menyelesaikan path relatif, jadi file yang bekerja dari git clone rusak ketika Anda menaruhnya sebagai file biasa — pakai tipe source lain. Dan archive harus HTTPS dari ujung ke ujung, termasuk setiap redirect, dengan batas 256 MiB.
Version adalah sakelar pembaruan, dan ia bekerja dua arah
Ini field yang layak dipahami benar, karena kedua mode gagalnya tampak seperti hal lain. Apa yang dilakukan version tergantung apakah Anda menyetelnya dan tipe source apa yang Anda pakai:
Setel version, dan plugin-nya terkunci ke string itu. Pengguna mendapat pembaruan hanya ketika string-nya berubah — jadi mendorong perbaikan tanpa menaikkannya meninggalkan semua orang di salinan cache.
Hilangkan version di source git, dan versinya diturunkan dari commit yang terselesaikan. Tiap commit yang Anda dorong jadi pembaruan buat semua orang, termasuk yang Anda maksud sebagai pekerjaan setengah jadi.
Source command selalu menyertakan hash keluaran perintahnya, dan source archive memakai sha256 kalau Anda menyetelnya, jadi version eksplisit tidak mengunci keduanya.
Dua kanal rilis tidak mahal dijalankan: terbitkan plugin yang sama dua kali, di marketplace stable yang dikunci ke branch stable dan marketplace latest yang dikunci ke latest. Yang mau hal baru menambahkan marketplace kedua; sisanya tidak pernah sadar Anda merilis. Itu jauh lebih ringan daripada mencoba menyandikan toleransi risiko ke dalam rentang versi.
Renames dan strict mode, supaya Anda boleh berubah pikiran
Mengganti nama plugin biasanya menelantarkan semua orang yang memasang nama lamanya. Objek renames memperbaikinya: petakan nama lama ke nama baru dan Claude Code mengikuti rantainya otomatis, atau petakan ke null untuk menandai plugin itu dihapus. Ia butuh v2.1.193 atau lebih baru, dan biayanya satu baris, jadi tambahkan sejak pertama kali Anda mengganti nama apa pun ketimbang menjanjikan diri akan ingat nanti.
Strict mode menentukan siapa pemilik daftar komponennya. Dibiarkan di bawaannya, true, plugin.json milik plugin itu sendiri adalah otoritasnya dan entri marketplace Anda boleh menambahkan komponen ekstra di atasnya. Setel false dan entri marketplace-nya menjadi seluruh definisinya, yang berbenturan kalau plugin.json juga mendeklarasikan komponen. Pakai false hanya ketika Anda operator yang sengaja mengendalikan apa yang diekspos plugin pihak ketiga.
Validasi sebelum menerbitkan
Ada validator sungguhan, dan ia menangkap error yang selain itu tak terlihat sampai seorang pengguna melapor: sintaks, nama plugin ganda, path source yang melintas keluar repository, file plugin.json lokal yang tidak sah, dan ketidakcocokan versi antara entri dan plugin-nya. Field yang tidak dikenal kembali sebagai peringatan bukan error, dan nama field yang nyaris benar dapat saran — pakai strict kalau Anda mau peringatan menggagalkan run-nya.
# Add a marketplace — GitHub shorthand, a git URL, or a path
claude plugin marketplace add acme-corp/claude-plugins
claude plugin marketplace add acme-corp/claude-plugins@v2.0
claude plugin marketplace add https://gitlab.com/team/plugins.git
claude plugin marketplace add ./my-marketplace --scope project
claude plugin marketplace list [--json]
claude plugin marketplace update [name]
claude plugin marketplace remove <name> [--scope <scope>]
# Validate BEFORE you publish. This is the whole quality gate.
claude plugin validate .
claude plugin validate ./my-plugin --strict # warnings become errors
# What a user actually runs
/plugin install code-formatter@acme-tools
/plugin install code-formatter@acme-tools --scope project
Menggulirkannya tanpa menyuruh siapa pun mengetik perintah
Jalur yang bisa diskalakan adalah settings, bukan instruksi. Taruh extraKnownMarketplaces di file settings proyek dan marketplace-nya tiba bersama repository-nya begitu foldernya dipercaya; tambahkan enabledPlugins dan plugin-nya tiba bersamanya. Catat satu perubahan v2.1.195 yang layak diantisipasi: menambahkan marketplace lewat jalan ini tidak lagi memasang plugin yang berasal dari source eksternal, jadi seorang anggota melihat perintah install-nya, bukan plugin yang jalan.
// .claude/settings.json — the marketplace arrives with the repo
{
"extraKnownMarketplaces": {
"acme-tools": {
"source": { "source": "github", "repo": "acme-corp/claude-plugins" },
"autoUpdate": true // managed settings only
}
},
"enabledPlugins": { "code-formatter@acme-tools": true }
}
// Managed settings — an allowlist of what may be added at all.
{
"strictKnownMarketplaces": [
{ "source": "github", "repo": "acme-corp/*" },
{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }
]
}
// undefined = no restriction. [] = total lockdown, official
// marketplace included.
Menentukan apa yang boleh ditambahkan sebuah organisasi
Untuk lingkungan terkelola, strictKnownMarketplaces adalah allowlist marketplace yang boleh ditambahkan pengguna. Biarkan tidak terdefinisi dan tidak ada batasan; setel ke array kosong dan Anda mendapat penguncian total, marketplace resmi termasuk. Entri-nya mencocokkan repository GitHub, termasuk wildcard pemilik, URL persis, atau ekspresi reguler terhadap host atau path filesystem.
Dua tuas kecil layak diketahui. Entri marketplace bisa membawa objek relevance, dan ketika administrator meng-allowlist marketplace-nya lewat managed setting pluginSuggestionMarketplaces, plugin yang cocok disematkan di puncak tab Discover sebagai disarankan untuk direktori ini. Dan defaultEnabled disetel false membuat Anda bisa mengirim plugin yang terpasang tanpa menyalakan dirinya sendiri, yang merupakan default sopan untuk apa pun yang memakan biaya atau memanggil layanan eksternal.
Mulai dari satu repository, source path relatif, dan version eksplisit di tiap entri, karena kombinasi itu paling sedikit kejutannya. Jalankan validator-nya di dalam pemeriksaan yang sudah dipunyai repository itu, supaya manifest rusak tidak pernah sampai ke rekan kerja. Dan tulis entri renames pada kali pertama Anda mengganti nama sebuah plugin, bukan kali kedua, ketika seseorang bilang instalasinya hilang.