plugins.md +0 −527 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# Buat plugins
6
7> Buat plugins kustom untuk memperluas Claude Code dengan skills, agents, hooks, dan MCP servers.
8
9Plugins memungkinkan Anda memperluas Claude Code dengan fungsionalitas kustom yang dapat dibagikan di seluruh proyek dan tim. Panduan ini mencakup pembuatan plugins Anda sendiri dengan skills, agents, hooks, dan MCP servers.
10
11Mencari untuk memasang plugins yang sudah ada? Lihat [Temukan dan pasang plugins](/docs/id/discover-plugins). Untuk spesifikasi teknis lengkap, lihat [Referensi plugins](/docs/id/plugins-reference).
12
13<h2 id="when-to-use-plugins-vs-standalone-configuration">
14 Kapan menggunakan plugins vs konfigurasi standalone
15</h2>
16
17Claude Code mendukung dua cara untuk menambahkan skills, agents, dan hooks kustom:
18
19| Pendekatan | Nama skill | Terbaik untuk |
20| :---------------------------------------------------------------------------------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------- |
21| **Standalone** (direktori `.claude/`) | `/hello` | Alur kerja pribadi, kustomisasi khusus proyek, eksperimen cepat |
22| **Plugins** (direktori dengan skills, agents, hooks, atau manifes `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Berbagi dengan rekan kerja, distribusi ke komunitas, rilis dengan versi, dapat digunakan kembali di seluruh proyek |
23
24<Tip>
25 Mulai dengan konfigurasi standalone di `.claude/` untuk iterasi cepat, kemudian [konversi ke plugin](#convert-existing-configurations-to-plugins) ketika Anda siap untuk berbagi.
26</Tip>
27
28<h2 id="quickstart">
29 Quickstart
30</h2>
31
32Quickstart ini memandu Anda melalui pembuatan plugin dengan skill kustom. Anda akan membuat manifest (file konfigurasi yang mendefinisikan plugin Anda), menambahkan skill, dan mengujinya secara lokal menggunakan flag `--plugin-dir`.
33
34<h3 id="prerequisites">
35 Prasyarat
36</h3>
37
38* Claude Code [diinstal dan diautentikasi](/docs/id/quickstart#step-1-install-claude-code)
39
40<h3 id="create-your-first-plugin">
41 Buat plugin pertama Anda
42</h3>
43
44<Steps>
45 <Step title="Buat direktori plugin">
46 Setiap plugin berada di direktorinya sendiri yang berisi skills, agents, atau hooks Anda, secara opsional bersama dengan manifest `.claude-plugin/plugin.json`. Lokasi tidak penting untuk quickstart ini karena Anda akan menunjukkan Claude Code ke direktori dengan `--plugin-dir` di langkah pengujian. Buat di mana saja yang nyaman, seperti folder scratch atau direktori projects:
47
48 ```bash theme={null}
49 mkdir my-first-plugin
50 ```
51
52 Langkah-langkah yang tersisa berjalan dari direktori induk dan mereferensikan path seperti `my-first-plugin/...` relatif terhadapnya.
53 </Step>
54
55 <Step title="Buat manifest plugin">
56 File manifest di `.claude-plugin/plugin.json` mendefinisikan identitas plugin Anda: nama, deskripsi, dan versinya. Claude Code menggunakan metadata ini untuk menampilkan plugin Anda di plugin manager.
57
58 Buat direktori `.claude-plugin` di dalam folder plugin Anda:
59
60 ```bash theme={null}
61 mkdir my-first-plugin/.claude-plugin
62 ```
63
64 Kemudian buat `my-first-plugin/.claude-plugin/plugin.json` dengan konten ini:
65
66 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}
67 {
68 "name": "my-first-plugin",
69 "description": "A greeting plugin to learn the basics",
70 "version": "1.0.0",
71 "author": {
72 "name": "Your Name"
73 }
74 }
75 ```
76
77 | Field | Tujuan |
78 | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
79 | `name` | Pengidentifikasi unik dan namespace skill. Skills diawali dengan ini (misalnya, `/my-first-plugin:hello`). |
80 | `description` | Ditampilkan di plugin manager saat menjelajahi atau memasang plugins. |
81 | `version` | Opsional. Jika diatur, pengguna hanya menerima pembaruan ketika Anda menaikkan field ini, kecuali untuk [`command` source](/docs/id/plugin-marketplaces#command-sources) atau plugin [dimuat di tempat](/docs/id/plugins-reference#plugin-caching-and-file-resolution); lihat [manajemen versi](/docs/id/plugins-reference#version-management). Jika dihilangkan, versi berasal dari sumber berikutnya dalam [manajemen versi](/docs/id/plugins-reference#version-management). |
82 | `author` | Opsional. Membantu untuk atribusi. |
83
84 Untuk field tambahan seperti `homepage`, `repository`, dan `license`, lihat [skema manifest lengkap](/docs/id/plugins-reference#plugin-manifest-schema).
85 </Step>
86
87 <Step title="Tambahkan skill">
88 Skills berada di direktori `skills/`. Setiap skill adalah folder yang berisi file `SKILL.md`. Nama folder menjadi nama skill, diawali dengan namespace plugin (`hello/` dalam plugin bernama `my-first-plugin` membuat `/my-first-plugin:hello`).
89
90 Buat direktori skill di folder plugin Anda:
91
92 ```bash theme={null}
93 mkdir -p my-first-plugin/skills/hello
94 ```
95
96 Kemudian buat `my-first-plugin/skills/hello/SKILL.md` dengan konten ini:
97
98 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}
99 ---
100 description: Greet the user with a friendly message
101 disable-model-invocation: true
102 ---
103
104 Greet the user warmly and ask how you can help them today.
105 ```
106 </Step>
107
108 <Step title="Uji plugin Anda">
109 Jalankan Claude Code dengan flag `--plugin-dir` untuk memuat plugin Anda:
110
111 ```bash theme={null}
112 claude --plugin-dir ./my-first-plugin
113 ```
114
115 Setelah Claude Code dimulai, coba skill baru Anda:
116
117 ```shell theme={null}
118 /my-first-plugin:hello
119 ```
120
121 Anda akan melihat Claude merespons dengan salam. Jalankan `/help` dan buka tab **Custom commands** untuk melihat skill Anda terdaftar di bawah namespace plugin.
122
123 <Note>
124 **Mengapa namespace?** Plugin skills selalu diberi namespace (seperti `/my-first-plugin:hello`) untuk mencegah konflik ketika beberapa plugins memiliki skills dengan nama yang sama.
125
126 Untuk mengubah awalan namespace, perbarui field `name` di `plugin.json`.
127 </Note>
128 </Step>
129
130 <Step title="Tambahkan argumen skill">
131 Buat skill Anda dinamis dengan menerima input pengguna. Placeholder `$ARGUMENTS` menangkap teks apa pun yang disediakan pengguna setelah nama skill.
132
133 Perbarui file `SKILL.md` Anda:
134
135 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}
136 ---
137 description: Greet the user with a personalized message
138 ---
139
140 # Hello Skill
141
142 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.
143 ```
144
145 Jalankan `/reload-plugins` untuk mengambil perubahan. Kemudian coba skill dengan nama Anda:
146
147 ```shell theme={null}
148 /my-first-plugin:hello Alex
149 ```
150
151 Claude akan menyapa Anda dengan nama. Untuk lebih lanjut tentang meneruskan argumen ke skills, lihat [Skills](/docs/id/skills#pass-arguments-to-skills).
152 </Step>
153</Steps>
154
155<Tip>
156 Flag `--plugin-dir` berguna untuk pengembangan dan pengujian. Ketika Anda siap untuk berbagi plugin Anda dengan orang lain, lihat [Buat dan distribusikan marketplace plugin](/docs/id/plugin-marketplaces).
157</Tip>
158
159<h2 id="develop-a-plugin-in-your-skills-directory">
160 Kembangkan plugin di direktori skills Anda
161</h2>
162
163Alih-alih meneruskan `--plugin-dir` pada setiap peluncuran, Anda dapat menyimpan plugin di direktori skills Anda dan membuat Claude Code memuatnya secara otomatis. `claude plugin init` membuat scaffolding untuk satu:
164
165```bash theme={null}
166claude plugin init my-tool
167```
168
169Ini membuat `~/.claude/skills/my-tool/` dengan manifest `.claude-plugin/plugin.json` dan `SKILL.md` pemula. Pada sesi berikutnya, plugin ini dimuat sebagai `my-tool@skills-dir` tanpa langkah marketplace atau instalasi.
170
171Untuk aturan auto-load, cakupan pribadi vs. proyek, persyaratan workspace-trust, dan cara memperbarui atau menghapus satu, lihat [Skills-directory plugins](/docs/id/plugins-reference#skills-directory-plugins).
172
173<h2 id="plugin-structure-overview">
174 Ikhtisar struktur plugin
175</h2>
176
177Anda telah membuat plugin dengan skill, tetapi plugins dapat mencakup banyak hal lagi: agents kustom, hooks, MCP servers, LSP servers, dan background monitors.
178
179<Warning>
180 **Kesalahan umum**: Jangan letakkan `commands/`, `agents/`, `skills/`, atau `hooks/` di dalam direktori `.claude-plugin/`. Hanya `plugin.json` yang masuk ke dalam `.claude-plugin/`. Semua direktori lainnya harus berada di tingkat root plugin.
181
182 Plugin root adalah direktori plugin individual itu sendiri, seperti `my-first-plugin/` dari [quickstart](#quickstart). Ini tidak pernah `~/.claude/`. Sebagai contoh, Claude Code tidak membaca `.mcp.json` yang ditempatkan di `~/.claude/.mcp.json`.
183</Warning>
184
185| Direktori | Lokasi | Tujuan |
186| :---------------- | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
187| `.claude-plugin/` | Root plugin | Berisi manifest `plugin.json` (opsional jika komponen menggunakan lokasi default) |
188| `skills/` | Root plugin | Skills sebagai direktori `<name>/SKILL.md` |
189| `commands/` | Root plugin | Skills sebagai file Markdown datar. Gunakan `skills/` untuk plugins baru |
190| `agents/` | Root plugin | Definisi agent kustom |
191| `hooks/` | Root plugin | Event handlers di `hooks.json` |
192| `.mcp.json` | Root plugin | Konfigurasi MCP server |
193| `.lsp.json` | Root plugin | Konfigurasi LSP server untuk code intelligence |
194| `monitors/` | Root plugin | Konfigurasi background monitor di `monitors.json` |
195| `bin/` | Root plugin | Executable yang ditambahkan ke `PATH` tool Bash saat plugin diaktifkan. Anda tidak dapat menyertakan direktori ini dalam plugin yang Anda [distribusikan melalui pengaturan organisasi claude.ai](/docs/id/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |
196| `settings.json` | Root plugin | [Settings](/docs/id/settings) default yang diterapkan ketika plugin diaktifkan |
197
198Plugin yang mengirimkan tepat satu skill dapat menempatkan `SKILL.md` langsung di root plugin alih-alih membuat direktori `skills/`. Claude Code memuatnya sebagai skill tunggal dan menggunakan field frontmatter `name` untuk nama invokasi. Gunakan tata letak `skills/` untuk plugins yang mungkin berkembang menjadi lebih dari satu skill.
199
200<h2 id="develop-more-complex-plugins">
201 Kembangkan plugins yang lebih kompleks
202</h2>
203
204Setelah Anda nyaman dengan plugins dasar, Anda dapat membuat ekstensi yang lebih canggih.
205
206<h3 id="add-skills-to-your-plugin">
207 Tambahkan Skills ke plugin Anda
208</h3>
209
210Plugins dapat mencakup [Agent Skills](/docs/id/skills) untuk memperluas kemampuan Claude. Skills diinvokasi oleh model: Claude secara otomatis menggunakannya berdasarkan konteks tugas.
211
212Tambahkan direktori `skills/` di root plugin Anda dengan folder Skill yang berisi file `SKILL.md`:
213
214```text theme={null}
215my-plugin/
216├── .claude-plugin/
217│ └── plugin.json
218└── skills/
219 └── code-review/
220 └── SKILL.md
221```
222
223Setiap `SKILL.md` berisi frontmatter YAML dan instruksi. Sertakan `description` sehingga Claude tahu kapan menggunakan skill:
224
225```yaml theme={null}
226description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.
227
228When reviewing code, check for:
2291. Code organization and structure
2302. Error handling
2313. Security concerns
2324. Test coverage
233```
234
235Setelah memasang plugin, periksa ringkasan instalasi: jika melaporkan `Run /reload-plugins to activate.`, lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) untuk memuat Skills dalam sesi Anda saat ini. Untuk panduan authoring Skill lengkap termasuk progressive disclosure dan pembatasan tool, lihat [Agent Skills](/docs/id/skills).
236
237<h3 id="add-lsp-servers-to-your-plugin">
238 Tambahkan LSP servers ke plugin Anda
239</h3>
240
241<Tip>
242 Untuk bahasa umum seperti TypeScript, Python, dan Rust, pasang plugin LSP yang sudah dibangun sebelumnya dari marketplace resmi. Buat plugin LSP kustom hanya ketika Anda memerlukan dukungan untuk bahasa yang belum tercakup.
243</Tip>
244
245Plugin LSP (Language Server Protocol) memberikan Claude code intelligence real-time. Jika Anda perlu mendukung bahasa yang tidak memiliki plugin LSP resmi, Anda dapat membuat plugin Anda sendiri dengan menambahkan file `.lsp.json` ke plugin Anda:
246
247```json .lsp.json theme={null}
248{
249 "go": {
250 "command": "gopls",
251 "args": ["serve"],
252 "extensionToLanguage": {
253 ".go": "go"
254 }
255 }
256}
257```
258
259Pengguna yang memasang plugin Anda harus memiliki binary language server yang diinstal di mesin mereka.
260
261Untuk mengonfirmasi server dimulai, luncurkan Claude Code dengan plugin diaktifkan dan periksa tab `/plugin` Errors: language server yang gagal dimulai muncul di sana, misalnya dengan `Executable not found in $PATH` ketika binary tidak diinstal. Entri dengan konfigurasi yang tidak valid dilewati sebagai gantinya; jalankan `claude --debug` untuk melihat alasannya.
262
263Untuk opsi konfigurasi LSP lengkap, lihat [LSP servers](/docs/id/plugins-reference#lsp-servers).
264
265<h3 id="add-background-monitors-to-your-plugin">
266 Tambahkan background monitors ke plugin Anda
267</h3>
268
269Background monitors memungkinkan plugin Anda untuk menonton logs, file, atau status eksternal di latar belakang dan memberi tahu Claude saat event tiba. Claude Code memulai setiap monitor secara otomatis ketika plugin aktif, jadi Anda tidak perlu menginstruksikan Claude untuk memulai watch.
270
271Tambahkan file `monitors/monitors.json` di root plugin dengan array entri monitor:
272
273```json monitors/monitors.json theme={null}
274[
275 {
276 "name": "error-log",
277 "command": "tail -F ./logs/error.log",
278 "description": "Application error log"
279 }
280]
281```
282
283Setiap baris stdout dari `command` dikirimkan ke Claude sebagai notifikasi selama sesi. Untuk skema lengkap, termasuk trigger `when` dan substitusi variabel, lihat [Monitors](/docs/id/plugins-reference#monitors).
284
285<h3 id="ship-default-settings-with-your-plugin">
286 Kirim default settings dengan plugin Anda
287</h3>
288
289Plugins dapat menyertakan file `settings.json` di root plugin untuk menerapkan konfigurasi default ketika plugin diaktifkan. Saat ini, hanya key `agent` dan `subagentStatusLine` yang didukung.
290
291Mengatur `agent` mengaktifkan salah satu [custom agents](/docs/id/sub-agents) plugin sebagai thread utama, menerapkan system prompt, pembatasan tool, dan modelnya. Ini memungkinkan plugin untuk mengubah perilaku Claude Code secara default ketika diaktifkan.
292
293```json settings.json theme={null}
294{
295 "agent": "security-reviewer"
296}
297```
298
299Contoh ini mengaktifkan agent `security-reviewer` yang didefinisikan di direktori `agents/` plugin. Settings dari `settings.json` mengambil prioritas atas `settings` yang dideklarasikan di `plugin.json`. Key yang tidak dikenal diabaikan secara diam-diam.
300
301<h3 id="organize-complex-plugins">
302 Organisir plugins kompleks
303</h3>
304
305Untuk plugins dengan banyak komponen, organisir struktur direktori Anda berdasarkan fungsionalitas. Untuk layout direktori lengkap dan pola organisasi, lihat [Struktur direktori plugin](/docs/id/plugins-reference#plugin-directory-structure).
306
307<h3 id="test-your-plugins-locally">
308 Uji plugins Anda secara lokal
309</h3>
310
311Gunakan flag `--plugin-dir` untuk menguji plugins selama pengembangan. Ini memuat plugin Anda secara langsung tanpa memerlukan instalasi.
312
313```bash theme={null}
314claude --plugin-dir ./my-plugin
315```
316
317Flag juga menerima arsip `.zip` dari direktori plugin.
318
319```bash theme={null}
320claude --plugin-dir ./my-plugin.zip
321```
322
323Ketika plugin `--plugin-dir` memiliki nama yang sama dengan plugin marketplace yang diinstal, salinan lokal mengambil prioritas untuk sesi itu. Ini memungkinkan Anda menguji perubahan pada plugin yang sudah Anda instal tanpa mencopot pemasangannya terlebih dahulu. Pengecualian adalah plugins yang managed settings force-enable atau force-disable: `--plugin-dir` tidak dapat menimpa pengaturan tersebut.
324
325Saat Anda membuat perubahan pada plugin Anda, jalankan `/reload-plugins` untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang plugins, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers; dalam sesi tanpa terminal interaktif, perubahan plugin MCP server [menunggu sesi berikutnya Anda](/docs/id/discover-plugins#apply-plugin-changes-without-restarting). Uji komponen plugin Anda:
326
327* Coba skills Anda dengan `/plugin-name:skill-name`
328* Periksa bahwa agents muncul di `/context` di bawah Custom Agents, atau @-mention salah satu dengan nama scoped-nya
329* Picu event yang setiap hook cocokkan, seperti meminta Claude untuk mengedit file untuk hook `PostToolUse`, dan konfirmasi efeknya. Claude Code mencatat hook mana yang cocok, kode keluar mereka, dan output mereka di [debug log](/docs/id/hooks#debug-hooks)
330
331<Tip>
332 Anda dapat memuat beberapa plugins sekaligus dengan menentukan flag berkali-kali:
333
334 ```bash theme={null}
335 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two
336 ```
337
338 Untuk menguji plugin bersama dengan plugin yang bergantung padanya, lihat [Uji plugin dan dependensinya secara lokal](/docs/id/plugin-dependencies#test-a-plugin-and-its-dependency-locally).
339</Tip>
340
341Untuk memuat plugins dalam sesi di mana Anda tidak dapat menambahkan flag, daftarkan path absolut mereka di variabel environment [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables) sebagai gantinya. Claude Code memuat setiap path seperti memuat path `--plugin-dir`. Plugins ini dimuat sebagai tambahan dari yang Anda teruskan dengan `--plugin-dir`. [Pengaturan proyek dan lokal tidak dapat menetapkan variabel ini](/docs/id/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` memerlukan Claude Code v2.1.280 atau lebih baru.
342
343Mencoba plugin dengan `--plugin-dir` memberi tahu Anda bahwa itu dapat bekerja. Untuk mengetahui seberapa sering Claude benar-benar mencapainya dan mendapatkan hasil yang tepat, jalankan terhadap serangkaian prompt test dengan [`claude plugin eval`](/docs/id/plugin-evals). Setiap prompt berjalan beberapa kali dengan dan tanpa plugin dimuat, sehingga Anda dapat melihat apa yang dikontribusikan plugin dan menangkap regresi ketika Anda mengubahnya atau model baru dikirim.
344
345Untuk memuat beberapa plugins dari satu tempat, teruskan folder yang menahannya, seperti `--plugin-dir ./plugins`. Memuat folder plugins memerlukan Claude Code v2.1.265 atau lebih baru. Claude Code membaca tingkat atas folder untuk memutuskan plugin mana yang dimuat, dan dalam sesi interaktif juga menonton folder untuk perubahan kemudian:
346
347* **Apa yang dimuat**: jika folder tidak memiliki manifest atau komponen plugin di tingkat atasnya, Claude Code memperlakukannya sebagai folder plugins. Setiap subfolder langsung yang memiliki manifest `.claude-plugin/plugin.json` dimuat sebagai plugin terpisah. Claude Code melewati segalanya di folder tanpa melaporkan kesalahan, termasuk plugins yang tidak memiliki manifest.
348* **Perubahan selama sesi interaktif**: subfolder yang Anda tambahkan dimuat sebagai plugin baru setelah manifestnya ada, dan ketika Anda menghapus subfolder, pluginnya dibongkar. Claude Code mencetak baris dalam sesi untuk setiap perubahan. Jika menerapkan perubahan di tengah percakapan akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), Claude Code menahan itu, dan baris mengatakan untuk menjalankan `/reload-plugins` untuk menerapkannya.
349
350Untuk menguji plugin yang sudah dikemas sebagai arsip `.zip` dan dihosting di URL, seperti artefak build CI, gunakan `--plugin-url` sebagai gantinya. Claude Code mengambil arsip saat startup dan memuatnya hanya untuk sesi itu. Jika Claude Code tidak dapat mengambil arsip, atau arsip tidak valid, Claude Code dimulai tanpa plugin dan mencatat kesalahan pemuatan plugin yang dapat Anda tinjau di tab **Errors** manager `/plugin`. Pertimbangan [kepercayaan](/docs/id/discover-plugins#security) yang sama berlaku seperti untuk sumber plugin apa pun: hanya arahkan flag ini ke arsip yang Anda kontrol atau percayai.
351
352Untuk memuat beberapa plugins, ulangi flag untuk setiap URL:
353
354```bash theme={null}
355claude --plugin-url https://example.com/my-plugin.zip --plugin-url https://example.com/other.zip
356```
357
358Atau teruskan URL yang dipisahkan spasi sebagai satu argumen yang dikutip:
359
360```bash theme={null}
361claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"
362```
363
364<h3 id="debug-plugin-issues">
365 Debug masalah plugin
366</h3>
367
368Jika plugin Anda tidak bekerja seperti yang diharapkan:
369
3701. **Periksa struktur**: Pastikan direktori Anda berada di root plugin, bukan di dalam `.claude-plugin/`
3712. **Uji komponen secara individual**: Periksa setiap skill, agent, dan hook secara terpisah
3723. **Gunakan alat validasi dan debugging**: Lihat [Alat debugging dan pengembangan](/docs/id/plugins-reference#debugging-and-development-tools) untuk perintah CLI dan teknik troubleshooting
373
374<h3 id="share-your-plugins">
375 Bagikan plugins Anda
376</h3>
377
378Ketika plugin Anda siap untuk dibagikan:
379
3801. **Tambahkan dokumentasi**: Sertakan `README.md` dengan instruksi instalasi dan penggunaan
3812. **Pilih strategi versioning**: Tentukan apakah akan menetapkan `version` eksplisit atau mengandalkan fallback yang dijelaskan di [manajemen versi](/docs/id/plugins-reference#version-management).
3823. **Buat atau gunakan marketplace**: Distribusikan melalui [plugin marketplaces](/docs/id/plugin-marketplaces) untuk instalasi
3834. **Uji dengan orang lain**: Minta anggota tim menguji plugin sebelum distribusi yang lebih luas
384
385Setelah plugin Anda berada di marketplace, orang lain dapat memasangnya menggunakan instruksi di [Temukan dan pasang plugins](/docs/id/discover-plugins). Untuk menjaga plugin tetap internal bagi tim Anda, hosting marketplace di [private repository](/docs/id/plugin-marketplaces#private-repositories).
386
387<h3 id="submit-your-plugin-to-the-community-marketplace">
388 Kirimkan plugin Anda ke marketplace komunitas
389</h3>
390
391Anthropic memelihara dua marketplace publik untuk plugin Claude Code:
392
393* **`claude-plugins-official`**: serangkaian plugin yang dikurasi yang dikelola oleh Anthropic. Claude Code mendaftarkannya secara otomatis saat pertama kali Anda memulai Claude Code secara interaktif. Jika Anda menjalankan Claude Code non-interaktif sebelum peluncuran interaktif pertama itu, atau [kebijakan marketplace](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) memblokir upaya sebelumnya, daftarkan sendiri dengan `claude plugin marketplace add anthropics/claude-plugins-official`.
394* **`claude-community`**: marketplace komunitas publik tempat pengajuan pihak ketiga mendarat setelah review. Pengguna menambahkannya dengan `/plugin marketplace add anthropics/claude-plugins-community` dan memasangnya sebagai `@claude-community`.
395
396Untuk mengirimkan plugin Anda untuk review marketplace komunitas, gunakan salah satu formulir in-app:
397
398* **claude.ai**: [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)
399* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)
400
401Formulir claude.ai memerlukan organisasi Team atau Enterprise dan akses manajemen direktori; Owners organisasi memiliki akses ini secara default. Penulis individual yang bukan bagian dari organisasi Team atau Enterprise dapat menggunakan formulir Console sebagai gantinya.
402
403Jalankan `claude plugin validate ./your-plugin` secara lokal sebelum Anda mengirimkan, mengganti `./your-plugin` dengan path ke direktori plugin Anda. Pipeline review menjalankan pemeriksaan yang sama pada setiap pengajuan, bersama dengan screening keamanan otomatis. Ketika validasi lulus, Claude Code mencetak `✔ Validation passed`, atau `✔ Validation passed with warnings` jika ada peringatan. Peringatan tidak gagal validasi; tambahkan `--strict` untuk memperlakukan mereka sebagai kesalahan.
404
405Plugin yang disetujui disematkan ke SHA commit tertentu di katalog [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), dan CI membump pin secara otomatis saat Anda push commit baru ke repository Anda. Katalog publik disinkronkan setiap malam dari pipeline review, jadi dapat ada penundaan antara persetujuan dan plugin Anda muncul di `marketplace.json`. Untuk memeriksa apakah plugin Anda dapat dipasang, cari namanya di [katalog komunitas](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).
406
407Marketplace resmi, `claude-plugins-official`, dikurasi secara terpisah. Anthropic memutuskan plugin mana yang akan disertakan atas kebijakannya. Tidak ada proses aplikasi, dan formulir pengajuan tidak menambahkan plugins ke marketplace resmi.
408
409Jika Anthropic mencantumkan plugin Anda di marketplace resmi, CLI Anda dapat meminta pengguna Claude Code untuk memasangnya. Lihat [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugin-hints).
410
411<h2 id="convert-existing-configurations-to-plugins">
412 Konversi konfigurasi yang ada ke plugins
413</h2>
414
415Jika Anda sudah memiliki skills atau hooks di direktori `.claude/` Anda, Anda dapat mengonversinya menjadi plugin untuk berbagi dan distribusi yang lebih mudah.
416
417<h3 id="migration-steps">
418 Langkah migrasi
419</h3>
420
421<Steps>
422 <Step title="Buat struktur plugin">
423 Buat direktori plugin baru di root proyek Anda, bersama dengan folder `.claude/` yang sudah ada, sehingga path `cp` relatif di langkah berikutnya dapat diselesaikan:
424
425 ```bash theme={null}
426 mkdir -p my-plugin/.claude-plugin
427 ```
428
429 Buat file manifest di `my-plugin/.claude-plugin/plugin.json`:
430
431 ```json my-plugin/.claude-plugin/plugin.json theme={null}
432 {
433 "name": "my-plugin",
434 "description": "Migrated from standalone configuration",
435 "version": "1.0.0"
436 }
437 ```
438 </Step>
439
440 <Step title="Salin file yang ada">
441 Salin setiap direktori konfigurasi yang Anda miliki ke root plugin. Anda mungkin tidak memiliki ketiganya: jika direktori tidak ada, `cp` mencetak `No such file or directory` dan tidak menyalin apa pun, jadi lewati perintah itu atau abaikan kesalahannya.
442
443 ```bash theme={null}
444 cp -r .claude/commands my-plugin/
445
446 cp -r .claude/agents my-plugin/
447
448 cp -r .claude/skills my-plugin/
449 ```
450
451 Plugin Anda sekarang berisi salinan direktori yang Anda miliki di bawah `.claude/`. Jalankan `ls my-plugin` untuk mengonfirmasi: Anda harus melihat setiap direktori yang Anda salin.
452 </Step>
453
454 <Step title="Migrasi hooks">
455 Jika Anda memiliki hooks di settings Anda, buat direktori hooks:
456
457 ```bash theme={null}
458 mkdir my-plugin/hooks
459 ```
460
461 Buat `my-plugin/hooks/hooks.json` dengan konfigurasi hooks Anda. Salin objek `hooks` dari `.claude/settings.json` atau `settings.local.json` Anda, karena formatnya sama. Perintah menerima input hook sebagai JSON di stdin, jadi gunakan `jq` untuk mengekstrak path file:
462
463 ```json my-plugin/hooks/hooks.json theme={null}
464 {
465 "hooks": {
466 "PostToolUse": [
467 {
468 "matcher": "Write|Edit",
469 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]
470 }
471 ]
472 }
473 }
474 ```
475 </Step>
476
477 <Step title="Uji plugin yang dimigrasikan">
478 Muat plugin Anda untuk memverifikasi semuanya berfungsi:
479
480 ```bash theme={null}
481 claude --plugin-dir ./my-plugin
482 ```
483
484 Uji setiap komponen: jalankan commands Anda, periksa bahwa agents muncul di `/context`, dan picu setiap event yang cocok dengan hook untuk mengonfirmasi efeknya. Claude Code mencatat hook mana yang cocok dan bagaimana mereka keluar di [debug log](/docs/id/hooks#debug-hooks).
485 </Step>
486</Steps>
487
488<h3 id="what-changes-when-migrating">
489 Apa yang berubah saat migrasi
490</h3>
491
492| Standalone (`.claude/`) | Plugin |
493| :----------------------------------------- | :----------------------------------- |
494| Hanya tersedia di satu proyek | Dapat dibagikan melalui marketplaces |
495| File di `.claude/commands/` | File di `plugin-name/commands/` |
496| Hooks di `settings.json` | Hooks di `hooks/hooks.json` |
497| Harus menyalin secara manual untuk berbagi | Pasang dengan `/plugin install` |
498
499<Note>
500 Setelah migrasi, hapus file asli dari `.claude/` untuk menghindari duplikat. Definisi `.claude/agents/` proyek dan pengguna menggantikan agents plugin dengan nama yang sama, jadi versi plugin hanya berlaku setelah yang asli dihapus. Plugin skills diberi namespace sebagai `/plugin-name:skill-name`, jadi `/skill-name` asli dan salinan plugin keduanya tetap tersedia daripada satu menggantikan yang lain.
501</Note>
502
503<h2 id="next-steps">
504 Langkah berikutnya
505</h2>
506
507Sekarang bahwa Anda memahami sistem plugin Claude Code, berikut adalah jalur yang disarankan untuk tujuan yang berbeda:
508
509<h3 id="for-plugin-users">
510 Untuk pengguna plugin
511</h3>
512
513* [Temukan dan pasang plugins](/docs/id/discover-plugins): jelajahi marketplaces dan pasang plugins
514* [Konfigurasi marketplaces tim](/docs/id/discover-plugins#configure-team-marketplaces): atur plugins tingkat repository untuk tim Anda
515
516<h3 id="for-plugin-developers">
517 Untuk pengembang plugin
518</h3>
519
520* [Uji plugins dengan evals](/docs/id/plugin-evals): ukur apa yang diubah plugin Anda dan gerbang CI padanya
521* [Buat dan distribusikan marketplace](/docs/id/plugin-marketplaces): paket dan bagikan plugins Anda
522* [Referensi plugins](/docs/id/plugins-reference): spesifikasi teknis lengkap
523* Selami lebih dalam komponen plugin spesifik:
524 * [Skills](/docs/id/skills): detail pengembangan skill
525 * [Subagents](/docs/id/sub-agents): konfigurasi dan kemampuan agent
526 * [Hooks](/docs/id/hooks): penanganan event dan otomasi
527 * [MCP](/docs/id/mcp): integrasi tool eksternal