plugin-dependencies.md +0 −267 deleted
File Deleted View Diff
1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Batasi versi dependensi plugin
6
7> Deklarasikan batasan versi pada dependensi plugin, dan bundel satu set plugin yang dikurasi di balik satu instalasi.
8
9Sebuah plugin dapat bergantung pada plugin lain dengan mencantumkannya di `plugin.json` atau di entri marketplacenya. Secara default, dependensi melacak versi terbaru yang tersedia, sehingga rilis upstream dapat mengubah dependensi di bawah plugin Anda tanpa peringatan. Batasan versi memungkinkan Anda menahan dependensi pada rentang versi yang telah diuji sampai Anda memilih untuk pindah.
10
11Ketika Anda menginstal plugin yang mendeklarasikan dependensi, Claude Code menyelesaikan dan menginstal dependensi tersebut secara otomatis, kecuali untuk dependensi yang entri marketplacenya memiliki [`command` source](/docs/id/plugin-marketplaces#how-users-accept-the-command) atau [`headersHelper`](/docs/id/plugin-marketplaces#how-users-accept-a-headershelper-command), yang Anda instal sendiri terlebih dahulu. Kemudian, `/reload-plugins`, pembaruan otomatis marketplace plugin yang bergantung, menjalankan kembali `claude plugin install` pada plugin yang bergantung, dan `claude plugin marketplace add` masing-masing menginstal dependensi yang dideklarasikan yang belum diinstal, sesuai dengan aturan yang sama; jika salah satu tetap tidak terselesaikan, lihat [Selesaikan kesalahan dependensi](#resolve-dependency-errors).
12
13Panduan ini ditujukan untuk penulis plugin yang mendeklarasikan dependensi di `plugin.json` dan untuk pengelola marketplace yang menandai rilis. Dependensi di sini adalah plugin lain; untuk paket npm dan Bun yang digunakan plugin itu sendiri, lihat [Dependensi paket Node.js](/docs/id/plugins-reference#node-js-package-dependencies). Untuk menginstal plugin yang memiliki dependensi, lihat [Temukan dan instal plugin](/docs/id/discover-plugins). Untuk skema manifes lengkap, lihat [Referensi Plugin](/docs/id/plugins-reference).
14
15<h2 id="why-constrain-dependency-versions">
16 Mengapa membatasi versi dependensi
17</h2>
18
19Pertimbangkan marketplace internal di mana dua tim menerbitkan plugin. Tim platform memelihara `secrets-vault`, server MCP yang membungkus backend rahasia. Tim deploy memelihara `deploy-kit`, yang memanggil `secrets-vault` untuk mengambil kredensial selama deploy.
20
21`deploy-kit` diuji terhadap `secrets-vault` v2.1.0. Tanpa batasan versi, saat tim platform menandai rilis berikutnya yang mengganti nama alat MCP, auto-update memindahkan `secrets-vault` setiap insinyur ke versi baru dan `deploy-kit` rusak.
22
23Dengan batasan versi, `deploy-kit` mendeklarasikan bahwa ia memerlukan `secrets-vault` dalam rentang `~2.1.0`. Insinyur dengan `deploy-kit` yang diinstal tetap berada di patch `2.1.x` tertinggi yang cocok. Tim deploy meningkatkan sesuai jadwal mereka sendiri dengan menerbitkan versi `deploy-kit` baru dengan batasan yang lebih luas.
24
25<h2 id="declare-a-dependency-with-a-version-constraint">
26 Deklarasikan dependensi dengan batasan versi
27</h2>
28
29Daftar dependensi dalam array `dependencies` dari file `.claude-plugin/plugin.json` plugin Anda.
30
31Manifest berikut mendeklarasikan satu dependensi tanpa versi dan satu dependensi dengan batasan:
32
33```json .claude-plugin/plugin.json theme={null}
34{
35 "name": "deploy-kit",
36 "version": "3.1.0",
37 "dependencies": [
38 "audit-logger",
39 { "name": "secrets-vault", "version": "~2.1.0" }
40 ]
41}
42```
43
44Sebuah entri dapat berupa string sederhana dengan hanya nama plugin, seperti `"audit-logger"` dalam manifest `deploy-kit`, yang bergantung pada versi apa pun yang disediakan marketplace plugin tersebut. Untuk kontrol yang lebih besar, gunakan objek dengan bidang-bidang berikut:
45
46| Field | Type | Description |
47| :------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
48| `name` | string | Nama plugin. Diselesaikan dalam marketplace yang sama dengan plugin yang mendeklarasikan. Diperlukan. |
49| `version` | string | Sebuah [rentang semver](https://github.com/npm/node-semver#ranges) seperti `~2.1.0`, `^2.0`, `>=1.4`, atau `=2.1.0`. Dependensi diambil pada versi tertinggi yang ditandai yang memenuhi rentang ini. |
50| `marketplace` | string | Marketplace yang berbeda untuk menyelesaikan `name` di dalamnya. Dependensi lintas-marketplace diblokir kecuali marketplace target tercantum dalam [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) dalam `marketplace.json` marketplace root. |
51
52Versi pra-rilis seperti `2.0.0-beta.1` dikecualikan kecuali rentang Anda memilih dengan sufiks pra-rilis seperti `^2.0.0-0`.
53
54<h2 id="bundle-plugins-for-a-team">
55 Bundel plugin untuk tim
56</h2>
57
58Selain `name` yang diperlukan, manifes plugin dapat terdiri dari hanya array `dependencies`. Menginstalnya akan menarik setiap dependensi, yang menjadikannya cara untuk mengemas set plugin yang dikurasi di balik satu instalasi.
59
60Misalnya, tim platform dapat menerbitkan bundel khusus peran di marketplace internal sehingga insinyur menjalankan satu `claude plugin install` alih-alih menginstal setiap alat secara terpisah:
61
62```json .claude-plugin/plugin.json theme={null}
63{
64 "name": "backend-standard",
65 "version": "1.0.0",
66 "description": "Standard plugin set for backend engineers",
67 "dependencies": [
68 "secrets-vault",
69 "deploy-kit",
70 { "name": "db-migrate", "version": "^3.0" },
71 "oncall-runbook"
72 ]
73}
74```
75
76Menginstal `backend-standard` menyelesaikan dan menginstal keempat dependensi.
77
78Untuk menambahkan alat ke set standar nanti, terbitkan versi `backend-standard` baru dengan dependensi tambahan. Kecuali marketplace [auto-updates](/docs/id/discover-plugins#configure-auto-updates), insinyur mengambil versi baru dengan salah satu dari dua cara:
79
80* Aktifkan auto-update untuk marketplace di `/plugin`. Auto-update berikutnya memindahkan bundel ke versi baru dan menginstal dependensi apa pun yang ditambahkannya.
81* Jalankan `claude plugin update backend-standard`, kemudian `/reload-plugins` untuk menginstal dependensi yang baru ditambahkan.
82
83Untuk meluncurkan bundel di seluruh organisasi, tambahkan plugin bundel ke `enabledPlugins` dalam [pengaturan terkelola](/docs/id/settings-reference#enabledplugins).
84
85<h2 id="depend-on-a-plugin-from-another-marketplace">
86 Bergantung pada plugin dari marketplace lain
87</h2>
88
89Secara default, Claude Code menolak untuk auto-install dependensi yang berada di marketplace berbeda dari plugin yang mendeklarasikannya. Ini mencegah satu marketplace secara diam-diam menarik plugin dari sumber yang belum Anda tinjau.
90
91Untuk mengizinkannya, pengelola marketplace root menambahkan nama marketplace target ke `allowCrossMarketplaceDependenciesOn` di `marketplace.json`. Marketplace root adalah yang menghosting plugin yang diinstal pengguna; hanya daftar putihnya yang dikonsultasikan, sehingga kepercayaan tidak berantai melalui marketplace perantara.
92
93`marketplace.json` berikut memungkinkan `deploy-kit` bergantung pada plugin dari `acme-shared`:
94
95```json .claude-plugin/marketplace.json theme={null}
96{
97 "name": "acme-tools",
98 "owner": { "name": "Acme" },
99 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],
100 "plugins": [
101 {
102 "name": "deploy-kit",
103 "source": "./deploy-kit",
104 "dependencies": [
105 { "name": "audit-logger", "marketplace": "acme-shared" }
106 ]
107 }
108 ]
109}
110```
111
112Jika bidang hilang atau tidak menyertakan marketplace target, instalasi gagal dengan kesalahan `cross-marketplace` yang menamai bidang yang akan diatur. Pengguna masih dapat menginstal dependensi secara manual terlebih dahulu, yang memenuhi batasan tanpa mengubah daftar putih.
113
114<h2 id="test-a-plugin-and-its-dependency-locally">
115 Uji coba plugin dan dependensinya secara lokal
116</h2>
117
118Jika Anda mengembangkan plugin dan plugin yang menjadi dependensinya pada saat yang bersamaan, muat keduanya dengan `--plugin-dir`:
119
120```bash theme={null}
121claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin
122```
123
124Salinan lokal dari dependensi memenuhi entri dependensi plugin Anda, bahkan ketika entri tersebut menamai marketplace, sehingga Anda tidak perlu menginstal dependensi dari marketplacenya. Claude Code tidak memeriksa [batasan versi](#declare-a-dependency-with-a-version-constraint) terhadap salinan lokal, jadi `plugin.json` lokal tidak perlu memiliki `version`. Sebelum v2.1.242, entri dependensi yang menamai marketplace tidak pernah cocok dengan salinan lokal, dan Claude Code menonaktifkan plugin Anda saat dimuat.
125
126Ketika kedua plugin berada di satu folder induk, Anda dapat meneruskan folder tersebut ke `--plugin-dir` sekali saja. Jika folder itu sendiri bukan plugin, Claude Code memuat setiap folder anak yang memiliki `.claude-plugin/plugin.json`. Memerlukan Claude Code v2.1.265 atau lebih baru.
127
128Jika Anda belum menginstal dependensi dari marketplacenya, plugin Anda berhenti dimuat ketika salinan lokal hilang:
129
130* **Anda menonaktifkan salinan lokal**: Claude Code menonaktifkan plugin Anda pada pemuatan plugin berikutnya. Untuk entri dependensi yang menamai marketplace, Claude Code melaporkan `Dependency "<name>@inline" is disabled — enable it or remove the dependency`; untuk entri nama-bare, Claude Code melaporkan dependensi dengan nama-barenya. `<name>@inline` adalah cara Claude Code mengidentifikasi setiap plugin `--plugin-dir` dan `--plugin-url`.
131* **Anda memulai sesi tanpa flag `--plugin-dir` dependensi**: Claude Code melaporkan dependensi sebagai tidak terinstal. Berikan flag lagi, atau instal dependensi dari marketplacenya.
132
133<h2 id="tag-plugin-releases-for-version-resolution">
134 Rilis plugin tag untuk resolusi versi
135</h2>
136
137Claude Code menyelesaikan batasan versi terhadap git tags pada repositori yang menghosting dependensi: repositori plugin itu sendiri untuk `github`, `url`, dan `git-subdir` [sumber plugin](/docs/id/plugin-marketplaces#plugin-sources), atau repositori marketplace untuk plugin yang direferensikan marketplace melalui jalur relatif. Agar Claude Code dapat menemukan versi yang tersedia dari dependensi, rilis plugin upstream harus diberi tag menggunakan konvensi penamaan tertentu.
138
139Beri tag setiap rilis sebagai `{plugin-name}--v{version}`, di mana `{version}` cocok dengan field `version` dalam `plugin.json` commit tersebut. Dari direktori plugin, jalankan:
140
141```bash theme={null}
142claude plugin tag --push
143```
144
145Perintah `claude plugin tag` menurunkan nama tag dari manifest plugin dan entri marketplace yang melingkupinya. Sebelum membuat tag, perintah ini memvalidasi konten plugin, memeriksa bahwa `plugin.json` dan entri marketplace setuju tentang versi, memerlukan pohon kerja yang bersih di bawah direktori plugin, dan menolak jika tag sudah ada.
146
147* `--push` mendorong tag ke remote `origin`, jadi repositori memerlukan remote `origin` yang dikonfigurasi. Lewatkan `--remote` untuk mendorong ke yang berbeda.
148* Jika push gagal, tag masih dibuat secara lokal dan perintah keluar dengan kesalahan.
149* Dengan `--push`, jalankan yang berhasil berakhir dengan `Created tag secrets-vault--v2.1.0` dan `Pushed to origin`, di mana baris terakhir menamai remote yang didorong. Tanpa `--push`, perintah mencetak perintah `git push` untuk dijalankan sebagai gantinya.
150* `--dry-run` mencetak apa yang akan diberi tag tanpa membuatnya.
151
152Menjalankan `git tag secrets-vault--v2.1.0` secara langsung setara jika Anda menjaga `plugin.json` dan entri marketplace tetap sinkron sendiri.
153
154Awalan nama plugin memungkinkan satu repositori marketplace menghosting beberapa plugin dengan jalur versi independen. Pemisah `--v` diuraikan sebagai pencocokan awalan pada nama plugin lengkap, jadi nama plugin yang berisi tanda hubung ditangani dengan benar.
155
156Ketika Anda menginstal plugin yang mendeklarasikan `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code mencantumkan tag pada repositori yang menghosting `secrets-vault`, memfilter ke yang dimulai dengan `secrets-vault--v`, dan mengambil versi tertinggi yang memenuhi `~2.1.0`. Jika tidak ada tag pada repositori plugin itu sendiri yang memenuhi rentang, instalasi gagal dengan `Dependency "secrets-vault@acme-tools" has no git tag satisfying ~2.1.0`, yang menamai dependensi bersama dengan marketplacenya. Untuk plugin jalur relatif tanpa tag yang cocok, Claude Code menginstal salinan marketplace saat ini sebagai gantinya dan memeriksa batasan saat plugin dimuat.
157
158Untuk plugin yang direferensikan marketplace melalui jalur relatif, marketplace yang ditambahkan sebagai jalur folder lokal menyelesaikan tag dengan cara yang sama ketika folder adalah repositori git. Ini memerlukan Claude Code v2.1.196 atau lebih baru. Dalam dua kasus Claude Code menginstal dependensi dari konten folder saat ini sebagai gantinya:
159
160* Versi sebelumnya tidak membaca tag dari marketplace folder lokal, jadi dependensi terkendala dimuat hanya jika salinan itu memenuhi rentang.
161* Folder lokal yang bukan repositori git tidak memiliki tag, terlepas dari versi.
162
163Semver tag yang diselesaikan dicatat secara terpisah dari `version` `plugin.json`, jadi pemeriksaan batasan menggunakan tag yang benar-benar diambil bahkan jika `plugin.json` pada commit itu memiliki nilai basi. Nama direktori cache untuk instalasi yang diselesaikan tag mencakup akhiran SHA commit 12 karakter, jadi jika pengelola memaksa memindahkan tag ke commit yang berbeda, instalasi berikutnya mendapatkan direktori cache segar alih-alih menggunakan kembali konten basi.
164
165<Note>
166 Untuk dependensi dengan `npm`, `archive`, atau `command` [sumber plugin](/docs/id/plugin-marketplaces#plugin-sources), batasan tidak mengontrol versi mana yang diambil, karena resolusi berbasis tag hanya berlaku untuk sumber yang didukung git. Batasan masih diperiksa pada waktu muat, dan plugin dependen dinonaktifkan dengan `dependency-version-unsatisfied` jika versi yang diinstal tidak memenuhinya. Untuk sumber `command`, Claude Code memeriksa versi dalam `plugin.json` dependensi dan mengabaikan akhiran hash konten; dependensi yang `plugin.json` tidak menetapkan versi tidak memenuhi batasan apa pun, jadi tetapkan satu sebelum Anda membatasinya.
167
168 Claude Code tidak pernah menginstal dependensi dengan sumber `command` itu sendiri, jadi pengguna [menginstalnya terlebih dahulu](/docs/id/plugin-marketplaces#how-users-accept-the-command). Claude Code juga tidak pernah menjalankan `headersHelper` pada entri marketplace dependensi, jadi pengguna [menginstal plugin itu terlebih dahulu](/docs/id/plugin-marketplaces#how-users-accept-a-headershelper-command).
169</Note>
170
171<h2 id="how-constraints-interact">
172 Bagaimana batasan berinteraksi
173</h2>
174
175Ketika beberapa plugin yang diinstal membatasi dependensi yang sama, Claude Code memotong rentang mereka dan menyelesaikan dependensi ke versi tertinggi yang memenuhi semuanya. Tabel di bawah menunjukkan bagaimana kombinasi umum diselesaikan.
176
177| Plugin A memerlukan | Plugin B memerlukan | Hasil |
178| :------------------ | :------------------ | :-------------------------------------------------------------------------------------------------- |
179| `^2.0` | `>=2.1` | Satu instalasi pada tag `2.x` tertinggi pada atau di atas `2.1.0`. Kedua plugin dimuat. |
180| `~2.1` | `~3.0` | Instalasi plugin B gagal dengan `range-conflict`. Plugin A dan dependensi tetap seperti sebelumnya. |
181| `=2.1.0` | tidak ada | Dependensi tetap di `2.1.0`. Auto-update melewati versi yang lebih baru saat plugin A diinstal. |
182
183Auto-update mengambil dependensi terbatas pada tag git tertinggi yang memenuhi rentang setiap plugin yang diinstal, bukan pada versi terbaru marketplace, sehingga dependensi terus menerima pembaruan dalam rentang yang diizinkan. Jika tidak ada tag yang memenuhi semua rentang, auto-update melewati dependensi tersebut dan mencantumkan pelewatan di tab Errors `/plugin`, menamai plugin yang membatasi.
184
185Ketika Anda mencopot plugin terakhir yang membatasi dependensi, dependensi tidak lagi ditahan dan melanjutkan pelacakan entri marketplacenya pada pembaruan berikutnya.
186
187<h2 id="enable-or-disable-a-plugin-with-dependencies">
188 Aktifkan atau nonaktifkan plugin dengan dependensi
189</h2>
190
191Bagian ini mencakup plugin yang diinstal dari marketplace. Untuk salinan yang Anda muat dengan `--plugin-dir`, lihat [Uji plugin dan dependensinya secara lokal](#test-a-plugin-and-its-dependency-locally).
192
193Mengaktifkan plugin juga mengaktifkan plugin yang menjadi dependensinya, dan menonaktifkan plugin diblokir jika plugin yang diaktifkan lain masih membutuhkannya.
194
195Ketika Anda mengaktifkan plugin, Claude Code juga mengaktifkan dependensinya pada cakupan yang sama. Jika dependensi memiliki dependensinya sendiri, Claude Code mengaktifkan yang tersebut juga. Pesan kesuksesan mencantumkan apa lagi yang diaktifkan bersama plugin yang Anda namai. Jika dependensi tidak dapat diaktifkan, perintah menolak dan memberi tahu Anda apa yang memblokir dan cara memperbaikinya:
196
197| Kondisi | Hasil |
198| :------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------- |
199| Dependensi tidak diinstal | Aktifkan gagal dan mencetak perintah `claude plugin install` untuk setiap dependensi yang hilang. |
200| Dependensi diblokir oleh kebijakan plugin organisasi Anda | Aktifkan gagal dan menamai dependensi yang diblokir. |
201| Dependensi diatur ke `false` pada cakupan dengan prioritas lebih tinggi dari cakupan target | Aktifkan gagal. Aktifkan dependensi pada cakupan tersebut, atau lewatkan `--scope` untuk menulis di sana. |
202| Semua dependensi diinstal dan diizinkan | Aktifkan berhasil dan menulis `true` untuk plugin dan setiap dependensi yang belum diaktifkan pada cakupan target. |
203
204Ini berlaku bahkan ketika dependensi menetapkan [`defaultEnabled: false`](/docs/id/plugins-reference#default-enablement) dalam manifestnya, karena Claude Code menulis `true` eksplisit untuk itu. Hal yang sama berlaku saat instalasi: dependensi yang ditarik untuk memenuhi plugin aktif diinstal dengan `true` terlepas dari defaultnya sendiri.
205
206Ketika Anda menonaktifkan plugin, Claude Code menolak jika plugin yang diaktifkan lain masih bergantung padanya. Kesalahan menamai plugin yang bergantung padanya dan memberikan Anda perintah berantai yang menonaktifkannya dalam urutan yang benar, diakhiri dengan yang Anda minta.
207
208Misalnya, jika `deploy-kit` bergantung pada `secrets-vault`, menonaktifkan `secrets-vault` saja gagal dengan output serupa dengan berikut:
209
210```text theme={null}
211secrets-vault is still required by deploy-kit. Disable that plugin first, or
212disable everything together: claude plugin disable deploy-kit@acme-tools && claude plugin disable secrets-vault@acme-tools
213```
214
215Salin perintah berantai dari kesalahan untuk menonaktifkan set lengkap dalam satu langkah.
216
217<h2 id="remove-orphaned-auto-installed-dependencies">
218 Hapus dependensi auto-install yang yatim piatu
219</h2>
220
221Dependensi auto-install tetap di disk setelah plugin yang menginstalnya dicopot, untuk berjaga-jaga jika Anda menginstal ulang plugin dependen atau ingin terus menggunakan dependensi secara langsung. Untuk membersihkannya, jalankan `claude plugin prune` untuk mencantumkan dependensi auto-install yang tidak lagi memiliki plugin yang diinstal yang memerlukan mereka dan menghapusnya setelah prompt konfirmasi.
222
223```bash theme={null}
224claude plugin prune
225```
226
227Jika tidak ada yang memenuhi syarat untuk dihapus, perintah mencetak `Nothing to prune` dengan alasannya dan keluar. Ini adalah output yang diharapkan pada instalasi baru, bukan kesalahan.
228
229Secara default, prune beroperasi pada cakupan pengguna dan meminta konfirmasi sebelum menghapus apa pun:
230
231* `--scope project` atau `--scope local` menargetkan cakupan berbeda.
232* `--dry-run` mencantumkan apa yang akan dihapus tanpa mengubah apa pun.
233* `-y` melewati prompt konfirmasi. Ketika stdin atau stdout bukan terminal, prune mencantumkan yatim piatu dan keluar tanpa menghapusnya kecuali Anda meneruskan `-y`.
234
235Untuk prune sebagai bagian dari uninstall, teruskan `--prune` ke `claude plugin uninstall`. Setelah menghapus plugin bernama, Claude Code memindai dan menghapus dependensi auto-install apa pun yang sekarang yatim piatu. Plugin yang Anda instal sendiri tidak pernah dipangkas, hanya yang diinstal secara otomatis melalui array `dependencies` plugin lain.
236
237Perilaku konfirmasi yang sama berlaku. Ketika stdin atau stdout bukan terminal, uninstall masih selesai, tetapi langkah prune mencantumkan yatim piatu dan tidak menghapus apa pun kecuali Anda meneruskan `-y`.
238
239Misalnya, untuk mencopot `deploy-kit` dan membersihkan dependensi yang ditinggalkannya:
240
241```bash theme={null}
242claude plugin uninstall deploy-kit --prune
243```
244
245<h2 id="resolve-dependency-errors">
246 Selesaikan kesalahan dependensi
247</h2>
248
249Masalah dependensi muncul di `claude plugin list` dan di antarmuka `/plugin`, sebagai pesan kesalahan deskriptif daripada kode literal dalam tabel ini. Claude Code menonaktifkan plugin yang terpengaruh sampai Anda menyelesaikan kesalahan. Tabel di bawah mencantumkan kesalahan paling umum dan cara menyelesaikannya.
250
251| Kesalahan | Arti | Cara menyelesaikan |
252| :------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
253| `dependency-unsatisfied` | Dependensi yang dideklarasikan tidak diinstal, atau diinstal tetapi dinonaktifkan. | Jalankan perintah `claude plugin install` yang ditampilkan dalam pesan kesalahan. Jika marketplace dependensi belum dikonfigurasi, tambahkan dengan `claude plugin marketplace add` dan Claude Code menyelesaikan dependensi secara otomatis. Jika dependensi dinonaktifkan, aktifkan. |
254| `range-conflict` | Persyaratan versi untuk dependensi tidak dapat digabungkan. Pesan kesalahan menamai penyebabnya: tidak ada versi yang memenuhi semua rentang, rentang bukan sintaks semver yang valid, atau rentang gabungan terlalu kompleks untuk dipotongan. | Copot atau perbarui salah satu plugin yang bertentangan, perbaiki string `version` yang tidak valid, sederhanakan rantai `\|\|` panjang, atau minta penulis upstream untuk memperluas batasannya. |
255| `dependency-version-unsatisfied` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin ini. | Jalankan `claude plugin install <dependency>@<marketplace>` untuk menyelesaikan kembali dependensi terhadap semua batasan saat ini. |
256| `no-matching-tag` | Repositori dependensi tidak memiliki tag `{name}--v*` yang memenuhi rentang. | Periksa bahwa upstream telah menandai rilis menggunakan konvensi di atas, atau relakskan rentang Anda. |
257
258Untuk memeriksa kesalahan ini secara terprogram, jalankan `claude plugin list --json`. Plugin dengan masalah menyertakan bidang `errors` yang mencantumkan kesalahan tersebut. Plugin yang dimuat dengan bersih menghilangkan bidang tersebut.
259
260<h2 id="see-also">
261 Lihat juga
262</h2>
263
264* [Buat plugin](/docs/id/plugins): bangun plugin dengan skills, agents, dan hooks
265* [Buat dan distribusikan marketplace plugin](/docs/id/plugin-marketplaces): hosting plugin untuk tim Anda
266* [Referensi Plugin](/docs/id/plugins-reference#plugin-manifest-schema): skema `plugin.json` lengkap
267* [Manajemen versi](/docs/id/plugins-reference#version-management): bagaimana versi plugin itu sendiri diselesaikan dan digunakan sebagai kunci cache