SpyBara
Go Premium

Documentation 2026-09-24 22:57 UTC to 2026-09-25 23:58 UTC

106 files changed +9,109 −5,726. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02

admin-setup.md +3 −3

Details

94Pengaturan terkelola dapat mengunci alat, eksekusi sandbox, membatasi server MCP dan sumber plugin, dan mengontrol hook mana yang berjalan. Setiap baris adalah permukaan kontrol dengan kunci pengaturan yang mendorong.94Pengaturan terkelola dapat mengunci alat, eksekusi sandbox, membatasi server MCP dan sumber plugin, dan mengontrol hook mana yang berjalan. Setiap baris adalah permukaan kontrol dengan kunci pengaturan yang mendorong.

95 95 

96| Kontrol | Apa yang dilakukan | Pengaturan kunci |96| Kontrol | Apa yang dilakukan | Pengaturan kunci |

97| :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |97| :------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

98| [Permission rules](/docs/id/permissions) | Izinkan, tanyakan, atau tolak alat dan perintah tertentu | `permissions.allow`, `permissions.deny` |98| [Permission rules](/docs/id/permissions) | Izinkan, tanyakan, atau tolak alat dan perintah tertentu | `permissions.allow`, `permissions.deny` |

99| [Permission lockdown](/docs/id/permissions#managed-only-settings) | Buat pengaturan terkelola menjadi [satu-satunya sumber pengaturan aturan izin](/docs/id/settings-reference#allowmanagedpermissionrulesonly). Nonaktifkan `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |99| [Permission lockdown](/docs/id/permissions#managed-only-settings) | Buat pengaturan terkelola menjadi [satu-satunya sumber pengaturan aturan izin](/docs/id/settings-reference#allowmanagedpermissionrulesonly). Nonaktifkan `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

100| [Starting permission mode](/docs/id/permission-modes#which-mode-a-session-starts-in) | Pilih mode izin yang dimulai sesi terminal pengembang Anda alih-alih mode izin awal bawaan, atau hapus mode otomatis. Ekstensi VS Code membaca `defaultMode` yang Anda atur hanya pada paket Pro, Max, dan Team; [Switch permission modes](/docs/id/permission-modes#switch-permission-modes) mencantumkan apa yang dibaca ekstensi | `permissions.defaultMode`, `permissions.disableAutoMode` |100| [Starting permission mode](/docs/id/permission-modes#which-mode-a-session-starts-in) | Pilih mode izin yang dimulai sesi terminal pengembang Anda alih-alih mode izin awal bawaan, atau hapus mode otomatis. Ekstensi VS Code membaca `defaultMode` yang Anda atur hanya pada paket Pro, Max, dan Team; [Switch permission modes](/docs/id/permission-modes#switch-permission-modes) mencantumkan apa yang dibaca ekstensi | `permissions.defaultMode`, `permissions.disableAutoMode` |

101| [Sandboxing](/docs/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |101| [Sandboxing](/docs/id/sandboxing) | Isolasi filesystem dan jaringan tingkat OS dengan daftar allowlist domain | `sandbox.enabled`, `sandbox.network.allowedDomains` |

102| [Managed policy CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) | Instruksi di seluruh organisasi dimuat di setiap sesi, tidak dapat dikecualikan | File di jalur kebijakan terkelola |102| [Managed policy CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) | Instruksi di seluruh organisasi dimuat di setiap sesi, tidak dapat dikecualikan | File di jalur kebijakan terkelola |

103| [MCP server control](/docs/id/managed-mcp) | Batasi server MCP mana yang dapat ditambahkan atau dihubungkan pengguna, terapkan set tetap, atau sediakan server jarak jauh kepada setiap pengguna bersama dengan server mereka sendiri | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, atau file `managed-mcp.json` yang diterapkan |103| [MCP server control](/docs/id/managed-mcp) | Batasi server MCP mana yang dapat ditambahkan atau dihubungkan pengguna, terapkan set tetap, atau sediakan server jarak jauh kepada setiap pengguna bersama dengan server mereka sendiri | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, atau file `managed-mcp.json` yang diterapkan |

104| [Plugin marketplace control](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) | Batasi sumber marketplace mana yang dapat ditambahkan dan diinstal pengguna, tolak flag CLI yang memuat plugin, agent, dan server MCP untuk satu kali berjalan, blokir [sumber plugin `command`](/docs/id/plugin-marketplaces#command-sources), dan daftar allowlist plugin marketplace mana yang dapat disarankan | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |104| [Plugin marketplace control](/docs/id/plugins/org#restrict-what-users-can-install) | Batasi sumber marketplace mana yang dapat ditambahkan dan diinstal pengguna, tolak flag CLI yang memuat plugin, agent, dan server MCP untuk satu kali berjalan, blokir [sumber plugin `command`](/docs/id/plugins/marketplace-reference#command-plugin-source), dan daftar allowlist plugin marketplace mana yang dapat disarankan | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

105| [Customization lockdown](/docs/id/settings-reference#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugin atau pengaturan terkelola. Mengunci skills juga menghentikan [skills yang diaktifkan pengembang Anda di claude.ai](/docs/id/skills#where-synced-skills-load) dari sinkronisasi | `strictPluginOnlyCustomization` |105| [Customization lockdown](/docs/id/settings-reference#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek, sehingga mereka hanya dapat berasal dari plugin atau pengaturan terkelola. Mengunci skills juga menghentikan [skills yang diaktifkan pengembang Anda di claude.ai](/docs/id/skills#where-synced-skills-load) dari sinkronisasi | `strictPluginOnlyCustomization` |

106| [Disable claude.ai sync](/docs/id/settings-reference#syncclaudeaiskills) | Hentikan Claude Code dari memuat [skills](/docs/id/skills#how-synced-skills-behave) dan [plugins](/docs/id/plugins-reference#synced-plugins) yang diaktifkan pengembang Anda di claude.ai. Jika Anda mematikan Skills untuk organisasi Anda di claude.ai, Claude Code berhenti menyinkronkan keduanya, dan pada v2.1.273 atau lebih baru juga menghapus yang sudah disinkronkan. Untuk menghentikan salah satu tanpa mematikan Skills, atur kuncinya ke `false` dalam pengaturan terkelola | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |106| [Disable claude.ai sync](/docs/id/settings-reference#syncclaudeaiskills) | Hentikan Claude Code dari memuat [skills](/docs/id/skills#how-synced-skills-behave) dan [plugins](/docs/id/plugins/loading#synced-plugins) yang diaktifkan pengembang Anda di claude.ai. Jika Anda mematikan Skills untuk organisasi Anda di claude.ai, Claude Code berhenti menyinkronkan keduanya, dan pada v2.1.273 atau lebih baru juga menghapus yang sudah disinkronkan. Untuk menghentikan salah satu tanpa mematikan Skills, atur kuncinya ke `false` dalam pengaturan terkelola | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

107| [Hook restrictions](/docs/id/settings-reference#allowmanagedhooksonly) | Batasi hook mana yang berjalan dan batasi URL hook HTTP; lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) untuk daftar efek lengkap | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Hook restrictions](/docs/id/settings-reference#allowmanagedhooksonly) | Batasi hook mana yang berjalan dan batasi URL hook HTTP; lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) untuk daftar efek lengkap | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

108| [Login enforcement](/docs/id/settings-reference#forceloginmethod) | Batasi login ke metode tertentu atau organisasi Anthropic. Pembatasan metode berlaku di seluruh ekstensi VS Code, Agent SDK, `claude setup-token`, dan `/install-github-app`, dan layar login interaktif terminal, dicapai oleh `/login` atau onboarding first-run, pra-pilih metode tanpa memberlakukannya; Claude Code memverifikasi organisasi untuk login akun claude.ai di terminal, ekstensi VS Code, dan Agent SDK, dan tidak memeriksanya untuk login Claude Console atau untuk sign-in [gateway](/docs/id/claude-apps-gateway). Sebelum v2.1.212, hanya login terminal yang menerapkan salah satu kunci. Ketika diatur, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup; sesi penyedia cloud tidak terpengaruh | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Login enforcement](/docs/id/settings-reference#forceloginmethod) | Batasi login ke metode tertentu atau organisasi Anthropic. Pembatasan metode berlaku di seluruh ekstensi VS Code, Agent SDK, `claude setup-token`, dan `/install-github-app`, dan layar login interaktif terminal, dicapai oleh `/login` atau onboarding first-run, pra-pilih metode tanpa memberlakukannya; Claude Code memverifikasi organisasi untuk login akun claude.ai di terminal, ekstensi VS Code, dan Agent SDK, dan tidak memeriksanya untuk login Claude Console atau untuk sign-in [gateway](/docs/id/claude-apps-gateway). Sebelum v2.1.212, hanya login terminal yang menerapkan salah satu kunci. Ketika diatur, sesi yang diautentikasi oleh `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` diblokir saat startup; sesi penyedia cloud tidak terpengaruh | `forceLoginMethod`, `forceLoginOrgUUID` |

109| [Disable agent view](/docs/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |109| [Disable agent view](/docs/id/agent-view#how-background-sessions-are-hosted) | Matikan `claude agents`, `--bg`, `/background`, dan supervisor on-demand | `disableAgentView` |

Details

281 Mode lewati izin (`bypassPermissions`)281 Mode lewati izin (`bypassPermissions`)

282</h4>282</h4>

283 283 

284Auto-approve penggunaan tool tanpa meminta, kecuali kasus yang tercantum dalam peringatan di bawah. Hook masih dijalankan dan dapat memblokir operasi jika diperlukan.284Auto-approve penggunaan tool tanpa meminta, kecuali kasus yang tercantum dalam peringatan di bawah. Hook masih dijalankan dan dapat memblokir operasi jika diperlukan. Pada Linux dan macOS, Claude Code menolak untuk memulai dalam mode ini sebagai root atau di bawah `sudo` di luar [sandbox yang diakui](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode), dan query gagal sebelum giliran pertama.

285 285 

286<Warning>286<Warning>

287 Gunakan dengan sangat hati-hati. Claude memiliki akses sistem penuh dalam mode ini. Hanya gunakan di lingkungan terkontrol di mana Anda mempercayai semua operasi yang mungkin.287 Gunakan dengan sangat hati-hati. Claude memiliki akses sistem penuh dalam mode ini. Hanya gunakan di lingkungan terkontrol di mana Anda mempercayai semua operasi yang mungkin.

Details

13* **Hooks**: penanganan peristiwa yang merespons penggunaan alat dan peristiwa lainnya13* **Hooks**: penanganan peristiwa yang merespons penggunaan alat dan peristiwa lainnya

14* **MCP servers**: integrasi alat eksternal melalui Model Context Protocol14* **MCP servers**: integrasi alat eksternal melalui Model Context Protocol

15 15 

16Untuk informasi lengkap tentang struktur plugin dan cara membuat plugins, lihat [Plugins](/docs/id/plugins).16Untuk informasi lengkap tentang struktur plugin dan cara membuat plugins, lihat [Plugins](/docs/id/plugins/overview).

17 17 

18<h2 id="loading-plugins">18<h2 id="loading-plugins">

19 Memuat plugins19 Memuat plugins


21 21 

22Muat plugins dengan menyediakan jalur sistem file lokal mereka dalam konfigurasi opsi Anda. Bidang `type` harus `"local"`, satu-satunya nilai yang diterima SDK. SDK mendukung pemuatan beberapa plugins dari lokasi berbeda.22Muat plugins dengan menyediakan jalur sistem file lokal mereka dalam konfigurasi opsi Anda. Bidang `type` harus `"local"`, satu-satunya nilai yang diterima SDK. SDK mendukung pemuatan beberapa plugins dari lokasi berbeda.

23 23 

24Untuk menggunakan plugin yang didistribusikan melalui [marketplace](/docs/id/plugin-marketplaces) atau repositori jarak jauh, unduh terlebih dahulu dan sediakan jalur direktori lokal. Untuk tata letak direktori yang dibutuhkan plugin, lihat [referensi struktur Plugin](#plugin-structure-reference) di bawah.24Untuk menggunakan plugin yang didistribusikan melalui [marketplace](/docs/id/plugins/overview) atau repositori jarak jauh, unduh terlebih dahulu dan sediakan jalur direktori lokal. Untuk tata letak direktori yang dibutuhkan plugin, lihat [referensi struktur Plugin](#plugin-structure-reference) di bawah.

25 25 

26<CodeGroup>26<CodeGroup>

27 ```typescript TypeScript theme={null}27 ```typescript TypeScript theme={null}


138 ```138 ```

139</CodeGroup>139</CodeGroup>

140 140 

141<h2 id="using-plugin-skills">141<h2 id="use-plugin-skills">

142 Menggunakan plugin skills142 Menggunakan plugin skills

143</h2>143</h2>

144 144 


352 Lihat juga352 Lihat juga

353</h2>353</h2>

354 354 

355* [Plugins](/docs/id/plugins) - Panduan pengembangan plugin lengkap355* [Plugins](/docs/id/plugins/overview) - Panduan pengembangan plugin lengkap

356* [Plugins reference](/docs/id/plugins-reference) - Spesifikasi teknis356* [Plugins reference](/docs/id/plugins/manifest-reference) - Spesifikasi teknis

357* [Commands](/docs/id/agent-sdk/skills#dispatch-commands-by-name) - Mengirimkan commands di SDK357* [Commands](/docs/id/agent-sdk/skills#dispatch-commands-by-name) - Mengirimkan commands di SDK

358* [Subagents](/docs/id/agent-sdk/subagents) - Bekerja dengan agen khusus358* [Subagents](/docs/id/agent-sdk/subagents) - Bekerja dengan agen khusus

359* [Skills](/docs/id/agent-sdk/skills) - Menggunakan Agent Skills359* [Skills](/docs/id/agent-sdk/skills) - Menggunakan Agent Skills

Details

917| `cli_path` | `str \| Path \| None` | `None` | Jalur kustom ke executable CLI Claude Code |917| `cli_path` | `str \| Path \| None` | `None` | Jalur kustom ke executable CLI Claude Code |

918| `settings` | `str \| None` | `None` | Jalur ke file pengaturan atau string JSON inline |918| `settings` | `str \| None` | `None` | Jalur ke file pengaturan atau string JSON inline |

919| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan sumber pengaturan `project` Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |919| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan sumber pengaturan `project` Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |

920| `env` | `dict[str, str]` | `{}` | Variabel lingkungan yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout |920| `env` | `dict[str, str]` | `{}` | Variabel lingkungan yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

921| `extra_args` | `dict[str, str \| None]` | `{}` | Argumen CLI tambahan untuk diteruskan langsung ke CLI |921| `extra_args` | `dict[str, str \| None]` | `{}` | Argumen CLI tambahan untuk diteruskan langsung ke CLI |

922| `max_buffer_size` | `int \| None` | `None` | Byte maksimal saat membuffer stdout CLI |922| `max_buffer_size` | `int \| None` | `None` | Byte maksimal saat membuffer stdout CLI |

923| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - Objek seperti file untuk output debug. Gunakan callback `stderr` sebagai gantinya |923| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - SDK mengabaikan nilai ini. Gunakan callback `stderr` untuk output stderr CLI |

924| `stderr` | `Callable[[str], None] \| None` | `None` | Fungsi callback untuk output stderr dari CLI |924| `stderr` | `Callable[[str], None] \| None` | `None` | Fungsi callback untuk output stderr dari CLI |

925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool, dipanggil hanya ketika [alur izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang auto-approved oleh entri `allowed_tools`, aturan allow, atau `permission_mode`. Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool, dipanggil hanya ketika [alur izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang auto-approved oleh entri `allowed_tools`, aturan allow, atau `permission_mode`. Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |

926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Konfigurasi hook untuk mengintersepsi event |926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Konfigurasi hook untuk mengintersepsi event |

927| `user` | `str \| None` | `None` | Pengenal pengguna |927| `user` | `str \| None` | `None` | Pada platform POSIX, akun pengguna OS tempat subprocess Claude Code berjalan. Claude Code menyimpan lingkungan proses induk, termasuk `HOME`, dan berjalan di `cwd` |

928| `include_partial_messages` | `bool` | `False` | Sertakan event streaming pesan parsial. Ketika diaktifkan, pesan [`StreamEvent`](#streamevent) dihasilkan |928| `include_partial_messages` | `bool` | `False` | Sertakan event streaming pesan parsial. Ketika diaktifkan, pesan [`StreamEvent`](#streamevent) dihasilkan |

929| `include_hook_events` | `bool` | `False` | Sertakan event lifecycle hook dalam aliran pesan sebagai objek `HookEventMessage` |929| `include_hook_events` | `bool` | `False` | Sertakan event lifecycle hook dalam aliran pesan sebagai objek `HookEventMessage` |

930| `forward_subagent_text` | `bool` | `False` | Teruskan blok teks dan thinking subagent dalam aliran pesan. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi bukan teks atau thinking. Memerlukan Python Agent SDK 0.2.140 atau lebih baru |930| `forward_subagent_text` | `bool` | `False` | Teruskan blok teks dan thinking subagent dalam aliran pesan. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi bukan teks atau thinking. Memerlukan Python Agent SDK 0.2.140 atau lebih baru |


1885```1885```

1886 1886 

1887| Field | Tipe | Deskripsi |1887| Field | Tipe | Deskripsi |

1888| :------------------------ | :------------------------ | :------------------------------------------------------------------------------------------------ |1888| :------------------------ | :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1889| `status` | `RateLimitStatus` | Status saat ini. `"allowed_warning"` berarti mendekati batas; `"rejected"` berarti batas tercapai |1889| `status` | `RateLimitStatus` | Status saat ini, salah satu dari `"allowed"`, `"allowed_warning"`, atau `"rejected"`. `"allowed_warning"` berarti mendekati batas; `"rejected"` berarti batas tercapai |

1890| `resets_at` | `int \| None` | Timestamp Unix ketika jendela rate limit direset |1890| `resets_at` | `int \| None` | Timestamp Unix ketika jendela rate limit direset |

1891| `rate_limit_type` | `RateLimitType \| None` | Jendela rate limit mana yang berlaku |1891| `rate_limit_type` | `RateLimitType \| None` | Jendela rate limit mana yang berlaku |

1892| `utilization` | `float \| None` | Fraksi rate limit yang dikonsumsi (0.0 hingga 1.0) |1892| `utilization` | `float \| None` | Fraksi rate limit yang dikonsumsi (0.0 hingga 1.0) |

Details

275Inilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.275Inilah yang membuat Agent SDK berbeda: Claude menjalankan alat secara langsung alih-alih meminta Anda untuk mengimplementasikannya.

276 276 

277<Note>277<Note>

278 Jika Anda melihat kesalahan autentikasi seperti `Not logged in` atau `Invalid API key`, pastikan Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY` di shell tempat Anda menjalankan agen Anda. SDK tidak memuat file `.env` secara otomatis. Lihat [panduan pemecahan masalah lengkap](/docs/id/troubleshooting) untuk bantuan lebih lanjut.278 Jika Anda melihat kesalahan autentikasi seperti `Not logged in` atau `Invalid API key`, pastikan Anda telah menetapkan variabel lingkungan `ANTHROPIC_API_KEY` di shell tempat Anda menjalankan agen Anda. SDK tidak memuat file `.env` secara otomatis.

279 

280 Untuk penyebab dan perbaikan di balik kesalahan autentikasi ini dan kesalahan lainnya, lihat [Kesalahan autentikasi](/docs/id/errors#authentication-errors) dalam referensi Kesalahan.

279</Note>281</Note>

280 282 

281<h3 id="try-other-prompts">283<h3 id="try-other-prompts">


385* **[MCP servers](/docs/id/agent-sdk/mcp)**: terhubung ke database, browser, API, dan sistem eksternal lainnya387* **[MCP servers](/docs/id/agent-sdk/mcp)**: terhubung ke database, browser, API, dan sistem eksternal lainnya

386* **[Hosting](/docs/id/agent-sdk/hosting)**: sebarkan agen ke Docker, cloud, dan CI/CD388* **[Hosting](/docs/id/agent-sdk/hosting)**: sebarkan agen ke Docker, cloud, dan CI/CD

387* **[Example agents](https://github.com/anthropics/claude-agent-sdk-demos)**: lihat contoh lengkap: asisten email, agen penelitian, dan lainnya389* **[Example agents](https://github.com/anthropics/claude-agent-sdk-demos)**: lihat contoh lengkap: asisten email, agen penelitian, dan lainnya

388* **[Troubleshooting](/docs/id/agent-sdk/troubleshooting)**: perbaiki kesalahan Agent SDK berdasarkan pesan yang tepat yang Anda lihat390* **[Troubleshooting](/docs/id/agent-sdk/troubleshooting)**: perbaiki kesalahan ketika CLI gagal dimulai atau keluar, atau hasil tiba tanpa output terstruktur

Details

4 4 

5# Troubleshoot the Agent SDK5# Troubleshoot the Agent SDK

6 6 

7> Perbaiki kesalahan Agent SDK berdasarkan pesan yang tepat yang Anda lihat, dengan penyebab dan solusi untuk setiap kesalahan di SDK TypeScript dan Python.7> Perbaiki kesalahan Agent SDK ketika Claude Code CLI gagal dimulai, proses CLI keluar, atau hasil yang berhasil tiba tanpa output terstruktur.

8 8 

9Entri di halaman ini dikunci ke kesalahan yang Anda lihat. Masing-masing menyebutkan penyebab dan apa yang harus dilakukan.9Halaman ini mencakup kesalahan Agent SDK dalam startup CLI, exit proses CLI, dan output terstruktur. Entri di halaman ini dikunci ke kesalahan yang Anda lihat. Masing-masing menyebutkan penyebab dan apa yang harus dilakukan.

10 

11Gejala yang terikat pada fitur, seperti hook tidak aktif atau skill tidak digunakan, memiliki bagian troubleshooting di halaman fitur tersebut. Tabel menyebutkan bagian atau halaman yang mencakup setiap gejala:

12 

13| Gejala | Buka |

14| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

15| Skills tidak ditemukan, skill tidak digunakan, kesalahan `Invalid skill name` | [Skills troubleshooting](/docs/id/agent-sdk/skills#troubleshooting) |

16| Server MCP menunjukkan status `failed`, tools tidak dipanggil, connection timeouts, tool output yang melebihi token maksimal yang diizinkan | [MCP troubleshooting](/docs/id/agent-sdk/mcp#troubleshooting) |

17| Plugin tidak memuat, plugin skills tidak muncul | [Plugins troubleshooting](/docs/id/agent-sdk/plugins#troubleshooting) |

18| Claude tidak mendelegasikan ke subagents, filesystem-based agents tidak memuat | [Subagents troubleshooting](/docs/id/agent-sdk/subagents#troubleshooting) |

19| Opsi checkpointing tidak dikenali, pesan pengguna tanpa UUIDs, `No file checkpoint found`, `File rewinding is not enabled`, `ProcessTransport is not ready for writing` | [File checkpointing troubleshooting](/docs/id/agent-sdk/file-checkpointing#troubleshooting) |

20| Hook tidak aktif, matcher tidak memfilter seperti yang diharapkan, hook timeout, tool diblokir secara tidak terduga, input yang dimodifikasi tidak diterapkan, session hooks tidak tersedia di Python, subagent permission prompts berlipat ganda, recursive hook loops dengan subagents, `systemMessage` tidak muncul di output | [Fix common issues](/docs/id/agent-sdk/hooks#fix-common-issues) di halaman hooks |

21| Agent yang bekerja di mesin Anda gagal dalam layanan yang diterapkan atau container | [Troubleshoot deployment failures](/docs/id/agent-sdk/hosting#troubleshoot-deployment-failures) |

22| `Not logged in`, `Invalid API key`, `API Error`, `429`, `There's an issue with the selected model` | [Error reference](/docs/id/errors#find-your-error) |

23| `CLINotFoundError`, `CLIConnectionError`, `ProcessError`, `Claude Code process exited with code N`, `Claude Code returned an error result`, `structured_output` adalah `None` | [CLI startup](#cli-startup), [CLI process exit](#cli-process-exit), dan [Structured outputs](#structured-outputs) di halaman ini |

10 24 

11<h2 id="cli-startup">25<h2 id="cli-startup">

12 CLI startup26 CLI startup

agent-teams.md +1 −1

Details

118 118 

119Default adalah `"in-process"`. Atur `"auto"` untuk mengaktifkan split panes ketika Anda sudah berjalan di dalam session tmux, atau ketika terminal Anda adalah iTerm2 dengan CLI `it2` yang terinstal, jatuh kembali ke in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda.119Default adalah `"in-process"`. Atur `"auto"` untuk mengaktifkan split panes ketika Anda sudah berjalan di dalam session tmux, atau ketika terminal Anda adalah iTerm2 dengan CLI `it2` yang terinstal, jatuh kembali ke in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda.

120 120 

121Mulai dari v2.1.186, atur `"iterm2"` untuk menggunakan iTerm2 native split panes secara eksplisit. Mode ini memerlukan [`it2` CLI](https://github.com/mkusaka/it2) dan menampilkan error dengan perintah install jika `it2` hilang. Prompt setup yang menawarkan untuk menginstal `it2` atau beralih ke tmux muncul di bawah `"auto"` atau `"tmux"` ketika terminal Anda adalah iTerm2 dan tmux tersedia sebagai fallback.121Atur `"iterm2"` untuk menggunakan iTerm2 native split panes secara eksplisit. Mode ini memerlukan [`it2` CLI](https://github.com/mkusaka/it2) dan menampilkan error dengan perintah install jika `it2` hilang. Prompt setup yang menawarkan untuk menginstal `it2` atau beralih ke tmux muncul di bawah `"auto"` atau `"tmux"` ketika terminal Anda adalah iTerm2 dan tmux tersedia sebagai fallback.

122 122 

123Untuk mengganti default, atur [`teammateMode`](/docs/id/settings-reference#teammatemode) di `~/.claude/settings.json`:123Untuk mengganti default, atur [`teammateMode`](/docs/id/settings-reference#teammatemode) di `~/.claude/settings.json`:

124 124 

agent-view.md +2 −2

Details

724| :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |724| :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

725| [`--settings <file-or-json>`](/docs/id/settings) | Pengaturan penggantian untuk agent view dan sesi yang dikirim |725| [`--settings <file-or-json>`](/docs/id/settings) | Pengaturan penggantian untuk agent view dan sesi yang dikirim |

726| [`--add-dir <path>`](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) | Berikan akses file ke direktori tambahan |726| [`--add-dir <path>`](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) | Berikan akses file ke direktori tambahan |

727| [`--plugin-dir <path>`](/docs/id/plugins) | Muat plugin dari direktori lokal |727| [`--plugin-dir <path>`](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) | Muat plugin dari direktori lokal |

728| [`--mcp-config <file-or-json>`](/docs/id/mcp) | Muat server MCP dari file konfigurasi atau string JSON |728| [`--mcp-config <file-or-json>`](/docs/id/mcp) | Muat server MCP dari file konfigurasi atau string JSON |

729| `--strict-mcp-config` | Gunakan hanya server MCP dari `--mcp-config`, abaikan konfigurasi MCP lainnya. Lihat [Exclusive control with managed-mcp.json](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan bendera di bawah file MCP yang dikelola |729| `--strict-mcp-config` | Gunakan hanya server MCP dari `--mcp-config`, abaikan konfigurasi MCP lainnya. Lihat [Exclusive control with managed-mcp.json](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan bendera di bawah file MCP yang dikelola |

730 730 


1062| v2.1.257 | Prompt yang disimpan dengan `Ctrl+S` di dalam sesi latar belakang yang dibuka [disimpan dengan sesi](#what-persists-across-restarts), jadi `Ctrl+S` memulihkannya setelah proses sesi dihentikan dan dimulai lagi. Sebelum rilis ini, simpanan hanya hidup dalam proses yang berjalan dan hilang ketika sesi menjadi idle cukup lama untuk prosesnya berhenti, atau ketika dihentikan dan kemudian dibuka kembali. |1062| v2.1.257 | Prompt yang disimpan dengan `Ctrl+S` di dalam sesi latar belakang yang dibuka [disimpan dengan sesi](#what-persists-across-restarts), jadi `Ctrl+S` memulihkannya setelah proses sesi dihentikan dan dimulai lagi. Sebelum rilis ini, simpanan hanya hidup dalam proses yang berjalan dan hilang ketika sesi menjadi idle cukup lama untuk prosesnya berhenti, atau ketika dihentikan dan kemudian dibuka kembali. |

1063| v2.1.251 | Dalam sesi latar belakang yang belum [pindah ke worktree](#how-file-edits-are-isolated), Claude dan subagen yang dipawnnya dapat mengedit file di dalam worktree git yang ditautkan. |1063| v2.1.251 | Dalam sesi latar belakang yang belum [pindah ke worktree](#how-file-edits-are-isolated), Claude dan subagen yang dipawnnya dapat mengedit file di dalam worktree git yang ditautkan. |

1064| v2.1.251 | Claude Code meneruskan gateway penyedia cloud yang diekspor dalam shell tempat Anda mengirim, seperti `ANTHROPIC_VERTEX_BASE_URL` atau `ANTHROPIC_BEDROCK_BASE_URL` dengan bendera bypass autnya, ke [worker sesi](#llm-gateway) di bawah kondisi yang sama dengan `ANTHROPIC_BASE_URL`. Sebelum rilis ini, jika Anda melepaskan atau mengirim dari shell yang hanya diautentikasi melalui gateway seperti itu, setiap permintaan yang dibuat sesi gagal, karena titik akhir dan bendera dijatuhkan dari lingkungannya. |1064| v2.1.251 | Claude Code meneruskan gateway penyedia cloud yang diekspor dalam shell tempat Anda mengirim, seperti `ANTHROPIC_VERTEX_BASE_URL` atau `ANTHROPIC_BEDROCK_BASE_URL` dengan bendera bypass autnya, ke [worker sesi](#llm-gateway) di bawah kondisi yang sama dengan `ANTHROPIC_BASE_URL`. Sebelum rilis ini, jika Anda melepaskan atau mengirim dari shell yang hanya diautentikasi melalui gateway seperti itu, setiap permintaan yang dibuat sesi gagal, karena titik akhir dan bendera dijatuhkan dari lingkungannya. |

1065| v2.1.251 | Ketika sesi latar belakang dimulai sementara proses Claude Code lain sedang menyegarkan [marketplace plugin](/docs/id/plugin-marketplaces), seperti sesi saudara yang menjalankan [pembaruan otomatis marketplace](/docs/id/discover-plugins#configure-auto-updates), Claude Code menjaga plugin marketplace tersebut tetap tersedia. Sebelum rilis ini, sesi seperti itu bisa dimulai tanpa skill, agen, hook, dan server MCP marketplace apa pun dan tetap seperti itu selama seluruh jalannya. |1065| v2.1.251 | Ketika sesi latar belakang dimulai sementara proses Claude Code lain sedang menyegarkan [marketplace plugin](/docs/id/plugins/overview), seperti sesi saudara yang menjalankan [pembaruan otomatis marketplace](/docs/id/plugins/install#keep-plugins-updated), Claude Code menjaga plugin marketplace tersebut tetap tersedia. Sebelum rilis ini, sesi seperti itu bisa dimulai tanpa skill, agen, hook, dan server MCP marketplace apa pun dan tetap seperti itu selama seluruh jalannya. |

1066| v2.1.248 | `Shift+Enter` dalam [input pengiriman](#keyboard-shortcuts) menyisipkan baris baru, sesuai dengan prompt utama, dan `Ctrl+Enter` mengirim dan melampirkan segera di terminal tempat overlay `?` mencantumkan `ctrl+enter to start and open`. Sebelum rilis ini, `Shift+Enter` mengirim dan melampirkan. |1066| v2.1.248 | `Shift+Enter` dalam [input pengiriman](#keyboard-shortcuts) menyisipkan baris baru, sesuai dengan prompt utama, dan `Ctrl+Enter` mengirim dan melampirkan segera di terminal tempat overlay `?` mencantumkan `ctrl+enter to start and open`. Sebelum rilis ini, `Shift+Enter` mengirim dan melampirkan. |

1067| v2.1.248 | [Menghapus sesi](#what-deleting-a-session-removes) berhasil ketika commit worktree sudah ada di salinan lokal cabang default remote `origin` Anda dan checkout utama Anda memiliki cabang itu yang diperiksa; sebelum rilis ini, penghapusan ditolak dengan `has commits that are not pushed anywhere`. |1067| v2.1.248 | [Menghapus sesi](#what-deleting-a-session-removes) berhasil ketika commit worktree sudah ada di salinan lokal cabang default remote `origin` Anda dan checkout utama Anda memiliki cabang itu yang diperiksa; sebelum rilis ini, penghapusan ditolak dengan `has commits that are not pushed anywhere`. |

1068| v2.1.248 | Sesi yang dilepaskan dengan `←` atau `/background` memegang [`git worktree lock`](/docs/id/worktrees#clean-up-subagent-and-background-session-worktrees) pada worktree-nya saat berjalan; sebelum rilis ini, melepaskan melepaskan kunci, dan pembersihan atau `git worktree remove` bisa menghapus worktree di bawah sesi yang sedang berjalan. |1068| v2.1.248 | Sesi yang dilepaskan dengan `←` atau `/background` memegang [`git worktree lock`](/docs/id/worktrees#clean-up-subagent-and-background-session-worktrees) pada worktree-nya saat berjalan; sebelum rilis ini, melepaskan melepaskan kunci, dan pembersihan atau `git worktree remove` bisa menghapus worktree di bawah sesi yang sedang berjalan. |

agents.md +1 −1

Details

22 22 

23* [Worktrees](/docs/id/worktrees) memberikan setiap sesi checkout git terpisah, sehingga sesi paralel tidak pernah mengedit file yang sama. Gunakan untuk sesi yang Anda jalankan sendiri. Sesi yang Anda kirim dari agent view [berpindah ke worktree-nya sendiri sebelum mengedit file](/docs/id/agent-view#how-file-edits-are-isolated), dan subagents yang Anda hasilkan dapat masing-masing mendapatkan satu juga.23* [Worktrees](/docs/id/worktrees) memberikan setiap sesi checkout git terpisah, sehingga sesi paralel tidak pernah mengedit file yang sama. Gunakan untuk sesi yang Anda jalankan sendiri. Sesi yang Anda kirim dari agent view [berpindah ke worktree-nya sendiri sebelum mengedit file](/docs/id/agent-view#how-file-edits-are-isolated), dan subagents yang Anda hasilkan dapat masing-masing mendapatkan satu juga.

24* [Cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude untuk membuat daftar dan mengirim pesan ke sesi Claude Code lain Anda di mesin ini, di mesin lain, atau [di cloud](/docs/id/claude-code-on-the-web), sehingga sesi yang Anda jalankan sendiri dapat melewatkan temuan dan status di antara mereka.24* [Cross-session messaging](/docs/id/cross-session-messaging) memungkinkan Claude untuk membuat daftar dan mengirim pesan ke sesi Claude Code lain Anda di mesin ini, di mesin lain, atau [di cloud](/docs/id/claude-code-on-the-web), sehingga sesi yang Anda jalankan sendiri dapat melewatkan temuan dan status di antara mereka.

25* [`/batch`](/docs/id/commands) adalah [skill](/docs/id/skills) yang membuat Claude membagi satu perubahan besar menjadi 5 hingga 30 subagents terisolasi worktree yang masing-masing membuka pull request. Ini adalah penggunaan subagents dan worktrees yang dikemas, bukan gaya koordinasi terpisah.25* [`/batch`](/docs/id/commands) adalah [skill](/docs/id/skills) yang membuat Claude membagi satu perubahan besar menjadi 5 hingga 30 subagents terisolasi worktree. Ini adalah penggunaan subagents dan worktrees yang dikemas, bukan gaya koordinasi terpisah.

26 26 

27Beberapa fitur lain menjalankan Claude tanpa Anda menjalankan setiap langkah, tetapi mereka menyelesaikan masalah yang berbeda daripada membagi pekerjaan di seluruh agen:27Beberapa fitur lain menjalankan Claude tanpa Anda menjalankan setiap langkah, tetapi mereka menyelesaikan masalah yang berbeda daripada membagi pekerjaan di seluruh agen:

28 28 

Details

518 Gunakan endpoint Mantle518 Gunakan endpoint Mantle

519</h2>519</h2>

520 520 

521Mantle adalah endpoint Amazon Bedrock yang melayani model Claude melalui bentuk API Anthropic asli daripada Amazon Bedrock Invoke API. Ini menggunakan kredensial AWS yang sama [](#2-configure-aws-credentials), [izin IAM](#iam-configuration), dan [konfigurasi `awsAuthRefresh`](#advanced-credential-configuration).521Mantle adalah endpoint Amazon Bedrock yang melayani model Claude melalui bentuk API Anthropic asli daripada Amazon Bedrock Invoke API. Ini menggunakan kredensial AWS yang sama [](#2-configure-aws-credentials) dan [konfigurasi `awsAuthRefresh`](#advanced-credential-configuration).

522 

523Mantle memiliki tindakan IAM-nya sendiri di bawah awalan `bedrock-mantle:`, jadi tindakan `bedrock:` dalam [konfigurasi IAM](#iam-configuration) tidak mencakupnya. Berikan identitas IAM Anda `bedrock-mantle:CreateInference` untuk inferensi dan `bedrock-mantle:CountTokens` untuk penghitungan token. Lihat [Making inference requests](https://docs.aws.amazon.com/bedrock/latest/userguide/inference.html) dan [Counting tokens](https://docs.aws.amazon.com/bedrock/latest/userguide/count-tokens.html) dalam dokumentasi AWS, dan [service authorization reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockpoweredbyawsmantle.html) untuk setiap tindakan Mantle.

522 524 

523<h3 id="enable-mantle">525<h3 id="enable-mantle">

524 Aktifkan Mantle526 Aktifkan Mantle


670 672 

671Jika `/status` tidak menunjukkan `Amazon Bedrock (Mantle)` setelah Anda menetapkan `CLAUDE_CODE_USE_MANTLE`, variabel tidak mencapai proses. Konfirmasi bahwa variabel diekspor di shell tempat Anda meluncurkan `claude`, atau atur di blok `env` dari [file pengaturan](/docs/id/settings) Anda.673Jika `/status` tidak menunjukkan `Amazon Bedrock (Mantle)` setelah Anda menetapkan `CLAUDE_CODE_USE_MANTLE`, variabel tidak mencapai proses. Konfirmasi bahwa variabel diekspor di shell tempat Anda meluncurkan `claude`, atau atur di blok `env` dari [file pengaturan](/docs/id/settings) Anda.

672 674 

673A `403` dari endpoint Mantle dengan kredensial yang valid berarti akun AWS Anda belum diberikan akses ke model yang Anda minta. Hubungi tim akun AWS Anda untuk meminta akses.675Apa yang berarti `403` dari endpoint Mantle tergantung pada apakah kesalahan menyebutkan tindakan IAM:

676 

677* Jika kesalahan menyebutkan tindakan `bedrock-mantle:`, berikan identitas IAM Anda tindakan itu.

678* Jika kesalahan tidak menyebutkan tindakan dan kredensial Anda valid, akun AWS Anda belum diberikan akses ke model yang Anda minta. Hubungi tim akun AWS Anda untuk meminta akses.

674 679 

675A `400` yang menyebutkan ID model berarti model itu tidak dilayani di Mantle. Mantle memiliki lineup model sendiri yang terpisah dari katalog Bedrock standar, jadi ID profil inferensi seperti `us.anthropic.claude-sonnet-4-6` tidak akan berfungsi. Gunakan ID format Mantle, atau aktifkan [kedua endpoint](#run-mantle-alongside-the-invoke-api) sehingga Claude Code merutekan setiap permintaan ke endpoint tempat model tersedia.680A `400` yang menyebutkan ID model berarti model itu tidak dilayani di Mantle. Mantle memiliki lineup model sendiri yang terpisah dari katalog Bedrock standar, jadi ID profil inferensi seperti `us.anthropic.claude-sonnet-4-6` tidak akan berfungsi. Gunakan ID format Mantle, atau aktifkan [kedua endpoint](#run-mantle-alongside-the-invoke-api) sehingga Claude Code merutekan setiap permintaan ke endpoint tempat model tersedia.

676 681 

Details

334 Jalankan `/plugin` untuk menjelajahi marketplace. Plugins menambahkan skills, alat, dan integrasi tanpa konfigurasi.334 Jalankan `/plugin` untuk menjelajahi marketplace. Plugins menambahkan skills, alat, dan integrasi tanpa konfigurasi.

335</Tip>335</Tip>

336 336 

337[Plugins](/docs/id/plugins) menggabungkan skills, hooks, subagents, dan server MCP menjadi satu unit yang dapat diinstal dari komunitas dan Anthropic. Jika Anda bekerja dengan bahasa yang diketik, instal [plugin code intelligence](/docs/id/discover-plugins#code-intelligence) untuk memberikan Claude navigasi simbol presisi dan deteksi kesalahan otomatis setelah pengeditan.337[Plugins](/docs/id/plugins/overview) menggabungkan skills, hooks, subagents, dan server MCP menjadi satu unit yang dapat diinstal dari komunitas dan Anthropic. Jika Anda bekerja dengan bahasa yang diketik, instal [plugin code intelligence](/docs/id/plugins/code-intelligence) untuk memberikan Claude navigasi simbol presisi dan deteksi kesalahan otomatis setelah pengeditan.

338 338 

339Untuk panduan memilih antara skills, subagents, hooks, dan MCP, lihat [Perluas Claude Code](/docs/id/features-overview#match-features-to-your-goal).339Untuk panduan memilih antara skills, subagents, hooks, dan MCP, lihat [Perluas Claude Code](/docs/id/features-overview#match-features-to-your-goal).

340 340 


541 Loop melalui tugas memanggil `claude -p` untuk masing-masing. Gunakan `--allowedTools` untuk cakupan izin untuk operasi batch.541 Loop melalui tugas memanggil `claude -p` untuk masing-masing. Gunakan `--allowedTools` untuk cakupan izin untuk operasi batch.

542</Tip>542</Tip>

543 543 

544Untuk migrasi besar atau analisis, Anda dapat mendistribusikan pekerjaan di seluruh banyak invokasi Claude paralel. Dalam repositori git, jalankan [`/batch <instruction>`](/docs/id/commands#all-commands) untuk membuat Claude membagi perubahan di seluruh 5 hingga 30 subagent. Setiap subagent bekerja dalam worktree-nya sendiri dan membuka pull request. Untuk menjalankan fan-out dari skrip Anda sendiri, loop melalui `claude -p`:544Untuk migrasi besar atau analisis, Anda dapat mendistribusikan pekerjaan di seluruh banyak invokasi Claude paralel. Jalankan [`/batch <instruction>`](/docs/id/commands#all-commands) untuk membuat Claude membagi perubahan di seluruh 5 hingga 30 subagent. Setiap subagent bekerja dalam worktree-nya sendiri. Untuk menjalankan fan-out dari skrip Anda sendiri, loop melalui `claude -p`:

545 545 

546<Steps>546<Steps>

547 <Step title="Hasilkan daftar tugas">547 <Step title="Hasilkan daftar tugas">

channels.md +10 −8

Details

45 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:45 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

46 46 

47 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.47 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.

48 * Plugin [tidak ditemukan di pasar](/docs/id/discover-plugins#install-plugins): periksa nama plugin.48 * Plugin [tidak ditemukan di pasar](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

49 49 

50 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. 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 membuat perintah konfigurasi plugin tersedia.50 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. Periksa ringkasan instalasi: jika melaporkan `Run /reload-plugins to activate.`, lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) untuk membuat perintah konfigurasi plugin tersedia.

51 </Step>51 </Step>

52 52 

53 <Step title="Konfigurasikan token Anda">53 <Step title="Konfigurasikan token Anda">


123 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:123 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

124 124 

125 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.125 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.

126 * Plugin [tidak ditemukan di pasar](/docs/id/discover-plugins#install-plugins): periksa nama plugin.126 * Plugin [tidak ditemukan di pasar](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

127 127 

128 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. 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 membuat perintah konfigurasi plugin tersedia.128 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. Periksa ringkasan instalasi: jika melaporkan `Run /reload-plugins to activate.`, lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) untuk membuat perintah konfigurasi plugin tersedia.

129 </Step>129 </Step>

130 130 

131 <Step title="Konfigurasikan token Anda">131 <Step title="Konfigurasikan token Anda">


188 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:188 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

189 189 

190 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.190 * `Marketplace "claude-plugins-official" not found`: tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.

191 * Plugin [tidak ditemukan di pasar](/docs/id/discover-plugins#install-plugins): periksa nama plugin.191 * Plugin [tidak ditemukan di pasar](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

192 192 

193 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Anda dapat melewatkan itu di sini, karena memulai ulang di langkah berikutnya mengambil plugin.193 Ketika instalasi meminta cakupan instalasi, pilih opsi cakupan pengguna sehingga plugin tersedia di semua proyek Anda. Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Anda tidak perlu bertindak di sini, karena memulai ulang di langkah berikutnya mengambil plugin.

194 </Step>194 </Step>

195 195 

196 <Step title="Mulai ulang dengan channels diaktifkan">196 <Step title="Mulai ulang dengan channels diaktifkan">


245 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:245 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

246 246 

247 * `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.247 * `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.

248 * Plugin [tidak ditemukan di marketplace](/docs/id/discover-plugins#install-plugins): periksa nama plugin.248 * Plugin [tidak ditemukan di marketplace](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

249 249 

250 Ketika instalasi meminta scope instalasi, pilih opsi user scope sehingga plugin tersedia di semua proyek Anda. Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Anda dapat melewatkan itu di sini, karena restart di langkah berikutnya mengambil plugin.250 Ketika instalasi meminta scope instalasi, pilih opsi user scope sehingga plugin tersedia di semua proyek Anda.

251 

252 Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Anda tidak perlu bertindak di sini, karena restart di langkah berikutnya mengambil plugin.

251 </Step>253 </Step>

252 254 

253 <Step title="Mulai ulang dengan channel diaktifkan">255 <Step title="Mulai ulang dengan channel diaktifkan">

Details

191claude --dangerously-load-development-channels server:webhook191claude --dangerously-load-development-channels server:webhook

192```192```

193 193 

194Bypass per-entri. Menggabungkan flag ini dengan `--channels` tidak memperluas bypass ke entri `--channels`. Selama research preview, approved allowlist dikurasi oleh Anthropic, jadi channel Anda tetap pada flag pengembangan saat Anda membangun dan menguji.194Bypass adalah per-entri. Menggabungkan flag ini dengan `--channels` tidak memperluas bypass ke entri `--channels`. Selama research preview, channel Anda tidak ada di approved allowlist, jadi channel Anda tetap pada flag pengembangan saat Anda membangun dan menguji.

195 195 

196<Note>196<Note>

197 Flag ini melewati allowlist saja. Kebijakan organisasi `channelsEnabled` masih berlaku. Jangan gunakan untuk menjalankan channels dari sumber yang tidak terpercaya.197 Flag ini melewati allowlist saja. Kebijakan organisasi `channelsEnabled` masih berlaku. Jangan gunakan untuk menjalankan channels dari sumber yang tidak terpercaya.


802 Paket sebagai plugin802 Paket sebagai plugin

803</h2>803</h2>

804 804 

805Untuk membuat channel Anda dapat diinstal dan dibagikan, bungkus dalam [plugin](/docs/id/plugins) dan publikasikan ke [marketplace](/docs/id/plugin-marketplaces). Pengguna menginstalnya dengan `/plugin install`, kemudian mengaktifkannya per sesi dengan `--channels plugin:<name>@<marketplace>`.805Untuk membuat channel Anda dapat diinstal dan dibagikan, bungkus dalam [plugin](/docs/id/plugins/overview) dan publikasikan ke [marketplace](/docs/id/plugins/overview). Pengguna menginstalnya dengan `/plugin install`, kemudian mengaktifkannya per sesi dengan `--channels plugin:<name>@<marketplace>`.

806 806 

807Channel yang dipublikasikan ke marketplace Anda sendiri masih memerlukan `--dangerously-load-development-channels` untuk berjalan, karena tidak ada di [approved allowlist](/docs/id/channels#supported-channels). Allowlist default adalah plugin channel di `claude-plugins-official`, yang dikurasi Anthropic sesuai kebijaksanaannya. [Formulir pengajuan in-app](/docs/id/plugins#submit-your-plugin-to-the-community-marketplace) menambahkan plugin ke community marketplace, yang tidak ada di allowlist channel.807Channel yang dipublikasikan ke marketplace Anda sendiri masih memerlukan `--dangerously-load-development-channels` untuk berjalan, karena tidak ada di [approved allowlist](/docs/id/channels#supported-channels). Allowlist default adalah plugin channel di `claude-plugins-official`. [Formulir pengajuan in-app](/docs/id/plugins/publish#submit-to-the-community-marketplace) menambahkan plugin ke community marketplace, yang tidak ada di allowlist channel.

808 808 

809Jika Anda bekerja dengan kontak partner Anthropic, hubungi mereka untuk mengoordinasikan listing official-marketplace. Pada rencana Team dan Enterprise, admin dapat sebagai gantinya menyertakan plugin Anda dalam daftar [`allowedChannelPlugins`](/docs/id/channels#restrict-which-channel-plugins-can-run) organisasi, yang menggantikan allowlist Anthropic default.809Jika Anda bekerja dengan kontak partner Anthropic, hubungi mereka untuk mengoordinasikan listing official-marketplace. Pada rencana Team dan Enterprise, admin dapat sebagai gantinya menyertakan plugin Anda dalam daftar [`allowedChannelPlugins`](/docs/id/channels#restrict-which-channel-plugins-can-run) organisasi, yang menggantikan allowlist Anthropic default.

810 810 


815* [Channels](/docs/id/channels) untuk menginstal dan menggunakan Telegram, Discord, iMessage, atau demo fakechat, dan untuk mengaktifkan channels untuk Team atau Enterprise org815* [Channels](/docs/id/channels) untuk menginstal dan menggunakan Telegram, Discord, iMessage, atau demo fakechat, dan untuk mengaktifkan channels untuk Team atau Enterprise org

816* [Working channel implementations](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) untuk kode server lengkap dengan alur pairing, tools balasan, dan lampiran file816* [Working channel implementations](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) untuk kode server lengkap dengan alur pairing, tools balasan, dan lampiran file

817* [MCP](/docs/id/mcp) untuk protokol dasar yang diimplementasikan server channel817* [MCP](/docs/id/mcp) untuk protokol dasar yang diimplementasikan server channel

818* [Plugins](/docs/id/plugins) untuk mengemas channel Anda sehingga pengguna dapat menginstalnya dengan `/plugin install`818* [Plugins](/docs/id/plugins/overview) untuk mengemas channel Anda sehingga pengguna dapat menginstalnya dengan `/plugin install`

Details

54 Putar ulang melewati percakapan yang dihapus54 Putar ulang melewati percakapan yang dihapus

55</h4>55</h4>

56 56 

57Jika Anda menjalankan `/clear` sebelumnya dalam proses Claude Code yang sama, menu putar ulang menampilkan entri tambahan di bagian atas daftar berlabel `/resume <session-id> (previous session)`. Pilih untuk melanjutkan percakapan yang aktif sebelum `/clear` dijalankan. Entri tersedia hingga Anda keluar dari Claude Code atau melanjutkan sesi yang berbeda, dan memerlukan Claude Code v2.1.191 atau lebih baru. Pada versi sebelumnya, jalankan `/resume` dan pilih sesi sebelumnya dari daftar sebagai gantinya.57Jika Anda menjalankan `/clear` sebelumnya dalam proses Claude Code yang sama, menu putar ulang menampilkan entri tambahan di bagian atas daftar berlabel `/resume <session-id> (previous session)`. Pilih untuk melanjutkan percakapan yang aktif sebelum `/clear` dijalankan. Entri tersedia hingga Anda keluar dari Claude Code atau melanjutkan sesi yang berbeda.

58 58 

59<h4 id="guide-a-summary">59<h4 id="guide-a-summary">

60 Panduan ringkasan60 Panduan ringkasan

Details

450 Pengaturan yang tidak dicakup kunci450 Pengaturan yang tidak dicakup kunci

451</h4>451</h4>

452 452 

453Empat pengaturan yang disuplai induk melewati filter bahkan dengan semua lima kunci yang ditetapkan. Di bawah pengaturan pertama-menang default, nilai admin yang memblokir induk adalah yang ada di sumber admin prioritas tertinggi, kecuali untuk `allowedMcpServers` sementara [kunci server MCP](#lock-behavior-across-sources) aktif. Di bawah opt-in penggabungan `managedSourcesBehavior`, [bagaimana Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) mengatakan nilai sumber mana yang berlaku sebagai gantinya.453Enam pengaturan yang disuplai induk melewati filter bahkan dengan semua lima kunci yang ditetapkan. Di bawah pengaturan pertama-menang default, nilai admin yang memblokir induk adalah yang ada di sumber admin prioritas tertinggi, kecuali untuk `allowedMcpServers` sementara [kunci server MCP](#lock-behavior-across-sources) aktif. Di bawah opt-in penggabungan `managedSourcesBehavior`, [bagaimana Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) mengatakan nilai sumber mana yang berlaku sebagai gantinya.

454 454 

455* **`forceLoginOrgUUID`**: Claude Code menghormati nilai yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan UUID organisasi. Masuk gateway tidak memeriksa kunci ini, jadi itu penting hanya untuk armada yang juga menggunakan masuk Anthropic pihak pertama. UUID organisasi dalam sumber admin prioritas tertinggi memblokir nilai induk dan adalah yang ditegakkan Claude Code, jadi atur `forceLoginOrgUUID` di sana.455* **`forceLoginOrgUUID`**: Claude Code menghormati nilai yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan UUID organisasi. Masuk gateway tidak memeriksa kunci ini, jadi itu penting hanya untuk armada yang juga menggunakan masuk Anthropic pihak pertama. UUID organisasi dalam sumber admin prioritas tertinggi memblokir nilai induk dan adalah yang ditegakkan Claude Code, jadi atur `forceLoginOrgUUID` di sana.

456* **`allowedMcpServers`**: Claude Code menghormati daftar izin yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan satu. `allowManagedMcpServersOnly` tidak memblokirnya, karena kunci menegakkan daftar mana pun yang menang sebagai nilai yang dikelola, termasuk daftar yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan satu. Daftar dalam sumber admin prioritas tertinggi memblokir induk dan adalah daftar yang ditegakkan Claude Code, jadi atur `allowedMcpServers` di sana, di sebelah kunci. Sebelum v2.1.223, nilai untuk salah satu kunci dalam sumber admin apa pun memblokir induk.456* **`allowedMcpServers`**: Claude Code menghormati daftar izin yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan satu. `allowManagedMcpServersOnly` tidak memblokirnya, karena kunci menegakkan daftar mana pun yang menang sebagai nilai yang dikelola, termasuk daftar yang disuplai induk ketika sumber admin prioritas tertinggi tidak menetapkan satu. Daftar dalam sumber admin prioritas tertinggi memblokir induk dan adalah daftar yang ditegakkan Claude Code, jadi atur `allowedMcpServers` di sana, di sebelah kunci. Sebelum v2.1.223, nilai untuk salah satu kunci dalam sumber admin apa pun memblokir induk.

457* **`availableModels`**: Claude Code menghormati daftar model yang disuplai induk ketika sumber yang dikelola pemenang tidak menetapkan satu. Jika armada Anda membatasi model, atur `availableModels` dalam sumber pemenang.457* **`availableModels`**: Claude Code menghormati daftar model yang disuplai induk ketika sumber yang dikelola pemenang tidak menetapkan satu. Jika armada Anda membatasi model, atur `availableModels` dalam sumber pemenang.

458* **`strictKnownMarketplaces`**: Claude Code menghormati daftar izin marketplace plugin yang disuplai induk ketika sumber yang dikelola pemenang tidak menetapkan satu. Jika armada Anda membatasi marketplace, atur `strictKnownMarketplaces` dalam sumber pemenang. Memerlukan Claude Code v2.1.282 atau lebih baru.

459* **`blockedMarketplaces`**: daftar blokir marketplace yang disuplai induk melewati dan menambah ke daftar blokir apa pun yang ditetapkan sumber yang dikelola, karena daftar blokir hanya dapat membatasi lebih lanjut. Memerlukan Claude Code v2.1.282 atau lebih baru.

458* **`strictPluginOnlyCustomization`**: kunci ini melewati filter terlepas dari kunci apa pun, dan itu membuat Claude Code mengabaikan kustomisasi pengembang sendiri, termasuk hooks pelindung. Tidak ada kunci yang memblokirnya.460* **`strictPluginOnlyCustomization`**: kunci ini melewati filter terlepas dari kunci apa pun, dan itu membuat Claude Code mengabaikan kustomisasi pengembang sendiri, termasuk hooks pelindung. Tidak ada kunci yang memblokirnya.

459 461 

460<h3 id="connect-claude-desktop">462<h3 id="connect-claude-desktop">

Details

37* [`managed`](#managed): managed settings policies berdasarkan IdP group37* [`managed`](#managed): managed settings policies berdasarkan IdP group

38* [`telemetry`](#telemetry): OTLP forwarding ke observability stack Anda38* [`telemetry`](#telemetry): OTLP forwarding ke observability stack Anda

39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): IP allow/deny, request size caps, upstream time-to-first-byte, dan per-IP sign-in limits39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): IP allow/deny, request size caps, upstream time-to-first-byte, dan per-IP sign-in limits

40* [`load_test_mode`](#load_test_mode): load test gateway tanpa memanggil model provider

40 41 

41<h2 id="secret-expansion">42<h2 id="secret-expansion">

42 Ekspansi secret43 Ekspansi secret


1012| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |1013| `limits` | `max_request_bytes` | 32 MiB | Max inbound request body; permintaan yang terlalu besar mendapat `413` sebelum body dibuffer. Naikkan untuk permintaan file atau gambar besar. |

1013| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |1014| `limits` | `max_request_header_bytes` | unset | Ketika diatur, header yang terlalu besar mengembalikan `431` |

1014| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |1015| `limits` | `max_url_length` | unset | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |

1015| `timeouts` | `upstream_ttfb_ms` | 120000 | Max wait untuk header respons upstream (time to first byte). Response body kemudian stream tanpa wall-clock cap. Berlaku ke jalur upstream Anthropic langsung; setiap penyedia lainnya dibatasi oleh timeout SDK penyedia mereka sendiri. |1016| `timeouts` | `upstream_ttfb_ms` | 120000 | Max wait untuk header respons upstream (time to first byte). Response body kemudian stream tanpa wall-clock cap. Berlaku ke jalur upstream Anthropic langsung; pada setiap penyedia lainnya, gateway menunggu hingga satu jam untuk respons mulai. |

1016| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Per-IP rate limit pada endpoint device-authorization yang tidak terautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan cara mengukurnya. Limit ini berlaku hanya ke alur sign-in device-grant, bukan ke inference `/v1/messages`. Lihat [User-code brute-force resistance](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1017| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Per-IP rate limit pada endpoint device-authorization yang tidak terautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan cara mengukurnya. Limit ini berlaku hanya ke alur sign-in device-grant, bukan ke inference `/v1/messages`. Lihat [User-code brute-force resistance](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

1017| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit pada pengajuan `user_code` di `/device`. Ini adalah apa yang menghentikan seseorang dari menebak kode developer lain. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan seberapa jauh untuk menaikkannya. |1018| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Per-IP rate limit pada pengajuan `user_code` di `/device`. Ini adalah apa yang menghentikan seseorang dari menebak kode developer lain. [Large rollouts](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan seberapa jauh untuk menaikkannya. |

1018 1019 


1027 1028 

1028Di belakang front end seperti itu, atur [`listen.trusted_proxies`](#listen) terlebih dahulu sehingga gateway melihat alamat klien nyata, dan jaga gateway dan segalanya di depannya tidak dapat dijangkau dari internet publik terlepas.1029Di belakang front end seperti itu, atur [`listen.trusted_proxies`](#listen) terlebih dahulu sehingga gateway melihat alamat klien nyata, dan jaga gateway dan segalanya di depannya tidak dapat dijangkau dari internet publik terlepas.

1029 1030 

1031<h3 id="load_test_mode">

1032 `load_test_mode`

1033</h3>

1034 

1035Blok `load_test_mode` memungkinkan Anda load test gateway tanpa memanggil penyedia model. Saat diaktifkan, gateway membangun dan menandatangani setiap permintaan penyedia seperti biasa, membuangnya alih-alih mengirimkannya, dan streaming respons kaleng kembali melalui jalur respons normalnya. Respons adalah teks pengisi yang dimulai dengan kalimat mengatakan itu kaleng.

1036 

1037Memerlukan v2.1.283 atau lebih baru. Versi sebelumnya menolak untuk memulai ketika kunci diatur, jadi upgrade setiap replika sebelum Anda menambahkan blok dan hapus sebelum Anda rollback.

1038 

1039Contoh di bawah mengaktifkan mode dengan default, respons 750 token output yang di-stream selama sekitar 10 detik:

1040 

1041```yaml theme={null}

1042load_test_mode:

1043 enabled: true

1044 reply_tokens: 750 # roughly how many tokens of text each canned reply carries

1045 reply_seconds: 9.5 # how long a streamed reply takes

1046```

1047 

1048| Field | Diperlukan | Deskripsi |

1049| --------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1050| `enabled` | Ya | `true` mengaktifkan mode. `false` menyimpan angka Anda dalam file dengan mode off. Gateway menolak untuk memulai jika blok ada tanpa itu. |

1051| `reply_tokens` | Tidak | Default `750`. Kira-kira berapa banyak token teks yang setiap respons kaleng bawa, angka bulat dari 1 hingga 100000. |

1052| `reply_seconds` | Tidak | Default `9.5`. Berapa lama respons yang di-stream memakan waktu, dari 0 hingga 600. `0` mengirimkan seluruh respons sekaligus. Respons terhadap permintaan non-streaming selalu kembali sekaligus. |

1053 

1054Load test dalam mode ini mencakup gateway, Postgres Anda, dan segalanya di depan gateway. Ini tidak mencakup batas, kecepatan, atau jalur jaringan penyedia.

1055 

1056Saat mode diaktifkan, permintaan dapat membawa header `x-load-test-user` yang menyimpan angka bulat hingga tujuh digit, dan gateway menghitung setiap angka sebagai developer terpisah dengan email dan grup developer yang token-nya datang dengan permintaan. Berikan deployment load-test database kosong sendiri, karena gateway menolak untuk memulai dengan mode diaktifkan terhadap database di mana developer apa pun sudah menghabiskan apa pun.

1057 

1058<Warning>

1059 Jangan pernah mengaktifkan ini untuk gateway yang developer gunakan. Setiap permintaan mendapat respons kaleng dan tidak ada model yang dipanggil. Gateway mencatat peringatan `load_test_mode is on` saat boot dan menandai setiap event audit [`inference`](/docs/id/claude-apps-gateway-deploy#logs) dengan `load_test: true` saat mode diaktifkan.

1060</Warning>

1061 

1030<h2 id="complete-example">1062<h2 id="complete-example">

1031 Contoh lengkap1063 Contoh lengkap

1032</h2>1064</h2>


1098# enforcement:1130# enforcement:

1099# fail_closed_on_error: false1131# fail_closed_on_error: false

1100 1132 

1133# Load test this deployment without calling a model provider. Never on a

1134# gateway that developers use: every request gets a canned reply.

1135# load_test_mode:

1136# enabled: true

1137# # reply_tokens: 750

1138# # reply_seconds: 9.5

1139 

1101# Meter at contracted rates instead of USD list price. Requires admin: or a1140# Meter at contracted rates instead of USD list price. Requires admin: or a

1102# managed: policy. With managed:, the same rates also go to signed-in clients.1141# managed: policy. With managed:, the same rates also go to signed-in clients.

1103# Rates below are placeholders, not real contract prices.1142# Rates below are placeholders, not real contract prices.

Details

219* **[Penegakan batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits#postgres-availability)**: gagal terbuka secara default selama pemadaman, jadi inferensi masih mengalir; balikkan ke gagal tertutup jika Anda lebih suka memblokir daripada menjalankan tanpa meter219* **[Penegakan batas pengeluaran](/docs/id/claude-apps-gateway-spend-limits#postgres-availability)**: gagal terbuka secara default selama pemadaman, jadi inferensi masih mengalir; balikkan ke gagal tertutup jika Anda lebih suka memblokir daripada menjalankan tanpa meter

220* **Kesiapan**: `/readyz` melaporkan tidak siap selama pemadaman, jadi orchestrator yang gating lalu lintas pada kesiapan menghapus setiap replika dari rotasi sekaligus. Dalam topologi itu semua lalu lintas, termasuk inferensi yang dapat masih dilayani gateway, gagal di penyeimbang beban sampai Postgres pulih. Probe liveness di `/healthz` terus lulus, jadi replika tidak dimulai ulang. Arahkan probe kesiapan ke `/healthz` sebagai gantinya jika Anda lebih suka pengembang yang masuk terus bekerja melalui pemadaman toko; biayanya adalah masuk baru gagal terhadap replika yang masih melaporkan siap.220* **Kesiapan**: `/readyz` melaporkan tidak siap selama pemadaman, jadi orchestrator yang gating lalu lintas pada kesiapan menghapus setiap replika dari rotasi sekaligus. Dalam topologi itu semua lalu lintas, termasuk inferensi yang dapat masih dilayani gateway, gagal di penyeimbang beban sampai Postgres pulih. Probe liveness di `/healthz` terus lulus, jadi replika tidak dimulai ulang. Arahkan probe kesiapan ke `/healthz` sebagai gantinya jika Anda lebih suka pengembang yang masuk terus bekerja melalui pemadaman toko; biayanya adalah masuk baru gagal terhadap replika yang masih melaporkan siap.

221 221 

222Jika IdP Anda turun, sesi yang ada bekerja sampai `ttl_hours`, dan login dan penyegaran baru gagal. Atur `ttl_hours` yang lebih lama jika IdP Anda memiliki jendela pemeliharaan yang sering.222Jika IdP Anda turun, sesi yang ada bekerja sampai `ttl_hours`, login baru gagal, dan penyegaran sesi mendapat jawaban coba-lagi dan berjalan setelah IdP kembali. Atur `ttl_hours` yang lebih lama jika IdP Anda memiliki jendela pemeliharaan yang sering.

223 223 

224<h3 id="jwt-secret-rotation">224<h3 id="jwt-secret-rotation">

225 Rotasi rahasia JWT225 Rotasi rahasia JWT

Details

282 282 

283Setiap sesi menampilkan indikator diff dengan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Pilihnya untuk membuka tampilan diff, tinggalkan komentar sebaris pada baris tertentu, dan kirimkan ke Claude dengan pesan berikutnya.283Setiap sesi menampilkan indikator diff dengan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Pilihnya untuk membuka tampilan diff, tinggalkan komentar sebaris pada baris tertentu, dan kirimkan ke Claude dengan pesan berikutnya.

284 284 

285Tampilan diff membandingkan perubahan sesi dengan cabang dasarnya secara default. Untuk membandingkan dengan cabang lain mana pun di repositori, pilih **Compare against** dan pilih salah satu.

286 

285Claude Code menghitung diff ini, termasuk diff per-file yang ditampilkan saat Claude mengedit, dari konten blob git mentah, sehingga driver diff dan filter `textconv` yang dikonfigurasi di repositori tidak berlaku. Untuk file di repositori yang bukan salah satu checkout sesi itu sendiri, seperti yang dikloning di dalam workspace selama sesi, diff per-file menunjukkan edit Claude itu sendiri daripada perbandingan git.287Claude Code menghitung diff ini, termasuk diff per-file yang ditampilkan saat Claude mengedit, dari konten blob git mentah, sehingga driver diff dan filter `textconv` yang dikonfigurasi di repositori tidak berlaku. Untuk file di repositori yang bukan salah satu checkout sesi itu sendiri, seperti yang dikloning di dalam workspace selama sesi, diff per-file menunjukkan edit Claude itu sendiri daripada perbandingan git.

286 288 

287Lihat [Review and iterate](/docs/id/web-quickstart#review-and-iterate) untuk panduan lengkap termasuk pembuatan PR. Untuk membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis, lihat [Auto-fix pull requests](#auto-fix-pull-requests).289Lihat [Review and iterate](/docs/id/web-quickstart#review-and-iterate) untuk panduan lengkap termasuk pembuatan PR. Untuk membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis, lihat [Auto-fix pull requests](#auto-fix-pull-requests).

Details

1451Explorer mencakup file yang Anda buat dan edit. Beberapa file terkait berada di tempat lain:1451Explorer mencakup file yang Anda buat dan edit. Beberapa file terkait berada di tempat lain:

1452 1452 

1453| File | Lokasi | Tujuan |1453| File | Lokasi | Tujuan |

1454| ----------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1454| ----------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Tingkat sistem, bervariasi menurut OS | Pengaturan yang diberlakukan perusahaan yang tidak dapat Anda ganti, kecuali [pengecualian sempit](/docs/id/settings#security-keys-where-the-stricter-value-applies). Lihat [tempat menyimpan file](/docs/id/managed-settings#deploy-a-managed-settings-file) dan [sumber managed mana yang digunakan Claude Code](/docs/id/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buatnya secara manual dan tambahkan ke `.gitignore`. |1456| `CLAUDE.local.md` | Akar proyek | Preferensi pribadi Anda untuk proyek ini, dimuat bersama CLAUDE.md. Buatnya secara manual dan tambahkan ke `.gitignore`. |

1457| `AGENTS.md` | Akar proyek, `.claude/`, atau direktori apa pun | Instruksi proyek yang Anda tulis untuk agen coding AI. Claude Code dapat [memuatnya](/docs/id/memory#agents-md) sendiri atau bersama `CLAUDE.md`. |1457| `AGENTS.md` | Akar proyek, `.claude/`, atau direktori apa pun | Instruksi proyek yang Anda tulis untuk agen coding AI. Claude Code dapat [memuatnya](/docs/id/memory#agents-md) sendiri atau bersama `CLAUDE.md`. |

1458| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, catatan instalasi `installed_plugins.json`, dan data per-plugin, dikelola oleh perintah `claude plugin`. Plugin yang [disinkronkan dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins) diunduh ke `~/.claude/plugins/synced/`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugin-marketplaces#command-sources) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru. Plugin yang tercantum menurut jalur relatif dalam marketplace direktori lokal juga [dimuat di tempat](/docs/id/plugins-reference#plugin-caching-and-file-resolution) dari direktori sumbernya daripada dari salinan cache. Lihat [plugin caching](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk cara versi yatim piatu dibersihkan. |1458| Plugin yang diinstal | `~/.claude/plugins` | Marketplace yang dikloning, versi plugin yang diinstal, catatan instalasi `installed_plugins.json`, dan data per-plugin, dikelola oleh perintah `claude plugin`. Plugin yang [disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins) diunduh ke `~/.claude/plugins/synced/`. Untuk plugin yang diinstal dari marketplace dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source) dalam link mode, Claude Code menyimpan link di sini alih-alih salinan, dan file plugin tetap berada di direktori yang dicetak perintah. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru. Plugin yang tercantum menurut jalur relatif dalam marketplace direktori lokal juga [dimuat di tempat](/docs/id/plugins/loading#find-plugins-on-disk) dari direktori sumbernya daripada dari salinan cache. Lihat [plugin caching](/docs/id/plugins/loading#find-plugins-on-disk) untuk cara versi yatim piatu dibersihkan. |

1459 1459 

1460`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [application data](#application-data) di bawah.1460`~/.claude` juga menyimpan data yang ditulis Claude Code saat Anda bekerja: transkrip, riwayat prompt, snapshot file, cache, dan log. Lihat [application data](#application-data) di bawah.

1461 1461 


1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/id/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/id/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/id/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/id/memory#rules-frontmatter-reference) |

1531 1531 

1532Agents yang dikirimkan dalam [plugin](/docs/id/plugins-reference#plugin-agent-frontmatter) menghormati subset dari bidang subagent.1532Agents yang dikirimkan dalam [plugin](/docs/id/plugins/components#agents) menghormati subset dari bidang subagent.

1533 1533 

1534<h2 id="troubleshoot-configuration">1534<h2 id="troubleshoot-configuration">

1535 Troubleshoot konfigurasi1535 Troubleshoot konfigurasi


1568| `feedback-bundles/` | Arsip transkrip yang disunting ditulis oleh `/feedback` pada penyedia pihak ketiga atau saat tidak ada kredensial Anthropic yang dikonfigurasi, untuk dikirim ke tim akun Anthropic Anda |1568| `feedback-bundles/` | Arsip transkrip yang disunting ditulis oleh `/feedback` pada penyedia pihak ketiga atau saat tidak ada kredensial Anthropic yang dikonfigurasi, untuk dikirim ke tim akun Anthropic Anda |

1569| `feedback/drafts/` | Antrian [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior) menunggu ulasan Anda di `/feedback`. Disapu setelah `cleanupPeriodDays` atau 30 hari, mana yang lebih pendek. Saat antrian mencapai batas 10 draft, Claude Code menghapus draft tertua untuk membuat ruang. |1569| `feedback/drafts/` | Antrian [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior) menunggu ulasan Anda di `/feedback`. Disapu setelah `cleanupPeriodDays` atau 30 hari, mana yang lebih pendek. Saat antrian mencapai batas 10 draft, Claude Code menghapus draft tertua untuk membuat ruang. |

1570| `usage-data/` | `report.html` dan salinan laporan bertanda waktu yang ditulis oleh [`/insights`](/docs/id/costs#analyze-your-usage-patterns), ditambah data analisis per-sesi yang disimpan dalam cache yang digunakan untuk membangunnya |1570| `usage-data/` | `report.html` dan salinan laporan bertanda waktu yang ditulis oleh [`/insights`](/docs/id/costs#analyze-your-usage-patterns), ditambah data analisis per-sesi yang disimpan dalam cache yang digunakan untuk membangunnya |

1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/id/skills#how-synced-skills-behave) dan [plugins](/docs/id/plugins-reference#synced-plugins) yang sinkronisasi claude.ai hapus, seperti setelah Anda mematikannya di claude.ai atau berhenti menyinkronkan. File tetap di sini sehingga Anda dapat memulihkannya sampai sweep menghapusnya |1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/id/skills#how-synced-skills-behave) dan [plugins](/docs/id/plugins/loading#synced-plugins) yang sinkronisasi claude.ai hapus, seperti setelah Anda mematikannya di claude.ai atau berhenti menyinkronkan. File tetap di sini sehingga Anda dapat memulihkannya sampai sweep menghapusnya |

1572| `todos/`, `statsig/`, `logs/` | Direktori warisan dari versi yang lebih lama. Tidak lagi ditulis. Sweep menghapus konten mereka dan kemudian direktori kosong. |1572| `todos/`, `statsig/`, `logs/` | Direktori warisan dari versi yang lebih lama. Tidak lagi ditulis. Sweep menghapus konten mereka dan kemudian direktori kosong. |

1573 1573 

1574File sesi di `sessions/`, memori otomatis, dan transkrip Claude Desktop dan Cowork masing-masing mengikuti aturan retensi mereka sendiri:1574File sesi di `sessions/`, memori otomatis, dan transkrip Claude Desktop dan Cowork masing-masing mengikuti aturan retensi mereka sendiri:


1678Anda juga dapat menghapus salah satu jalur data aplikasi di atas dengan tangan, terlepas dari [file status untuk disimpan](#state-files-to-keep). Sesi baru tidak terpengaruh. Tabel di bawah menunjukkan apa yang Anda hilangkan untuk sesi masa lalu.1678Anda juga dapat menghapus salah satu jalur data aplikasi di atas dengan tangan, terlepas dari [file status untuk disimpan](#state-files-to-keep). Sesi baru tidak terpengaruh. Tabel di bawah menunjukkan apa yang Anda hilangkan untuk sesi masa lalu.

1679 1679 

1680| Hapus | Anda kehilangan |1680| Hapus | Anda kehilangan |

1681| -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1681| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1682| `~/.claude/projects/` | Lanjutkan, lanjutkan, dan putar ulang untuk sesi masa lalu, dan memori otomatis untuk setiap proyek |1682| `~/.claude/projects/` | Lanjutkan, lanjutkan, dan putar ulang untuk sesi masa lalu, dan memori otomatis untuk setiap proyek |

1683| `~/.claude/history.jsonl` | Penarikan prompt panah atas, pencarian riwayat `Ctrl+R`, dan penyelesaian perintah shell `!` |1683| `~/.claude/history.jsonl` | Penarikan prompt panah atas, pencarian riwayat `Ctrl+R`, dan penyelesaian perintah shell `!` |

1684| `~/.claude/paste-cache/` | Teks yang ditempel dalam prompt yang diingat kembali; lihat [tempel konten besar](/docs/id/terminal-config#paste-large-content) |1684| `~/.claude/paste-cache/` | Teks yang ditempel dalam prompt yang diingat kembali; lihat [tempel konten besar](/docs/id/terminal-config#paste-large-content) |


1692| `~/.claude/cache/changelog.md` | Tidak ada. Disegarkan di latar belakang. |1692| `~/.claude/cache/changelog.md` | Tidak ada. Disegarkan di latar belakang. |

1693| `~/.claude/policy-limits.json` | Tidak ada. Disegarkan secara otomatis. |1693| `~/.claude/policy-limits.json` | Tidak ada. Disegarkan secara otomatis. |

1694| `~/.claude/tasks/` | Daftar tugas yang akan diambil sesi yang dilanjutkan |1694| `~/.claude/tasks/` | Daftar tugas yang akan diambil sesi yang dilanjutkan |

1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | Kesempatan untuk memulihkan [skills yang disinkronkan](/docs/id/skills#how-synced-skills-behave) dan [plugins yang disinkronkan](/docs/id/plugins-reference#synced-plugins) yang Claude Code hapus |1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | Kesempatan untuk memulihkan [skills yang disinkronkan](/docs/id/skills#how-synced-skills-behave) dan [plugins yang disinkronkan](/docs/id/plugins/loading#synced-plugins) yang Claude Code hapus |

1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Tidak ada yang menghadap pengguna |1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Tidak ada yang menghadap pengguna |

1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Tidak ada. Direktori warisan tidak ditulis oleh versi saat ini. |1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Tidak ada. Direktori warisan tidak ditulis oleh versi saat ini. |

1698 1698 

Details

242 242 

243Claude Code juga menjalankan perintah ini saat startup ketika tidak dapat memvalidasi kredensial AWS yang ada, dan menampilkan output perintah di panel `Authentication` hingga login selesai.243Claude Code juga menjalankan perintah ini saat startup ketika tidak dapat memvalidasi kredensial AWS yang ada, dan menampilkan output perintah di panel `Authentication` hingga login selesai.

244 244 

245Dengan `awsAuthRefresh` dikonfigurasi, jalankan `/login`, pilih **platform pihak ketiga**, kemudian pilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms**. Claude Code menjalankan perintah yang dikonfigurasi dan membaca ulang kredensial AWS Anda tanpa restart. Opsi ini memerlukan Claude Code v2.1.186 atau lebih baru.245Dengan `awsAuthRefresh` dikonfigurasi, jalankan `/login`, pilih **platform pihak ketiga**, kemudian pilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms**. Claude Code menjalankan perintah yang dikonfigurasi dan membaca ulang kredensial AWS Anda tanpa restart.

246 246 

247**Opsi B: Kunci API Workspace**247**Opsi B: Kunci API Workspace**

248 248 

claude-projects.md +34 −32

Details

10 Projects sedang dalam beta publik di paket Pro dan Max dan diluncurkan secara bertahap, dimulai dengan akun yang telah menggunakan [sesi cloud](/docs/id/claude-code-on-the-web) dan tidak memiliki projects yang ada di claude.ai chat atau Cowork. Mereka belum tersedia di paket Team atau Enterprise. Jika **Projects** tidak muncul di sidebar di [claude.ai/code](https://claude.ai/code) atau di tab Code dari [aplikasi desktop](/docs/id/desktop), peluncuran belum mencapai akun Anda, dan Anda dapat [bergabung dengan daftar tunggu](https://claude.com/form/projects). [Jalankan agen secara paralel](/docs/id/agents) mencantumkan apa yang dapat Anda gunakan sementara itu.10 Projects sedang dalam beta publik di paket Pro dan Max dan diluncurkan secara bertahap, dimulai dengan akun yang telah menggunakan [sesi cloud](/docs/id/claude-code-on-the-web) dan tidak memiliki projects yang ada di claude.ai chat atau Cowork. Mereka belum tersedia di paket Team atau Enterprise. Jika **Projects** tidak muncul di sidebar di [claude.ai/code](https://claude.ai/code) atau di tab Code dari [aplikasi desktop](/docs/id/desktop), peluncuran belum mencapai akun Anda, dan Anda dapat [bergabung dengan daftar tunggu](https://claude.com/form/projects). [Jalankan agen secara paralel](/docs/id/agents) mencantumkan apa yang dapat Anda gunakan sementara itu.

11</Note>11</Note>

12 12 

13Sebuah project adalah satu percakapan berkelanjutan di mana Claude mengoordinasikan aliran pekerjaan terkait untuk Anda. Anda memberi tahu apa yang perlu dilakukan dan ia memulai thread untuk setiap tugas. Setiap thread adalah [sesi cloud](/docs/id/claude-code-on-the-web): Claude Code berjalan di cloud daripada di mesin Anda. Thread berjalan secara paralel dan terus berjalan setelah Anda menutup laptop, dan Anda dapat memeriksanya dan mengarahkannya dari ponsel Anda.13Sebuah project adalah satu percakapan berkelanjutan di mana Claude mengoordinasikan aliran pekerjaan terkait untuk Anda. Anda memberi tahu apa yang perlu dilakukan dan ia memulai thread untuk setiap tugas.

14 

15Setiap thread biasanya adalah [sesi cloud](/docs/id/claude-code-on-the-web): Claude Code berjalan di cloud daripada di mesin Anda. Ketika sebuah tugas membutuhkan sesuatu yang hanya dimiliki komputer Anda, Anda dapat meminta Claude untuk menjalankan thread itu di komputer Anda sebagai gantinya melalui [Remote Control](/docs/id/remote-control). Thread berjalan secara paralel dan Anda dapat memeriksanya dan mengarahkannya dari ponsel Anda. Thread cloud terus berjalan setelah Anda menutup laptop.

14 16 

15Tanpa project, menjalankan beberapa sesi berarti melakukan koordinasi sendiri: Anda memutuskan apa yang dikerjakan masing-masing, mengulangi latar belakang yang sama di awal masing-masing, dan memeriksa kembali untuk melihat mana yang selesai atau membutuhkan jawaban. Dengan project, Anda malah:17Tanpa project, menjalankan beberapa sesi berarti melakukan koordinasi sendiri: Anda memutuskan apa yang dikerjakan masing-masing, mengulangi latar belakang yang sama di awal masing-masing, dan memeriksa kembali untuk melihat mana yang selesai atau membutuhkan jawaban. Dengan project, Anda malah:

16 18 

17* **Kirim pekerjaan ke satu tempat**: tempel laporan bug, stack trace, atau daftar tugas ke dalam percakapan kapan pun muncul. Claude memulai thread untuk setiap bagian pekerjaan atau meneruskannya ke thread yang sudah bekerja di area itu, dan menjawab pertanyaan cepat di tempat.19* **Kirim pekerjaan ke satu tempat**: tempel laporan bug, stack trace, atau daftar tugas ke dalam percakapan kapan pun muncul. Claude memulai thread untuk setiap bagian pekerjaan atau meneruskannya ke thread yang sudah bekerja di area itu, dan menjawab pertanyaan cepat di tempat.

18* **Atur konteks sekali**: setiap thread baru dimulai dengan repositori, instruksi, dan memori project, jadi aturan yang Anda nyatakan sekali, seperti branch mana yang ditargetkan, mencapai semuanya.20* **Atur konteks sekali**: setiap thread baru dimulai dengan instruksi project, jadi aturan yang Anda nyatakan sekali, seperti branch mana yang ditargetkan, mencapai semuanya.

19* **Pergi dan kembali ke pekerjaan yang selesai**: ketika Anda kembali satu jam kemudian atau pagi berikutnya, pane **Overview** menunjukkan thread mana yang selesai, pull request mana yang siap untuk ditinjau, dan thread mana yang menunggu jawaban Anda.21* **Pergi dan kembali ke pekerjaan yang selesai**: ketika Anda kembali satu jam kemudian atau pagi berikutnya, pane **Overview** menunjukkan thread mana yang selesai, pull request mana yang siap untuk ditinjau, dan thread mana yang menunggu jawaban Anda.

20 22 

21Jika Anda sudah tahu pekerjaan yang ingin dijalankan project, langsung ke [Buat project](#create-a-project).23Jika Anda sudah tahu pekerjaan yang ingin dijalankan project, langsung ke [Buat project](#create-a-project).


37 Kapan sesuatu yang lain lebih cocok39 Kapan sesuatu yang lain lebih cocok

38</h3>40</h3>

39 41 

40Thread bekerja pada repositori GitHub dan pada file, folder, dan folder Google Drive yang Anda unggah ke project, bukan pada file atau alat yang hanya ada di mesin Anda. Sesuatu yang lain lebih cocok dalam kasus ini:42Thread bekerja pada repositori GitHub dan pada file, folder, dan folder Google Drive yang Anda unggah ke project, bukan pada file atau alat yang hanya ada di mesin Anda. Jika tugas memerlukan mesin Anda, minta Claude untuk menjalankan threadnya di sana melalui [Remote Control](/docs/id/remote-control). [Limitations](#limitations) mencantumkan apa yang diperlukan. Sesuatu yang lain lebih cocok dalam kasus ini:

41 43 

42* **Satu tugas yang cocok dalam satu sesi**: "Perbaiki tes login yang tidak stabil." Mulai [sesi cloud](/docs/id/claude-code-on-the-web) sendiri.44* **Satu tugas yang cocok dalam satu sesi**: "Perbaiki tes login yang tidak stabil." Mulai [sesi cloud](/docs/id/claude-code-on-the-web) sendiri.

43* **Pekerjaan yang membutuhkan alat atau layanan yang hanya dapat dijangkau mesin Anda**: database lokal, emulator perangkat, API di belakang VPN Anda. Gunakan sesi lokal, atau [agent view](/docs/id/agent-view) untuk menjalankan beberapa sekaligus. Jika pekerjaan hanya membutuhkan file lokal, unggah ke project.45* **Pekerjaan di mana setiap tugas memerlukan mesin Anda**: database lokal, emulator perangkat, atau API di belakang VPN Anda. Gunakan sesi lokal, atau [agent view](/docs/id/agent-view) untuk menjalankan beberapa sekaligus. Jika pekerjaan hanya memerlukan file lokal, unggah ke project.

44* **Satu tugas yang berulang pada jadwal tanpa percakapan di sekitarnya**: "Posting laporan dependensi setiap Senin." Buat [routine](/docs/id/routines) sendiri.46* **Satu tugas yang berulang pada jadwal tanpa percakapan di sekitarnya**: "Posting laporan dependensi setiap Senin." Buat [routine](/docs/id/routines) sendiri.

45* **Beberapa orang memberi Claude pekerjaan dan mengarahkannya bersama di saluran Slack**: lihat [Claude Tag](https://claude.com/docs/claude-tag/overview).47* **Beberapa orang memberi Claude pekerjaan dan mengarahkannya bersama di saluran Slack**: lihat [Claude Tag](https://claude.com/docs/claude-tag/overview).

46 48 


53Project adalah satu percakapan koordinasi dengan Claude ditambah thread yang dimulainya untuk melakukan pekerjaan. Ini adalah bagian-bagiannya:55Project adalah satu percakapan koordinasi dengan Claude ditambah thread yang dimulainya untuk melakukan pekerjaan. Ini adalah bagian-bagiannya:

54 56 

55* **Percakapan project**: satu sesi jangka panjang di mana Claude bertindak sebagai koordinator. Ini mengambil apa yang Anda kirim, memutuskan apa yang menjadi thread, dan melacak setiap thread yang dimulainya. Ini melihat apa yang dilaporkan thread kembali, bukan setiap langkah yang mereka ambil.57* **Percakapan project**: satu sesi jangka panjang di mana Claude bertindak sebagai koordinator. Ini mengambil apa yang Anda kirim, memutuskan apa yang menjadi thread, dan melacak setiap thread yang dimulainya. Ini melihat apa yang dilaporkan thread kembali, bukan setiap langkah yang mereka ambil.

56* **Threads**: para pekerja. Masing-masing adalah [sesi cloud](/docs/id/claude-code-on-the-web) terpisah dengan jendela konteks sendiri yang melakukan satu bagian pekerjaan di cabang sendiri, membuka pull request ketika pekerjaan memanggilnya, dan melaporkan kembali ke percakapan ketika selesai.58* **Threads**: para pekerja. Masing-masing adalah sesi terpisah dengan jendela konteks sendiri yang melakukan satu bagian pekerjaan dan melaporkan kembali ke percakapan ketika selesai. Thread cloud bekerja di cabang sendiri dan membuka pull request ketika pekerjaan memanggilnya.

57* **Apa yang dimulai setiap thread dengan**:59* **Apa yang dimulai setiap cloud thread dengan**:

58 * Repositori dan file project, ditambah [instruksi dan memori](#give-a-project-standing-context)60 * Repositori dan file project, ditambah [instruksi dan memori](#give-a-project-standing-context)

59 * `CLAUDE.md` dan skills di [setiap repositori project](#what-threads-pick-up-from-your-repositories), dan di project dengan satu repositori, aturan izin dan hooks repositori itu juga61 * `CLAUDE.md` dan skills di [setiap repositori project](#what-threads-pick-up-from-your-repositories), dan di project dengan satu repositori, aturan izin dan hooks repositori itu juga

60 * [Connectors](#get-skills-plugins-connectors-and-tools-into-threads) di akun claude.ai Anda62 * [Connectors](#get-skills-plugins-connectors-and-tools-into-threads) di akun claude.ai Anda

61 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, variabel lingkungan, kredensial API, dan alat yang terinstal63 * [Cloud environment](#choose-an-environment-for-threads) yang menetapkan akses jaringan, variabel lingkungan, kredensial API, dan alat yang terinstal

62* **Pane Overview**: di mana Anda [melihat semua thread sekaligus](#see-what-needs-you-in-overview) dan mana yang membutuhkan Anda. Tab lainnya adalah **Library** untuk file yang Anda tambahkan dan file yang dihasilkan thread, **Pull requests** untuk yang dibuka thread, dan **Routines** untuk pekerjaan terjadwal di project.64* **Pane Overview**: di mana Anda [melihat semua thread sekaligus](#see-what-needs-you-in-overview) dan mana yang membutuhkan Anda. Tab lainnya adalah **Library** untuk file yang Anda tambahkan dan file yang dihasilkan thread, **Pull requests** untuk yang dibuka thread, dan **Routines** untuk pekerjaan terjadwal di project.

63 65 

64Thread tidak mengambil apa pun dari setup Claude Code di mesin Anda sendiri. [Dapatkan skills, plugins, connectors, dan tools ke dalam threads](#get-skills-plugins-connectors-and-tools-into-threads) mencakup cara memberikan mereka apa yang mereka butuhkan.66Cloud threads tidak mengambil apa pun dari setup Claude Code di mesin Anda sendiri. [Dapatkan skills, plugins, connectors, dan tools ke dalam threads](#get-skills-plugins-connectors-and-tools-into-threads) mencakup cara memberikan mereka apa yang mereka butuhkan.

65 67 

66Berikut adalah bagaimana bagian-bagian itu terhubung, dari Anda melalui percakapan ke thread yang melakukan pekerjaan, dengan **Overview** melacak keadaan mereka:68Berikut adalah bagaimana bagian-bagian itu terhubung, dari Anda melalui percakapan ke thread yang melakukan pekerjaan, dengan **Overview** melacak keadaan mereka:

67 69 

68<Frame>70<Frame>

69 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap thread adalah sesi cloud yang bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja." width="600" height="250" data-path="images/claude-projects-overview.svg" />71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap cloud thread bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja." width="600" height="250" data-path="images/claude-projects-overview.svg" />

70 72 

71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap thread adalah sesi cloud yang bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />73 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagram project. Anda menulis di percakapan project, di mana Claude menjawab atau memulai thread. Setiap cloud thread bekerja di cabang dan pull request sendiri. Pane Overview mencantumkan thread berdasarkan keadaan, seperti siap untuk ditinjau, menunggu Anda, dan bekerja." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />

72</Frame>74</Frame>

73 75 

74<h2 id="create-a-project">76<h2 id="create-a-project">


90 92 

91* **Paket**: Anda berada di Pro atau Max dan **Projects** ditampilkan di sidebar Anda.93* **Paket**: Anda berada di Pro atau Max dan **Projects** ditampilkan di sidebar Anda.

92* **GitHub, jika project akan bekerja pada kode**: kode Anda ada di github.com daripada GitHub Enterprise Server, GitLab, atau Bitbucket, akun GitHub yang terhubung memiliki akses push ke kode, dan Claude GitHub App terinstal di atasnya. Jika Anda menghubungkan GitHub dengan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal), token itu memungkinkan sesi cloud lain Anda menjangkau repositori tetapi tidak cukup untuk thread project, yang membutuhkan Claude GitHub App. [Atur akses GitHub](#set-up-github-access) memiliki langkah-langkahnya.94* **GitHub, jika project akan bekerja pada kode**: kode Anda ada di github.com daripada GitHub Enterprise Server, GitLab, atau Bitbucket, akun GitHub yang terhubung memiliki akses push ke kode, dan Claude GitHub App terinstal di atasnya. Jika Anda menghubungkan GitHub dengan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal), token itu memungkinkan sesi cloud lain Anda menjangkau repositori tetapi tidak cukup untuk thread project, yang membutuhkan Claude GitHub App. [Atur akses GitHub](#set-up-github-access) memiliki langkah-langkahnya.

93* **Jaringan, kredensial, dan alat**: ini berasal dari [cloud environment](#choose-an-environment-for-threads) project. Environment default sudah menjangkau [registri paket umum](/docs/id/cloud-environments#default-allowed-domains), jadi periksa ini hanya jika pekerjaan membutuhkan domain lain, rahasia, atau alat yang tidak terinstal sebelumnya. Jika pekerjaan membutuhkan server MCP, periksa bahwa itu ditampilkan sebagai terhubung di [connectors claude.ai](https://claude.ai/customize/connectors) Anda.95* **Jaringan, kredensial, dan alat**: untuk thread cloud, ini berasal dari [cloud environment](#choose-an-environment-for-threads) project. Environment default sudah menjangkau [registri paket umum](/docs/id/cloud-environments#default-allowed-domains), jadi periksa ini hanya jika pekerjaan membutuhkan domain lain, rahasia, atau alat yang tidak terinstal sebelumnya. Jika pekerjaan membutuhkan server MCP, periksa bahwa itu ditampilkan sebagai terhubung di [connectors claude.ai](https://claude.ai/customize/connectors) Anda.

94 96 

95<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

96 Mulai project baru dari awal98 Mulai project baru dari awal


279 Berikan project konteks berdiri281 Berikan project konteks berdiri

280</h2>282</h2>

281 283 

282Project memory, project instructions, dan repositori, file, dan environment project membawa konteks di seluruh thread. Anda menetapkan masing-masing sekali dan itu berlaku untuk setiap thread baru.284Project memory, project instructions, dan repositori, file, dan environment project membawa konteks di seluruh thread. Anda menetapkan masing-masing sekali.

283 285 

284| Konteks | Apa yang dibawanya | Cara Anda menetapkannya |286| Konteks | Apa yang dibawanya | Cara Anda menetapkannya |

285| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |287| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

286| Project memory | Catatan yang disimpan Claude tentang project, seperti persyaratan, keputusan, dan jebakan, disimpan sebagai file. Setiap thread membaca file indeks `MEMORY.md` ketika dimulai dan membuka file lain ketika membutuhkannya | Minta Claude dalam percakapan project atau thread apa pun untuk mengingat persyaratan, keputusan, atau jebakan, atau untuk melupakannya. Baca, edit, dan hapus file di **Project settings > Memory** |288| Project memory | Catatan yang disimpan Claude tentang project, seperti persyaratan, keputusan, dan jebakan, disimpan sebagai file. Setiap thread cloud membaca file indeks `MEMORY.md` ketika dimulai dan membuka file lain ketika membutuhkannya | Minta Claude dalam percakapan project atau thread cloud apa pun untuk mengingat persyaratan, keputusan, atau jebakan, atau untuk melupakannya. Baca, edit, dan hapus file di **Project settings > Memory** |

287| Project instructions | Teks yang dikirim ke setiap thread baru dan ke Claude dalam percakapan project, hingga 16.000 karakter. [Tulis project instructions](#write-project-instructions) mencakup apa yang harus dimasukkan | **Project settings > Memory > Project instructions**, atau minta Claude untuk mengubah instruksi |289| Project instructions | Teks yang dikirim ke setiap thread baru dan ke Claude dalam percakapan project, hingga 16.000 karakter. [Tulis project instructions](#write-project-instructions) mencakup apa yang harus dimasukkan | **Project settings > Memory > Project instructions**, atau minta Claude untuk mengubah instruksi |

288| Repositori, file, dan environment | Repositori yang dikloning setiap thread, folder dan file yang dapat dibaca setiap thread di bawah `/mnt/project-files`, dan cloud environment yang dijalankan thread | Repositori dan environment di **Project settings > Environment**, atau minta Claude dalam percakapan untuk menambahkan repositori ke project. File dan folder dari **Add** di tab **Library** di **Overview** |290| Repositori, file, dan environment | Repositori yang dikloning setiap thread cloud, folder dan file yang dapat dibaca setiap thread di bawah `/mnt/project-files`, dan cloud environment yang dijalankan thread | Repositori dan environment di **Project settings > Environment**, atau minta Claude dalam percakapan untuk menambahkan repositori ke project. File dan folder dari **Add** di tab **Library** di **Overview** |

289 291 

290**Project settings > Memory** mencantumkan file-file ini di bawah **Auto memory**, karena Claude menulisnya sendiri saat bekerja di project. Mereka terpisah dari [auto memory](/docs/id/memory) yang disimpan Claude Code di mesin Anda, meskipun keduanya menggunakan indeks `MEMORY.md`. Project memory juga terpisah dari file `CLAUDE.md` di repositori project. Setiap thread masih membaca file `CLAUDE.md` itu dari klonnya ketika dimulai, jadi masukkan instruksi tentang repositori di `CLAUDE.md`-nya dan catatan tentang project di project memory.292**Project settings > Memory** mencantumkan file-file ini di bawah **Auto memory**, karena Claude menulisnya sendiri saat bekerja di project. Mereka terpisah dari [auto memory](/docs/id/memory) yang disimpan Claude Code di mesin Anda, meskipun keduanya menggunakan indeks `MEMORY.md`. Project memory juga terpisah dari file `CLAUDE.md` di repositori project. Setiap thread cloud masih membaca file `CLAUDE.md` itu dari klonnya ketika dimulai, jadi masukkan instruksi tentang repositori di `CLAUDE.md`-nya dan catatan tentang project di project memory.

291 293 

292<h3 id="write-project-instructions">294<h3 id="write-project-instructions">

293 Tulis project instructions295 Tulis project instructions


312- Jangan merge, force-push, atau ubah konfigurasi CI tanpa bertanya kepada saya di thread.314- Jangan merge, force-push, atau ubah konfigurasi CI tanpa bertanya kepada saya di thread.

313```315```

314 316 

315Aturan tentang satu repositori, seperti perintah buildnya, termasuk dalam `CLAUDE.md` repositori itu, yang dibaca setiap thread ketika repositori adalah bagian dari project. Setelah pekerjaan sedang berlangsung, ketika Anda mengoreksi thread, juga beri tahu Claude untuk mengingat koreksi: itu masuk ke [project memory](#give-a-project-standing-context) dan thread yang lebih baru dimulai dengannya.317Aturan tentang satu repositori, seperti perintah buildnya, termasuk dalam `CLAUDE.md` repositori itu, yang dibaca setiap thread cloud ketika repositori adalah bagian dari project. Setelah pekerjaan sedang berlangsung, ketika Anda mengoreksi thread, juga beri tahu Claude untuk mengingat koreksi: itu masuk ke [project memory](#give-a-project-standing-context) dan thread yang lebih baru dimulai dengannya.

316 318 

317<h3 id="decide-which-repositories-to-add">319<h3 id="decide-which-repositories-to-add">

318 Tentukan repositori mana yang akan ditambahkan320 Tentukan repositori mana yang akan ditambahkan


321Repositori yang Anda tambahkan ke project datang dengan semua yang ada di dalamnya, kode, `CLAUDE.md`, dan skills, di setiap thread. Repositori yang tidak Anda tambahkan masih dalam jangkauan: thread dapat menambahkan satu ke dirinya sendiri ketika tugasnya membutuhkannya. Sebagian besar project menggunakan keduanya:323Repositori yang Anda tambahkan ke project datang dengan semua yang ada di dalamnya, kode, `CLAUDE.md`, dan skills, di setiap thread. Repositori yang tidak Anda tambahkan masih dalam jangkauan: thread dapat menambahkan satu ke dirinya sendiri ketika tugasnya membutuhkannya. Sebagian besar project menggunakan keduanya:

322 324 

323* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md` dan skills-nya dimuat, terlepas dari apakah tugas menyentuhnya. Pergi dari satu repositori ke beberapa juga mengubah apa yang diambil thread dari `.claude/settings.json` setiap repositori; lihat [Apa yang diambil thread dari repositori Anda](#what-threads-pick-up-from-your-repositories).325* **Tambahkan ke project**, di dialog **New project**, di **Project settings > Environment**, atau dengan meminta Claude dalam percakapan untuk menambahkannya ke project. Setiap thread dari saat itu mengklonnya dan dimulai dengan `CLAUDE.md` dan skills-nya dimuat, terlepas dari apakah tugas menyentuhnya. Pergi dari satu repositori ke beberapa juga mengubah apa yang diambil thread dari `.claude/settings.json` setiap repositori; lihat [Apa yang diambil thread dari repositori Anda](#what-threads-pick-up-from-your-repositories).

324* **Biarkan off dan biarkan thread menambahkannya ketika diperlukan.** Thread yang tugasnya membutuhkan repositori yang tidak dimiliki project dapat menambahkannya ke dirinya sendiri, dan catatan dalam thread mengatakan itu ditambahkan ke thread ini saja. Klon terjadi setengah jalan melalui tugas, jadi `CLAUDE.md` dan skills repositori itu tidak ada ketika thread dimulai. Thread berikutnya dimulai tanpanya lagi. Repositori yang ditambahkan thread membutuhkan [prasyarat](#check-the-prerequisites) yang sama dengan repositori project: Claude GitHub App diinstal di atasnya dan akses push dari akun GitHub Anda.326* **Biarkan off dan biarkan thread menambahkannya ketika diperlukan.** Thread yang tugasnya membutuhkan repositori yang tidak dimiliki project dapat menambahkannya ke dirinya sendiri, dan catatan dalam thread mengatakan itu ditambahkan ke thread ini saja. Klon terjadi setengah jalan melalui tugas, jadi `CLAUDE.md` dan skills repositori itu tidak ada ketika thread dimulai. Thread berikutnya dimulai tanpanya lagi. Repositori yang ditambahkan dengan cara ini membutuhkan [prasyarat](#check-the-prerequisites) yang sama dengan repositori project: Claude GitHub App diinstal di atasnya dan akses push dari akun GitHub Anda.

325 327 

326Project tidak membutuhkan repositori sama sekali. Thread-nya masih dapat meneliti, menulis dokumen, dan menulis dan menjalankan kode di sandbox mereka sendiri, dan mereka memberikan file ke tab **Library**. Thread di sana juga dapat menambahkan repositori ke dirinya sendiri ketika tugas memanggilnya.328Project tidak membutuhkan repositori sama sekali. Thread-nya masih dapat meneliti, menulis dokumen, dan menulis dan menjalankan kode di sandbox mereka sendiri, dan mereka memberikan file ke tab **Library**. Thread di sana juga dapat menambahkan repositori ke dirinya sendiri ketika tugas memanggilnya.

327 329 


333 Apa yang diambil thread dari repositori Anda335 Apa yang diambil thread dari repositori Anda

334</h3>336</h3>

335 337 

336Setiap thread mengkloning setiap repositori dalam project dan memuat `CLAUDE.md` dan skills dari semuanya. Permission rules, hooks, dan `env` hanya datang dari `.claude/settings.json` di direktori tempat thread dimulai: di dalam repositori ketika project memiliki satu, dan di atas klon ketika memiliki beberapa, di mana file repositori tidak dibaca untuk mereka.338Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `CLAUDE.md` dan skills dari semuanya. Permission rules, hooks, dan `env` hanya datang dari `.claude/settings.json` di direktori tempat thread dimulai: di dalam repositori ketika project memiliki satu, dan di atas klon ketika memiliki beberapa, di mana file repositori tidak dibaca untuk mereka.

337 339 

338| Di setiap repositori | Satu repositori | Beberapa repositori |340| Di setiap repositori | Satu repositori | Beberapa repositori |

339| :------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- |341| :------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- |


356 Dapatkan skills, plugins, connectors, dan tools ke dalam threads358 Dapatkan skills, plugins, connectors, dan tools ke dalam threads

357</h3>359</h3>

358 360 

359Thread adalah sesi cloud, jadi mereka tidak memiliki skills, server MCP, plugins, dan tools yang diinstal hanya di mesin Anda. Untuk membuat masing-masing tersedia untuk thread:361Thread cloud tidak memiliki skills, server MCP, plugins, dan tools yang diinstal hanya di mesin Anda. Thread yang Claude jalankan di mesin Anda melalui [Remote Control](/docs/id/remote-control) menggunakan apa yang diinstal di sana. Untuk membuat masing-masing tersedia untuk thread cloud:

360 362 

361* Skills, subagents, dan commands: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang dicommit ke satu repositori tersedia di setiap thread baru. Thread juga memuat skills yang Anda aktifkan untuk akun claude.ai Anda.363* Skills, subagents, dan commands: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang dicommit ke satu repositori tersedia di setiap thread cloud. Thread cloud juga memuat skills yang Anda aktifkan untuk akun claude.ai Anda.

362* Plugins: tambahkan di **Project settings > Plugins**; mereka dimuat ke setiap thread baru. Plugins yang dideklarasikan repositori di `.claude/settings.json`-nya [tidak dimuat dalam threads](/docs/id/cloud-environments#what-carries-over-from-your-setup), karena threads adalah sesi cloud.364* Plugins: tambahkan di **Project settings > Plugins**; mereka dimuat ke setiap thread cloud baru. Plugins yang dideklarasikan repositori di `.claude/settings.json`-nya [tidak dimuat dalam thread cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).

363* Server MCP: thread mendapatkan alat MCP mereka dari connectors di akun claude.ai Anda, yang merupakan server MCP yang Anda hubungkan sekali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors) atau melalui link **Manage connectors** di **Project settings > Environment**. Setiap thread dapat menggunakan semuanya tanpa setup per-project. Percakapan project itu sendiri tidak memiliki connectors, jadi kirim pekerjaan yang membutuhkan satu sebagai tugas untuk thread. Dalam project dengan satu repositori, thread juga memuat server MCP dari [`.mcp.json`](/docs/id/cloud-environments#what-carries-over-from-your-setup) repositori itu. [Bagaimana connectors mencapai Claude Code](/docs/id/mcp#how-connectors-reach-claude-code) mencantumkan aturan untuk sesi cloud dan pengaturan yang mematikan connectors.365* Server MCP: thread cloud mendapatkan alat MCP mereka dari connectors di akun claude.ai Anda, yang merupakan server MCP yang Anda hubungkan sekali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors) atau melalui link **Manage connectors** di **Project settings > Environment**. Setiap thread cloud dapat menggunakan semuanya tanpa setup per-project. Percakapan project itu sendiri tidak memiliki connectors, jadi kirim pekerjaan yang membutuhkan satu sebagai tugas untuk thread cloud. Dalam project dengan satu repositori, thread cloud juga memuat server MCP dari [`.mcp.json`](/docs/id/cloud-environments#what-carries-over-from-your-setup) repositori itu. [Bagaimana connectors mencapai Claude Code](/docs/id/mcp#how-connectors-reach-claude-code) mencantumkan aturan untuk sesi cloud dan pengaturan yang mematikan connectors.

364* Command-line tools dan packages: instal di [setup script](/docs/id/cloud-environments#setup-scripts) environment.366* Command-line tools dan packages: instal di [setup script](/docs/id/cloud-environments#setup-scripts) environment.

365 367 

366Untuk melihat connectors mana yang dimiliki thread yang sedang berjalan di claude.ai/code, buka thread dan pilih **Connectors** dari menu **+** di samping kotak pesannya. Mematikan connector di sana menghapusnya dari thread itu dan menyimpannya sebagai default akun Anda, jadi thread baru dan chat claude.ai dimulai tanpanya sampai Anda menyalakannya kembali. Thread mengambil connector yang Anda tambahkan atau hubungkan kembali setelah pesan berikutnya yang Anda kirimkan.368Untuk melihat connectors mana yang dimiliki thread cloud yang sedang berjalan di claude.ai/code, buka thread dan pilih **Connectors** dari menu **+** di samping kotak pesannya. Mematikan connector di sana menghapusnya dari thread itu dan menyimpannya sebagai default akun Anda, jadi thread baru dan chat claude.ai dimulai tanpanya sampai Anda menyalakannya kembali. Thread cloud mengambil connector yang Anda tambahkan atau hubungkan kembali setelah pesan berikutnya yang Anda kirimkan.

367 369 

368<h2 id="project-settings-reference">370<h2 id="project-settings-reference">

369 Referensi pengaturan project371 Referensi pengaturan project


434 Bagaimana project berhubungan dengan fitur Claude Code lainnya436 Bagaimana project berhubungan dengan fitur Claude Code lainnya

435</h2>437</h2>

436 438 

437Beberapa fitur Claude Code memungkinkan lebih dari satu sesi bekerja pada waktu yang sama, jadi menjalankan pekerjaan secara paralel bukan dengan sendirinya apa yang dimaksudkan project. Dalam project, Claude memulai dan melacak sesi alih-alih Anda, masing-masing dimulai dari repositori, instruksi, dan memori yang sama, dan pekerjaan hidup di cloud selama pekerjaan berlangsung. Inilah cara setiap fitur tetangga terhubung ke project:439Beberapa fitur Claude Code memungkinkan lebih dari satu sesi bekerja pada waktu yang sama, jadi menjalankan pekerjaan secara paralel bukan dengan sendirinya apa yang dimaksudkan project. Dalam project, Claude memulai dan melacak sesi alih-alih Anda, dan masing-masing dimulai dari instruksi yang sama. Inilah cara setiap fitur tetangga terhubung ke project:

438 440 

439* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) adalah Claude di saluran Slack tim Anda, di paket Team dan Enterprise. Siapa pun di saluran dapat memberikan pekerjaan, semua orang di saluran melihat dan mengarahkannya, dan itu menggunakan koneksi yang disiapkan admin untuk saluran itu. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, itu menggunakan akses GitHub dan connectors Anda sendiri, dan itu di Pro dan Max. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.441* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) adalah Claude di saluran Slack tim Anda, di paket Team dan Enterprise. Siapa pun di saluran dapat memberikan pekerjaan, semua orang di saluran melihat dan mengarahkannya, dan itu menggunakan koneksi yang disiapkan admin untuk saluran itu. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, itu menggunakan akses GitHub dan connectors Anda sendiri, dan itu di Pro dan Max. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.

440* **Cloud sessions**: setiap thread adalah [sesi cloud](/docs/id/claude-code-on-the-web), dimulai dan dilacak oleh Claude alih-alih oleh Anda. Sesi cloud yang Anda mulai sendiri dapat menjadi project atau memberi makan satu melalui [**Continue as a project** atau **Move to project**](#start-from-an-existing-cloud-session).442* **Cloud sessions**: setiap thread adalah [sesi cloud](/docs/id/claude-code-on-the-web) kecuali Anda meminta Claude untuk menjalankannya di mesin Anda. Bagaimanapun, Claude memulai dan melacaknya alih-alih Anda. Sesi cloud yang Anda mulai sendiri dapat menjadi project atau memberi makan satu melalui [**Continue as a project** atau **Move to project**](#start-from-an-existing-cloud-session).

441* **Routines**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [routine](/docs/id/routines) yang berjalan sebagai thread dalam project itu dan muncul di tab **Routines**-nya. Routine yang Anda buat di luar project terus bekerja sendiri.443* **Routines**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [routine](/docs/id/routines) yang berjalan sebagai thread dalam project itu dan muncul di tab **Routines**-nya. Routine yang Anda buat di luar project terus bekerja sendiri.

442* **Local sessions dan agent view**: sesi di terminal, IDE, atau environment lokal aplikasi desktop berjalan di mesin Anda dan tidak dapat menjadi bagian dari project. [Agent view](/docs/id/agent-view) adalah layar untuk melacak beberapa sesi lokal itu; itu tidak memiliki koordinator.444* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tidak dapat ditambahkan ke project. Project menjangkau mesin Anda hanya dengan menjalankan thread di sana melalui [Remote Control](/docs/id/remote-control). [Agent view](/docs/id/agent-view) adalah layar untuk melacak beberapa sesi lokal yang Anda mulai sendiri; itu tidak memiliki koordinator.

443* **Worktrees**: [worktree](/docs/id/worktrees) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori sehingga sesi paralel di mesin Anda tidak menimpa satu sama lain. Thread tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di cabang sendiri.445* **Worktrees**: [worktree](/docs/id/worktrees) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori sehingga sesi paralel di mesin Anda tidak menimpa satu sama lain. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di cabang sendiri.

444* **Agent teams**: [agent team](/docs/id/agent-teams) adalah satu sesi yang memulai sesi rekan untuk satu tugas, di mesin Anda atau di dalam sesi cloud, dan berakhir dengan tugas itu.446* **Agent teams**: [agent team](/docs/id/agent-teams) adalah satu sesi yang memulai sesi rekan untuk satu tugas, di mesin Anda atau di dalam sesi cloud, dan berakhir dengan tugas itu.

445* **Projects di claude.ai chat dan Cowork**: [pengalaman Projects sebelumnya](https://support.claude.com/en/articles/9517075-what-are-projects), yang mengelompokkan percakapan dan file referensi tanpa thread atau koordinator. Project tersebut terus bekerja seperti yang mereka lakukan hari ini sampai pengalaman yang dirancang ulang mencapai mereka.447* **Projects di claude.ai chat dan Cowork**: [pengalaman Projects sebelumnya](https://support.claude.com/en/articles/9517075-what-are-projects), yang mengelompokkan percakapan dan file referensi tanpa thread atau koordinator. Project tersebut terus bekerja seperti yang mereka lakukan hari ini sampai pengalaman yang dirancang ulang mencapai mereka.

446 448 


451</h2>453</h2>

452 454 

453* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal atau melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Perintah [`claude project`](/docs/id/cli-reference) CLI, yang mengelola keadaan Claude Code lokal untuk direktori, tidak terkait.455* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal atau melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Perintah [`claude project`](/docs/id/cli-reference) CLI, yang mengelola keadaan Claude Code lokal untuk direktori, tidak terkait.

454* Thread project adalah [sesi cloud](/docs/id/claude-code-on-the-web) dengan Anthropic sebagai penyedia model. [Security](/docs/id/security) dan [Data usage](/docs/id/data-usage) mencakup bagaimana sesi cloud diisolasi dan apa yang disimpan.456* Thread project adalah [sesi cloud](/docs/id/claude-code-on-the-web), atau sesi di mesin Anda sendiri melalui [Remote Control](/docs/id/remote-control), dengan Anthropic sebagai penyedia model di kedua kasus. [Security](/docs/id/security) dan [Data usage](/docs/id/data-usage) mencakup bagaimana sesi cloud diisolasi dan apa yang disimpan, dan [Connection and security](/docs/id/remote-control#connection-and-security) mencakup bagaimana thread di mesin Anda terhubung dan apa yang disimpan.

455* Sesi lokal tidak dapat menjadi bagian dari project.457* Anda tidak dapat menambahkan sesi yang Anda mulai sendiri di mesin Anda ke project. Untuk membiarkan project menjalankan thread di mesin Anda, hubungkan folder tempat project harus bekerja melalui [Remote Control](/docs/id/remote-control#requirements): aktifkan Remote Control di bawah **Settings > Claude Code** di aplikasi desktop Claude, atau jalankan `claude remote-control` di folder dan biarkan berjalan. Mesin tersebut memerlukan Claude Code v2.1.280 atau lebih baru. Project juga tidak dapat menjalankan thread di mesin Anda saat **Require trusted devices** aktif di pengaturan claude.ai Anda.

456* Sandbox thread dijeda antara giliran dan dilanjutkan ketika thread berlanjut. Jika sandbox tidak dapat dilanjutkan, thread berlanjut dari klon segar, jadi perubahan yang tidak dicommit dapat hilang. Pada tugas panjang, minta Claude untuk commit dan push pekerjaan yang sedang berlangsung.458* Sandbox thread cloud dijeda antara giliran dan dilanjutkan ketika thread berlanjut. Jika sandbox tidak dapat dilanjutkan, thread berlanjut dari klon segar, jadi perubahan yang tidak dicommit dapat hilang. Pada tugas panjang, minta Claude untuk commit dan push pekerjaan yang sedang berlangsung.

457* Project milik satu pengguna. Anda tidak dapat berbagi project atau thread-nya dengan pengguna lain, dan transkrip thread tidak memiliki opsi berbagi yang dimiliki sesi cloud lain. Tidak ada kontrol tingkat organisasi untuk project selama beta.459* Project milik satu pengguna. Anda tidak dapat berbagi project atau thread-nya dengan pengguna lain, dan transkrip thread tidak memiliki opsi berbagi yang dimiliki sesi cloud lain. Tidak ada kontrol tingkat organisasi untuk project selama beta.

458* Thread milik satu project yang memulainya. Anda tidak dapat memindahkan atau menyalin thread ke project lain, atau memindahkannya keluar untuk berdiri sendiri. [**Move to project**](#start-from-an-existing-cloud-session) hanya berjalan dengan cara lain: itu membawa pekerjaan sesi cloud ke project.460* Thread milik satu project yang memulainya. Anda tidak dapat memindahkan atau menyalin thread ke project lain, atau memindahkannya keluar untuk berdiri sendiri. [**Move to project**](#start-from-an-existing-cloud-session) hanya berjalan dengan cara lain: itu membawa pekerjaan sesi cloud ke project.

459 461 


467 Thread terlihat terjebak469 Thread terlihat terjebak

468</h3>470</h3>

469 471 

470Claude tidak memposting setiap langkah yang diambil thread, jadi thread yang menunjukkan sedang berjalan tanpa pesan baru dalam percakapan project biasanya masih bekerja. Thread baru juga menyediakan [cloud environment](/docs/id/cloud-environments)-nya sebelum Claude dimulai, jadi pembaruan pertamanya membutuhkan waktu. Buka thread untuk membaca transkrip-nya. Jika thread menunggu prompt izin, jawab di sana.472Claude tidak memposting setiap langkah yang diambil thread, jadi thread yang menunjukkan sedang berjalan tanpa pesan baru dalam percakapan project biasanya masih bekerja. Thread cloud baru juga menyediakan [cloud environment](/docs/id/cloud-environments)-nya sebelum Claude dimulai, jadi pembaruan pertamanya membutuhkan waktu. Buka thread untuk membaca transkrip-nya. Jika thread menunggu prompt izin, jawab di sana.

471 473 

472<h3 id="threads-guessed-or-stalled-instead-of-asking">474<h3 id="threads-guessed-or-stalled-instead-of-asking">

473 Threads menebak atau terhenti alih-alih bertanya475 Threads menebak atau terhenti alih-alih bertanya


489 Repository access errors491 Repository access errors

490</h3>492</h3>

491 493 

492Tiga pesan berarti thread atau project tidak dapat menjangkau salah satu repositorinya. Thread project membutuhkan [prasyarat GitHub](#check-the-prerequisites) bahkan ketika sesi cloud lain Anda mengkloning repositori yang sama tanpa masalah.494Tiga pesan berarti thread atau project tidak dapat menjangkau salah satu repositorinya. Thread cloud project membutuhkan [prasyarat GitHub](#check-the-prerequisites) bahkan ketika sesi cloud lain Anda mengkloning repositori yang sama tanpa masalah.

493 495 

494* **"Couldn't start the session — Claude doesn't have GitHub access to this project's repository"**, dilaporkan sebelum thread dimulai, ketika Claude GitHub App tidak diinstal di repositori itu, ditangguhkan, atau tidak tertaut ke akun GitHub yang Anda hubungkan.496* **"Couldn't start the session — Claude doesn't have GitHub access to this project's repository"**, dilaporkan sebelum thread dimulai, ketika Claude GitHub App tidak diinstal di repositori itu, ditangguhkan, atau tidak tertaut ke akun GitHub yang Anda hubungkan.

495* **"Unable to access your repository"**, dilaporkan oleh thread ketika klonnya gagal: GitHub menolak klon, repositori tidak ditemukan dengan nama yang dimiliki project, atau cabang yang diminta thread untuk dimulai tidak ada.497* **"Unable to access your repository"**, dilaporkan oleh thread ketika klonnya gagal: GitHub menolak klon, repositori tidak ditemukan dengan nama yang dimiliki project, atau cabang yang diminta thread untuk dimulai tidak ada.

Details

27 Instal plugin27 Instal plugin

28</h2>28</h2>

29 29 

30Dalam sesi Claude Code, instal dari [pasar resmi Anthropic](/docs/id/discover-plugins#official-anthropic-marketplace):30Dalam sesi Claude Code, instal dari [pasar resmi Anthropic](/docs/id/plugins/anthropic-marketplaces):

31 31 

32```text theme={null}32```text theme={null}

33/plugin install claude-security@claude-plugins-official33/plugin install claude-security@claude-plugins-official

34```34```

35 35 

36Perintah membuka detail plugin, di mana Anda memilih [cakupan instalasi](/docs/id/discover-plugins#install-plugins) untuk memulai instalasi.36Perintah membuka detail plugin, di mana Anda memilih [cakupan instalasi](/docs/id/plugins/install#install-a-plugin) untuk memulai instalasi.

37 37 

38Jika instalasi gagal, perbaikannya tergantung pada pesan yang dilaporkan Claude Code:38Jika instalasi gagal, perbaikannya tergantung pada pesan yang dilaporkan Claude Code:

39 39 

40* Jika melaporkan `Marketplace "claude-plugins-official" not found`, tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.40* Jika melaporkan `Marketplace "claude-plugins-official" not found`, tambahkan pasar dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.

41* Jika melaporkan bahwa [tidak dapat menemukan plugin di pasar](/docs/id/discover-plugins#install-plugins), periksa nama plugin untuk kesalahan ketik.41* Jika melaporkan bahwa [tidak dapat menemukan plugin di pasar](/docs/id/plugins/install#install-a-plugin), periksa nama plugin untuk kesalahan ketik.

42 42 

43Periksa 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 mengaktifkan plugin dalam sesi Anda saat ini.43Periksa ringkasan instalasi. Jika melaporkan `Run /reload-plugins to activate.`, lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) untuk mengaktifkan plugin dalam sesi Anda saat ini.

44 44 

45Setelah plugin aktif, Anda siap untuk [memindai dan memperbaiki basis kode Anda](#scan-and-fix-your-codebase).45Setelah plugin aktif, Anda siap untuk [memindai dan memperbaiki basis kode Anda](#scan-and-fix-your-codebase).

46 46 


164 164 

165Untuk mendalami bagian yang disentuh halaman ini:165Untuk mendalami bagian yang disentuh halaman ini:

166 166 

167* Plugin [Security guidance](/docs/id/security-guidance): tangkap masalah dalam kode saat Claude menulisnya, dalam sesi yang sama167* [Plugin Security guidance](/docs/id/security-guidance): tangkap masalah dalam kode saat Claude menulisnya, dalam sesi yang sama

168* [Code Review](/docs/id/code-review): atur tinjauan multi-agen waktu PR168* [Code Review](/docs/id/code-review): atur tinjauan multi-agen waktu PR

169* [Claude Security](https://claude.com/product/claude-security): layanan terkelola yang memantau repositori yang terhubung169* [Claude Security](https://claude.com/product/claude-security): layanan terkelola yang memantau repositori yang terhubung

170* [Keamanan Claude Code](/docs/id/security): bagaimana Claude Code mendekati kepercayaan, izin, dan penjaga170* [Keamanan Claude Code](/docs/id/security): bagaimana Claude Code mendekati kepercayaan, izin, dan penjaga

171* [Temukan dan instal plugin](/docs/id/discover-plugins#official-anthropic-marketplace): telusuri plugin resmi lainnya171* [Instal dan kelola plugins](/docs/id/plugins/install): temukan dan instal plugin lainnya dari marketplace resmi

claude-tag.md +0 −11 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# Claude Tag

6 

7> Bawa Claude ke saluran Slack tim Anda dengan Claude Tag dan temukan dokumentasi setup dan penggunaan di claude.com.

8 

9[Claude Tag](https://claude.com/product/tag) adalah integrasi Slack yang menjalankan `@Claude` di saluran tim Anda sebagai identitas bersama organisasi Anda dengan akses yang dikonfigurasi admin. Siapa pun di saluran dapat menandai `@Claude` ke dalam thread dan menugaskan tugas kepadanya. Baca [dokumentasi Claude Tag](https://claude.com/docs/claude-tag/overview) di claude.com untuk menyiapkannya dan mulai menggunakannya.

10 

11Claude Tag tersedia pada paket Team dan Enterprise, dan berbeda dari [Claude Code in Slack](/docs/id/slack) sebelumnya, yang menjalankan setiap sesi dengan akun pengguna individual. Pada paket Pro dan Max, di mana Claude Tag tidak tersedia, Claude Code in Slack tetap menjadi jalur setup.

Details

37| `claude import [source]` | Mulai sesi interaktif yang menjalankan [`/import`](/docs/id/commands#all-commands) untuk membawa konfigurasi dari agen pengkodean lain ke Claude Code. Menerima opsi `--dry-run` dan `--yes` yang sama dengan perintah. Tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Juga tidak tersedia ketika Anda mematikan [pengambilan flag fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru | `claude import codex --dry-run` |37| `claude import [source]` | Mulai sesi interaktif yang menjalankan [`/import`](/docs/id/commands#all-commands) untuk membawa konfigurasi dari agen pengkodean lain ke Claude Code. Menerima opsi `--dry-run` dan `--yes` yang sama dengan perintah. Tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Juga tidak tersedia ketika Anda mematikan [pengambilan flag fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru | `claude import codex --dry-run` |

38| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Konfigurasi server Model Context Protocol (MCP) | Lihat [dokumentasi Claude Code MCP](/docs/id/mcp). |39| `claude mcp` | Konfigurasi server Model Context Protocol (MCP) | Lihat [dokumentasi Claude Code MCP](/docs/id/mcp). |

40| `claude mcp login <name>` | Jalankan alur OAuth server MCP yang dikonfigurasi tanpa membuka panel `/mcp` interaktif. Bekerja untuk server HTTP, SSE, dan konektor claude.ai. Tambahkan `--no-browser` melalui SSH untuk mencetak URL otorisasi alih-alih membuka browser, kemudian tempel URL pengalihan kembali di prompt. Memerlukan Claude Code v2.1.186 atau lebih baru. Lihat [Autentikasi dari baris perintah](/docs/id/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Jalankan alur OAuth server MCP yang dikonfigurasi tanpa membuka panel `/mcp` interaktif. Bekerja untuk server HTTP, SSE, dan konektor claude.ai. Tambahkan `--no-browser` melalui SSH untuk mencetak URL otorisasi alih-alih membuka browser, kemudian tempel URL pengalihan kembali di prompt. Lihat [Autentikasi dari baris perintah](/docs/id/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Hapus kredensial OAuth yang disimpan untuk server MCP. Memerlukan Claude Code v2.1.186 atau lebih baru | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Hapus kredensial OAuth yang disimpan untuk server MCP | `claude mcp logout sentry` |

42| `claude plugin` | Kelola Claude Code [plugins](/docs/id/plugins). Alias: `claude plugins`. Lihat [referensi plugin](/docs/id/plugins-reference#cli-commands-reference) untuk subperintah | `claude plugin install code-review@claude-plugins-official` |42| `claude plugin` | Kelola Claude Code [plugins](/docs/id/plugins/overview). Alias: `claude plugins`. Lihat [referensi plugin](/docs/id/plugins/cli-reference#claude-plugin-commands) untuk subperintah | `claude plugin install code-review@claude-plugins-official` |

43| `claude project purge [path]` | Hapus semua status Claude Code lokal untuk proyek: transkrip, daftar tugas, log debug, riwayat edit file, baris riwayat prompt, dan entri proyek di `~/.claude.json`. Abaikan `[path]` untuk memilih dari daftar interaktif. Flag: `--dry-run` untuk pratinjau, `-y`/`--yes` untuk melewati konfirmasi, `-i`/`--interactive` untuk mengonfirmasi setiap item, `--all` untuk setiap proyek. Lihat [Hapus data lokal](/docs/id/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Hapus semua status Claude Code lokal untuk proyek: transkrip, daftar tugas, log debug, riwayat edit file, baris riwayat prompt, dan entri proyek di `~/.claude.json`. Abaikan `[path]` untuk memilih dari daftar interaktif. Flag: `--dry-run` untuk pratinjau, `-y`/`--yes` untuk melewati konfirmasi, `-i`/`--interactive` untuk mengonfirmasi setiap item, `--all` untuk setiap proyek. Lihat [Hapus data lokal](/docs/id/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

44| `claude remote-control` | Mulai server [Remote Control](/docs/id/remote-control) untuk mengontrol Claude Code dari Claude.ai atau aplikasi Claude. Berjalan dalam mode server (tidak ada sesi interaktif lokal). Lihat [flag mode server](/docs/id/remote-control#start-a-remote-control-session). Setelah Anda menghentikan server, Anda dapat membawa kembali sesi yang sedang dilayaninya. Lihat [Lanjutkan sesi setelah menghentikan server](/docs/id/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Mulai server [Remote Control](/docs/id/remote-control) untuk mengontrol Claude Code dari Claude.ai atau aplikasi Claude. Berjalan dalam mode server (tidak ada sesi interaktif lokal). Lihat [flag mode server](/docs/id/remote-control#start-a-remote-control-session). Setelah Anda menghentikan server, Anda dapat membawa kembali sesi yang sedang dilayaninya. Lihat [Lanjutkan sesi setelah menghentikan server](/docs/id/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Mulai ulang [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell), berjalan atau dihentikan, dengan percakapannya tetap utuh. Gunakan `--all` untuk memulai ulang setiap sesi yang berjalan, misalnya untuk mengambil binary Claude Code yang diperbarui | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Mulai ulang [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell), berjalan atau dihentikan, dengan percakapannya tetap utuh. Gunakan `--all` untuk memulai ulang setiap sesi yang berjalan, misalnya untuk mengambil binary Claude Code yang diperbarui | `claude respawn 7c5dcf5d` |


114| `--permission-mode` | Mulai dalam [mode izin](/docs/id/permission-modes) yang ditentukan. Menerima `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, atau `manual` sebagai alias untuk `default`. Alias `manual` memilih mode izin yang UI label Manual dan memerlukan Claude Code v2.1.200 atau lebih baru; `claude --help` mencantumnya sebagai pengganti `default`, dan kedua nilai berfungsi. Menimpa `defaultMode` dari file pengaturan. Tanpa bendera ini atau `--dangerously-skip-permissions`, sesi baru dimulai dalam mode izin yang dijelaskan dalam [mode izin mana sesi dimulai](/docs/id/permission-modes#which-mode-a-session-starts-in). Untuk `-p`, itu adalah `default` ketika tidak ada yang dikonfigurasi | `claude --permission-mode plan` |114| `--permission-mode` | Mulai dalam [mode izin](/docs/id/permission-modes) yang ditentukan. Menerima `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, atau `manual` sebagai alias untuk `default`. Alias `manual` memilih mode izin yang UI label Manual dan memerlukan Claude Code v2.1.200 atau lebih baru; `claude --help` mencantumnya sebagai pengganti `default`, dan kedua nilai berfungsi. Menimpa `defaultMode` dari file pengaturan. Tanpa bendera ini atau `--dangerously-skip-permissions`, sesi baru dimulai dalam mode izin yang dijelaskan dalam [mode izin mana sesi dimulai](/docs/id/permission-modes#which-mode-a-session-starts-in). Untuk `-p`, itu adalah `default` ketika tidak ada yang dikonfigurasi | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Tentukan alat MCP untuk menangani prompt izin dalam mode non-interaktif. Claude Code menunggu server MCP alat itu untuk terhubung sebelum menjalankan putaran pertama, hingga waktu tunggu startup [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default. <br /><br />Alat prompt tidak dapat menyetujui alat MCP yang ditandai sebagai [memerlukan interaksi pengguna](/docs/id/mcp#require-approval-for-a-specific-tool): Claude Code mengonversi hasil `allow` untuk satu ke penolakan. Pembatasan ini memerlukan Claude Code v2.1.199 atau lebih baru | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |115| `--permission-prompt-tool` | Tentukan alat MCP untuk menangani prompt izin dalam mode non-interaktif. Claude Code menunggu server MCP alat itu untuk terhubung sebelum menjalankan putaran pertama, hingga waktu tunggu startup [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default. <br /><br />Alat prompt tidak dapat menyetujui alat MCP yang ditandai sebagai [memerlukan interaksi pengguna](/docs/id/mcp#require-approval-for-a-specific-tool): Claude Code mengonversi hasil `allow` untuk satu ke penolakan. Pembatasan ini memerlukan Claude Code v2.1.199 atau lebih baru | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Atur siapa yang menjawab prompt izin dalam mode cetak. Dengan `host` default, Claude Code mengirimnya ke host Agent SDK atau alat `--permission-prompt-tool`. Lewatkan `none` ketika tidak ada yang dapat menjawab, dan Claude Code menolaknya sebagai gantinya. Lihat [Matikan prompt izin dalam jalankan tanpa pengawasan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs). Memerlukan Claude Code v2.1.259 atau lebih baru | `claude -p --permission-prompts none "query"` |116| `--permission-prompts` | Atur siapa yang menjawab prompt izin dalam mode cetak. Dengan `host` default, Claude Code mengirimnya ke host Agent SDK atau alat `--permission-prompt-tool`. Lewatkan `none` ketika tidak ada yang dapat menjawab, dan Claude Code menolaknya sebagai gantinya. Lihat [Matikan prompt izin dalam jalankan tanpa pengawasan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs). Memerlukan Claude Code v2.1.259 atau lebih baru | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Muat plugin dari direktori atau arsip `.zip`, atau beberapa dari [folder plugin](/docs/id/plugins#test-your-plugins-locally), hanya untuk sesi ini. Setiap bendera mengambil satu jalur. Ulangi bendera untuk lebih banyak jalur: `--plugin-dir A --plugin-dir B.zip`. Melewatkan folder plugin memerlukan Claude Code v2.1.265 atau lebih baru | `claude --plugin-dir ./my-plugin` |117| `--plugin-dir` | Muat plugin dari direktori atau arsip `.zip`, atau beberapa dari [folder plugin](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session), hanya untuk sesi ini. Setiap bendera mengambil satu jalur. Ulangi bendera untuk lebih banyak jalur: `--plugin-dir A --plugin-dir B.zip`. Melewatkan folder plugin memerlukan Claude Code v2.1.265 atau lebih baru | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Ambil arsip plugin `.zip` dari URL hanya untuk sesi ini. Ulangi bendera untuk beberapa plugin, atau lewatkan URL yang dipisahkan spasi dalam nilai yang dikutip tunggal | `claude --plugin-url https://example.com/plugin.zip` |118| `--plugin-url` | Ambil arsip plugin `.zip` dari URL hanya untuk sesi ini. Ulangi bendera untuk beberapa plugin, atau lewatkan URL yang dipisahkan spasi dalam nilai yang dikutip tunggal | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Cetak respons tanpa mode interaktif (lihat [dokumentasi Agent SDK](/docs/id/agent-sdk/overview) untuk detail penggunaan pemrograman) | `claude -p "query"` |119| `--print`, `-p` | Cetak respons tanpa mode interaktif (lihat [dokumentasi Agent SDK](/docs/id/agent-sdk/overview) untuk detail penggunaan pemrograman) | `claude -p "query"` |

120| `--prompt-suggestions` | Emit pesan `prompt_suggestion` dengan prompt pengguna berikutnya yang diprediksi setelah setiap putaran yang menghasilkan satu; percakapan yang sangat singkat dapat menghasilkan tidak ada. Memerlukan `--print`, `--output-format stream-json`, dan `--verbose`. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |120| `--prompt-suggestions` | Emit pesan `prompt_suggestion` dengan prompt pengguna berikutnya yang diprediksi setelah setiap putaran yang menghasilkan satu; percakapan yang sangat singkat dapat menghasilkan tidak ada. Memerlukan `--print`, `--output-format stream-json`, dan `--verbose`. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |


134| `--system-prompt-file` | Muat prompt sistem dari file, mengganti prompt default | `claude --system-prompt-file ./custom-prompt.txt` |134| `--system-prompt-file` | Muat prompt sistem dari file, mengganti prompt default | `claude --system-prompt-file ./custom-prompt.txt` |

135| `--system-prompt-snapshot` | Lewatkan `off` untuk membangun kembali prompt sistem pada setiap permintaan alih-alih menggunakan kembali prompt [yang dicatat pada permintaan pertama percakapan](#system-prompt-flags-in-resumed-conversations), misalnya saat Anda mengulangi teks `--append-system-prompt` di seluruh jalankan `--continue`. Memerlukan Claude Code v2.1.257 atau lebih baru | `claude --system-prompt-snapshot off` |135| `--system-prompt-snapshot` | Lewatkan `off` untuk membangun kembali prompt sistem pada setiap permintaan alih-alih menggunakan kembali prompt [yang dicatat pada permintaan pertama percakapan](#system-prompt-flags-in-resumed-conversations), misalnya saat Anda mengulangi teks `--append-system-prompt` di seluruh jalankan `--continue`. Memerlukan Claude Code v2.1.257 atau lebih baru | `claude --system-prompt-snapshot off` |

136| `--teleport` | Lanjutkan [sesi cloud](/docs/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |136| `--teleport` | Lanjutkan [sesi cloud](/docs/id/claude-code-on-the-web) di terminal lokal Anda | `claude --teleport` |

137| `--teammate-mode` | Atur bagaimana [tim agen](/docs/id/agent-teams) rekan kerja ditampilkan: `in-process` (default), `auto`, `tmux`, atau `iterm2` (ditambahkan di v2.1.186). Menimpa pengaturan [`teammateMode`](/docs/id/settings-reference#teammatemode) untuk sesi ini. Lihat [Pilih mode tampilan](/docs/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |137| `--teammate-mode` | Atur bagaimana [tim agen](/docs/id/agent-teams) rekan kerja ditampilkan: `in-process` (default), `auto`, `tmux`, atau `iterm2`. Menimpa pengaturan [`teammateMode`](/docs/id/settings-reference#teammatemode) untuk sesi ini. Lihat [Pilih mode tampilan](/docs/id/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |

138| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan panel asli iTerm2 saat tersedia; lewatkan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |138| `--tmux` | Buat sesi tmux untuk worktree. Memerlukan `--worktree`. Menggunakan panel asli iTerm2 saat tersedia; lewatkan `--tmux=classic` untuk tmux tradisional | `claude -w feature-auth --tmux` |

139| `--tools` | Batasi alat bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk set default, atau nama alat seperti `"Bash,Edit,Read"`. Di macOS, Linux, dan WSL, set default menghilangkan `Glob` dan `Grep`, seperti yang dijelaskan di bawah [perilaku alat Glob](/docs/id/tools-reference#glob-tool-behavior). Jika Anda menamai salah satu [alat pelacakan tugas](/docs/id/tools-reference#task-tool-availability) di sini, Claude Code juga memilih sesi masuk. Bendera tidak mempengaruhi alat MCP; untuk menolak mereka juga, gunakan `--disallowedTools "mcp__*"`. Daftar yang menghilangkan [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) tidak menghapusnya; `""` menghapusnya hanya ketika tidak ada alat MCP yang tersisa | `claude --tools "Bash,Edit,Read"` |139| `--tools` | Batasi alat bawaan mana yang dapat digunakan Claude. Gunakan `""` untuk menonaktifkan semua, `"default"` untuk set default, atau nama alat seperti `"Bash,Edit,Read"`. Di macOS, Linux, dan WSL, set default menghilangkan `Glob` dan `Grep`, seperti yang dijelaskan di bawah [perilaku alat Glob](/docs/id/tools-reference#glob-tool-behavior). Jika Anda menamai salah satu [alat pelacakan tugas](/docs/id/tools-reference#task-tool-availability) di sini, Claude Code juga memilih sesi masuk. Bendera tidak mempengaruhi alat MCP; untuk menolak mereka juga, gunakan `--disallowedTools "mcp__*"`. Daftar yang menghilangkan [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) tidak menghapusnya; `""` menghapusnya hanya ketika tidak ada alat MCP yang tersisa | `claude --tools "Bash,Edit,Read"` |

140| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh. Menimpa pengaturan [`viewMode`](/docs/id/settings-reference#viewmode) untuk sesi ini | `claude --verbose` |140| `--verbose` | Aktifkan logging verbose, menampilkan output putaran penuh. Menimpa pengaturan [`viewMode`](/docs/id/settings-reference#viewmode) untuk sesi ini | `claude --verbose` |

Details

300| Server MCP `.mcp.json` repo Anda | Ya, dalam sesi dengan satu repositori | Bagian dari klon, ditemukan dari direktori kerja sesi |300| Server MCP `.mcp.json` repo Anda | Ya, dalam sesi dengan satu repositori | Bagian dari klon, ditemukan dari direktori kerja sesi |

301| `.claude/rules/` repo Anda | Ya | Bagian dari klon |301| `.claude/rules/` repo Anda | Ya | Bagian dari klon |

302| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repo Anda | Ya | Bagian dari klon |302| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repo Anda | Ya | Bagian dari klon |

303| Plugin dan marketplace yang dideklarasikan di `.claude/settings.json` repo Anda | Tidak | Sesi cloud tidak menginstal plugin yang dihidupkan repositori di bawah [`enabledPlugins`](/docs/id/settings-reference#enabledplugins), termasuk yang dari marketplace yang dicantumkan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces). Aktifkan plugin untuk akun claude.ai Anda sebagai gantinya, sehingga Claude Code memuat sebagai [plugin yang disinkronkan](/docs/id/plugins-reference#synced-plugins) |303| Plugin dan marketplace yang dideklarasikan di `.claude/settings.json` repo Anda | Tidak | Sesi cloud tidak menginstal plugin yang dihidupkan repositori di bawah [`enabledPlugins`](/docs/id/settings-reference#enabledplugins), termasuk yang dari marketplace yang dicantumkan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) |

304| [Pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda | Ya | Diambil dari server Anthropic ketika sesi dimulai. Lihat [Surface coverage](/docs/id/model-config#surface-coverage) untuk cara `availableModels` diterapkan di sesi cloud. Pengaturan yang digunakan di perangkat Anda melalui MDM atau file pengaturan yang dikelola tidak berlaku, karena sesi berjalan di VM yang dikelola Anthropic; di [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments), sesi juga membaca file pengaturan yang dikelola dalam gambar runner, per [cara Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) |304| [Pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda | Ya | Diambil dari server Anthropic ketika sesi dimulai. Lihat [Surface coverage](/docs/id/model-config#surface-coverage) untuk cara `availableModels` diterapkan di sesi cloud. Pengaturan yang digunakan di perangkat Anda melalui MDM atau file pengaturan yang dikelola tidak berlaku, karena sesi berjalan di VM yang dikelola Anthropic; di [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments), sesi juga membaca file pengaturan yang dikelola dalam gambar runner, per [cara Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) |

305| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo |305| `~/.claude/CLAUDE.md` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo |

306| `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Komitkan mereka ke direktori `.claude/` repo sebagai gantinya. Sesi cloud secara otomatis memuat skill yang Anda aktifkan di claude.ai |306| `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` pengguna Anda | Tidak | Hidup di mesin Anda, bukan di repo. Komitkan mereka ke direktori `.claude/` repo sebagai gantinya. Sesi cloud secara otomatis memuat skill yang Anda aktifkan di claude.ai |

307| Plugin yang hanya diaktifkan di pengaturan pengguna Anda | Tidak | `enabledPlugins` yang dibatasi pengguna hidup di `~/.claude/settings.json` di mesin Anda. Aktifkan untuk akun claude.ai Anda sebagai gantinya, sehingga Claude Code memuat sebagai [plugin yang disinkronkan](/docs/id/plugins-reference#synced-plugins) |307| Plugin yang hanya diaktifkan di pengaturan pengguna Anda | Tidak | `enabledPlugins` yang dibatasi pengguna hidup di `~/.claude/settings.json` di mesin Anda |

308| Server MCP yang Anda tambahkan dengan `claude mcp add` di cakupan lokal default atau cakupan pengguna | Tidak | Mereka menulis ke `~/.claude.json` di mesin Anda, bukan repo. Tambahkan server dengan `claude mcp add --scope project`, yang menulis [`.mcp.json`](/docs/id/mcp#project-scope) repo, dan komitkan file itu. Sesi dengan satu repositori memuat file itu |308| Server MCP yang Anda tambahkan dengan `claude mcp add` di cakupan lokal default atau cakupan pengguna | Tidak | Mereka menulis ke `~/.claude.json` di mesin Anda, bukan repo. Tambahkan server dengan `claude mcp add --scope project`, yang menulis [`.mcp.json`](/docs/id/mcp#project-scope) repo, dan komitkan file itu. Sesi dengan satu repositori memuat file itu |

309| Variabel transport di blok `env` `.claude/settings.json` repo Anda, seperti `NODE_EXTRA_CA_CERTS` dan [variabel sertifikat klien mTLS](/docs/id/network-config#mtls-authentication) | Tidak | Lingkungan hosting mengelola koneksi API sesi, jadi Claude Code mengabaikan kunci ini dan mencatat setiap kunci yang diabaikan di log debug sesi |309| Variabel transport di blok `env` `.claude/settings.json` repo Anda, seperti `NODE_EXTRA_CA_CERTS` dan [variabel sertifikat klien mTLS](/docs/id/network-config#mtls-authentication) | Tidak | Lingkungan hosting mengelola koneksi API sesi, jadi Claude Code mengabaikan kunci ini dan mencatat setiap kunci yang diabaikan di log debug sesi |

310| Token API dan kredensial untuk layanan yang dipanggil Claude | Pada paket Pro dan Max, sebagai [kredensial API](#add-api-credentials) | Anda menambahkan kunci sekali di lingkungan dan proxy agen melampirkannya ke permintaan untuk host yang Anda cantumkan. Kunci yang proxy agen [tidak dapat lampirkan](#requests-that-never-get-the-credential), atau kunci apa pun pada paket Team atau Enterprise, tetap dalam variabel lingkungan |310| Token API dan kredensial untuk layanan yang dipanggil Claude | Pada paket Pro dan Max, sebagai [kredensial API](#add-api-credentials) | Anda menambahkan kunci sekali di lingkungan dan proxy agen melampirkannya ke permintaan untuk host yang Anda cantumkan. Kunci yang proxy agen [tidak dapat lampirkan](#requests-that-never-get-the-credential), atau kunci apa pun pada paket Team atau Enterprise, tetap dalam variabel lingkungan |

commands.md +4 −4

Details

61| `/autocompact [auto\|<tokens>]` | Atur jendela auto-compact: seberapa penuh jendela konteks sebelum Claude Code melakukan pemadatan otomatis. Berikan ukuran seperti `500k`, atau `auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Claude Code menyimpan nilai ke pengaturan pengguna dan menerapkannya ke sesi saat ini. Lihat [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) untuk nilai yang diterima dan apa yang menimpanya. Tanpa argumen, membuka dialog yang menunjukkan jendela saat ini. Memerlukan Claude Code v2.1.221 atau lebih baru |61| `/autocompact [auto\|<tokens>]` | Atur jendela auto-compact: seberapa penuh jendela konteks sebelum Claude Code melakukan pemadatan otomatis. Berikan ukuran seperti `500k`, atau `auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Claude Code menyimpan nilai ke pengaturan pengguna dan menerapkannya ke sesi saat ini. Lihat [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) untuk nilai yang diterima dan apa yang menimpanya. Tanpa argumen, membuka dialog yang menunjukkan jendela saat ini. Memerlukan Claude Code v2.1.221 atau lebih baru |

62| `/autofix-pr [prompt]` | Spawn sesi [cloud](/docs/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau pengulas meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar ulasan; berikan prompt untuk memberikan instruksi berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [sesi cloud](/docs/id/claude-code-on-the-web) |62| `/autofix-pr [prompt]` | Spawn sesi [cloud](/docs/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau pengulas meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar ulasan; berikan prompt untuk memberikan instruksi berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [sesi cloud](/docs/id/claude-code-on-the-web) |

63| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [agen latar belakang](/docs/id/agent-view) dan bebaskan terminal ini. Berikan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Untuk menyalin percakapan ke sesi latar belakang baru sementara yang ini terus berjalan, gunakan `/fork`. Alias: `/bg` |63| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [agen latar belakang](/docs/id/agent-view) dan bebaskan terminal ini. Berikan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Untuk menyalin percakapan ke sesi latar belakang baru sementara yang ini terus berjalan, gunakan `/fork`. Alias: `/bg` |

64| `/batch <instruction>` | **[Skill](/docs/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh basis kode secara paralel. Meneliti basis kode, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [git worktree](/docs/id/worktrees) terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka permintaan tarik. Memerlukan repositori git. Contoh: `/batch migrate src/ from JavaScript to TypeScript` |64| `/batch <instruction>` | **[Skill](/docs/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh basis kode secara paralel. Meneliti basis kode, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [worktree](/docs/id/worktrees) terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan membuka permintaan tarik. Memerlukan repositori git atau [hook `WorktreeCreate`](/docs/id/worktrees#non-git-version-control) yang membuat worktree. Di luar repositori git, `/batch` memerlukan Claude Code v2.1.281 atau lebih baru. Contoh: `/batch migrate src/ from JavaScript to TypeScript` |

65| `/branch [name]` | Buat cabang percakapan saat ini pada titik ini, sehingga Anda dapat mencoba arah berbeda tanpa kehilangan percakapan seperti adanya. Beralih Anda ke cabang dan menyimpan yang asli, yang dapat Anda kembali dengan `/resume`. Untuk menjalankan salinan sebagai [sesi latar belakang](/docs/id/agent-view) terpisah alih-alih beralih ke dalamnya, gunakan `/fork`; untuk menyerahkan tugas sampingan ke [subagent](/docs/id/sub-agents) yang melaporkan kembali ke percakapan ini, gunakan `/subtask` |65| `/branch [name]` | Buat cabang percakapan saat ini pada titik ini, sehingga Anda dapat mencoba arah berbeda tanpa kehilangan percakapan seperti adanya. Beralih Anda ke cabang dan menyimpan yang asli, yang dapat Anda kembali dengan `/resume`. Untuk menjalankan salinan sebagai [sesi latar belakang](/docs/id/agent-view) terpisah alih-alih beralih ke dalamnya, gunakan `/fork`; untuk menyerahkan tugas sampingan ke [subagent](/docs/id/sub-agents) yang melaporkan kembali ke percakapan ini, gunakan `/subtask` |

66| `/btw [question]` | Tanyakan [pertanyaan sampingan](/docs/id/interactive-mode#side-questions-with-%2Fbtw) tentang sesi saat ini tanpa menambahkan ke percakapan. Jika Anda menjalankan `/btw` tanpa pertanyaan, Claude Code menunjukkan pertanyaan sampingan terbaru Anda sehingga Anda dapat menelusuri jawaban sebelumnya; jika Anda belum mengajukan satu pun, Claude Code mencetak baris penggunaan. Sebelum v2.1.212, `/btw` memerlukan pertanyaan |66| `/btw [question]` | Tanyakan [pertanyaan sampingan](/docs/id/interactive-mode#side-questions-with-%2Fbtw) tentang sesi saat ini tanpa menambahkan ke percakapan. Jika Anda menjalankan `/btw` tanpa pertanyaan, Claude Code menunjukkan pertanyaan sampingan terbaru Anda sehingga Anda dapat menelusuri jawaban sebelumnya; jika Anda belum mengajukan satu pun, Claude Code mencetak baris penggunaan. Sebelum v2.1.212, `/btw` memerlukan pertanyaan |

67| `/bug [report]` | Laporkan bug atau bagikan percakapan Anda. Anda memilih berapa banyak riwayat sesi yang akan disertakan dan konfirmasi di layar persetujuan sebelum apa pun dikirim. Ketika Anda masuk ke Anthropic pada koneksi pihak pertama, laporan pergi ke Anthropic; pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, Claude Code menulis laporan ke [arsip lokal di bawah `~/.claude/feedback-bundles/`](/docs/id/data-usage#telemetry-services) yang Anda teruskan sendiri. Di [ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box), `/bug` membuka dialog umpan balik ekstensi sendiri; memerlukan Claude Code v2.1.229 atau lebih baru. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera. Sebelum v2.1.232, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/share`. Sebelum v2.1.212, `/bug` dan `/share` adalah alias dari `/feedback` |67| `/bug [report]` | Laporkan bug atau bagikan percakapan Anda. Anda memilih berapa banyak riwayat sesi yang akan disertakan dan konfirmasi di layar persetujuan sebelum apa pun dikirim. Ketika Anda masuk ke Anthropic pada koneksi pihak pertama, laporan pergi ke Anthropic; pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, Claude Code menulis laporan ke [arsip lokal di bawah `~/.claude/feedback-bundles/`](/docs/id/data-usage#telemetry-services) yang Anda teruskan sendiri. Di [ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box), `/bug` membuka dialog umpan balik ekstensi sendiri; memerlukan Claude Code v2.1.229 atau lebih baru. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera. Sebelum v2.1.232, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/share`. Sebelum v2.1.212, `/bug` dan `/share` adalah alias dari `/feedback` |

68| `/cd <path>` | Pindahkan sesi ini ke direktori kerja baru, menjaga percakapan. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Saran memerlukan Claude Code v2.1.206 atau lebih baru. Untuk apa yang Claude Code terapkan dari direktori baru segera setelah Anda pindah, dan bagaimana `/cd` berbeda dari `/add-dir`, lihat [Pindahkan sesi ke direktori lain](/docs/id/permissions#move-the-session-to-another-directory) |68| `/cd <path>` | Pindahkan sesi ini ke direktori kerja baru, menjaga percakapan. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Saran memerlukan Claude Code v2.1.206 atau lebih baru. Untuk apa yang Claude Code terapkan dari direktori baru segera setelah Anda pindah, dan bagaimana `/cd` berbeda dari `/add-dir`, lihat [Pindahkan sesi ke direktori lain](/docs/id/permissions#move-the-session-to-another-directory) |

69| `/chrome` | Konfigurasi pengaturan [Claude di Chrome](/docs/id/chrome) |69| `/chrome` | Konfigurasi pengaturan [Claude di Chrome](/docs/id/chrome) |

70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/id/skills#bundled-skills).** Muat materi referensi [Claude API](https://platform.claude.com/docs/en/api/overview) dan [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) untuk bahasa proyek Anda. Juga diaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `migrate` untuk memperbarui kode Claude API yang ada ke model yang lebih baru. Jalankan `upgrade` untuk memindahkan dependensi SDK Anthropic proyek Anda di seluruh versi utama, saat ini paket Python `anthropic` dari 0.x ke 1.x. Jalankan `managed-agents-onboard` untuk panduan yang membuat Managed Agent baru. Jalankan `prompt-audit` untuk menandai instruksi yang ditulis untuk model yang lebih lama dalam prompt, skill, dan deskripsi alat Anda dan usulkan perbaikan sebagai diff. Jalankan `cost-optimize` untuk memprofilkan ke mana pengeluaran Claude API proyek Anda pergi dan usulkan penghematan dari opsi seperti prompt caching, pemangkasan token input dan output yang tidak perlu, pemrosesan batch, upaya, dan pilihan model, satu perubahan pada satu waktu. Jalankan `build-eval` untuk membangun set eval untuk aplikasi bertenaga Claude Anda, dan `hillclimb` untuk secara iteratif meningkatkan aplikasi terhadap eval yang ada. Subperintah `prompt-audit` memerlukan Claude Code v2.1.221 atau lebih baru, `upgrade` memerlukan v2.1.236 atau lebih baru, `cost-optimize` memerlukan v2.1.247 atau lebih baru, dan `build-eval` dan `hillclimb` memerlukan v2.1.259 atau lebih baru |70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/id/skills#bundled-skills).** Muat materi referensi [Claude API](https://platform.claude.com/docs/en/api/overview) dan [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) untuk bahasa proyek Anda. Juga diaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Jalankan `migrate` untuk memperbarui kode Claude API yang ada ke model yang lebih baru. Jalankan `upgrade` untuk memindahkan dependensi SDK Anthropic proyek Anda di seluruh versi utama, saat ini paket Python `anthropic` dari 0.x ke 1.x. Jalankan `managed-agents-onboard` untuk panduan yang membuat Managed Agent baru. Jalankan `prompt-audit` untuk menandai instruksi yang ditulis untuk model yang lebih lama dalam prompt, skill, dan deskripsi alat Anda dan usulkan perbaikan sebagai diff. Jalankan `cost-optimize` untuk memprofilkan ke mana pengeluaran Claude API proyek Anda pergi dan usulkan penghematan dari opsi seperti prompt caching, pemangkasan token input dan output yang tidak perlu, pemrosesan batch, upaya, dan pilihan model, satu perubahan pada satu waktu. Jalankan `build-eval` untuk membangun set eval untuk aplikasi bertenaga Claude Anda, dan `hillclimb` untuk secara iteratif meningkatkan aplikasi terhadap eval yang ada. Subperintah `prompt-audit` memerlukan Claude Code v2.1.221 atau lebih baru, `upgrade` memerlukan v2.1.236 atau lebih baru, `cost-optimize` memerlukan v2.1.247 atau lebih baru, dan `build-eval` dan `hillclimb` memerlukan v2.1.259 atau lebih baru |

71| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Berikan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Lanjutkan percakapan sebelumnya dengan `/resume`, atau, dalam proses Claude Code yang sama, pulihkan dari [entri sesi sebelumnya menu rewind](/docs/id/checkpointing#rewind-past-a-cleared-conversation). Entri rewind memerlukan Claude Code v2.1.191 atau lebih baru. Alias: `/reset`, `/new` |71| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Berikan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Lanjutkan percakapan sebelumnya dengan `/resume`, atau, dalam proses Claude Code yang sama, pulihkan dari [entri sesi sebelumnya menu rewind](/docs/id/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |

72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau diff saat ini, atau nomor PR, cabang, atau jalur yang Anda berikan, untuk bug kebenaran. Tergantung pada model dan tingkat upaya Anda, ulasan juga mencakup peluang pembersihan. Berikan `--fix` untuk menerapkan temuan, `--comment` untuk mempostingnya pada PR GitHub atau permintaan penggabungan GitLab, atau `ultra` untuk menjalankan [ulasan cloud](/docs/id/ultrareview) mendalam. Memposting ke permintaan penggabungan GitLab memerlukan Claude Code v2.1.257 atau lebih baru. Dengan `ultra` pada target PR `github.com`, berikan `--post` untuk pra-memilih [memposting temuan yang selesai ke PR](/docs/id/ultrareview#post-findings-to-the-pull-request) dalam dialog peluncuran; `--post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk tingkat upaya, penargetan, dan bagaimana hubungannya dengan `/simplify`. Alias: `/review` |72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau diff saat ini, atau nomor PR, cabang, atau jalur yang Anda berikan, untuk bug kebenaran. Tergantung pada model dan tingkat upaya Anda, ulasan juga mencakup peluang pembersihan. Berikan `--fix` untuk menerapkan temuan, `--comment` untuk mempostingnya pada PR GitHub atau permintaan penggabungan GitLab, atau `ultra` untuk menjalankan [ulasan cloud](/docs/id/ultrareview) mendalam. Memposting ke permintaan penggabungan GitLab memerlukan Claude Code v2.1.257 atau lebih baru. Dengan `ultra` pada target PR `github.com`, berikan `--post` untuk pra-memilih [memposting temuan yang selesai ke PR](/docs/id/ultrareview#post-findings-to-the-pull-request) dalam dialog peluncuran; `--post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk tingkat upaya, penargetan, dan bagaimana hubungannya dengan `/simplify`. Alias: `/review` |

73| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang, atau jalankan tanpa argumen untuk memilih warna acak. Ketika [Remote Control](/docs/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru |73| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang, atau jalankan tanpa argumen untuk memilih warna acak. Ketika [Remote Control](/docs/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru |

74| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional berikan instruksi fokus untuk ringkasan. Lihat [bagaimana pemadatan menangani aturan, skill, dan file memori](/docs/id/context-window#what-survives-compaction) |74| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional berikan instruksi fokus untuk ringkasan. Lihat [bagaimana pemadatan menangani aturan, skill, dan file memori](/docs/id/context-window#what-survives-compaction) |


116| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |116| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |

117| `/permissions` | Kelola aturan izin allow, ask, dan deny untuk izin alat. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan cakupan, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [penolakan mode otomatis terbaru](/docs/id/auto-mode-config#review-denials). Anda juga dapat melihat dan mengedit [aturan pengklasifikasi mode otomatis](/docs/id/auto-mode-config#edit-rules-from-permissions) dari tab **Mode otomatis** dialog. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera dan menerapkan perubahan Anda mulai dari panggilan alat berikutnya Claude dalam giliran yang sama. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/allowed-tools` |117| `/permissions` | Kelola aturan izin allow, ask, dan deny untuk izin alat. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan cakupan, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [penolakan mode otomatis terbaru](/docs/id/auto-mode-config#review-denials). Anda juga dapat melihat dan mengedit [aturan pengklasifikasi mode otomatis](/docs/id/auto-mode-config#edit-rules-from-permissions) dari tab **Mode otomatis** dialog. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera dan menerapkan perubahan Anda mulai dari panggilan alat berikutnya Claude dalam giliran yang sama. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/allowed-tools` |

118| `/plan [description]` | Masukkan mode rencana langsung dari prompt. Berikan deskripsi opsional untuk memasukkan mode rencana dan segera mulai dengan tugas itu, misalnya `/plan fix the auth bug` |118| `/plan [description]` | Masukkan mode rencana langsung dari prompt. Berikan deskripsi opsional untuk memasukkan mode rencana dan segera mulai dengan tugas itu, misalnya `/plan fix the auth bug` |

119| `/plugin [subcommand]` | Kelola [plugin](/docs/id/plugins) Claude Code. Jalankan tanpa argumen untuk membuka menu plugin, atau berikan subperintah seperti `list`, `install`, `enable`, atau `disable` untuk bertindak langsung. Claude Code dapat mengaktifkan plugin selama instalasi; [ringkasan instalasi](/docs/id/discover-plugins#install-plugins) memberi tahu Anda apakah itu dilakukan atau apakah harus menjalankan `/reload-plugins` |119| `/plugin [subcommand]` | Kelola [plugin](/docs/id/plugins/overview) Claude Code. Jalankan tanpa argumen untuk membuka menu plugin, atau berikan subperintah seperti `list`, `install`, `enable`, atau `disable` untuk bertindak langsung. Claude Code dapat mengaktifkan plugin selama instalasi; [ringkasan instalasi](/docs/id/plugins/install#install-a-plugin) memberi tahu Anda apakah itu dilakukan atau apakah harus menjalankan `/reload-plugins` |

120| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |120| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |

121| `/pr-comments [PR]` | Dihapus di v2.1.91. Tanyakan Claude secara langsung untuk melihat komentar permintaan tarik sebagai gantinya. Di versi sebelumnya, mengambil dan menampilkan komentar dari permintaan tarik GitHub; secara otomatis mendeteksi PR untuk cabang saat ini, atau berikan URL atau nomor PR. Memerlukan CLI `gh` |121| `/pr-comments [PR]` | Dihapus di v2.1.91. Tanyakan Claude secara langsung untuk melihat komentar permintaan tarik sebagai gantinya. Di versi sebelumnya, mengambil dan menampilkan komentar dari permintaan tarik GitHub; secara otomatis mendeteksi PR untuk cabang saat ini, atau berikan URL atau nomor PR. Memerlukan CLI `gh` |

122| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |122| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |


124| `/rate-limit-options` | Tampilkan cara untuk terus bekerja ketika batas penggunaan claude.ai memblokir permintaan: tunggu dan [lanjutkan secara otomatis ketika batas direset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset), tambahkan [kredit penggunaan](/docs/id/costs#add-usage-credits-to-your-subscription), atau tingkatkan paket Anda. Claude Code juga dapat membuka menu ini dengan sendirinya ketika Anda mencapai batas di terminal Anda sendiri. Lihat [Matikan lanjutan otomatis](/docs/id/interactive-mode#turn-automatic-continue-off). Memerlukan langganan claude.ai. Tidak muncul dalam menu perintah; ketik sepenuhnya. Baris tunggu-dan-lanjutkan memerlukan Claude Code v2.1.234 atau lebih baru |124| `/rate-limit-options` | Tampilkan cara untuk terus bekerja ketika batas penggunaan claude.ai memblokir permintaan: tunggu dan [lanjutkan secara otomatis ketika batas direset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset), tambahkan [kredit penggunaan](/docs/id/costs#add-usage-credits-to-your-subscription), atau tingkatkan paket Anda. Claude Code juga dapat membuka menu ini dengan sendirinya ketika Anda mencapai batas di terminal Anda sendiri. Lihat [Matikan lanjutan otomatis](/docs/id/interactive-mode#turn-automatic-continue-off). Memerlukan langganan claude.ai. Tidak muncul dalam menu perintah; ketik sepenuhnya. Baris tunggu-dan-lanjutkan memerlukan Claude Code v2.1.234 atau lebih baru |

125| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Ringkasan sesi](/docs/id/interactive-mode#session-recap) untuk ringkasan otomatis yang muncul setelah Anda pergi |125| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Ringkasan sesi](/docs/id/interactive-mode#session-recap) untuk ringkasan otomatis yang muncul setelah Anda pergi |

126| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi tertentu untuk melihat catatan rilisnya, atau pilih untuk menampilkan semua versi. Catatan muncul dalam transkrip Anda tanpa memasukkan percakapan yang Claude lihat |126| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi tertentu untuk melihat catatan rilisnya, atau pilih untuk menampilkan semua versi. Catatan muncul dalam transkrip Anda tanpa memasukkan percakapan yang Claude lihat |

127| `/reload-plugins [--force]` | Muat ulang semua [plugin](/docs/id/plugins) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Laporan hitungan untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun. Ketika pemuatan ulang akan mengubah alat MCP mana yang dimuat dan membatalkan cache prompt, perintah memperingatkan dan melewati kecuali Anda berikan `--force`. Juga tersedia dalam mode non-interaktif (`-p`), Agent SDK, dan aplikasi desktop, di mana ia berjalan hanya pada input yang diketik langsung ke dalam sesi dan tidak menerapkan perubahan server MCP plugin; memerlukan Claude Code v2.1.260 atau lebih baru. Lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) |127| `/reload-plugins [--force]` | Muat ulang semua [plugin](/docs/id/plugins/overview) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Laporan hitungan untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun. Ketika pemuatan ulang akan mengubah alat MCP mana yang dimuat dan membatalkan cache prompt, perintah memperingatkan dan melewati kecuali Anda berikan `--force`. Juga tersedia dalam mode non-interaktif (`-p`), Agent SDK, dan aplikasi desktop, di mana ia berjalan hanya pada input yang diketik langsung ke dalam sesi dan tidak menerapkan perubahan server MCP plugin; memerlukan Claude Code v2.1.260 atau lebih baru. Lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) |

128| `/reload-skills` | Pindai ulang direktori [skill](/docs/id/skills) dan perintah sehingga skill yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Laporan berapa banyak skill yang tersedia dan berapa banyak yang ditambahkan atau dihapus |128| `/reload-skills` | Pindai ulang direktori [skill](/docs/id/skills) dan perintah sehingga skill yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Laporan berapa banyak skill yang tersedia dan berapa banyak yang ditambahkan atau dihapus |

129| `/remote-control` | Buat sesi ini tersedia untuk [Remote Control](/docs/id/remote-control) dari claude.ai. Menjalankannya saat keluar mencetak bahwa Remote Control memerlukan langganan claude.ai dan memberi tahu Anda cara masuk; sebelum v2.1.206 itu melaporkan `Unknown command: /remote-control`. Alias: `/rc` |129| `/remote-control` | Buat sesi ini tersedia untuk [Remote Control](/docs/id/remote-control) dari claude.ai. Menjalankannya saat keluar mencetak bahwa Remote Control memerlukan langganan claude.ai dan memberi tahu Anda cara masuk; sebelum v2.1.206 itu melaporkan `Unknown command: /remote-control`. Alias: `/rc` |

130| `/remote-env` | Pilih lingkungan cloud default untuk [sesi cloud](/docs/id/cloud-environments#select-an-environment-from-the-cli) yang Anda mulai dari CLI |130| `/remote-env` | Pilih lingkungan cloud default untuk [sesi cloud](/docs/id/cloud-environments#select-an-environment-from-the-cli) yang Anda mulai dari CLI |

Details

110 110 

111 * Jadilah spesifik tentang apa yang Anda cari111 * Jadilah spesifik tentang apa yang Anda cari

112 * Gunakan bahasa domain dari proyek112 * Gunakan bahasa domain dari proyek

113 * Instal [plugin code intelligence](/docs/id/discover-plugins#code-intelligence) untuk bahasa Anda untuk memberikan Claude navigasi "go to definition" dan "find references" yang presisi113 * Instal [plugin code intelligence](/docs/id/plugins/code-intelligence) untuk bahasa Anda untuk memberikan Claude navigasi "go to definition" dan "find references" yang presisi

114</Tip>114</Tip>

115 115 

116***116***

costs.md +1 −1

Details

290 Instal plugin kecerdasan kode untuk bahasa yang diketik290 Instal plugin kecerdasan kode untuk bahasa yang diketik

291</h3>291</h3>

292 292 

293[Plugin kecerdasan kode](/docs/id/discover-plugins#code-intelligence) memberi Claude navigasi simbol yang tepat daripada pencarian berbasis teks, mengurangi pembacaan file yang tidak perlu saat menjelajahi kode yang tidak dikenal. Satu panggilan "go to definition" menggantikan apa yang mungkin merupakan grep diikuti dengan membaca beberapa file kandidat. Server bahasa yang diinstal juga melaporkan kesalahan tipe secara otomatis setelah pengeditan, jadi Claude menangkap kesalahan tanpa menjalankan compiler.293[Plugin kecerdasan kode](/docs/id/plugins/code-intelligence) memberi Claude navigasi simbol yang tepat daripada pencarian berbasis teks, mengurangi pembacaan file yang tidak perlu saat menjelajahi kode yang tidak dikenal. Satu panggilan "go to definition" menggantikan apa yang mungkin merupakan grep diikuti dengan membaca beberapa file kandidat. Server bahasa yang diinstal juga melaporkan kesalahan tipe secara otomatis setelah pengeditan, jadi Claude menangkap kesalahan tanpa menjalankan compiler.

294 294 

295<h3 id="offload-processing-to-hooks-and-skills">295<h3 id="offload-processing-to-hooks-and-skills">

296 Offload pemrosesan ke hooks dan skills296 Offload pemrosesan ke hooks dan skills

Details

109| Hook tidak pernah aktif | `matcher` adalah array JSON bukan string | Gunakan string tunggal dengan `\|` untuk mencocokkan beberapa alat, misalnya `"Edit\|Write"`. Lihat [pola matcher](/docs/id/hooks#matcher-patterns). |109| Hook tidak pernah aktif | `matcher` adalah array JSON bukan string | Gunakan string tunggal dengan `\|` untuk mencocokkan beberapa alat, misalnya `"Edit\|Write"`. Lihat [pola matcher](/docs/id/hooks#matcher-patterns). |

110| Hook tidak pernah aktif | `matcher` menggunakan `,` sebagai pemisah pada versi sebelum v2.1.191 | Claude Code v2.1.191 atau lebih baru memperlakukan `,` sebagai pemisah daftar seperti `\|`. Versi sebelumnya mengevaluasi koma sebagai karakter literal, jadi `"Edit,Write"` tidak cocok dengan apa pun. Gunakan `\|` sebagai gantinya, atau tingkatkan Claude Code. |110| Hook tidak pernah aktif | `matcher` menggunakan `,` sebagai pemisah pada versi sebelum v2.1.191 | Claude Code v2.1.191 atau lebih baru memperlakukan `,` sebagai pemisah daftar seperti `\|`. Versi sebelumnya mengevaluasi koma sebagai karakter literal, jadi `"Edit,Write"` tidak cocok dengan apa pun. Gunakan `\|` sebagai gantinya, atau tingkatkan Claude Code. |

111| Hook tidak pernah aktif | Nilai `matcher` adalah huruf kecil, misalnya `"bash"` | Pencocokan peka huruf besar-kecil. Nama alat dikapitalisasi: `Bash`, `Edit`, `Write`, `Read`. |111| Hook tidak pernah aktif | Nilai `matcher` adalah huruf kecil, misalnya `"bash"` | Pencocokan peka huruf besar-kecil. Nama alat dikapitalisasi: `Bash`, `Edit`, `Write`, `Read`. |

112| Hook tidak pernah aktif | Hook berada dalam file standalone bukan `settings.json` | Tidak ada file hooks standalone untuk konfigurasi proyek atau pengguna. Tentukan hooks di bawah kunci `"hooks"` di `settings.json`. Hanya [plugins](/docs/id/plugins-reference#hooks) yang memuat `hooks/hooks.json` terpisah. Lihat [konfigurasi hook](/docs/id/hooks). |112| Hook tidak pernah aktif | Hook berada dalam file standalone bukan `settings.json` | Tidak ada file hooks standalone untuk konfigurasi proyek atau pengguna. Tentukan hooks di bawah kunci `"hooks"` di `settings.json`. Hanya [plugins](/docs/id/plugins/components#hooks) yang memuat `hooks/hooks.json` terpisah. Lihat [konfigurasi hook](/docs/id/hooks). |

113| Permissions, hooks, atau env yang diatur secara global diabaikan | Konfigurasi ditambahkan ke `~/.claude.json` | `~/.claude.json` menyimpan status aplikasi dan toggle UI. `permissions`, `hooks`, dan `env` termasuk dalam `~/.claude/settings.json`. Ini adalah dua file berbeda. |113| Permissions, hooks, atau env yang diatur secara global diabaikan | Konfigurasi ditambahkan ke `~/.claude.json` | `~/.claude.json` menyimpan status aplikasi dan toggle UI. `permissions`, `hooks`, dan `env` termasuk dalam `~/.claude/settings.json`. Ini adalah dua file berbeda. |

114| Nilai `settings.json` tampak diabaikan | Kunci yang sama diatur di `settings.local.json` | `settings.local.json` menggantikan `settings.json`, dan keduanya menggantikan `~/.claude/settings.json`. Lihat [preseden pengaturan](/docs/id/settings#settings-precedence). |114| Nilai `settings.json` tampak diabaikan | Kunci yang sama diatur di `settings.local.json` | `settings.local.json` menggantikan `settings.json`, dan keduanya menggantikan `~/.claude/settings.json`. Lihat [preseden pengaturan](/docs/id/settings#settings-precedence). |

115| Skill tidak muncul di `/skills` | File skill berada di `.claude/skills/name.md` bukan dalam folder | Gunakan folder dengan `SKILL.md` di dalamnya: `.claude/skills/name/SKILL.md`. |115| Skill tidak muncul di `/skills` | File skill berada di `.claude/skills/name.md` bukan dalam folder | Gunakan folder dengan `SKILL.md` di dalamnya: `.claude/skills/name/SKILL.md`. |

desktop.md +6 −6

Details

472 472 

473Hubungkan layanan eksternal, tambahkan alur kerja yang dapat digunakan kembali, sesuaikan perilaku Claude, dan konfigurasikan server pratinjau. Untuk mengelola connectors, skills, dan plugins di satu tempat, klik **Customize** di sidebar. Tab [Cowork](https://claude.com/product/cowork) di aplikasi Desktop bersumber skills, plugins, dan connectors dari konfigurasi Customize ini, yang disinkronkan melalui akun claude.ai Anda, bukan dari direktori `~/.claude` CLI.473Hubungkan layanan eksternal, tambahkan alur kerja yang dapat digunakan kembali, sesuaikan perilaku Claude, dan konfigurasikan server pratinjau. Untuk mengelola connectors, skills, dan plugins di satu tempat, klik **Customize** di sidebar. Tab [Cowork](https://claude.com/product/cowork) di aplikasi Desktop bersumber skills, plugins, dan connectors dari konfigurasi Customize ini, yang disinkronkan melalui akun claude.ai Anda, bukan dari direktori `~/.claude` CLI.

474 474 

475Claude Code juga memuat skills dan plugins yang diaktifkan untuk akun claude.ai Anda dalam sesi terminal di mana Anda masuk dengan akun yang sama. Lihat [Skills synced from claude.ai](/docs/id/skills#how-synced-skills-behave) dan [Plugins synced from claude.ai](/docs/id/plugins-reference#synced-plugins).475Claude Code juga memuat skills dan plugins yang diaktifkan untuk akun claude.ai Anda dalam sesi terminal di mana Anda masuk dengan akun yang sama. Lihat [Skills synced from claude.ai](/docs/id/skills#how-synced-skills-behave) dan [Plugins synced from claude.ai](/docs/id/plugins/loading#synced-plugins).

476 476 

477<h3 id="connect-external-tools">477<h3 id="connect-external-tools">

478 Hubungkan alat eksternal478 Hubungkan alat eksternal


490 Gunakan skills490 Gunakan skills

491</h3>491</h3>

492 492 

493[Skills](/docs/id/skills) memperluas apa yang dapat dilakukan Claude. Claude memuatnya secara otomatis ketika relevan, atau Anda dapat menginvokan satu secara langsung: ketik `/` di kotak prompt atau klik tombol **+** dan pilih **Slash commands** untuk melihat apa yang tersedia. Ini mencakup [built-in commands](/docs/id/commands), [custom skills](/docs/id/skills#create-your-first-skill) Anda, project skills dari basis kode Anda, dan skills dari [installed plugins](/docs/id/plugins) apa pun. Pilih satu dan itu muncul disorot di bidang input. Ketik tugas Anda setelahnya dan kirim seperti biasa.493[Skills](/docs/id/skills) memperluas apa yang dapat dilakukan Claude. Claude memuatnya secara otomatis ketika relevan, atau Anda dapat menginvokan satu secara langsung: ketik `/` di kotak prompt atau klik tombol **+** dan pilih **Slash commands** untuk melihat apa yang tersedia. Ini mencakup [built-in commands](/docs/id/commands), [custom skills](/docs/id/skills#create-your-first-skill) Anda, project skills dari basis kode Anda, dan skills dari [installed plugins](/docs/id/plugins/install) apa pun. Pilih satu dan itu muncul disorot di bidang input. Ketik tugas Anda setelahnya dan kirim seperti biasa.

494 494 

495Anda dapat mengirim perintah saat Claude sedang bekerja, sama seperti pesan lainnya, dan sesi kembali ke idle setelah giliran selesai. Sebelum v2.1.206, perintah yang dikirim di tengah giliran dapat membuat sesi tetap menampilkan sebagai berjalan dan pesan yang Anda kirim setelahnya tidak terkirim.495Anda dapat mengirim perintah saat Claude sedang bekerja, sama seperti pesan lainnya, dan sesi kembali ke idle setelah giliran selesai. Sebelum v2.1.206, perintah yang dikirim di tengah giliran dapat membuat sesi tetap menampilkan sebagai berjalan dan pesan yang Anda kirim setelahnya tidak terkirim.

496 496 


502 Instal plugins502 Instal plugins

503</h3>503</h3>

504 504 

505[Plugins](/docs/id/plugins) adalah paket yang dapat digunakan kembali yang menambahkan skills, agents, hooks, MCP servers, dan konfigurasi LSP ke Claude Code. Anda dapat memasang plugins dari aplikasi desktop tanpa menggunakan terminal.505[Plugins](/docs/id/plugins/overview) adalah paket yang dapat digunakan kembali yang menambahkan skills, agents, hooks, MCP servers, dan konfigurasi LSP ke Claude Code. Anda dapat memasang plugins dari aplikasi desktop tanpa menggunakan terminal.

506 506 

507Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Plugins** untuk melihat plugins yang diinstal dan skills mereka. Untuk menambahkan plugin, pilih **Add plugin** dari submenu untuk membuka plugin browser, yang menampilkan plugins yang tersedia dari [marketplaces](/docs/id/plugin-marketplaces) yang dikonfigurasi termasuk marketplace Anthropic resmi. Pilih **Manage plugins** untuk mengaktifkan, menonaktifkan, atau mencopot plugins.507Untuk sesi lokal dan [SSH](#ssh-sessions), klik tombol **+** di sebelah kotak prompt dan pilih **Plugins** untuk melihat plugins yang diinstal dan skills mereka. Untuk menambahkan plugin, pilih **Add plugin** dari submenu untuk membuka plugin browser, yang menampilkan plugins yang tersedia dari [marketplaces](/docs/id/plugins/overview) yang dikonfigurasi termasuk marketplace Anthropic resmi. Pilih **Manage plugins** untuk mengaktifkan, menonaktifkan, atau mencopot plugins.

508 508 

509Anda dapat membatasi plugins ke akun pengguna Anda, proyek tertentu, atau lokal saja. Jika organisasi Anda mengelola plugins secara terpusat, plugins tersebut tersedia di sesi desktop dengan cara yang sama seperti di CLI.509Anda dapat membatasi plugins ke akun pengguna Anda, proyek tertentu, atau lokal saja. Jika organisasi Anda mengelola plugins secara terpusat, plugins tersebut tersedia di sesi desktop dengan cara yang sama seperti di CLI.

510 510 

511Plugin browser tidak tersedia di sesi cloud, dan plugins yang Anda instal dari aplikasi desktop tidak tersedia untuk sesi cloud. Sesi cloud juga tidak memasang plugins yang dideklarasikan oleh `.claude/settings.json` repository, seperti yang dijelaskan dalam [What carries over from your setup](/docs/id/cloud-environments#what-carries-over-from-your-setup). Untuk menggunakan plugin di sesi cloud, aktifkan untuk akun claude.ai Anda sehingga Claude Code memuatnya sebagai [synced plugin](/docs/id/plugins-reference#synced-plugins). Plugins tidak tersedia di sesi WSL. Untuk referensi plugin lengkap termasuk membuat plugins Anda sendiri, lihat [plugins](/docs/id/plugins).511Plugin browser tidak tersedia di sesi cloud, dan plugins yang Anda instal dari aplikasi desktop tidak tersedia untuk sesi cloud. Sesi cloud juga tidak memasang plugins yang dideklarasikan oleh `.claude/settings.json` repository, seperti yang dijelaskan dalam [What carries over from your setup](/docs/id/cloud-environments#what-carries-over-from-your-setup). Plugins tidak tersedia di sesi WSL. Untuk referensi plugin lengkap termasuk membuat plugins Anda sendiri, lihat [plugins](/docs/id/plugins/overview).

512 512 

513<h3 id="configure-preview-servers">513<h3 id="configure-preview-servers">

514 Konfigurasikan server pratinjau514 Konfigurasikan server pratinjau


1023| Mode izin | Semua mode termasuk `dontAsk` | Manual, Terima edits, Plan, dan Auto. Bypass permissions muncul di pemilih mode setelah diaktifkan: melalui toggle Settings di paket Pro dan Max, atau melalui kebijakan organisasi di paket Team dan Enterprise |1023| Mode izin | Semua mode termasuk `dontAsk` | Manual, Terima edits, Plan, dan Auto. Bypass permissions muncul di pemilih mode setelah diaktifkan: melalui toggle Settings di paket Pro dan Max, atau melalui kebijakan organisasi di paket Team dan Enterprise |

1024| [Penyedia pihak ketiga](/docs/id/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API Anthropic secara default. Untuk perutean gateway, lihat [hubungkan aplikasi desktop ke gateway](/docs/id/llm-gateway-connect#desktop-app). Untuk menjalankan tab Code di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway LLM yang di-host sendiri, lihat [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). |1024| [Penyedia pihak ketiga](/docs/id/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API Anthropic secara default. Untuk perutean gateway, lihat [hubungkan aplikasi desktop ke gateway](/docs/id/llm-gateway-connect#desktop-app). Untuk menjalankan tab Code di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway LLM yang di-host sendiri, lihat [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). |

1025| [MCP servers](/docs/id/mcp) | Konfigurasikan di file pengaturan | UI Connectors untuk sesi lokal dan SSH, atau file pengaturan |1025| [MCP servers](/docs/id/mcp) | Konfigurasikan di file pengaturan | UI Connectors untuk sesi lokal dan SSH, atau file pengaturan |

1026| [Plugins](/docs/id/plugins) | Perintah `/plugin` | UI plugin manager |1026| [Plugins](/docs/id/plugins/overview) | Perintah `/plugin` | UI plugin manager |

1027| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |1027| File @mention | Berbasis teks | Dengan autocomplete; hanya sesi lokal dan SSH |

1028| Lampiran file | Tidak tersedia | Gambar, PDF |1028| Lampiran file | Tidak tersedia | Gambar, PDF |

1029| Isolasi sesi | Flag [`--worktree`](/docs/id/cli-reference) | Opsi **worktree** saat memulai sesi |1029| Isolasi sesi | Flag [`--worktree`](/docs/id/cli-reference) | Opsi **worktree** saat memulai sesi |

discover-plugins.md +0 −651 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# Temukan dan instal plugin yang sudah dibuat melalui marketplace

6 

7> Temukan dan instal plugin dari marketplace untuk memperluas Claude Code dengan skills, agen, dan kemampuan baru.

8 

9Plugin memperluas Claude Code dengan skills, agen, hooks, dan MCP servers. Plugin marketplace adalah katalog yang membantu Anda menemukan dan menginstal ekstensi ini tanpa membuatnya sendiri.

10 

11Anda juga dapat mengaktifkan plugin di claude.ai, untuk diri sendiri atau melalui organisasi Anda. Claude Code menyinkronkan plugin tersebut ke dalam sesi Anda tanpa perlu instalasi marketplace, seperti yang dijelaskan di [Plugins synced from claude.ai](/docs/id/plugins-reference#synced-plugins).

12 

13Mencari cara membuat dan mendistribusikan marketplace Anda sendiri? Lihat [Buat dan distribusikan plugin marketplace](/docs/id/plugin-marketplaces).

14 

15<h2 id="how-marketplaces-work">

16 Cara kerja marketplace

17</h2>

18 

19Marketplace adalah katalog plugin yang telah dibuat dan dibagikan oleh orang lain. Menggunakan marketplace adalah proses dua langkah:

20 

21<Steps>

22 <Step title="Tambahkan marketplace">

23 Ini mendaftarkan katalog dengan Claude Code sehingga Anda dapat menjelajahi apa yang tersedia. Tidak ada plugin yang diinstal lagi.

24 </Step>

25 

26 <Step title="Instal plugin individual">

27 Jelajahi katalog dan instal plugin yang Anda inginkan.

28 </Step>

29</Steps>

30 

31<h2 id="official-anthropic-marketplace">

32 Official Anthropic marketplace

33</h2>

34 

35Claude Code menambahkan official Anthropic marketplace (`claude-plugins-official`) secara otomatis saat pertama kali Anda memulainya secara interaktif. Jika Claude Code tidak dapat menambahkannya, misalnya karena jaringan Anda memblokir unduhan atau [kebijakan marketplace](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) memblokir upaya sebelumnya, tambahkan sendiri dengan `/plugin marketplace add anthropics/claude-plugins-official`.

36 

37Untuk menjelajahi apa yang tersedia, jalankan `/plugin` dan buka tab **Discover**, atau lihat katalog di [claude.com/plugins](https://claude.com/plugins).

38 

39Untuk menginstal plugin dari official marketplace, gunakan `/plugin install <name>@claude-plugins-official`. Misalnya, untuk menginstal integrasi GitHub:

40 

41```shell theme={null}

42/plugin install github@claude-plugins-official

43```

44 

45`/plugin` membuka panel interaktif di terminal CLI. Jika Claude melaporkan bahwa `/plugin` tidak tersedia di lingkungan ini, instal plugin dengan cara lain:

46 

47* **Claude desktop app**: gunakan [plugin browser](/docs/id/desktop#install-plugins).

48* **VS Code extension**: instal dari [dialog **Manage plugins**](/docs/id/vs-code#manage-plugins).

49* **Cloud sessions**: aktifkan plugin untuk akun claude.ai Anda sehingga Claude Code memuatnya sebagai [synced plugin](/docs/id/plugins-reference#synced-plugins).

50 

51Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

52 

53* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba instal lagi.

54* Plugin [tidak ditemukan di marketplace](#install-plugins): periksa nama plugin.

55 

56<Note>

57 Official marketplace dikurasi oleh Anthropic, dan penyertaan adalah atas kebijakan Anthropic. Formulir pengajuan dalam aplikasi menambahkan plugin ke [community marketplace](#community-marketplace), bukan yang resmi. Untuk mendistribusikan plugin secara independen, [buat marketplace Anda sendiri](/docs/id/plugin-marketplaces) dan bagikan dengan pengguna.

58</Note>

59 

60Official marketplace mencakup beberapa kategori plugin:

61 

62<h3 id="code-intelligence">

63 Code intelligence

64</h3>

65 

66Plugin code intelligence mengaktifkan alat LSP bawaan Claude Code, memberikan Claude kemampuan untuk melompat ke definisi, menemukan referensi, dan melihat kesalahan tipe segera setelah edit. Plugin ini mengonfigurasi koneksi [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), teknologi yang sama yang mendukung code intelligence VS Code. Dalam [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code tidak memulai language server plugin, jadi Claude tidak mendapatkan alat LSP di sana.

67 

68Instal binary language server dari tabel di bawah sebelum menggunakan plugin ini; plugin tidak menginstalnya untuk Anda. Jika Anda sudah memiliki language server yang diinstal, Claude mungkin akan meminta Anda untuk menginstal plugin yang sesuai saat Anda membuka proyek.

69 

70| Language | Plugin | Binary required |

71| :--------- | :------------------ | :--------------------------- |

72| C/C++ | `clangd-lsp` | `clangd` |

73| C# | `csharp-lsp` | `csharp-ls` |

74| Go | `gopls-lsp` | `gopls` |

75| Java | `jdtls-lsp` | `jdtls` |

76| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

77| Lua | `lua-lsp` | `lua-language-server` |

78| PHP | `php-lsp` | `intelephense` |

79| Python | `pyright-lsp` | `pyright-langserver` |

80| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

81| Swift | `swift-lsp` | `sourcekit-lsp` |

82| TypeScript | `typescript-lsp` | `typescript-language-server` |

83 

84Anda juga dapat [membuat plugin LSP Anda sendiri](/docs/id/plugins-reference#lsp-servers) untuk bahasa lain.

85 

86<Note>

87 Jika Anda melihat `Executable not found in $PATH` di tab `/plugin` Errors setelah menginstal plugin, instal binary yang diperlukan dari tabel [code intelligence](#code-intelligence) di atas.

88</Note>

89 

90<h4 id="what-claude-gains-from-code-intelligence-plugins">

91 Apa yang Claude dapatkan dari plugin code intelligence

92</h4>

93 

94Setelah plugin code intelligence diinstal dan binary language server-nya tersedia, Claude mendapatkan dua kemampuan:

95 

96* **Automatic diagnostics**: setelah setiap edit file yang dilakukan Claude, language server melaporkan kesalahan dan peringatan kembali, jadi Claude melihat kesalahan tipe, impor yang hilang, dan masalah sintaks tanpa menjalankan compiler atau linter. Jika Claude memperkenalkan kesalahan, itu akan menyadari dan memperbaikinya dalam giliran yang sama.

97* **Code navigation**: Claude dapat menggunakan language server untuk melompat ke definisi, menemukan referensi, mendapatkan informasi tipe saat hover, membuat daftar simbol, menemukan implementasi, dan melacak hierarki panggilan. Operasi ini memberikan Claude navigasi yang lebih presisi daripada pencarian berbasis grep, meskipun ketersediaan mungkin berbeda menurut bahasa dan lingkungan.

98 

99Anda tidak perlu mengonfigurasi diagnostik selain menginstal plugin. Untuk membacanya sendiri, tekan **Ctrl+O** saat Claude Code menampilkan indikator seperti **Found 3 new diagnostic issues in 2 files**.

100 

101Jika Anda mengalami masalah, lihat [Code intelligence troubleshooting](#code-intelligence-issues).

102 

103<h3 id="external-integrations">

104 External integrations

105</h3>

106 

107Plugin ini menggabungkan [MCP servers](/docs/id/mcp) yang sudah dikonfigurasi sebelumnya sehingga Anda dapat menghubungkan Claude ke layanan eksternal tanpa setup manual:

108 

109* **Source control**: `github`, `gitlab`

110* **Project management**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

111* **Design**: `figma`

112* **Infrastructure**: `vercel`, `firebase`, `supabase`

113* **Communication**: `slack`

114* **Monitoring**: `sentry`

115 

116<h3 id="automatic-security-review">

117 Automatic security review

118</h3>

119 

120Plugin `security-guidance` meninjau setiap perubahan yang dilakukan Claude untuk kerentanan umum dan menginstruksikan Claude untuk memperbaiki apa yang ditemukannya dalam sesi yang sama. Lihat [Catch security issues as Claude writes code](/docs/id/security-guidance) untuk apa yang diperiksa dan cara menambahkan aturan khusus proyek.

121 

122<h3 id="development-workflows">

123 Development workflows

124</h3>

125 

126Plugin yang menambahkan skills dan agen untuk tugas pengembangan umum:

127 

128* **commit-commands**: Git commit workflows termasuk commit, push, dan pembuatan PR

129* **pr-review-toolkit**: Agen khusus untuk meninjau pull request

130* **agent-sdk-dev**: Tools untuk membangun dengan Claude Agent SDK

131* **plugin-dev**: Toolkit untuk membuat plugin Anda sendiri

132 

133<h3 id="output-styles">

134 Output styles

135</h3>

136 

137Sesuaikan cara Claude merespons:

138 

139* **explanatory-output-style**: Wawasan edukatif tentang pilihan implementasi

140* **learning-output-style**: Mode pembelajaran interaktif untuk membangun skill

141 

142<h2 id="community-marketplace">

143 Community marketplace

144</h2>

145 

146Community marketplace di [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) menampung plugin pihak ketiga yang telah lulus validasi otomatis Anthropic dan penyaringan keamanan. Setiap plugin disematkan ke SHA commit tertentu dalam katalog. Tidak seperti official marketplace, Anda menambahkannya secara manual:

147 

148```shell theme={null}

149/plugin marketplace add anthropics/claude-plugins-community

150```

151 

152Kemudian instal plugin darinya menggunakan nama marketplace `claude-community`:

153 

154```shell theme={null}

155/plugin install <plugin-name>@claude-community

156```

157 

158Untuk mengirimkan plugin Anda sendiri ke community marketplace, lihat [Kirimkan plugin Anda ke community marketplace](/docs/id/plugins#submit-your-plugin-to-the-community-marketplace) dalam panduan create-plugins.

159 

160<h2 id="try-it-add-the-demo-marketplace">

161 Coba: tambahkan demo marketplace

162</h2>

163 

164Anthropic juga memelihara [demo plugins marketplace](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) dengan plugin contoh yang menunjukkan apa yang mungkin dengan sistem plugin. Tidak seperti official marketplace, Anda perlu menambahkan ini secara manual.

165 

166<Steps>

167 <Step title="Tambahkan marketplace">

168 Dari dalam Claude Code, jalankan perintah `plugin marketplace add` untuk marketplace `anthropics/claude-code`:

169 

170 ```shell theme={null}

171 /plugin marketplace add anthropics/claude-code

172 ```

173 

174 Ini mengunduh katalog marketplace dan membuat plugin-nya tersedia untuk Anda.

175 </Step>

176 

177 <Step title="Jelajahi plugin yang tersedia">

178 Jalankan `/plugin` untuk membuka plugin manager. Ini membuka antarmuka bertab yang dapat Anda siklus menggunakan **Tab**, atau **Shift+Tab** untuk mundur:

179 

180 * **Discover**: jelajahi plugin yang tersedia dari semua marketplace Anda

181 * **Installed**: lihat dan kelola plugin yang diinstal

182 * **Marketplaces**: tambah, hapus, atau perbarui marketplace yang ditambahkan

183 * **Errors**: lihat kesalahan pemuatan plugin apa pun

184 * **Stats**: lihat [berapa biaya setiap skill Anda dalam konteks dan seberapa sering digunakan](/docs/id/skills#find-unused-skills), dalam sesi di mana `/skill-doctor` tersedia

185 

186 Buka tab **Discover** untuk melihat plugin dari marketplace yang baru saja Anda tambahkan. Ketika administrator Anda telah memasukkan marketplace ke dalam daftar putih melalui pengaturan terkelola [`pluginSuggestionMarketplaces`](/docs/id/settings-reference#pluginsuggestionmarketplaces), plugin yang ditandai sebagai relevan dengan direktori kerja Anda saat ini disematkan di bagian atas dengan label **suggested for this directory**.

187 </Step>

188 

189 <Step title="Instal plugin">

190 Pilih plugin untuk melihat detailnya. Pane detail menunjukkan apa yang berisi plugin dan biayanya:

191 

192 * Estimasi **Context cost** sehingga Anda dapat melihat berapa banyak token yang akan ditambahkan plugin ke [context window](/docs/id/features-overview#understand-context-costs) Anda setiap putaran

193 * Tanggal **Last updated** plugin

194 * Bagian **Will install** yang mencantumkan perintah, agen, skills, hooks, dan server MCP dan LSP plugin, sehingga Anda dapat meninjau dengan tepat apa yang ditambahkan sebelum menginstal

195 

196 Tidak setiap plugin menyediakan data di balik bidang-bidang ini. Untuk plugin dari marketplace lokal atau kustom, Anda mungkin tidak melihat baris **Context cost** dan **Last updated**, dan bagian **Will install** mungkin menunjukkan **Components will be discovered at installation** sebagai gantinya.

197 

198 Pilih cakupan instalasi:

199 

200 * **User scope**: instal untuk diri sendiri di semua proyek

201 * **Project scope**: instal untuk semua kolaborator di repositori ini

202 * **Local scope**: instal untuk diri sendiri di repositori ini saja

203 

204 Misalnya, pilih **commit-commands**, plugin yang menambahkan skills alur kerja git, dan instal ke cakupan pengguna Anda.

205 

206 Anda juga dapat memulai instalasi dari baris perintah:

207 

208 ```shell theme={null}

209 /plugin install commit-commands@claude-code-plugins

210 ```

211 

212 Lihat [Settings files](/docs/id/settings#where-settings-live) untuk mempelajari lebih lanjut tentang cakupan.

213 </Step>

214 

215 <Step title="Gunakan plugin baru Anda">

216 Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Claude Code kemudian menjalankan reload itu untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan `/reload-plugins --force` untuk mengaktifkan plugin.

217 

218 Skills plugin diberi namespace oleh nama plugin, jadi **commit-commands** menyediakan skills seperti `/commit-commands:commit`.

219 

220 Coba dengan membuat perubahan pada file dan menjalankan:

221 

222 ```shell theme={null}

223 /commit-commands:commit

224 ```

225 

226 Ini menampilkan perubahan Anda, menghasilkan pesan commit, dan membuat commit.

227 

228 Setiap plugin bekerja berbeda. Periksa detail plugin di tab **Discover** untuk melihat perintah dan skills yang disediakan, atau kunjungi homepage-nya untuk panduan penggunaan.

229 </Step>

230</Steps>

231 

232<h2 id="add-marketplaces">

233 Tambahkan marketplace

234</h2>

235 

236Gunakan perintah `/plugin marketplace add` untuk menambahkan marketplace dari sumber yang berbeda.

237 

238<Tip>

239 **Shortcuts**: Anda dapat menggunakan `/plugin market` sebagai ganti `/plugin marketplace`, dan `rm` sebagai ganti `remove`.

240</Tip>

241 

242* **GitHub repositories**: format `owner/repo`, misalnya `anthropics/claude-code`

243* **Git URLs**: URL repositori git apa pun, termasuk GitLab, Bitbucket, dan server self-hosted

244* **Local paths**: direktori atau jalur langsung ke file `marketplace.json`

245* **Remote URLs**: URL langsung ke file `marketplace.json` yang dihosting

246* **claude.ai**: marketplace yang dihosting di claude.ai untuk akun Anda, seperti perpustakaan plugin organisasi Anda, yang Anda [tambahkan berdasarkan nama dari tab **Marketplaces** atau shell Anda](#add-from-claude-ai) daripada berdasarkan sumber

247 

248<h3 id="add-from-github">

249 Tambahkan dari GitHub

250</h3>

251 

252Tambahkan repositori GitHub yang berisi file `.claude-plugin/marketplace.json` menggunakan format `owner/repo`, di mana `owner` adalah nama pengguna atau organisasi GitHub dan `repo` adalah nama repositori.

253 

254Misalnya, `anthropics/claude-code` merujuk ke repositori `claude-code` yang dimiliki oleh `anthropics`:

255 

256```shell theme={null}

257/plugin marketplace add anthropics/claude-code

258```

259 

260<h3 id="add-from-other-git-hosts">

261 Tambahkan dari host Git lainnya

262</h3>

263 

264Tambahkan repositori git marketplace dengan memberikan URL lengkapnya. Untuk URL `https://`, apakah akan menyertakan akhiran `.git` tergantung pada host:

265 

266* **`github.com` dan `gitlab.com`**: Claude Code mengenali URL repositori dengan atau tanpa akhiran `.git` dan mengklonnya. Menambahkan URL `gitlab.com` tanpa akhiran memerlukan Claude Code v2.1.232 atau lebih baru. Sebelum v2.1.232, Claude Code memperlakukannya sebagai tautan langsung ke file `marketplace.json` yang dihosting.

267* **Azure DevOps**: hilangkan akhirannya. Claude Code mengkloning URL apa pun yang jalurnya berisi `/_git/`. Jika Anda menambahkan `.git` ke jalur `/_git/`, kloning gagal.

268* **Setiap host lainnya, termasuk server GitLab yang dikelola sendiri**: sertakan akhiran `.git` sehingga Claude Code mengkloning repositori daripada memperlakukan URL sebagai tautan langsung ke file `marketplace.json` yang dihosting. Untuk host yang URL klonnya tidak membawa akhiran, seperti AWS CodeCommit, tambahkan marketplace sebagai entri git dalam [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) sebagai gantinya. Claude Code mengkloning entri git apakah atau tidak URL-nya berakhir dengan `.git`.

269 

270Claude Code juga mengkloning URL `gitlab.com` dengan subgrup bersarang, seperti `https://gitlab.com/group/subgroup/project`.

271 

272Sertakan awalan `https://`. Claude Code v2.1.196 dan yang lebih baru menolak host yang diketik tanpa itu, seperti `gitlab.com/company/plugins.git`, sebagai shorthand `owner/repo` GitHub yang tidak valid, dan kesalahan memberi tahu Anda untuk menambahkan awalan. Versi sebelumnya salah membacanya sebagai jalur repositori GitHub dan gagal saat waktu kloning.

273 

274Menggunakan HTTPS:

275 

276```shell theme={null}

277/plugin marketplace add https://gitlab.com/company/plugins.git

278```

279 

280Menggunakan SSH:

281 

282```shell theme={null}

283/plugin marketplace add git@gitlab.com:company/plugins.git

284```

285 

286Claude Code mengkloning alamat SSH apakah atau tidak berakhir dengan `.git`.

287 

288Untuk menambahkan cabang atau tag tertentu, tambahkan `#` diikuti oleh ref:

289 

290```shell theme={null}

291/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

292```

293 

294<h3 id="add-from-local-paths">

295 Tambahkan dari jalur lokal

296</h3>

297 

298Tambahkan direktori lokal yang berisi file `.claude-plugin/marketplace.json`:

299 

300```shell theme={null}

301/plugin marketplace add ./my-marketplace

302```

303 

304Anda juga dapat menambahkan jalur langsung ke file `marketplace.json`:

305 

306```shell theme={null}

307/plugin marketplace add ./path/to/marketplace.json

308```

309 

310<h3 id="add-from-remote-urls">

311 Tambahkan dari URL jarak jauh

312</h3>

313 

314Tambahkan file `marketplace.json` jarak jauh melalui URL:

315 

316```shell theme={null}

317/plugin marketplace add https://example.com/marketplace.json

318```

319 

320<Note>

321 Marketplace berbasis URL memiliki beberapa keterbatasan dibandingkan dengan marketplace berbasis Git. Jika instalasi plugin dari marketplace berbasis URL gagal, lihat [Troubleshooting](/docs/id/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

322</Note>

323 

324<h3 id="add-from-claude-ai">

325 Tambahkan dari claude.ai

326</h3>

327 

328Dalam sesi terminal di mana [plugin disinkronkan dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins), claude.ai juga dapat mencantumkan marketplace untuk Anda, seperti perpustakaan plugin organisasi Anda dan unggahan claude.ai Anda sendiri. `claude plugin marketplace list` mencetaknya dalam bagian `From claude.ai:`, dan tab **Marketplaces** `/plugin` mencantumkannya. Pilih salah satu di sana untuk menambahkannya. Menambahkan marketplace dari claude.ai memerlukan Claude Code v2.1.273 atau lebih baru.

329 

330Untuk menambahkan satu dari shell Anda, jalankan `claude plugin marketplace add` dengan flag `--claudeai` dan nama yang ditampilkan dalam daftar:

331 

332```bash theme={null}

333claude plugin marketplace add --claudeai claudeai-organization-library

334```

335 

336Claude Code mendaftarkan marketplace dengan nama lokal yang dimulai dengan `claudeai-`, berasal dari nama yang claude.ai cantumkan di bawahnya: marketplace yang dicantumkan sebagai "Organization library" terdaftar sebagai `claudeai-organization-library`. Instal pluginnya dengan nama itu, misalnya dengan `claude plugin install <plugin>@claudeai-organization-library`.

337 

338Jika Anda keluar atau masuk dengan akun yang berbeda, marketplace tetap dikonfigurasi tetapi tidak menampilkan plugin apa pun, dan plugin yang sudah Anda instal darinya terus dimuat.

339 

340Bagian `From claude.ai:` juga dapat mencantumkan marketplace berbasis git yang dibagikan melalui claude.ai. Anda menambahkannya dengan perintah `marketplace add` biasa, menggunakan sumber yang dicetak daftar.

341 

342<h2 id="install-plugins">

343 Instal plugin

344</h2>

345 

346Setelah Anda menambahkan marketplace, Anda dapat menginstal plugin berdasarkan nama. Untuk marketplace yang belum Anda tambahkan, Anda dapat [menambahkannya dan menginstal dalam satu perintah](#add-a-marketplace-and-install-in-one-command).

347 

348Untuk menginstal berdasarkan nama:

349 

350```shell theme={null}

351/plugin install plugin-name@marketplace-name

352```

353 

354Perintah membuka detail plugin tersebut, di mana Anda memilih [cakupan instalasi](/docs/id/settings#where-settings-live). Anda melihat pilihan yang sama ketika Anda menjalankan `/plugin`, pergi ke tab **Discover**, dan menekan **Enter** pada plugin:

355 

356* **User scope**: instal untuk diri sendiri di semua proyek

357* **Project scope**: instal untuk semua kolaborator di repositori ini, yang menambahkan plugin ke `.claude/settings.json`

358* **Local scope**: instal untuk diri sendiri di repositori ini saja, tidak dibagikan dengan kolaborator

359 

360Untuk menginstal tanpa langkah interaktif, gunakan perintah shell [`claude plugin install`](/docs/id/plugins-reference#plugin-install), yang menginstal ke cakupan pengguna kecuali Anda melewatkan `--scope`. Untuk plugin dengan [sumber `command`](/docs/id/plugin-marketplaces#how-users-accept-the-command), lewatkan `--yes` untuk menerima perintah yang ditampilkannya.

361 

362Anda juga dapat melihat plugin dengan cakupan **managed**. Ini diinstal oleh administrator melalui [managed settings](/docs/id/managed-settings) dan tidak dapat dimodifikasi.

363 

364Claude Code mencari plugin di salinan lokal katalog marketplace. Cara Anda memberi nama plugin mengontrol apakah Claude Code menyegarkan salinan tersebut terlebih dahulu:

365 

366* **Dengan nama marketplace**: ketika Anda menginstal `plugin-name@marketplace-name`, dalam sesi atau dengan `claude plugin install`, Claude Code menyegarkan marketplace tersebut sebelum pencarian. Claude Code menjalankan penyegaran bahkan jika Anda mematikan [auto-update](#configure-auto-updates) untuk marketplace atau menetapkan `DISABLE_AUTOUPDATER`. Sebelum v2.1.232, Claude Code tidak menyegarkan marketplace sebelum pencarian. Claude Code melewati penyegaran ini ketika:

367 * Marketplace tidak [ditambahkan dari GitHub, host Git lain, URL jarak jauh](#add-marketplaces), atau [claude.ai](#add-from-claude-ai).

368 * [Direktori seed](/docs/id/plugin-marketplaces#pre-populate-plugins-for-containers) menyediakan marketplace.

369 * Claude Code menyegarkan marketplace dalam 30 detik terakhir.

370 * Anda menetapkan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars).

371 * [Managed settings](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) memblokir marketplace, dalam hal ini Claude Code juga menolak instalasi.

372* **Nama plugin saja**: ketika Anda menjalankan `/plugin install plugin-name` dalam sesi, Claude Code menyegarkan hanya marketplace yang juga [diperbarui di latar belakang](#configure-auto-updates), dan hanya setelah pencarian gagal. Ketika Anda menjalankan `claude plugin install plugin-name`, Claude Code membaca katalog yang di-cache tanpa menyegarkan. Untuk menginstal plugin yang dipublikasikan setelah penyegaran terakhir Anda, jalankan `/plugin marketplace update <marketplace-name>` dalam sesi atau [`claude plugin marketplace update <marketplace-name>`](/docs/id/plugin-marketplaces#plugin-marketplace-update) di shell Anda, kemudian coba instalasi lagi.

373 

374Jika penyegaran sebelum instalasi bernama gagal, misalnya karena Anda offline, Claude Code mencari plugin di katalog yang di-cache. `claude plugin install` melaporkan `marketplace not refreshed` dalam pesan suksesnya, dan `/plugin install` menampilkan kegagalan di atas detail plugin atau dalam pesan tidak ditemukannya.

375 

376Ketika Anda menginstal dari antarmuka `/plugin`, ringkasan instalasi memberi tahu Anda apakah plugin aktif dalam sesi saat ini:

377 

378* `Plugin is now active.`: Claude Code mengaktifkan plugin sebagai bagian dari instalasi.

379* `Run /reload-plugins to activate.`: plugin belum aktif, karena mengaktifkannya akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin) atau karena upaya aktivasi gagal. Claude Code kemudian menjalankan `/reload-plugins` untuk Anda. Jika reload tersebut memperingatkan tentang prompt cache, jalankan `/reload-plugins --force` untuk [mengaktifkan plugin meskipun demikian](#apply-plugin-changes-without-restarting).

380* Jika plugin gagal dimuat, ringkasan melaporkan kegagalan dan tab **Errors** `/plugin` menampilkan detailnya.

381 

382Sebelum v2.1.221, tidak ada instalasi yang berlaku dalam sesi saat ini sampai Anda menjalankan `/reload-plugins` atau memulai ulang.

383 

384Perintah shell `claude plugin install` tidak berjalan dalam sesi, jadi Claude Code memuat plugin yang diinstalnya saat berikutnya Anda memulai Claude Code, atau ketika Anda menjalankan `/reload-plugins` dalam sesi yang sudah terbuka.

385 

386<Warning>

387 Pastikan Anda mempercayai plugin sebelum menginstalnya. Anthropic tidak mengontrol apa yang MCP servers, file, atau perangkat lunak lain yang disertakan dalam plugin dan tidak dapat memverifikasi bahwa mereka bekerja seperti yang dimaksudkan. Periksa homepage setiap plugin untuk informasi lebih lanjut.

388</Warning>

389 

390<h3 id="add-a-marketplace-and-install-in-one-command">

391 Tambahkan marketplace dan instal dalam satu perintah

392</h3>

393 

394Untuk menginstal plugin dari marketplace yang belum Anda tambahkan, beri nama sumber marketplace dengan `--marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru.

395 

396```shell theme={null}

397/plugin install quality-review-plugin --marketplace your-org/plugins

398```

399 

400Sumber mengambil [bentuk yang sama seperti `/plugin marketplace add`](#add-marketplaces), seperti GitHub `owner/repo`, URL git, atau jalur lokal, kecuali bahwa sumber tidak dapat berisi spasi. Berikan nama plugin tanpa akhiran `@marketplace`.

401 

402Claude Code menampilkan sumber yang diselesaikannya dan meminta Anda untuk mengonfirmasi sebelum menambahkan marketplace. Menolak membatalkan instalasi dan tidak menambahkan apa pun. Setelah marketplace ditambahkan, detail plugin terbuka dan Anda memilih [cakupan instalasi](/docs/id/settings#where-settings-live). Jika sumber cocok dengan marketplace yang sudah Anda tambahkan, Claude Code melewati konfirmasi dan membuka detail plugin di marketplace tersebut.

403 

404<h2 id="manage-installed-plugins">

405 Kelola plugin yang diinstal

406</h2>

407 

408Jalankan `/plugin` dan buka tab **Installed** untuk melihat, mengaktifkan, menonaktifkan, atau menghapus plugin Anda. Daftar dikelompokkan menurut cakupan dan diurutkan sehingga Anda melihat masalah terlebih dahulu: plugin dengan kesalahan pemuatan atau dependensi yang tidak terselesaikan muncul di bagian atas, diikuti oleh favorit Anda, dengan plugin yang dinonaktifkan dilipat di belakang header yang runtuh di bagian bawah.

409 

410Dari daftar Anda dapat:

411 

412* tekan `f` untuk menandai atau menghapus tanda favorit pada plugin yang dipilih

413* ketik untuk memfilter berdasarkan nama atau deskripsi plugin

414* tekan Enter untuk membuka tampilan detail plugin dan mengaktifkan, menonaktifkan, atau menghapusnya

415 

416Claude Code juga mencantumkan [plugin yang disinkronkan dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins) dalam tab **Installed**, dengan `synced` sebagai sumbernya. Anda dapat mengaktifkan atau menonaktifkan satu di sana kecuali organisasi Anda menandainya sebagai wajib. Untuk menghapus satu, matikan di claude.ai. Plugin yang disinkronkan muncul dalam sesi terminal di Claude Code v2.1.273 atau lebih baru.

417 

418Ketika Anda menghapus plugin yang diaktifkan oleh `.claude/settings.json` proyek, Claude Code menanyakan cakupan mana yang Anda maksud: nonaktifkan untuk Anda saja, yang menulis penggantian ke `.claude/settings.local.json` Anda dan membiarkan plugin tetap diinstal untuk proyek, atau hapus untuk semua orang, yang menghapusnya dari `.claude/settings.json` bersama.

419 

420Tampilan detail menunjukkan komponen yang disumbangkan plugin: perintah, skills, agen, hooks, server MCP, dan server LSP. Inventaris yang sama tersedia dari baris perintah dengan `claude plugin details`.

421 

422Claude Code juga mencantumkan plugin marketplace yang Anda instal sendiri tetapi belum digunakan dalam setidaknya dua minggu, dalam rentang setidaknya 10 sesi, di bawah header **Not used recently** dalam tab **Installed**. Tampilan detail menunjukkan baris **Last used** untuk setiap plugin. Gunakan ini untuk menemukan plugin yang masih menambah biaya startup dan konteks meskipun Anda tidak lagi menggunakannya, kemudian nonaktifkan atau hapus.

423 

424Dua jenis plugin tidak pernah dicantumkan sebagai tidak digunakan:

425 

426* plugin yang organisasi Anda kelola atau yang Anda muat dengan `--plugin-dir`

427* plugin yang menyumbangkan tema, gaya output, monitor, atau workflow, karena mereka memberikan nilai tanpa invokasi untuk dilacak

428 

429Header **Not used recently** dan baris **Last used** keduanya disembunyikan ketika organisasi Anda membatasi marketplace dengan [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces).

430 

431[Language server](/docs/id/plugins#add-lsp-servers-to-your-plugin) plugin dihitung sebagai digunakan ketika ia memberikan diagnostik atau menjawab permintaan navigasi kode, jadi plugin LSP yang servernya aktif dalam sesi Anda tidak dicantumkan sebagai tidak digunakan. Sebelum v2.1.203, aktivitas language server tidak dapat dihitung sebagai penggunaan, jadi plugin yang menyumbangkan server LSP dikecualikan dari grup sepenuhnya, dengan cara yang sama seperti plugin tema dan gaya output masih.

432 

433Sesi pertama pada versi yang menghitung aktivitas language server juga mengatur ulang catatan penggunaan setiap plugin LSP yang belum mencatat penggunaan apa pun, jadi Claude Code tidak menilai plugin yang Anda instal sebelumnya sebagai tidak digunakan berdasarkan data yang dicatat sebelum aktivitas servernya dilacak.

434 

435Saat Anda menginstal plugin yang mendeklarasikan dependensi, output instalasi mencantumkan dependensi mana yang diinstal secara otomatis bersama dengannya.

436 

437Anda juga dapat mengelola plugin dengan perintah langsung:

438 

439* Ketika Anda menjalankan `/plugin disable`, `/plugin enable`, atau `/plugin uninstall`, Claude Code membuka panel plugin untuk menerapkan perubahan dan membiarkannya tetap terbuka. Tekan **Esc** untuk menutup panel sebelum mengetik perintah lain. [Terapkan perubahan plugin tanpa restart](#apply-plugin-changes-without-restarting) menjelaskan kapan perubahan berlaku dalam sesi Anda.

440* Untuk scripting, gunakan perintah shell `claude plugin` sebagai gantinya, yang tidak membuka panel.

441 

442Daftar plugin yang diinstal tanpa membuka menu:

443 

444```shell theme={null}

445/plugin list

446```

447 

448Lewatkan `--enabled` atau `--disabled` untuk menampilkan hanya plugin dalam status tersebut.

449 

450Nonaktifkan plugin tanpa menghapusnya:

451 

452```shell theme={null}

453/plugin disable plugin-name@marketplace-name

454```

455 

456Aktifkan kembali plugin yang dinonaktifkan:

457 

458```shell theme={null}

459/plugin enable plugin-name@marketplace-name

460```

461 

462Dalam pengenal ini, `plugin-name` adalah `name` plugin dalam [entri marketplace](/docs/id/plugin-marketplaces#plugin-entries), yang dapat berbeda dari `name` dalam `plugin.json` plugin itu sendiri.

463 

464Mulai dari Claude Code v2.1.195, **Enable** dan **Disable** dalam antarmuka `/plugin` bekerja untuk plugin yang dua namanya berbeda, dan `/plugin enable` serta `/plugin disable` menerima nama apa pun. Ketika Anda menonaktifkan plugin seperti itu dalam versi sebelumnya, Claude Code melaporkan `already disabled` dan membiarkannya tetap diaktifkan.

465 

466Hapus plugin sepenuhnya:

467 

468```shell theme={null}

469/plugin uninstall plugin-name@marketplace-name

470```

471 

472Opsi `--scope` memungkinkan Anda menargetkan cakupan tertentu dengan perintah CLI:

473 

474```shell theme={null}

475claude plugin install formatter@your-org --scope project

476claude plugin uninstall formatter@your-org --scope project

477```

478 

479<h3 id="apply-plugin-changes-without-restarting">

480 Terapkan perubahan plugin tanpa restart

481</h3>

482 

483Ketika Anda menutup menu `/plugin`, Claude Code menjalankan `/reload-plugins` untuk Anda untuk menerapkan perubahan yang Anda buat di dalamnya, seperti menginstal, mengaktifkan, menonaktifkan, dan menghapus plugin. Jika reload akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), perintah memperingatkan dan meninggalkan perubahan tertunda sebagai gantinya; jalankan `/reload-plugins --force` untuk menerapkannya bagaimanapun. Jika Claude masih merespons ketika Anda menutup menu, reload berjalan setelah respons selesai.

484 

485Untuk perubahan plugin yang terjadi di luar menu, jalankan `/reload-plugins` sendiri. Perubahan ini termasuk:

486 

487* Perintah `claude plugin` yang Anda jalankan di terminal lain

488* Edit ke plugin yang Anda muat dengan [`--plugin-dir`](/docs/id/plugins#test-your-plugins-locally) saat Anda mengembangkannya

489* Plugin [auto-update](#configure-auto-updates) yang notifikasinya meminta Anda untuk reload

490* [Sinkronisasi dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins) yang menambah, memperbarui, atau menghapus plugin dan menampilkan notifikasi yang meminta Anda untuk reload

491* Perubahan dalam folder [`--plugin-dir`](/docs/id/plugins#test-your-plugins-locally) yang Claude Code tahan karena menerapkannya akan membatalkan prompt cache

492 

493Sebelum v2.1.268, plugin yang Anda aktifkan, nonaktifkan, atau hapus di menu, dan instalasi yang tidak diaktifkan selama instalasi, tetap tertunda sampai Anda menjalankan `/reload-plugins`.

494 

495`/reload-plugins` juga berjalan dalam sesi tanpa terminal interaktif, seperti aplikasi desktop, Agent SDK, dan [mode non-interaktif](/docs/id/headless) dengan `-p`. Memerlukan Claude Code v2.1.260 atau lebih baru. Dua batasan berlaku dalam sesi tersebut:

496 

497* Perintah berjalan hanya ketika Anda mengetiknya langsung ke dalam sesi, seperti dalam prompt `-p` atau kotak prompt aplikasi desktop. Ketika Anda mengirimnya melalui koneksi jarak jauh sebagai gantinya, seperti [Remote Control](/docs/id/remote-control) atau pesan obrolan yang disalurkan, perintah menolak tanpa memuat ulang apa pun.

498* Reload tidak menghubungkan atau memutuskan server MCP plugin. Perubahan tersebut berlaku dalam sesi berikutnya Anda.

499 

500Claude Code memuat ulang semua plugin aktif dan menampilkan hitungan untuk plugin, skills, agen, hooks, server MCP plugin, dan server LSP plugin, menghilangkan hitungan server MCP plugin dalam sesi tanpa terminal interaktif. Dalam hitungan skills, Claude Code menyertakan setiap skill yang disediakan plugin: baik entri `commands/` maupun skills `SKILL.md`. Sebelum v2.1.246, Claude Code hanya menghitung entri `commands/`, jadi dapat memuat ulang skills `SKILL.md` plugin dan masih melaporkan `0 skills` dalam ringkasan.

501 

502Memuat ulang memiliki biaya token pada permintaan berikutnya: komponen yang baru dimuat mengumumkan diri mereka dalam konten yang ditambahkan ke percakapan, sementara riwayat yang ada masih membaca dari prompt cache. Plugin yang menyediakan server MCP memerlukan biaya lebih ketika alatnya tidak ditangguhkan oleh [pencarian alat](/docs/id/mcp#scale-with-mcp-tool-search): perubahan membatalkan cache dan permintaan berikutnya membaca ulang seluruh percakapan. Lihat [mengaktifkan atau menonaktifkan plugin](/docs/id/prompt-caching#enabling-or-disabling-a-plugin) untuk detail.

503 

504<h2 id="manage-marketplaces">

505 Kelola marketplace

506</h2>

507 

508Anda dapat mengelola marketplace melalui antarmuka `/plugin` interaktif atau dengan perintah CLI.

509 

510<h3 id="use-the-interactive-interface">

511 Gunakan antarmuka interaktif

512</h3>

513 

514Jalankan `/plugin` dan buka tab **Marketplaces** untuk:

515 

516* Lihat semua marketplace yang ditambahkan dengan sumber dan statusnya

517* Tambahkan marketplace baru

518* Perbarui daftar marketplace untuk mengambil plugin terbaru

519* Hapus marketplace yang tidak lagi Anda butuhkan

520 

521<h3 id="use-cli-commands">

522 Gunakan perintah CLI

523</h3>

524 

525Anda juga dapat mengelola marketplace dengan perintah langsung.

526 

527Daftar semua marketplace yang dikonfigurasi:

528 

529```shell theme={null}

530/plugin marketplace list

531```

532 

533Segarkan daftar plugin dari marketplace:

534 

535```shell theme={null}

536/plugin marketplace update marketplace-name

537```

538 

539Hapus marketplace:

540 

541```shell theme={null}

542/plugin marketplace remove marketplace-name

543```

544 

545<Warning>

546 Menghapus marketplace akan menghapus instalasi plugin apa pun yang Anda instal darinya.

547</Warning>

548 

549<h3 id="configure-auto-updates">

550 Konfigurasi auto-updates

551</h3>

552 

553Claude Code dapat secara otomatis memperbarui marketplace dan plugin yang diinstal di latar belakang setelah startup. Saat auto-update diaktifkan untuk marketplace, Claude Code menyegarkan data marketplace dan memperbarui plugin yang diinstal ke versi terbaru mereka di disk.

554 

555Claude Code memeriksa pembaruan marketplace dan plugin setelah sesi Anda dimulai, dengan penundaan acak hingga sepuluh menit, sehingga sesi yang berjalan terus menggunakan versi yang dimuat saat peluncuran. Jika ada plugin yang diperbarui, Anda akan melihat notifikasi yang meminta Anda untuk menjalankan `/reload-plugins`, atau versi baru dimuat saat peluncuran berikutnya.

556 

557Auto-update juga mengecualikan plugin yang entri marketplacenya mendeklarasikan `headersHelper`: Claude Code [tidak menjalankan perintah maupun mengunduh arsip](/docs/id/plugin-marketplaces#installs-and-updates-that-refuse-the-command-instead-of-asking) pada jalur tersebut; bagian itu mengatakan kapan Claude Code mencantumkan plugin di tab Errors `/plugin` sehingga Anda dapat memperbaruinya dari tampilan miliknya sendiri.

558 

559Claude Code memperbarui plugin yang memiliki [sumber `command`](/docs/id/plugin-marketplaces#command-sources) pada jadwal terpisah dari pengaturan auto-update marketplace dan dari `DISABLE_AUTOUPDATER`. Sebaliknya, itu [menjalankan kembali perintah sekali per sesi](/docs/id/plugin-marketplaces#when-claude-code-re-runs-the-command) dan menginstal output sebagai versi plugin baru ketika [hash](/docs/id/plugins-reference#version-management) telah berubah.

560 

561Alihkan auto-update untuk marketplace individual melalui UI:

562 

5631. Jalankan `/plugin` untuk membuka plugin manager

5642. Pilih **Marketplaces**

5653. Pilih marketplace dari daftar

5664. Pilih **Enable auto-update** atau **Disable auto-update**

567 

568`claude-plugins-official`, sebagian besar marketplace resmi Anthropic lainnya, dan [marketplace yang ditambahkan dari claude.ai](#add-from-claude-ai) memiliki auto-update diaktifkan secara default. Marketplace pihak ketiga lainnya dan marketplace pengembangan lokal memiliki auto-update dinonaktifkan secara default.

569 

570Administrator juga dapat mengatur `"autoUpdate": true` pada setiap entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dalam pengaturan terkelola untuk mengaktifkan auto-update untuk marketplace organisasi tanpa memerlukan setiap pengguna untuk mengalihkannya.

571 

572Untuk menonaktifkan pembaruan otomatis untuk Claude Code dan untuk plugin yang diambil dari marketplace, atur variabel lingkungan `DISABLE_AUTOUPDATER`. Plugin dengan [sumber `command`](/docs/id/plugin-marketplaces#command-sources) mengikuti re-resolve sekali per sesi mereka sendiri. Lihat [Auto updates](/docs/id/setup#auto-updates) untuk detail.

573 

574Untuk menjaga plugin auto-updates tetap diaktifkan sambil menonaktifkan Claude Code auto-updates, atur `FORCE_AUTOUPDATE_PLUGINS=1` bersama dengan `DISABLE_AUTOUPDATER`:

575 

576```bash theme={null}

577export DISABLE_AUTOUPDATER=1

578export FORCE_AUTOUPDATE_PLUGINS=1

579```

580 

581<h2 id="configure-team-marketplaces">

582 Konfigurasi team marketplace

583</h2>

584 

585Admin tim dapat menyiapkan instalasi marketplace otomatis untuk proyek dengan menambahkan konfigurasi marketplace ke `.claude/settings.json`. Setelah anggota tim [mempercayai folder repositori](/docs/id/permissions#what-runs-before-you-trust-a-folder), Claude Code menambahkan marketplace ini tanpa prompt lebih lanjut.

586 

587Mulai dari Claude Code v2.1.195, menambahkan marketplace tidak menginstal plugin yang berasal dari sumber eksternal, pada path apa pun yang memuat plugin. Plugin yang hanya diaktifkan oleh `.claude/settings.json` proyek, dan yang berasal dari sumber eksternal seperti repositori GitHub atau paket npm, tidak akan dimuat sampai anggota tim menginstalnya. Sampai saat itu, Claude Code melaporkan plugin sebagai tidak terinstal dan menampilkan perintah `claude plugin install` untuk dijalankan.

588 

589Tambahkan `extraKnownMarketplaces` ke `.claude/settings.json` proyek Anda:

590 

591```json theme={null}

592{

593 "extraKnownMarketplaces": {

594 "my-team-tools": {

595 "source": {

596 "source": "github",

597 "repo": "your-org/claude-plugins"

598 }

599 }

600 }

601}

602```

603 

604Untuk opsi konfigurasi lengkap termasuk `extraKnownMarketplaces` dan `enabledPlugins`, lihat [Plugin settings](/docs/id/settings-reference#plugin-settings).

605 

606<h2 id="security">

607 Security

608</h2>

609 

610Plugin dan marketplace adalah komponen yang sangat dipercaya yang dapat menjalankan kode arbitrer di mesin Anda dengan hak istimewa pengguna Anda. Hanya instal plugin dan tambahkan marketplace dari sumber yang Anda percayai. Organisasi dapat membatasi marketplace mana yang diizinkan pengguna untuk ditambahkan menggunakan [managed marketplace restrictions](/docs/id/plugin-marketplaces#managed-marketplace-restrictions).

611 

612<h2 id="troubleshooting">

613 Troubleshooting

614</h2>

615 

616<h3 id="/plugin-command-not-recognized">

617 /plugin command not recognized

618</h3>

619 

620Jika Anda melihat "unknown command" atau perintah `/plugin` tidak muncul:

621 

6221. **Periksa versi Anda**: Jalankan `claude --version` untuk melihat apa yang diinstal.

6232. **Perbarui Claude Code**:

624 * **Homebrew**: `brew upgrade claude-code`, atau `brew upgrade claude-code@latest` jika Anda menginstal cask itu

625 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`

626 * **Native installer**: Jalankan kembali perintah install dari [Setup](/docs/id/setup)

6273. **Restart Claude Code**: Setelah memperbarui, restart terminal Anda dan jalankan `claude` lagi.

628 

629<h3 id="common-issues">

630 Common issues

631</h3>

632 

633Jika plugin skills tidak muncul, hapus cache dengan `rm -rf ~/.claude/plugins/cache`, restart Claude Code, dan instal ulang plugin.

634 

635Untuk troubleshooting terperinci dengan solusi, lihat [Troubleshooting](/docs/id/plugin-marketplaces#troubleshooting) dalam panduan marketplace. Untuk tools debugging, lihat [Debugging and development tools](/docs/id/plugins-reference#debugging-and-development-tools).

636 

637<h3 id="code-intelligence-issues">

638 Code intelligence issues

639</h3>

640 

641* **Language server not starting**: Verifikasi binary diinstal dan tersedia di `$PATH` Anda. Periksa tab `/plugin` Errors untuk detail.

642* **High memory usage**: Language server seperti `rust-analyzer` dan `pyright` dapat mengonsumsi memori signifikan pada proyek besar. Jika Anda mengalami masalah memori, nonaktifkan plugin dengan `/plugin disable <plugin-name>` dan andalkan tools pencarian bawaan Claude sebagai gantinya.

643* **False positive diagnostics in monorepos**: Language server mungkin melaporkan kesalahan impor yang tidak terselesaikan untuk paket internal jika workspace tidak dikonfigurasi dengan benar. Ini tidak mempengaruhi kemampuan Claude untuk mengedit kode.

644 

645<h2 id="next-steps">

646 Langkah selanjutnya

647</h2>

648 

649* **Buat plugin Anda sendiri**: lihat [Plugins](/docs/id/plugins) untuk membuat skills, agen, dan hooks

650* **Buat marketplace**: lihat [Create a plugin marketplace](/docs/id/plugin-marketplaces) untuk mendistribusikan plugin ke tim atau komunitas Anda

651* **Referensi teknis**: lihat [Plugins reference](/docs/id/plugins-reference) untuk spesifikasi lengkap

env-vars.md +1 −1

Details

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Ketika `CLAUDE_AUTO_BACKGROUND_TASKS` diaktifkan, detik antara pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Menerima bilangan bulat biasa dari `1` hingga `86400` saja; nilai atau ejaan lain dibaca sebagai tidak diatur. Ketika tidak diatur, tidak ada pengingat check-in. Memerlukan Claude Code v2.1.248 atau lebih baru |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Ketika `CLAUDE_AUTO_BACKGROUND_TASKS` diaktifkan, detik antara pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Menerima bilangan bulat biasa dari `1` hingga `86400` saja; nilai atau ejaan lain dibaca sebagai tidak diatur. Ketika tidak diatur, tidak ada pengingat check-in. Memerlukan Claude Code v2.1.248 atau lebih baru |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) dalam token, dari `100000` hingga `1000000`. Menerima bilangan bulat biasa seperti `500000` saja: nilai seperti `500k` dibaca sebagai `500` dan dijepit ke minimum 100K. Jendela efektif juga dibatasi pada jendela konteks model. Mengambil prioritas di atas perintah `/autocompact`, flag `--autocompact`, dan pengaturan `autoCompactWindow`. Persentase `used_percentage` status line selalu diukur terhadap jendela konteks penuh model, jadi setelah variabel ini diatur, persentase itu tidak lagi menunjukkan kapan compaction akan berjalan |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) dalam token, dari `100000` hingga `1000000`. Menerima bilangan bulat biasa seperti `500000` saja: nilai seperti `500k` dibaca sebagai `500` dan dijepit ke minimum 100K. Jendela efektif juga dibatasi pada jendela konteks model. Mengambil prioritas di atas perintah `/autocompact`, flag `--autocompact`, dan pengaturan `autoCompactWindow`. Persentase `used_percentage` status line selalu diukur terhadap jendela konteks penuh model, jadi setelah variabel ini diatur, persentase itu tidak lagi menunjukkan kapan compaction akan berjalan |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/docs/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis ketika diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi ketika auto-deteksi gagal, seperti ketika tmux mengaburkan terminal induk. Mengambil prioritas di atas pengaturan konfigurasi global [`autoConnectIde`](/docs/id/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/docs/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis ketika diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi ketika auto-deteksi gagal, seperti ketika tmux mengaburkan terminal induk. Mengambil prioritas di atas pengaturan konfigurasi global [`autoConnectIde`](/docs/id/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan mode otomatis](/docs/id/permission-modes#server-side-classifier-review). Ketika tidak diatur, Claude Code meminta server di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan Claude Platform on AWS, dan ketika Anda menunjuk `ANTHROPIC_BASE_URL` ke gateway LLM atau proxy. Atur ke `0` untuk menggunakan permintaan pengklasifikasi Claude Code sendiri sebagai gantinya. Tidak dibaca pada koneksi langsung ke API Anthropic. Memerlukan Claude Code v2.1.271 atau lebih baru; meminta server secara default memerlukan v2.1.278 atau lebih baru |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan mode otomatis](/docs/id/permission-modes#server-side-classifier-review). Atur ke `0` untuk menggunakan permintaan pengklasifikasi Claude Code sendiri sebagai gantinya. Pada koneksi langsung ke API Anthropic, memerlukan v2.1.281 atau lebih baru. Bagian yang ditautkan mencantumkan sesi mana yang meminta server ketika variabel tidak diatur, dan dari versi mana. Memerlukan Claude Code v2.1.271 atau lebih baru |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Waktu dalam milidetik Claude Code menunggu rantai penyedia kredensial default AWS menghasilkan kredensial sebelum permintaan gagal dengan [`AWS default-chain credential resolve timed out`](/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan ketika langkah dalam rantai Anda secara sah membutuhkan lebih lama, seperti masuk SSO berbasis browser dengan MFA melalui pembungkus seperti `aws-vault`. Berlaku di mana pun Claude Code menandatangani dengan rantai default: [Amazon Bedrock](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Memerlukan Claude Code v2.1.207 atau lebih baru |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Waktu dalam milidetik Claude Code menunggu rantai penyedia kredensial default AWS menghasilkan kredensial sebelum permintaan gagal dengan [`AWS default-chain credential resolve timed out`](/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan ketika langkah dalam rantai Anda secara sah membutuhkan lebih lama, seperti masuk SSO berbasis browser dengan MFA melalui pembungkus seperti `aws-vault`. Berlaku di mana pun Claude Code menandatangani dengan rantai default: [Amazon Bedrock](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Memerlukan Claude Code v2.1.207 atau lebih baru |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Atur ke `0` untuk menonaktifkan [diff dari file yang perintah Bash ubah](/docs/id/hooks#bash), atau `1` untuk mencatatnya dalam setiap mode izin. Mengambil prioritas di atas pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled). Memerlukan Claude Code v2.1.269 atau lebih baru |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Atur ke `0` untuk menonaktifkan [diff dari file yang perintah Bash ubah](/docs/id/hooks#bash), atau `1` untuk mencatatnya dalam setiap mode izin. Mengambil prioritas di atas pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled). Memerlukan Claude Code v2.1.269 atau lebih baru |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Atur ke `0` untuk membuat sesi non-interaktif melaporkan status idle ke host-nya di setiap akhir giliran, bahkan saat pekerjaan latar belakang masih berjalan. Secara default, sesi terus melaporkan status berjalan melampaui akhir giliran saat pekerjaan latar belakang seperti agent latar belakang atau [alur kerja](/docs/id/workflows) masih aktif. Ini membuat host yang memantau status, seperti daftar sesi jarak jauh, dari mengumumkan bahwa Claude menunggu input Anda di tengah pekerjaan. Perintah shell latar belakang, seperti server dev, tidak menahan status berjalan. Default status berjalan dan opt-out `0` memerlukan Claude Code v2.1.269 atau lebih baru; di versi yang lebih awal, atur `1` untuk menahan status berjalan |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Atur ke `0` untuk membuat sesi non-interaktif melaporkan status idle ke host-nya di setiap akhir giliran, bahkan saat pekerjaan latar belakang masih berjalan. Secara default, sesi terus melaporkan status berjalan melampaui akhir giliran saat pekerjaan latar belakang seperti agent latar belakang atau [alur kerja](/docs/id/workflows) masih aktif. Ini membuat host yang memantau status, seperti daftar sesi jarak jauh, dari mengumumkan bahwa Claude menunggu input Anda di tengah pekerjaan. Perintah shell latar belakang, seperti server dev, tidak menahan status berjalan. Default status berjalan dan opt-out `0` memerlukan Claude Code v2.1.269 atau lebih baru; di versi yang lebih awal, atur `1` untuk menahan status berjalan |

errors.md +146 −17

Details

36| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |36| `Auto mode could not evaluate this action and is blocking it for safety` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

37| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |37| `Auto mode classifier transcript exceeded context window` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Server errors](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `The server-side auto mode classifier gave no verdict` | [Server errors](#the-server-returned-no-safety-verdict) |

40| `Auto mode is unavailable — the server returned no safety verdict for the last 10 responses` | [Server errors](#the-server-returned-no-safety-verdict) |

39| `Agent terminated early due to an API error` | [Server errors](#agent-terminated-early-due-to-an-api-error) |41| `Agent terminated early due to an API error` | [Server errors](#agent-terminated-early-due-to-an-api-error) |

40| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Usage limits](#youve-hit-your-session-limit) |42| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Usage limits](#youve-hit-your-session-limit) |

41| `Usage credits required for 1M context` | [Usage limits](#usage-credits-required-for-1m-context) |43| `Usage credits required for 1M context` | [Usage limits](#usage-credits-required-for-1m-context) |


154| `API Error: 400 orphaned tool_result in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |156| `API Error: 400 orphaned tool_result in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |

155| `API Error: 400 duplicate tool_use ID in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |157| `API Error: 400 duplicate tool_use ID in conversation history` | [Request errors](#tool-use-or-thinking-block-mismatch) |

156| `[Unsupported tool content removed]` | [Request errors](#unsupported-tool-content-removed) |158| `[Unsupported tool content removed]` | [Request errors](#unsupported-tool-content-removed) |

159| `role 'system' must precede an 'assistant' message` | [Request errors](#role-system-must-precede-an-assistant-message) |

160| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Request errors](#invalid-encrypted-content-in-search-result-block) |

157| `server_tool_use.name: Input should be` pada setiap putaran sesi yang dilanjutkan | [Request errors](#unsupported-tool-content-removed) |161| `server_tool_use.name: Input should be` pada setiap putaran sesi yang dilanjutkan | [Request errors](#unsupported-tool-content-removed) |

158| `<model> can't help with this. Start a new session to continue` | [Request errors](#usage-policy-refusal) |162| `<model> can't help with this. Start a new session to continue` | [Request errors](#usage-policy-refusal) |

159| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |163| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |


171| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |175| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |

172| `Error: Settings file exceeds the 2MiB limit` | [Command-line errors](#settings-file-exceeds-the-2mib-limit) |176| `Error: Settings file exceeds the 2MiB limit` | [Command-line errors](#settings-file-exceeds-the-2mib-limit) |

173| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Command-line errors](#the-current-directory-no-longer-exists) |177| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Command-line errors](#the-current-directory-no-longer-exists) |

178| `Temp directory <dir> ... Refusing to use it` / `ENOSPC: no space left on device, mkdir '<dir>'` | [Command-line errors](#temp-directory-refused-or-cannot-be-created) |

174| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Command-line errors](#directory-couldnt-be-resolved-to-a-real-location) |179| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Command-line errors](#directory-couldnt-be-resolved-to-a-real-location) |

175| `Error: Workspace not trusted` saat memulai Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) |180| `Error: Workspace not trusted` saat memulai Remote Control | [Command-line errors](#workspace-not-trusted-when-starting-remote-control) |

176| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |181| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |


214| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |219| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |

215| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |220| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |

216| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |221| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |

222| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin errors](#marketplace-name-is-another-spelling-of-a-reserved-name) |

217| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |223| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |

218| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Plugin errors](#plugin-command-references-user-config) |224| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Plugin errors](#plugin-command-references-user-config) |

219| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) |225| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) |


566* Dalam sesi interaktif, setujui atau tolak tindakan dalam prompt yang muncul572* Dalam sesi interaktif, setujui atau tolak tindakan dalam prompt yang muncul

567* Dalam sesi interaktif, jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya cocok dalam jendela pengklasifikasi lagi573* Dalam sesi interaktif, jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya cocok dalam jendela pengklasifikasi lagi

568 574 

575<h3 id="the-server-returned-no-safety-verdict">

576 The server returned no safety verdict

577</h3>

578 

579Di bawah [server-side classifier review](/docs/id/permission-modes#server-side-classifier-review), auto mode menolak tindakan ketika server tidak memberikan putusan untuk itu. Penolakan menyebutkan kategori dalam tanda kurung ketika Claude Code dapat menentukan satu, seperti `(timed out)`:

580 

581```text theme={null}

582The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

583```

584 

585Sisa pesan memberi tahu Claude apakah satu percobaan ulang dapat membantu. Sebelum beberapa penolakan ini, Claude Code menunggu sehingga upaya Claude berikutnya tidak mengikuti sekaligus. Selama tunggu dalam sesi interaktif, spinner menunjukkan `Auto mode check unavailable` dengan hitungan mundur, dan menekan `Esc` mengganggu giliran.

586 

587Setelah sepuluh respons berturut-turut tanpa putusan, auto mode menghentikan giliran:

588 

589```text theme={null}

590Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.

591```

592 

593Pesan berhenti muncul di tempat yang berbeda dalam setiap jenis sesi:

594 

595* Dalam sesi interaktif, pesan muncul sebagai peringatan dalam transkrip dan giliran berakhir

596* Dalam run `-p` [non-interactive](/docs/id/headless), run berakhir dan melaporkan kesalahan eksekusi. Dengan output teks default, pesan mencetak di stderr.

597* Ketika [subagent](/docs/id/sub-agents) mencapai batas, subagent berhenti sebelum selesai, dan Claude menerima apa pun yang dihasilkan dengan catatan bahwa auto mode menghentikannya

598 

599**Yang harus dilakukan:**

600 

601* Kirim pesan lain untuk membuat Claude mencoba lagi. Hitungan respons dimulai dari awal.

602* Jika berhenti terulang dan permintaan Anda melewati [LLM gateway or proxy](/docs/id/llm-gateway), periksa apakah itu memotong respons streaming pendek atau menulis ulangnya. [Server-side classifier review](/docs/id/permission-modes#server-side-classifier-review) mengatakan perilaku gateway mana yang menyebabkan penolakan, dan [gateway compatibility guide](/docs/id/llm-gateway-protocol#feature-pass-through) mencantumkan apa yang harus dilewatkan tanpa perubahan.

603* Atur `CLAUDE_CODE_AUTO_MODE_SERVER=0` sebelum Anda memulai Claude Code untuk menggunakan permintaan pengklasifikasi miliknya sendiri. Sebelum v2.1.281, Claude Code tidak membaca variabel pada koneksi langsung ke Anthropic API.

604* Untuk menyetujui tindakan sendiri, [switch out of auto mode](/docs/id/permission-modes#switch-permission-modes)

605 

606Sebelum v2.1.280, Claude Code menolak setiap tindakan dari respons tanpa putusan segera dan tidak pernah menghentikan giliran.

607 

569<h3 id="agent-terminated-early-due-to-an-api-error">608<h3 id="agent-terminated-early-due-to-an-api-error">

570 Agent terminated early due to an API error609 Agent terminated early due to an API error

571</h3>610</h3>


2393* Tidak ada yang diperlukan ketika Anda melihat baris placeholder. Sesi berlanjut tanpa konten yang dihapus.2432* Tidak ada yang diperlukan ketika Anda melihat baris placeholder. Sesi berlanjut tanpa konten yang dihapus.

2394* Jika setiap giliran sesi yang dilanjutkan gagal dengan kesalahan 400 sebagai gantinya, jalankan `claude update` dan lanjutkan sesi lagi. Versi sebelum v2.1.246 tidak menghapus konten.2433* Jika setiap giliran sesi yang dilanjutkan gagal dengan kesalahan 400 sebagai gantinya, jalankan `claude update` dan lanjutkan sesi lagi. Versi sebelum v2.1.246 tidak menghapus konten.

2395 2434 

2435<h3 id="role-system-must-precede-an-assistant-message">

2436 role 'system' harus mendahului pesan 'assistant'

2437</h3>

2438 

2439API menolak permintaan dengan 400 karena pesan sistem duduk pada posisi dalam percakapan yang tidak diterimanya:

2440 

2441```text theme={null}

2442API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

2443```

2444 

2445Claude Code mengirim beberapa teks pengingat dan lampiran sebagai pesan sistem di dalam percakapan. Ketika API menolak posisi satu, Claude Code mencoba ulang permintaan sekali dengan teks itu dikirim sebagai pesan pengguna biasa sebagai gantinya. Pesan penempatan saudara API, seperti `use the top-level 'system' parameter for the initial system prompt`, mendapatkan pemulihan yang sama.

2446 

2447Ketika kesalahan muncul, pesan sistem yang ditolak bukan yang dapat dihapus Claude Code. Itu biasanya berarti proxy atau [gateway LLM](/docs/id/llm-gateway) antara Claude Code dan API menambahkan pesan sistem mereka sendiri atau mengurutkan ulang percakapan.

2448 

2449**Yang harus dilakukan:**

2450 

2451* Jalankan `/clear` untuk memulai percakapan segar. Jika kesalahan kembali di sana juga, penyebabnya ada di jalur permintaan, bukan di percakapan yang disimpan.

2452* Jika kesalahan berulang pada setiap giliran di belakang proxy atau gateway yang dikonfigurasi melalui [`ANTHROPIC_BASE_URL`](/docs/id/env-vars), terhubung tanpa proxy untuk mengkonfirmasi sumber, dan laporkan kesalahan ke siapa pun yang mengoperasikannya

2453 

2454Sebelum v2.1.280, Claude Code tidak mengenali pesan ini, jadi kesalahan juga muncul ketika pesan sistem yang ditolak adalah yang dikirim Claude Code sendiri, dan setiap giliran percakapan kemudian gagal dengan cara yang sama.

2455 

2456<h3 id="invalid-encrypted-content-in-search-result-block">

2457 Encrypted\_content tidak valid dalam blok search\_result

2458</h3>

2459 

2460API menolak permintaan dengan 400 karena riwayat percakapan menyimpan konten pencarian web yang dihosting yang tidak dapat didekripsi. Pesan menyebutkan bidang yang tidak dapat dibacanya:

2461 

2462```text theme={null}

2463API Error: 400 messages.21.content.0: Invalid `encrypted_content` in `search_result` block

2464API Error: 400 messages.21.content.3.citations.0: Invalid `encrypted_index` in `text` block

2465API Error: 400 Failed to decrypt web search result content

2466```

2467 

2468Hasil dari [alat pencarian web](/docs/id/tools-reference#websearch-tool-behavior) yang dihosting API membawa bidang terenkripsi yang hanya dapat dibaca API. API menolak permintaan yang memutar ulang konten yang tidak dapat didekripsi, seperti konten yang diproduksi untuk organisasi berbeda.

2469 

2470Alat [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) Claude Code sendiri mencatat hasil pencarian sebagai teks biasa, jadi blok ini biasanya mencapai percakapan melalui proxy atau [gateway LLM](/docs/id/llm-gateway) yang menjalankan pencarian web yang dihosting itu sendiri.

2471 

2472Blok yang ditolak tetap berada dalam riwayat percakapan, jadi setiap giliran kemudian dan `/compact` gagal dengan cara yang sama.

2473 

2474**Yang harus dilakukan:**

2475 

2476* Jalankan `/clear` atau mulai sesi baru; percakapan baru tidak membawa blok yang ditolak

2477* Jika Anda menjalankan Claude Code di belakang proxy atau gateway, laporkan kesalahan ke siapa pun yang mengoperasikannya

2478 

2396<h3 id="usage-policy-refusal">2479<h3 id="usage-policy-refusal">

2397 Penolakan Kebijakan Penggunaan2480 Penolakan Kebijakan Penggunaan

2398</h3>2481</h3>


2629* Jika direktori dibuat kembali di jalur yang sama, shell Anda masih memegang yang dihapus. Jalankan `cd "$PWD"` atau tinggalkan dan masuki kembali direktori, kemudian jalankan `claude` lagi2712* Jika direktori dibuat kembali di jalur yang sama, shell Anda masih memegang yang dihapus. Jalankan `cd "$PWD"` atau tinggalkan dan masuki kembali direktori, kemudian jalankan `claude` lagi

2630* Untuk `EPERM` di macOS, keluar dari aplikasi terminal Anda dengan Cmd+Q, buka lagi, kembali ke folder itu, dan jalankan `claude`. Jika `ls` di folder itu masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder untuk aplikasi terminal Anda, kemudian buka kembali terminal2713* Untuk `EPERM` di macOS, keluar dari aplikasi terminal Anda dengan Cmd+Q, buka lagi, kembali ke folder itu, dan jalankan `claude`. Jika `ls` di folder itu masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder untuk aplikasi terminal Anda, kemudian buka kembali terminal

2631 2714 

2715<h3 id="temp-directory-refused-or-cannot-be-created">

2716 Direktori temp ditolak atau tidak dapat dibuat

2717</h3>

2718 

2719Di macOS dan Linux, Claude Code membuat direktori temp pribadi saat startup, `claude-<uid>` di bawah direktori temp sistem atau override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars). Ketika direktori tidak dapat dibuat, atau entri yang sudah ada di jalur itu gagal pemeriksaan keamanan, Claude Code mencetak kegagalan ke stderr dan keluar dengan kode 1 daripada memulai sesi:

2720 

2721```text wrap theme={null}

2722ENOSPC: no space left on device, mkdir '/tmp/claude-501'

2723 

2724Temp directory /tmp/claude-501 is not a directory (may be an attacker-planted symlink). Refusing to use it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2725 

2726Temp directory /tmp/claude-501 is owned by uid 502, expected 501. Refusing to use it — another user may have pre-created it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2727 

2728Temp directory /tmp/claude-501 is not readable (its mode may have been altered, or a path component denies search). Refusing to use it — restore its permissions (chmod 0700) or remove it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2729```

2730 

2731**Yang harus dilakukan:**

2732 

2733* Untuk `ENOSPC`, bebaskan ruang disk di volume yang menyimpan direktori temp

2734* Untuk bentuk `Refusing to use it`, hapus entri yang disebutkan itu sendiri, bukan apa yang ditunjuk link, dan mulai Claude Code lagi; untuk bentuk `owned by uid`, hanya administrator atau pengguna itu yang dapat menghapusnya

2735* Untuk `is not readable`, jalankan `chmod 0700` di direktori yang disebutkan, atau hapus dan mulai lagi

2736* Dalam kasus apa pun, atur [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) ke direktori yang Anda kontrol dan mulai Claude Code lagi, meninggalkan jalur yang ditolak sendirian

2737 

2632<h3 id="directory-couldnt-be-resolved-to-a-real-location">2738<h3 id="directory-couldnt-be-resolved-to-a-real-location">

2633 Direktori tidak dapat diselesaikan ke lokasi nyata2739 Direktori tidak dapat diselesaikan ke lokasi nyata

2634</h3>2740</h3>


2824 2930 

2825**Yang harus dilakukan:**2931**Yang harus dilakukan:**

2826 2932 

2827* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan konfirmasi server terdaftar sebagai terhubung2933* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan konfirmkan server terdaftar sebagai terhubung

2828* Konfirmkan nama alat cocok dengan nama `mcp__<server>__<tool>` yang server ekspos2934* Konfirmkan nama alat cocok dengan nama `mcp__<server>__<tool>` yang server ekspos

2829* Jika server memerlukan lebih lama dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)2935* Jika server memerlukan lebih lama dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)

2830 2936 


2872```text theme={null}2978```text theme={null}

2873Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]2979Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]

2874fatal: ambiguous argument 'origin/HEAD...': unknown revision or path not in the working tree.2980fatal: ambiguous argument 'origin/HEAD...': unknown revision or path not in the working tree.

2875Use '---- to separate paths from revisions, like this:2981Use '--' to separate paths from revisions, like this:

2876'git <command> [<revision>...] -- [<file>...]'2982'git <command> [<revision>...] -- [<file>...]'

2877```2983```

2878 2984 


2954 3060 

2955* Typo, seperti `/hepl` untuk `/help`. [How the command menu matches what you type](/docs/id/commands#how-the-command-menu-matches-what-you-type) mencakup memilih kecocokan dekat sebelum Anda kirimkan3061* Typo, seperti `/hepl` untuk `/help`. [How the command menu matches what you type](/docs/id/commands#how-the-command-menu-matches-what-you-type) mencakup memilih kecocokan dekat sebelum Anda kirimkan

2956* Perintah yang ada tetapi tidak tersedia dalam sesi ini karena persyaratan tidak terpenuhi, seperti platform, rencana, atau metode autentikasi Anda. Entri pemecahan masalah untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) memandu dua kasus umum. Beberapa perintah menjawab dengan pesan mereka sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3062* Perintah yang ada tetapi tidak tersedia dalam sesi ini karena persyaratan tidak terpenuhi, seperti platform, rencana, atau metode autentikasi Anda. Entri pemecahan masalah untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) memandu dua kasus umum. Beberapa perintah menjawab dengan pesan mereka sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

2957* Perintah dari [plugin](/docs/id/plugins) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau terhubung dalam sesi ini3063* Perintah dari [plugin](/docs/id/plugins/overview) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau terhubung dalam sesi ini

2958 3064 

2959Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Dalam setiap sesi lain, mengirimkan prompt ke Claude sebagai pesan normal sebagai gantinya, dengan catatan bahwa perintah tidak berjalan dan daftar perintah Claude dapat jalankan dalam sesi. Sesi itu termasuk:3065Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Dalam setiap sesi lain, mengirimkan prompt ke Claude sebagai pesan normal sebagai gantinya, dengan catatan bahwa perintah tidak berjalan dan daftar perintah Claude dapat jalankan dalam sesi. Sesi itu termasuk:

2960 3066 


3284 Kesalahan plugin3390 Kesalahan plugin

3285</h2>3391</h2>

3286 3392 

3287Kesalahan ini berasal dari konfigurasi [plugin](/docs/id/plugins) dan [marketplace](/docs/id/plugin-marketplaces). Untuk masalah plugin yang tidak menghasilkan salah satu pesan di halaman ini, seperti URL marketplace yang tidak memuat atau plugin yang terpasang tetapi tidak muncul, lihat [Pemecahan masalah plugin](/docs/id/discover-plugins#troubleshooting).3393Kesalahan ini berasal dari konfigurasi [plugin](/docs/id/plugins/overview) dan [marketplace](/docs/id/plugins/overview). Untuk masalah plugin yang tidak menghasilkan salah satu pesan di halaman ini, seperti URL marketplace yang tidak memuat atau plugin yang terpasang tetapi tidak muncul, lihat [Pemecahan masalah plugin](/docs/id/plugins/troubleshooting).

3288 3394 

3289<h3 id="plugin-eval-is-currently-in-early-access">3395<h3 id="plugin-eval-is-currently-in-early-access">

3290 plugin eval is currently in early access3396 plugin eval is currently in early access


3311 Marketplace is registered from an untrusted source3417 Marketplace is registered from an untrusted source

3312</h3>3418</h3>

3313 3419 

3314Marketplace terdaftar dengan nama yang [dicadangkan untuk marketplace Anthropic resmi](/docs/id/plugin-marketplaces#marketplace-schema), tetapi sumber terdaftarnya bukan repositori GitHub `anthropics`. Claude Code memeriksa ulang nama yang dicadangkan setiap kali memuat atau menyegarkan marketplace, sehingga marketplace dan plugin yang dipasang darinya berhenti memuat. Sebelum v2.1.205, nama hanya diperiksa ketika marketplace ditambahkan, jadi entri yang terdaftar sebelum namanya dicadangkan terus memuat.3420Marketplace terdaftar dengan nama yang [dicadangkan untuk marketplace Anthropic resmi](/docs/id/plugins/marketplace-reference#marketplace-file), tetapi sumber terdaftarnya bukan repositori GitHub `anthropics`. Claude Code memeriksa ulang nama yang dicadangkan setiap kali memuat atau menyegarkan marketplace, sehingga marketplace dan plugin yang dipasang darinya berhenti memuat. Sebelum v2.1.205, nama hanya diperiksa ketika marketplace ditambahkan, jadi entri yang terdaftar sebelum namanya dicadangkan terus memuat.

3315 3421 

3316```text theme={null}3422```text theme={null}

3317Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.3423Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.


3323 3429 

3324* Jika marketplace sudah terdaftar, jalankan `claude plugin marketplace remove <name>`, kemudian tambahkan lagi dari repositori `github.com/anthropics` resmi3430* Jika marketplace sudah terdaftar, jalankan `claude plugin marketplace remove <name>`, kemudian tambahkan lagi dari repositori `github.com/anthropics` resmi

3325* Jika Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum dicadangkan, ubah namanya dan minta pengguna untuk menambahkannya kembali dari sumber Anda3431* Jika Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum dicadangkan, ubah namanya dan minta pengguna untuk menambahkannya kembali dari sumber Anda

3326* Lihat daftar nama yang dicadangkan di bawah [Marketplace schema](/docs/id/plugin-marketplaces#marketplace-schema)3432* Lihat daftar nama yang dicadangkan di bawah [Marketplace schema](/docs/id/plugins/marketplace-reference#marketplace-file)

3433 

3434<h3 id="marketplace-name-is-another-spelling-of-a-reserved-name">

3435 Marketplace name is another spelling of a reserved name

3436</h3>

3437 

3438Nama marketplace bukan sendiri nama yang dicadangkan, tetapi Claude Code memperlakukannya sebagai ejaan lain dari satu. [Reserved names](/docs/id/plugins/marketplace-reference#reserved-name-spellings) mencantumkan ejaan mana yang dihitung sebagai nama yang dicadangkan. Claude Code menolak nama seperti itu ketika Anda menambahkan marketplace:

3439 

3440```text theme={null}

3441Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.

3442```

3443 

3444Ketika marketplace sudah terdaftar dengan nama seperti itu, entrinya berhenti memuat, dan `/plugin`, `claude plugin install`, dan `claude plugin update` memperingatkan:

3445 

3446```text wrap theme={null}

3447known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins

3448```

3449 

3450Ketika nama memerlukan quoting shell, penolakan saat penambahan berbunyi `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`

3451 

3452**Yang harus dilakukan:**

3453 

3454* Ubah nama marketplace menjadi nama yang tidak mengeja nama yang dicadangkan dan tambahkan lagi

3455* Untuk peringatan entri yang diabaikan, jalankan perintah `claude plugin marketplace remove` yang diberikannya, atau hapus entri dari `~/.claude/plugins/known_marketplaces.json`

3327 3456 

3328<h3 id="marketplace-is-already-added-from-a-different-source">3457<h3 id="marketplace-is-already-added-from-a-different-source">

3329 Marketplace is already added from a different source3458 Marketplace is already added from a different source

3330</h3>3459</h3>

3331 3460 

3332Anda mengonfirmasi penambahan marketplace melalui [`/plugin install <plugin> --marketplace <source>`](/docs/id/discover-plugins#add-a-marketplace-and-install-in-one-command), dan katalog yang Claude Code ambil dari sumber itu menamai dirinya sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada daripada menggantinya, dan plugin tidak terpasang.3461Anda mengonfirmasi penambahan marketplace melalui [`/plugin install <plugin> --marketplace <source>`](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dan katalog yang Claude Code ambil dari sumber itu menamai dirinya sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada daripada menggantinya, dan plugin tidak terpasang.

3333 3462 

3334```text theme={null}3463```text theme={null}

3335Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.3464Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


3344 Plugin command references user\_config in a shell command3473 Plugin command references user\_config in a shell command

3345</h3>3474</h3>

3346 3475 

3347Hook plugin, [monitor](/docs/id/plugins-reference#monitors), atau perintah MCP [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) mereferensikan opsi `${user_config.KEY}` [plugin](/docs/id/plugins-reference#user-configuration), dan string yang disubstitusi akan diteruskan ke shell. Nilai yang dikonfigurasi berisi `$(...)`, backtick, atau `;` akan berjalan sebagai kode di sana, jadi Claude Code menolak untuk memulai komponen daripada mensubstitusi nilai. Pemeriksaan berjalan pada template perintah, jadi kesalahan muncul bahkan ketika tidak ada nilai yang dikonfigurasi. Sebelum v2.1.207, nilai disubstitusi ke dalam perintah shell.3476Hook plugin, [monitor](/docs/id/plugins/components#monitors), atau perintah MCP [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) mereferensikan opsi `${user_config.KEY}` [plugin](/docs/id/plugins/manifest-reference#user-configuration), dan string yang disubstitusi akan diteruskan ke shell. Nilai yang dikonfigurasi berisi `$(...)`, backtick, atau `;` akan berjalan sebagai kode di sana, jadi Claude Code menolak untuk memulai komponen daripada mensubstitusi nilai. Pemeriksaan berjalan pada template perintah, jadi kesalahan muncul bahkan ketika tidak ada nilai yang dikonfigurasi. Sebelum v2.1.207, nilai disubstitusi ke dalam perintah shell.

3348 3477 

3349Kata-katanya tergantung pada permukaan mana yang mereferensikan opsi. Hook bentuk shell melaporkan:3478Kata-katanya tergantung pada permukaan mana yang mereferensikan opsi. Hook bentuk shell melaporkan:

3350 3479 


3374 Plugin archive integrity check failed3503 Plugin archive integrity check failed

3375</h3>3504</h3>

3376 3505 

3377Entri marketplace plugin menggunakan sumber [`archive`](/docs/id/plugin-marketplaces#zip-archives) dengan pin `sha256`, dan digest file yang diunduh tidak cocok dengan pin. Claude Code menolak instalasi, jadi tidak ada yang berubah dalam cache plugin. Ketidakcocokan memiliki tiga kemungkinan penyebab:3506Entri marketplace plugin menggunakan sumber [`archive`](/docs/id/plugins/marketplace-reference#archive-plugin-source) dengan pin `sha256`, dan digest file yang diunduh tidak cocok dengan pin. Claude Code menolak instalasi, jadi tidak ada yang berubah dalam cache plugin. Ketidakcocokan memiliki tiga kemungkinan penyebab:

3378 3507 

3379* File di URL berubah setelah penulis menghitung pin3508* File di URL berubah setelah penulis menghitung pin

3380* Penulis memasukkan digest yang salah di entri marketplace3509* Penulis memasukkan digest yang salah di entri marketplace


3394 Path escapes plugin directory3523 Path escapes plugin directory

3395</h3>3524</h3>

3396 3525 

3397Jalur komponen plugin, yang dideklarasikan dalam `plugin.json` plugin atau dalam [entri marketplace](/docs/id/plugin-marketplaces#plugin-entries), diselesaikan di luar direktori plugin itu sendiri. Claude Code menghapus jalur itu dan memuat sisa plugin. Nama komponen dalam pesan, seperti `commands` atau `hooks`, menamai bidang yang mendeklarasikan jalur.3526Jalur komponen plugin, yang dideklarasikan dalam `plugin.json` plugin atau dalam [entri marketplace](/docs/id/plugins/marketplace-reference#plugin-entries), diselesaikan di luar direktori plugin itu sendiri. Claude Code menghapus jalur itu dan memuat sisa plugin. Nama komponen dalam pesan, seperti `commands` atau `hooks`, menamai bidang yang mendeklarasikan jalur.

3398 3527 

3399```text theme={null}3528```text theme={null}

3400commands path escapes plugin directory: ./../shared.md3529commands path escapes plugin directory: ./../shared.md


3402 3531 

3403Dalam output perintah `claude plugin`, kesalahan yang sama berbunyi `Path escapes plugin directory: ./../shared.md (commands)`.3532Dalam output perintah `claude plugin`, kesalahan yang sama berbunyi `Path escapes plugin directory: ./../shared.md (commands)`.

3404 3533 

3405Claude Code menolak baik jalur yang menunjuk di luar plugin seperti yang ditulis, seperti `../shared-utils`, dan symlink yang mengarah di luar plugin dan bukan salah satu yang [aturan symlink marketplace](/docs/id/plugins-reference#share-files-within-a-marketplace-with-symlinks) izinkan. Untuk symlink, pesan juga mengatakan di mana jalur diselesaikan:3534Claude Code menolak baik jalur yang menunjuk di luar plugin seperti yang ditulis, seperti `../shared-utils`, dan symlink yang mengarah di luar plugin dan bukan salah satu yang [aturan symlink marketplace](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) izinkan. Untuk symlink, pesan juga mengatakan di mana jalur diselesaikan:

3406 3535 

3407```text theme={null}3536```text theme={null}

3408commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory3537commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory


3423* Pindahkan file yang direferensikan ke dalam direktori plugin dan arahkan jalur ke sana dengan jalur relatif `./`3552* Pindahkan file yang direferensikan ke dalam direktori plugin dan arahkan jalur ke sana dengan jalur relatif `./`

3424* Jika jalur adalah symlink ke file di luar plugin, ganti symlink dengan salinan file3553* Jika jalur adalah symlink ke file di luar plugin, ganti symlink dengan salinan file

3425* Jika pesan mengatakan jalur berisi backslash, tulis jalur dengan garis miring maju, misalnya `./commands/deploy.md`3554* Jika pesan mengatakan jalur berisi backslash, tulis jalur dengan garis miring maju, misalnya `./commands/deploy.md`

3426* Untuk berbagi file dengan plugin lain di marketplace yang sama, tautkan dengan symlink di dalam direktori plugin, mengikuti [aturan symlink](/docs/id/plugins-reference#share-files-within-a-marketplace-with-symlinks)3555* Untuk berbagi file dengan plugin lain di marketplace yang sama, tautkan dengan symlink di dalam direktori plugin, mengikuti [aturan symlink](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

3427 3556 

3428<h3 id="path-could-not-be-checked">3557<h3 id="path-could-not-be-checked">

3429 Path could not be checked3558 Path could not be checked


3431 3560 

3432Claude Code menanyakan sistem operasi apakah jalur plugin ada dan mendapat kesalahan selain "tidak ditemukan", jadi tidak memuat apa yang dinamai jalur. Berapa banyak plugin yang memuat tergantung pada jalur mana yang gagal:3561Claude Code menanyakan sistem operasi apakah jalur plugin ada dan mendapat kesalahan selain "tidak ditemukan", jadi tidak memuat apa yang dinamai jalur. Berapa banyak plugin yang memuat tergantung pada jalur mana yang gagal:

3433 3562 

3434* Salah satu dari [lokasi komponen default](/docs/id/plugins-reference#file-locations-reference) plugin, seperti folder `skills/`, file `monitors/monitors.json`, atau [`SKILL.md` di root plugin](/docs/id/plugins-reference#skills): komponen lain plugin masih memuat3563* Salah satu dari [lokasi komponen default](/docs/id/plugins/manifest-reference#standard-layout) plugin, seperti folder `skills/`, file `monitors/monitors.json`, atau [`SKILL.md` di root plugin](/docs/id/plugins/components#skills): komponen lain plugin masih memuat

3435* Direktori plugin itu sendiri: tidak ada yang memuat dari plugin itu3564* Direktori plugin itu sendiri: tidak ada yang memuat dari plugin itu

3436 3565 

3437Anda tidak melihat kesalahan ini untuk jalur yang tidak ada sama sekali. Di `/plugin`, kesalahan muncul di bawah plugin dan menamai jalur dan kode yang dikembalikan sistem operasi:3566Anda tidak melihat kesalahan ini untuk jalur yang tidak ada sama sekali. Di `/plugin`, kesalahan muncul di bawah plugin dan menamai jalur dan kode yang dikembalikan sistem operasi:


3461 Marketplace entry path does not stay inside the marketplace directory3590 Marketplace entry path does not stay inside the marketplace directory

3462</h3>3591</h3>

3463 3592 

3464[Entri marketplace](/docs/id/plugin-marketplaces#plugin-entries) plugin mendeklarasikan jalur sumber yang Claude Code tidak dapat diselesaikan ke lokasi di dalam direktori marketplace itu sendiri, jadi plugin tidak memasang atau memuat. Penolakan mencakup:3593[Entri marketplace](/docs/id/plugins/marketplace-reference#plugin-entries) plugin mendeklarasikan jalur sumber yang Claude Code tidak dapat diselesaikan ke lokasi di dalam direktori marketplace itu sendiri, jadi plugin tidak memasang atau memuat. Penolakan mencakup:

3465 3594 

3466* Jalur entri yang absolut, memanjat keluar dari marketplace dengan `..`, atau dieja seperti jalur jaringan3595* Jalur entri yang absolut, memanjat keluar dari marketplace dengan `..`, atau dieja seperti jalur jaringan

3467* Di macOS dan Linux, jalur entri yang berisi backslash di mana pun setelah `./` terkemuka3596* Di macOS dan Linux, jalur entri yang berisi backslash di mana pun setelah `./` terkemuka

3468* Entri di marketplace yang diambil dari sumber jarak jauh, seperti git atau URL, yang mencapai targetnya melalui symlink yang diselesaikan di luar direktori marketplace3597* Entri di marketplace yang diambil dari sumber jarak jauh, seperti git atau URL, yang mencapai targetnya melalui symlink yang diselesaikan di luar direktori marketplace

3469* Entri relatif di marketplace yang ditambahkan dari URL langsung ke `marketplace.json`: Claude Code hanya mengunduh file itu, jadi tidak ada file plugin lokal untuk jalur yang dinamai. Lihat [Plugins with relative paths fail in URL-based marketplaces](/docs/id/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces)3598* Entri relatif di marketplace yang ditambahkan dari URL langsung ke `marketplace.json`: Claude Code hanya mengunduh file itu, jadi tidak ada file plugin lokal untuk jalur yang dinamai. Lihat [Plugins with relative paths fail in URL-based marketplaces](/docs/id/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces)

3470 3599 

3471`claude plugin install` melaporkan penolakan seperti ini:3600`claude plugin install` melaporkan penolakan seperti ini:

3472 3601 


3483**Yang harus dilakukan:**3612**Yang harus dilakukan:**

3484 3613 

3485* Jika Anda memelihara marketplace, tulis `source` entri sebagai jalur relatif biasa dengan garis miring maju, seperti `./plugins/my-plugin`, dan jaga agar symlink apa pun yang dilintasinya menunjuk ke dalam direktori marketplace3614* Jika Anda memelihara marketplace, tulis `source` entri sebagai jalur relatif biasa dengan garis miring maju, seperti `./plugins/my-plugin`, dan jaga agar symlink apa pun yang dilintasinya menunjuk ke dalam direktori marketplace

3486* Jika Anda menambahkan marketplace dari URL langsung, entri relatif tidak dapat diselesaikan. Minta penulis marketplace untuk menggunakan [sumber plugin lain](/docs/id/plugin-marketplaces#plugin-sources), atau tambahkan marketplace dari repositori git-nya sebagai gantinya3615* Jika Anda menambahkan marketplace dari URL langsung, entri relatif tidak dapat diselesaikan. Minta penulis marketplace untuk menggunakan [sumber plugin lain](/docs/id/plugins/marketplace-reference#plugin-sources), atau tambahkan marketplace dari repositori git-nya sebagai gantinya

3487 3616 

3488<h3 id="failed-to-load-marketplace-configuration">3617<h3 id="failed-to-load-marketplace-configuration">

3489 Failed to load marketplace configuration3618 Failed to load marketplace configuration


3513 Plugin is required by your organization3642 Plugin is required by your organization

3514</h3>3643</h3>

3515 3644 

3516Anda menjalankan `claude plugin disable`, atau menggunakan tab **Installed** `/plugin`, untuk mematikan [plugin yang disinkronkan dari claude.ai](/docs/id/plugins-reference#synced-plugins) yang organisasi Anda tandai sebagai diperlukan:3645Anda menjalankan `claude plugin disable`, atau menggunakan tab **Installed** `/plugin`, untuk mematikan [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins) yang organisasi Anda tandai sebagai diperlukan:

3517 3646 

3518```text theme={null}3647```text theme={null}

3519Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.3648Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.

Details

32* [CLI](/docs/id/quickstart) dan [Agent SDK](/docs/id/agent-sdk/overview)32* [CLI](/docs/id/quickstart) dan [Agent SDK](/docs/id/agent-sdk/overview)

33* Ekstensi [VS Code](/docs/id/vs-code) dan [JetBrains](/docs/id/jetbrains)33* Ekstensi [VS Code](/docs/id/vs-code) dan [JetBrains](/docs/id/jetbrains)

34* [Subagents](/docs/id/sub-agents), [hooks](/docs/id/hooks-guide), [commands](/docs/id/commands), dan [skills](/docs/id/skills)34* [Subagents](/docs/id/sub-agents), [hooks](/docs/id/hooks-guide), [commands](/docs/id/commands), dan [skills](/docs/id/skills)

35* Memori [CLAUDE.md](/docs/id/memory), [plugins](/docs/id/plugins), dan [server MCP](/docs/id/mcp)35* Memori [CLAUDE.md](/docs/id/memory), [plugins](/docs/id/plugins/overview), dan [server MCP](/docs/id/mcp)

36* [Checkpoints](/docs/id/checkpointing), [sandboxing](/docs/id/sandboxing), dan [Workflows](/docs/id/workflows)36* [Checkpoints](/docs/id/checkpointing), [sandboxing](/docs/id/sandboxing), dan [Workflows](/docs/id/workflows)

37* Metrik [OpenTelemetry](/docs/id/monitoring-usage) dan [file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms)37* Metrik [OpenTelemetry](/docs/id/monitoring-usage) dan [file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms)

38 38 

Details

29* **[Dynamic workflows](/docs/id/workflows)** menjalankan banyak subagents dari skrip yang Claude tulis, mengembalikan satu hasil29* **[Dynamic workflows](/docs/id/workflows)** menjalankan banyak subagents dari skrip yang Claude tulis, mengembalikan satu hasil

30* **[Cross-session messaging](/docs/id/cross-session-messaging)** memungkinkan Claude melewatkan pesan dari salah satu sesi Anda ke sesi lain30* **[Cross-session messaging](/docs/id/cross-session-messaging)** memungkinkan Claude melewatkan pesan dari salah satu sesi Anda ke sesi lain

31* **[Hooks](/docs/id/hooks-guide)** menjalankan skrip, permintaan HTTP, panggilan alat MCP, prompt, atau subagent Anda ketika Claude Code mencapai acara siklus hidup31* **[Hooks](/docs/id/hooks-guide)** menjalankan skrip, permintaan HTTP, panggilan alat MCP, prompt, atau subagent Anda ketika Claude Code mencapai acara siklus hidup

32* **[Plugins](/docs/id/plugins)** dan **[marketplaces](/docs/id/plugin-marketplaces)** mengemas dan mendistribusikan fitur-fitur ini32* **[Plugins](/docs/id/plugins/overview)** dan **[marketplaces](/docs/id/plugins/overview)** mengemas dan mendistribusikan fitur-fitur ini

33 33 

34[Skills](/docs/id/skills) adalah ekstensi paling fleksibel. Skill adalah file markdown yang berisi pengetahuan, alur kerja, atau instruksi. Anda dapat memanggil skills dengan perintah seperti `/deploy`, atau Claude dapat memuatnya secara otomatis ketika relevan. Skills dapat berjalan dalam percakapan Anda saat ini atau dalam konteks terisolasi melalui subagents.34[Skills](/docs/id/skills) adalah ekstensi paling fleksibel. Skill adalah file markdown yang berisi pengetahuan, alur kerja, atau instruksi. Anda dapat memanggil skills dengan perintah seperti `/deploy`, atau Claude dapat memuatnya secara otomatis ketika relevan. Skills dapat berjalan dalam percakapan Anda saat ini atau dalam konteks terisolasi melalui subagents.

35 35 


52| **Hook** | Skrip, permintaan HTTP, panggilan alat MCP, prompt, atau subagent yang dipicu oleh acara | Otomasi yang harus berjalan pada setiap acara yang cocok | Jalankan ESLint setelah setiap pengeditan file |52| **Hook** | Skrip, permintaan HTTP, panggilan alat MCP, prompt, atau subagent yang dipicu oleh acara | Otomasi yang harus berjalan pada setiap acara yang cocok | Jalankan ESLint setelah setiap pengeditan file |

53| **[Artifact](/docs/id/artifacts)** | Publikasikan output sesi sebagai halaman web pribadi yang interaktif | Output yang ingin Anda lihat atau bagikan secara visual daripada sebagai teks terminal | Garis waktu insiden yang diperbarui saat Claude menyelidiki |53| **[Artifact](/docs/id/artifacts)** | Publikasikan output sesi sebagai halaman web pribadi yang interaktif | Output yang ingin Anda lihat atau bagikan secara visual daripada sebagai teks terminal | Garis waktu insiden yang diperbarui saat Claude menyelidiki |

54 54 

55**[Plugins](/docs/id/plugins)** adalah lapisan pengemasan. Plugin menggabungkan skill, hook, subagent, dan server MCP ke dalam satu unit yang dapat diinstal. Skill plugin memiliki namespace (seperti `/my-plugin:review`) sehingga beberapa plugin dapat hidup berdampingan. Gunakan plugin ketika Anda ingin menggunakan kembali pengaturan yang sama di beberapa repositori atau mendistribusikan ke orang lain melalui **[marketplace](/docs/id/plugin-marketplaces)**.55**[Plugins](/docs/id/plugins/overview)** adalah lapisan pengemasan. Plugin menggabungkan skill, hook, subagent, dan server MCP ke dalam satu unit yang dapat diinstal. Skill plugin memiliki namespace (seperti `/my-plugin:review`) sehingga beberapa plugin dapat hidup berdampingan. Gunakan plugin ketika Anda ingin menggunakan kembali pengaturan yang sama di beberapa repositori atau mendistribusikan ke orang lain melalui **[marketplace](/docs/id/plugins/overview)**.

56 56 

57<h3 id="build-your-setup-over-time">57<h3 id="build-your-setup-over-time">

58 Bangun pengaturan Anda seiring waktu58 Bangun pengaturan Anda seiring waktu


61Anda tidak perlu mengonfigurasi semuanya di muka. Setiap fitur memiliki pemicu yang dapat dikenali, dan sebagian besar tim menambahkannya dalam urutan yang kurang lebih seperti ini:61Anda tidak perlu mengonfigurasi semuanya di muka. Setiap fitur memiliki pemicu yang dapat dikenali, dan sebagian besar tim menambahkannya dalam urutan yang kurang lebih seperti ini:

62 62 

63| Pemicu | Tambahkan |63| Pemicu | Tambahkan |

64| :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------ |64| :----------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |

65| Claude mendapatkan konvensi atau perintah yang salah dua kali | Tambahkan ke [CLAUDE.md](/docs/id/memory) |65| Claude mendapatkan konvensi atau perintah yang salah dua kali | Tambahkan ke [CLAUDE.md](/docs/id/memory) |

66| Anda terus meminta Claude untuk lebih pendek, menjelaskan lebih banyak, atau menjawab dalam format yang sama | Atur [output style](/docs/id/output-styles) |66| Anda terus meminta Claude untuk lebih pendek, menjelaskan lebih banyak, atau menjawab dalam format yang sama | Atur [output style](/docs/id/output-styles) |

67| Anda terus mengetik prompt yang sama untuk memulai tugas | Simpan sebagai [skill](/docs/id/skills) yang dapat dipanggil pengguna |67| Anda terus mengetik prompt yang sama untuk memulai tugas | Simpan sebagai [skill](/docs/id/skills) yang dapat dipanggil pengguna |

68| Anda menempel playbook yang sama atau prosedur multi-langkah ke dalam chat untuk ketiga kalinya | Tangkap sebagai [skill](/docs/id/skills) |68| Anda menempel playbook yang sama atau prosedur multi-langkah ke dalam chat untuk ketiga kalinya | Tangkap sebagai [skill](/docs/id/skills) |

69| Anda terus menyalin data dari tab browser yang Claude tidak bisa lihat | Hubungkan sistem itu sebagai [server MCP](/docs/id/mcp) |69| Anda terus menyalin data dari tab browser yang Claude tidak bisa lihat | Hubungkan sistem itu sebagai [server MCP](/docs/id/mcp) |

70| Claude membaca banyak file untuk menemukan di mana simbol didefinisikan atau digunakan | Instal [plugin code intelligence](/docs/id/discover-plugins#code-intelligence) untuk bahasa Anda |70| Claude membaca banyak file untuk menemukan di mana simbol didefinisikan atau digunakan | Instal [plugin code intelligence](/docs/id/plugins/code-intelligence) untuk bahasa Anda |

71| Tugas sampingan membanjiri percakapan Anda dengan output yang tidak akan Anda referensikan lagi | Arahkan melalui [subagent](/docs/id/sub-agents) |71| Tugas sampingan membanjiri percakapan Anda dengan output yang tidak akan Anda referensikan lagi | Arahkan melalui [subagent](/docs/id/sub-agents) |

72| Anda ingin sesuatu terjadi setiap kali tanpa bertanya | Tulis [hook](/docs/id/hooks-guide) |72| Anda ingin sesuatu terjadi setiap kali tanpa bertanya | Tulis [hook](/docs/id/hooks-guide) |

73| Repositori kedua membutuhkan pengaturan yang sama | Paket sebagai [plugin](/docs/id/plugins) |73| Repositori kedua membutuhkan pengaturan yang sama | Paket sebagai [plugin](/docs/id/plugins/overview) |

74 74 

75Pemicu yang sama memberi tahu Anda kapan harus memperbarui apa yang sudah Anda miliki. Kesalahan berulang atau komentar tinjauan berulang adalah pengeditan CLAUDE.md, bukan koreksi sekali jadi dalam chat. Alur kerja yang terus Anda sesuaikan dengan tangan adalah skill yang membutuhkan revisi lain.75Pemicu yang sama memberi tahu Anda kapan harus memperbarui apa yang sudah Anda miliki. Kesalahan berulang atau komentar tinjauan berulang adalah pengeditan CLAUDE.md, bukan koreksi sekali jadi dalam chat. Alur kerja yang terus Anda sesuaikan dengan tangan adalah skill yang membutuhkan revisi lain.

76 76 


207Fitur dapat didefinisikan di berbagai tingkat: seluruh pengguna, per-proyek, melalui plugin, atau melalui kebijakan yang dikelola. Anda juga dapat menyarangkan file CLAUDE.md di subdirektori atau menempatkan skill di paket tertentu dari monorepo. Ketika fitur yang sama ada di berbagai tingkat, berikut cara mereka berlapis:207Fitur dapat didefinisikan di berbagai tingkat: seluruh pengguna, per-proyek, melalui plugin, atau melalui kebijakan yang dikelola. Anda juga dapat menyarangkan file CLAUDE.md di subdirektori atau menempatkan skill di paket tertentu dari monorepo. Ketika fitur yang sama ada di berbagai tingkat, berikut cara mereka berlapis:

208 208 

209* **File CLAUDE.md** bersifat aditif: semua tingkat berkontribusi konten ke konteks Claude secara bersamaan. File dari direktori kerja Anda dan di atas dimuat saat peluncuran; subdirektori dimuat saat Anda bekerja di dalamnya. Ketika instruksi bertentangan, Claude menggunakan penilaian untuk merekonsiliasi mereka. Lihat [bagaimana file CLAUDE.md dimuat](/docs/id/memory#how-claude-md-files-load).209* **File CLAUDE.md** bersifat aditif: semua tingkat berkontribusi konten ke konteks Claude secara bersamaan. File dari direktori kerja Anda dan di atas dimuat saat peluncuran; subdirektori dimuat saat Anda bekerja di dalamnya. Ketika instruksi bertentangan, Claude menggunakan penilaian untuk merekonsiliasi mereka. Lihat [bagaimana file CLAUDE.md dimuat](/docs/id/memory#how-claude-md-files-load).

210* **Skills dan subagents** menimpa berdasarkan nama: ketika nama yang sama ada di berbagai tingkat, satu definisi menang berdasarkan prioritas (managed > user > project untuk skill; managed > CLI flag > project > user > plugin untuk subagent). Skill plugin [memiliki namespace](/docs/id/plugins#add-skills-to-your-plugin) untuk menghindari konflik. Lihat [penemuan skill](/docs/id/skills#resolve-skills-that-share-a-name) dan [cakupan subagent](/docs/id/sub-agents#choose-the-subagent-scope).210* **Skills dan subagents** menimpa berdasarkan nama: ketika nama yang sama ada di berbagai tingkat, satu definisi menang berdasarkan prioritas (managed > user > project untuk skill; managed > CLI flag > project > user > plugin untuk subagent). Skill plugin [memiliki namespace](/docs/id/plugins/components#skills) untuk menghindari konflik. Lihat [penemuan skill](/docs/id/skills#resolve-skills-that-share-a-name) dan [cakupan subagent](/docs/id/sub-agents#choose-the-subagent-scope).

211* **Server MCP** menimpa berdasarkan nama: lokal > proyek > pengguna. Lihat [cakupan MCP](/docs/id/mcp#scope-hierarchy-and-precedence).211* **Server MCP** menimpa berdasarkan nama: lokal > proyek > pengguna. Lihat [cakupan MCP](/docs/id/mcp#scope-hierarchy-and-precedence).

212* **Hooks** menggabung: semua hook terdaftar menyala untuk acara yang cocok mereka terlepas dari sumber. Lihat [hooks](/docs/id/hooks-guide).212* **Hooks** menggabung: semua hook terdaftar menyala untuk acara yang cocok mereka terlepas dari sumber. Lihat [hooks](/docs/id/hooks-guide).

213 213 


304 304 

305 **Biaya konteks:** Rendah. Pencarian simbol sering menggantikan pembacaan file yang luas, jadi penggunaan konteks bersih dapat turun.305 **Biaya konteks:** Rendah. Pencarian simbol sering menggantikan pembacaan file yang luas, jadi penggunaan konteks bersih dapat turun.

306 306 

307 <Tip>Alat LSP tidak aktif sampai Anda memasang [plugin code intelligence](/docs/id/discover-plugins#code-intelligence) untuk bahasa Anda.</Tip>307 <Tip>Alat LSP tidak aktif sampai Anda memasang [plugin code intelligence](/docs/id/plugins/code-intelligence) untuk bahasa Anda.</Tip>

308 </Tab>308 </Tab>

309 309 

310 <Tab title="Subagents">310 <Tab title="Subagents">


370 Otomatisasi tindakan dengan hooks370 Otomatisasi tindakan dengan hooks

371 </Card>371 </Card>

372 372 

373 <Card title="Plugins" icon="puzzle-piece" href="/docs/id/plugins">373 <Card title="Plugins" icon="puzzle-piece" href="/docs/id/plugins/overview">

374 Bundel dan bagikan set fitur374 Bundel dan bagikan set fitur

375 </Card>375 </Card>

376 376 

377 <Card title="Marketplaces" icon="store" href="/docs/id/plugin-marketplaces">377 <Card title="Marketplaces" icon="store" href="/docs/id/plugins/create-marketplace">

378 Host dan distribusikan koleksi plugin378 Host dan distribusikan koleksi plugin

379 </Card>379 </Card>

380</CardGroup>380</CardGroup>

fullscreen.md +2 −1

Details

100 100 

101* **Klik di input prompt** untuk memposisikan kursor Anda di mana saja dalam teks yang Anda ketik.101* **Klik di input prompt** untuk memposisikan kursor Anda di mana saja dalam teks yang Anda ketik.

102* **Klik saran dalam daftar perintah `/` atau file `@`** untuk menerimanya. Mengarahkan kursor menyoroti baris di bawah kursor Anda.102* **Klik saran dalam daftar perintah `/` atau file `@`** untuk menerimanya. Mengarahkan kursor menyoroti baris di bawah kursor Anda.

103* **Klik opsi dalam menu pilih** untuk memilihnya. Ini mencakup prompt izin, `/model`, `/config`, dan dialog lainnya yang menampilkan daftar opsi. Mengarahkan kursor menunjukkan pointer pada baris di bawah kursor Anda. Memerlukan Claude Code v2.1.187 atau lebih baru.103* **Klik opsi dalam menu pilih** untuk memilihnya. Ini mencakup prompt izin, `/model`, `/config`, dan dialog lainnya yang menampilkan daftar opsi. Mengarahkan kursor menunjukkan pointer pada baris di bawah kursor Anda.

104* **Klik opsi dalam menu multi-pilih** untuk mengalihnya, dan klik tombol kirim untuk mengonfirmasi pilihan Anda. Mengklik baris teks bebas, seperti baris `Other` dalam pertanyaan pilihan ganda, memfokuskan bidang inputnya sehingga Anda dapat mengetik jawaban. Memerlukan Claude Code v2.1.208 atau lebih baru.104* **Klik opsi dalam menu multi-pilih** untuk mengalihnya, dan klik tombol kirim untuk mengonfirmasi pilihan Anda. Mengklik baris teks bebas, seperti baris `Other` dalam pertanyaan pilihan ganda, memfokuskan bidang inputnya sehingga Anda dapat mengetik jawaban. Memerlukan Claude Code v2.1.208 atau lebih baru.

105* **Klik nilai pengaturan di panel `/config`** untuk mengubahnya, dan gulir daftar pengaturan dengan roda mouse. Memerlukan Claude Code v2.1.271 atau lebih baru.105* **Klik nilai pengaturan di panel `/config`** untuk mengubahnya, dan gulir daftar pengaturan dengan roda mouse. Memerlukan Claude Code v2.1.271 atau lebih baru.

106* **Gulir menu pilih atau multi-pilih dengan roda mouse** ketika memiliki lebih banyak opsi daripada yang ditampilkan sekaligus, seperti daftar `/model` di jendela terminal pendek. Roda menggulir daftar saat pointer berada di atas opsinya. Memerlukan Claude Code v2.1.280 atau lebih baru.

106* **Klik hasil tool yang diciutkan** untuk memerluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan tool dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.107* **Klik hasil tool yang diciutkan** untuk memerluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan tool dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.

107 * Mengklik juga memerluaskan output dari perintah shell `!`, baik hasil yang dipotong lebih lama atau baris kemajuan langsung saat perintah berjalan. Memerlukan Claude Code v2.1.257 atau lebih baru.108 * Mengklik juga memerluaskan output dari perintah shell `!`, baik hasil yang dipotong lebih lama atau baris kemajuan langsung saat perintah berjalan. Memerlukan Claude Code v2.1.257 atau lebih baru.

108* **Tahan `Cmd` di macOS, atau `Ctrl` di Linux dan Windows, dan klik URL atau jalur file** untuk membukanya. URL `http://` dan `https://` biasa terbuka di browser Anda, dan jalur file dalam output tool, seperti yang dicetak setelah Edit atau Write, terbuka di aplikasi default Anda. Klik biasa tanpa pengubah tidak membuka tautan, sesuai dengan perilaku terminal asli.109* **Tahan `Cmd` di macOS, atau `Ctrl` di Linux dan Windows, dan klik URL atau jalur file** untuk membukanya. URL `http://` dan `https://` biasa terbuka di browser Anda, dan jalur file dalam output tool, seperti yang dicetak setelah Edit atau Write, terbuka di aplikasi default Anda. Klik biasa tanpa pengubah tidak membuka tautan, sesuai dengan perilaku terminal asli.

Details

50* Jalankan `/install-github-app` lagi. Ketika repositori sudah memiliki `claude.yml`, pilih **Update workflow file with latest version**. Claude Code push salinan segar file alur kerja ke branch baru dan membuka pull request, sama seperti instalasi pertama.50* Jalankan `/install-github-app` lagi. Ketika repositori sudah memiliki `claude.yml`, pilih **Update workflow file with latest version**. Claude Code push salinan segar file alur kerja ke branch baru dan membuka pull request, sama seperti instalasi pertama.

51* Tambahkan argumen `--comment` dan baris `claude_args` dari [contoh alur kerja ulasan](#run-a-skill) ke file yang di-check-in sendiri, yang menjaga edit lain yang Anda buat padanya.51* Tambahkan argumen `--comment` dan baris `claude_args` dari [contoh alur kerja ulasan](#run-a-skill) ke file yang di-check-in sendiri, yang menjaga edit lain yang Anda buat padanya.

52 52 

53Setelah menginstal GitHub App, Claude Code menanyakan apakah akan melanjutkan dengan penyiapan GitHub Actions. Pilih **Skip for now** untuk berhenti hanya dengan GitHub App yang diinstal. Jalankan `/install-github-app` lagi nanti untuk menyelesaikan langkah alur kerja dan rahasia. Sebelum v2.1.187, Claude Code langsung melanjutkan ke pemilihan alur kerja.53Setelah menginstal GitHub App, Claude Code menanyakan apakah akan melanjutkan dengan penyiapan GitHub Actions. Pilih **Skip for now** untuk berhenti hanya dengan GitHub App yang diinstal. Jalankan `/install-github-app` lagi nanti untuk menyelesaikan langkah alur kerja dan rahasia.

54 54 

55<Note>55<Note>

56 * Ketika Anda menginstal GitHub App, Anda memberikan beberapa izin. Lihat [izin GitHub App](#github-app-permissions) untuk set lengkapnya56 * Ketika Anda menginstal GitHub App, Anda memberikan beberapa izin. Lihat [izin GitHub App](#github-app-permissions) untuk set lengkapnya


237Input `prompt` menerima invokasi [skill](/docs/id/skills) serta teks biasa:237Input `prompt` menerima invokasi [skill](/docs/id/skills) serta teks biasa:

238 238 

239* Untuk skill di direktori `.claude/skills/` repositori Anda, jalankan `actions/checkout` sebelum langkah `anthropics/claude-code-action` sehingga file skill tersedia di runner, kemudian teruskan `/skill-name` sebagai `prompt`.239* Untuk skill di direktori `.claude/skills/` repositori Anda, jalankan `actions/checkout` sebelum langkah `anthropics/claude-code-action` sehingga file skill tersedia di runner, kemudian teruskan `/skill-name` sebagai `prompt`.

240* Untuk skill yang dikemas dalam [plugin](/docs/id/plugins), instal plugin dengan input `plugin_marketplaces` dan `plugins`, kemudian teruskan `/plugin-name:skill-name` dengan namespace sebagai `prompt`. Input `plugins` mengambil `plugin-name@marketplace-name`, di mana nama marketplace berasal dari manifest marketplace itu sendiri daripada URL repositorinya.240* Untuk skill yang dikemas dalam [plugin](/docs/id/plugins/overview), instal plugin dengan input `plugin_marketplaces` dan `plugins`, kemudian teruskan `/plugin-name:skill-name` dengan namespace sebagai `prompt`. Input `plugins` mengambil `plugin-name@marketplace-name`, di mana nama marketplace berasal dari manifest marketplace itu sendiri daripada URL repositorinya.

241 241 

242Alur kerja berikut menginstal plugin `code-review` dan menjalankan skillnya ketika pull request dibuka, diperbarui, dibuka kembali, atau ditandai siap untuk ulasan. Ini menjalankan plugin yang sama dengan alur kerja ulasan dari penyiapan cepat. Gunakan alur kerja seperti ini ketika Anda ingin mengontrol prompt, model, dan pemicu sendiri. Untuk ulasan otomatis tanpa memelihara file alur kerja, lihat [Code Review](/docs/id/code-review). Di repositori publik, GitHub menahan rahasia dari run yang dipicu oleh pull request fork, jadi ulasan hanya berjalan pada pull request dari branch di repositori yang sama.242Alur kerja berikut menginstal plugin `code-review` dan menjalankan skillnya ketika pull request dibuka, diperbarui, dibuka kembali, atau ditandai siap untuk ulasan. Ini menjalankan plugin yang sama dengan alur kerja ulasan dari penyiapan cepat. Gunakan alur kerja seperti ini ketika Anda ingin mengontrol prompt, model, dan pemicu sendiri. Untuk ulasan otomatis tanpa memelihara file alur kerja, lihat [Code Review](/docs/id/code-review). Di repositori publik, GitHub menahan rahasia dari run yang dipicu oleh pull request fork, jadi ulasan hanya berjalan pada pull request dari branch di repositori yang sama.

243 243 

Details

68Manifes mengonfigurasi GitHub App dengan izin dan acara webhook di bawah ini, yang bersama-sama mencakup sesi web, Code Review, Claude Security, pasar plugin, dan metrik kontribusi:68Manifes mengonfigurasi GitHub App dengan izin dan acara webhook di bawah ini, yang bersama-sama mencakup sesi web, Code Review, Claude Security, pasar plugin, dan metrik kontribusi:

69 69 

70| Izin | Akses | Digunakan untuk |70| Izin | Akses | Digunakan untuk |

71| :------------------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |71| :------------------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

72| Contents | Baca dan tulis | Kloning repositori dan push cabang |72| Contents | Baca dan tulis | Kloning repositori dan push cabang |

73| Pull requests | Baca dan tulis | Membuat PR dan memposting komentar tinjauan |73| Pull requests | Baca dan tulis | Membuat PR dan memposting komentar tinjauan |

74| Issues | Baca dan tulis | Merespons penyebutan masalah |74| Issues | Baca dan tulis | Merespons penyebutan masalah |

75| Checks | Baca dan tulis | Memposting jalankan pemeriksaan Code Review |75| Checks | Baca dan tulis | Memposting jalankan pemeriksaan Code Review |

76| Actions | Baca | Membaca status CI untuk perbaikan otomatis |76| Actions | Baca | Membaca status CI untuk perbaikan otomatis |

77| Commit statuses | Baca | Membaca status CI dari penyedia yang melaporkan status commit alih-alih jalankan pemeriksaan |77| Commit statuses | Baca | Membaca status CI dari penyedia yang melaporkan status commit alih-alih jalankan pemeriksaan |

78| Repository hooks | Baca dan tulis | Membuat webhook di repositori pasar plugin ketika **Sync automatically** diaktifkan untuk pasar di [Organization settings > Plugins](https://claude.ai/admin-settings/plugins) |78| Repository hooks | Baca dan tulis | Membuat webhook di repositori pasar plugin ketika **Sync automatically** diaktifkan untuk pasar di [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=marketplaces) |

79| Metadata | Baca | Diperlukan oleh GitHub untuk semua aplikasi |79| Metadata | Baca | Diperlukan oleh GitHub untuk semua aplikasi |

80| Organization members | Baca | Mencocokkan GitHub App Claude di github.com, yang menggunakannya untuk memeriksa peran organisasi pengguna yang terhubung saat menghubungkan instalasi |80| Organization members | Baca | Mencocokkan GitHub App Claude di github.com, yang menggunakannya untuk memeriksa peran organisasi pengguna yang terhubung saat menghubungkan instalasi |

81 81 


160 160 

161Claude Code menjalankan git secara non-interaktif dan menolak koneksi SSH ke host yang tidak ada dalam file `known_hosts` mesin. URL HTTPS dengan pembantu kredensial git menghindari persyaratan `known_hosts`.161Claude Code menjalankan git secara non-interaktif dan menolak koneksi SSH ke host yang tidak ada dalam file `known_hosts` mesin. URL HTTPS dengan pembantu kredensial git menghindari persyaratan `known_hosts`.

162 162 

163Lihat [Buat dan distribusikan pasar plugin](/docs/id/plugin-marketplaces) untuk panduan lengkap membangun pasar.163Lihat [Buat dan distribusikan pasar plugin](/docs/id/plugins/create-marketplace) untuk panduan lengkap membangun pasar.

164 164 

165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">

166 Daftarkan pasar GHES sebelumnya dengan pengaturan terkelola166 Daftarkan pasar GHES sebelumnya dengan pengaturan terkelola


262 262 

263* [Claude Code di web](/docs/id/claude-code-on-the-web): jalankan sesi Claude Code di infrastruktur cloud263* [Claude Code di web](/docs/id/claude-code-on-the-web): jalankan sesi Claude Code di infrastruktur cloud

264* [Code Review](/docs/id/code-review): tinjauan PR otomatis264* [Code Review](/docs/id/code-review): tinjauan PR otomatis

265* [Pasar plugin](/docs/id/plugin-marketplaces): bangun dan distribusikan katalog plugin265* [Pasar plugin](/docs/id/plugins/host-marketplace): bangun dan distribusikan katalog plugin

266* [Analytics](/docs/id/analytics): lacak penggunaan dan metrik kontribusi266* [Analytics](/docs/id/analytics): lacak penggunaan dan metrik kontribusi

267* [Pengaturan terkelola](/docs/id/settings): konfigurasi kebijakan di seluruh organisasi267* [Pengaturan terkelola](/docs/id/settings): konfigurasi kebijakan di seluruh organisasi

268* [Konfigurasi jaringan](/docs/id/network-config): persyaratan firewall dan daftar izin IP268* [Konfigurasi jaringan](/docs/id/network-config): persyaratan firewall dan daftar izin IP

glossary.md +2 −2

Details

332 Plugin332 Plugin

333</h3>333</h3>

334 334 

335Bundle skills, hooks, subagents, dan MCP servers yang dikemas sebagai unit yang dapat diinstal tunggal. Plugin skills diberi namespace sebagai `plugin-name:skill-name` sehingga beberapa plugin dapat hidup berdampingan. Distribusikan plugins di seluruh tim melalui [marketplace](/docs/id/plugin-marketplaces).335Bundle skills, hooks, subagents, dan MCP servers yang dikemas sebagai unit yang dapat diinstal tunggal. Plugin skills diberi namespace sebagai `plugin-name:skill-name` sehingga beberapa plugin dapat hidup berdampingan. Distribusikan plugins di seluruh tim melalui [marketplace](/docs/id/plugins/overview).

336 336 

337Pelajari lebih lanjut: [Plugins](/docs/id/plugins)337Pelajari lebih lanjut: [Plugins](/docs/id/plugins/overview)

338 338 

339<h3 id="project-trust">339<h3 id="project-trust">

340 Project trust340 Project trust

hooks.md +10 −12

Details

259Tempat Anda mendefinisikan hook menentukan cakupannya:259Tempat Anda mendefinisikan hook menentukan cakupannya:

260 260 

261| Lokasi | Cakupan | Dapat Dibagikan |261| Lokasi | Cakupan | Dapat Dibagikan |

262| :--------------------------------------- | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------ |262| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------ |

263| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |263| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |

264| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |264| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |

265| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored saat Claude Code menyimpan pengaturan ke dalamnya |265| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored saat Claude Code menyimpan pengaturan ke dalamnya |

266| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |266| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |

267| [Plugin](/docs/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dibundel dengan plugin |267| [Plugin](/docs/id/plugins/overview) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dibundel dengan plugin |

268| [Skill](/docs/id/skills) frontmatter | Sisa sesi setelah skill dipanggil. Lihat [Hooks dalam skills dan agents](#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |268| [Skill](/docs/id/skills) frontmatter | Sisa sesi setelah skill dipanggil. Lihat [Hooks dalam skills dan agents](#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |

269| [Subagent](/docs/id/sub-agents) frontmatter | Saat subagent itu berjalan | Ya, didefinisikan dalam file subagent |269| [Subagent](/docs/id/sub-agents) frontmatter | Saat subagent itu berjalan | Ya, didefinisikan dalam file subagent |

270 270 

271Sesi cloud di [Claude Code di web](/docs/id/claude-code-on-the-web) tidak membaca `~/.claude/settings.json` lokal Anda; hooks di sana berasal dari `.claude/settings.json` repo dalam sesi dengan satu repositori, dari plugins yang [disinkronkan dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins), dan dari pengaturan yang dikelola server organisasi Anda. Dalam [lingkungan self-hosted](/docs/id/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code juga menjalankan hooks yang operator semai dari `~/.claude/` host runner, dan menjalankan hooks dalam file pengaturan terkelola image runner saat file itu termasuk dalam [sumber terkelola yang Claude Code terapkan](/docs/id/managed-settings#how-claude-code-combines-managed-sources), yang secara default berarti hanya ketika pengaturan yang dikelola server maupun kebijakan Claude Code yang dikirimkan MDM tidak menyediakan tingkat terkelola. Lihat [apa yang terbawa dari setup Anda](/docs/id/cloud-environments#what-carries-over-from-your-setup) untuk file mana yang mencapai sesi cloud.271Sesi cloud di [Claude Code di web](/docs/id/claude-code-on-the-web) tidak membaca `~/.claude/settings.json` lokal Anda. Dalam [lingkungan self-hosted](/docs/id/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code juga menjalankan hooks yang operator semai dari `~/.claude/` host runner, dan menjalankan hooks dalam file pengaturan terkelola image runner saat file itu termasuk dalam [sumber terkelola yang Claude Code terapkan](/docs/id/managed-settings#how-claude-code-combines-managed-sources), yang secara default berarti hanya ketika pengaturan yang dikelola server maupun kebijakan Claude Code yang dikirimkan MDM tidak menyediakan tingkat terkelola. Lihat [apa yang terbawa dari setup Anda](/docs/id/cloud-environments#what-carries-over-from-your-setup) untuk file pengaturan dan plugin mana, dan dengan demikian hooks mana, yang mencapai sesi cloud.

272 272 

273Untuk detail tentang resolusi file pengaturan, lihat [settings](/docs/id/settings).273Untuk detail tentang resolusi file pengaturan, lihat [settings](/docs/id/settings).

274 274 


278 278 

279* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan279* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan

280* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola280* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola

281* Claude Code juga menonaktifkan plugins dengan [sumber `command`](/docs/id/plugin-marketplaces#command-sources), termasuk plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins`, kecuali [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru281* Claude Code juga menonaktifkan plugins dengan [sumber `command`](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins`, kecuali [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau lebih baru

282* Claude Code juga memblokir perintah [`headersHelper`](/docs/id/plugin-marketplaces#authenticate-archive-downloads) marketplace kecuali [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang pengaturan terkelola sendiri deklarasikan282* Claude Code juga memblokir perintah [`headersHelper`](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace kecuali [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang pengaturan terkelola sendiri deklarasikan

283 283 

284Lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly).284Lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly).

285 285 


304 304 

305Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.305Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.

306 306 

307Pemisah koma dan toleransi whitespace di sekitarnya memerlukan Claude Code v2.1.191 atau lebih baru.

308 

309Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai ekspresi reguler yang tidak berlabuh, jadi juga dijalankan untuk `senior-code-reviewer`; labuhnya sebagai `^code-reviewer$` pada versi tersebut untuk mencocokkan hanya nama itu.307Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai ekspresi reguler yang tidak berlabuh, jadi juga dijalankan untuk `senior-code-reviewer`; labuhnya sebagai `^code-reviewer$` pada versi tersebut untuk mencocokkan hanya nama itu.

310 308 

311`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.309`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.


516 514 

517Kedua form mendukung [path placeholders](#reference-scripts-by-path) yang sama, dan keduanya mengekspornya sebagai variabel lingkungan `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, dan `CLAUDE_PLUGIN_DATA` pada proses yang di-spawn, jadi skrip dapat membaca `process.env.CLAUDE_PLUGIN_ROOT` terlepas dari bagaimana itu diluncurkan.515Kedua form mendukung [path placeholders](#reference-scripts-by-path) yang sama, dan keduanya mengekspornya sebagai variabel lingkungan `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT`, dan `CLAUDE_PLUGIN_DATA` pada proses yang di-spawn, jadi skrip dapat membaca `process.env.CLAUDE_PLUGIN_ROOT` terlepas dari bagaimana itu diluncurkan.

518 516 

519Plugin hooks juga mensubstitusi nilai [`${user_config.*}`](/docs/id/plugins-reference#user-configuration), dalam exec form saja: nilai disubstitusi ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa, jadi tidak ada shell yang mem-parse ulangnya.517Plugin hooks juga mensubstitusi nilai [`${user_config.*}`](/docs/id/plugins/manifest-reference#user-configuration), dalam exec form saja: nilai disubstitusi ke dalam `command` dan ke dalam setiap elemen `args` sebagai string biasa, jadi tidak ada shell yang mem-parse ulangnya.

520 518 

521Hook plugin bentuk shell yang `command`-nya mereferensikan `${user_config.*}` gagal dengan [error](/docs/id/errors#plugin-command-references-user-config) daripada menjalankan. Untuk menggunakan nilai opsi dari hook bentuk shell, baca variabel lingkungan `$CLAUDE_PLUGIN_OPTION_<KEY>`, seperti `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` untuk opsi `webhook_url`, atau atur `args` untuk beralih hook ke exec form. Sebelum v2.1.207, hook plugin bentuk shell juga mensubstitusi `${user_config.*}`.519Hook plugin bentuk shell yang `command`-nya mereferensikan `${user_config.*}` gagal dengan [error](/docs/id/errors#plugin-command-references-user-config) daripada menjalankan. Untuk menggunakan nilai opsi dari hook bentuk shell, baca variabel lingkungan `$CLAUDE_PLUGIN_OPTION_<KEY>`, seperti `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` untuk opsi `webhook_url`, atau atur `args` untuk beralih hook ke exec form. Sebelum v2.1.207, hook plugin bentuk shell juga mensubstitusi `${user_config.*}`.

522 520 


647Gunakan placeholders ini untuk mereferensikan skrip hook relatif terhadap akar proyek atau plugin, terlepas dari direktori kerja saat hook dijalankan:645Gunakan placeholders ini untuk mereferensikan skrip hook relatif terhadap akar proyek atau plugin, terlepas dari direktori kerja saat hook dijalankan:

648 646 

649* `${CLAUDE_PROJECT_DIR}`: akar proyek tempat sesi dimulai. Claude Code juga menetapkan variabel ini dalam lingkungan [stdio MCP servers](/docs/id/mcp#option-3-add-a-local-stdio-server) dan plugin LSP servers.647* `${CLAUDE_PROJECT_DIR}`: akar proyek tempat sesi dimulai. Claude Code juga menetapkan variabel ini dalam lingkungan [stdio MCP servers](/docs/id/mcp#option-3-add-a-local-stdio-server) dan plugin LSP servers.

650* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](/docs/id/plugins). Lihat [plugin environment variables](/docs/id/plugins-reference#environment-variables) untuk bagaimana path berperilaku di seluruh pembaruan.648* `${CLAUDE_PLUGIN_ROOT}`: direktori instalasi plugin, untuk skrip yang dibundel dengan [plugin](/docs/id/plugins/overview). Lihat [plugin environment variables](/docs/id/plugins/manifest-reference#environment-variables) untuk bagaimana path berperilaku di seluruh pembaruan.

651* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](/docs/id/plugins-reference#persistent-data-directory) plugin, untuk dependensi dan status yang harus bertahan pembaruan plugin.649* `${CLAUDE_PLUGIN_DATA}`: [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) plugin, untuk dependensi dan status yang harus bertahan pembaruan plugin.

652 650 

653<Note>651<Note>

654 **Worktrees berbeda.** Jika Claude memasuki [worktree](/docs/id/worktrees) selama sesi, Claude Code menyimpan `${CLAUDE_PROJECT_DIR}` di mana itu berada dan melewatkan path worktree ke hooks Anda dengan cara berbeda:652 **Worktrees berbeda.** Jika Claude memasuki [worktree](/docs/id/worktrees) selama sesi, Claude Code menyimpan `${CLAUDE_PROJECT_DIR}` di mana itu berada dan melewatkan path worktree ke hooks Anda dengan cara berbeda:


709 }707 }

710 ```708 ```

711 709 

712 Lihat [plugin components reference](/docs/id/plugins-reference#hooks) untuk detail tentang membuat plugin hooks.710 Lihat [plugin components reference](/docs/id/plugins/components#hooks) untuk detail tentang membuat plugin hooks.

713 </Tab>711 </Tab>

714</Tabs>712</Tabs>

715 713 


1351 1349 

1352Pada kesuksesan, `--init-only` tidak mencetak apa pun ke terminal. Untuk mengkonfirmasi hooks dijalankan, mulai dengan `claude --debug-file <path> --init-only`, gantikan `<path>` dengan lokasi file log, dan periksa log untuk entri Setup dan SessionStart hook.1350Pada kesuksesan, `--init-only` tidak mencetak apa pun ke terminal. Untuk mengkonfirmasi hooks dijalankan, mulai dengan `claude --debug-file <path> --init-only`, gantikan `<path>` dengan lokasi file log, dan periksa log untuk entri Setup dan SessionStart hook.

1353 1351 

1354Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins-reference#persistent-data-directory) untuk tempat menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin Anda melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [menginstal dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins-reference#node-js-package-dependencies) ketika itu cache plugin.1352Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) untuk tempat menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin Anda melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [menginstal dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins/loading#node-js-package-dependencies) ketika itu cache plugin.

1355 1353 

1356<h4 id="setup-input">1354<h4 id="setup-input">

1357 Setup input1355 Setup input

hooks-guide.md +4 −4

Details

10 10 

11Untuk keputusan yang memerlukan penilaian daripada aturan deterministik, Anda juga dapat menggunakan [prompt-based hooks](#prompt-based-hooks) atau [agent-based hooks](#agent-based-hooks) yang menggunakan model Claude untuk mengevaluasi kondisi.11Untuk keputusan yang memerlukan penilaian daripada aturan deterministik, Anda juga dapat menggunakan [prompt-based hooks](#prompt-based-hooks) atau [agent-based hooks](#agent-based-hooks) yang menggunakan model Claude untuk mengevaluasi kondisi.

12 12 

13Untuk cara lain memperluas Claude Code, lihat [skills](/docs/id/skills) untuk memberikan Claude instruksi tambahan dan perintah yang dapat dieksekusi, [subagents](/docs/id/sub-agents) untuk menjalankan tugas dalam konteks terisolasi, dan [plugins](/docs/id/plugins) untuk mengemas ekstensi untuk dibagikan di seluruh proyek.13Untuk cara lain memperluas Claude Code, lihat [skills](/docs/id/skills) untuk memberikan Claude instruksi tambahan dan perintah yang dapat dieksekusi, [subagents](/docs/id/sub-agents) untuk menjalankan tugas dalam konteks terisolasi, dan [plugins](/docs/id/plugins/overview) untuk mengemas ekstensi untuk dibagikan di seluruh proyek.

14 14 

15<Tip>15<Tip>

16 Panduan ini mencakup kasus penggunaan umum dan cara memulai. Untuk skema acara lengkap, format input/output JSON, dan fitur lanjutan seperti async hooks dan MCP tool hooks, lihat [Hooks reference](/docs/id/hooks).16 Panduan ini mencakup kasus penggunaan umum dan cara memulai. Untuk skema acara lengkap, format input/output JSON, dan fitur lanjutan seperti async hooks dan MCP tool hooks, lihat [Hooks reference](/docs/id/hooks).


710}710}

711```711```

712 712 

713Matcher `"Edit|Write"` aktif hanya ketika Claude menggunakan alat `Edit` atau `Write`, bukan ketika menggunakan `Bash`, `Read`, atau alat lainnya. Pada Claude Code v2.1.191 atau lebih baru, koma memisahkan alternatif dengan cara yang sama, jadi `"Edit, Write"` setara. Lihat [Matcher patterns](/docs/id/hooks#matcher-patterns) untuk cara nama biasa dan ekspresi reguler dievaluasi.713Matcher `"Edit|Write"` aktif hanya ketika Claude menggunakan alat `Edit` atau `Write`, bukan ketika menggunakan `Bash`, `Read`, atau alat lainnya. Koma memisahkan alternatif dengan cara yang sama, jadi `"Edit, Write"` setara. Lihat [Matcher patterns](/docs/id/hooks#matcher-patterns) untuk cara nama biasa dan ekspresi reguler dievaluasi.

714 714 

715<Note>715<Note>

716 Claude juga dapat membuat atau memodifikasi file dengan menjalankan perintah shell. Jika hook Anda harus melihat setiap perubahan file, seperti untuk pemindaian kepatuhan atau pencatatan audit, tambahkan hook [`Stop`](/docs/id/hooks#stop) yang memindai pohon kerja sekali per giliran. Untuk cakupan per-panggilan sebagai gantinya, juga cocokkan `Bash|PowerShell` dan buat skrip Anda mencantumkan file yang dimodifikasi dan tidak dilacak dengan `git status --porcelain`. Bagian [PowerShell hook input](/docs/id/hooks#powershell) menjelaskan mengapa mencocokkan `Bash` saja tidak cukup. Untuk menjalankan hook ketika file spesifik berubah di disk, apa pun yang menulisnya, gunakan hook [FileChanged](/docs/id/hooks#filechanged).716 Claude juga dapat membuat atau memodifikasi file dengan menjalankan perintah shell. Jika hook Anda harus melihat setiap perubahan file, seperti untuk pemindaian kepatuhan atau pencatatan audit, tambahkan hook [`Stop`](/docs/id/hooks#stop) yang memindai pohon kerja sekali per giliran. Untuk cakupan per-panggilan sebagai gantinya, juga cocokkan `Bash|PowerShell` dan buat skrip Anda mencantumkan file yang dimodifikasi dan tidak dilacak dengan `git status --porcelain`. Bagian [PowerShell hook input](/docs/id/hooks#powershell) menjelaskan mengapa mencocokkan `Bash` saja tidak cukup. Untuk menjalankan hook ketika file spesifik berubah di disk, apa pun yang menulisnya, gunakan hook [FileChanged](/docs/id/hooks#filechanged).


861Di mana Anda menambahkan hook menentukan cakupannya:861Di mana Anda menambahkan hook menentukan cakupannya:

862 862 

863| Lokasi | Cakupan | Dapat Dibagikan |863| Lokasi | Cakupan | Dapat Dibagikan |

864| :--------------------------------------- | :---------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |864| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |

865| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |865| `~/.claude/settings.json` | Semua proyek Anda | Tidak, lokal ke mesin Anda |

866| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |866| `.claude/settings.json` | Proyek tunggal | Ya, dapat dikomit ke repo |

867| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored ketika Claude Code menyimpan pengaturan ke dalamnya |867| `.claude/settings.local.json` | Proyek tunggal | Tidak, gitignored ketika Claude Code menyimpan pengaturan ke dalamnya |

868| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |868| Pengaturan kebijakan terkelola | Seluruh organisasi | Ya, dikendalikan admin |

869| [Plugin](/docs/id/plugins) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |869| [Plugin](/docs/id/plugins/overview) `hooks/hooks.json` | Ketika plugin diaktifkan | Ya, dikemas dengan plugin |

870| [Skill](/docs/id/skills) frontmatter | Sisa sesi setelah skill dipanggil. Lihat [Hooks in skills and agents](/docs/id/hooks#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |870| [Skill](/docs/id/skills) frontmatter | Sisa sesi setelah skill dipanggil. Lihat [Hooks in skills and agents](/docs/id/hooks#hooks-in-skills-and-agents) | Ya, didefinisikan dalam file skill |

871| [Subagent](/docs/id/sub-agents) frontmatter | Saat subagent itu berjalan | Ya, didefinisikan dalam file subagent |871| [Subagent](/docs/id/sub-agents) frontmatter | Saat subagent itu berjalan | Ya, didefinisikan dalam file subagent |

872 872 

Details

45Tools bawaan umumnya terbagi menjadi lima kategori, masing-masing mewakili jenis agency yang berbeda.45Tools bawaan umumnya terbagi menjadi lima kategori, masing-masing mewakili jenis agency yang berbeda.

46 46 

47| Kategori | Apa yang dapat dilakukan Claude |47| Kategori | Apa yang dapat dilakukan Claude |

48| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |48| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| **File operations** | Membaca file, mengedit kode, membuat file baru, mengganti nama dan mengorganisir ulang |49| **File operations** | Membaca file, mengedit kode, membuat file baru, mengganti nama dan mengorganisir ulang |

50| **Search** | Menemukan file berdasarkan pola, mencari konten dengan regex, menjelajahi codebase |50| **Search** | Menemukan file berdasarkan pola, mencari konten dengan regex, menjelajahi codebase |

51| **Execution** | Menjalankan perintah shell, memulai server, menjalankan test, menggunakan git |51| **Execution** | Menjalankan perintah shell, memulai server, menjalankan test, menggunakan git |

52| **Web** | Mencari web, mengambil dokumentasi, mencari pesan error |52| **Web** | Mencari web, mengambil dokumentasi, mencari pesan error |

53| **Code intelligence** | Melihat type error dan warning setelah edit, melompat ke definisi, menemukan referensi (memerlukan [code intelligence plugins](/docs/id/discover-plugins#code-intelligence)) |53| **Code intelligence** | Melihat type error dan warning setelah edit, melompat ke definisi, menemukan referensi (memerlukan [code intelligence plugins](/docs/id/plugins/code-intelligence)) |

54 54 

55Ini adalah kemampuan utama. Claude juga memiliki tools untuk spawning subagents, mengajukan pertanyaan kepada Anda, dan tugas orchestration lainnya. Lihat [Tools available to Claude](/docs/id/tools-reference) untuk daftar lengkap.55Ini adalah kemampuan utama. Claude juga memiliki tools untuk spawning subagents, mengajukan pertanyaan kepada Anda, dan tugas orchestration lainnya. Lihat [Tools available to Claude](/docs/id/tools-reference) untuk daftar lengkap.

56 56 

Details

21</h3>21</h3>

22 22 

23| Pintasan | Deskripsi | Konteks |23| Pintasan | Deskripsi | Konteks |

24| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |24| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| `Ctrl+C` | Interupsi, atau hapus input | Menghentikan operasi yang sedang berjalan. Jika tidak ada yang berjalan, tekan pertama menghapus input prompt dan tekan kedua keluar dari Claude Code |25| `Ctrl+C` | Interupsi, atau hapus input | Menghentikan operasi yang sedang berjalan. Jika tidak ada yang berjalan, tekan pertama menghapus input prompt dan tekan kedua keluar dari Claude Code |

26| `Ctrl+X Ctrl+K` | Hentikan semua [subagen latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) dalam sesi ini, dan matikan [balasan otomatis artefak](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own) untuk sisanya. Tekan dua kali dalam 3 detik untuk mengonfirmasi | Kontrol subagen |26| `Ctrl+X Ctrl+K` | Hentikan semua [subagen latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) dalam sesi ini, dan matikan [balasan otomatis artefak](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own) untuk sisanya. Tekan dua kali dalam 3 detik untuk mengonfirmasi | Kontrol subagen |

27| `Ctrl+D` | Keluar dari sesi Claude Code | Tekan pertama menampilkan petunjuk konfirmasi dan tekan kedua dalam 800ms keluar. Ketika prompt memiliki teks, `Ctrl+D` menghapus karakter setelah kursor |27| `Ctrl+D` | Keluar dari sesi Claude Code | Tekan pertama menampilkan petunjuk konfirmasi dan tekan kedua dalam 800ms keluar. Ketika prompt memiliki teks, `Ctrl+D` menghapus karakter setelah kursor |


32| `Ctrl+V` atau `Cmd+V` (iTerm2) atau `Alt+V` (Windows dan WSL) | Tempel gambar dari clipboard | Menyisipkan chip `[Image #N]` di kursor sehingga Anda dapat mereferensikannya secara posisional dalam prompt Anda. Di WSL, baik `Ctrl+V` maupun `Alt+V` terikat; gunakan `Alt+V` jika terminal Anda menangkap `Ctrl+V` |32| `Ctrl+V` atau `Cmd+V` (iTerm2) atau `Alt+V` (Windows dan WSL) | Tempel gambar dari clipboard | Menyisipkan chip `[Image #N]` di kursor sehingga Anda dapat mereferensikannya secara posisional dalam prompt Anda. Di WSL, baik `Ctrl+V` maupun `Alt+V` terikat; gunakan `Alt+V` jika terminal Anda menangkap `Ctrl+V` |

33| `Ctrl+B` | Tugas yang berjalan di latar belakang | Menjalankan perintah Bash dan agen di latar belakang. Pengguna Tmux tekan dua kali |33| `Ctrl+B` | Tugas yang berjalan di latar belakang | Menjalankan perintah Bash dan agen di latar belakang. Pengguna Tmux tekan dua kali |

34| `Ctrl+T` | Alihkan daftar tugas Claude | Tampilkan atau sembunyikan [daftar tugas Claude](#task-list) di area status. Ini bukan tampilan tugas latar belakang; gunakan [`/tasks`](/docs/id/commands) untuk melihat shell dan subagen yang berjalan |34| `Ctrl+T` | Alihkan daftar tugas Claude | Tampilkan atau sembunyikan [daftar tugas Claude](#task-list) di area status. Ini bukan tampilan tugas latar belakang; gunakan [`/tasks`](/docs/id/commands) untuk melihat shell dan subagen yang berjalan |

35| `Ctrl+S` | Simpan atau pulihkan prompt | Dengan teks dalam input, menyimpannya dan menghapus prompt. Ditekan lagi pada prompt kosong, memulihkan teks yang disimpan, posisi kursor, dan konten yang ditempel |35| `Ctrl+S` | Simpan atau pulihkan prompt | Dengan teks dalam input, menyimpannya dan menghapus prompt. Ditekan lagi pada prompt kosong, memulihkan teks yang disimpan, posisi kursor, konten yang ditempel, dan mode input, jadi perintah shell `!` yang disimpan [kembali dalam mode shell](#shell-mode-with-prefix) |

36| `Ctrl+Z` | Jeda Claude Code | Unix saja. Menangguhkan proses ke shell Anda; jalankan `fg` untuk melanjutkan |36| `Ctrl+Z` | Jeda Claude Code | Unix saja. Menangguhkan proses ke shell Anda; jalankan `fg` untuk melanjutkan |

37| `Panah Kiri/Kanan` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |37| `Panah Kiri/Kanan` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu |

38| `Tab` | Terima saran pelengkapan otomatis, atau tambahkan komentar ke jawaban izin | Saat saran pelengkapan otomatis ditampilkan dalam input prompt, menerima saran yang dipilih. Pada sebagian besar prompt izin, dengan **Ya** atau **Tidak** fokus, membuka bidang komentar pada opsi itu, dan menekannya lagi menutup bidang. Lihat [tambahkan komentar saat Anda menjawab prompt izin](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) |38| `Tab` | Terima saran pelengkapan otomatis, atau tambahkan komentar ke jawaban izin | Saat saran pelengkapan otomatis ditampilkan dalam input prompt, menerima saran yang dipilih. Pada sebagian besar prompt izin, dengan **Ya** atau **Tidak** fokus, membuka bidang komentar pada opsi itu, dan menekannya lagi menutup bidang. Lihat [tambahkan komentar saat Anda menjawab prompt izin](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

39| `Panah Atas/Bawah` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Ketika input mencakup lebih dari satu baris visual, baik dibungkus atau multiline, pertama kali memindahkan kursor dalam prompt. Setelah kursor berada di baris visual pertama atau terakhir, menekan lagi menavigasi riwayat perintah. Sementara Anda memiliki pesan antrian, `Atas` dari baris pertama malah [membawanya kembali](#take-back-what-you-queued) |39| `Panah Atas/Bawah` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Ketika input mencakup lebih dari satu baris visual, baik dibungkus atau multiline, pertama kali memindahkan kursor dalam prompt. Setelah kursor berada di baris visual pertama atau terakhir, menekan lagi menavigasi riwayat perintah. Sementara Anda memiliki pesan antrian, `Atas` dari baris pertama malah [membawanya kembali](#take-back-what-you-queued) |

40| `Esc` | Interupsi Claude, atau tutup dialog | Hentikan respons atau panggilan alat saat ini di tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang dilakukan sejauh ini. Jika Anda memiliki [pesan antrian](#queue-messages-while-claude-works), Claude Code mengirimnya selanjutnya. Ketika dialog terbuka, `Esc` menutup dialog. Pada prompt izin, `Esc` menolak tindakan, sama seperti [**Tidak** tanpa komentar](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) |40| `Esc` | Interupsi Claude, atau tutup dialog | Hentikan respons atau panggilan alat saat ini di tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang dilakukan sejauh ini. Jika Anda memiliki [pesan antrian](#queue-messages-while-claude-works), Claude Code mengirimnya selanjutnya. Ketika dialog terbuka, `Esc` menutup dialog. Pada prompt izin, `Esc` menolak tindakan, sama seperti [**Tidak** tanpa komentar](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

41| `Esc` + `Esc` | Hapus draf input, atau putar ulang | Ketika input prompt berisi teks, `Esc` ganda menghapusnya dan menyimpan draf ke riwayat sehingga `Atas` mengingatnya. Ketika input kosong, `Esc` ganda membuka [menu putar ulang](/docs/id/checkpointing) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |41| `Esc` + `Esc` | Hapus draf input, atau putar ulang | Ketika input prompt berisi teks, `Esc` ganda menghapusnya dan menyimpan draf ke riwayat sehingga `Atas` mengingatnya. Ketika input kosong, `Esc` ganda membuka [menu putar ulang](/docs/id/checkpointing) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |

42| `Ctrl+Enter` atau `Ctrl+X Ctrl+S` | Kirim pesan antrian sekarang | Menghentikan giliran saat ini sehingga [pesan antrian](#queue-messages-while-claude-works) Anda, dan draf Anda bersama mereka, keluar segera daripada ketika giliran berakhir. Dalam [mode shell](#shell-mode-with-prefix), kunci mengantrekan perintah Anda tanpa menghentikan. Di terminal yang tidak melaporkan kunci diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Memerlukan Claude Code v2.1.275 atau yang lebih baru |42| `Ctrl+Enter` atau `Ctrl+X Ctrl+S` | Kirim pesan antrian sekarang | Mengirim [pesan antrian](#queue-messages-while-claude-works) Anda, dan draf Anda bersama mereka, keluar segera. [Ketika Claude Code mengirim apa yang Anda antrekan](#when-claude-code-sends-what-you-queued) mencakup apa yang terjadi pada giliran yang sedang dikerjakan Claude. Dalam [mode shell](#shell-mode-with-prefix), kunci hanya mengantrekan perintah Anda. Di terminal yang tidak melaporkan kunci diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Memerlukan Claude Code v2.1.275 atau yang lebih baru |

43| `Shift+Tab`, atau `Alt+M` di Windows ketika runtime Node atau Bun tidak mengaktifkan mode input VT | Mode izin siklus | Siklus melalui `default` (berlabel Manual dalam indikator mode), `acceptEdits`, `plan`, dan, ketika tersedia, `bypassPermissions` dan kemudian `auto`. Dari `auto`, tekan pertama beralih ke `default`. Lihat [mode izin](/docs/id/permission-modes). Pada prompt izin file, kunci yang sama menutup [bidang komentar](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) yang terbuka. Tanpa bidang terbuka, ini memilih opsi yang memungkinkan tindakan untuk sisa sesi, ketika prompt menawarkan opsi itu |43| `Shift+Tab`, atau `Alt+M` di Windows ketika runtime Node atau Bun tidak mengaktifkan mode input VT | Mode izin siklus | Siklus melalui `default` (berlabel Manual dalam indikator mode), `acceptEdits`, `plan`, dan, ketika tersedia, `bypassPermissions` dan kemudian `auto`. Dari `auto`, tekan pertama beralih ke `default`. Lihat [mode izin](/docs/id/permission-modes). Pada prompt izin file, kunci yang sama menutup [bidang komentar](/docs/id/permissions#add-a-comment-when-you-answer-a-permission-prompt) yang terbuka. Tanpa bidang terbuka, ini memilih opsi yang memungkinkan tindakan untuk sisa sesi, ketika prompt menawarkan opsi itu |

44| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Model switch | Alihkan model tanpa menghapus prompt Anda |44| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Model switch | Alihkan model tanpa menghapus prompt Anda |

45| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan pemikiran diperpanjang | Aktifkan atau nonaktifkan mode pemikiran diperpanjang. Tidak berpengaruh pada Opus 5.5 atau model Fable, yang selalu menggunakan pemikiran diperpanjang. Bekerja di macOS tanpa mengonfigurasi Option sebagai Meta |45| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan pemikiran diperpanjang | Aktifkan atau nonaktifkan mode pemikiran diperpanjang. Tidak berpengaruh pada Opus 5.5 atau model Fable, yang selalu menggunakan pemikiran diperpanjang. Bekerja di macOS tanpa mengonfigurasi Option sebagai Meta |


136 Perintah136 Perintah

137</h2>137</h2>

138 138 

139Ketik `/` di Claude Code untuk melihat perintah yang tersedia untuk Anda, atau ketik `/` diikuti dengan huruf apa pun untuk memfilter. Menu `/` mencantumkan perintah bawaan, [skills](/docs/id/skills) yang dikemas dan ditulis pengguna, dan perintah yang disumbangkan oleh [plugins](/docs/id/plugins) dan [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands). Tidak semua perintah bawaan terlihat oleh setiap pengguna karena beberapa bergantung pada platform atau paket Anda, dan [beberapa perintah yang tersedia disembunyikan dari menu dengan desain](/docs/id/commands#how-the-command-menu-matches-what-you-type) dan berjalan saat Anda mengetik nama lengkapnya.139Ketik `/` di Claude Code untuk melihat perintah yang tersedia untuk Anda, atau ketik `/` diikuti dengan huruf apa pun untuk memfilter. Menu `/` mencantumkan perintah bawaan, [skills](/docs/id/skills) yang dikemas dan ditulis pengguna, dan perintah yang disumbangkan oleh [plugins](/docs/id/plugins/overview) dan [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands). Tidak semua perintah bawaan terlihat oleh setiap pengguna karena beberapa bergantung pada platform atau paket Anda, dan [beberapa perintah yang tersedia disembunyikan dari menu dengan desain](/docs/id/commands#how-the-command-menu-matches-what-you-type) dan berjalan saat Anda mengetik nama lengkapnya.

140 140 

141Dalam [rendering layar penuh](/docs/id/fullscreen#use-the-mouse), daftar saran perintah `/` dan file `@` juga merespons mouse: mengarahkan kursor menyoroti baris dan mengklik menerimanya.141Dalam [rendering layar penuh](/docs/id/fullscreen#use-the-mouse), daftar saran perintah `/` dan file `@` juga merespons mouse: mengarahkan kursor menyoroti baris dan mengklik menerimanya.

142 142 


408* Pesan: jika Anda mengantrekan pesan saat Claude menjalankan panggilan alat, Claude Code meneruskannya ke Claude segera setelah panggilan alat tersebut selesai, dalam giliran yang sama. Ketika giliran berakhir dengan pesan yang masih antri, mereka keluar tanpa penekanan tombol lain, dalam urutan yang Anda ketikkan408* Pesan: jika Anda mengantrekan pesan saat Claude menjalankan panggilan alat, Claude Code meneruskannya ke Claude segera setelah panggilan alat tersebut selesai, dalam giliran yang sama. Ketika giliran berakhir dengan pesan yang masih antri, mereka keluar tanpa penekanan tombol lain, dalam urutan yang Anda ketikkan

409* Perintah dan perintah shell: Claude Code menahan mereka hingga giliran berakhir, kemudian menjalankannya satu per satu, menjaga urutan yang Anda antrekan409* Perintah dan perintah shell: Claude Code menahan mereka hingga giliran berakhir, kemudian menjalankannya satu per satu, menjaga urutan yang Anda antrekan

410 410 

411Untuk mengirim apa yang Anda antrekan tanpa menunggu giliran selesai, tekan `Ctrl+Enter`. Claude Code mengganggu giliran, dan pesan antri Anda keluar segera, dengan draft Anda antri di belakangnya jika Anda telah mengetik satu. Dalam [mode shell](#shell-mode-with-prefix), tombol mengantrekan perintah Anda tanpa mengganggu giliran. Memerlukan Claude Code v2.1.275 atau lebih baru.411Untuk mengirim apa yang Anda antrekan tanpa menunggu, tekan `Ctrl+Enter`. Pesan antri Anda keluar segera, dengan draft Anda antri di belakangnya jika Anda telah mengetik satu. Memerlukan Claude Code v2.1.275 atau lebih baru.

412 412 

413Di terminal yang tidak melaporkan kunci yang diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa dan mengantrekan draft alih-alih; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Kedua tombol adalah pengikatan dari tindakan [`chat:sendNow`](/docs/id/keybindings#chat-actions).413Jika Anda mengantrekan perintah shell `!` di depan pesan Anda, tombol mengganggu giliran. Jika tidak, apa yang terjadi pada giliran tergantung pada apa yang Claude lakukan saat Anda menekan tombol:

414 

415* Menjalankan perintah shell, subagen, atau pekerjaan lain yang dapat dipindahkan ke [latar belakang](#background-bash-commands): pekerjaan itu berpindah ke latar belakang dan terus berjalan, dan Claude membaca pesan Anda dalam giliran yang sama

416* Hanya menulis respons, atau menjalankan sesuatu yang tidak dapat dipindahkan ke latar belakang: Claude Code mengganggu giliran dan mengirimkan pesan Anda berikutnya. Sebelum v2.1.281, tombol mengganggu giliran dalam kedua kasus

417 

418Dalam [mode shell](#shell-mode-with-prefix), tombol hanya mengantrekan perintah Anda. Di terminal yang tidak melaporkan kunci yang diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa dan mengantrekan draft alih-alih; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Kedua tombol adalah pengikatan dari tindakan [`chat:sendNow`](/docs/id/keybindings#chat-actions).

414 419 

415Tekan `Esc` untuk mengganggu giliran tanpa mengirimkan draft Anda. Claude Code menyimpan apa yang Anda antrekan dan mengirimkannya segera.420Tekan `Esc` untuk mengganggu giliran tanpa mengirimkan draft Anda. Claude Code menyimpan apa yang Anda antrekan dan mengirimkannya segera.

416 421 

keybindings.md +81 −65

Details

89| :--------------------- | :-------- | :--------------------------------------------------------------------------------------------------- |89| :--------------------- | :-------- | :--------------------------------------------------------------------------------------------------- |

90| `app:interrupt` | Ctrl+C | Batalkan operasi saat ini |90| `app:interrupt` | Ctrl+C | Batalkan operasi saat ini |

91| `app:exit` | Ctrl+D | Keluar dari Claude Code. Tekan dua kali dalam 800ms untuk mengonfirmasi |91| `app:exit` | Ctrl+D | Keluar dari Claude Code. Tekan dua kali dalam 800ms untuk mengonfirmasi |

92| `app:redraw` | (unbound) | Paksa terminal untuk digambar ulang |92| `app:redraw` | (unbound) | Paksa redraw terminal |

93| `app:toggleTodos` | Ctrl+T | Alihkan visibilitas daftar tugas Claude. Ini bukan tampilan background-task [`/tasks`](/docs/id/commands) |93| `app:toggleTodos` | Ctrl+T | Alihkan visibilitas daftar tugas Claude. Ini bukan tampilan background-task [`/tasks`](/docs/id/commands) |

94| `app:toggleTranscript` | Ctrl+O | Alihkan transkrip verbose |94| `app:toggleTranscript` | Ctrl+O | Alihkan transcript verbose |

95 95 

96<h3 id="history-actions">96<h3 id="history-actions">

97 Tindakan riwayat97 Tindakan riwayat


112Tindakan yang tersedia dalam konteks `Chat`:112Tindakan yang tersedia dalam konteks `Chat`:

113 113 

114| Tindakan | Default | Deskripsi |114| Tindakan | Default | Deskripsi |

115| :-------------------- | :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |115| :-------------------- | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

116| `chat:cancel` | Escape | Batalkan input saat ini |116| `chat:cancel` | Escape | Batalkan input saat ini |

117| `chat:clearInput` | Ctrl+L | Paksa gambar ulang layar penuh, mempertahankan input dan percakapan |117| `chat:clearInput` | Ctrl+L | Paksa redraw layar penuh, mempertahankan input dan percakapan |

118| `chat:clearScreen` | Cmd+K | Sama dengan `chat:clearInput`. Lihat [Hapus percakapan](/docs/id/fullscreen#clear-the-conversation) untuk cara Cmd+K berperilaku di iTerm2 dan Terminal.app |118| `chat:clearScreen` | Cmd+K | Sama dengan `chat:clearInput`. Lihat [Bersihkan percakapan](/docs/id/fullscreen#clear-the-conversation) untuk cara Cmd+K berperilaku di iTerm2 dan Terminal.app |

119| `chat:killAgents` | Ctrl+X Ctrl+K | Hentikan semua [subagen latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) dalam sesi ini dan matikan [balasan otomatis artefak](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own) untuk sisanya |119| `chat:killAgents` | Ctrl+X Ctrl+K | Hentikan semua [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang berjalan dalam sesi ini dan matikan [auto-replies artefak](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own) untuk sisanya |

120| `chat:cycleMode` | Shift+Tab\* | Mode izin siklus |120| `chat:cycleMode` | Shift+Tab\* | Mode izin siklus |

121| `chat:modelPicker` | Meta+P | Buka pemilih model |121| `chat:modelPicker` | Meta+P | Buka pemilih model |

122| `chat:fastMode` | Meta+O | Alihkan mode cepat |122| `chat:fastMode` | Meta+O | Alihkan mode cepat |

123| `chat:thinkingToggle` | Meta+T | Alihkan pemikiran yang diperluas |123| `chat:thinkingToggle` | Meta+T | Alihkan pemikiran yang diperluas |

124| `chat:submit` | Enter | Kirim pesan |124| `chat:submit` | Enter | Kirim pesan |

125| `chat:queueSubmit` | Ctrl+X Enter | Kirim pesan, ditandai untuk menunggu giliran: saat Claude sedang bekerja, Claude Code [antri](/docs/id/interactive-mode#queue-messages-while-claude-works) dan tidak pernah mengganggu giliran. Tidak seperti `chat:submit`, ini mengirimkan draf bahkan saat saran pelengkapan otomatis terbuka. Memerlukan v2.1.247 atau lebih baru |125| `chat:queueSubmit` | Ctrl+X Enter | Kirim pesan, ditandai untuk menunggu giliran: saat Claude sedang bekerja, Claude Code [mengantrekannya](/docs/id/interactive-mode#queue-messages-while-claude-works) dan tidak pernah mengganggu giliran. Tidak seperti `chat:submit`, ini mengirimkan draft bahkan saat saran autocomplete disorot. Memerlukan v2.1.247 atau lebih baru |

126| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Ganggu giliran yang sedang berjalan sehingga [pesan antri](/docs/id/interactive-mode#queue-messages-while-claude-works) Anda, dan draf Anda bersama mereka, keluar segera. Ketika tidak ada yang berjalan, ini mengirimkan draf, dan dalam [shell mode](/docs/id/interactive-mode#shell-mode-with-prefix) ini antri perintah tanpa mengganggu. Terminal yang tidak melaporkan kunci yang diperluas memberikan `Ctrl+Enter` sebagai `Enter` biasa, jadi `Ctrl+X Ctrl+S` adalah pengikatan yang berfungsi di terminal apa pun. Memerlukan v2.1.275 atau lebih baru |126| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Kirim [pesan antrian Anda](/docs/id/interactive-mode#queue-messages-while-claude-works), dan draft Anda bersama mereka, segera. [Ketika Claude Code mengirim apa yang Anda antrekan](/docs/id/interactive-mode#when-claude-code-sends-what-you-queued) mencakup apa yang terjadi pada giliran Claude yang sedang dikerjakan. Ketika tidak ada yang berjalan, kunci mengirimkan draft, dan dalam [shell mode](/docs/id/interactive-mode#shell-mode-with-prefix) hanya mengantrekan perintah. Terminal yang tidak melaporkan kunci yang diperluas mengirimkan `Ctrl+Enter` sebagai `Enter` biasa, jadi `Ctrl+X Ctrl+S` adalah binding yang berfungsi di terminal apa pun. Memerlukan v2.1.275 atau lebih baru |

127| `chat:newline` | Ctrl+J | Sisipkan baris baru tanpa mengirim |127| `chat:newline` | Ctrl+J | Sisipkan baris baru tanpa mengirim |

128| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Batalkan tindakan terakhir |128| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Batalkan tindakan terakhir |

129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Buka di editor eksternal. Pengiriman input [tampilan agen](/docs/id/agent-view#keyboard-shortcuts) juga mengikuti pengikatan pintasan keyboard tunggal tindakan ini |129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Buka di editor eksternal. [Dispatch input tampilan agen](/docs/id/agent-view#keyboard-shortcuts) juga mengikuti binding keystroke tunggal tindakan ini |

130| `chat:stash` | Ctrl+S | Simpan prompt saat ini |130| `chat:stash` | Ctrl+S | Simpan prompt saat ini |

131| `chat:imagePaste` | Ctrl+V (Alt+V di Windows dan WSL) | Tempel gambar dari clipboard. Di WSL, kedua pintasan keyboard terikat secara default |131| `chat:imagePaste` | Ctrl+V (Alt+V di Windows dan WSL) | Tempel gambar dari clipboard. Di WSL, kedua pintasan terikat secara default |

132 132 

133\*Di Windows tanpa mode VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), default ke Meta+M.133\*Di Windows tanpa mode VT (Node \<24.2.0/\<22.17.0, Bun \<1.2.23), default ke Meta+M.

134 134 

135<h3 id="autocomplete-actions">135<h3 id="autocomplete-actions">

136 Tindakan penyelesaian otomatis136 Tindakan autocomplete

137</h3>137</h3>

138 138 

139Tindakan yang tersedia dalam konteks `Autocomplete`:139Tindakan yang tersedia dalam konteks `Autocomplete`:


166 166 

167Sebelum v2.1.257, tindakan `confirm:toggleExplanation`, terikat ke `Ctrl+E` secara default, menampilkan penjelasan perintah yang dihasilkan model pada prompt izin Bash dan PowerShell.167Sebelum v2.1.257, tindakan `confirm:toggleExplanation`, terikat ke `Ctrl+E` secara default, menampilkan penjelasan perintah yang dihasilkan model pada prompt izin Bash dan PowerShell.

168 168 

169Dialog menggunakan `confirm:yes` dan `confirm:no` untuk menerima dan membatalkan bahkan ketika mereka tidak mengajukan pertanyaan ya-atau-tidak. Jika Anda mengikat huruf telanjang seperti `y` atau `n` dalam konteks ini, huruf juga bertindak pada dialog yang tidak pernah menampilkannya sebagai kunci. Dialog yang menampilkan `y` dan `n` sebagai kuncinya membaca huruf-huruf itu sendiri dan tidak memerlukan pengikatan.169Dialog menggunakan `confirm:yes` dan `confirm:no` untuk menerima dan membatalkan bahkan ketika mereka tidak mengajukan pertanyaan ya-atau-tidak. Jika Anda mengikat huruf telanjang seperti `y` atau `n` dalam konteks ini, huruf juga bertindak pada dialog yang tidak pernah menampilkannya sebagai kunci. Dialog yang menampilkan `y` dan `n` sebagai kuncinya membaca huruf-huruf itu sendiri dan tidak memerlukan binding.

170 170 

171Contoh ini mengikat `y` ke `confirm:yes` dan `n` ke `confirm:no`:171Contoh ini mengikat `y` ke `confirm:yes` dan `n` ke `confirm:no`:

172 172 


184}184}

185```185```

186 186 

187Sebelum v2.1.280, `y` juga terikat ke `confirm:yes` dan `n` ke `confirm:no` secara default. Jika Anda membuat `keybindings.json` Anda dengan `/keybindings` sebelum v2.1.280, file mencantumkan kedua pengikatan dan mereka tetap berlaku sampai Anda menghapus kedua baris itu.187Dengan binding ini, `y` dan `n` masih mengetik sebagai huruf saat [bidang teks](#text-fields) memiliki fokus.

188 

189Sebelum v2.1.280, `y` juga terikat ke `confirm:yes` dan `n` ke `confirm:no` secara default. Jika Anda membuat `keybindings.json` Anda dengan `/keybindings` sebelum v2.1.280, file mencantumkan kedua binding dan mereka tetap berlaku sampai Anda menghapus dua baris itu.

188 190 

189<h3 id="permission-actions">191<h3 id="permission-actions">

190 Tindakan izin192 Tindakan izin


193Tindakan yang tersedia dalam konteks `Confirmation` untuk dialog izin:195Tindakan yang tersedia dalam konteks `Confirmation` untuk dialog izin:

194 196 

195| Tindakan | Default | Deskripsi |197| Tindakan | Default | Deskripsi |

196| :----------------------- | :-------- | :----------------------------------------------------------------------------------------------------------- |198| :----------------------- | :-------- | :-------------------------------------------------------------------------------------------------------- |

197| `permission:toggleDebug` | (unbound) | Alihkan info debug izin. Default sebelumnya dari Ctrl+D dihapus dalam v2.1.146 karena mengaburkan `app:exit` |199| `permission:toggleDebug` | (unbound) | Alihkan info debug izin. Default sebelumnya dari Ctrl+D dihapus di v2.1.146 karena mengaburkan `app:exit` |

198 200 

199<h3 id="transcript-actions">201<h3 id="transcript-actions">

200 Tindakan transkrip202 Tindakan transcript

201</h3>203</h3>

202 204 

203Tindakan yang tersedia dalam konteks `Transcript`:205Tindakan yang tersedia dalam konteks `Transcript`:

204 206 

205| Tindakan | Default | Deskripsi |207| Tindakan | Default | Deskripsi |

206| :------------------------- | :---------------- | :----------------------------- |208| :------------------------- | :---------------- | :------------------------------ |

207| `transcript:toggleShowAll` | Ctrl+E | Alihkan tampilkan semua konten |209| `transcript:toggleShowAll` | Ctrl+E | Alihkan tampilkan semua konten |

208| `transcript:exit` | q, Ctrl+C, Escape | Keluar dari tampilan transkrip |210| `transcript:exit` | q, Ctrl+C, Escape | Keluar dari tampilan transcript |

209 211 

210`transcript:toggleShowAll` berlaku dalam renderer klasik saja; dalam [rendering fullscreen](/docs/id/fullscreen), penampil transkrip tidak menawarkan toggle tampilkan semua.212`transcript:toggleShowAll` berlaku dalam renderer klasik saja; dalam [rendering fullscreen](/docs/id/fullscreen), penampil transcript tidak menawarkan toggle tampilkan-semua.

211 213 

212<h3 id="history-search-actions">214<h3 id="history-search-actions">

213 Tindakan pencarian riwayat215 Tindakan pencarian riwayat


221| `historySearch:accept` | Escape, Tab | Terima pilihan |223| `historySearch:accept` | Escape, Tab | Terima pilihan |

222| `historySearch:cancel` | Ctrl+C | Batalkan pencarian |224| `historySearch:cancel` | Ctrl+C | Batalkan pencarian |

223| `historySearch:execute` | Enter | Jalankan perintah yang dipilih |225| `historySearch:execute` | Enter | Jalankan perintah yang dipilih |

224| `historySearch:cycleScope` | Ctrl+S | Siklus cakupan: sesi, proyek, di mana saja |226| `historySearch:cycleScope` | Ctrl+S | Cakupan siklus: sesi, proyek, di mana-mana |

225 227 

226Default `historySearch:next`, `historySearch:accept`, `historySearch:cancel`, dan `historySearch:execute` berlaku untuk pencarian riwayat inline dalam renderer klasik, yang selalu mencari prompt dari semua proyek. `historySearch:cycleScope` hanya berlaku dalam [rendering fullscreen](/docs/id/fullscreen), di mana `Ctrl+R` membuka dialog pencarian sebagai gantinya dan `Ctrl+S` mengubah cakupannya. Kunci lain dialog diperbaiki dan tidak dapat diubah: `Enter` atau `Tab` menempatkan kecocokan yang disorot dalam input prompt dan `Esc` membatalkan.228Default `historySearch:next`, `historySearch:accept`, `historySearch:cancel`, dan `historySearch:execute` berlaku untuk pencarian riwayat inline dalam renderer klasik, yang selalu mencari prompt dari semua proyek. `historySearch:cycleScope` hanya berlaku dalam [rendering fullscreen](/docs/id/fullscreen), di mana `Ctrl+R` membuka dialog pencarian sebagai gantinya dan `Ctrl+S` mengubah cakupannya. Kunci lain dialog sudah diperbaiki dan tidak dapat diikat ulang: `Enter` atau `Tab` menempatkan kecocokan yang disorot dalam input prompt dan `Esc` membatalkan.

227 229 

228<h3 id="task-actions">230<h3 id="task-actions">

229 Tindakan tugas231 Tindakan tugas


233 235 

234| Tindakan | Default | Deskripsi |236| Tindakan | Default | Deskripsi |

235| :---------------- | :-------------------- | :--------------------------------------------------------------------------------- |237| :---------------- | :-------------------- | :--------------------------------------------------------------------------------- |

236| `task:background` | Ctrl+B, Ctrl+X Ctrl+B | Tugas latar belakang saat ini. Akord Ctrl+X Ctrl+B menghindari konflik awalan tmux |238| `task:background` | Ctrl+B, Ctrl+X Ctrl+B | Tugas latar belakang saat ini. Chord Ctrl+X Ctrl+B menghindari konflik awalan tmux |

237 239 

238<h3 id="theme-actions">240<h3 id="theme-actions">

239 Tindakan tema241 Tindakan tema


286Tindakan yang tersedia dalam konteks `Footer`:288Tindakan yang tersedia dalam konteks `Footer`:

287 289 

288| Tindakan | Default | Deskripsi |290| Tindakan | Default | Deskripsi |

289| :---------------------- | :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |291| :---------------------- | :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

290| `footer:next` | Right | Item footer berikutnya |292| `footer:next` | Right | Item footer berikutnya |

291| `footer:previous` | Left | Item footer sebelumnya |293| `footer:previous` | Left | Item footer sebelumnya |

292| `footer:up` | Up | Navigasi ke atas dalam footer (batalkan pilihan di atas) |294| `footer:up` | Up | Navigasi ke atas di footer (batalkan pilihan di atas) |

293| `footer:down` | Down | Navigasi ke bawah dalam footer |295| `footer:down` | Down | Navigasi ke bawah di footer |

294| `footer:openSelected` | Enter | Buka item footer yang dipilih |296| `footer:openSelected` | Enter | Buka item footer yang dipilih |

295| `footer:clearSelection` | Escape | Hapus pilihan footer |297| `footer:clearSelection` | Escape | Bersihkan pilihan footer |

296| `footer:dismiss` | Backspace, Delete | Hapus tautan [artefak](/docs/id/artifacts) yang dipilih dari footer; artefak yang dipublikasikan itu sendiri tidak terpengaruh. Pada baris footer lainnya, kunci ini tidak memiliki efek. Memerlukan v2.1.217 atau lebih baru |298| `footer:dismiss` | Backspace, Delete | Tutup tautan [artefak](/docs/id/artifacts) yang dipilih dari footer; artefak yang dipublikasikan itu sendiri tidak terpengaruh. Pada baris footer lainnya, kunci ini tidak berpengaruh. Memerlukan v2.1.217 atau lebih baru |

297 299 

298Saat item footer dipilih, seperti baris dalam panel agen di bawah prompt, `Enter` membukanya bahkan ketika Anda mengikat ulang `Enter` dalam konteks `Chat` ke `chat:queueSubmit` atau `chat:newline`.300Saat item footer dipilih, seperti baris di panel agen di bawah prompt, `Enter` membukanya bahkan ketika Anda mengikat ulang `Enter` dalam konteks `Chat` ke `chat:queueSubmit` atau `chat:newline`.

299 301 

300Pengikatan `Chat` pada kunci yang konteks `Footer` tidak ikat, seperti `Shift+Tab` untuk `chat:cycleMode`, terus bekerja saat item dipilih.302Binding `Chat` pada kunci yang tidak diikat konteks `Footer`, seperti `Shift+Tab` untuk `chat:cycleMode`, terus bekerja saat item dipilih.

301 303 

302<h3 id="message-selector-actions">304<h3 id="message-selector-actions">

303 Tindakan pemilih pesan305 Tindakan pemilih pesan


306Tindakan yang tersedia dalam konteks `MessageSelector`:308Tindakan yang tersedia dalam konteks `MessageSelector`:

307 309 

308| Tindakan | Default | Deskripsi |310| Tindakan | Default | Deskripsi |

309| :----------------------- | :---------------------------------------- | :----------------- |311| :----------------------- | :---------------------------------------- | :--------------------------- |

310| `messageSelector:up` | Up, K, Ctrl+P | Naik dalam daftar |312| `messageSelector:up` | Up, K, Ctrl+P | Pindah ke atas dalam daftar |

311| `messageSelector:down` | Down, J, Ctrl+N | Turun dalam daftar |313| `messageSelector:down` | Down, J, Ctrl+N | Pindah ke bawah dalam daftar |

312| `messageSelector:top` | Ctrl+Up, Shift+Up, Meta+Up, Shift+K | Lompat ke atas |314| `messageSelector:top` | Ctrl+Up, Shift+Up, Meta+Up, Shift+K | Lompat ke atas |

313| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | Lompat ke bawah |315| `messageSelector:bottom` | Ctrl+Down, Shift+Down, Meta+Down, Shift+J | Lompat ke bawah |

314| `messageSelector:select` | Enter | Pilih pesan |316| `messageSelector:select` | Enter | Pilih pesan |


320Tindakan yang tersedia dalam konteks `DiffDialog`:322Tindakan yang tersedia dalam konteks `DiffDialog`:

321 323 

322| Tindakan | Default | Deskripsi |324| Tindakan | Default | Deskripsi |

323| :-------------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |325| :-------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

324| `diff:dismiss` | Escape | Tutup penampil diff; dari tampilan detail, kembali ke daftar file sebagai gantinya |326| `diff:dismiss` | Escape | Tutup penampil diff; dari tampilan detail, kembali ke daftar file sebagai gantinya |

325| `diff:previousSource` | Left | Sumber diff sebelumnya |327| `diff:previousSource` | Left | Sumber diff sebelumnya |

326| `diff:nextSource` | Right | Sumber diff berikutnya |328| `diff:nextSource` | Right | Sumber diff berikutnya |

327| `diff:previousFile` | Up, K | File sebelumnya dalam daftar file; gulir ke atas satu baris dalam tampilan detail |329| `diff:previousFile` | Up, K | File sebelumnya dalam daftar file; gulir ke atas satu baris dalam tampilan detail |

328| `diff:nextFile` | Down, J | File berikutnya dalam daftar file; gulir ke bawah satu baris dalam tampilan detail |330| `diff:nextFile` | Down, J | File berikutnya dalam daftar file; gulir ke bawah satu baris dalam tampilan detail |

329| `diff:viewDetails` | Enter | Lihat detail diff |331| `diff:viewDetails` | Enter | Lihat detail diff |

330| `diff:back` | (unbound) | Kembali dalam penampil diff. Escape melakukan tindakan kembali melalui `diff:dismiss`. Default sebelumnya dari Left dalam tampilan detail dihapus dalam v2.1.203 |332| `diff:back` | (unbound) | Kembali dalam penampil diff. Escape melakukan tindakan kembali melalui `diff:dismiss`. Default sebelumnya dari Left dalam tampilan detail dihapus di v2.1.203 |

331 333 

332Tampilan detail diff juga mengikat kunci gaya pager ke [tindakan scroll](#scroll-actions) standar. Pengikatan ini adalah bagian dari konteks `DiffDialog` dan hanya berlaku dalam tampilan detail; default konteks `Scroll` yang tercantum di bawah [Tindakan scroll](#scroll-actions) tidak berubah.334Tampilan detail diff juga mengikat kunci gaya pager ke [tindakan scroll](#scroll-actions) standar. Binding ini adalah bagian dari konteks `DiffDialog` dan hanya berlaku dalam tampilan detail; default konteks `Scroll` yang tercantum di bawah [Tindakan scroll](#scroll-actions) tidak berubah.

333 335 

334| Tindakan | Default | Deskripsi |336| Tindakan | Default | Deskripsi |

335| :-------------------- | :------------- | :------------------------------- |337| :-------------------- | :------------- | :------------------------------- |


344 Tindakan panel diff346 Tindakan panel diff

345</h3>347</h3>

346 348 

347Tindakan untuk [panel diff](/docs/id/interactive-mode#diff-panel) yang `/diff` buka dalam rendering fullscreen. `app:cycleDiffBase` berada dalam konteks `DiffPanel`, yang aktif saat panel terbuka; yang lainnya adalah `Global`. Panel memerlukan Claude Code v2.1.260 atau lebih baru.349Tindakan untuk [panel diff](/docs/id/interactive-mode#diff-panel) yang `/diff` buka dalam rendering fullscreen. `app:cycleDiffBase` berada dalam konteks `DiffPanel`, yang aktif saat panel terbuka; yang lain adalah `Global`. Panel memerlukan Claude Code v2.1.260 atau lebih baru.

348 350 

349| Tindakan | Default | Deskripsi |351| Tindakan | Default | Deskripsi |

350| :-------------------------- | :------------------- | :---------------------------------------------------------------------------- |352| :-------------------------- | :------------------- | :-------------------------------------------------------------------------- |

351| `app:toggleReplTab` | (unbound) | Buka atau tutup panel diff, sama dengan menjalankan `/diff` |353| `app:toggleReplTab` | (unbound) | Buka atau tutup panel diff, sama seperti menjalankan `/diff` |

352| `app:cycleDiffBase` | Ctrl+X B | Siklus basis perbandingan panel: sesi ini, tidak berkomitmen, kemudian cabang |354| `app:cycleDiffBase` | Ctrl+X B | Ubah basis perbandingan panel: sesi ini, tidak berkomitmen, kemudian cabang |

353| `app:diffFileListUp` | Ctrl+Up, Meta+Up | Gulir daftar file panel ke atas saat meluap |355| `app:diffFileListUp` | Ctrl+Up, Meta+Up | Gulir daftar file panel ke atas saat meluap |

354| `app:diffFileListDown` | Ctrl+Down, Meta+Down | Gulir daftar file panel ke bawah saat meluap |356| `app:diffFileListDown` | Ctrl+Down, Meta+Down | Gulir daftar file panel ke bawah saat meluap |

355| `app:toggleDiffNoiseFilter` | (unbound) | Tampilkan atau sembunyikan file uji dan yang dihasilkan dalam panel |357| `app:toggleDiffNoiseFilter` | (unbound) | Tampilkan atau sembunyikan file uji dan yang dihasilkan dalam panel |

356| `app:toggleDiffPreSession` | (unbound) | Perluas atau tutup perubahan dari sebelum sesi ini |358| `app:toggleDiffPreSession` | (unbound) | Perluas atau ciutkan perubahan dari sebelum sesi ini |

357 359 

358<h3 id="model-picker-actions">360<h3 id="model-picker-actions">

359 Tindakan pemilih model361 Tindakan pemilih model


368| `modelPicker:thisSessionOnly` | s | Terapkan model yang disorot ke sesi ini saja |370| `modelPicker:thisSessionOnly` | s | Terapkan model yang disorot ke sesi ini saja |

369 371 

370<h3 id="effort-slider-actions">372<h3 id="effort-slider-actions">

371 Tindakan effort slider373 Tindakan slider upaya

372</h3>374</h3>

373 375 

374Tindakan yang tersedia dalam konteks `EffortSlider`, slider yang terbuka saat Anda menjalankan `/effort` tanpa argumen. Kunci Left, Right, Enter, dan Escape slider tidak dapat diubah.376Tindakan yang tersedia dalam konteks `EffortSlider`, slider yang terbuka saat Anda menjalankan `/effort` tanpa argumen. Kunci Left, Right, Enter, dan Escape slider tidak dapat diikat ulang.

375 377 

376| Tindakan | Default | Deskripsi |378| Tindakan | Default | Deskripsi |

377| :----------------------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------- |379| :----------------------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------- |


384Tindakan yang tersedia dalam konteks `Select`:386Tindakan yang tersedia dalam konteks `Select`:

385 387 

386| Tindakan | Default | Deskripsi |388| Tindakan | Default | Deskripsi |

387| :---------------- | :-------------- | :---------------------- |389| :---------------- | :-------------- | :-------------------------------- |

388| `select:next` | Down, J, Ctrl+N | Opsi berikutnya |390| `select:next` | Down, J, Ctrl+N | Opsi berikutnya |

389| `select:previous` | Up, K, Ctrl+P | Opsi sebelumnya |391| `select:previous` | Up, K, Ctrl+P | Opsi sebelumnya |

390| `select:pageUp` | PageUp | Naik satu halaman opsi |392| `select:pageUp` | PageUp | Pindah ke atas satu halaman opsi |

391| `select:pageDown` | PageDown | Turun satu halaman opsi |393| `select:pageDown` | PageDown | Pindah ke bawah satu halaman opsi |

392| `select:first` | Home | Opsi pertama |394| `select:first` | Home | Opsi pertama |

393| `select:last` | End | Opsi terakhir |395| `select:last` | End | Opsi terakhir |

394| `select:accept` | Enter | Terima pilihan |396| `select:accept` | Enter | Terima pilihan |

395| `select:cancel` | Escape | Batalkan pilihan |397| `select:cancel` | Escape | Batalkan pilihan |

396 398 

397Claude Code menerapkan pengikatan `select:pageUp`, `select:pageDown`, `select:first`, dan `select:last` Anda dalam menu `/skills`. Dalam sebagian besar daftar lainnya, seperti pemilih `/model`, pengikatan `select:first` dan `select:last` Anda berlaku. PageUp dan PageDown halaman melalui opsi dalam daftar-daftar itu terlepas dari pengikatan Anda.399Claude Code menerapkan binding `select:pageUp`, `select:pageDown`, `select:first`, dan `select:last` Anda dalam menu `/skills`. Dalam sebagian besar daftar lainnya, seperti pemilih `/model`, binding `select:first` dan `select:last` Anda berlaku. PageUp dan PageDown halaman melalui opsi dalam daftar itu terlepas dari binding Anda.

398 400 

399Sebelum v2.1.280, daftar-daftar lain itu mengabaikan Home, End, dan pengikatan `select:first` dan `select:last` Anda.401Sebelum v2.1.280, daftar lain itu mengabaikan Home, End, dan binding `select:first` dan `select:last` Anda.

400 402 

401<h3 id="plugin-actions">403<h3 id="plugin-actions">

402 Tindakan plugin404 Tindakan plugin


405Tindakan yang tersedia dalam konteks `Plugin`:407Tindakan yang tersedia dalam konteks `Plugin`:

406 408 

407| Tindakan | Default | Deskripsi |409| Tindakan | Default | Deskripsi |

408| :---------------- | :------ | :----------------------------------------------------------------------------------------------- |410| :---------------- | :------ | :--------------------------------------------------------------------------- |

409| `plugin:toggle` | Space | Alihkan pemilihan plugin |411| `plugin:toggle` | Space | Alihkan pilihan plugin |

410| `plugin:install` | I | Instal plugin yang dipilih |412| `plugin:install` | I | Instal plugin yang dipilih |

411| `plugin:favorite` | F | Tandai plugin yang dipilih sebagai favorit sehingga diurutkan di dekat bagian atas tab Installed |413| `plugin:favorite` | F | Favoritkan plugin yang dipilih sehingga disortir di dekat atas tab Installed |

412 414 

413<h3 id="settings-actions">415<h3 id="settings-actions">

414 Tindakan pengaturan416 Tindakan pengaturan

415</h3>417</h3>

416 418 

417Tindakan yang tersedia dalam konteks `Settings`. Tindakan `select:accept` dan `confirm:no` digunakan kembali dari konteks [Select](#select-actions) dan [Confirmation](#confirmation-actions) dengan perilaku khusus Settings: perubahan diterapkan ke setiap pengaturan segera setelah Anda mengubahnya, jadi Escape menutup panel dengan perubahan Anda yang sudah disimpan daripada menolak.419Tindakan yang tersedia dalam konteks `Settings`. Tindakan `select:accept` dan `confirm:no` digunakan kembali dari konteks [Select](#select-actions) dan [Confirmation](#confirmation-actions) dengan perilaku spesifik Settings: perubahan berlaku untuk setiap pengaturan segera setelah Anda mengubahnya, jadi Escape menutup panel dengan perubahan Anda disimpan daripada menolak.

418 420 

419| Tindakan | Default | Deskripsi |421| Tindakan | Default | Deskripsi |

420| :---------------- | :----------- | :----------------------------------------------------- |422| :---------------- | :----------- | :----------------------------------------------------- |


434| `agents:switchView` | Ctrl+S | Alihkan [pengelompokan sesi](/docs/id/agent-view#organize-the-list) antara state dan direktori |436| `agents:switchView` | Ctrl+S | Alihkan [pengelompokan sesi](/docs/id/agent-view#organize-the-list) antara state dan direktori |

435| `agents:togglePin` | Ctrl+T | [Pin atau unpin](/docs/id/agent-view#organize-the-list) sesi yang dipilih |437| `agents:togglePin` | Ctrl+T | [Pin atau unpin](/docs/id/agent-view#organize-the-list) sesi yang dipilih |

436 438 

437Saat tampilan agen terbuka, Claude Code menggunakan pengikatan `Agents` untuk kunci apa pun yang konteks `Agents` ikat, dan mengabaikan pengikatan `Chat` atau `Global` pada kunci yang sama. Misalnya, menekan Ctrl+S dalam tampilan agen mengalihkan pengelompokan sesi daripada memicu `chat:stash` default.439Saat tampilan agen terbuka, Claude Code menggunakan binding `Agents` untuk kunci apa pun yang diikat konteks `Agents`, dan mengabaikan binding `Chat` atau `Global` pada kunci yang sama. Misalnya, menekan Ctrl+S dalam tampilan agen mengalihkan pengelompokan sesi daripada memicu default `chat:stash`.

438 440 

439Pintasan editor eksternal pengiriman input bukan tindakan `Agents`. Tampilan agen mengikuti pengikatan `chat:externalEditor` konteks `Chat`, Ctrl+G secara default.441Pintasan editor eksternal dispatch input bukan tindakan `Agents`. Tampilan agen mengikuti binding `chat:externalEditor` konteks `Chat`, Ctrl+G secara default.

440 442 

441Pengikatan dipecat pada keystroke tunggal dalam tampilan agen, jadi akord Ctrl+X Ctrl+E yang terikat ke `chat:externalEditor` tidak membuka editor di sana.443Binding api pada keystroke tunggal dalam tampilan agen, jadi chord Ctrl+X Ctrl+E yang terikat ke `chat:externalEditor` tidak membuka editor di sana.

442 444 

443<h3 id="voice-actions">445<h3 id="voice-actions">

444 Tindakan suara446 Tindakan suara

445</h3>447</h3>

446 448 

447Tindakan yang tersedia dalam konteks `Chat` ketika [dikte suara](/docs/id/voice-dictation) diaktifkan:449Tindakan yang tersedia dalam konteks `Chat` saat [dikte suara](/docs/id/voice-dictation) diaktifkan:

448 450 

449| Tindakan | Default | Deskripsi |451| Tindakan | Default | Deskripsi |

450| :----------------- | :------ | :--------------------------------------------- |452| :----------------- | :------ | :------------------------------------------------------ |

451| `voice:pushToTalk` | Space | Tahan atau ketuk tergantung pada mode `/voice` |453| `voice:pushToTalk` | Space | Dikte prompt. Tahan atau ketuk tergantung mode `/voice` |

452 454 

453<h3 id="scroll-actions">455<h3 id="scroll-actions">

454 Tindakan scroll456 Tindakan scroll

455</h3>457</h3>

456 458 

457Tindakan yang tersedia dalam konteks `Scroll` ketika [rendering fullscreen](/docs/id/fullscreen) diaktifkan:459Tindakan yang tersedia dalam konteks `Scroll` saat [rendering fullscreen](/docs/id/fullscreen) diaktifkan:

458 460 

459| Tindakan | Default | Deskripsi |461| Tindakan | Default | Deskripsi |

460| :-------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------------------- |462| :-------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------------------- |


469| `scroll:fullPageUp` | (unbound) | Gulir ke atas tinggi viewport penuh |471| `scroll:fullPageUp` | (unbound) | Gulir ke atas tinggi viewport penuh |

470| `scroll:fullPageDown` | (unbound) | Gulir ke bawah tinggi viewport penuh |472| `scroll:fullPageDown` | (unbound) | Gulir ke bawah tinggi viewport penuh |

471| `selection:copy` | Ctrl+Shift+C / Cmd+C | Salin teks yang dipilih ke clipboard |473| `selection:copy` | Ctrl+Shift+C / Cmd+C | Salin teks yang dipilih ke clipboard |

472| `selection:clear` | (unbound) | Hapus pemilihan teks aktif. Memerlukan v2.1.234 atau lebih baru |474| `selection:clear` | (unbound) | Bersihkan pilihan teks aktif. Memerlukan v2.1.234 atau lebih baru |

473| `selection:extendLeft` | Shift+Left | Perluas pemilihan aktif satu kolom ke kiri |475| `selection:extendLeft` | Shift+Left | Perluas pilihan aktif satu kolom ke kiri |

474| `selection:extendRight` | Shift+Right | Perluas pemilihan aktif satu kolom ke kanan |476| `selection:extendRight` | Shift+Right | Perluas pilihan aktif satu kolom ke kanan |

475| `selection:extendUp` | Shift+Up | Perluas pemilihan aktif satu baris ke atas. Menggulir viewport ketika pemilihan mencapai tepi atas |477| `selection:extendUp` | Shift+Up | Perluas pilihan aktif satu baris ke atas. Menggulir viewport saat pilihan mencapai tepi atas |

476| `selection:extendDown` | Shift+Down | Perluas pemilihan aktif satu baris ke bawah. Menggulir viewport ketika pemilihan mencapai tepi bawah |478| `selection:extendDown` | Shift+Down | Perluas pilihan aktif satu baris ke bawah. Menggulir viewport saat pilihan mencapai tepi bawah |

477| `selection:extendLineStart` | Shift+Home | Perluas pemilihan aktif ke awal baris |479| `selection:extendLineStart` | Shift+Home | Perluas pilihan aktif ke awal baris |

478| `selection:extendLineEnd` | Shift+End | Perluas pemilihan aktif ke akhir baris |480| `selection:extendLineEnd` | Shift+End | Perluas pilihan aktif ke akhir baris |

479 481 

480<h2 id="keystroke-syntax">482<h2 id="keystroke-syntax">

481 Sintaks keystroke483 Sintaks keystroke


634| Ctrl+A | Awalan GNU screen |636| Ctrl+A | Awalan GNU screen |

635| Ctrl+Z | Suspend proses Unix (SIGTSTP) |637| Ctrl+Z | Suspend proses Unix (SIGTSTP) |

636 638 

639<h2 id="text-fields">

640 Bidang teks

641</h2>

642 

643Jika Anda mengikat huruf, digit, atau Spasi yang telah ditentukan, Anda masih dapat mengetik karakter tersebut di bidang teks dalam dialog atau panel. Salah satu bidang tersebut adalah jawaban `Other` untuk pertanyaan yang diajukan Claude. Saat bidang memiliki fokus, tombol yang dapat dicetak yang Anda tekan tanpa Ctrl, Alt, atau Cmd akan masuk ke bidang, dan Claude Code tidak akan mencocokkannya dengan pintasan keyboard Anda.

644 

645Kunci-kunci ini masih menjalankan pintasan keyboard mereka saat bidang memiliki fokus:

646 

647* Kunci yang tidak mengetik karakter, seperti Enter, Escape, Tab, dan tombol panah

648* Tombol apa pun yang ditekan dengan Ctrl, Alt, atau Cmd

649* Keystroke kedua dari [chord](#chords) yang sudah sedang berlangsung

650 

651Pada prompt utama, Claude Code mencocokkan setiap kunci terhadap konteks aktif, seperti `Chat`, dan mengetik kunci hanya ketika tidak ada pintasan keyboard yang mengambilnya.

652 

637<h2 id="vim-mode-interaction">653<h2 id="vim-mode-interaction">

638 Interaksi mode vim654 Interaksi mode vim

639</h2>655</h2>

Details

202 Reduce file reads with code intelligence202 Reduce file reads with code intelligence

203</h3>203</h3>

204 204 

205Dalam codebase besar, menemukan di mana simbol didefinisikan atau digunakan dapat menghabiskan banyak pembacaan file dan panggilan grep. [Plugin code intelligence](/docs/id/discover-plugins#code-intelligence) menghubungkan Claude ke language server sehingga dapat melompat ke definisi, menemukan referensi, dan permukaan kesalahan tipe secara langsung bukan memindai pohon.205Dalam codebase besar, menemukan di mana simbol didefinisikan atau digunakan dapat menghabiskan banyak pembacaan file dan panggilan grep. [Plugin code intelligence](/docs/id/plugins/code-intelligence) menghubungkan Claude ke language server sehingga dapat melompat ke definisi, menemukan referensi, dan permukaan kesalahan tipe secara langsung bukan memindai pohon.

206 206 

207Marketplace resmi memiliki plugin untuk TypeScript, Python, Go, Rust, dan bahasa umum lainnya. Jalankan perintah di bawah ini di dalam sesi Claude Code untuk menginstal plugin TypeScript:207Marketplace resmi memiliki plugin untuk TypeScript, Python, Go, Rust, dan bahasa umum lainnya. Jalankan perintah di bawah ini di dalam sesi Claude Code untuk menginstal plugin TypeScript:

208 208 


213Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:213Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

214 214 

215* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.215* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.

216* Plugin [tidak ditemukan di marketplace](/docs/id/discover-plugins#install-plugins): periksa nama plugin.216* Plugin [tidak ditemukan di marketplace](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

217 217 

218Untuk mengaktifkan plugin untuk semua orang di repository daripada menginstalnya sendiri, tambahkan ke pengaturan proyek [`enabledPlugins`](/docs/id/settings-reference#plugin-settings).218Untuk mengaktifkan plugin untuk semua orang di repository daripada menginstalnya sendiri, tambahkan ke pengaturan proyek [`enabledPlugins`](/docs/id/settings-reference#plugin-settings).

219 219 

220Plugin code intelligence memerlukan biner language server bahasa di setiap mesin pengembang. Lihat [biner mana yang diperlukan setiap bahasa](/docs/id/discover-plugins#code-intelligence). Menginstal dari marketplace resmi memerlukan akses jaringan ke GitHub, di mana marketplace dihosting. Di jaringan terbatas, [tambahkan marketplace dari host Git internal atau jalur lokal](/docs/id/discover-plugins#add-from-other-git-hosts) sebagai gantinya.220Plugin code intelligence memerlukan biner language server bahasa di setiap mesin pengembang. Lihat [biner mana yang diperlukan setiap bahasa](/docs/id/plugins/code-intelligence). Menginstal dari marketplace resmi memerlukan akses jaringan ke GitHub, di mana marketplace dihosting. Di jaringan terbatas, [tambahkan marketplace dari host Git internal atau jalur lokal](/docs/id/plugins/install#add-a-marketplace) sebagai gantinya.

221 221 

222Ini berpasangan baik dengan `claudeMdExcludes` dan aturan `Read` deny di atas. Mereka menjaga konten yang tidak relevan keluar dari konteks, dan code intelligence menjaga Claude dari membaca melalui apa yang tersisa untuk menemukan definisi.222Ini berpasangan baik dengan `claudeMdExcludes` dan aturan `Read` deny di atas. Mereka menjaga konten yang tidak relevan keluar dari konteks, dan code intelligence menjaga Claude dari membaca melalui apa yang tersisa untuk menemukan definisi.

223 223 


395 395 

396Nama selalu dimuat, tetapi [ketika ada banyak, beberapa skills kehilangan deskripsi mereka sepenuhnya](/docs/id/skills#skill-descriptions-are-cut-short), yang dapat menghapus kata kunci Claude gunakan untuk memutuskan apakah skill berlaku. Jaga deskripsi tetap pendek dan pimpin dengan kata yang permintaan akan berisi, seperti "menulis atau memodifikasi tes di `packages/api/`".396Nama selalu dimuat, tetapi [ketika ada banyak, beberapa skills kehilangan deskripsi mereka sepenuhnya](/docs/id/skills#skill-descriptions-are-cut-short), yang dapat menghapus kata kunci Claude gunakan untuk memutuskan apakah skill berlaku. Jaga deskripsi tetap pendek dan pimpin dengan kata yang permintaan akan berisi, seperti "menulis atau memodifikasi tes di `packages/api/`".

397 397 

398Untuk skills yang banyak direktori bagikan, seperti konvensi PR atau checklist deploy, letakkan di `.claude/skills/` repository root sehingga mereka dimuat dari direktori awal apa pun. Ketika shared skills memerlukan riwayat versi mereka sendiri atau harus bekerja di seluruh repositories, paketkan sebagai [plugin](/docs/id/plugins) sebagai gantinya. Plugin skills menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak pernah bertabrakan dengan skills per-direktori. Tim platform dapat memversi dan memperbarui mereka di satu tempat.398Untuk skills yang banyak direktori bagikan, seperti konvensi PR atau checklist deploy, letakkan di `.claude/skills/` repository root sehingga mereka dimuat dari direktori awal apa pun. Ketika shared skills memerlukan riwayat versi mereka sendiri atau harus bekerja di seluruh repositories, paketkan sebagai [plugin](/docs/id/plugins/overview) sebagai gantinya. Plugin skills menggunakan namespace `plugin-name:skill-name`, jadi mereka tidak pernah bertabrakan dengan skills per-direktori. Tim platform dapat memversi dan memperbarui mereka di satu tempat.

399 399 

400Untuk menemukan skills mana yang tidak digunakan, aktifkan [logs exporter](/docs/id/monitoring-usage) OpenTelemetry dan atur `OTEL_LOG_TOOL_DETAILS=1` sehingga nama skill dicatat verbatim bukan diredaksi. Event [`skill_activated`](/docs/id/monitoring-usage#skill-activated-event) mencatat setiap invokasi dalam atribut `skill.name`-nya, dan `invocation_trigger` mencatat apakah perintah, Claude, atau skill bersarang menginvokasinya, yang memberi tahu Anda apa yang harus dikonsolidasikan atau dihentikan.400Untuk menemukan skills mana yang tidak digunakan, aktifkan [logs exporter](/docs/id/monitoring-usage) OpenTelemetry dan atur `OTEL_LOG_TOOL_DETAILS=1` sehingga nama skill dicatat verbatim bukan diredaksi. Event [`skill_activated`](/docs/id/monitoring-usage#skill-activated-event) mencatat setiap invokasi dalam atribut `skill.name`-nya, dan `invocation_trigger` mencatat apakah perintah, Claude, atau skill bersarang menginvokasinya, yang memberi tahu Anda apa yang harus dikonsolidasikan atau dihentikan.

401 401 


408Pindahkan konvensi dan konten referensi keluar dari CLAUDE.md yang selalu dimuat dan ke mekanisme yang dimuat sesuai permintaan:408Pindahkan konvensi dan konten referensi keluar dari CLAUDE.md yang selalu dimuat dan ke mekanisme yang dimuat sesuai permintaan:

409 409 

410* [Skills](/docs/id/skills): materi referensi Claude dimuat hanya ketika relevan dengan tugas410* [Skills](/docs/id/skills): materi referensi Claude dimuat hanya ketika relevan dengan tugas

411* [Plugins](/docs/id/plugins): bundel terversi dari skills, hooks, dan perintah yang tim platform miliki secara terpusat411* [Plugins](/docs/id/plugins/overview): bundel terversi dari skills, hooks, dan perintah yang tim platform miliki secara terpusat

412* [MCP servers](/docs/id/mcp): jika organisasi Anda sudah menjalankan pencarian kode atau indeks RAG di atas repository, eksposnya sebagai alat MCP sehingga Claude menanyainya bukan membaca file secara langsung412* [MCP servers](/docs/id/mcp): jika organisasi Anda sudah menjalankan pencarian kode atau indeks RAG di atas repository, eksposnya sebagai alat MCP sehingga Claude menanyainya bukan membaca file secara langsung

413 413 

414Lihat [pengaturan yang dikelola server atau endpoint](/docs/id/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) untuk bagaimana tim platform dapat memberlakukan ini secara terpusat.414Lihat [pengaturan yang dikelola server atau endpoint](/docs/id/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) untuk bagaimana tim platform dapat memberlakukan ini secara terpusat.

managed-mcp.md +1 −1

Details

41| **Tanpa pembatasan** | Pengguna menambahkan apa pun | Jangan terapkan konfigurasi MCP terkelola apa pun |41| **Tanpa pembatasan** | Pengguna menambahkan apa pun | Jangan terapkan konfigurasi MCP terkelola apa pun |

42 42 

43<Note>43<Note>

44 Claude Code tidak memiliki registri server MCP bawaan yang dapat dijelajahi dan diinstal pengguna. Untuk pola katalog yang disetujui, bagikan daftar yang disetujui dan perintah `claude mcp add` di tempat pengguna Anda akan menemukannya, seperti wiki internal, atau distribusikan server sebagai plugin melalui [marketplace plugin terkelola](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) sehingga pengguna dapat menjelajahi dan menginstalnya dari `/plugin`.44 Claude Code tidak memiliki registri server MCP bawaan yang dapat dijelajahi dan diinstal pengguna. Untuk pola katalog yang disetujui, bagikan daftar yang disetujui dan perintah `claude mcp add` di tempat pengguna Anda akan menemukannya, seperti wiki internal, atau distribusikan server sebagai plugin melalui [marketplace plugin terkelola](/docs/id/plugins/org#restrict-what-users-can-install) sehingga pengguna dapat menjelajahi dan menginstalnya dari `/plugin`.

45</Note>45</Note>

46 46 

47<h2 id="exclusive-control-with-managed-mcp-json">47<h2 id="exclusive-control-with-managed-mcp-json">

Details

95 * **Di sandbox VM penuh**: ketika konfigurasi terkelola Claude Desktop Anda menetapkan [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code berjalan di dalam mesin virtual di mana kebijakan MDM perangkat dan file pengaturan terkelola tidak ada.95 * **Di sandbox VM penuh**: ketika konfigurasi terkelola Claude Desktop Anda menetapkan [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code berjalan di dalam mesin virtual di mana kebijakan MDM perangkat dan file pengaturan terkelola tidak ada.

96 * **Sesi Cowork jarak jauh**: ini berjalan di VM yang dikelola Anthropic, di mana Claude Code tidak memiliki kebijakan perangkat untuk dibaca.96 * **Sesi Cowork jarak jauh**: ini berjalan di VM yang dikelola Anthropic, di mana Claude Code tidak memiliki kebijakan perangkat untuk dibaca.

97 97 

98 Di mana pun sesi berjalan, claude.ai menerapkan daftar [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dan [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) konsol admin itu sendiri ketika siapa pun menambahkan marketplace dari repositori git di claude.ai atau dari **Customize** di tab Cowork. [Bagaimana pembatasan bekerja](/docs/id/plugin-marketplaces#how-restrictions-work) menjelaskan pemeriksaan itu. Tabel [cakupan permukaan](/docs/id/model-config#surface-coverage) membandingkan Cowork dengan permukaan lainnya.98 Di mana pun sesi berjalan, claude.ai menerapkan daftar [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dan [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) konsol admin itu sendiri ketika siapa pun menambahkan marketplace dari repositori git di claude.ai atau dari **Customize** di tab Cowork. [Bagaimana pembatasan bekerja](/docs/id/plugins/org#restrict-what-users-can-install) menjelaskan pemeriksaan itu. Tabel [cakupan permukaan](/docs/id/model-config#surface-coverage) membandingkan Cowork dengan permukaan lainnya.

99* **Sesi yang berjalan**: sebagian besar perubahan mencapai sesi yang berjalan sesuai jadwal dalam [tabel mekanisme pengiriman](#choose-a-delivery-mechanism), tanpa restart.99* **Sesi yang berjalan**: sebagian besar perubahan mencapai sesi yang berjalan sesuai jadwal dalam [tabel mekanisme pengiriman](#choose-a-delivery-mechanism), tanpa restart.

100 * Perubahan pada [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/id/settings-reference#requiredminimumversion), dan [beberapa kunci yang dapat diedit pengguna](/docs/id/settings#when-edits-take-effect) berlaku pada startup sesi berikutnya.100 * Perubahan pada [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/id/settings-reference#requiredminimumversion), dan [beberapa kunci yang dapat diedit pengguna](/docs/id/settings#when-edits-take-effect) berlaku pada startup sesi berikutnya.

101 * Entri [`policyHelper`](/docs/id/settings-reference#policyhelper) yang baru atau berubah berlaku pada peluncuran berikutnya. Jika pengaturan terkelola server menaungi helper pada peluncuran itu, helper berjalan segera setelah pengambilan melaporkan pengaturan tersebut dihapus.101 * Entri [`policyHelper`](/docs/id/settings-reference#policyhelper) yang baru atau berubah berlaku pada peluncuran berikutnya. Jika pengaturan terkelola server menaungi helper pada peluncuran itu, helper berjalan segera setelah pengambilan melaporkan pengaturan tersebut dihapus.


256 256 

257 Pada Claude Code v2.1.273 atau lebih baru, saat `allowManagedMcpServersOnly` aktif, daftar `allowedMcpServers` dari sumber admin dengan peringkat tertinggi yang mengaturnya berlaku dan memblokir induk, sebagai [kunci lintas sumber](#keys-read-from-every-admin-source). Daftar induk berlaku hanya ketika tidak ada sumber admin yang mengaturnya. Entri [`managedSourcesBehavior`](/docs/id/settings-reference#managedsourcesbehavior) mengatakan sumber mana yang menyediakan setiap kunci di bawah `"merge"`. Sebelum v2.1.223, nilai dalam sumber admin apa pun memblokir induk257 Pada Claude Code v2.1.273 atau lebih baru, saat `allowManagedMcpServersOnly` aktif, daftar `allowedMcpServers` dari sumber admin dengan peringkat tertinggi yang mengaturnya berlaku dan memblokir induk, sebagai [kunci lintas sumber](#keys-read-from-every-admin-source). Daftar induk berlaku hanya ketika tidak ada sumber admin yang mengaturnya. Entri [`managedSourcesBehavior`](/docs/id/settings-reference#managedsourcesbehavior) mengatakan sumber mana yang menyediakan setiap kunci di bawah `"merge"`. Sebelum v2.1.223, nilai dalam sumber admin apa pun memblokir induk

258* Untuk `availableModels`, Claude Code memberlakukan nilai dalam pengaturan terkelola yang diterapkan dan memblokir daftar yang disediakan induk258* Untuk `availableModels`, Claude Code memberlakukan nilai dalam pengaturan terkelola yang diterapkan dan memblokir daftar yang disediakan induk

259* Untuk `strictKnownMarketplaces`, Claude Code juga memberlakukan daftar dalam pengaturan terkelola yang diterapkan dan memblokir yang disediakan induk. Daftar induk berlaku hanya ketika tidak ada sumber terkelola yang diterapkan yang mengaturnya. Memerlukan Claude Code v2.1.282 atau lebih baru

260* Sebuah `blockedMarketplaces` yang disediakan induk berlaku selain daftar blokir apa pun yang ditetapkan sumber terkelola. Memerlukan Claude Code v2.1.282 atau lebih baru

259 261 

260<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">262<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

261 Pertahankan akses folder Cowork ketika hanya aturan terkelola yang berlaku263 Pertahankan akses folder Cowork ketika hanya aturan terkelola yang berlaku


361Beberapa kunci penegakan tidak dihapus ketika tidak valid. Claude Code memberlakukan fallback yang lebih ketat sampai nilai diperbaiki; tabel menunjukkan apa yang diberlakukannya untuk setiap kunci:363Beberapa kunci penegakan tidak dihapus ketika tidak valid. Claude Code memberlakukan fallback yang lebih ketat sampai nilai diperbaiki; tabel menunjukkan apa yang diberlakukannya untuk setiap kunci:

362 364 

363| Bidang | Perilaku ketika ada tetapi tidak valid |365| Bidang | Perilaku ketika ada tetapi tidak valid |

364| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |366| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

365| `allowedMcpServers` | Diberlakukan sebagai daftar izin kosong sampai nilai diperbaiki, jadi tidak ada server MCP yang pengguna tambahkan yang diakui. Server yang organisasi Anda berikan melalui [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) masih dimuat, dan server `managed-mcp.json` dimuat per [Bagaimana server dievaluasi](/docs/id/managed-mcp#how-a-server-is-evaluated). Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. |367| `allowedMcpServers` | Diberlakukan sebagai daftar izin kosong sampai nilai diperbaiki, jadi tidak ada server MCP yang pengguna tambahkan yang diakui. Server yang organisasi Anda berikan melalui [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) masih dimuat, dan server `managed-mcp.json` dimuat per [Bagaimana server dievaluasi](/docs/id/managed-mcp#how-a-server-is-evaluated). Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. |

366| `allowedHttpHookUrls` | Claude Code memberlakukan daftar izin terkelola kosong [allowlist](/docs/id/settings-reference#allowedhttphookurls) sampai Anda memperbaiki nilai, jadi HTTP hook berjalan hanya jika file pengaturan lain mencantumkan URL-nya. Jika hanya entri individual yang tidak valid, Claude Code melepas entri itu dan memberlakukan sisanya. |368| `allowedHttpHookUrls` | Claude Code memberlakukan daftar izin terkelola kosong [allowlist](/docs/id/settings-reference#allowedhttphookurls) sampai Anda memperbaiki nilai, jadi HTTP hook berjalan hanya jika file pengaturan lain mencantumkan URL-nya. Jika hanya entri individual yang tidak valid, Claude Code melepas entri itu dan memberlakukan sisanya. |

367| `httpHookAllowedEnvVars` | Claude Code memberlakukan daftar izin terkelola kosong [allowlist](/docs/id/settings-reference#httphookallowedenvvars) sampai Anda memperbaiki nilai, jadi variabel header diinterpolasi hanya jika file pengaturan lain menamainya. Jika hanya entri individual yang tidak valid, Claude Code melepas entri itu dan memberlakukan sisanya. |369| `httpHookAllowedEnvVars` | Claude Code memberlakukan daftar izin terkelola kosong [allowlist](/docs/id/settings-reference#httphookallowedenvvars) sampai Anda memperbaiki nilai, jadi variabel header diinterpolasi hanya jika file pengaturan lain menamainya. Jika hanya entri individual yang tidak valid, Claude Code melepas entri itu dan memberlakukan sisanya. |

368| `allowedChannelPlugins` | Claude Code memberlakukan daftar izin kosong sampai Anda memperbaiki nilai, jadi tidak ada plugin saluran yang dilewatkan ke `--channels` yang diakui. Jika hanya entri individual yang tidak valid, itu melepas entri itu dan memberlakukan sisanya. |370| `allowedChannelPlugins` | Claude Code memberlakukan daftar izin kosong sampai Anda memperbaiki nilai, jadi tidak ada plugin saluran yang dilewatkan ke `--channels` yang diakui. Jika hanya entri individual yang tidak valid, itu melepas entri itu dan memberlakukan sisanya. |

369| `strictKnownMarketplaces` | Diberlakukan sebagai daftar izin kosong sampai nilai diperbaiki, jadi tidak ada [sumber marketplace](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) yang diakui. Entri individual yang tidak valid atau tidak dapat diberlakukan, seperti regex `hostPattern` yang tidak dikompilasi, dilepas dan subset yang valid diberlakukan. |371| `strictKnownMarketplaces` | Diberlakukan sebagai daftar izin kosong sampai nilai diperbaiki, jadi tidak ada [sumber marketplace](/docs/id/plugins/org#restrict-what-users-can-install) yang diakui. Entri individual yang tidak valid atau tidak dapat diberlakukan, seperti regex `hostPattern` yang tidak dikompilasi, dilepas dan subset yang valid diberlakukan. |

370| `allowManagedHooksOnly` | Diperlakukan sebagai `true` sampai diperbaiki: [pembatasan hook](/docs/id/settings-reference#allowmanagedhooksonly) berlaku dan, kecuali `disableCommandPluginSources` secara eksplisit `false`, plugin bersumber perintah dinonaktifkan. |372| `allowManagedHooksOnly` | Diperlakukan sebagai `true` sampai diperbaiki: [pembatasan hook](/docs/id/settings-reference#allowmanagedhooksonly) berlaku dan, kecuali `disableCommandPluginSources` secara eksplisit `false`, plugin bersumber perintah dinonaktifkan. |

371| `allowManagedMcpServersOnly` | Diperlakukan sebagai `true`. |373| `allowManagedMcpServersOnly` | Diperlakukan sebagai `true`. |

372| `disableCommandPluginSources` | Diperlakukan sebagai `true`, jadi plugin bersumber perintah tetap dinonaktifkan sampai nilai diperbaiki. |374| `disableCommandPluginSources` | Diperlakukan sebagai `true`, jadi plugin bersumber perintah tetap dinonaktifkan sampai nilai diperbaiki. |


378| `gatewayInternalNetworks` | Ketika nilai yang tidak valid berasal dari sumber terkelola tertinggi di mesin, `/login` menolak setiap [gateway cloud](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) masuk baru di mesin itu sampai nilai diperbaiki. |380| `gatewayInternalNetworks` | Ketika nilai yang tidak valid berasal dari sumber terkelola tertinggi di mesin, `/login` menolak setiap [gateway cloud](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) masuk baru di mesin itu sampai nilai diperbaiki. |

379| `crossSessionInbound` | Diperlakukan sebagai `refuse`, nilai paling ketat, jadi [pesan lintas sesi](/docs/id/cross-session-messaging#control-inbound-messages) masuk ditolak sampai nilai diperbaiki. Pengembang melihat [peringatan](/docs/id/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |381| `crossSessionInbound` | Diperlakukan sebagai `refuse`, nilai paling ketat, jadi [pesan lintas sesi](/docs/id/cross-session-messaging#control-inbound-messages) masuk ditolak sampai nilai diperbaiki. Pengembang melihat [peringatan](/docs/id/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

380| `deniedMcpServers` | Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. Nilai yang sepenuhnya tidak valid dihapus dengan peringatan, karena menolak setiap server akan memblokir server yang kebijakan tidak pernah namai. |382| `deniedMcpServers` | Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. Nilai yang sepenuhnya tidak valid dihapus dengan peringatan, karena menolak setiap server akan memblokir server yang kebijakan tidak pernah namai. |

381| `blockedMarketplaces` | Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. Entri yang diuraikan tetapi tidak pernah cocok, seperti regex `hostPattern` yang tidak dikompilasi, disimpan dengan peringatan. Itu tidak memblokir apa pun sampai diperbaiki, tetapi [pembatasan marketplace](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) tetap aktif. Nilai yang sepenuhnya tidak valid dihapus dengan peringatan, karena memblokir setiap marketplace akan memblokir sumber yang kebijakan tidak pernah namai. |383| `blockedMarketplaces` | Entri individual yang tidak valid dilepas dan subset yang valid diberlakukan. Entri yang diuraikan tetapi tidak pernah cocok, seperti regex `hostPattern` yang tidak dikompilasi, disimpan dengan peringatan. Itu tidak memblokir apa pun sampai diperbaiki, tetapi [pembatasan marketplace](/docs/id/plugins/org#restrict-what-users-can-install) tetap aktif. Nilai yang sepenuhnya tidak valid dihapus dengan peringatan, karena memblokir setiap marketplace akan memblokir sumber yang kebijakan tidak pernah namai. |

382| `sandbox.credentials` | Entri yang tidak valid yang dapat dipulihkan diturunkan ke `mode: "deny"` dengan peringatan; yang tidak dapat dipulihkan dilepas; entri yang valid tetap diberlakukan. Lihat [entri kredensial yang tidak valid](/docs/id/settings-reference#invalid-credential-entries-in-managed-settings) |384| `sandbox.credentials` | Entri yang tidak valid yang dapat dipulihkan diturunkan ke `mode: "deny"` dengan peringatan; yang tidak dapat dipulihkan dilepas; entri yang valid tetap diberlakukan. Lihat [entri kredensial yang tidak valid](/docs/id/settings-reference#invalid-credential-entries-in-managed-settings) |

383 385 

384`allowedHttpHookUrls` dan `httpHookAllowedEnvVars` menggabungkan di seluruh file pengaturan, jadi entri dalam pengaturan pengguna, proyek, atau lokal Anda masih berlaku sementara daftar terkelola kosong.386`allowedHttpHookUrls` dan `httpHookAllowedEnvVars` menggabungkan di seluruh file pengaturan, jadi entri dalam pengaturan pengguna, proyek, atau lokal Anda masih berlaku sementara daftar terkelola kosong.


402Tabel mencakup kontrol izin, plugin, dan pengiriman. Untuk kunci apa pun yang tidak tercantum di sini, kolom Scope dari [referensi pengaturan](/docs/id/settings-reference#all-settings) index mengatakan apakah itu terkelola saja; kunci terkelola saja yang tersisa di sana termasuk URL login gateway, versi, browser, mobile-simulator, host SSH, Desktop sesi lokal, jalur biner sandbox, harga model, dan kontrol CLAUDE.md.404Tabel mencakup kontrol izin, plugin, dan pengiriman. Untuk kunci apa pun yang tidak tercantum di sini, kolom Scope dari [referensi pengaturan](/docs/id/settings-reference#all-settings) index mengatakan apakah itu terkelola saja; kunci terkelola saja yang tersisa di sana termasuk URL login gateway, versi, browser, mobile-simulator, host SSH, Desktop sesi lokal, jalur biner sandbox, harga model, dan kontrol CLAUDE.md.

403 405 

404| Pengaturan | Deskripsi |406| Pengaturan | Deskripsi |

405| :-------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |407| :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

406| [`allowAllClaudeAiMcps`](/docs/id/settings-reference#allowallclaudeaimcps) | Muat konektor claude.ai yang Claude Code ambil sendiri bersama `managed-mcp.json` yang diterapkan alih-alih menekannya |408| [`allowAllClaudeAiMcps`](/docs/id/settings-reference#allowallclaudeaimcps) | Muat konektor claude.ai yang Claude Code ambil sendiri bersama `managed-mcp.json` yang diterapkan alih-alih menekannya |

407| [`allowedChannelPlugins`](/docs/id/settings-reference#allowedchannelplugins) | Daftar izin plugin channel yang dapat mendorong pesan. Mengganti daftar izin Anthropic default ketika diatur. Memerlukan `channelsEnabled: true`. Lihat [Batasi plugin channel mana yang dapat berjalan](/docs/id/channels#restrict-which-channel-plugins-can-run) |409| [`allowedChannelPlugins`](/docs/id/settings-reference#allowedchannelplugins) | Daftar izin plugin channel yang dapat mendorong pesan. Mengganti daftar izin Anthropic default ketika diatur. Memerlukan `channelsEnabled: true`. Lihat [Batasi plugin channel mana yang dapat berjalan](/docs/id/channels#restrict-which-channel-plugins-can-run) |

408| [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) | Ketika `true`, membatasi hook mana yang berjalan; lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) untuk daftar efek lengkap |410| [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) | Ketika `true`, membatasi hook mana yang berjalan; lihat [apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) untuk daftar efek lengkap |

409| [`allowManagedMcpServersOnly`](/docs/id/settings-reference#allowmanagedmcpserversonly) | Ketika `true`, hanya `allowedMcpServers` dari pengaturan terkelola yang dihormati. `deniedMcpServers` masih merge dari semua sumber. Lihat [Kunci yang dibaca dari setiap sumber admin](#keys-read-from-every-admin-source) untuk sumber terkelola mana yang dapat mengaturnya, dan [Konfigurasi MCP terkelola](/docs/id/managed-mcp) |411| [`allowManagedMcpServersOnly`](/docs/id/settings-reference#allowmanagedmcpserversonly) | Ketika `true`, hanya `allowedMcpServers` dari pengaturan terkelola yang dihormati. `deniedMcpServers` masih merge dari semua sumber. Lihat [Kunci yang dibaca dari setiap sumber admin](#keys-read-from-every-admin-source) untuk sumber terkelola mana yang dapat mengaturnya, dan [Konfigurasi MCP terkelola](/docs/id/managed-mcp) |

410| [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) | Membuat pengaturan terkelola satu-satunya sumber pengaturan aturan izin. Entri mencantumkan setiap sumber yang diabaikannya |412| [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) | Membuat pengaturan terkelola satu-satunya sumber pengaturan aturan izin. Entri mencantumkan setiap sumber yang diabaikannya |

411| [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) | Daftar blokir sumber marketplace. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh filesystem. Lihat [pembatasan marketplace terkelola](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) |413| [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) | Daftar blokir sumber marketplace. Sumber yang diblokir diperiksa sebelum mengunduh, jadi mereka tidak pernah menyentuh filesystem. Lihat [pembatasan marketplace terkelola](/docs/id/plugins/org#restrict-what-users-can-install) |

412| [`channelsEnabled`](/docs/id/settings-reference#channelsenabled) | Izinkan [channels](/docs/id/channels) untuk organisasi. Lihat [kontrol enterprise](/docs/id/channels#enterprise-controls) untuk default di setiap paket |414| [`channelsEnabled`](/docs/id/settings-reference#channelsenabled) | Izinkan [channels](/docs/id/channels) untuk organisasi. Lihat [kontrol enterprise](/docs/id/channels#enterprise-controls) untuk default di setiap paket |

413| [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) | Ketika `true`, memblokir [sumber plugin `command`](/docs/id/plugin-marketplaces#command-sources) sepenuhnya, jadi perintah yang dideklarasikan marketplace tidak pernah berjalan. Juga memblokir perintah [`headersHelper`](/docs/id/plugin-marketplaces#authenticate-archive-downloads) marketplace, kecuali untuk marketplace yang pengaturan terkelola sendiri deklarasikan. Ketika tidak diatur, mengikuti `allowManagedHooksOnly`. Memerlukan Claude Code v2.1.229 atau lebih baru, dan blok `headersHelper` memerlukan v2.1.238 atau lebih baru |415| [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) | Ketika `true`, memblokir [sumber plugin `command`](/docs/id/plugins/marketplace-reference#command-plugin-source) sepenuhnya, jadi perintah yang dideklarasikan marketplace tidak pernah berjalan. Juga memblokir perintah [`headersHelper`](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace, kecuali untuk marketplace yang pengaturan terkelola sendiri deklarasikan. Ketika tidak diatur, mengikuti `allowManagedHooksOnly`. Memerlukan Claude Code v2.1.229 atau lebih baru, dan blok `headersHelper` memerlukan v2.1.238 atau lebih baru |

414| [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags) | Tolak flag `--plugin-dir`, `--plugin-url`, `--agents`, dan `--mcp-config` saat startup. Dalam sesi cloud, Claude Code menghapus server MCP yang server kirimkan melalui `--mcp-config`, selain entri `type: "sdk"` dalam proses, dan memulai sesi. Memerlukan Claude Code v2.1.193 atau lebih baru |416| [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags) | Tolak flag `--plugin-dir`, `--plugin-url`, `--agents`, dan `--mcp-config` saat startup. Dalam sesi cloud, Claude Code menghapus server MCP yang server kirimkan melalui `--mcp-config`, selain entri `type: "sdk"` dalam proses, dan memulai sesi. Memerlukan Claude Code v2.1.193 atau lebih baru |

415| [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh) | Ketika `true`, memblokir startup CLI sampai pengaturan terkelola jarak jauh diambil segar dan keluar jika pengambilan gagal. Lihat [penegakan fail-closed](/docs/id/server-managed-settings#enforce-fail-closed-startup) |417| [`forceRemoteSettingsRefresh`](/docs/id/settings-reference#forceremotesettingsrefresh) | Ketika `true`, memblokir startup CLI sampai pengaturan terkelola jarak jauh diambil segar dan keluar jika pengambilan gagal. Lihat [penegakan fail-closed](/docs/id/server-managed-settings#enforce-fail-closed-startup) |

416| [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) | Server MCP jarak jauh yang disediakan untuk setiap pengguna bersama milik mereka sendiri. Ini menyediakan server daripada mengunci apa pun. Lihat [Sediakan server melalui pengaturan terkelola](/docs/id/managed-mcp#provide-servers-through-managed-settings). Memerlukan Claude Code v2.1.259 atau lebih baru |418| [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) | Server MCP jarak jauh yang disediakan untuk setiap pengguna bersama milik mereka sendiri. Ini menyediakan server daripada mengunci apa pun. Lihat [Sediakan server melalui pengaturan terkelola](/docs/id/managed-mcp#provide-servers-through-managed-settings). Memerlukan Claude Code v2.1.259 atau lebih baru |


421| [`policyHelper`](/docs/id/settings-reference#policyhelper) | Executable yang menghitung pengaturan terkelola saat startup; lihat [Hitung pengaturan terkelola dengan pembantu kebijakan](/docs/id/settings-reference#policyhelper) |423| [`policyHelper`](/docs/id/settings-reference#policyhelper) | Executable yang menghitung pengaturan terkelola saat startup; lihat [Hitung pengaturan terkelola dengan pembantu kebijakan](/docs/id/settings-reference#policyhelper) |

422| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/id/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Ketika `true`, hanya jalur `filesystem.allowRead` dari pengaturan terkelola yang dihormati. `denyRead` masih merge dari semua sumber |424| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/id/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Ketika `true`, hanya jalur `filesystem.allowRead` dari pengaturan terkelola yang dihormati. `denyRead` masih merge dari semua sumber |

423| [`sandbox.network.allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) | Hormati hanya `allowedDomains` terkelola dan aturan izin `WebFetch(domain:...)`; blokir domain lain tanpa meminta |425| [`sandbox.network.allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) | Hormati hanya `allowedDomains` terkelola dan aturan izin `WebFetch(domain:...)`; blokir domain lain tanpa meminta |

424| [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) | Mengontrol sumber marketplace plugin mana yang pengguna dapat tambahkan dan instal plugin darinya. Lihat [pembatasan marketplace terkelola](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) |426| [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) | Mengontrol sumber marketplace plugin mana yang pengguna dapat tambahkan dan instal plugin darinya. Lihat [pembatasan marketplace terkelola](/docs/id/plugins/org#restrict-what-users-can-install) |

425| [`strictPluginOnlyCustomization`](/docs/id/settings-reference#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek; `true` mengunci keempat, array menamai yang mana |427| [`strictPluginOnlyCustomization`](/docs/id/settings-reference#strictpluginonlycustomization) | Blokir skills, agents, hooks, dan server MCP dari sumber pengguna dan proyek; `true` mengunci keempat, array menamai yang mana |

426| [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings) | Ketika diatur dalam registry HKLM atau file di bawah `C:\Program Files\ClaudeCode`, biarkan WSL membaca rantai kebijakan Windows, dan baca `/etc/claude-code` hanya ketika tidak ada file pengaturan terkelola atau drop-in di bawah direktori itu yang mengirimkan [kunci kebijakan](#how-claude-code-combines-managed-sources); entri memberikan urutan |428| [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings) | Ketika diatur dalam registry HKLM atau file di bawah `C:\Program Files\ClaudeCode`, biarkan WSL membaca rantai kebijakan Windows, dan baca `/etc/claude-code` hanya ketika tidak ada file pengaturan terkelola atau drop-in di bawah direktori itu yang mengirimkan [kunci kebijakan](#how-claude-code-combines-managed-sources); entri memberikan urutan |

427 429 

mcp.md +16 −16

Details

50 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:50 Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

51 51 

52 * `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba lagi instalnya.52 * `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba lagi instalnya.

53 * Plugin [tidak ditemukan di marketplace](/docs/id/discover-plugins#install-plugins): periksa nama plugin.53 * Plugin [tidak ditemukan di marketplace](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

54 54 

55 Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Claude Code kemudian menjalankan reload tersebut untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan `/reload-plugins --force`.55 Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Claude Code kemudian menjalankan reload tersebut untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan `/reload-plugins --force`.

56 </Step>56 </Step>


293 Detail status server293 Detail status server

294</h4>294</h4>

295 295 

296Di `/mcp`, termasuk menu server di sana, dan di [manager `/plugin`](/docs/id/plugins), server HTTP atau SSE jarak jauh yang pernah Anda gunakan sebelumnya dapat menunjukkan status `cached` seperti `cached 2h ago · connects on first use · 5 tools`. Claude Code memuat daftar alat server dari cache penemuan-nya, disimpan dalam sesi sebelumnya, alih-alih terhubung pada startup, dan Claude Code menghubungkan server pertama kali Claude memanggil salah satu alat server. Alat tersedia dari pesan pertama Anda, jadi Anda tidak perlu melakukan apa pun. Cache penemuan dan status `cached`-nya memerlukan Claude Code v2.1.221 atau lebih baru.296Di `/mcp`, termasuk menu server di sana, dan di [manager `/plugin`](/docs/id/plugins/install), server HTTP atau SSE jarak jauh yang pernah Anda gunakan sebelumnya dapat menunjukkan status `cached` seperti `cached 2h ago · connects on first use · 5 tools`. Claude Code memuat daftar alat server dari cache penemuan-nya, disimpan dalam sesi sebelumnya, alih-alih terhubung pada startup, dan Claude Code menghubungkan server pertama kali Claude memanggil salah satu alat server. Alat tersedia dari pesan pertama Anda, jadi Anda tidak perlu melakukan apa pun. Cache penemuan dan status `cached`-nya memerlukan Claude Code v2.1.221 atau lebih baru.

297 297 

298Cache penemuan dimatikan secara default kecuali rollout bertahap telah mengaktifkannya untuk akun Anda. Atur [`MCP_DISCOVERY_CACHE=1`](/docs/id/env-vars) untuk mengaktifkannya, atau `0` untuk tetap mematikannya bahkan ketika rollout telah mengaktifkannya. Sebelum v2.1.238, cache diaktifkan secara default.298Cache penemuan dimatikan secara default kecuali rollout bertahap telah mengaktifkannya untuk akun Anda. Atur [`MCP_DISCOVERY_CACHE=1`](/docs/id/env-vars) untuk mengaktifkannya, atau `0` untuk tetap mematikannya bahkan ketika rollout telah mengaktifkannya. Sebelum v2.1.238, cache diaktifkan secara default.

299 299 


312* Untuk server dalam [cakupan](#mcp-installation-scopes) lokal, proyek, atau pengguna atau dalam konfigurasi MCP yang dikelola, asal menunjukkan host seperti yang ditulis dalam konfigurasi itu, jadi referensi `${VAR}` di host tidak diperluas dalam pesan.312* Untuk server dalam [cakupan](#mcp-installation-scopes) lokal, proyek, atau pengguna atau dalam konfigurasi MCP yang dikelola, asal menunjukkan host seperti yang ditulis dalam konfigurasi itu, jadi referensi `${VAR}` di host tidak diperluas dalam pesan.

313* Untuk kegagalan tanpa status atau kode kesalahan, Claude Code menunjukkan teks kesalahan tanpa asal.313* Untuk kegagalan tanpa status atau kode kesalahan, Claude Code menunjukkan teks kesalahan tanpa asal.

314 314 

315Server jarak jauh yang konfigurasinya memiliki `url` kosong ditampilkan sebagai `not configured` di `/mcp`, di `claude mcp list`, dan di [manager `/plugin`](/docs/id/plugins), dan Claude Code tidak mencoba terhubung ke sana. Plugin dapat menyertakan entri placeholder seperti ini untuk konektor yang Anda konfigurasi nanti, jadi Claude Code tidak melaporkannya sebagai kesalahan atau masalah setup. Tampilan detail server di `/mcp` membaca `No URL configured for this server`; atur `url` entri untuk menghubungkannya. Sebelum v2.1.208, Claude Code melaporkan `url` kosong sebagai masalah konfigurasi dengan prompt untuk menghubungkan kembali.315Server jarak jauh yang konfigurasinya memiliki `url` kosong ditampilkan sebagai `not configured` di `/mcp`, di `claude mcp list`, dan di [manager `/plugin`](/docs/id/plugins/install), dan Claude Code tidak mencoba terhubung ke sana. Plugin dapat menyertakan entri placeholder seperti ini untuk konektor yang Anda konfigurasi nanti, jadi Claude Code tidak melaporkannya sebagai kesalahan atau masalah setup. Tampilan detail server di `/mcp` membaca `No URL configured for this server`; atur `url` entri untuk menghubungkannya. Sebelum v2.1.208, Claude Code melaporkan `url` kosong sebagai masalah konfigurasi dengan prompt untuk menghubungkan kembali.

316 316 

317<h4 id="configuration-warnings">317<h4 id="configuration-warnings">

318 Peringatan konfigurasi318 Peringatan konfigurasi


466 466 

467`timeout` per-server setidaknya 1000 juga bertindak sebagai lantai pada timeout idle yang dijelaskan di bawah: Claude Code tidak pernah menghentikan panggilan alat server itu karena kemalasan lebih cepat dari `timeout` per-server. Memerlukan Claude Code v2.1.203 atau lebih baru.467`timeout` per-server setidaknya 1000 juga bertindak sebagai lantai pada timeout idle yang dijelaskan di bawah: Claude Code tidak pernah menghentikan panggilan alat server itu karena kemalasan lebih cepat dari `timeout` per-server. Memerlukan Claude Code v2.1.203 atau lebih baru.

468 468 

469Panggilan alat ke server MCP yang mengirim tidak ada respons dan tidak ada notifikasi kemajuan untuk jendela idle membatalkan dengan kesalahan alih-alih menunggu batas jam dinding. Timeout idle memerlukan Claude Code v2.1.187 atau lebih baru. Ini berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default ke lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan ke 30 menit untuk server stdio. Sebelum v2.1.203, server stdio dikecualikan dari timeout idle.469Panggilan alat ke server MCP yang mengirim tidak ada respons dan tidak ada notifikasi kemajuan untuk jendela idle membatalkan dengan kesalahan alih-alih menunggu batas jam dinding. Ini berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default ke lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan ke 30 menit untuk server stdio. Sebelum v2.1.203, server stdio dikecualikan dari timeout idle.

470 470 

471Atur variabel lingkungan [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan.471Atur variabel lingkungan [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan.

472 472 


494 Server MCP yang disediakan plugin494 Server MCP yang disediakan plugin

495</h3>495</h3>

496 496 

497[Plugins](/docs/id/plugins) dapat menggabungkan server MCP yang menyediakan alat dan integrasi ketika Anda mengaktifkan plugin. Server MCP plugin bekerja identik dengan server yang dikonfigurasi pengguna.497[Plugins](/docs/id/plugins/overview) dapat menggabungkan server MCP yang menyediakan alat dan integrasi ketika Anda mengaktifkan plugin. Server MCP plugin bekerja identik dengan server yang dikonfigurasi pengguna.

498 498 

499**Cara kerja server MCP plugin**:499**Cara kerja server MCP plugin**:

500 500 


539 539 

540* **Siklus hidup otomatis**: server terhubung dan terputus pada titik-titik ini:540* **Siklus hidup otomatis**: server terhubung dan terputus pada titik-titik ini:

541 * Pada startup sesi, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di `/mcp`, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan sebelumnya dapat menunjukkan status [`cached`](#server-status-detail) sebagai gantinya; Claude Code menghubungkannya ketika Claude pertama kali memanggil salah satu alatnya541 * Pada startup sesi, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di `/mcp`, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan sebelumnya dapat menunjukkan status [`cached`](#server-status-detail) sebagai gantinya; Claude Code menghubungkannya ketika Claude pertama kali memanggil salah satu alatnya

542 * Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, Claude Code menghubungkan atau memutuskan server MCP-nya ketika perubahan diterapkan. [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) menjelaskan kapan itu terjadi. Dalam sesi tanpa terminal interaktif, `/reload-plugins` tidak menghubungkan atau memutuskan server MCP plugin; perubahan itu berlaku dalam sesi Anda berikutnya542 * Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, Claude Code menghubungkan atau memutuskan server MCP-nya ketika perubahan diterapkan. [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) menjelaskan kapan itu terjadi. Dalam sesi tanpa terminal interaktif, `/reload-plugins` tidak menghubungkan atau memutuskan server MCP plugin; perubahan itu berlaku dalam sesi Anda berikutnya

543 * Ketika Anda memuat ulang, Claude Code menyimpan koneksi langsung dari server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama ketika Anda [mengganti daftar server MCP sesi](/docs/id/agent-sdk/typescript#mcpsetserversresult) dari Agent SDK tanpa menamakannya543 * Ketika Anda memuat ulang, Claude Code menyimpan koneksi langsung dari server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama ketika Anda [mengganti daftar server MCP sesi](/docs/id/agent-sdk/typescript#mcpsetserversresult) dari Agent SDK tanpa menamakannya

544 * Ketika Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menghubungkan server plugin yang pengaturan direktori baru aktifkan dan memutuskan server plugin yang tidak lagi diaktifkan, jadi Anda tidak perlu menjalankan `/reload-plugins` setelah perpindahan544 * Ketika Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menghubungkan server plugin yang pengaturan direktori baru aktifkan dan memutuskan server plugin yang tidak lagi diaktifkan, jadi Anda tidak perlu menjalankan `/reload-plugins` setelah perpindahan

545 * Dalam [sesi cloud](/docs/id/claude-code-on-the-web), panggilan MCP ke server plugin yang belum terhubung, seperti tepat setelah sesi idle bangun, memulai server sesuai permintaan dan menunggu untuk terhubung545 * Dalam [sesi cloud](/docs/id/claude-code-on-the-web), panggilan MCP ke server plugin yang belum terhubung, seperti tepat setelah sesi idle bangun, memulai server sesuai permintaan dan menunggu untuk terhubung

546* **Placeholder jalur**: `${CLAUDE_PLUGIN_ROOT}` diselesaikan ke direktori instalasi plugin, `${CLAUDE_PLUGIN_DATA}` ke direktori [status persisten](/docs/id/plugins-reference#persistent-data-directory)-nya, dan `${CLAUDE_PROJECT_DIR}` ke akar proyek yang stabil. Substitusi berlaku untuk:546* **Placeholder jalur**: `${CLAUDE_PLUGIN_ROOT}` diselesaikan ke direktori instalasi plugin, `${CLAUDE_PLUGIN_DATA}` ke direktori [status persisten](/docs/id/plugins/components#path-variables-and-persistent-data)-nya, dan `${CLAUDE_PROJECT_DIR}` ke akar proyek yang stabil. Substitusi berlaku untuk:

547 * server `stdio`: `command`, `args`, `env`547 * server `stdio`: `command`, `args`, `env`

548 * server `http`, `sse`, dan `ws`: `url`, `headers`, dan `headersHelper`. Sebelum v2.1.195, `headersHelper` meneruskan placeholder sebagai string literal548 * server `http`, `sse`, dan `ws`: `url`, `headers`, dan `headersHelper`. Sebelum v2.1.195, `headersHelper` meneruskan placeholder sebagai string literal

549* **Akses lingkungan pengguna**: akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual549* **Akses lingkungan pengguna**: akses ke variabel lingkungan yang sama seperti server yang dikonfigurasi secara manual


563 563 

564Server itu sendiri mendaftar di bawah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:database-tools`. Gunakan nama itu di mana nama server yang dikonfigurasi diharapkan, seperti [`server` field hook `mcp_tool`](/docs/id/hooks#mcp-tool-hook-fields).564Server itu sendiri mendaftar di bawah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:database-tools`. Gunakan nama itu di mana nama server yang dikonfigurasi diharapkan, seperti [`server` field hook `mcp_tool`](/docs/id/hooks#mcp-tool-hook-fields).

565 565 

566Lihat [referensi komponen plugin](/docs/id/plugins-reference#mcp-servers) untuk detail tentang menggabungkan server MCP dengan plugin.566Lihat [referensi komponen plugin](/docs/id/plugins/components#mcp-servers) untuk detail tentang menggabungkan server MCP dengan plugin.

567 567 

568<h2 id="mcp-installation-scopes">568<h2 id="mcp-installation-scopes">

569 Cakupan instalasi MCP569 Cakupan instalasi MCP


6661. Cakupan lokal6661. Cakupan lokal

6672. Cakupan proyek6672. Cakupan proyek

6683. Cakupan pengguna6683. Cakupan pengguna

6694. [Server yang disediakan plugin](/docs/id/plugins)6694. [Server yang disediakan plugin](/docs/id/plugins/components#mcp-servers)

6705. [Konektor claude.ai](#use-mcp-servers-from-claude-ai)6705. [Konektor claude.ai](#use-mcp-servers-from-claude-ai)

671 671 

672Tiga cakupan mencocokkan duplikat berdasarkan nama. Plugin dan konektor mencocokkan berdasarkan endpoint, jadi yang menunjuk ke URL atau perintah yang sama dengan server di atas diperlakukan sebagai duplikat.672Tiga cakupan mencocokkan duplikat berdasarkan nama. Plugin dan konektor mencocokkan berdasarkan endpoint, jadi yang menunjuk ke URL atau perintah yang sama dengan server di atas diperlakukan sebagai duplikat.


876 Autentikasi dari baris perintah876 Autentikasi dari baris perintah

877</h3>877</h3>

878 878 

879Dari v2.1.186, `claude mcp login <name>` menjalankan alur OAuth server yang dikonfigurasi langsung dari shell Anda, sehingga Anda tidak perlu membuka panel `/mcp` di dalam sesi.879Perintah `claude mcp login <name>` menjalankan alur OAuth server yang dikonfigurasi langsung dari shell Anda, sehingga Anda tidak perlu membuka panel `/mcp` di dalam sesi.

880 880 

881```bash theme={null}881```bash theme={null}

882claude mcp login sentry882claude mcp login sentry


884 884 

885Untuk menghapus kredensial yang disimpan nanti, jalankan `claude mcp logout <name>`.885Untuk menghapus kredensial yang disimpan nanti, jalankan `claude mcp logout <name>`.

886 886 

887Mulai dari v2.1.191, perintah mendeteksi ketika tidak ada browser lokal yang tersedia, seperti selama sesi SSH atau di Linux tanpa server tampilan, dan mencetak URL otorisasi alih-alih mencoba membuka browser. Buka URL di mesin lokal Anda, kemudian tempel URL pengalihan lengkap dari bilah alamat browser Anda kembali ke prompt. Perintah memerlukan terminal interaktif untuk langkah paste, jadi hubungkan dengan `ssh -t`. Teruskan `--no-browser` untuk memaksa prompt URL bahkan ketika browser lokal terdeteksi.887`claude mcp login` mendeteksi ketika tidak ada browser lokal yang tersedia, seperti selama sesi SSH atau di Linux tanpa server tampilan, dan mencetak URL otorisasi alih-alih mencoba membuka browser. Buka URL di mesin lokal Anda, kemudian tempel URL pengalihan lengkap dari bilah alamat browser Anda kembali ke prompt. Perintah memerlukan terminal interaktif untuk langkah paste, jadi hubungkan dengan `ssh -t`. Teruskan `--no-browser` untuk memaksa prompt URL bahkan ketika browser lokal terdeteksi.

888 888 

889```bash theme={null}889```bash theme={null}

890claude mcp login sentry --no-browser890claude mcp login sentry --no-browser


1085Claude Code menetapkan variabel lingkungan ini saat menjalankan helper:1085Claude Code menetapkan variabel lingkungan ini saat menjalankan helper:

1086 1086 

1087| Variabel | Nilai |1087| Variabel | Nilai |

1088| :---------------------------- | :-------------------------------------------------------------------------------------------------------- |1088| :---------------------------- | :--------------------------------------------------------------------------------------------------------- |

1089| `CLAUDE_CODE_MCP_SERVER_NAME` | nama server MCP |1089| `CLAUDE_CODE_MCP_SERVER_NAME` | nama server MCP |

1090| `CLAUDE_CODE_MCP_SERVER_URL` | URL server MCP |1090| `CLAUDE_CODE_MCP_SERVER_URL` | URL server MCP |

1091| `CLAUDE_PLUGIN_ROOT` | direktori root plugin. Diatur hanya ketika [plugin](/docs/id/plugins-reference#mcp-servers) menyediakan server |1091| `CLAUDE_PLUGIN_ROOT` | direktori root plugin. Diatur hanya ketika [plugin](/docs/id/plugins/components#mcp-servers) menyediakan server |

1092 1092 

1093Gunakan ini untuk menulis satu skrip helper yang melayani beberapa server MCP.1093Gunakan ini untuk menulis satu skrip helper yang melayani beberapa server MCP.

1094 1094 

1095Plugin-provided `headersHelper` tidak dapat mereferensikan nilai [`${user_config.*}`](/docs/id/plugins-reference#user-configuration) plugin, karena perintah berjalan melalui shell. Claude Code melaporkan server sebagai salah konfigurasi dengan [kesalahan](/docs/id/errors#plugin-command-references-user-config) dan tidak mengganti nilai. Letakkan `${user_config.KEY}` di bidang `headers` server sebagai gantinya, yang tidak diurai shell, atau buat skrip helper membaca nilai dari file konfigurasi. Sebelum v2.1.207, `headersHelper` mengganti nilai `${user_config.*}`.1095Plugin-provided `headersHelper` tidak dapat mereferensikan nilai [`${user_config.*}`](/docs/id/plugins/manifest-reference#user-configuration) plugin, karena perintah berjalan melalui shell. Claude Code melaporkan server sebagai salah konfigurasi dengan [kesalahan](/docs/id/errors#plugin-command-references-user-config) dan tidak mengganti nilai. Letakkan `${user_config.KEY}` di bidang `headers` server sebagai gantinya, yang tidak diurai shell, atau buat skrip helper membaca nilai dari file konfigurasi. Sebelum v2.1.207, `headersHelper` mengganti nilai `${user_config.*}`.

1096 1096 

1097<h4 id="where-the-helper-runs">1097<h4 id="where-the-helper-runs">

1098 Tempat helper berjalan1098 Tempat helper berjalan


1102 1102 

1103| Tempat Anda mengonfigurasi server | Direktori kerja |1103| Tempat Anda mengonfigurasi server | Direktori kerja |

1104| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |1104| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |

1105| [Plugin](/docs/id/plugins-reference#mcp-servers) | Direktori root plugin. Memerlukan Claude Code v2.1.195 atau lebih baru |1105| [Plugin](/docs/id/plugins/components#mcp-servers) | Direktori root plugin. Memerlukan Claude Code v2.1.195 atau lebih baru |

1106| File `.mcp.json` proyek atau server [cakupan lokal](#local-scope) | Direktori proyek tempat server dideklarasikan |1106| File `.mcp.json` proyek atau server [cakupan lokal](#local-scope) | Direktori proyek tempat server dideklarasikan |

1107| File agen di proyek Anda, server dari opsi `mcpServers` SDK atau metode `setMcpServers()`, atau [`--mcp-config`](/docs/id/cli-reference) | [Direktori kerja utama](/docs/id/permissions#working-directories) sesi |1107| File agen di proyek Anda, server dari opsi `mcpServers` SDK atau metode `setMcpServers()`, atau [`--mcp-config`](/docs/id/cli-reference) | [Direktori kerja utama](/docs/id/permissions#working-directories) sesi |

1108| [Cakupan pengguna](#user-scope), [MCP terkelola](/docs/id/managed-mcp), [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau file agen dari luar proyek Anda, termasuk dari direktori `--add-dir` | Direktori konfigurasi Anda, `~/.claude` kecuali Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) |1108| [Cakupan pengguna](#user-scope), [MCP terkelola](/docs/id/managed-mcp), [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau file agen dari luar proyek Anda, termasuk dari direktori `--add-dir` | Direktori konfigurasi Anda, `~/.claude` kecuali Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) |


1235 </Step>1235 </Step>

1236</Steps>1236</Steps>

1237 1237 

1238Claude Code menandai connector sebagai `managed` di `/mcp` dan di manajer [`/plugin`](/docs/id/plugins) ketika organisasi Anda mengelola autentikasinya di claude.ai. Status managed tidak mengubah cara Claude Code terhubung ke connector atau menerapkan [kontrol alat](#organization-controls-on-connector-tools) organisasi Anda.1238Claude Code menandai connector sebagai `managed` di `/mcp` dan di manajer [`/plugin`](/docs/id/plugins/install) ketika organisasi Anda mengelola autentikasinya di claude.ai. Status managed tidak mengubah cara Claude Code terhubung ke connector atau menerapkan [kontrol alat](#organization-controls-on-connector-tools) organisasi Anda.

1239 1239 

1240Connector yang belum pernah Anda masuki dilipat di belakang baris `Show unused connectors` di akhir bagian claude.ai, sehingga daftar yang disediakan organisasi tidak mengisi panel. Pilih baris untuk memperluasnya. Connector yang Anda masuki sebelumnya tetap terlihat bahkan ketika saat ini memerlukan re-autentikasi.1240Connector yang belum pernah Anda masuki dilipat di belakang baris `Show unused connectors` di akhir bagian claude.ai, sehingga daftar yang disediakan organisasi tidak mengisi panel. Pilih baris untuk memperluasnya. Connector yang Anda masuki sebelumnya tetap terlihat bahkan ketika saat ini memerlukan re-autentikasi.

1241 1241 

Details

64}64}

65```65```

66 66 

67Claude Code mengabaikan [variabel pengekspor OpenTelemetry](/docs/id/settings-reference#variables-claude-code-ignores-in-env) dalam `.claude/settings.json` dan `.claude/settings.local.json` repositori, jadi repositori tidak dapat menggunakannya untuk menghidupkan telemetri, memilih ke mana telemetri pergi, atau menangkap konten. Atur variabel tersebut dalam pengaturan terkelola, atau biarkan setiap pengembang mengaturnya dalam shell atau `~/.claude/settings.json` mereka. Repositori masih dapat mematikan sinyal dengan menetapkan pemilih pengekspor, seperti `OTEL_LOGS_EXPORTER`, ke `none`, kecuali pengaturan terkelola, file `--settings`, atau lingkungan tempat Anda memulai Claude Code menetapkan variabel tersebut.

68 

67Claude Code tidak meneruskan variabel lingkungan `OTEL_*` ke subproses yang dihasilkannya, termasuk alat Bash, hooks, server MCP, dan language servers. Aplikasi yang diinstrumentasi OpenTelemetry yang Anda jalankan melalui alat Bash tidak mewarisi titik akhir pengekspor atau header Claude Code, jadi atur variabel tersebut langsung dalam perintah jika aplikasi itu perlu mengekspor telemetrinya sendiri.69Claude Code tidak meneruskan variabel lingkungan `OTEL_*` ke subproses yang dihasilkannya, termasuk alat Bash, hooks, server MCP, dan language servers. Aplikasi yang diinstrumentasi OpenTelemetry yang Anda jalankan melalui alat Bash tidak mewarisi titik akhir pengekspor atau header Claude Code, jadi atur variabel tersebut langsung dalam perintah jika aplikasi itu perlu mengekspor telemetrinya sendiri.

68 70 

69<h3 id="how-managed-settings-lock-the-otlp-destination">71<h3 id="how-managed-settings-lock-the-otlp-destination">


101 Variabel konfigurasi umum103 Variabel konfigurasi umum

102</h3>104</h3>

103 105 

104Variabel-variabel ini mengonfigurasi pengekspor, titik akhir, dan perilaku ekspor untuk semua penerapan. Jika Anda menetapkan variabel titik akhir atau protokol per-sinyal, seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code menggunakannya sebagai gantinya dari variabel generik untuk sinyal tersebut. Jika Anda menetapkan variabel header per-sinyal, seperti `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code menggabungkannya dengan `OTEL_EXPORTER_OTLP_HEADERS` generik untuk sinyal tersebut. Pada mesin dengan pengaturan terkelola, lihat [Bagaimana pengaturan terkelola mengunci tujuan OTLP](#how-managed-settings-lock-the-otlp-destination) untuk mengetahui apa yang Claude Code hapus.106Variabel-variabel ini mengonfigurasi pengekspor, titik akhir, dan perilaku ekspor untuk semua penerapan.

107 

108Jika Anda menetapkan variabel titik akhir atau protokol per-sinyal, seperti `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code menggunakannya sebagai gantinya dari variabel generik untuk sinyal tersebut. Jika Anda menetapkan variabel header per-sinyal, seperti `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code menggabungkannya dengan `OTEL_EXPORTER_OTLP_HEADERS` generik untuk sinyal tersebut.

109 

110Pada mesin dengan pengaturan terkelola, lihat [Bagaimana pengaturan terkelola mengunci tujuan OTLP](#how-managed-settings-lock-the-otlp-destination) untuk mengetahui apa yang Claude Code hapus.

105 111 

106| Variabel Lingkungan | Deskripsi | Nilai Contoh |112| Variabel Lingkungan | Deskripsi | Nilai Contoh |

107| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |113| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


651* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`657* `query_source`: Kategori subsistem yang mengeluarkan permintaan. Salah satu dari `"main"`, `"subagent"`, atau `"auxiliary"`

652* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya658* `speed`: `"fast"` saat permintaan menggunakan mode cepat. Tidak ada sebaliknya

653* `effort`: [Tingkat effort](/docs/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.659* `effort`: [Tingkat effort](/docs/id/model-config#adjust-effort-level) yang diterapkan pada permintaan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Tidak ada saat model tidak mendukung effort.

654* `agent.name`: Jenis subagent yang mengeluarkan permintaan. Nama agen built-in dan agen dari plugin marketplace resmi muncul verbatim. Nama agen yang ditentukan pengguna lainnya diganti dengan `"custom"`. Tidak ada saat permintaan tidak dikeluarkan oleh jenis subagent bernama.660* `agent.name`: Jenis subagent yang mengeluarkan permintaan. Nama agen built-in dan agen dari plugin marketplace resmi muncul verbatim. Nama agen yang ditentukan pengguna lainnya diganti dengan `"custom"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Tidak ada saat permintaan tidak dikeluarkan oleh jenis subagent bernama.

655* `skill.name`: Skill aktif untuk permintaan, diatur oleh alat Skill, perintah `/`, atau diwarisi oleh subagent yang dihasilkan. Nama skill built-in, bundled, yang ditentukan pengguna, dan plugin marketplace resmi muncul verbatim. Nama skill plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada saat tidak ada skill yang aktif.661* `skill.name`: Skill aktif untuk permintaan, diatur oleh alat Skill, perintah `/`, atau diwarisi oleh subagent yang dihasilkan. Nama skill built-in, bundled, yang ditentukan pengguna, dan plugin marketplace resmi muncul verbatim. Nama skill plugin pihak ketiga diganti dengan `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Tidak ada saat tidak ada skill yang aktif.

656* `plugin.name`: Plugin pemilik saat skill atau subagent aktif disediakan oleh plugin. Nama plugin marketplace resmi muncul verbatim. Nama plugin pihak ketiga diganti dengan `"third-party"`. Tidak ada saat skill atau subagent tidak memiliki plugin pemilik.662* `plugin.name`: Plugin pemilik saat skill atau subagent aktif disediakan oleh plugin. Nama plugin marketplace resmi muncul verbatim. Nama plugin pihak ketiga diganti dengan `"third-party"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Tidak ada saat skill atau subagent tidak memiliki plugin pemilik.

657* `marketplace.name`: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi. Tidak ada sebaliknya.663* `marketplace.name`: Marketplace tempat plugin pemilik diinstal. Hanya dipancarkan untuk plugin marketplace resmi. Tidak ada sebaliknya.

658* `mcp_server.name`: Server MCP yang alatnya berjalan dalam giliran yang menghasilkan permintaan ini. Nama server built-in, claude.ai-proxied, dan official-registry muncul verbatim. Nama server yang dikonfigurasi pengguna diganti dengan `"custom"`. Tidak ada saat tidak ada alat MCP yang berjalan. Sebelum v2.1.222, Claude Code menetapkan atribut ini pada setiap permintaan setelah panggilan alat MCP, bukan hanya pada permintaan yang menggunakan hasil alat, jadi dasbor yang mengagregasinya menunjukkan penurunan setelah Anda upgrade.664* `mcp_server.name`: Server MCP yang alatnya berjalan dalam giliran yang menghasilkan permintaan ini. Nama server built-in, claude.ai-proxied, dan official-registry muncul verbatim. Nama server yang dikonfigurasi pengguna diganti dengan `"custom"` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Tidak ada saat tidak ada alat MCP yang berjalan. Sebelum v2.1.222, Claude Code menetapkan atribut ini pada setiap permintaan setelah panggilan alat MCP, bukan hanya pada permintaan yang menggunakan hasil alat, jadi dasbor yang mengagregasinya menunjukkan penurunan setelah Anda upgrade.

659* `mcp_tool.name`: Alat MCP yang berjalan dalam giliran yang menghasilkan permintaan ini, dengan redaksi yang sama dan perilaku versi sebagai `mcp_server.name`. Tidak ada saat tidak ada alat MCP yang berjalan.665* `mcp_tool.name`: Alat MCP yang berjalan dalam giliran yang menghasilkan permintaan ini, dengan redaksi yang sama dan perilaku versi sebagai `mcp_server.name`. Tidak ada saat tidak ada alat MCP yang berjalan.

660 666 

661<h4 id="token-counter">667<h4 id="token-counter">


1086* `marketplace.name`: marketplace tempat plugin diinstal, saat diketahui. Diredaksi menjadi `"third-party"` di bawah kondisi yang sama dengan `plugin.name`1092* `marketplace.name`: marketplace tempat plugin diinstal, saat diketahui. Diredaksi menjadi `"third-party"` di bawah kondisi yang sama dengan `plugin.name`

1087* `plugin.version`: versi dari manifest plugin. Disertakan hanya saat nama tidak diredaksi dan manifest mendeklarasikan versi1093* `plugin.version`: versi dari manifest plugin. Disertakan hanya saat nama tidak diredaksi dan manifest mendeklarasikan versi

1088* `plugin.scope`: kategori provenance untuk plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, atau `"default-bundle"`1094* `plugin.scope`: kategori provenance untuk plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, atau `"default-bundle"`

1089* `enabled_via`: bagaimana plugin menjadi diaktifkan: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, atau `"user-install"`. Nilai `"admin-install"` berarti plugin diatur sebagai required atau auto-install untuk organisasi Anda di [**Pengaturan Organisasi > Plugins**](https://claude.ai/admin-settings/plugins). Sebelum v2.1.246, Claude Code melaporkan plugin ini sebagai `"user-install"` atau `"seed-mount"`1095* `enabled_via`: bagaimana plugin menjadi diaktifkan: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, atau `"user-install"`. Nilai `"admin-install"` berarti plugin diatur sebagai required atau auto-install untuk organisasi Anda di [**Pengaturan Organisasi > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). Sebelum v2.1.246, Claude Code melaporkan plugin ini sebagai `"user-install"` atau `"seed-mount"`

1090* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung berapa banyak plugin pihak ketiga yang berbeda dimuat di seluruh armada Anda tanpa merekam nama mereka. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins-reference#synced-plugins), Claude Code menghash nama plugin dengan nama marketplace yang dilaporkan claude.ai untuk plugin, atau dengan `synced` sebaliknya. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang dilaporkan claude.ai dalam hash1096* `plugin_id_hash`: hash deterministik dari nama plugin dan marketplace, dikirim hanya ke pengekspor yang dikonfigurasi. Memungkinkan Anda menghitung berapa banyak plugin pihak ketiga yang berbeda dimuat di seluruh armada Anda tanpa merekam nama mereka. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), Claude Code menghash nama plugin dengan nama marketplace yang dilaporkan claude.ai untuk plugin, atau dengan `synced` sebaliknya. Sebelum v2.1.246, Claude Code tidak menggunakan nama marketplace yang dilaporkan claude.ai dalam hash

1091* `has_hooks`: apakah plugin berkontribusi hooks1097* `has_hooks`: apakah plugin berkontribusi hooks

1092* `has_mcp`: apakah plugin berkontribusi server MCP1098* `has_mcp`: apakah plugin berkontribusi server MCP

1093* `host_owned_mcp`: `true` saat host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati pembacaan konfigurasi server MCP plugin, `false` sebaliknya. Memerlukan Claude Code v2.1.172 atau lebih baru1099* `host_owned_mcp`: `true` saat host SDK mengelola koneksi MCP plugin ini dan Claude Code melewati pembacaan konfigurasi server MCP plugin, `false` sebaliknya. Memerlukan Claude Code v2.1.172 atau lebih baru


1363* Atur dalam blok `env` pengaturan terkelola, pengaturan pengguna, atau `--settings`, atau dalam lingkungan tempat Anda meluncurkan Claude Code. Nilai dalam pengaturan proyek atau lokal tidak mengaktifkannya, karena repositori yang dikloning dapat menulisnya.1369* Atur dalam blok `env` pengaturan terkelola, pengaturan pengguna, atau `--settings`, atau dalam lingkungan tempat Anda meluncurkan Claude Code. Nilai dalam pengaturan proyek atau lokal tidak mengaktifkannya, karena repositori yang dikloning dapat menulisnya.

1364* Pengaturan terkelola server dapat mengaturnya tanpa menampilkan [dialog persetujuan keamanan](/docs/id/server-managed-settings#security-approval-dialogs), karena variabel hanya menambahkan kebijakan terkelola organisasi Anda sendiri ke acara yang organisasi Anda sudah terima.1370* Pengaturan terkelola server dapat mengaturnya tanpa menampilkan [dialog persetujuan keamanan](/docs/id/server-managed-settings#security-approval-dialogs), karena variabel hanya menambahkan kebijakan terkelola organisasi Anda sendiri ke acara yang organisasi Anda sudah terima.

1365 1371 

1366Dalam sesi interaktif dalam folder yang belum Anda [percayai](/docs/id/permissions#what-runs-before-you-trust-a-folder), Claude Code tidak mengekspor acara penolakan, karena pengaturan proyek dan lokal dapat mengarahkan ekspor ke kolektor yang berbeda sebelum kepercayaan.1372Dalam sesi interaktif dalam folder yang belum Anda [percayai](/docs/id/permissions#what-runs-before-you-trust-a-folder), Claude Code tidak mengekspor acara penolakan.

1367 1373 

1368**Nama Acara**: `claude_code.managed_settings_resolved`1374**Nama Acara**: `claude_code.managed_settings_resolved`

1369 1375 

Details

245| `registry.npmjs.org` | Instalasi plugin (pengambilan paket plugin bersumber npm dan instalasi dependensi paket Node.js plugin), server MCP yang diluncurkan `npx`, dan registri paket untuk instalasi npm dan bun dari Claude Code itu sendiri |245| `registry.npmjs.org` | Instalasi plugin (pengambilan paket plugin bersumber npm dan instalasi dependensi paket Node.js plugin), server MCP yang diluncurkan `npx`, dan registri paket untuk instalasi npm dan bun dari Claude Code itu sendiri |

246| `bridge.claudeusercontent.com` | [Claude in Chrome](/docs/id/chrome) jembatan WebSocket ekstensi |246| `bridge.claudeusercontent.com` | [Claude in Chrome](/docs/id/chrome) jembatan WebSocket ekstensi |

247| `*.frame.claudeusercontent.com` | Pembacaan konten [Artifact](/docs/id/artifacts). CLI mengambil file artefak dari host ini ketika Claude membuka satu, dan hanya ketika alat Artifact [tersedia](/docs/id/artifacts#availability) untuk akun Anda. Untuk mematikan alat dan menghilangkan persyaratan ini, atur [`"enableArtifact": false`](/docs/id/settings-reference#enableartifact) atau [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/id/env-vars); Claude Code juga menghormati pengaturan [`disableArtifact`](/docs/id/settings-reference#disableartifact) yang sudah usang. Lihat [Disable artifacts](/docs/id/artifacts#disable-artifacts) untuk cara pengaturan ini berinteraksi |247| `*.frame.claudeusercontent.com` | Pembacaan konten [Artifact](/docs/id/artifacts). CLI mengambil file artefak dari host ini ketika Claude membuka satu, dan hanya ketika alat Artifact [tersedia](/docs/id/artifacts#availability) untuk akun Anda. Untuk mematikan alat dan menghilangkan persyaratan ini, atur [`"enableArtifact": false`](/docs/id/settings-reference#enableartifact) atau [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/id/env-vars); Claude Code juga menghormati pengaturan [`disableArtifact`](/docs/id/settings-reference#disableartifact) yang sudah usang. Lihat [Disable artifacts](/docs/id/artifacts#disable-artifacts) untuk cara pengaturan ini berinteraksi |

248| `github.com` | Mengkloning [plugin marketplaces](/docs/id/plugin-marketplaces) dan plugin yang dihosting GitHub, termasuk marketplace resmi Anthropic, melalui HTTPS atau SSH. Untuk mengkloning sumber GitHub `owner/repo` hanya melalui HTTPS, atur [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/id/env-vars) |248| `github.com` | Mengkloning [plugin marketplaces](/docs/id/plugins/overview) dan plugin yang dihosting GitHub, termasuk marketplace resmi Anthropic, melalui HTTPS atau SSH. Untuk mengkloning sumber GitHub `owner/repo` hanya melalui HTTPS, atur [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/id/env-vars) |

249| `raw.githubusercontent.com` | Umpan changelog untuk [`/release-notes`](/docs/id/commands). Dalam sesi interaktif, Claude Code juga mengambilnya di latar belakang saat startup ketika changelog cache-nya belum mencakup versi yang berjalan, seperti awal pertama setelah pembaruan; sesi non-interaktif dan cloud tidak pernah mengambilnya |249| `raw.githubusercontent.com` | Umpan changelog untuk [`/release-notes`](/docs/id/commands). Dalam sesi interaktif, Claude Code juga mengambilnya di latar belakang saat startup ketika changelog cache-nya belum mencakup versi yang berjalan, seperti awal pertama setelah pembaruan; sesi non-interaktif dan cloud tidak pernah mengambilnya |

250| `*-review.googlesource.com` | Pencarian perubahan Gerrit pada checkout `googlesource.com`. Ketika sesi tab Claude Desktop Code dimulai atau dilanjutkan pada checkout [terpercaya](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang `origin`-nya adalah host `googlesource.com`, Claude Code menanyakan server `-review` host itu secara anonim untuk perubahan terbuka yang cocok dengan `Change-Id` HEAD, sekali per awal atau lanjutan. Jenis sesi lain melewati pencarian, dan tidak ada host Gerrit lain yang dihubungi. Opsional: nonaktifkan dengan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars) |250| `*-review.googlesource.com` | Pencarian perubahan Gerrit pada checkout `googlesource.com`. Ketika sesi tab Claude Desktop Code dimulai atau dilanjutkan pada checkout [terpercaya](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang `origin`-nya adalah host `googlesource.com`, Claude Code menanyakan server `-review` host itu secara anonim untuk perubahan terbuka yang cocok dengan `Change-Id` HEAD, sekali per awal atau lanjutan. Jenis sesi lain melewati pencarian, dan tidak ada host Gerrit lain yang dihubungi. Opsional: nonaktifkan dengan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars) |

251| `http-intake.logs.us5.datadoghq.com` | Acara telemetri operasional, dikirim hanya ketika CLI menggunakan Anthropic API secara langsung, tidak pernah untuk Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry. Opsional: nonaktifkan dengan [`DISABLE_TELEMETRY`](/docs/id/data-usage#telemetry-services) atau `DO_NOT_TRACK` |251| `http-intake.logs.us5.datadoghq.com` | Acara telemetri operasional, dikirim hanya ketika CLI menggunakan Anthropic API secara langsung, tidak pernah untuk Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry. Opsional: nonaktifkan dengan [`DISABLE_TELEMETRY`](/docs/id/data-usage#telemetry-services) atau `DO_NOT_TRACK` |

Details

171 </Step>171 </Step>

172</Steps>172</Steps>

173 173 

174[Plugins](/docs/id/plugins-reference) juga dapat mengirimkan output styles dalam direktori `output-styles/`.174[Plugins](/docs/id/plugins/manifest-reference) juga dapat mengirimkan output styles dalam direktori `output-styles/`.

175 175 

176<h3 id="frontmatter">176<h3 id="frontmatter">

177 Referensi frontmatter177 Referensi frontmatter


228 228 

229* [Settings](/docs/id/settings): di mana field `outputStyle` berada dan cara kerja precedence settings229* [Settings](/docs/id/settings): di mana field `outputStyle` berada dan cara kerja precedence settings

230* [Permission modes](/docs/id/permission-modes): bagaimana style Proactive dibandingkan dengan mode otomatis230* [Permission modes](/docs/id/permission-modes): bagaimana style Proactive dibandingkan dengan mode otomatis

231* [Plugins](/docs/id/plugins): paket dan distribusikan output styles bersama skills, hooks, dan agents231* [Plugins](/docs/id/plugins/overview): paket dan distribusikan output styles bersama skills, hooks, dan agents

232* [Debug your configuration](/docs/id/debug-your-config): diagnosa mengapa output style tidak berlaku232* [Debug your configuration](/docs/id/debug-your-config): diagnosa mengapa output style tidak berlaku

Details

301 Mode otomatis mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umum, bukan sebagai pengganti tinjauan pada operasi sensitif.301 Mode otomatis mengurangi permintaan izin tetapi tidak menjamin keamanan. Gunakan untuk tugas di mana Anda mempercayai arah umum, bukan sebagai pengganti tinjauan pada operasi sensitif.

302</Warning>302</Warning>

303 303 

304Mode otomatis tersedia hanya ketika akun Anda memenuhi semua persyaratan berikut:304Mode otomatis tersedia hanya ketika akun Anda memenuhi semua persyaratan ini:

305 305 

306* **Paket**: Semua paket.306* **Paket**: Semua paket.

307* **Organisasi**: pada Team dan Enterprise, mode otomatis tersedia secara default. Administrator dapat mematikannya untuk organisasi dengan menetapkan `permissions.disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings).307* **Organisasi**: pada Team dan Enterprise, mode otomatis tersedia secara default. Administrator dapat mematikannya untuk organisasi dengan menetapkan `permissions.disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings).

308* **Model**: pada API Anthropic dan [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Claude Opus 4.6 atau lebih baru, Sonnet 4.6 atau lebih baru, atau [model Fable](/docs/id/model-config#work-with-fable). Di Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang masuk, hanya Claude Sonnet 5, Opus 4.7 atau lebih baru, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku, dan model claude-3, tidak didukung di penyedia mana pun.308* **Model**: pada Anthropic API dan [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Claude Opus 4.6 atau lebih baru, Sonnet 4.6 atau lebih baru, atau [model Fable](/docs/id/model-config#work-with-fable). Di Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang masuk, hanya Claude Sonnet 5, Opus 4.7 atau lebih baru, dan model Fable. Model yang lebih lama, termasuk Sonnet 4.5, Opus 4.5, Haiku, dan model claude-3, tidak didukung di penyedia mana pun.

309* **Penyedia**: tersedia secara default pada API Anthropic, Claude Platform di AWS, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk.309* **Penyedia**: tersedia secara default pada Anthropic API, Claude Platform di AWS, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, dan sesi gateway aplikasi Claude yang masuk.

310 310 

311Jika Claude Code melaporkan mode otomatis sebagai tidak tersedia, pertama kali periksa persyaratan ini dan apakah file pengaturan apa pun menetapkan [`disableAutoMode`](/docs/id/settings-reference#disableautomode). Anthropic juga dapat mematikan mode otomatis di sisi server, atau server dapat menolak mode otomatis untuk akun Anda. Sesi yang menerima salah satu jawaban menjaga mode otomatis tetap mati sampai sesi berakhir, jadi mulai sesi baru nanti.311Jika Claude Code melaporkan mode otomatis tidak tersedia, pertama periksa persyaratan ini dan apakah file pengaturan apa pun menetapkan [`disableAutoMode`](/docs/id/settings-reference#disableautomode). Anthropic juga dapat mematikan mode otomatis di sisi server, atau server dapat menolak mode otomatis untuk akun Anda. Sesi yang menerima salah satu jawaban menjaga mode otomatis tetap mati sampai sesi berakhir, jadi mulai sesi baru nanti.

312 312 

313Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan berarti permintaan pengklasifikasi gagal. Kegagalan itu biasanya bersifat sementara, tetapi di Amazon Bedrock dapat berulang sampai akun Anda dapat memanggil model yang disebutkan. Lihat [referensi kesalahan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) untuk penyebab dan apa yang harus dilakukan.313Pesan terpisah yang menyebutkan model dan mengatakan mode otomatis "tidak dapat menentukan keamanan" tindakan berarti permintaan pengklasifikasi gagal. Kegagalan itu biasanya bersifat sementara, tetapi di Amazon Bedrock dapat berulang sampai akun Anda dapat memanggil model yang disebutkan. Lihat [referensi kesalahan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) untuk penyebab dan apa yang harus dilakukan.

314 314 


322 322 

323Untuk membuat mode otomatis mode izin awal default, atur `"permissions": {"defaultMode": "auto"}` dalam pengaturan pengguna atau terkelola. Dalam sesi yang dimulai ekstensi VS Code, pilih **Auto** dari indikator mode sebagai gantinya. [Beralih mode izin](#switch-permission-modes) mencakup apa yang mengalahkan pilihan itu.323Untuk membuat mode otomatis mode izin awal default, atur `"permissions": {"defaultMode": "auto"}` dalam pengaturan pengguna atau terkelola. Dalam sesi yang dimulai ekstensi VS Code, pilih **Auto** dari indikator mode sebagai gantinya. [Beralih mode izin](#switch-permission-modes) mencakup apa yang mengalahkan pilihan itu.

324 324 

325Pemeriksaan [`/doctor`](/docs/id/commands#all-commands) mengusulkan default pengaturan pengguna ini di penyedia ini dengan cara yang sama seperti pada API Anthropic.325Pemeriksaan [`/doctor`](/docs/id/commands#all-commands) menyarankan default pengaturan pengguna ini di penyedia ini dengan cara yang sama seperti pada Anthropic API.

326 326 

327Untuk mencegah pengembang menggunakan mode otomatis, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` dimulai dalam Manual sebagai gantinya. Sesi yang sudah berjalan dalam mode otomatis meninggalkannya ketika pengaturan mencapai sesi itu dari [sumber yang diterapkan admin](/docs/id/managed-settings#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang berjalan menjaga mode otomatis sampai berakhir.327Untuk mencegah pengembang menggunakan mode otomatis, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` dimulai dalam Manual sebagai gantinya. Sesi yang sudah berjalan dalam mode otomatis meninggalkannya ketika pengaturan mencapai sesi itu dari [sumber yang diterapkan admin](/docs/id/managed-settings#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang berjalan menjaga mode otomatis sampai berakhir.

328 328 


332 Tinjauan pengklasifikasi sisi server332 Tinjauan pengklasifikasi sisi server

333</h3>333</h3>

334 334 

335Di paket Enterprise dan akun yang menggunakan Claude API, di [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry, dan kapan pun Anda menunjuk `ANTHROPIC_BASE_URL` ke [gateway LLM atau proxy](/docs/id/llm-gateway), Claude Code dalam mode otomatis meminta server untuk meninjau [tindakan yang masuk ke pengklasifikasi](#how-the-classifier-evaluates-actions) sebagai bagian dari permintaan model sesi. Di mana server meninjau mereka, vonis mereka memutuskan tindakan tersebut. Di mana tidak, biasanya karena gateway LLM atau proxy mengganggu lalu lintas, atau karena platform, wilayah, atau kredensial belum memiliki pemeriksaan sisi server, Claude Code kembali ke permintaan pengklasifikasi sendiri, dan setelah fallback itu berlaku untuk sisa sesi, itu menampilkan [pemberitahuan tentang biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) pada akun di mana permintaan tersebut ditagih. Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi Claude Code sendiri, atur [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/id/env-vars). Variabel tidak dibaca pada koneksi langsung ke API Anthropic. Jika Anda menetapkan `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` dan membiarkan `CLAUDE_CODE_AUTO_MODE_SERVER` tidak ditetapkan, Claude Code juga berhenti meminta server.335Dalam mode otomatis, Claude Code dapat meminta server untuk memeriksa tindakan yang [urutan keputusan](#how-the-classifier-evaluates-actions) mengirim untuk tinjauan, sebagai bagian dari permintaan model sesi, sebagai pengganti mengirim permintaan pengklasifikasi sendiri. Sesi ini bertanya:

336 336 

337Meminta server secara default memerlukan Claude Code v2.1.278 atau lebih baru.337* **Koneksi langsung ke Anthropic API**: dalam sesi terminal interaktif, pada setiap paket claude.ai dan pada akun yang menggunakan Claude API, saat Anthropic meluncurkannya. Memerlukan Claude Code v2.1.271 atau lebih baru pada paket Pro, Max, dan Team, dan v2.1.278 atau lebih baru pada paket Enterprise dan akun Claude API. Dari v2.1.282, sesi yang [tidak mengambil bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching), misalnya karena Anda mematikan telemetri, meminta server secara default dalam sesi apa pun.

338* **Penyedia cloud, atau gateway LLM atau proxy**: di [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry, dan kapan pun Anda menunjuk `ANTHROPIC_BASE_URL` ke [gateway LLM atau proxy](/docs/id/llm-gateway), apa pun paket Anda. Meminta secara default memerlukan Claude Code v2.1.278 atau lebih baru.

339* **Sesi [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang masuk**: memerlukan Claude Code v2.1.280 atau lebih baru

340 

341Di mana server meninjau tindakan, vonis mereka memutuskannya. Dua hasil lain dimungkinkan:

342 

343* **Server tidak meninjau sesi**: respons selesai tanpa hasil tinjauan, atau server menjawab bahwa itu tidak meninjau sesi ini. Penyebab paling umum adalah gateway LLM atau proxy yang menghilangkan permintaan untuk tinjauan atau hasilnya, dan platform, wilayah, atau kredensial yang belum memiliki pemeriksaan sisi server. Claude Code kembali ke permintaan pengklasifikasi sendiri. Setelah fallback itu berlaku untuk sisa sesi, itu menunjukkan [pemberitahuan tentang biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) pada akun di mana permintaan tersebut ditagih.

344* **Server tidak memberikan vonis untuk tindakan**: Claude Code menolak tindakan daripada menjalankannya tanpa tinjauan. Pada koneksi apa pun, ini terjadi ketika respons berakhir sebelum hasil tinjauan tiba atau hasil tiba dalam bentuk yang tidak dapat dibaca Claude Code. Gateway LLM atau proxy yang memotong respons pendek atau menulis ulang hasilnya dapat menyebabkan salah satu. Pada koneksi langsung ke Anthropic API, itu juga terjadi ketika pemeriksaan server gagal untuk tindakan, misalnya dengan waktu habis. [Server tidak mengembalikan vonis keamanan](/docs/id/errors#the-server-returned-no-safety-verdict) mencakup pesan penolakan, apa yang terjadi ketika penolakan berulang, dan apa yang harus dilakukan.

345 

346Untuk melewati permintaan ke server dan selalu menggunakan permintaan pengklasifikasi Claude Code sendiri, atur [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/id/env-vars). Pada koneksi langsung ke Anthropic API, variabel memerlukan Claude Code v2.1.281 atau lebih baru. Menetapkannya ke `1` di sana mengaktifkan tinjauan server dalam sesi yang belum memilikinya, seperti sesi `-p` atau Agent SDK, kecuali Anda juga menetapkan `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Jika Anda menetapkan `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` dan membiarkan `CLAUDE_CODE_AUTO_MODE_SERVER` tidak ditetapkan, Claude Code juga berhenti meminta server.

338 347 

339<h3 id="what-the-classifier-blocks-by-default">348<h3 id="what-the-classifier-blocks-by-default">

340 Apa yang diblokir pengklasifikasi secara default349 Apa yang diblokir pengklasifikasi secara default


352* Memodifikasi infrastruktur bersama361* Memodifikasi infrastruktur bersama

353* Menghancurkan file secara tidak dapat dibalikkan yang ada sebelum sesi362* Menghancurkan file secara tidak dapat dibalikkan yang ada sebelum sesi

354* Dorong paksa363* Dorong paksa

355* Melakukan komit atau mendorong perubahan yang akan mengirim rahasia atau data sensitif di luar repositori ketika dijalankan, atau memperluas apa yang diekspos penerapan. Ini mencakup alur kerja CI atau konfigurasi penerapan yang melewatkan rahasia ke tujuan yang tidak sudah menerimanya, skrip atau langkah penyiapan yang membaca penyimpanan rahasia dan mengirim data keluar, dan perubahan konfigurasi yang memperluas apa yang dipublikasikan penerapan, seperti pengaturan registri, visibilitas, artefak, atau sourcemap. Pemeriksaan berlaku di cabang apa pun, berlaku bahkan ketika repositori bersifat publik, dan terbang ketika perubahan dilakukan komit atau didorong, terlepas dari apakah komit atau dorong itu memicu pipeline; menghapusnya memerlukan penamaan efek eksekusi, bukan hanya komit atau dorong. Sebelum v2.1.211, pemeriksaan ini dibatasi pada cabang default sebagai gantinya: dorong di sana diblokir ketika membawa konten sensitif, perubahan tersembunyi atau salah digambarkan relatif terhadap apa yang Anda minta, konten yang diportasi dari luar repositori, atau dirutekan di sekitar tinjauan yang Anda minta364* Melakukan komit atau mendorong perubahan yang akan mengirim rahasia atau data sensitif di luar repositori saat dijalankan, atau memperluas apa yang diekspos penerapan. Ini mencakup alur kerja CI atau konfigurasi penerapan yang meneruskan rahasia ke tujuan yang tidak sudah menerimanya, skrip atau langkah penyiapan yang membaca penyimpanan rahasia dan mengirim data keluar, dan perubahan konfigurasi yang memperluas apa yang dipublikasikan penerapan, seperti pengaturan registri, visibilitas, artefak, atau sourcemap. Pemeriksaan berlaku di cabang apa pun, berlaku bahkan ketika repositori bersifat publik, dan terbang ketika perubahan dilakukan komit atau didorong, terlepas dari apakah komit atau dorong itu memicu pipeline; menghapusnya memerlukan penamaan efek eksekusi, bukan hanya komit atau dorong. Sebelum v2.1.211, pemeriksaan ini dibatasi pada cabang default sebagai gantinya: dorong di sana diblokir ketika membawa konten sensitif, perubahan tersembunyi atau salah dideskripsikan relatif terhadap apa yang Anda minta, konten yang diportasi dari luar repositori, atau dirutekan di sekitar tinjauan yang Anda minta

356* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang pengklasifikasi asumsikan akan membuang perubahan yang tidak dilakukan komit365* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop`, atau `git stash clear`, yang pengklasifikasi asumsikan akan membuang perubahan yang tidak dilakukan komit

357* `git commit --amend` ketika komit di HEAD tidak dibuat dalam sesi ini366* `git commit --amend` ketika komit di HEAD tidak dibuat dalam sesi ini

358* Dari v2.1.198, `git commit --amend` ketika komit di HEAD sudah didorong. Penulisan ulang pesan saja tidak diblokir: `--amend -m` tanpa apa pun yang baru dipentaskan, pada komit yang dibuat Claude selama sesi ini367* Dari v2.1.198, `git commit --amend` ketika komit di HEAD sudah didorong. Penulisan ulang pesan saja tidak diblokir: `--amend -m` tanpa apa pun yang baru dipentaskan, pada komit yang dibuat Claude selama sesi ini


364* Menggabungkan permintaan tarik yang tidak ada manusia yang menyetujui, menyetujui permintaan tarik Claude sendiri, atau menonaktifkan pemeriksaan CI373* Menggabungkan permintaan tarik yang tidak ada manusia yang menyetujui, menyetujui permintaan tarik Claude sendiri, atau menonaktifkan pemeriksaan CI

365* Memposting komentar yang dengan sendirinya adalah perintah untuk otomasi, seperti `atlantis apply` atau `/deploy` atau `/merge` bot374* Memposting komentar yang dengan sendirinya adalah perintah untuk otomasi, seperti `atlantis apply` atau `/deploy` atau `/merge` bot

366* Mengalihkan, merampingkan, atau menghapus bendera fitur produksi375* Mengalihkan, merampingkan, atau menghapus bendera fitur produksi

367* Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengalirkan dan menghapus node cluster376* Menerapkan perubahan infrastruktur ke cakupan IaC yang dilindungi, atau mengalirkan dan menghapus node kluster

368* Penulisan ke cluster komputasi bersama yang melampaui sumber daya yang Anda sebutkan, seperti pemilih label atau `--all` yang menangkap pekerjaan pengguna lain377* Penulisan ke kluster komputasi bersama yang melampaui sumber daya yang Anda beri nama, seperti pemilih label atau `--all` yang menangkap pekerjaan pengguna lain

369* Membuat sumber daya Kubernetes yang berjalan di setiap node atau mencegat lalu lintas cluster, seperti DaemonSets dan webhook penerimaan378* Membuat sumber daya Kubernetes yang berjalan di setiap node atau mencegat lalu lintas kluster, seperti DaemonSets dan webhook penerimaan

370* Shell interaktif atau port-forward ke target remote sensitif379* Shell interaktif atau port-forward ke target remote sensitif

371* Membuka terowongan atau shell terbalik yang membuat layanan lokal dapat dijangkau dari internet publik380* Membuka terowongan atau shell terbalik yang membuat layanan lokal dapat diakses dari internet publik

372* Mencetak kredensial atau token langsung ke transkrip atau file381* Mencetak kredensial atau token langsung ke transkrip atau file

373* Mengakses lokasi yang tercantum sebagai lokasi data sensitif dalam [lingkungan](/docs/id/auto-mode-config#define-trusted-infrastructure) Anda, atau menyalin data keluar dari satu. Mulai v2.1.198 ini juga memblokir pengiriman data dari satu ke audiens yang dikecualikan entri382* Mengakses lokasi yang tercantum sebagai lokasi data sensitif dalam [lingkungan](/docs/id/auto-mode-config#define-trusted-infrastructure) Anda, atau menyalin data keluar dari satu. Sejak v2.1.198 ini juga memblokir pengiriman data dari satu ke audiens yang dikecualikan entri

374* Merutekan instalasi paket di sekitar registri paket internal Anda ke registri publik. Mulai v2.1.198, ini juga berlaku ketika Anda telah memberi tahu Claude bahwa registri internal atau cermin ada dalam percakapan, bukan hanya ketika satu tercantum dalam lingkungan Anda383* Merutekan instalasi paket di sekitar registri paket internal Anda ke registri publik. Sejak v2.1.198, ini juga berlaku ketika Anda telah memberi tahu Claude bahwa registri internal atau cermin ada dalam percakapan, bukan hanya ketika satu tercantum dalam lingkungan Anda

375* Menjalankan perintah dengan bendera yang melucuti penjaga keselamatan, seperti `--insecure`384* Menjalankan perintah dengan bendera yang melucuti penjaga keamanan, seperti `--insecure`

376* Meluncurkan loop agen otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Mulai v2.1.198 ini juga mencakup menjalankan agen pihak ketiga atau harness eval dengan isolasi dan persetujuan per-tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`385* Meluncurkan loop agen otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Sejak v2.1.198 ini juga mencakup menjalankan agen pihak ketiga atau harness eval dengan isolasi dan persetujuan per-tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`

377* Tindakan browser [Claude di Chrome](/docs/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial off-origin386* Tindakan browser [Claude di Chrome](/docs/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial off-origin

378 387 

379Claude Code v2.1.198 dan lebih baru juga memblokir ini secara default:388Claude Code v2.1.198 dan lebih baru juga memblokir ini secara default:

380 389 

381* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori goresan atau cache bersama lainnya dengan wildcard, glob, atau filter usia daripada dengan jalur bernama spesifik390* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori goresan atau cache bersama lainnya dengan wildcard, glob, atau filter usia daripada dengan jalur bernama spesifik

382* Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis ke orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Badan PR dan masalah, pesan komit, dan komentar dihitung sebagai jenis konten keluar ini ketika repositori berada di luar batas kepercayaan atau publik, termasuk repositori publik organisasi Anda sendiri; jalur file internal, nama kode, data respons API langsung seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Cakupan PR, masalah, dan pesan komit memerlukan Claude Code v2.1.200 atau lebih baru. Data pribadi langsung dari respons API dalam badan PR atau masalah, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, memerlukan Anda untuk menyebutkan detail tersebut dan penerima terlepas dari visibilitas atau batas kepercayaan repositori. Pemeriksaan itu memerlukan Claude Code v2.1.203 atau lebih baru391* Termasuk detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis ke orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Badan PR dan masalah, pesan komit, dan komentar dihitung sebagai jenis konten keluar ini ketika repositori berada di luar batas kepercayaan atau publik, termasuk repositori publik organisasi Anda sendiri; jalur file internal, nama kode, data respons API langsung seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Cakupan PR, masalah, dan pesan komit memerlukan Claude Code v2.1.200 atau lebih baru. Data pribadi langsung dari respons API dalam badan PR atau masalah, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, memerlukan Anda untuk menyebutkan detail tersebut dan penerima terlepas dari visibilitas atau batas kepercayaan repositori. Pemeriksaan itu memerlukan Claude Code v2.1.203 atau lebih baru

383* Mengirim keystroke ke pane tmux Claude Code sendiri untuk mendorong antarmukanya sendiri, yang pengklasifikasi perlakukan sebagai Claude mengubah izin atau pengawasannya sendiri392* Mengirim keystroke ke pane tmux Claude Code sendiri untuk mendorong antarmukanya sendiri, yang pengklasifikasi perlakukan sebagai Claude mengubah izinnya sendiri atau pengawasan

384 393 

385Claude Code v2.1.200 dan lebih baru juga memblokir ini secara default:394Claude Code v2.1.200 dan lebih baru juga memblokir ini secara default:

386 395 


388* Menghapus atau merobohkan sumber daya stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik berlaku dan Anda tidak menyebutkan sumber daya itu397* Menghapus atau merobohkan sumber daya stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik berlaku dan Anda tidak menyebutkan sumber daya itu

389* Menunjuk ulang URL dasar API, titik akhir proxy, penerima webhook, atau cermin registri ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`398* Menunjuk ulang URL dasar API, titik akhir proxy, penerima webhook, atau cermin registri ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`

390* Mengubah ke mana dorong pergi dengan `git remote set-url` atau `git remote add`, kecuali Anda menyebutkan remote baru399* Mengubah ke mana dorong pergi dengan `git remote set-url` atau `git remote add`, kecuali Anda menyebutkan remote baru

391* Mendorong rahasia atau data pribadi atau terpercaya ke repositori yang diketahui publik, atau mendorong materi rahasia di sana yang bukan bagian dari pekerjaan repositori itu sendiri. Materi subjek repositori dotfiles sendiri adalah satu-satunya pengecualian untuk data pribadi atau terpercaya, dan konten dari repositori pribadi mencapai permukaan publik apa pun diblokir dengan cara yang sama; kedua penyempurnaan memerlukan Claude Code v2.1.203 atau lebih baru. Sebelum v2.1.203, data pribadi dikelompokkan dengan materi rahasia dan diblokir hanya ketika bukan bagian dari pekerjaan repositori itu sendiri. Ketika visibilitas repositori tidak ditetapkan, pengklasifikasi tidak memblokir itu saja; itu menilai konten terhadap aturan lain sebagai gantinya400* Mendorong rahasia atau data pribadi atau terpercaya ke repositori yang diketahui publik, atau mendorong materi rahasia di sana yang bukan bagian dari pekerjaan repositori itu sendiri. Materi pelajaran repositori dotfiles sendiri adalah satu-satunya pengecualian untuk data pribadi atau terpercaya, dan konten dari repositori pribadi mencapai permukaan publik apa pun diblokir dengan cara yang sama; kedua penyempurnaan memerlukan Claude Code v2.1.203 atau lebih baru. Sebelum v2.1.203, data pribadi dikelompokkan dengan materi rahasia dan diblokir hanya ketika bukan bagian dari pekerjaan repositori itu sendiri. Ketika visibilitas repositori tidak ditetapkan, pengklasifikasi tidak memblokir itu saja; itu menilai konten terhadap aturan lain sebagai gantinya

392* Membuka permintaan tarik terhadap repositori atau organisasi yang berbeda, bercabang dengan `gh repo fork`, atau mendorong ke repositori pihak ketiga, kecuali Anda menyebutkan target eksternal itu401* Membuka permintaan tarik terhadap repositori atau organisasi yang berbeda, bercabang dengan `gh repo fork`, atau mendorong ke repositori pihak ketiga, kecuali Anda menyebutkan target eksternal itu

393 402 

394Claude Code v2.1.203 dan lebih baru juga memblokir ini secara default:403Claude Code v2.1.203 dan lebih baru juga memblokir ini secara default:

395 404 

396* Konten dari penyimpanan lokal sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, memasuki komit, dorong, teks PR atau masalah, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuan. Transkrip sesi dan log percakapan, folder dot konfigurasi dan kredensial seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, dan ekspor data pengguna semuanya dihitung, dan repositori menjadi pribadi tidak menghapusnya405* Konten dari penyimpanan lokal sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, memasuki komit, dorong, teks PR atau masalah, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuan. Transkrip sesi dan log percakapan, folder dot kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, dan ekspor data pengguna semuanya dihitung, dan repositori menjadi pribadi tidak menghapusnya

397 406 

398Claude Code v2.1.205 dan lebih baru juga memblokir ini secara default:407Claude Code v2.1.205 dan lebih baru juga memblokir ini secara default:

399 408 

400* Menulis ke transkrip sesi Claude Code, file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi Anda yang dikonfigurasi, baik secara langsung maupun melalui perintah shell. Aturan juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir409* Menulis ke transkrip sesi Claude Code, file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi Anda yang dikonfigurasi, baik secara langsung maupun melalui perintah shell. Aturan juga mencakup baris metadata yang Claude Code tambahkan ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir

401* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell, atau glob yang berakar pada satu, yang tidak ditugaskan di mana pun dalam percakapan yang dilihat pengklasifikasi. Nilai datang hanya dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, jadi pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok menghapus ketika Anda menyebutkan jalur yang tepat dihapus, atau ketika Claude menjalankan kembali penghapusan dengan jalur literal yang diselesaikan ditulis ke dalam perintah. Penghapusan yang targetnya dapat diselesaikan pengklasifikasi tidak terpengaruh. Target `Remove-Item` yang merupakan `*` telanjang atau berakhir dalam `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [menolak mereka langsung](#remove-item-in-powershell)410* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell, atau glob yang berakar pada satu, yang tidak ditugaskan di mana pun dalam percakapan yang dilihat pengklasifikasi. Nilai datang hanya dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, jadi pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok menghapus ketika Anda menyebutkan jalur pasti yang dihapus, atau ketika Claude menjalankan kembali penghapusan dengan jalur literal yang diselesaikan ditulis ke dalam perintah. Penghapusan yang targetnya dapat diselesaikan pengklasifikasi tidak terpengaruh. Target `Remove-Item` yang merupakan `*` telanjang atau berakhir dalam `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [menolaknya langsung](#remove-item-in-powershell)

402 411 

403Claude Code v2.1.257 dan lebih baru juga memblokir ini secara default:412Claude Code v2.1.257 dan lebih baru juga memblokir ini secara default:

404 413 

405* Meminta kredensial dari titik akhir metadata instans cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registri dengan identitas akun layanan atau node mesin itu sendiri414* Meminta kredensial dari titik akhir metadata instans cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, kluster, atau registri dengan identitas akun layanan atau node mesin itu sendiri

406* Menjangkau host publik dengan rute selain permintaan langsung, seperti terowongan, shell terbalik, atau konfigurasi resolver atau proxy yang ditulis ulang untuk menunjuk ke luar415* Mencapai host publik dengan rute selain permintaan langsung, seperti terowongan, shell terbalik, atau konfigurasi resolver atau proxy yang ditulis ulang untuk menunjuk ke luar

407* Membaca kredensial yang dimiliki host daripada tugas Anda, seperti sertifikat node atau auth registri kontainer node416* Membaca kredensial yang dimiliki host daripada tugas Anda, seperti sertifikat node atau auth registri kontainer node

408* Menghubungkan ke atau memindai kontainer saudara, pod, atau VM yang tidak dimulai Claude, atau node di bawah kontainer417* Menghubungkan ke atau memindai kontainer, pod, atau VM saudara yang tidak dimulai Claude, atau node di bawah kontainer

409 418 

410Jika Claude Code berjalan di tempat yang dimaksudkan untuk memungkinkan salah satu dari ini, jelaskan pengaturan itu dalam entri [Host containment](/docs/id/auto-mode-config#define-trusted-infrastructure) dalam `autoMode.environment`.419Jika Claude Code berjalan di tempat yang dimaksudkan untuk memungkinkan salah satu dari ini, jelaskan pengaturan itu dalam entri [Host containment](/docs/id/auto-mode-config#define-trusted-infrastructure) dalam `autoMode.environment`.

411 420 

412Claude Code v2.1.261 dan lebih baru juga memblokir ini secara default:421Claude Code v2.1.261 dan lebih baru juga memblokir ini secara default:

413 422 

414* Memposting atau menulis tautan ke layanan paste publik, diagram, atau berbagi data dalam pesan, teks PR atau masalah, dokumen, atau di mana pun tautan akan dibuka atau diambil, ketika URL itu sendiri membawa konten yang dibagikan, kecuali Anda menyebutkan layanan itu423* Memposting atau menulis tautan ke layanan paste, diagram, atau berbagi data publik dalam pesan, teks PR atau masalah, dokumen, atau di mana pun tautan akan dibuka atau diambil, ketika URL itu sendiri membawa konten yang dibagikan, kecuali Anda menyebutkan layanan itu

415 424 

416**Diizinkan secara default**:425**Diizinkan secara default**:

417 426 


419* Menginstal dependensi yang dideklarasikan dalam file kunci atau manifes Anda428* Menginstal dependensi yang dideklarasikan dalam file kunci atau manifes Anda

420* Membaca `.env` dan mengirim kredensial ke API yang cocok429* Membaca `.env` dan mengirim kredensial ke API yang cocok

421* Permintaan HTTP hanya-baca430* Permintaan HTTP hanya-baca

422* Mendorong ke cabang apa pun dari repositori yang Anda kerjakan, termasuk cabang default. Cabang non-default yang nama menandainya sebagai target penerapan atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai dorong di sana berdasarkan istilahnya sendiri. Konten dorong masih diperiksa terhadap aturan lain, [`permissions.deny` rules](/docs/id/permissions#manage-permissions) masih dapat memblokir perintah push [seperti yang ditulis](/docs/id/permissions#bash-rule-limits) dalam setiap mode, dan perlindungan cabang remote itu sendiri masih berlaku. Sebelum v2.1.211, hanya dorong ke cabang yang Anda mulai, cabang yang dibuat Claude, dan dorong rutin ke cabang default yang diizinkan secara default, dan sebelum v2.1.203 dorong langsung apa pun ke cabang default diblokir431* Mendorong ke cabang apa pun dari repositori yang Anda kerjakan, termasuk cabang default. Cabang non-default yang nama menandainya sebagai target penerapan atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai dorong di sana berdasarkan istilahnya sendiri. Konten dorong masih diperiksa terhadap aturan lain, [aturan `permissions.deny`](/docs/id/permissions#manage-permissions) masih dapat memblokir perintah dorong [seperti yang ditulis](/docs/id/permissions#bash-rule-limits) dalam setiap mode, dan perlindungan cabang remote itu sendiri masih berlaku. Sebelum v2.1.211, hanya dorong ke cabang yang Anda mulai, cabang yang dibuat Claude, dan dorong rutin ke cabang default yang diizinkan secara default, dan sebelum v2.1.203 dorong langsung apa pun ke cabang default diblokir

423 432 

424Claude Code v2.1.195 dan lebih baru juga memungkinkan ini secara default:433Claude Code v2.1.195 dan lebih baru juga memungkinkan ini secara default:

425 434 

426* Menghapus pekerjaan yang tepat dibuat Claude sebelumnya dalam sesi yang sama435* Menghapus pekerjaan pasti yang dibuat Claude sebelumnya dalam sesi yang sama

427* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda436* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda

428* Pesan antara agen yang bekerja bersama dalam sesi multi-agen yang sama437* Pesan antara agen yang bekerja bersama dalam sesi multi-agen yang sama

429* Mengirim data ke domain terpercaya, bucket, dan layanan yang Anda daftarkan dalam [`environment`](/docs/id/auto-mode-config#define-trusted-infrastructure). Ini mencakup aliran data saja, bukan operasi destruktif atau kredensial pada infrastruktur yang sama438* Mengirim data ke domain terpercaya, bucket, dan layanan yang Anda daftarkan dalam [`environment`](/docs/id/auto-mode-config#define-trusted-infrastructure). Ini mencakup aliran data saja, bukan operasi destruktif atau kredensial pada infrastruktur yang sama

430* [Claude di Chrome](/docs/id/chrome) navigasi ke domain internal terpercaya, localhost, atau URL yang Anda sebutkan439* [Claude di Chrome](/docs/id/chrome) navigasi ke domain internal terpercaya, localhost, atau URL yang Anda beri nama

431 440 

432Perintah bersandbox tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan perintah pada perintah itu sendiri, pengklasifikasi meninjau mereka dengan perintah, dan daftar yang disetujui membuka host tersebut untuk perintah itu saja. [Domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) mencakup apa yang dapat dan tidak dapat dibuka daftar dan apa yang terjadi ketika perintah mencapai host yang tidak terdaftar.441Perintah sandboxed tidak mendapatkan akses jaringan secara default. Claude menyebutkan host yang dibutuhkan perintah pada perintah itu sendiri, pengklasifikasi meninjau mereka dengan perintah, dan daftar yang disetujui membuka host tersebut untuk perintah itu saja. [Domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) mencakup apa yang dapat dan tidak dapat dibuka daftar dan apa yang terjadi ketika perintah mencapai host yang tidak terdaftar.

433 442 

434Jalankan `claude auto-mode defaults` untuk mencetak daftar aturan lengkap sebagai JSON. Jika tindakan rutin diblokir, administrator dapat menambahkan repo terpercaya, bucket, dan layanan melalui pengaturan `autoMode.environment`: lihat [Konfigurasi mode otomatis](/docs/id/auto-mode-config).443Jalankan `claude auto-mode defaults` untuk mencetak daftar aturan lengkap sebagai JSON. Jika tindakan rutin diblokir, administrator dapat menambahkan repo terpercaya, bucket, dan layanan melalui pengaturan `autoMode.environment`: lihat [Konfigurasi mode otomatis](/docs/id/auto-mode-config).

435 444 

436Mendorong ke cabang apa pun dari repositori yang Anda kerjakan dan membuat permintaan tarik yang cocok dengan permintaan Anda berjalan tanpa permintaan, kecuali dorong atau permintaan tarik jatuh di bawah [daftar yang diblokir](#what-the-classifier-blocks-by-default), seperti rahasia atau data sensitif meninggalkan repositori, atau permintaan tarik yang menargetkan repositori atau organisasi yang berbeda. Untuk memerlukan checkpoint manusia sebelum perintah ini sambil tetap dalam mode otomatis, tambahkan aturan `permissions.ask`, yang cocok dengan perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits): lihat [Batas umum](/docs/id/auto-mode-config#common-boundaries).445Mendorong ke cabang apa pun dari repositori yang Anda kerjakan dan membuat permintaan tarik yang cocok dengan permintaan Anda berjalan tanpa permintaan, kecuali dorong atau permintaan tarik jatuh di bawah [daftar diblokir](#what-the-classifier-blocks-by-default), seperti rahasia atau data sensitif meninggalkan repositori, atau permintaan tarik yang menargetkan repositori atau organisasi yang berbeda. Untuk memerlukan checkpoint manusia sebelum perintah ini sambil tetap dalam mode otomatis, tambahkan aturan `permissions.ask`, yang cocok dengan perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits): lihat [Batas umum](/docs/id/auto-mode-config#common-boundaries).

437 446 

438<h3 id="first-read-outside-the-working-directories">447<h3 id="first-read-outside-the-working-directories">

439 Pembacaan pertama di luar direktori kerja448 Pembacaan pertama di luar direktori kerja


446Apa pun yang Anda jawab, Claude terus bekerja:455Apa pun yang Anda jawab, Claude terus bekerja:

447 456 

448* **Terus izinkan**: pembacaan berjalan, pembacaan kemudian di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan tidak muncul lagi457* **Terus izinkan**: pembacaan berjalan, pembacaan kemudian di luar direktori kerja berjalan seperti sebelumnya, dan Claude Code mencatat jawaban Anda sehingga permintaan tidak muncul lagi

449* **Blokir mulai sekarang**: pembacaan ditolak, dan Claude Code menetapkan [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) ke `true` dalam pengaturan pengguna Anda, yang membuat alat file menolak pembacaan tersebut dalam setiap sesi kemudian dan setiap mode izin. Untuk membiarkan Claude membaca jalur seperti itu nanti, tambahkan direktorinya dengan `/add-dir` atau hapus pengaturan.458* **Blokir mulai sekarang**: pembacaan ditolak, dan Claude Code menetapkan [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) ke `true` dalam pengaturan pengguna Anda, yang membuat alat file menolak pembacaan tersebut dalam setiap sesi kemudian dan setiap mode izin. Untuk membiarkan Claude membaca jalur tersebut nanti, tambahkan direktorinya dengan `/add-dir` atau hapus pengaturannya.

450* **Tanya lagi lain kali**: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja meminta lagi459* **Tanya lagi lain kali**: pembacaan ditolak, dan pembacaan berikutnya di luar direktori kerja meminta lagi

451 460 

452<h3 id="boundaries-you-state-in-conversation">461<h3 id="boundaries-you-state-in-conversation">

453 Batas yang Anda nyatakan dalam percakapan462 Batas yang Anda nyatakan dalam percakapan

454</h3>463</h3>

455 464 

456Pengklasifikasi memperlakukan batas yang Anda nyatakan dalam percakapan sebagai sinyal blok. Jika Anda memberi tahu Claude "jangan dorong" atau "tunggu sampai saya meninjau sebelum menerapkan", pengklasifikasi memblokir tindakan yang cocok bahkan ketika aturan default akan memungkinkan mereka. Batas tetap berlaku sampai Anda mengangkatnya dalam pesan kemudian. Penilaian Claude sendiri bahwa kondisi terpenuhi tidak mengangkatnya.465Pengklasifikasi memperlakukan batas yang Anda nyatakan dalam percakapan sebagai sinyal blok. Jika Anda memberi tahu Claude "jangan dorong" atau "tunggu sampai saya meninjau sebelum menerapkan", pengklasifikasi memblokir tindakan yang cocok bahkan ketika aturan default akan memungkinkannya. Batas tetap berlaku sampai Anda mengangkatnya dalam pesan kemudian. Penilaian Claude sendiri bahwa kondisi terpenuhi tidak mengangkatnya.

457 466 

458Batas tidak disimpan sebagai aturan. Pengklasifikasi membaca ulang mereka dari transkrip pada setiap pemeriksaan, jadi batas dapat hilang jika [pemadatan konteks](/docs/id/costs#reduce-token-usage) menghapus pesan yang menyatakannya. Untuk jaminan keras, tambahkan [aturan deny](/docs/id/permissions#permission-rule-syntax) sebagai gantinya.467Batas tidak disimpan sebagai aturan. Pengklasifikasi membaca ulang mereka dari transkrip pada setiap pemeriksaan, jadi batas dapat hilang jika [pemadatan konteks](/docs/id/costs#reduce-token-usage) menghapus pesan yang menyatakannya. Untuk jaminan keras, tambahkan [aturan deny](/docs/id/permissions#permission-rule-syntax) sebagai gantinya.

459 468 


464Jika Anda memberi tahu Claude bahwa tindakan yang diblokir diizinkan, pengklasifikasi membaca itu sebagai persetujuan Anda dan dapat menghapus blok. Cara Anda merumuskannya memutuskan apakah tindakan berjalan, dan seberapa jauh persetujuan mencapai:473Jika Anda memberi tahu Claude bahwa tindakan yang diblokir diizinkan, pengklasifikasi membaca itu sebagai persetujuan Anda dan dapat menghapus blok. Cara Anda merumuskannya memutuskan apakah tindakan berjalan, dan seberapa jauh persetujuan mencapai:

465 474 

466* **Beri nama tindakan dan spesifikasinya**: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti cabang dorong paksa. Menyebutkan verba saja tidak menghapus apa pun, jadi "Anda dapat dorong paksa" membiarkan blok tetap ada.475* **Beri nama tindakan dan spesifikasinya**: pesan Anda harus menyebutkan tindakan dan hal spesifik yang membuatnya berbahaya, seperti cabang dorong paksa. Menyebutkan verba saja tidak menghapus apa pun, jadi "Anda dapat dorong paksa" membiarkan blok tetap ada.

467* **Harapkan itu mencakup satu tindakan**: persetujuan mencakup tindakan destruktif yang Anda sebutkan, jadi tindakan kemudian diblokir lagi kecuali Anda memberikan persetujuan sebagai berdiri. Untuk berhenti menyetujui pola rutin satu tindakan pada satu waktu, tambahkan ke [`autoMode.allow`](/docs/id/auto-mode-config#override-the-block-and-allow-rules).476* **Harapkan itu mencakup satu tindakan**: persetujuan mencakup tindakan destruktif yang Anda beri nama, jadi tindakan kemudian diblokir lagi kecuali Anda memberikan persetujuan sebagai berdiri. Untuk berhenti menyetujui pola rutin satu tindakan pada satu waktu, tambahkan ke [`autoMode.allow`](/docs/id/auto-mode-config#override-the-block-and-allow-rules).

468* **Beberapa blok tetap ada**: [urutan preseden pengklasifikasi](/docs/id/auto-mode-config#override-the-block-and-allow-rules) menetapkan blok mana yang dapat dicapai persetujuan Anda. Untuk menjalankan langkah yang tidak akan dihapus, [tinggalkan mode otomatis](#switch-permission-modes) dan jawab permintaan izin.477* **Beberapa blok tetap ada**: [urutan preseden pengklasifikasi](/docs/id/auto-mode-config#override-the-block-and-allow-rules) menetapkan blok mana yang dapat dicapai persetujuan Anda. Untuk menjalankan langkah yang tidak akan dihapusnya, [tinggalkan mode otomatis](#switch-permission-modes) dan jawab permintaan izin.

469 478 

470<h3 id="when-auto-mode-falls-back">479<h3 id="when-auto-mode-falls-back">

471 Ketika mode otomatis kembali480 Ketika mode otomatis kembali


473 482 

474Ketika mode otomatis tidak dapat menyetujui tindakan sesi Anda, apa yang terjadi tergantung pada kasusnya:483Ketika mode otomatis tidak dapat menyetujui tindakan sesi Anda, apa yang terjadi tergantung pada kasusnya:

475 484 

476* **Tindakan yang diblokir**: Claude Code menampilkan notifikasi dan mencantumkan tindakan dalam `/permissions` di bawah tab **Recently denied**, di mana Anda dapat menekan `r` untuk mencoba ulang dengan persetujuan manual. Ketika pengklasifikasi menghasilkan [tidak ada vonis pada tindakan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action), karena pemeriksaan keselamatan terpisah dari mode otomatis menolak permintaan pengklasifikasi sendiri atau responsnya tidak diuraikan, Claude Code menolak tindakan tanpa notifikasi atau entri **Recently denied**.485* **Tindakan yang diblokir**: Claude Code menampilkan pemberitahuan dan mencantumkan tindakan dalam `/permissions` di bawah tab **Recently denied**, di mana Anda dapat menekan `r` untuk mencoba ulang dengan persetujuan manual. Ketika pengklasifikasi menghasilkan [tidak ada vonis pada tindakan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action), karena pemeriksaan keamanan terpisah dari mode otomatis menolak permintaan pengklasifikasi sendiri atau responsnya tidak diuraikan, Claude Code menolak tindakan tanpa pemberitahuan atau entri **Recently denied**.

477* **Blok berulang**: jika pengklasifikasi memblokir tindakan 3 kali berturut-turut atau 20 kali total, mode otomatis berhenti dan Claude Code melanjutkan permintaan. Menyetujui tindakan yang diminta melanjutkan mode otomatis. Ambang batas ini tidak dapat dikonfigurasi. Tindakan yang diizinkan apa pun mengatur ulang penghitung berturut-turut, sementara penghitung total bertahan untuk sesi dan mengatur ulang hanya ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan terhadap ambang batas apa pun ketika [pemeriksaan keselamatan terpisah dari mode otomatis menolak permintaan pengklasifikasi](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action); entri tertaut mencakup bagaimana Claude Code menangani penolakan tersebut.486* **Blok berulang**: jika pengklasifikasi memblokir tindakan 3 kali berturut-turut atau 20 kali total, mode otomatis berhenti dan Claude Code melanjutkan permintaan. Menyetujui tindakan yang diminta melanjutkan mode otomatis. Ambang batas ini tidak dapat dikonfigurasi. Tindakan yang diizinkan apa pun mengatur ulang penghitung berturut-turut, sementara penghitung total bertahan untuk sesi dan mengatur ulang hanya ketika batasnya sendiri memicu fallback. Claude Code tidak menghitung penolakan terhadap ambang batas apa pun ketika [pemeriksaan keamanan terpisah dari mode otomatis menolak permintaan pengklasifikasi](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action); entri tertaut mencakup cara Claude Code menangani penolakan tersebut.

478* **Sesi yang tidak dapat meminta**: lari `-p` [non-interaktif](/docs/id/headless) tanpa [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak memiliki permintaan untuk kembali. Ketika blok berulang mencapai ambang batas, tindakan tidak berjalan dan Claude terus bekerja. Hal yang sama berlaku ketika [pemeriksaan keselamatan terpisah dari mode otomatis menolak permintaan pengklasifikasi](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code tidak menghentikan lari dalam kedua kasus.487* **Sesi yang tidak dapat meminta**: lari `-p` [non-interaktif](/docs/id/headless) tanpa [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak memiliki permintaan untuk kembali. Ketika blok berulang mencapai ambang batas, tindakan tidak berjalan dan Claude terus bekerja. Hal yang sama berlaku ketika [pemeriksaan keamanan terpisah dari mode otomatis menolak permintaan pengklasifikasi](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code tidak menghentikan lari dalam kedua kasus.

479* **Beralih mode selama pemeriksaan**: jika Anda beralih mode izin sementara pemeriksaan pengklasifikasi tertunda, Claude Code membuang vonis yang mode baru tidak akan meminta daripada menerapkannya: Anda diminta persetujuan sebagai gantinya, atau tindakan auto-ditolak dalam [`dontAsk` mode](#allow-only-pre-approved-tools-with-dontask-mode).488* **Tidak ada vonis dari server**: di bawah [tinjauan pengklasifikasi sisi server](#server-side-classifier-review), Claude Code menolak tindakan yang server tidak memberikan vonis, dan menghentikan giliran setelah sepuluh respons berturut-turut tanpa vonis. Lihat [Server tidak mengembalikan vonis keamanan](/docs/id/errors#the-server-returned-no-safety-verdict).

489* **Beralih mode selama pemeriksaan**: jika Anda beralih mode izin saat pemeriksaan pengklasifikasi tertunda, Claude Code membuang vonis yang mode baru tidak akan diminta daripada menerapkannya: Anda diminta persetujuan sebagai gantinya, atau tindakan ditolak otomatis dalam [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

480 490 

481Blok berulang biasanya berarti pengklasifikasi kehilangan konteks tentang infrastruktur Anda. Gunakan `/feedback` untuk melaporkan positif palsu, atau minta administrator untuk [mengonfigurasi infrastruktur terpercaya](/docs/id/auto-mode-config).491Blok berulang biasanya berarti pengklasifikasi kehilangan konteks tentang infrastruktur Anda. Gunakan `/feedback` untuk melaporkan positif palsu, atau biarkan administrator [mengonfigurasi infrastruktur terpercaya](/docs/id/auto-mode-config).

482 492 

483<span id="how-the-classifier-evaluates-actions" />493<span id="how-the-classifier-evaluates-actions" />

484 494 


491 * Alat MCP yang ditandai [`requiresUserInteraction`](/docs/id/mcp#require-approval-for-a-specific-tool) meminta Anda langsung bahkan ketika aturan allow cocok, dan begitu juga alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code501 * Alat MCP yang ditandai [`requiresUserInteraction`](/docs/id/mcp#require-approval-for-a-specific-tool) meminta Anda langsung bahkan ketika aturan allow cocok, dan begitu juga alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code

492 * Perintah shell yang membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) juga rute ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintah, bukan hostnya502 * Perintah shell yang membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) juga rute ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintah, bukan hostnya

493 * Aturan ask yang cocok pada konten perintah, seperti `Bash(git push *)`, kembali ke permintaan izin503 * Aturan ask yang cocok pada konten perintah, seperti `Bash(git push *)`, kembali ke permintaan izin

494 2. Tindakan hanya-baca dan pengeditan file di direktori kerja Anda auto-disetujui, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang meminta Anda504 2. Tindakan hanya-baca dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang meminta Anda

495 3. Semuanya yang lain pergi ke pengklasifikasi. Alat konektor dan alat MCP `requiresUserInteraction` yang meminta Anda langsung dalam langkah 1 tidak pernah mencapai pengklasifikasi, jadi persetujuan yang diperlukan organisasi maupun langkah persetujuan tidak auto-disetujui505 * Dalam sesi dengan [tinjauan pengklasifikasi sisi server](#server-side-classifier-review), perintah hanya-baca dan [sandboxed](/docs/id/sandboxing#sandbox-modes) shell menunggu tinjauan itu dan diblokir jika itu menandainya

496 4. Jika pengklasifikasi memblokir, Claude menerima alasan dan mencoba alternatif. Dalam sebagian besar sesi alasan menyebutkan aturan yang cocok pengklasifikasi, seperti `[Data Exfiltration]`, daripada memberikan penjelasan tertulis; lihat [Tinjau penolakan](/docs/id/auto-mode-config#review-denials)506 3. Semuanya yang lain pergi ke pengklasifikasi. Alat konektor dan alat MCP `requiresUserInteraction` yang meminta Anda langsung dalam langkah 1 tidak pernah mencapai pengklasifikasi, jadi baik persetujuan yang diperlukan org maupun langkah persetujuan tidak disetujui otomatis

507 4. Jika pengklasifikasi memblokir, Claude menerima alasan dan mencoba alternatif. Dalam sebagian besar sesi alasan menyebutkan aturan yang cocok pengklasifikasi, seperti `[Data Exfiltration]`, daripada memberikan penjelasan tertulis; lihat [Tinjauan penolakan](/docs/id/auto-mode-config#review-denials)

497 508 

498 Saat memasuki mode otomatis, aturan allow luas yang memberikan eksekusi kode arbitrer dijatuhkan:509 Saat memasuki mode otomatis, aturan allow luas yang memberikan eksekusi kode arbitrer dijatuhkan:

499 510 

500 * Blanket `Bash(*)` atau `PowerShell(*)`511 * Blanket `Bash(*)` atau `PowerShell(*)`

501 * Interpreter dengan wildcard seperti `Bash(python*)`512 * Interpreter yang diberi wildcard seperti `Bash(python*)`

502 * Perintah jalankan pengelola paket513 * Perintah jalankan pengelola paket

503 * Aturan `Agent` allow514 * Aturan allow `Agent`

504 * Aturan allow [`Monitor`](/docs/id/tools-reference#monitor-tool), karena Claude Code menjalankan perintah Monitor melalui shell515 * Aturan allow [`Monitor`](/docs/id/tools-reference#monitor-tool), karena Claude Code menjalankan perintah Monitor melalui shell

505 516 

506 Aturan sempit seperti `Bash(npm test)` tetap berlaku. Claude Code mengembalikan aturan yang dijatuhkan ketika Anda meninggalkan mode otomatis. Sebelum v2.1.236, Claude Code membiarkan aturan allow `Monitor` berlaku dalam mode otomatis, jadi aturan yang cocok dengan seluruh alat menyetujui perintah Monitor tanpa tinjauan pengklasifikasi.517 Aturan sempit seperti `Bash(npm test)` tetap berlaku. Claude Code mengembalikan aturan yang dijatuhkan ketika Anda meninggalkan mode otomatis. Sebelum v2.1.236, Claude Code membiarkan aturan allow `Monitor` berlaku dalam mode otomatis, jadi aturan yang cocok dengan seluruh alat menyetujui perintah Monitor tanpa tinjauan pengklasifikasi.

507 518 

508 Claude Code juga menjalankan `git status` itu sendiri sebelum perintah yang akan membuang pekerjaan yang tidak dilakukan komit, seperti `git reset --hard` atau `rm -rf`, dan menunjukkan pengklasifikasi apakah pekerjaan yang dipentaskan, dimodifikasi, atau tidak dilacak ada. Claude Code melaporkan file yang tidak dilacak dalam pemeriksaan itu bahkan ketika konfigurasi git repositori menetapkan `status.showUntrackedFiles=no`.519 Claude Code juga menjalankan `git status` itu sendiri sebelum perintah yang akan membuang pekerjaan yang tidak dilakukan komit, seperti `git reset --hard` atau `rm -rf`, dan menunjukkan pengklasifikasi apakah pekerjaan yang dipentaskan, dimodifikasi, atau tidak dilacak ada. Claude Code melaporkan file yang tidak dilacak dalam pemeriksaan itu bahkan ketika konfigurasi git repositori menetapkan `status.showUntrackedFiles=no`.

509 520 

510 Dalam permintaan pengklasifikasi yang dikirim oleh Claude Code itu sendiri, pengklasifikasi melihat pesan pengguna, panggilan alat selain pencarian hanya-baca seperti pembacaan file dan pencarian, dan konten CLAUDE.md Anda. Hasil alat dilepas dari permintaan tersebut, jadi konten bermusuhan dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.521 Dalam permintaan pengklasifikasi yang dikirim Claude Code itu sendiri, pengklasifikasi melihat pesan pengguna, panggilan alat selain pencarian hanya-baca seperti pembacaan file dan pencarian, dan konten CLAUDE.md Anda. Hasil alat dilepas dari permintaan tersebut, jadi konten bermusuhan dalam file atau halaman web tidak dapat memanipulasi pengklasifikasi secara langsung.

511 522 

512 Anda dapat memberi anotasi hasil panggilan dengan [field `classifierContext` hook PostToolUse](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier), yang dibaca pengklasifikasi sebagai konteks yang disediakan aplikasi. Field memerlukan Claude Code v2.1.236 atau lebih baru.523 Anda dapat memberi anotasi hasil panggilan dengan [field `classifierContext` hook PostToolUse](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier), yang dibaca pengklasifikasi sebagai konteks yang disediakan aplikasi. Field memerlukan Claude Code v2.1.236 atau lebih baru.

513 524 

514 Probe sisi server terpisah memindai hasil alat masuk dan menandai konten mencurigakan sebelum Claude membacanya. Untuk lebih lanjut tentang bagaimana lapisan ini bekerja bersama, lihat [pengumuman mode otomatis](https://claude.com/blog/auto-mode) dan [penggalian teknik](https://www.anthropic.com/engineering/claude-code-auto-mode).525 Probe sisi server terpisah memindai hasil alat masuk dan menandai konten mencurigakan sebelum Claude membacanya. Untuk lebih lanjut tentang cara lapisan ini bekerja bersama, lihat [pengumuman mode otomatis](https://claude.com/blog/auto-mode) dan [penggalian teknik](https://www.anthropic.com/engineering/claude-code-auto-mode).

515 </Accordion>526 </Accordion>

516 527 

517 <Accordion title="Bagaimana mode otomatis menangani subagen">528 <Accordion title="Bagaimana mode otomatis menangani subagen">

518 Pengklasifikasi memeriksa pekerjaan [subagen](/docs/id/sub-agents) di tiga titik:529 Pengklasifikasi memeriksa pekerjaan [subagen](/docs/id/sub-agents) di tiga titik:

519 530 

520 1. Sebelum subagen dimulai, deskripsi tugas yang didelegasikan dievaluasi, jadi tugas yang terlihat berbahaya diblokir pada waktu spawn.531 1. Sebelum subagen dimulai, deskripsi tugas yang didelegasikan dievaluasi, jadi tugas yang terlihat berbahaya diblokir pada waktu spawn.

521 2. Sementara subagen berjalan, setiap tindakannya melalui pengklasifikasi dengan aturan yang sama seperti sesi induk, dan `permissionMode` apa pun dalam frontmatter subagen diabaikan.532 2. Saat subagen berjalan, setiap tindakannya melalui pengklasifikasi dengan aturan yang sama seperti sesi induk, dan `permissionMode` apa pun dalam frontmatter subagen diabaikan.

522 3. Ketika subagen selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan. Ketika pengklasifikasi menandai pekerjaan atau laporan subagen, atau pemeriksaan keselamatan API terpisah menolak tinjauan, laporan masih disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagen sebelum bertindak atas dasar itu.533 3. Ketika subagen selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan. Ketika pengklasifikasi menandai pekerjaan atau laporan subagen, atau pemeriksaan API keamanan terpisah menolak tinjauan, laporan masih disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagen sebelum bertindak atas dasar itu.

523 </Accordion>534 </Accordion>

524 535 

525 <Accordion title="Biaya dan latensi">536 <Accordion title="Biaya dan latensi">

526 Pengklasifikasi berjalan pada Claude Sonnet 5 secara default daripada pada pilihan `/model` Anda. Model pengklasifikasi yang dikonfigurasi Anthropic sisi server mengambil alih default itu. Ketika model sesi Anda adalah Claude Sonnet 4.6, atau ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) mengecualikan Sonnet 5, pengklasifikasi berjalan pada model sesi sebagai gantinya, atau pada model Opus ketika sesi berjalan pada [model Fable](/docs/id/model-config#work-with-fable); di penyedia selain API Anthropic, fallback Opus itu adalah model Opus default penyedia.537 Pengklasifikasi berjalan pada Claude Sonnet 5 secara default daripada pada pilihan `/model` Anda. Model pengklasifikasi yang dikonfigurasi Anthropic sisi server mengambil preseden atas default itu. Ketika model sesi Anda adalah Claude Sonnet 4.6, atau ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) mengecualikan Sonnet 5, pengklasifikasi berjalan pada model sesi sebagai gantinya, atau pada model Opus ketika sesi berjalan pada [model Fable](/docs/id/model-config#work-with-fable); di penyedia selain Anthropic API, fallback Opus itu adalah model Opus default penyedia.

527 538 

528 Permintaan mode otomatis pertama sesi memvalidasi default Sonnet 5: jika permintaan berhasil, Sonnet 5 tetap model pengklasifikasi sesi, dan jika gagal karena model tidak tersedia, sesi menggunakan fallback sebagai gantinya. Setelah validasi itu diselesaikan, model pengklasifikasi tidak berubah untuk sesi.539 Permintaan mode otomatis pertama sesi memvalidasi default Sonnet 5: jika permintaan berhasil, Sonnet 5 tetap model pengklasifikasi sesi, dan jika gagal karena model tidak tersedia, sesi menggunakan fallback sebagai gantinya. Setelah validasi itu diselesaikan, model pengklasifikasi tidak berubah untuk sesi.

529 540 

530 Pada paket Enterprise dan pada akun yang menggunakan Claude API, [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, panggilan pengklasifikasi dihitung terhadap penggunaan token Anda. Setiap pemeriksaan mengirim sebagian dari transkrip ditambah tindakan yang tertunda, menambahkan putaran perjalanan sebelum eksekusi. Pembacaan dan pengeditan direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, jadi overhead datang terutama dari perintah shell dan operasi jaringan. Di mana server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada panggilan pengklasifikasi terpisah untuk dihitung; lihat [Tinjauan pengklasifikasi sisi server](#server-side-classifier-review).541 Pada paket Enterprise dan pada akun yang menggunakan Claude API, [Claude Platform di AWS](/docs/id/claude-platform-on-aws), Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, panggilan pengklasifikasi dihitung terhadap penggunaan token Anda. Setiap pemeriksaan mengirim sebagian dari transkrip ditambah tindakan yang tertunda, menambahkan putaran perjalanan pulang sebelum eksekusi. Pembacaan dan pengeditan direktori kerja di luar jalur yang dilindungi melewati pengklasifikasi, jadi overhead datang terutama dari perintah shell dan operasi jaringan. Di mana server meninjau tindakan sebagai bagian dari permintaan model sesi, tidak ada permintaan pengklasifikasi terpisah untuk dihitung; lihat [Tinjauan pengklasifikasi sisi server](#server-side-classifier-review).

531 542 

532 Akses jaringan bersandbox tidak menambahkan permintaan pengklasifikasi per-koneksi. Pengklasifikasi menilai [host yang dinamai perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) bersama dengan perintah dalam satu tinjauan, dan Claude Code memeriksa setiap koneksi terhadap daftar yang disetujui tanpa memanggil pengklasifikasi lagi.543 Akses jaringan sandboxed tidak menambahkan permintaan pengklasifikasi per-koneksi. Pengklasifikasi menilai [host yang dinamai perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) bersama dengan perintah dalam satu tinjauan, dan Claude Code memeriksa setiap koneksi terhadap daftar yang disetujui tanpa memanggil pengklasifikasi lagi.

533 </Accordion>544 </Accordion>

534</AccordionGroup>545</AccordionGroup>

535 546 

permissions.md +5 −5

Details

278 Perintah baca-saja278 Perintah baca-saja

279</h4>279</h4>

280 280 

281Claude Code mengenali serangkaian perintah Bash bawaan sebagai baca-saja dan menjalankannya tanpa prompt izin dalam setiap mode, kecuali untuk jalur yang [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) lindungi. Himpunan ini mencakup `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd`, dan bentuk baca-saja dari `git`. Himpunan ini tidak dapat dikonfigurasi; untuk memerlukan prompt untuk salah satu perintah ini, tambahkan aturan `ask` atau `deny` untuk itu.281Claude Code mengenali serangkaian perintah Bash bawaan sebagai baca-saja dan menjalankannya tanpa prompt izin dalam setiap mode, kecuali untuk jalur yang [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) lindungi. Himpunan ini mencakup `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd`, dan bentuk baca-saja dari `git`. Himpunan ini tidak dapat dikonfigurasi; untuk memerlukan prompt untuk salah satu perintah ini, tambahkan aturan `ask` atau `deny` untuk itu. Dalam mode otomatis, perintah-perintah ini juga dapat menunggu tinjauan pengklasifikasi; lihat [bagaimana pengklasifikasi mengevaluasi tindakan](/docs/id/permission-modes#how-the-classifier-evaluates-actions).

282 282 

283Pengalihan seperti `ls > out.txt` menambahkan pemeriksaan pada target. Lihat [Pengalihan](#redirections).283Pengalihan seperti `ls > out.txt` menambahkan pemeriksaan pada target. Lihat [Pengalihan](#redirections).

284 284 


605 605 

606* Pengaturan proyeknya, termasuk aturan izin mereka dan [hooks](/docs/id/hooks)606* Pengaturan proyeknya, termasuk aturan izin mereka dan [hooks](/docs/id/hooks)

607* Server [`.mcp.json`](/docs/id/mcp#project-scope) miliknya, tunduk pada [persetujuan server](/docs/id/mcp#project-server-approvals-and-workspace-trust) yang sama seperti saat startup, dan server MCP [local-scope](/docs/id/mcp#local-scope) yang Anda daftarkan di dalamnya607* Server [`.mcp.json`](/docs/id/mcp#project-scope) miliknya, tunduk pada [persetujuan server](/docs/id/mcp#project-server-approvals-and-workspace-trust) yang sama seperti saat startup, dan server MCP [local-scope](/docs/id/mcp#local-scope) yang Anda daftarkan di dalamnya

608* [plugins](/docs/id/plugins) yang diaktifkan pengaturannya, [skills](/docs/id/skills#discovery-from-parent-and-nested-directories) miliknya, dan [subagents](/docs/id/sub-agents) miliknya608* [plugins](/docs/id/plugins/overview) yang diaktifkan pengaturannya, [skills](/docs/id/skills#discovery-from-parent-and-nested-directories) miliknya, dan [subagents](/docs/id/sub-agents) miliknya

609* Nilai [`env`](/docs/id/settings-reference#env) miliknya, diterapkan di atas variabel lingkungan dari pengaturan direktori sebelumnya, yang tetap berlaku609* Nilai [`env`](/docs/id/settings-reference#env) miliknya, diterapkan di atas variabel lingkungan dari pengaturan direktori sebelumnya, yang tetap berlaku

610 610 

611Claude Code juga memutuskan sambungan proyek direktori sebelumnya dan server MCP [local-scope](/docs/id/mcp#local-scope), dan server dari [plugins](/docs/id/mcp#plugin-provided-mcp-servers) yang tidak lagi diaktifkan setelah perpindahan. Ini mengambil [direktori tambahan](#working-directories) dari pengaturan direktori baru alih-alih yang sebelumnya, dan menyimpan direktori yang Anda tambahkan dengan `--add-dir` atau `/add-dir`. Hooks yang diaktifkan perpindahan masih menerima [`${CLAUDE_PROJECT_DIR}`](/docs/id/hooks#reference-scripts-by-path) diatur ke akar proyek tempat sesi dimulai.611Claude Code juga memutuskan sambungan proyek direktori sebelumnya dan server MCP [local-scope](/docs/id/mcp#local-scope), dan server dari [plugins](/docs/id/mcp#plugin-provided-mcp-servers) yang tidak lagi diaktifkan setelah perpindahan. Ini mengambil [direktori tambahan](#working-directories) dari pengaturan direktori baru alih-alih yang sebelumnya, dan menyimpan direktori yang Anda tambahkan dengan `--add-dir` atau `/add-dir`. Hooks yang diaktifkan perpindahan masih menerima [`${CLAUDE_PROJECT_DIR}`](/docs/id/hooks#reference-scripts-by-path) diatur ke akar proyek tempat sesi dimulai.


641Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:641Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:

642 642 

643* **Konfigurasi tingkat pengguna**: tempatkan file di `~/.claude/agents/`, `~/.claude/output-styles/`, atau `~/.claude/settings.json` untuk membuatnya tersedia di setiap proyek643* **Konfigurasi tingkat pengguna**: tempatkan file di `~/.claude/agents/`, `~/.claude/output-styles/`, atau `~/.claude/settings.json` untuk membuatnya tersedia di setiap proyek

644* **Plugins**: paket dan distribusikan konfigurasi sebagai [plugin](/docs/id/plugins) yang dapat diinstal tim644* **Plugins**: paket dan distribusikan konfigurasi sebagai [plugin](/docs/id/plugins/overview) yang dapat diinstal tim

645* **Luncurkan dari direktori konfigurasi**: jalankan Claude Code dari direktori yang berisi konfigurasi `.claude/` yang ingin Anda gunakan645* **Luncurkan dari direktori konfigurasi**: jalankan Claude Code dari direktori yang berisi konfigurasi `.claude/` yang ingin Anda gunakan

646 646 

647<h2 id="how-permissions-interact-with-sandboxing">647<h2 id="how-permissions-interact-with-sandboxing">


729Setiap baris adalah satu jenis konten yang dapat disediakan repositori. Kolom adalah dua situasi di mana Anda belum mempercayai folder itu sendiri: Anda hanya mempercayai folder induk, atau Anda menjalankan `claude -p` atau SDK di sana, yang tidak pernah menampilkan dialog kepercayaan. Kolom folder induk tidak berlaku di dalam [repositori bersarang](#project-allow-rules-and-workspace-trust): dalam sesi interaktif Claude Code menampilkan dialog kepercayaan untuk itu, dan jalankan `claude -p` atau SDK di sana mengikuti kolom `claude -p`.729Setiap baris adalah satu jenis konten yang dapat disediakan repositori. Kolom adalah dua situasi di mana Anda belum mempercayai folder itu sendiri: Anda hanya mempercayai folder induk, atau Anda menjalankan `claude -p` atau SDK di sana, yang tidak pernah menampilkan dialog kepercayaan. Kolom folder induk tidak berlaku di dalam [repositori bersarang](#project-allow-rules-and-workspace-trust): dalam sesi interaktif Claude Code menampilkan dialog kepercayaan untuk itu, dan jalankan `claude -p` atau SDK di sana mengikuti kolom `claude -p`.

730 730 

731| Apa yang disediakan repositori | Anda hanya mempercayai folder induk | `claude -p` atau SDK, folder tidak pernah dipercaya |731| Apa yang disediakan repositori | Anda hanya mempercayai folder induk | `claude -p` atau SDK, folder tidak pernah dipercaya |

732| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |732| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

733| [Hooks](/docs/id/hooks) dalam file pengaturan, blok [`env`](/docs/id/settings-reference#env) dan perintah pembantu seperti [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), dan [hooks](/docs/id/hooks#hooks-in-skills-and-agents) skill proyek dan [`allowed-tools`](/docs/id/skills#pre-approve-tools-for-a-skill) | Digunakan | Digunakan. Kepercayaan ruang kerja tidak pernah membatasi `allowed-tools` skill dalam sesi apa pun |733| [Hooks](/docs/id/hooks) dalam file pengaturan, blok [`env`](/docs/id/settings-reference#env) dan perintah pembantu seperti [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), dan [hooks](/docs/id/hooks#hooks-in-skills-and-agents) skill proyek dan [`allowed-tools`](/docs/id/skills#pre-approve-tools-for-a-skill) | Digunakan | Digunakan. Kepercayaan ruang kerja tidak pernah membatasi `allowed-tools` skill dalam sesi apa pun |

734| Aturan `permissions.allow` dan `additionalDirectories` dalam `.claude/settings.json` | Tidak digunakan sampai Anda menerima dialog kepercayaan, yang muncul lagi mencantumkannya | Tidak digunakan. Claude Code mencetak peringatan [`this workspace has not been trusted`](/docs/id/errors#workspace-has-not-been-trusted) ke stderr |734| Aturan `permissions.allow` dan `additionalDirectories` dalam `.claude/settings.json` | Tidak digunakan sampai Anda menerima dialog kepercayaan, yang muncul lagi mencantumkannya | Tidak digunakan. Claude Code mencetak peringatan [`this workspace has not been trusted`](/docs/id/errors#workspace-has-not-been-trusted) ke stderr |

735| Hooks frontmatter dalam [subagent](/docs/id/sub-agents#hooks-in-subagent-frontmatter) proyek, plugin [`@skills-dir`](/docs/id/plugins-reference#skills-directory-plugins) proyek, dan entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dari repositori atau direktori `--add-dir` | Tidak digunakan, dan tidak ada dialog yang ditawarkan | Tidak digunakan |735| Hooks frontmatter dalam [subagent](/docs/id/sub-agents#hooks-in-subagent-frontmatter) proyek, plugin [`@skills-dir`](/docs/id/plugins/loading#plugins-shared-through-a-repository) proyek, dan entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dari repositori atau direktori `--add-dir` | Tidak digunakan, dan tidak ada dialog yang ditawarkan | Tidak digunakan |

736| [`mcpServers`](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent) inline dalam frontmatter subagent dari repositori atau direktori `--add-dir`. Sebelum v2.1.238, Claude Code memuat server ini dalam kedua situasi | Tidak digunakan, dan tidak ada dialog yang ditawarkan | Tidak digunakan |736| [`mcpServers`](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent) inline dalam frontmatter subagent dari repositori atau direktori `--add-dir`. Sebelum v2.1.238, Claude Code memuat server ini dalam kedua situasi | Tidak digunakan, dan tidak ada dialog yang ditawarkan | Tidak digunakan |

737| Server dalam `.mcp.json`, termasuk yang [disetujui repositori dalam pengaturannya sendiri](/docs/id/mcp#project-server-approvals-and-workspace-trust) | Claude Code menanyakan Anda sebelum menghubungkannya. Persetujuan repositori itu sendiri tidak dihitung | Terhubung tanpa bertanya, disetujui atau tidak. SDK memuat mereka hanya ketika `settingSources` mencakup pengaturan proyek. `claude mcp list` di folder yang sama masih melaporkan server seperti itu sebagai tertunda |737| Server dalam `.mcp.json`, termasuk yang [disetujui repositori dalam pengaturannya sendiri](/docs/id/mcp#project-server-approvals-and-workspace-trust) | Claude Code menanyakan Anda sebelum menghubungkannya. Persetujuan repositori itu sendiri tidak dihitung | Terhubung tanpa bertanya, disetujui atau tidak. SDK memuat mereka hanya ketika `settingSources` mencakup pengaturan proyek. `claude mcp list` di folder yang sama masih melaporkan server seperti itu sebagai tertunda |

738| [`headersHelper`](/docs/id/mcp#trust-a-folder-before-its-headershelper-runs) pada server dalam `.mcp.json`. Sebelum v2.1.238, Claude Code menjalankan pembantu dalam kedua situasi | Tidak dijalankan sampai Anda menerima dialog kepercayaan, yang muncul lagi menamai tempat pembantu dideklarasikan. Claude Code menghubungkan server dengan `headers` statis saja sampai saat itu | Tidak dijalankan. Claude Code menghubungkan server dengan `headers` statis saja dan mencetak baris [`headersHelper not run`](/docs/id/errors#headershelper-not-run) per server ke stderr |738| [`headersHelper`](/docs/id/mcp#trust-a-folder-before-its-headershelper-runs) pada server dalam `.mcp.json`. Sebelum v2.1.238, Claude Code menjalankan pembantu dalam kedua situasi | Tidak dijalankan sampai Anda menerima dialog kepercayaan, yang muncul lagi menamai tempat pembantu dideklarasikan. Claude Code menghubungkan server dengan `headers` statis saja sampai saat itu | Tidak dijalankan. Claude Code menghubungkan server dengan `headers` statis saja dan mencetak baris [`headersHelper not run`](/docs/id/errors#headershelper-not-run) per server ke stderr |

platforms.md +3 −3

Details

34Integrasi memungkinkan Claude bekerja dengan layanan di luar basis kode Anda.34Integrasi memungkinkan Claude bekerja dengan layanan di luar basis kode Anda.

35 35 

36| Integrasi | Apa yang dilakukannya | Gunakan untuk |36| Integrasi | Apa yang dilakukannya | Gunakan untuk |

37| :----------------------------------- | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ |37| :----------------------------------------------- | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ |

38| [Chrome](/docs/id/chrome) | Mengontrol browser Anda dengan sesi login Anda | Menguji aplikasi web, mengisi formulir, mengotomatisasi situs tanpa API |38| [Chrome](/docs/id/chrome) | Mengontrol browser Anda dengan sesi login Anda | Menguji aplikasi web, mengisi formulir, mengotomatisasi situs tanpa API |

39| [GitHub Actions](/docs/id/github-actions) | Menjalankan Claude dalam pipeline CI Anda | Tinjauan PR otomatis, triase masalah, pemeliharaan terjadwal |39| [GitHub Actions](/docs/id/github-actions) | Menjalankan Claude dalam pipeline CI Anda | Tinjauan PR otomatis, triase masalah, pemeliharaan terjadwal |

40| [GitLab CI/CD](/docs/id/gitlab-ci-cd) | Sama seperti GitHub Actions untuk GitLab | Otomasi berbasis CI di GitLab |40| [GitLab CI/CD](/docs/id/gitlab-ci-cd) | Sama seperti GitHub Actions untuk GitLab | Otomasi berbasis CI di GitLab |

41| [Code Review](/docs/id/code-review) | Meninjau setiap PR secara otomatis | Menangkap bug sebelum tinjauan manusia |41| [Code Review](/docs/id/code-review) | Meninjau setiap PR secara otomatis | Menangkap bug sebelum tinjauan manusia |

42| [Slack](/docs/id/slack) | Merespons penyebutan `@Claude` di saluran Anda | Mengubah laporan bug menjadi permintaan tarik dari obrolan tim |42| [Slack](/docs/id/slack) | Merespons penyebutan `@Claude` di saluran Anda | Mengubah laporan bug menjadi permintaan tarik dari obrolan tim |

43| [Claude Tag](/docs/id/claude-tag) | Menjalankan `@Claude` sebagai identitas bersama organisasi Anda dengan akses yang dikonfigurasi admin | Akses tim bersama pada paket Team dan Enterprise, bukan sesi Slack per pengguna |43| [Claude Tag](https://claude.com/docs/claude-tag) | Menjalankan `@Claude` sebagai identitas bersama organisasi Anda dengan akses yang dikonfigurasi admin | Akses tim bersama pada paket Team dan Enterprise, bukan sesi Slack per pengguna |

44 44 

45Untuk integrasi yang tidak tercantum di sini, [server MCP](/docs/id/mcp) dan [konektor](/docs/id/desktop#connect-external-tools) memungkinkan Anda menghubungkan hampir apa pun: Linear, Notion, Google Drive, atau API internal Anda sendiri.45Untuk integrasi yang tidak tercantum di sini, [server MCP](/docs/id/mcp) dan [konektor](/docs/id/desktop#connect-external-tools) memungkinkan Anda menghubungkan hampir apa pun: Linear, Notion, Google Drive, atau API internal Anda sendiri.

46 46 


87* [GitLab CI/CD](/docs/id/gitlab-ci-cd): yang sama untuk GitLab87* [GitLab CI/CD](/docs/id/gitlab-ci-cd): yang sama untuk GitLab

88* [Code Review](/docs/id/code-review): tinjauan otomatis pada setiap permintaan tarik88* [Code Review](/docs/id/code-review): tinjauan otomatis pada setiap permintaan tarik

89* [Slack](/docs/id/slack): kirim tugas dari obrolan tim, dapatkan PR kembali89* [Slack](/docs/id/slack): kirim tugas dari obrolan tim, dapatkan PR kembali

90* [Claude Tag](/docs/id/claude-tag): jalankan `@Claude` sebagai identitas bersama organisasi Anda pada paket Team dan Enterprise90* [Claude Tag](https://claude.com/docs/claude-tag): jalankan `@Claude` sebagai identitas bersama organisasi Anda pada paket Team dan Enterprise

91 91 

92<h3 id="remote-access">92<h3 id="remote-access">

93 Akses jarak jauh93 Akses jarak jauh

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

plugin-evals.md +89 −36

Details

6 6 

7> Tulis kasus eval untuk plugin Claude Code Anda, jalankan dengan claude plugin eval, nilai hasilnya, bandingkan dengan baseline tanpa plugin, dan gating CI pada skor.7> Tulis kasus eval untuk plugin Claude Code Anda, jalankan dengan claude plugin eval, nilai hasilnya, bandingkan dengan baseline tanpa plugin, dan gating CI pada skor.

8 8 

9`claude plugin eval` menjalankan [plugin](/docs/id/plugins) Anda terhadap serangkaian kasus uji dan menilai hasilnya. Setiap kasus adalah prompt realistis ditambah satu atau lebih grader. Grader adalah pemeriksaan lulus/gagal pada apa yang dihasilkan Claude, seperti regex atas balasan, apakah alat tertentu dipanggil, atau rubrik yang dinilai model kedua terhadap balasan.9Perintah shell `claude plugin eval` menjalankan [plugin](/docs/id/plugins/overview) Anda terhadap serangkaian kasus uji dan menilai hasilnya. Setiap kasus adalah prompt realistis ditambah satu atau lebih grader. Grader adalah pemeriksaan lulus/gagal pada apa yang dihasilkan Claude, seperti regex atas balasan, apakah alat tertentu dipanggil, atau rubrik yang dinilai model kedua terhadap balasan.

10 10 

11Anda tidak harus menulis suite dengan tangan; `claude plugin eval init` menanyakan Anda tentang plugin Anda, mengusulkan kasus dan grader, mencobanya, dan menulis file. Anda juga dapat meminta Claude melakukan hal yang sama dari sesi yang sudah Anda buka.11Anda tidak harus menulis suite dengan tangan; `claude plugin eval init` menanyakan Anda tentang plugin Anda, mengusulkan kasus dan grader, mencobanya, dan menulis file. Anda juga dapat meminta Claude melakukan hal yang sama dari sesi yang sudah Anda buka.

12 12 

13Gunakan evals untuk mengukur seberapa andal plugin Anda mengarahkan Claude ke hasil yang benar, untuk menangkap regresi saat Anda mengubah plugin atau model baru dirilis, dan untuk melihat apa yang dikontribusikan plugin dibandingkan tanpa plugin sama sekali.13Gunakan evals untuk:

14 14 

15Halaman ini untuk penulis plugin dan skill yang memiliki plugin yang berfungsi dan ingin menguji perilakunya, dan untuk tim yang gating perubahan plugin di CI. Format kasusnya terpisah dari file `evals/evals.json` yang digunakan [plugin skill-creator](/docs/id/skills#run-evals-with-skill-creator). Untuk membuat plugin, lihat [Buat plugin](/docs/id/plugins); untuk memeriksa file plugin untuk kesalahan sintaks dan skema daripada perilakunya, gunakan [`claude plugin validate`](/docs/id/plugins-reference#plugin-validate).15* Mengukur seberapa andal plugin Anda mengarahkan Claude untuk menghasilkan hasil yang benar

16* Menangkap regresi saat Anda mengubah plugin atau model baru dirilis

17* Melihat apa yang dikontribusikan plugin dibandingkan tanpa plugin

18 

19Halaman ini untuk penulis plugin dan skill yang memiliki plugin yang berfungsi dan ingin menguji perilakunya, dan untuk tim yang gating perubahan plugin di CI. Format kasusnya terpisah dari file `evals/evals.json` yang digunakan [plugin skill-creator](/docs/id/skills#run-evals-with-skill-creator). Untuk membuat plugin, lihat [Buat plugin](/docs/id/plugins/create); untuk memeriksa file plugin untuk kesalahan sintaks dan skema daripada perilakunya, gunakan [`claude plugin validate`](/docs/id/plugins/cli-reference#plugin-validate).

16 20 

17<Note>21<Note>

18 Setiap eval run dan setiap judge grader adalah panggilan model nyata pada akun Anda, dihitung terhadap penggunaan rencana Anda atau tagihan API Anda, jadi periksa [persyaratan](#requirements) terlebih dahulu. Kemudian [buat suite eval pertama Anda](#create-your-first-eval-suite), atau buka [Jalankan evals di CI](#run-evals-in-ci) jika Anda sudah memilikinya.22 Setiap eval run dan setiap judge grader adalah panggilan model nyata pada akun Anda, dihitung terhadap penggunaan rencana Anda atau tagihan API Anda, jadi periksa [persyaratan](#requirements) terlebih dahulu. Kemudian [buat suite eval pertama Anda](#create-your-first-eval-suite), atau buka [Jalankan evals di CI](#run-evals-in-ci) jika Anda sudah memilikinya.


25Untuk menjalankan plugin evals Anda memerlukan:29Untuk menjalankan plugin evals Anda memerlukan:

26 30 

27* Claude Code v2.1.269 atau lebih baru. Jalankan `claude --version` untuk memeriksa dan `claude update` untuk upgrade.31* Claude Code v2.1.269 atau lebih baru. Jalankan `claude --version` untuk memeriksa dan `claude update` untuk upgrade.

28* Direktori plugin dengan manifest `plugin.json` atau `.claude-plugin/plugin.json`, atau [plugin direktori skills](/docs/id/plugins-reference#skills-directory-plugins).32* Direktori plugin dengan manifest `plugin.json` atau `.claude-plugin/plugin.json`, atau [plugin direktori skills](/docs/id/plugins/loading#plugins-shared-through-a-repository).

29* Autentikasi dan penyedia model yang sama dengan sesi Claude Code normal Anda. Eval runs, grader yang dinilai judge, dan `claude plugin eval init` memanggil model dengan kredensial Anda, jadi mereka dihitung terhadap batas penggunaan rencana Anda atau tagihan API Anda. Ketika perintah melaporkan biaya, angka tersebut adalah [perkiraan harga daftar](/docs/id/costs) dari panggilan tersebut.33* Autentikasi dan penyedia model yang sama dengan sesi Claude Code normal Anda. Eval runs, grader yang dinilai judge, dan `claude plugin eval init` memanggil model dengan kredensial Anda, jadi mereka dihitung terhadap batas penggunaan rencana Anda atau tagihan API Anda. Ketika perintah melaporkan biaya, angka tersebut adalah [perkiraan harga daftar](/docs/id/costs) dari panggilan tersebut.

30 34 

31<h2 id="how-an-eval-run-works">35<h2 id="how-an-eval-run-works">


44 Cara kasus dinilai48 Cara kasus dinilai

45</h3>49</h3>

46 50 

47Satu run dari agen non-deterministik memberi tahu Anda sedikit, jadi setiap kasus berjalan tiga kali secara default. Skor run adalah fraksi gradernya yang lulus, tertimbang jika Anda menetapkan bobot, dan skor kasus adalah rata-rata di seluruh runnya. Kasus lulus ketika skornya memenuhi [`--threshold`](#command-options), `1.0` secara default. Dalam panggilan model, suite membuat kira-kira kasus × runs agent runs dengan plugin dan sebanyak lagi untuk [baseline tanpa plugin](#the-no-plugin-baseline), ditambah tiga panggilan judge pendek per grader `llm` atau `baseline` per run.51Satu run dari agen non-deterministik memberi tahu Anda sedikit, jadi setiap kasus berjalan tiga kali secara default. Skor run adalah fraksi gradernya yang lulus, tertimbang jika Anda menetapkan bobot, dan skor kasus adalah rata-rata di seluruh runnya. Kasus lulus ketika skornya memenuhi [`--threshold`](#command-options), `1.0` secara default.

52 

53Dalam panggilan model, suite membuat kira-kira kasus × runs agent runs dengan plugin dan sebanyak lagi untuk [baseline tanpa plugin](#the-no-plugin-baseline), ditambah tiga panggilan judge pendek per grader `llm` atau `baseline` per run.

48 54 

49<h3 id="the-no-plugin-baseline">55<h3 id="the-no-plugin-baseline">

50 Baseline tanpa plugin56 Baseline tanpa plugin

51</h3>57</h3>

52 58 

53Skor tinggi sendiri tidak memberi tahu Anda plugin membantu, karena Claude mungkin melakukan hal yang sama tanpanya. Untuk memisahkan keduanya, setiap run kasus diulang tanpa plugin yang dimuat secara default, dan Anda mendapatkan dua skor, `WITH` dan `W/OUT`. Perbedaan mereka, `Δ`, adalah apa yang dikontribusikan plugin. Jika kasus mencetak 1.0 baik dengan maupun tanpa plugin, plugin bukan yang membuatnya lulus. Dua set run disebut with-arm dan without-arm; [Bandingkan dengan baseline tanpa plugin](#compare-against-a-no-plugin-baseline) mencakup cara grader dinilai di seluruh mereka dan cara mematikan baseline.59Skor tinggi sendiri tidak memberi tahu Anda plugin membantu, karena Claude mungkin melakukan hal yang sama tanpanya. Untuk memisahkan keduanya, setiap run kasus diulang tanpa plugin yang dimuat secara default, dan Anda mendapatkan dua skor, `WITH` dan `W/OUT`. Perbedaan mereka, `Δ`, adalah apa yang dikontribusikan plugin. Jika kasus mencetak 1.0 baik dengan maupun tanpa plugin, plugin bukan yang membuatnya lulus.

60 

61Dua set run disebut with-arm dan without-arm; [Bandingkan dengan baseline tanpa plugin](#compare-against-a-no-plugin-baseline) mencakup cara grader dinilai di seluruh mereka dan cara mematikan baseline.

54 62 

55<h2 id="create-your-first-eval-suite">63<h2 id="create-your-first-eval-suite">

56 Buat suite eval pertama Anda64 Buat suite eval pertama Anda


70 claude plugin eval init78 claude plugin eval init

71 ```79 ```

72 80 

73 Jika Claude Code belum mempercayai direktori ini, pertama-tama menanyakan `Trust this plugin directory?`; jawab `y`. Sesi Claude Code interaktif kemudian terbuka. Claude membaca plugin Anda dan menanyakan apa hasil yang baik, mengusulkan prompt yang seharusnya dan tidak seharusnya memicu plugin, merancang grader untuk masing-masing, pilot mereka sekali untuk memeriksa perilakunya, dan menulis satu direktori kasus per prompt di bawah `evals/`, masing-masing dinamai setelah promptnya. Ketika Claude memberi tahu Anda suite siap, keluar dari sesi itu dengan `/exit` atau Ctrl+D untuk kembali ke shell Anda.81 Jika Claude Code belum mempercayai direktori ini, pertama-tama menanyakan `Trust this plugin directory?`; jawab `y`. Sesi Claude Code interaktif kemudian terbuka. Claude membaca plugin Anda dan menanyakan apa hasil yang baik, mengusulkan prompt yang seharusnya dan tidak seharusnya memicu plugin, merancang grader untuk masing-masing, menjalankan pilot mereka sekali untuk memeriksa perilakunya, dan menulis satu direktori kasus per prompt di bawah `evals/`, masing-masing dinamai setelah promptnya. Ketika Claude memberi tahu Anda suite siap, keluar dari sesi itu dengan `/exit` atau Ctrl+D untuk kembali ke shell Anda.

74 82 

75 Jika Anda sudah memiliki sesi Claude Code terbuka di root plugin, Anda dapat meminta Claude di sana untuk menjalankan `claude plugin eval init`. Claude menjalankan perintah dan kemudian menanyakan Anda pertanyaan yang sama dalam percakapan itu.83 Jika Anda sudah memiliki sesi Claude Code terbuka di root plugin, Anda dapat meminta Claude di sana untuk menjalankan `claude plugin eval init`. Claude menjalankan perintah dan kemudian menanyakan Anda pertanyaan yang sama dalam percakapan itu.

76 84 


171Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.179Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.

172```180```

173 181 

174Setiap run dimulai di direktori kerja kosong, jadi letakkan apa pun yang dibutuhkan tugas di prompt itu sendiri, atau [atur workspace](#add-setup-or-history-with-case-yaml) terlebih dahulu. [Daftar lengkap field frontmatter](#prompt-md-fields) mencakup model, timeout, tag, dan variabel lingkungan.182Setiap run dimulai di direktori kerja kosong, jadi letakkan apa pun yang dibutuhkan tugas di prompt itu sendiri, atau [atur workspace](#add-setup-or-history-with-case-yaml) terlebih dahulu.

183 

184[Daftar lengkap field frontmatter](#prompt-md-fields) mencakup model, timeout, tag, dan variabel lingkungan.

175 185 

176Setiap file di bawah `graders/` adalah satu pemeriksaan yang diterapkan setelah run. Buka `evals/first-case/graders/criteria.md` dan ganti placeholder dengan rubrik untuk model judge, ditulis sebagai kondisi PASS dan FAIL konkret:186Setiap file di bawah `graders/` adalah satu pemeriksaan yang diterapkan setelah run. Buka `evals/first-case/graders/criteria.md` dan ganti placeholder dengan rubrik untuk model judge, ditulis sebagai kondisi PASS dan FAIL konkret:

177 187 


184FAIL if <what a wrong or missing response looks like>.194FAIL if <what a wrong or missing response looks like>.

185```195```

186 196 

187Kemudian tambahkan grader kedua yang memeriksa apakah skill Anda yang menghasilkan jawaban. Buat `evals/first-case/graders/skill-fired.md`, ganti `your-skill-name` dengan `name` dari `SKILL.md` skill Anda:197Kemudian tambahkan grader kedua yang memeriksa apakah skill Anda yang menghasilkan jawaban. Buat `evals/first-case/graders/skill-fired.md`, ganti `your-skill-name` dengan nama direktori skill di bawah `skills/`, yang merupakan nama yang Claude panggil:

188 198 

189```markdown theme={null}199```markdown theme={null}

190---200---


194---204---

195```205```

196 206 

197Ini lulus ketika Claude menginvokasi skill itu setidaknya sekali selama run, termasuk dengan bentuk `plugin-name:skill-name` yang diberi namespace. [Tipe grader](#grader-types) mencantumkan pemeriksaan lain yang tersedia, seperti mencocokkan regex atau mengkonfirmasi file dibuat.207Ini lulus ketika Claude menginvokasi skill itu setidaknya sekali selama run, termasuk dengan bentuk `plugin-name:skill-name` yang diberi namespace.

208 

209[Tipe grader](#grader-types) mencantumkan pemeriksaan lain yang tersedia, seperti mencocokkan regex atau mengkonfirmasi file dibuat.

198 210 

199Dengan kedua file disimpan, jalankan kasus dengan cara [quickstart](#create-your-first-eval-suite) lakukan, dengan `claude plugin eval .` dari root plugin.211Dengan kedua file disimpan, jalankan kasus dengan cara [quickstart](#create-your-first-eval-suite) lakukan, dengan `claude plugin eval .` dari root plugin.

200 212 


202 Atur batas run dan alat di prompt.md214 Atur batas run dan alat di prompt.md

203</h3>215</h3>

204 216 

205Atur `max_turns`, `timeout_seconds`, `model`, `tags`, dan `allowed_tools` kasus di frontmatter `prompt.md`; referensi [prompt.md frontmatter](#prompt-md-fields) mencantumkan setiap field dan defaultnya. Claude menerima body persis seperti yang Anda tulis. Penyebutan `@path` di dalamnya tidak diperluas menjadi lampiran file, jadi jika Claude perlu membaca file, berikan alat untuk itu di `allowed_tools`.217Atur `max_turns`, `timeout_seconds`, `model`, `tags`, dan `allowed_tools` kasus di frontmatter `prompt.md`; referensi [prompt.md frontmatter](#prompt-md-fields) mencantumkan setiap field dan defaultnya.

218 

219Claude menerima body persis seperti yang Anda tulis. Penyebutan `@path` di dalamnya tidak diperluas menjadi lampiran file, jadi jika Claude perlu membaca file, berikan alat untuk itu di `allowed_tools`.

206 220 

207<h3 id="grade-the-result">221<h3 id="grade-the-result">

208 Pilih dan timbang grader222 Pilih dan timbang grader


210 224 

211Frontmatter grader menetapkan `type`-nya, dan secara opsional `weight` yang membuatnya dihitung untuk lebih banyak skor run dan [`arm`](#compare-against-a-no-plugin-baseline) yang mengontrol cara dinilai terhadap baseline. Dari enam tipe, `regex`, `tool_used`, `tool_order`, dan `file_exists` dihitung dari transkrip dan file dan tidak ada biaya, sementara `llm` dan `baseline` memanggil model judge dan menambah biaya run.225Frontmatter grader menetapkan `type`-nya, dan secara opsional `weight` yang membuatnya dihitung untuk lebih banyak skor run dan [`arm`](#compare-against-a-no-plugin-baseline) yang mengontrol cara dinilai terhadap baseline. Dari enam tipe, `regex`, `tool_used`, `tool_order`, dan `file_exists` dihitung dari transkrip dan file dan tidak ada biaya, sementara `llm` dan `baseline` memanggil model judge dan menambah biaya run.

212 226 

213Tidak ada grader kode kustom. [Tipe grader](#grader-types) mencantumkan opsi setiap tipe dan kondisi lulus, dan [apa yang dapat dilihat grader](#what-a-grader-can-look-at) mencantumkan nilai yang diterima `target` dan `focus`.227Tidak ada grader kode kustom.

228 

229[Tipe grader](#grader-types) mencantumkan opsi setiap tipe dan kondisi lulus, dan [apa yang dapat dilihat grader](#what-a-grader-can-look-at) mencantumkan nilai yang diterima `target` dan `focus`.

214 230 

215Judge untuk grader `llm` dan `baseline` adalah model cepat kecil secara default. Lewati `--judge-model sonnet` atau ID model lengkap untuk menggunakan yang lebih kuat untuk rubrik bernuansa.231Judge untuk grader `llm` dan `baseline` adalah model cepat kecil secara default. Lewati `--judge-model sonnet` atau ID model lengkap untuk menggunakan yang lebih kuat untuk rubrik bernuansa.

216 232 


229 Nilai terhadap baseline tanpa plugin245 Nilai terhadap baseline tanpa plugin

230</h3>246</h3>

231 247 

232Ketika plugin sedang diuji, setiap kasus berjalan di dua arm secara default. With-arm adalah runnya dengan plugin dimuat, dan without-arm adalah jumlah run yang sama tanpa plugin sama sekali. Ringkasan dan laporan menunjukkan kedua skor dan `Δ`, skor with-arm minus skor without-arm. Lewati `--ablation none` untuk menjalankan hanya with-arm, yang mengurangi biaya setengahnya ketika Anda tidak memerlukan perbandingan, seperti saat mengulangi grader.248Ketika plugin sedang diuji, setiap kasus berjalan di dua arm secara default. With-arm adalah runnya dengan plugin dimuat, dan without-arm adalah jumlah run yang sama tanpa plugin sama sekali. Ringkasan dan laporan menunjukkan kedua skor dan `Δ`, skor with-arm minus skor without-arm.

249 

250Lewati `--ablation none` untuk menjalankan hanya with-arm, yang mengurangi biaya setengahnya ketika Anda tidak memerlukan perbandingan, seperti saat mengulangi grader.

233 251 

234Dalam run dua-arm, beberapa grader dilaporkan dengan `scored: false`. Pemeriksaan seperti "skill dipanggil" tidak pernah dapat lulus tanpa plugin, jadi menghitungnya akan mendorong without-arm menuju nol dan menginflasi `Δ`. Untuk menjaga kedua arm dapat dibandingkan, Claude Code mengecualikan grader tersebut dari skor di kedua arm dan melaporkannya di with-arm sebagai indikator lulus/gagal saja. Itu termasuk:252Dalam run dua-arm, beberapa grader dilaporkan dengan `scored: false`. Pemeriksaan seperti "skill dipanggil" tidak pernah dapat lulus tanpa plugin, jadi menghitungnya akan mendorong without-arm menuju nol dan menginflasi `Δ`. Untuk menjaga kedua arm dapat dibandingkan, Claude Code mengecualikan grader tersebut dari skor di kedua arm dan melaporkannya di with-arm sebagai indikator lulus/gagal saja. Itu termasuk:

235 253 

236* Setiap grader `tool_used` yang `tool`-nya adalah `Skill`254* Setiap grader `tool_used` yang `tool`-nya adalah `Skill`

255* Setiap grader `regex` dengan `target: mock_calls` dan setiap grader `llm` dengan `focus: mock_calls`, ketika setiap [server mock](#mock-mcp-servers) dalam kasus adalah salah satu yang dideklarasikan plugin Anda

237* Grader apa pun yang Anda tandai `arm: with-only`256* Grader apa pun yang Anda tandai `arm: with-only`

238 257 

239Jika setiap grader dalam kasus adalah salah satu dari ini, mereka dinilai secara normal sebagai gantinya, karena tidak akan ada yang tersisa untuk dinilai. Atur `arm: both` pada grader untuk menilainya di kedua arm terlepas, yang ingin Anda lakukan untuk pemeriksaan "harus tidak menginvokasi skill" dengan `min: 0` dan `max: 0`. Di bawah `--ablation none` tidak ada yang dikecualikan, jadi suite yang sama dapat menghasilkan skor absolut yang berbeda di dua mode.258Tiga pengaturan mengubah pengecualian itu:

259 

260* **Setiap grader dikecualikan**: jika setiap grader dalam kasus adalah salah satu dari set yang dikecualikan, mereka dinilai secara normal sebagai gantinya, karena tidak akan ada yang tersisa untuk dinilai.

261* **`arm: both`**: atur `arm: both` pada grader untuk menilainya di kedua arm terlepas, yang ingin Anda lakukan untuk pemeriksaan "harus tidak menginvokasi skill" dengan `min: 0` dan `max: 0`.

262* **`--ablation none`**: di bawah `--ablation none` tidak ada yang dikecualikan, jadi suite yang sama dapat menghasilkan skor absolut yang berbeda di dua mode.

240 263 

241<h3 id="use-a-different-eval-directory">264<h3 id="use-a-different-eval-directory">

242 Gunakan direktori eval yang berbeda265 Gunakan direktori eval yang berbeda


259 Seed workspace atau percakapan282 Seed workspace atau percakapan

260</h3>283</h3>

261 284 

262Setiap run dimulai di workspace kosong. Ketika kasus memerlukan lebih dari prompt, tambahkan `case.yaml` di samping `prompt.md` dengan blok `context`.285Setiap run dimulai di workspace kosong. Ketika kasus memerlukan lebih dari prompt, tambahkan `case.yaml` di samping `prompt.md` dengan blok `context`:

263 286 

264Untuk membuat file fixture atau repositori git terlebih dahulu, tulis skrip Bash di direktori kasus dan namai di `context.scaffold_script`. Skrip berjalan sebagai Anda, di luar sandbox agen, dan hanya ketika Anda lewati `--scaffold`, jadi lewati flag itu hanya untuk suite yang Anda atau organisasi Anda tulis. Untuk melanjutkan percakapan sebelumnya, simpan transkrip sebagai file `.jsonl` dan namai di `context.history_file`, dan prompt kasus menjadi turn pengguna berikutnya. Untuk membiarkan Claude membaca direktori fixture di kasus selama run, cantumkan di `context.add_dirs`.287* **File fixture atau repositori git**: tulis skrip Bash di direktori kasus dan namai di `context.scaffold_script`. Skrip berjalan sebagai Anda, di luar sandbox agen, dan hanya ketika Anda lewati `--scaffold`, jadi lewati flag itu hanya untuk suite yang Anda atau organisasi Anda tulis.

288* **Percakapan sebelumnya untuk dilanjutkan**: simpan transkrip sebagai file `.jsonl` dan namai di `context.history_file`, dan prompt kasus menjadi turn pengguna berikutnya.

289* **Direktori fixture yang dapat dibaca Claude selama run**: cantumkan di `context.add_dirs`.

265 290 

266`case.yaml` juga memerlukan `schema_version: "1.1"` dan `name`; referensi [case.yaml fields](#case-yaml-fields) memiliki daftar lengkap.291`case.yaml` juga memerlukan `schema_version: "1.1"` dan `name`; referensi [case.yaml fields](#case-yaml-fields) memiliki daftar lengkap.

267 292 


280 Mock server MCP305 Mock server MCP

281</h3>306</h3>

282 307 

283Anda dapat mengevaluasi plugin yang skillnya memanggil alat MCP tanpa layanan nyata di belakangnya. Letakkan satu file Markdown per alat di bawah `evals/mocks/<server>/<tool>.md` untuk seluruh suite, atau di bawah direktori `mocks/` kasus sendiri untuk satu kasus, di mana `<server>` adalah nama server di [konfigurasi MCP](/docs/id/plugins-reference#mcp-servers) plugin Anda.308Anda dapat mengevaluasi plugin yang skills-nya memanggil alat MCP tanpa layanan nyata di belakangnya. Letakkan satu file Markdown per alat di bawah `evals/mocks/<server>/<tool>.md` untuk seluruh suite, atau di bawah direktori `mocks/` kasus sendiri untuk satu kasus, di mana `<server>` adalah nama server di [konfigurasi MCP](/docs/id/plugins/components#mcp-servers) plugin Anda.

284 309 

285Run tidak pernah memulai server MCP plugin Anda yang sebenarnya kecuali Anda meminta. Claude Code mendaftarkan pengganti di bawah nama server itu sendiri. Alat dengan file mock menjawab darinya dan diizinkan tanpa grant `--allow-tools`, dan alat tanpa file mock tidak tersedia untuk Claude. Server tanpa mock sama sekali muncul di baris kemajuan kasus sebagai `plugin_<plugin>_<server>[not started: no mock]`.310Run tidak pernah memulai server MCP plugin Anda yang sebenarnya kecuali Anda meminta. Claude Code mendaftarkan pengganti di bawah nama server itu sendiri. Alat dengan file mock menjawab darinya dan diizinkan tanpa grant `--allow-tools`, dan alat tanpa file mock tidak tersedia untuk Claude. Server tanpa mock sama sekali muncul di baris kemajuan kasus sebagai `plugin_<plugin>_<server>[not started: no mock]`.

286 311 


296Created issue #4821: {{input.title}}321Created issue #4821: {{input.title}}

297```322```

298 323 

299Sisipkan field dari input panggilan dengan `{{input.<field>}}`, dan konten file fixture di samping mock dengan `{{file:fixtures/{input.<field>}.json}}`. Blok `expect:` menjaga input. Jika panggilan melanggarnya, run membatalkan dengan skor 0 dan mencatat mengapa, jadi kasus dapat menegaskan apa yang diminta plugin ke server. Atur `error: true` untuk mengembalikan body sebagai kesalahan alat sebagai gantinya, atau `type: agent` untuk memiliki model kecil menjawab sebagai server dari instruksi di body. Referensi [mock file](#mock-files) mencantumkan setiap kunci dan file `_server.md` dan `_tools.json`.324Body dan frontmatter file mock menerima opsi-opsi ini:

325 

326* **Substitusi**: sisipkan field dari input panggilan dengan `{{input.<field>}}`, dan konten file fixture di samping mock dengan `{{file:fixtures/{input.<field>}.json}}`.

327* **`expect:`**: blok `expect:` menjaga input. Jika panggilan melanggarnya, run membatalkan dengan skor 0 dan mencatat mengapa, jadi kasus dapat menegaskan apa yang diminta plugin ke server.

328* **`error: true`**: atur `error: true` untuk mengembalikan body sebagai kesalahan alat sebagai gantinya.

329* **`type: agent`**: atur `type: agent` untuk memiliki model kecil menjawab sebagai server dari instruksi di body.

330 

331Referensi [mock file](#mock-files) mencantumkan setiap kunci dan file `_server.md` dan `_tools.json`.

300 332 

301Untuk menilai panggilan itu sendiri, arahkan grader ke `target: mock_calls`.333Untuk menilai panggilan itu sendiri, arahkan grader ke `target: mock_calls`.

302 334 


330| Direktori root plugin, seperti `.` | Setiap kasus di bawah direktori eval-nya, dengan plugin itu dimuat |362| Direktori root plugin, seperti `.` | Setiap kasus di bawah direktori eval-nya, dengan plugin itu dimuat |

331| File `prompt.md` atau `case.yaml` tunggal | Kasus itu, dengan plugin yang memuatnya dimuat |363| File `prompt.md` atau `case.yaml` tunggal | Kasus itu, dengan plugin yang memuatnya dimuat |

332| Plugin yang diinstal berdasarkan nama, `name` atau `name@marketplace` | Kasus dalam direktori eval salinan yang diinstal, dengan salinan yang diinstal dimuat. Hasil ditulis di bawah `./evals/results/` di direktori saat ini, atau `./<dir>/results/` dengan `--eval-dir` |364| Plugin yang diinstal berdasarkan nama, `name` atau `name@marketplace` | Kasus dalam direktori eval salinan yang diinstal, dengan salinan yang diinstal dimuat. Hasil ditulis di bawah `./evals/results/` di direktori saat ini, atau `./<dir>/results/` dengan `--eval-dir` |

333| `name@skills-dir` | Sama, untuk [plugin skills-directory](/docs/id/plugins-reference#skills-directory-plugins) |365| `name@skills-dir` | Sama, untuk [plugin skills-directory](/docs/id/plugins/loading#plugins-shared-through-a-repository) |

334| Dihilangkan | Direktori saat ini sebagai path |366| Dihilangkan | Direktori saat ini sebagai path |

335 367 

336Tambahkan `--case <glob>` untuk memfilter berdasarkan nama kasus dan `--tag <tag>` untuk menyimpan kasus dengan salah satu tag yang diberikan. Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Dua yang pertama mengambil daftar dan `--json` mengambil path opsional, jadi masing-masing membaca target yang mengikuti sebagai nilainya sendiri.368Tambahkan `--case <glob>` untuk memfilter berdasarkan nama kasus dan `--tag <tag>` untuk menyimpan kasus dengan salah satu tag yang diberikan.

369 

370Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Dua yang pertama mengambil daftar dan `--json` mengambil path opsional, jadi masing-masing membaca target yang mengikuti sebagai nilainya sendiri.

337 371 

338<h3 id="grant-tools">372<h3 id="grant-tools">

339 Berikan alat373 Berikan alat


341 375 

342Run tidak pernah berhenti untuk meminta izin. Alat bawaan yang memerlukan izin yang tidak Anda berikan, seperti `Bash`, `Write`, `Edit`, `WebFetch`, dan `WebSearch`, dihapus dari sesi, jadi Claude tidak dapat memanggilnya sama sekali.376Run tidak pernah berhenti untuk meminta izin. Alat bawaan yang memerlukan izin yang tidak Anda berikan, seperti `Bash`, `Write`, `Edit`, `WebFetch`, dan `WebSearch`, dihapus dari sesi, jadi Claude tidak dapat memanggilnya sama sekali.

343 377 

344Daftar izin adalah alat read-only yang daftar kasus dalam `allowed_tools`, dari `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `Agent`, `TodoWrite`, dan alat task `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, dan `TaskStop`, ditambah apa pun yang Anda berikan dengan `--allow-tools`. Pemberian itu berlaku untuk setiap kasus dalam run. Untuk membiarkan kasus menggunakan `Bash`, `Write`, `Edit`, `WebFetch`, atau `WebSearch`, berikan mereka sendiri:378Daftar izin adalah alat read-only yang daftar kasus dalam `allowed_tools`, dari `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `AskUserQuestion`, `Agent`, `TodoWrite`, dan alat task `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, dan `TaskStop`, ditambah apa pun yang Anda berikan dengan `--allow-tools`. Pemberian itu berlaku untuk setiap kasus dalam run. Untuk membiarkan kasus menggunakan `Bash`, `Write`, `Edit`, `WebFetch`, atau `WebSearch`, berikan mereka sendiri:

345 379 

346```bash theme={null}380```bash theme={null}

347claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"381claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"

348```382```

349 383 

350Ketika kasus meminta alat yang tidak Anda berikan, run mencantumkannya di stderr sebagai `not granted`. Alat pada [server MCP yang dimock](#mock-mcp-servers) tidak memerlukan izin. Alat pada server MCP plugin nyata memerlukan server yang dimulai, dengan `--allow-real-servers` atau `--mocks off`, dan izin berdasarkan nama, seperti `--allow-tools "mcp__plugin_my-plugin_github__*"`; alat MCP plugin dinamai `mcp__plugin_<plugin>_<server>__<tool>`.384Ketika kasus meminta alat yang tidak Anda berikan, output kemajuan mencantumkannya sebagai `not granted`. Alat pada [server MCP yang dimock](#mock-mcp-servers) tidak memerlukan izin. Alat pada server MCP plugin nyata memerlukan server yang dimulai, dengan `--allow-real-servers` atau `--mocks off`, dan izin berdasarkan nama, seperti `--allow-tools "mcp__plugin_my-plugin_github__*"`; alat MCP plugin dinamai `mcp__plugin_<plugin>_<server>__<tool>`.

351 385 

352Ketika Anda memberikan `Bash` dalam bentuk apa pun, setiap perintah berjalan di bawah [sandbox tingkat OS](/docs/id/sandboxing) Claude Code. Penulisan dibatasi pada workspace run, direktori home dan konfigurasi Claude Code tidak dapat dibaca, dan akses jaringan dibatasi pada domain yang Anda berikan dengan `--allow-tools "WebFetch(domain:example.com)"`. Jika Anda memberikan Bash atau PowerShell pada mesin tanpa backend sandbox, Claude Code menolak setiap run daripada menjalankannya tanpa batasan, dan kasus menunjukkan error run dan biasanya mencetak skor 0. Windows native tidak memiliki backend, jadi jalankan suite yang memberikan izin shell di bawah WSL2; di Linux, instal `bubblewrap` dan `socat` terlebih dahulu. Lihat [prasyarat sandboxing](/docs/id/sandboxing).386Ketika Anda memberikan `Bash` dalam bentuk apa pun, setiap perintah berjalan di bawah [sandbox tingkat OS](/docs/id/sandboxing) Claude Code. Penulisan dibatasi pada workspace run, direktori home dan konfigurasi Claude Code tidak dapat dibaca, dan akses jaringan dibatasi pada domain yang Anda berikan dengan `--allow-tools "WebFetch(domain:example.com)"`. Jika Anda memberikan Bash atau PowerShell pada mesin tanpa backend sandbox, Claude Code menolak setiap run daripada menjalankannya tanpa batasan, dan kasus menunjukkan error run dan biasanya mencetak skor 0. Windows native tidak memiliki backend, jadi jalankan suite yang memberikan izin shell di bawah WSL2; di Linux, instal `bubblewrap` dan `socat` terlebih dahulu. Lihat [prasyarat sandboxing](/docs/id/sandboxing).

353 387 


404| 130 | Terputus. Hasil parsial ditulis |438| 130 | Terputus. Hasil parsial ditulis |

405| 143 | Dihentikan, seperti oleh timeout CI |439| 143 | Dihentikan, seperti oleh timeout CI |

406 440 

407Masalah menulis atau menerbitkan laporan HTML tidak pernah mengubah kode keluar. Untuk melihat mengapa kasus mencetak skor rendah, jalankan secara lokal tanpa `--json` sehingga kemajuan per-run dan baris grader mencetak.441Masalah menulis atau menerbitkan laporan HTML tidak pernah mengubah kode keluar.

442 

443Untuk melihat mengapa kasus mencetak skor rendah, jalankan secara lokal tanpa `--json` sehingga kemajuan per-run dan baris grader mencetak.

444 

445Runner CI juga memerlukan hal-hal ini:

408 446 

409Runner CI memerlukan instalasi Claude Code dan [kredensial di lingkungan](/docs/id/authentication) seperti `ANTHROPIC_API_KEY`. Tanpa `--trust-plugin`, pekerjaan yang direktori checkoutnya Claude Code belum percayai ditolak dengan keluar 1 ketika tidak memiliki terminal, atau menunggu di prompt ketika runner mengalokasikan satu. `claude plugin eval init` memerlukan terminal untuk mengajukan pertanyaan Anda; di CI, jalankan `claude plugin eval init --bare <name>` untuk mendapatkan template kosong.447* **Instal dan kredensial**: runner CI memerlukan instalasi Claude Code dan [kredensial di lingkungan](/docs/id/authentication) seperti `ANTHROPIC_API_KEY`.

448* **Kepercayaan**: tanpa `--trust-plugin`, pekerjaan yang direktori checkoutnya Claude Code belum percayai memerlukan [prompt kepercayaan first-run](#trust-the-plugin-directory), dan run yang tidak dapat bertanya ditolak dengan keluar 1.

449* **`init` di CI**: `claude plugin eval init` memerlukan terminal untuk mengajukan pertanyaan Anda; di CI, jalankan `claude plugin eval init --bare <name>` untuk mendapatkan template kosong.

410 450 

411Untuk menjaga biaya dapat diprediksi, berikan suite setiap perubahan cepat hanya grader yang tidak memanggil hakim, gunakan `--ablation none` di mana Anda tidak memerlukan `Δ`, dan tinggalkan dokumen `partial: true` dan run dengan `skippedPaidGraders` keluar dari tren apa pun yang Anda buat.451Untuk menjaga biaya dapat diprediksi, berikan suite setiap perubahan cepat hanya grader yang tidak memanggil hakim, gunakan `--ablation none` di mana Anda tidak memerlukan `Δ`, dan tinggalkan dokumen `partial: true` dan run dengan `skippedPaidGraders` keluar dari tren apa pun yang Anda buat.

412 452 


461 Apa yang dapat diakses run501 Apa yang dapat diakses run

462</h2>502</h2>

463 503 

464`claude plugin eval` memuat skill, hook, dan agent plugin target dan menjalankan suite evalnya di mesin Anda, sebagai Anda. Menunjuknya ke plugin adalah keputusan kepercayaan yang sama dengan `claude --plugin-dir`, jadi hanya evaluasi plugin yang Anda percayai. Isolasi yang dijelaskan di bagian ini membatasi apa yang dapat dijangkau agen yang diuji; itu bukan batas terhadap kode plugin itu sendiri, dan suite yang lulus tidak mengatakan apa pun tentang apakah plugin aman.504`claude plugin eval` memuat skill, hook, dan agent plugin target dan menjalankan suite evalnya di mesin Anda, sebagai Anda. Menunjuknya ke plugin adalah keputusan kepercayaan yang sama dengan `claude --plugin-dir`, jadi hanya evaluasi plugin yang Anda percayai.

505 

506Isolasi yang dijelaskan di bagian ini membatasi apa yang dapat dijangkau agen yang diuji; itu bukan batas terhadap kode plugin itu sendiri, dan suite yang lulus tidak mengatakan apa pun tentang apakah plugin aman.

465 507 

466<h3 id="trust-the-plugin-directory">508<h3 id="trust-the-plugin-directory">

467 Percayai direktori plugin509 Percayai direktori plugin

468</h3>510</h3>

469 511 

470Pertama kali Anda menjalankan `claude plugin eval` terhadap direktori, Claude Code menanyakan `Trust this plugin directory?` sebelum memuat apa pun darinya, kecuali Anda sudah menerima prompt kepercayaan di sana dalam sesi `claude` interaktif. Di dalam repositori git, menjawab ya mempercayai seluruh repositori, untuk sesi interaktif juga. Ketika stdin atau stdout bukan terminal, atau di bawah `--json`, run tidak dapat bertanya dan ditolak dengan keluar 1; lewati `--trust-plugin` untuk menegaskan kepercayaan sendiri, hanya untuk plugin yang akan Anda jalankan di mesin Anda sendiri. Target yang Anda namai daripada berikan sebagai jalur, berarti plugin yang diinstal atau plugin direktori skills, melewati prompt.512Pertama kali Anda menjalankan `claude plugin eval` terhadap direktori, Claude Code menanyakan `Trust this plugin directory?` sebelum memuat apa pun darinya, kecuali Anda sudah menerima prompt kepercayaan di sana dalam sesi `claude` interaktif. Di dalam repositori git, menjawab ya mempercayai seluruh repositori, untuk sesi interaktif juga. Ketika stdin atau stdout bukan terminal, di bawah `--json`, atau ketika variabel lingkungan `CI` diatur ke nilai true seperti `true`, run tidak dapat bertanya dan ditolak dengan keluar 1; lewati `--trust-plugin` untuk menegaskan kepercayaan sendiri, hanya untuk plugin yang akan Anda jalankan di mesin Anda sendiri. Target yang Anda namai daripada berikan sebagai jalur, berarti plugin yang diinstal atau plugin direktori skills, melewati prompt.

513 

514Beberapa bagian dari plugin dan suite berjalan hanya ketika Anda melewati flag mereka untuk run itu:

515 

516* [`scaffold_script`](#add-setup-or-history-with-case-yaml) kasus dengan `--scaffold`

517* [Alat di luar set read-only](#grant-tools) dengan `--allow-tools`

518* [Server MCP nyata](#mock-mcp-servers) plugin dengan `--allow-real-servers` atau `--mocks off`

519 

520`allowed_tools` kasus dan frontmatter `allowed-tools` skill sendiri tidak dapat memperluas salah satu dari mereka.

471 521 

472Beberapa bagian dari plugin dan suite berjalan hanya ketika Anda melewati flag mereka untuk run itu: [`scaffold_script`](#add-setup-or-history-with-case-yaml) kasus dengan `--scaffold`, [alat di luar set read-only](#grant-tools) dengan `--allow-tools`, dan [server MCP nyata](#mock-mcp-servers) plugin dengan `--allow-real-servers` atau `--mocks off`. `allowed_tools` kasus dan frontmatter `allowed-tools` skill sendiri tidak dapat memperluas salah satu dari mereka. Ketika plugin mengirim hook yang tidak Anda tulis, atau Anda memulai server MCP nyatanya, perlakukan skornya sebagai penasihat kecuali Anda menjalankannya di lingkungan terisolasi seperti kontainer atau runner CI, karena hook dan server berjalan di luar sandbox agen dan dapat menyentuh file yang dibaca grader.522Ketika plugin mengirim hook yang tidak Anda tulis, atau Anda memulai server MCP nyatanya, perlakukan skornya sebagai penasihat kecuali Anda menjalankannya di lingkungan terisolasi seperti kontainer atau runner CI, karena hook dan server berjalan di luar sandbox agen dan dapat mengubah file yang dibaca grader.

473 523 

474<h3 id="how-runs-are-isolated">524<h3 id="how-runs-are-isolated">

475 Cara run diisolasi525 Cara run diisolasi


537 Field case.yaml587 Field case.yaml

538</h3>588</h3>

539 589 

540`case.yaml` menjelaskan kasus yang sama dalam YAML dan menambahkan field yang menunjuk ke file lain. Ini memerlukan `schema_version: "1.1"` dan `name`. Field `prompt.md` `description`, `tags`, `plugins`, `runs`, dan `expected_outcome` berada di tingkat atas; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, dan `env` berada di bawah `execution:`. Ketika kedua file ada, frontmatter `prompt.md` menimpa field `case.yaml` yang cocok, body `prompt.md` adalah prompt, dan `graders/*.md` ditambahkan setelah grader apa pun yang dicantumkan di `case.yaml`.590`case.yaml` adalah alternatif atau pendamping untuk `prompt.md`: ini menjelaskan kasus dalam YAML dan menambahkan field yang menunjuk ke file lain. Ini memerlukan `schema_version: "1.1"` dan `name`. Field `prompt.md` `description`, `tags`, `plugins`, `runs`, dan `expected_outcome` berada di tingkat atas; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, dan `env` berada di bawah `execution:`. Ketika kedua file ada, frontmatter `prompt.md` menimpa field `case.yaml` yang cocok, body `prompt.md` adalah prompt, dan `graders/*.md` ditambahkan setelah grader apa pun yang dicantumkan di `case.yaml`.

541 591 

542Field ini hanya ada di `case.yaml`:592Field ini hanya ada di `case.yaml`:

543 593 


556Setiap file grader di bawah `graders/` mengambil kunci ini di frontmatter, ditambah opsi untuk tipenya. Nama grader adalah nama file tanpa `.md`:606Setiap file grader di bawah `graders/` mengambil kunci ini di frontmatter, ditambah opsi untuk tipenya. Nama grader adalah nama file tanpa `.md`:

557 607 

558| Kunci | Default | Tujuan |608| Kunci | Default | Tujuan |

559| :------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |609| :------- | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

560| `type` | diperlukan | Salah satu [tipe grader](#grader-types) |610| `type` | diperlukan | Salah satu [tipe grader](#grader-types) |

561| `weight` | `1` | Bobot relatif dalam skor run. Angka positif apa pun |611| `weight` | `1` | Bobot relatif dalam skor run. Angka positif apa pun |

562| `arm` | tidak diatur | `with-only` mengecualikan grader dari penilaian dalam [run dua-arm](#compare-against-a-no-plugin-baseline); `both` memaksa grader `tool_used: Skill` untuk dinilai di kedua arm |612| `arm` | tidak diatur | `with-only` mengecualikan grader dari penilaian dalam [run dua-arm](#compare-against-a-no-plugin-baseline); `both` memaksa grader yang Claude Code akan mengecualikan untuk dinilai di kedua arm |

563 613 

564<h4 id="what-a-grader-can-look-at">614<h4 id="what-a-grader-can-look-at">

565 Apa yang dapat dilihat grader615 Apa yang dapat dilihat grader


632 "is not a trusted plugin directory, and this run cannot stop to ask you about it"682 "is not a trusted plugin directory, and this run cannot stop to ask you about it"

633</h3>683</h3>

634 684 

635Ini adalah run pertama terhadap direktori yang Claude Code belum percayai, dan tidak dapat bertanya karena stdin atau stdout bukan terminal atau Anda lewati `--json`. Jalankan `claude plugin eval <dir>` sekali dalam terminal dan jawab prompt, atau lewati `--trust-plugin` jika Anda mempercayai kode dan suite plugin. Lihat [Apa yang dapat diakses run](#security).685Ini adalah run pertama terhadap direktori yang Claude Code belum percayai, dan tidak dapat bertanya karena stdin atau stdout bukan terminal, Anda melewati `--json`, atau variabel lingkungan `CI` diatur ke nilai true seperti `true`. Jalankan `claude plugin eval <dir>` sekali dalam terminal dan jawab prompt, atau lewati `--trust-plugin` jika Anda mempercayai kode dan suite plugin. Lihat [Apa yang dapat diakses run](#security).

636 686 

637<h3 id="no-eval-cases-found">687<h3 id="no-eval-cases-found">

638 "No eval cases found"688 "No eval cases found"


668 Regex atas trace tidak cocok dengan teks yang dapat saya lihat718 Regex atas trace tidak cocok dengan teks yang dapat saya lihat

669</h3>719</h3>

670 720 

671Default `target` adalah `last_message`, bukan trace. Ketika Anda menargetkan `trace`, itu JSON per baris, jadi kutipan muncul sebagai `\"`. Regex menggunakan sintaks JavaScript, jadi letakkan `i` di `flags` daripada menulis `(?i)`.721* **Target yang salah**: `target` default adalah `last_message`, bukan trace.

722* **Escaping JSON**: ketika Anda menargetkan `trace`, itu JSON per baris, jadi kutipan muncul sebagai `\"`.

723* **Sintaks regex**: regex menggunakan sintaks JavaScript, jadi letakkan `i` di `flags` daripada menulis `(?i)`.

672 724 

673<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">725<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">

674 Alat ditolak, alat MCP hilang, atau Bash tidak akan berjalan726 Alat ditolak, alat MCP hilang, atau Bash tidak akan berjalan


680 Run keluar 1 tetapi hasilnya terlihat baik732 Run keluar 1 tetapi hasilnya terlihat baik

681</h3>733</h3>

682 734 

683Default `--threshold` adalah 1.0, jadi perintah keluar 1 ketika kasus apa pun mencetak di bawah sempurna. Atur ambang yang cocok dengan bar Anda. Keluar 1 juga mencakup file kasus yang gagal dimuat, yang dilaporkan di stderr di atas tabel.735Default `--threshold` adalah 1.0, jadi perintah keluar 1 ketika kasus apa pun mencetak di bawah sempurna. Atur ambang yang cocok dengan skor yang Anda perlukan. Keluar 1 juga mencakup file kasus yang gagal dimuat, yang dilaporkan di stderr di atas tabel.

684 736 

685<h3 id="json-output-path-must-end-in-json">737<h3 id="json-output-path-must-end-in-json">

686 "--json output path must end in .json"738 "--json output path must end in .json"


710 Lihat juga762 Lihat juga

711</h2>763</h2>

712 764 

713* [Buat plugin](/docs/id/plugins): bangun plugin yang Anda uji, dan muat dengan `--plugin-dir` selama pengembangan765* [Buat plugin](/docs/id/plugins/create): bangun plugin yang Anda uji, dan muat dengan `--plugin-dir` selama pengembangan

714* [Referensi plugin](/docs/id/plugins-reference#plugin-eval): entri perintah `plugin eval` dan `plugin eval init` dan kunci manifest `experimental.evals`766* [Referensi perintah plugin](/docs/id/plugins/cli-reference#plugin-eval): entri perintah `plugin eval` dan `plugin eval init`. Kunci manifest [`experimental.evals`](/docs/id/plugins/manifest-reference#fields) ada di referensi manifest

715* [Skills](/docs/id/skills): bagaimana deskripsi skill memutuskan kapan Claude menginvokasinya, yang merupakan apa yang diukur kasus yang memeriksa apakah skill memicu767* [Skills](/docs/id/skills): bagaimana deskripsi skill memutuskan kapan Claude menginvokasinya, yang merupakan apa yang diukur kasus yang memeriksa apakah skill memicu

716* [Sandboxing](/docs/id/sandboxing): sandbox tingkat OS yang berlaku ketika Anda memberikan Bash ke run768* [Sandboxing](/docs/id/sandboxing): sandbox tingkat OS yang berlaku ketika Anda memberikan Bash ke run

717* [Buat dan distribusikan marketplace plugin](/docs/id/plugin-marketplaces): terbitkan plugin setelah suitenya lulus769* [Terbitkan plugin](/docs/id/plugins/publish): terbitkan plugin setelah suitenya lulus

770* [Ukur biaya dan penggunaan plugin](/docs/id/plugins/measure): apa yang ditambahkan plugin ke konteks setiap sesi dan apakah orang masih menggunakannya

plugin-hints.md +0 −172 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# Rekomendasikan plugin Anda dari CLI Anda

6 

7> Keluarkan penanda satu baris dari CLI Anda sehingga Claude Code meminta pengguna untuk memasang plugin resmi Anda.

8 

9Jika Anda memelihara CLI atau SDK dan memiliki plugin di marketplace resmi Anthropic, alat Anda dapat meminta pengguna Claude Code untuk memasang plugin tersebut. CLI Anda menulis penanda satu baris ke stderr ketika mendeteksi bahwa itu berjalan di dalam Claude Code. Claude Code membaca penanda, menghapusnya dari output, dan menampilkan prompt pemasangan satu kali kepada pengguna.

10 

11Protokol tidak memerlukan perintah tambahan dan tidak mengubah apa yang CLI Anda cetak untuk pengguna di luar Claude Code.

12 

13Halaman ini adalah untuk pengelola CLI dan SDK. Jika Anda mencari untuk memasang plugin, lihat [Temukan dan pasang plugin](/docs/id/discover-plugins).

14 

15<h2 id="how-it-works">

16 Cara kerjanya

17</h2>

18 

19Claude Code menetapkan variabel lingkungan [`CLAUDECODE`](/docs/id/env-vars) ke `1` untuk setiap perintah yang dijalankan melalui alat Bash dan PowerShell, dan untuk perintah [hook](/docs/id/hooks). Dari v2.1.172 juga menetapkan [`CLAUDE_CODE_CHILD_SESSION`](/docs/id/env-vars) ke `1` dalam subproses yang sama. Ketika CLI Anda melihat salah satu variabel ini, itu menulis tag `<claude-code-hint />` yang menutup sendiri ke stderr. Dalam perintah hook, tag petunjuk dilepas dan diabaikan. Hanya output alat Bash dan PowerShell yang memicu prompt pemasangan.

20 

21Ketika Claude Code menerima output perintah, itu:

22 

231. Memindai baris petunjuk dan menghapusnya sebelum output mencapai model

242. Memeriksa bahwa petunjuk menargetkan plugin di marketplace Anthropic resmi

253. Memeriksa bahwa plugin belum dipasang dan belum diminta sebelumnya

264. Menampilkan prompt pemasangan kepada pengguna yang menyebutkan perintah yang mengeluarkan petunjuk

27 

28Claude Code tidak pernah memasang plugin secara otomatis. Pengguna selalu mengonfirmasi.

29 

30<h2 id="emit-the-hint">

31 Keluarkan petunjuk

32</h2>

33 

34Petunjuk hint hanya aktif untuk plugin yang terdaftar di marketplace resmi Anthropic. Lihat [Dapatkan plugin Anda ke marketplace resmi](#get-your-plugin-into-the-official-marketplace) sebelum Anda meluncurkan integrasi.

35 

36Gerbang emisi pada variabel lingkungan sehingga penanda tidak mungkin muncul ketika manusia menjalankan CLI Anda secara langsung, kemudian tulis tag ke stderr pada barisnya sendiri. Pilih variabel mana yang akan diperiksa:

37 

38* `CLAUDECODE`: diatur pada setiap versi Claude Code, sehingga mencapai sebagian besar sesi. Ini juga diatur dalam sesi tmux dan subprocess server MCP stdio yang Claude Code mulai. Ekstensi IDE juga mengaturnya di terminal terintegrasi mereka, di mana manusia dapat menjalankan CLI Anda secara langsung.

39* `CLAUDE_CODE_CHILD_SESSION`: diatur hanya dalam subprocess yang Claude Code sendiri spawn, seperti pemanggilan alat, perintah hook, dan perintah [status line](/docs/id/statusline), sehingga tag biasanya tidak mencapai terminal manusia. Proses yang berumur panjang yang dimulai di dalam sesi, seperti server tmux, menangkap variabel, sehingga shell yang diluncurkan kemudian dari proses itu masih menampilkan tag mentah.

40 

41Contoh berikut gerbang pada `CLAUDECODE` untuk jangkauan maksimal dan mengeluarkan petunjuk untuk plugin bernama `example-cli` di marketplace resmi:

42 

43<CodeGroup>

44 ```javascript Node.js theme={null}

45 if (process.env.CLAUDECODE) {

46 process.stderr.write(

47 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

48 )

49 }

50 ```

51 

52 ```python Python theme={null}

53 import os, sys

54 

55 if os.environ.get("CLAUDECODE"):

56 print(

57 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

58 file=sys.stderr,

59 )

60 ```

61 

62 ```go Go theme={null}

63 if os.Getenv("CLAUDECODE") != "" {

64 fmt.Fprintln(os.Stderr,

65 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

66 }

67 ```

68 

69 ```shell Shell theme={null}

70 if [ -n "$CLAUDECODE" ]; then

71 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

72 fi

73 ```

74</CodeGroup>

75 

76Ganti `example-cli` dengan nama plugin Anda di marketplace resmi.

77 

78<h2 id="choose-where-to-emit">

79 Pilih tempat untuk mengeluarkan

80</h2>

81 

82Anda mengontrol jalur kode mana yang mengeluarkan petunjuk. Claude Code menghilangkan duplikat berdasarkan plugin, jadi mengeluarkan pada setiap invokasi tidak memiliki kelemahan. Titik sentuh yang bekerja dengan baik meliputi:

83 

84| Penempatan | Mengapa itu bekerja |

85| :--------------------------------------- | :--------------------------------------------------------------------- |

86| Output `--help` | Claude sering menjalankan help saat menjelajahi CLI yang tidak dikenal |

87| Kesalahan subperintah yang tidak dikenal | Mencapai momen ketika Claude bingung tentang antarmuka Anda |

88| Keberhasilan login atau autentikasi | Pengguna sudah dalam pola pikir pengaturan |

89| Pesan sambutan first-run | Momen onboarding yang alami |

90 

91<h2 id="what-the-user-sees">

92 Apa yang dilihat pengguna

93</h2>

94 

95Ketika petunjuk melewati semua pemeriksaan, Claude Code menampilkan prompt seperti berikut:

96 

97```text theme={null}

98─────────────────────────────────────────────────────────────

99 Plugin recommendation

100 

101 The example-cli command suggests installing a plugin.

102 

103 Plugin: example-cli

104 Marketplace: claude-plugins-official

105 Official integration for example-cli deployments

106 

107 Would you like to install it?

108 ❯ 1. Yes, install example-cli

109 2. No

110 3. No, and don't show plugin installation hints again

111 

112─────────────────────────────────────────────────────────────

113```

114 

115Prompt menyebutkan perintah yang menghasilkan petunjuk sehingga pengguna dapat mendeteksi ketidaksesuaian antara alat dan plugin yang direkomendasikannya. Jika pengguna tidak merespons dalam 30 detik, Claude Code menolak prompt sebagai **No**.

116 

117Frekuensi prompt dibatasi, dan beberapa sesi tidak pernah menampilkan prompt:

118 

119* **Sekali per plugin**: setelah prompt ditampilkan, Claude Code mencatat plugin dan tidak pernah memintanya lagi, terlepas dari jawaban pengguna.

120* **Sekali per sesi**: di semua CLI di mesin, paling banyak satu prompt petunjuk muncul per sesi Claude Code.

121* **Hanya sesi interaktif utama**: Claude Code menampilkan prompt hanya dalam sesi terminal tempat pengguna mengetik. Claude Code tidak pernah menampilkan prompt untuk perintah yang dijalankan oleh [subagent](/docs/id/sub-agents), dan tidak pernah menampilkan prompt ketika pengguna menjalankan Claude Code dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p` atau melalui [Agent SDK](/docs/id/agent-sdk/overview). Claude Code masih menghapus baris petunjuk dari output perintah dalam semua kasus ini.

122* **Opt-out telemetri**: sesi tempat analitik dinonaktifkan tidak pernah menampilkan prompt petunjuk. Ini termasuk sesi dengan `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` yang diatur, dan sesi di penyedia pihak ketiga seperti Amazon Bedrock atau Agent Platform Google Cloud tempat [opt-out telemetri otomatis](/docs/id/data-usage#default-behaviors-by-api-provider) berlaku.

123 

124Memilih **Yes** memasang plugin ke cakupan pengguna. Memilih **No, and don't show plugin installation hints again** menonaktifkan semua prompt petunjuk di masa depan untuk pengguna.

125 

126<h2 id="hint-format">

127 Format petunjuk

128</h2>

129 

130Petunjuk adalah tag yang menutup sendiri dengan tiga atribut yang diperlukan.

131 

132```text theme={null}

133<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />

134```

135 

136| Atribut | Diperlukan | Deskripsi |

137| :------ | :--------- | :--------------------------------------------------------------- |

138| `v` | Ya | Versi protokol. `1` adalah satu-satunya nilai yang didukung |

139| `type` | Ya | Jenis petunjuk. `plugin` adalah satu-satunya nilai yang didukung |

140| `value` | Ya | Pengenal plugin dalam bentuk `name@marketplace` |

141 

142Nilai atribut dapat dikutip dengan tanda kutip ganda atau dibiarkan tanpa tanda kutip. Nilai tanpa tanda kutip tidak dapat berisi spasi. Urutan escape tidak didukung.

143 

144<h2 id="requirements">

145 Persyaratan

146</h2>

147 

148Claude Code memberlakukan dua kondisi sebelum bertindak atas petunjuk. Petunjuk yang gagal salah satu pemeriksaan dijatuhkan:

149 

150* **Baris sendiri**: tag harus menempati barisnya sendiri. Tag yang tertanam di tengah baris, misalnya di dalam pernyataan log, diabaikan. Spasi di awal dan akhir baris diizinkan.

151* **Marketplace resmi**: `value` harus mereferensikan plugin di marketplace yang dikendalikan Anthropic seperti `claude-plugins-official`. Petunjuk yang menunjuk ke marketplace lain secara diam-diam dijatuhkan.

152 

153Baris petunjuk selalu dihapus dari output sebelum mencapai model, bahkan ketika versi atau jenis tidak dikenali, sehingga penanda tidak pernah dihitung terhadap penggunaan token.

154 

155Panduan yang tersisa direkomendasikan tetapi tidak diberlakukan. Claude Code tidak dapat mengamati apakah CLI Anda mengikutinya:

156 

157* **Tulis ke stderr**: stderr menjaga tag keluar dari pipa shell seperti `example-cli deploy | jq`. Claude Code memindai kedua aliran, jadi stdout juga berfungsi.

158* **Gerbang pada variabel lingkungan**: hanya keluarkan ketika `CLAUDECODE` atau `CLAUDE_CODE_CHILD_SESSION` diatur. Lihat [Emit the hint](#emit-the-hint) untuk mengetahui bagaimana kedua variabel berbeda.

159 

160<h2 id="get-your-plugin-into-the-official-marketplace">

161 Dapatkan plugin Anda ke marketplace resmi

162</h2>

163 

164Protokol petunjuk hanya berlaku untuk plugin yang terdaftar di marketplace Anthropic resmi, `claude-plugins-official`. Anthropic mengkurasi marketplace tersebut atas kebijakannya sendiri, dan formulir pengajuan dalam aplikasi menambahkan plugin ke [marketplace komunitas](/docs/id/plugins#submit-your-plugin-to-the-community-marketplace) sebagai gantinya, yang protokol petunjuk tidak periksa. Jika Anda bekerja dengan kontak mitra Anthropic, hubungi mereka untuk mengoordinasikan daftar marketplace resmi.

165 

166<h2 id="see-also">

167 Lihat juga

168</h2>

169 

170* [Buat plugin](/docs/id/plugins): bangun plugin yang direkomendasikan CLI Anda

171* [Buat dan distribusikan marketplace plugin](/docs/id/plugin-marketplaces): host plugin di luar marketplace resmi

172* [Variabel lingkungan](/docs/id/env-vars): referensi lengkap untuk `CLAUDECODE` dan variabel terkait

plugin-marketplaces.md +0 −1688 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 dan distribusikan marketplace plugin

6 

7> Bangun dan host marketplace plugin untuk mendistribusikan ekstensi Claude Code di seluruh tim dan komunitas.

8 

9Sebuah **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.

10 

11Mencari cara memasang plugin dari marketplace yang sudah ada? Lihat [Temukan dan pasang plugin yang sudah dibuat](/docs/id/discover-plugins).

12 

13<h2 id="overview">

14 Ikhtisar

15</h2>

16 

17Membuat dan mendistribusikan marketplace melibatkan:

18 

191. **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](/docs/id/plugins) untuk detail tentang cara membuat plugin.

202. **Membuat file marketplace**: tentukan `marketplace.json` yang mencantumkan plugin Anda dan di mana menemukannya. Lihat [Buat file marketplace](#create-the-marketplace-file).

213. **Host marketplace**: dorong ke GitHub, GitLab, atau host git lainnya. Lihat [Host dan distribusikan marketplace](#host-and-distribute-marketplaces).

224. **Bagikan dengan pengguna**: pengguna menambahkan marketplace Anda dengan `/plugin marketplace add` dan memasang plugin individual. Lihat [Temukan dan pasang plugin](/docs/id/discover-plugins).

23 

24Setelah marketplace Anda aktif, Anda dapat memperbaruinya dengan mendorong perubahan ke repositori Anda. Pengguna menyegarkan salinan lokal mereka dengan `/plugin marketplace update`.

25 

26<h2 id="walkthrough-create-a-local-marketplace">

27 Panduan: buat marketplace lokal

28</h2>

29 

30Contoh 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.

31 

32<Steps>

33 <Step title="Buat struktur direktori">

34 ```bash theme={null}

35 mkdir -p my-marketplace/.claude-plugin

36 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

37 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

38 ```

39 </Step>

40 

41 <Step title="Buat skill">

42 Buat file `SKILL.md` yang mendefinisikan apa yang dilakukan skill `quality-review`.

43 

44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

45 ---

46 description: Review code for bugs, security, and performance

47 ---

48 

49 Review the code I've selected or the recent changes for:

50 - Potential bugs or edge cases

51 - Security concerns

52 - Performance issues

53 - Readability improvements

54 

55 Be concise and actionable.

56 ```

57 </Step>

58 

59 <Step title="Buat manifest plugin">

60 Buat file `plugin.json` yang mendeskripsikan plugin. Manifest berada di direktori `.claude-plugin/`.

61 

62 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

63 {

64 "name": "quality-review-plugin",

65 "description": "Adds a quality-review skill for quick code reviews",

66 "version": "1.0.0",

67 "author": {

68 "name": "Your Name"

69 }

70 }

71 ```

72 

73 <Note>

74 Menetapkan `version` berarti pengguna hanya menerima pembaruan ketika Anda mengubah bidang ini, jadi tingkatkan pada setiap rilis. Plugin dengan sumber [`command`](#command-sources) tidak disematkan oleh bidang ini. Juga tidak plugin yang [dimuat di tempat](/docs/id/plugins-reference#plugin-caching-and-file-resolution) dari marketplace yang ditambahkan sebagai direktori lokal. Jika Anda menghilangkan `version`, versi berasal dari sumber berikutnya dalam [manajemen versi](/docs/id/plugins-reference#version-management).

75 </Note>

76 </Step>

77 

78 <Step title="Buat file marketplace">

79 Buat katalog marketplace yang mencantumkan plugin Anda.

80 

81 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

82 {

83 "name": "my-plugins",

84 "owner": {

85 "name": "Your Name"

86 },

87 "plugins": [

88 {

89 "name": "quality-review-plugin",

90 "source": "./plugins/quality-review-plugin",

91 "description": "Adds a quality-review skill for quick code reviews"

92 }

93 ]

94 }

95 ```

96 </Step>

97 

98 <Step title="Tambahkan dan pasang">

99 Dari direktori yang berisi `my-marketplace`, mulai Claude Code dan jalankan perintah berikut. Perintah install membuka tampilan detail plugin tempat Anda memilih cakupan instalasi untuk mengonfirmasi instalasi. 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).

100 

101 ```shell theme={null}

102 /plugin marketplace add ./my-marketplace

103 /plugin install quality-review-plugin@my-plugins

104 ```

105 </Step>

106 

107 <Step title="Coba">

108 Pilih beberapa kode di editor Anda dan jalankan skill baru Anda. Plugin skills memiliki namespace dengan nama plugin.

109 

110 ```shell theme={null}

111 /quality-review-plugin:quality-review

112 ```

113 </Step>

114</Steps>

115 

116Untuk mempelajari lebih lanjut tentang apa yang dapat dilakukan plugin, termasuk hooks, agents, MCP servers, dan LSP servers, lihat [Plugins](/docs/id/plugins).

117 

118<Note>

119 **Cara plugin dipasang**: ketika pengguna memasang plugin, Claude Code menyalin direktori plugin ke lokasi cache, kecuali plugin memuat di tempat. Sumber [`command` dalam link mode](#copy-mode-and-link-mode) memuat di tempat, begitu juga [sumber jalur relatif](#relative-paths) dalam marketplace yang ditambahkan dari direktori lokal. Plugin yang disalin tidak dapat mereferensikan file di luar direktorinya menggunakan jalur seperti `../shared-utils`, karena file tersebut tidak akan disalin.

120 

121 Jika Anda perlu berbagi file di seluruh plugin, gunakan symlink. Lihat [Plugin caching and file resolution](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk detail.

122</Note>

123 

124<h2 id="create-the-marketplace-file">

125 Buat file marketplace

126</h2>

127 

128Buat `.claude-plugin/marketplace.json` di root repositori Anda. File ini mendefinisikan nama marketplace Anda, informasi pemilik, dan daftar plugin dengan sumbernya.

129 

130Setiap entri plugin memerlukan minimal `name` dan `source` yang memberitahu Claude Code di mana mengambilnya. Lihat [skema lengkap](#marketplace-schema) di bawah untuk semua field yang tersedia.

131 

132```json theme={null}

133{

134 "name": "company-tools",

135 "owner": {

136 "name": "DevTools Team",

137 "email": "devtools@example.com"

138 },

139 "plugins": [

140 {

141 "name": "code-formatter",

142 "source": "./plugins/formatter",

143 "description": "Automatic code formatting on save",

144 "version": "2.1.0",

145 "author": {

146 "name": "DevTools Team"

147 }

148 },

149 {

150 "name": "deployment-tools",

151 "source": {

152 "source": "github",

153 "repo": "company/deploy-plugin"

154 },

155 "description": "Deployment automation tools"

156 }

157 ]

158}

159```

160 

161<h2 id="marketplace-schema">

162 Skema marketplace

163</h2>

164 

165<h3 id="required-fields">

166 Field yang diperlukan

167</h3>

168 

169| Field | Type | Deskripsi | Contoh |

170| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------ |

171| `name` | string | Identifier marketplace dalam kebab-case, tanpa spasi, karakter kontrol, atau karakter pemformatan bidirectional. Ini menghadap publik: pengguna melihatnya saat memasang plugin (misalnya, `/plugin install my-tool@your-marketplace`). Setiap pengguna hanya dapat mendaftarkan satu marketplace per nama: menambahkan marketplace kedua dengan nama yang sama menggantikan yang pertama. Untuk menerbitkan beberapa plugin di bawah satu nama marketplace, daftarkan semuanya dalam satu [`marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |

172| `owner` | object | Informasi pengelola marketplace. Lihat [Field pemilik](#owner-fields) | |

173| `plugins` | array | Daftar plugin yang tersedia | Lihat [Entri plugin](#plugin-entries) |

174 

175<Note>

176 **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`, `claude-tag-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.

177 

178 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](/docs/id/errors#marketplace-is-registered-from-an-untrusted-source). 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. Sebelum v2.1.265, `claude-tag-plugins` tidak dicadangkan.

179 

180 Anda juga tidak dapat memberi nama marketplace `npm`, `pip`, `uv`, `cargo`, `github`, atau `gh`, dalam huruf besar atau kecil apa pun. Pemeriksaan ini memerlukan Claude Code v2.1.275 atau lebih baru.

181</Note>

182 

183<h3 id="owner-fields">

184 Field pemilik

185</h3>

186 

187| Field | Type | Diperlukan | Deskripsi |

188| :------ | :----- | :--------- | :------------------------------------------ |

189| `name` | string | Ya | Nama pengelola atau tim |

190| `email` | string | Tidak | Email kontak untuk pengelola |

191| `url` | string | Tidak | Website, profil GitHub, atau URL organisasi |

192 

193<h3 id="optional-fields">

194 Field opsional

195</h3>

196 

197| Field | Type | Deskripsi |

198| :------------------------------------ | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

199| `$schema` | string | URL JSON Schema untuk autocomplete dan validasi editor. Claude Code mengabaikan field ini saat waktu muat. |

200| `description` | string | Deskripsi marketplace singkat |

201| `version` | string | Versi manifest marketplace |

202| `metadata.pluginRoot` | string | Direktori yang Claude Code selesaikan nama sumber plugin bare di bawahnya. Lihat [Jalur relatif](#relative-paths). Memerlukan Claude Code v2.1.239 atau lebih baru. |

203| `allowCrossMarketplaceDependenciesOn` | array | Marketplace lain yang plugin di marketplace ini dapat bergantung padanya. Dependensi dari marketplace yang tidak tercantum di sini diblokir saat instalasi. Lihat [Bergantung pada plugin dari marketplace lain](/docs/id/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

204| `renames` | object | Peta dari nama plugin `name` sebelumnya ke nama saat ini, atau ke `null` jika plugin dihapus. Memungkinkan pengguna yang ada untuk bermigrasi secara otomatis saat Anda mengganti nama atau menghapus entri di `plugins`. Lihat [Mengganti nama atau menghapus plugin](#rename-or-remove-a-plugin). Memerlukan Claude Code v2.1.193 atau lebih baru. |

205 

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

207 

208<h2 id="plugin-entries">

209 Entri plugin

210</h2>

211 

212Setiap entri plugin dalam array `plugins` mendeskripsikan plugin dan di mana menemukannya. Anda dapat menyertakan field apa pun dari [skema manifest plugin](/docs/id/plugins-reference#plugin-manifest-schema), seperti `description`, `version`, `author`, `commands`, dan `hooks`, ditambah field khusus marketplace ini: `source`, `category`, `tags`, `strict`, `relevance`, `headers`, dan `headersHelper`.

213 

214<h3 id="required-fields-2">

215 Field yang diperlukan

216</h3>

217 

218| Field | Type | Deskripsi |

219| :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| `name` | string | Identifier plugin dalam kebab-case, tanpa spasi, karakter kontrol, atau karakter pemformatan bidirectional. Ini menghadap publik: pengguna melihatnya saat memasang (misalnya, `/plugin install my-plugin@marketplace`). |

221| `source` | string\|object | Di mana mengambil plugin (lihat [Plugin sources](#plugin-sources) di bawah) |

222 

223<h3 id="optional-plugin-fields">

224 Field plugin opsional

225</h3>

226 

227**Field metadata standar:**

228 

229| Field | Type | Deskripsi |

230| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

231| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di permukaan UI. Ketika entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin. Dapat berisi spasi dan huruf apa pun. Tidak digunakan untuk namespacing atau pencarian. |

232| `description` | string | Deskripsi plugin singkat |

233| `version` | string | Versi plugin. Jika diatur (di sini atau di `plugin.json`), plugin disematkan ke string ini dan pengguna hanya menerima pembaruan saat berubah. Plugin dengan [`command` source](#command-sources) tidak disematkan oleh field mana pun. Juga bukan plugin [dimuat di tempat](/docs/id/plugins-reference#plugin-caching-and-file-resolution) dari marketplace yang ditambahkan sebagai direktori lokal. Jika tidak diatur di tempat mana pun, versi berasal dari sumber berikutnya dalam [version management](/docs/id/plugins-reference#version-management). |

234| `author` | object | Informasi penulis plugin (`name` diperlukan; `email` dan `url` opsional) |

235| `homepage` | string | URL homepage atau dokumentasi plugin |

236| `repository` | string | URL repositori kode sumber |

237| `license` | string | Identifier lisensi SPDX (misalnya, MIT, Apache-2.0) |

238| `keywords` | array | Tag untuk penemuan dan kategorisasi plugin |

239| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri, seperti data entitlement atau katalog. Claude Code tidak membacanya. Sebelum v2.1.222, `claude plugin validate` melaporkan kunci sebagai field yang tidak dikenali. |

240| `category` | string | Kategori plugin untuk organisasi |

241| `tags` | array | Tag untuk kemudahan pencarian |

242| `strict` | boolean | Mengontrol apakah `plugin.json` adalah otoritas untuk definisi komponen (default: true). Lihat [Strict mode](#strict-mode) di bawah. |

243| `relevance` | object | Sinyal yang memberi tahu Claude Code kapan harus menyarankan plugin ini kepada pengguna. Hanya berlaku untuk marketplace yang diizinkan administrator dalam pengaturan terkelola. Lihat [Recommend plugins for your org](/docs/id/plugin-relevance). |

244| `defaultEnabled` | boolean | Apakah plugin diaktifkan setelah pemasangan (default: true). Atur ke `false` untuk memasang plugin yang dinonaktifkan sampai pengguna memilih untuk mengaktifkannya. Mengambil alih field yang sama di `plugin.json` plugin. Lihat [Default enablement](/docs/id/plugins-reference#default-enablement). |

245 

246Baik entri maupun `plugin.json` plugin sendiri dapat menetapkan field tampilan `displayName`, `description`, `author`, `homepage`, `repository`, `license`, dan `keywords`. Dalam daftar plugin dan detail, sebelum dan sesudah pemasangan:

247 

248* Untuk field yang Anda tetapkan pada entri, pengguna melihat nilai entri, bahkan ketika `plugin.json` menetapkan yang berbeda.

249* Untuk field yang entri biarkan tidak diatur, pengguna melihat nilai `plugin.json`.

250 

251Sebelum pemasangan, Claude Code hanya dapat membaca `plugin.json` untuk entri dengan [sumber relative-path](#relative-paths), yang file pluginnya berada di dalam marketplace itu sendiri. Untuk entri dengan tipe sumber apa pun yang lain, pengguna hanya melihat field entri sendiri sampai mereka memasang plugin.

252 

253**Field konfigurasi komponen:**

254 

255| Field | Type | Deskripsi |

256| :----------- | :------------- | :------------------------------------------------------------ |

257| `skills` | string\|array | Jalur kustom ke direktori skill yang berisi `<name>/SKILL.md` |

258| `commands` | string\|array | Jalur kustom ke file skill `.md` datar atau direktori |

259| `agents` | string\|array | Jalur kustom ke file agent |

260| `hooks` | string\|object | Konfigurasi hooks kustom atau jalur ke file hooks |

261| `mcpServers` | string\|object | Konfigurasi MCP server atau jalur ke config MCP |

262| `lspServers` | string\|object | Konfigurasi LSP server atau jalur ke config LSP |

263 

264**Field autentikasi archive:**

265 

266Atur ini ketika entri memiliki [`archive` source](#zip-archives) di server yang memerlukan kredensial.

267 

268| Field | Type | Deskripsi |

269| :-------------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

270| `headers` | object | Header HTTP yang Claude Code kirimkan saat mengunduh archive entri ini. Menimpa header marketplace dengan nama yang sama. Memerlukan Claude Code v2.1.238 atau lebih baru. |

271| `headersHelper` | string | Perintah yang mencetak header HTTP untuk unduhan archive entri ini sebagai satu objek JSON, untuk kredensial yang kedaluwarsa. Lihat [Authenticate archive downloads](#authenticate-archive-downloads). Entri juga harus menetapkan [`"strict": false`](#strict-mode). Memerlukan Claude Code v2.1.238 atau lebih baru. |

272 

273<h2 id="plugin-sources">

274 Plugin sources

275</h2>

276 

277Plugin 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`.

278 

279Claude Code menyalin setiap plugin yang dipasang ke cache plugin lokal yang tersimpan di `~/.claude/plugins/cache`, kecuali plugin dimuat di tempat. Sebuah [`command` source dalam link mode](#copy-mode-and-link-mode) dimuat di tempat, dan begitu juga [relative path source](#relative-paths) dalam marketplace yang ditambahkan dari direktori lokal. Claude Code juga [memasang dependensi paket Node.js yang memenuhi syarat dari plugin](/docs/id/plugins-reference#node-js-package-dependencies) ke dalam salinan yang di-cache. Lihat [Plugin caching and file resolution](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk cara plugin yang dimuat di tempat dari marketplace direktori lokal mengambil edit Anda.

280 

281| Source | Type | Fields | Catatan |

282| ------------- | ----------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| Relative path | `string` (misalnya `"./my-plugin"`) | none | Direktori lokal dalam repo marketplace. Harus dimulai dengan `./`, kecuali Anda menulis [bare name di bawah `metadata.pluginRoot`](#relative-paths). Claude Code menyelesaikan jalur relatif terhadap root marketplace, bukan direktori `.claude-plugin/` |

284| `github` | object | `repo`, `ref?`, `sha?` | |

285| `url` | object | `url`, `ref?`, `sha?` | Sumber URL Git |

286| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirektori dalam repo git. Mengklon secara sparse untuk meminimalkan bandwidth untuk monorepo |

287| `npm` | object | `package`, `version?`, `registry?` | Paket npm, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |

288| `archive` | object | `url`, `sha256?` | Arsip zip yang diunduh melalui HTTPS. Berfungsi tanpa git atau npm di mesin pengguna. Memerlukan Claude Code v2.1.224 atau lebih baru |

289| `command` | object | `command`, `timeout?`, `mode?` | Direktori plugin yang dihasilkan dengan menjalankan perintah lokal, dijalankan kembali sekali per sesi untuk mengambil perubahan. Memerlukan Claude Code v2.1.229 atau lebih baru |

290 

291<Note>

292 **Marketplace sources vs plugin sources**: Ini adalah konsep berbeda yang mengontrol hal berbeda.

293 

294 * **Marketplace source**: di mana mengambil katalog `marketplace.json` itu sendiri. Diatur ketika pengguna menjalankan `/plugin marketplace add` atau dalam pengaturan `extraKnownMarketplaces`. Sumber marketplace berbasis Git mendukung `ref` (branch/tag) tetapi bukan `sha`.

295 * **Plugin source**: di mana mengambil plugin individual yang tercantum di marketplace. Diatur dalam field `source` dari setiap entri plugin di dalam `marketplace.json`. Sumber plugin berbasis Git mendukung baik `ref` (branch/tag) maupun `sha` (commit yang tepat).

296 

297 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.

298</Note>

299 

300Jenis 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.

301 

302Pada 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.

303 

304Jika Anda mendistribusikan plugin melalui **Organization settings > Plugins**, hanya beberapa jenis source yang diizinkan. Lihat [Distribute through organization settings](#distribute-through-organization-settings).

305 

306<h3 id="relative-paths">

307 Jalur relatif

308</h3>

309 

310Untuk plugin di repositori yang sama, gunakan jalur yang dimulai dengan `./`:

311 

312```json theme={null}

313{

314 "name": "my-plugin",

315 "source": "./plugins/my-plugin"

316}

317```

318 

319Jalur diselesaikan relatif terhadap root marketplace, yang merupakan direktori yang berisi `.claude-plugin/`. Sumber `./plugins/my-plugin` oleh karena itu 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. Di macOS dan Linux, Claude Code menolak entri jalur dengan backslash di mana pun melampaui `./` awal, jadi tulis pemisah sebagai `/` di setiap platform.

320 

321Bare name adalah nama direktori tunggal tanpa `/`, seperti `"formatter"`. Untuk menulis bare names alih-alih jalur `./`, atur [`metadata.pluginRoot`](#optional-fields) ke direktori tempat mereka diselesaikan. Dengan `"pluginRoot": "./plugins"`, Claude Code menyelesaikan `"source": "formatter"` ke `./plugins/formatter`. Memerlukan Claude Code v2.1.239 atau lebih baru.

322 

323`metadata.pluginRoot` itu sendiri harus berupa jalur relatif di dalam marketplace. Claude Code mengabaikannya untuk source yang sudah dimulai dengan `./`. Source yang berisi `/`, seperti `team-a/formatter`, bukan bare name dan masih memerlukan awalan `./`, bahkan ketika `metadata.pluginRoot` diatur.

324 

325<Note>

326 Claude Code menyelesaikan jalur relatif 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 Claude Code hanya mengunduh file itu. Untuk distribusi berbasis URL, gunakan [plugin source](#plugin-sources) lainnya sebagai gantinya. Lihat [Troubleshooting](#plugins-with-relative-paths-fail-in-url-based-marketplaces) untuk detail.

327</Note>

328 

329<h3 id="github-repositories">

330 Repositori GitHub

331</h3>

332 

333```json theme={null}

334{

335 "name": "github-plugin",

336 "source": {

337 "source": "github",

338 "repo": "owner/plugin-repo"

339 }

340}

341```

342 

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

344 

345```json theme={null}

346{

347 "name": "github-plugin",

348 "source": {

349 "source": "github",

350 "repo": "owner/plugin-repo",

351 "ref": "v2.0.0",

352 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

353 }

354}

355```

356 

357| Field | Type | Deskripsi |

358| :----- | :----- | :------------------------------------------------------------------------------- |

359| `repo` | string | Diperlukan. Repositori GitHub dalam format `owner/repo` |

360| `ref` | string | Opsional. Branch atau tag Git (default ke branch default repositori) |

361| `sha` | string | Opsional. SHA commit git 40-karakter penuh untuk menyematkan ke versi yang tepat |

362 

363<h3 id="git-repositories">

364 Repositori Git

365</h3>

366 

367```json theme={null}

368{

369 "name": "git-plugin",

370 "source": {

371 "source": "url",

372 "url": "https://gitlab.com/team/plugin.git"

373 }

374}

375```

376 

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

378 

379```json theme={null}

380{

381 "name": "git-plugin",

382 "source": {

383 "source": "url",

384 "url": "https://gitlab.com/team/plugin.git",

385 "ref": "main",

386 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

387 }

388}

389```

390 

391| Field | Type | Deskripsi |

392| :---- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

393| `url` | string | Diperlukan. URL repositori git lengkap (`https://` atau `git@`). Akhiran `.git` opsional, jadi URL Azure DevOps dan AWS CodeCommit tanpa akhiran berfungsi |

394| `ref` | string | Opsional. Branch atau tag Git (default ke branch default repositori) |

395| `sha` | string | Opsional. SHA commit git 40-karakter penuh untuk menyematkan ke versi yang tepat |

396 

397<h3 id="git-subdirectories">

398 Subdirektori Git

399</h3>

400 

401Gunakan `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.

402 

403```json theme={null}

404{

405 "name": "my-plugin",

406 "source": {

407 "source": "git-subdir",

408 "url": "https://github.com/acme-corp/monorepo.git",

409 "path": "tools/claude-plugin"

410 }

411}

412```

413 

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

415 

416```json theme={null}

417{

418 "name": "my-plugin",

419 "source": {

420 "source": "git-subdir",

421 "url": "https://github.com/acme-corp/monorepo.git",

422 "path": "tools/claude-plugin",

423 "ref": "v2.0.0",

424 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

425 }

426}

427```

428 

429Field `url` juga menerima shorthand GitHub (`owner/repo`) atau URL SSH (`git@github.com:owner/repo.git`).

430 

431| Field | Type | Deskripsi |

432| :----- | :----- | :----------------------------------------------------------------------------------------------- |

433| `url` | string | Diperlukan. URL repositori Git, shorthand GitHub `owner/repo`, atau URL SSH |

434| `path` | string | Diperlukan. Jalur subdirektori dalam repo yang berisi plugin (misalnya, `"tools/claude-plugin"`) |

435| `ref` | string | Opsional. Branch atau tag Git (default ke branch default repositori) |

436| `sha` | string | Opsional. SHA commit git 40-karakter penuh untuk menyematkan ke versi yang tepat |

437 

438<h3 id="npm-packages">

439 Paket npm

440</h3>

441 

442Sumber npm dapat menamai paket apa pun di registry npm publik atau di registry pribadi yang dihosting tim Anda. Claude Code menyelesaikan paket dengan klien npm Anda, mengunduh tarball, dan membukanya ke dalam cache plugin.

443 

444Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan.

445 

446Jika paket mengirimkan lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins-reference#node-js-package-dependencies) itu dalam langkah terpisah, juga dengan skrip dinonaktifkan. Jika tidak, publikasikan plugin dengan semua yang dibutuhkannya sudah dibangun. Server MCP yang memerlukan paket lain dapat diluncurkan melalui `npx`, yang memasangnya pada run pertama.

447 

448```json theme={null}

449{

450 "name": "my-npm-plugin",

451 "source": {

452 "source": "npm",

453 "package": "@acme/claude-plugin"

454 }

455}

456```

457 

458Untuk menyematkan ke versi tertentu, tambahkan field `version`:

459 

460```json theme={null}

461{

462 "name": "my-npm-plugin",

463 "source": {

464 "source": "npm",

465 "package": "@acme/claude-plugin",

466 "version": "2.1.0"

467 }

468}

469```

470 

471Untuk memasang dari registry pribadi atau internal, tambahkan field `registry`:

472 

473```json theme={null}

474{

475 "name": "my-npm-plugin",

476 "source": {

477 "source": "npm",

478 "package": "@acme/claude-plugin",

479 "version": "^2.0.0",

480 "registry": "https://npm.example.com"

481 }

482}

483```

484 

485| Field | Type | Deskripsi |

486| :--------- | :----- | :------------------------------------------------------------------------------------- |

487| `package` | string | Diperlukan. Nama paket atau paket scoped (misalnya, `@org/plugin`) |

488| `version` | string | Opsional. Versi atau rentang versi (misalnya, `2.1.0`, `^2.0.0`, `~1.5.0`) |

489| `registry` | string | Opsional. URL registry npm kustom. Default ke registry npm sistem (biasanya npmjs.org) |

490 

491<h3 id="zip-archives">

492 Zip archives

493</h3>

494 

495Gunakan `archive` untuk mendistribusikan plugin sebagai file zip yang Claude Code unduh melalui HTTPS, sehingga instalasi berfungsi tanpa git atau npm di mesin pengguna. Hosting file di server file statis apa pun atau repositori artefak, seperti bucket S3, repositori generik Artifactory, atau nginx. Memerlukan Claude Code v2.1.224 atau lebih baru. Pada versi v2.1.120 hingga v2.1.223, memasang plugin gagal dengan `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`; pada versi yang lebih lama, marketplace yang berisi entri `archive` gagal dimuat sepenuhnya.

496 

497Entri ini memasang plugin dari file zip di server artefak:

498 

499```json theme={null}

500{

501 "name": "my-plugin",

502 "source": {

503 "source": "archive",

504 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip"

505 }

506}

507```

508 

509Ketika Anda membuat zip, Anda dapat melakukan zip pada konten plugin secara langsung atau melakukan zip pada folder plugin itu sendiri. Claude Code mencari `.claude-plugin/` di bagian atas arsip, kemudian di dalam folder tingkat atas tunggal, jadi kedua tata letak memasang:

510 

511```text theme={null}

512my-plugin.zip my-plugin.zip

513├── .claude-plugin/ └── my-plugin/

514│ └── plugin.json ├── .claude-plugin/

515└── commands/ │ └── plugin.json

516 └── commands/

517```

518 

519Claude Code tidak mencari lebih dalam dari satu folder, jadi plugin yang bersarang lebih jauh gagal memasang. Claude Code menolak arsip yang lebih besar dari 256 MiB.

520 

521Untuk menyematkan file yang tepat, tambahkan field `sha256` dengan digest arsip:

522 

523```json theme={null}

524{

525 "name": "my-plugin",

526 "source": {

527 "source": "archive",

528 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip",

529 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

530 }

531}

532```

533 

534Jika file yang diunduh tidak cocok dengan pin, Claude Code menolak instalasi dan melaporkan [`Plugin archive integrity check failed`](/docs/id/errors#plugin-archive-integrity-check-failed).

535 

536Sumber arsip menerima field ini:

537 

538| Field | Type | Deskripsi |

539| :------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

540| `url` | string | Diperlukan. URL HTTPS dari arsip zip. Claude Code menolak URL `http://`, bersama dengan host loopback, link-local, dan cloud-metadata. Setiap hop redirect harus memenuhi aturan yang sama, atau Claude Code menolak unduhan |

541| `sha256` | string | Opsional. Digest SHA-256 dari arsip sebagai 64 karakter hex, huruf besar atau kecil. Claude Code memverifikasi setiap unduhan terhadapnya dan menolak instalasi pada ketidakcocokan |

542 

543Digest `sha256` juga berfungsi sebagai versi plugin ketika baik `plugin.json` maupun entri marketplace tidak mendeklarasikan satu. Lihat [Version management](/docs/id/plugins-reference#version-management). Jika Anda mendeklarasikan `version`, string versi itu adalah sinyal pembaruan, jadi setelah mengubah zip dan digestnya, tingkatkan versi juga, atau pengguna menyimpan salinan yang di-cache.

544 

545<h4 id="authenticate-archive-downloads">

546 Authenticate archive downloads

547</h4>

548 

549Untuk mengautentikasi unduhan arsip, seperti unduhan dari registry pribadi, atur header HTTP yang Claude Code kirim dengannya. Atur `headers` pada sumber `url` yang Anda daftarkan marketplace darinya, seperti entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces). Pada Claude Code v2.1.238 atau lebih baru, Anda dapat mengaturnya pada entri plugin sebagai gantinya, di samping `source`.

550 

551Jika nilai yang akan Anda masukkan di `headers` berumur pendek, seperti token yang registry Anda cetak atas permintaan, atur perintah `headersHelper` di tempat yang sama sebagai gantinya. Claude Code menjalankan perintah dan mengirim objek JSON yang dicetak sebagai header tempat itu. Memerlukan Claude Code v2.1.238 atau lebih baru.

552 

553Tempat yang Anda pilih menentukan unduhan mana yang mendapatkan header dan kapan Claude Code menjalankan perintah:

554 

555| Tempat | Unduhan yang mendapatkan header | Kapan Claude Code menjalankan `headersHelper` yang diatur di sana |

556| :----------------------- | :--------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

557| Sumber `url` marketplace | Unduhan arsip pada origin URL marketplace, berarti skema, host, dan port yang sama | Sebelum setiap pengambilan `marketplace.json` marketplace dan sebelum setiap unduhan arsip pada origin itu. Claude Code menggunakan kembali output satu run selama hingga 60 detik |

558| Entri plugin | Unduhan entri itu saja | Hanya ketika pengguna memasang atau memperbarui plugin itu saja dan [menerima perintah](#how-users-accept-a-headershelper-command) |

559 

560Di mana kedua tempat mengatur header dengan nama yang sama, Claude Code mengirim nilai entri. Dalam satu tempat, header yang dicetak perintah menimpa header dengan nama yang sama yang tercantum di `headers`.

561 

562<h5 id="add-a-headershelper-to-a-plugin-entry">

563 Add a headersHelper to a plugin entry

564</h5>

565 

566Entri ini mengatur `headersHelper` di samping `source`. Ini juga mengatur `"strict": false`, yang Claude Code perlukan dari entri `marketplace.json` yang mengatur `headersHelper`. Dengan [`"strict": false`](#strict-mode), entri marketplace adalah definisi lengkap plugin, jadi pengguna dapat meninjau apa yang berisi plugin sebelum menerima perintah:

567 

568```json theme={null}

569{

570 "name": "my-plugin",

571 "description": "Formatting commands for internal services",

572 "strict": false,

573 "commands": "./commands",

574 "source": {

575 "source": "archive",

576 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

577 },

578 "headersHelper": "/opt/bin/mint-registry-token.sh"

579}

580```

581 

582Untuk memeriksa entri, jalankan `claude plugin install my-plugin@your-marketplace`. Claude Code menunjukkan perintah dan URL arsip, dan mengunduh zip setelah Anda menerima.

583 

584Sebelum v2.1.238, Claude Code mengunduh arsip entri tanpa `headers` atau `headersHelper`-nya, jadi instalasi yang bergantung pada mereka gagal dengan `HTTP 401 while downloading plugin archive from`, diikuti oleh URL, dengan kode status registry di tempat 401.

585 

586<h4 id="write-the-headershelper-command">

587 Write the headersHelper command

588</h4>

589 

590Baik Anda mengatur `headersHelper` pada sumber `url` marketplace atau pada entri plugin, tulis perintah untuk memenuhi persyaratan ini:

591 

592* **Command text**: paling banyak 500 karakter ASCII yang dapat dicetak, tanpa run empat atau lebih spasi.

593* **Output**: cetak satu objek JSON dari nama header dan nilai string di stdout, kemudian keluar 0 dalam 10 detik.

594* **Shell dan working directory**: Claude Code menjalankan perintah melalui `sh`, atau `cmd.exe` di Windows, dari direktori konfigurasi, `~/.claude` atau [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars#variables). Berikan jalur absolut atau perintah di `PATH`, karena jalur relatif diselesaikan terhadap direktori itu, bukan proyek pengguna.

595* **Variables Claude Code removes**: dari lingkungan perintah yang diatur dalam entri `marketplace.json` atau dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, Claude Code menghapus setiap variabel yang namanya berisi kata seperti `TOKEN`, `SECRET`, `KEY`, atau `AUTH`, termasuk `ANTHROPIC_API_KEY`. Claude Code tidak menerapkan penghapusan ini pada perintah yang diatur dalam pengaturan pengguna, file `--settings`, atau pengaturan yang dikelola.

596* **Variables Claude Code sets**: `CLAUDE_CODE_MARKETPLACE_URL` dan `CLAUDE_CODE_MARKETPLACE_NAME` untuk perintah sumber `url`, dan `CLAUDE_CODE_PLUGIN_NAME` dan `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` untuk perintah entri. `CLAUDE_CODE_MARKETPLACE_NAME` tidak diatur pada pengambilan pertama setelah pengguna menambahkan marketplace berdasarkan URL, karena pengambilan itu adalah apa yang menyediakan nama.

597 

598Perintah yang mencetak token bearer mencetak objek seperti ini:

599 

600```json theme={null}

601{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

602```

603 

604<h4 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

605 When Claude Code skips a headersHelper command or drops its output

606</h4>

607 

608Claude Code tidak menjalankan perintah `headersHelper`, atau menjatuhkan header yang berasal dari `headers` atau dari output perintah, dalam situasi ini:

609 

610* **Command fails**: jika perintah keluar non-zero, berjalan melampaui 10 detik, atau mencetak apa pun selain objek JSON dari nilai string, Claude Code tidak membuat pengambilan atau unduhan yang menjalankan perintah untuk.

611* **Marketplace URL doesn't start with `https://`**: Claude Code tidak menjalankan perintah sumber `url` itu dan mengirim hanya header yang tercantum di field `headers`-nya.

612* **Redirect leaves the origin**: ketika unduhan dialihkan dari origin URL arsip, Claude Code menjatuhkan nilai `headers` dan output perintah dari sumber `url` marketplace dan entri plugin.

613* **Entry sets a routing or identity header**: Claude Code menjatuhkan nama perutean permintaan dan identitas klien seperti `Host`, `Cookie`, dan `X-Forwarded-*` dari `headers` entri dan output perintah, dan menyimpan nama autentikasi seperti `Authorization`. Claude Code memfilter setiap entri `marketplace.json` dengan cara ini, dan entri [inline settings](/docs/id/settings-reference#extraknownmarketplaces) tergantung file mana yang mendeklarasikannya.

614* **Command set in an `--add-dir` directory's settings**: Claude Code mengabaikannya, pada sumber `url` dan pada [entri plugin inline](/docs/id/settings-reference#extraknownmarketplaces) sama-sama, dan mengirim hanya `headers` file itu.

615* **Managed settings block the command**: mengatur [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) ke `true` memblokir perintah `headersHelper`, dan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) juga memblokir mereka kecuali `disableCommandPluginSources` secara eksplisit `false`. Di bawah blok mana pun, Claude Code masih menjalankan perintah untuk marketplace yang pengaturan yang dikelola sendiri deklarasikan.

616 

617<h4 id="how-users-accept-a-headershelper-command">

618 How users accept a headersHelper command

619</h4>

620 

621Pengguna menerima perintah entri plugin setiap kali mereka memasang atau memperbarui plugin itu saja, dari tampilan plugin sendiri di `/plugin` atau dengan `claude plugin install` atau `claude plugin update`. Claude Code menunjukkan perintah dan URL arsip, dan menjalankan perintah hanya setelah pengguna menerima.

622 

623Dalam shell non-interaktif, teruskan [`--yes`](/docs/id/plugins-reference#plugin-install) untuk menerimanya. Untuk menerima hanya perintah yang run `--json` sebelumnya ditampilkan, teruskan [`--accept-command`](/docs/id/plugins-reference#plugin-install) dengan `sha256` yang dilaporkan run.

624 

625Claude Code menjalankan hanya perintah yang ditunjukkan, untuk URL arsip yang ditunjukkan. Jika perintah entri atau URL arsip berubah di antara, Claude Code menolak instalasi atau pembaruan. Perubahan dalam string kueri saja tidak dihitung.

626 

627<h5 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

628 Installs and updates that refuse the command instead of asking

629</h5>

630 

631Pada operasi apa pun selain instalasi atau pembaruan plugin tunggal, Claude Code tidak menjalankan perintah entri atau mengunduh arsipnya, jadi plugin tetap pada versi yang dipasang atau tetap tidak dipasang. Apa yang dilihat pengguna tergantung pada operasi:

632 

633* **Installing several plugins at once, from a plugin suggestion, or as another plugin's dependency**: Claude Code menolak plugin yang memiliki perintah dan menunjukkan pengguna pada tampilan plugin itu sendiri di `/plugin`. Plugin lain dalam instalasi massal masih memasang. Plugin yang bergantung pada plugin yang ditolak gagal memasang sampai pengguna memasang plugin yang ditolak itu sendiri.

634* **Background auto-update, or session start for a plugin whose archive was never downloaded**: Claude Code mencantumkan plugin di tab `/plugin` Errors sehingga pengguna tahu untuk memasang atau memperbarui itu dengan tangan. Pembaruan otomatis yang menemukan entri masih mengiklankan versi yang dipasang mencantumkan tidak ada.

635 

636<h5 id="when-a-marketplace-url-source’s-command-runs">

637 When a marketplace `url` source's command runs

638</h5>

639 

640`headersHelper` sumber `url` marketplace dideklarasikan dalam file pengaturan, seperti entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces), daripada dalam katalog yang dipublikasikan marketplace, jadi Claude Code tidak meminta pengguna untuk menerimanya pada setiap instalasi atau pembaruan. File pengaturan yang mendeklarasikannya menentukan kapan Claude Code menjalankannya:

641 

642| File pengaturan | Kapan Claude Code menjalankan perintah |

643| :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

644| Pengaturan pengguna, file `--settings`, atau file pengaturan yang dikelola pada mesin | Tanpa bertanya, termasuk selama penyegaran marketplace latar belakang |

645| `.claude/settings.json` atau `.claude/settings.local.json` proyek | Hanya setelah pengguna menerima [dialog kepercayaan workspace](/docs/id/permissions#what-runs-before-you-trust-a-folder) untuk folder itu sendiri. Sesi `-p` atau SDK tidak dihitung sebagai menerimanya, dan juga tidak kepercayaan yang diberikan ke folder induk |

646| Pengaturan yang dikelola server | Hanya setelah pengguna menyetujui pengaturan yang dikirimkan dalam [dialog persetujuan keamanan](/docs/id/server-managed-settings#security-approval-dialogs) |

647 

648Dalam sesi `-p` atau SDK, Claude Code tidak dapat menunjukkan dialog persetujuan keamanan. Ini menerapkan pengaturan yang dikirimkan lainnya, tetapi pengambilan marketplace, dan unduhan arsip apa pun yang memerlukan perintah, gagal sampai pengguna telah menyetujui dalam sesi interaktif.

649 

650Untuk [entri plugin inline](/docs/id/settings-reference#extraknownmarketplaces) dalam salah satu file ini, Claude Code memerlukan kepercayaan folder atau persetujuan pengaturan yang sama seperti untuk perintah tingkat marketplace dalam file itu, dan pengguna juga menerima perintah entri pada setiap instalasi atau pembaruan.

651 

652<h3 id="command-sources">

653 Command sources

654</h3>

655 

656Gunakan `command` ketika alat yang dipasang secara lokal menghasilkan direktori plugin, seperti IDE yang merender plugin untuk toolchain yang saat ini dipilih. Claude Code menjalankan perintah ketika pengguna memasang plugin dan menjalankannya kembali di latar belakang sekali per sesi, jadi pengguna Anda mengambil output alat yang berubah tanpa memasang ulang. Memerlukan Claude Code v2.1.229 atau lebih baru. Pada v2.1.120 hingga v2.1.228, memasang plugin gagal dengan `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`, dan pada versi yang lebih lama seluruh marketplace gagal dimuat.

657 

658Entri ini memasang plugin dari direktori apa pun yang dicetak alat:

659 

660```json theme={null}

661{

662 "name": "my-plugin",

663 "source": {

664 "source": "command",

665 "command": "my-tool claude-plugin-path"

666 }

667}

668```

669 

670Claude Code menjalankan perintah melalui shell platform, `sh` di macOS dan Linux atau `cmd.exe` di Windows, dari direktori home pengguna. Perintah harus mencetak tepat satu baris di stdout dan keluar dengan kode 0. Baris itu adalah jalur absolut dari direktori yang berisi plugin lengkap pada saat perintah keluar, dan jalur dapat berubah antara run.

671 

672Claude Code menghentikan perintah yang berjalan lebih lama dari `timeout` detik, dan instalasi atau pembaruan gagal. Claude Code juga menolak jalur yang dicetak dalam kasus ini, dan instalasi atau pembaruan gagal dengan cara yang sama:

673 

674* Direktori tidak memiliki konten plugin di tingkat atasnya, seperti direktori `.claude-plugin/` atau direktori `skills/`, `commands/`, `agents/`, atau `hooks/`

675* Direktori adalah yang Claude Code dimulai, atau salah satu induknya

676* Di Windows, jalur adalah jalur UNC

677 

678Sumber perintah menerima field ini:

679 

680| Field | Type | Deskripsi |

681| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

682| `command` | string | Diperlukan. Perintah shell yang mencetak jalur absolut direktori plugin sebagai baris tunggal di stdout dan keluar 0. Harus ASCII yang dapat dicetak, paling banyak 500 karakter, tanpa run empat atau lebih spasi, sehingga pengguna dapat meninjau seluruh perintah yang mereka diminta untuk menerima |

683| `timeout` | number | Opsional. Jumlah detik keseluruhan untuk menunggu perintah sebelum menyerah (default: 60, maksimum: 600) |

684| `mode` | string | Opsional. `"copy"` (default) menyalin direktori yang dicetak ke cache plugin. `"link"` menggunakan direktori yang dicetak di tempat. Lihat [Copy mode and link mode](#copy-mode-and-link-mode) |

685 

686<h4 id="copy-mode-and-link-mode">

687 Copy mode and link mode

688</h4>

689 

690Dengan default `"mode": "copy"`, Claude Code menyalin direktori yang dicetak ke cache plugin yang tersimpan dan menurunkan [versi plugin](/docs/id/plugins-reference#version-management) dari hash konten direktori. Alat Anda dapat menghapus atau menulis ulang direktori setelah perintah keluar, dan re-run yang menghasilkan konten identik dihitung sebagai terkini. Claude Code menolak untuk memasang direktori yang lebih besar dari 256 MiB atau berisi lebih dari 20.000 entri.

691 

692Atur `"mode": "link"` untuk direktori plugin besar yang tidak boleh disalin, seperti ekspor SDK yang dirender. Claude Code mengisi entri cache plugin dengan link ke setiap entri tingkat atas dari direktori yang dicetak dan menggunakan file di tempat, jadi tidak ada yang disalin, konten file tidak di-hash, dan batas ukuran tidak berlaku. Instalasi gagal jika entri tingkat atas adalah symlink yang menunjuk di luar direktori yang dicetak. Claude Code juga melewati [instalasi dependensi paket Node.js](/docs/id/plugins-reference#node-js-package-dependencies) untuk plugin mode link, jadi cetak direktori yang sudah berisi `node_modules` apa pun yang dibutuhkan plugin.

693 

694Simpan direktori yang dicetak di tempat selama plugin tetap dipasang, karena Claude Code memuat plugin melalui link itu di setiap startup. Claude Code menurunkan [versi plugin](/docs/id/plugins-reference#version-management) dari jalur nyata direktori yang dicetak dan entri tingkat atasnya, bukan file di dalamnya, jadi cetak jalur berbeda untuk menandakan konten baru. Dalam sesi yang dimulai di direktori yang dicetak atau di mana pun di bawahnya, Claude Code tidak memuat plugin sama sekali.

695 

696Claude Code tidak mendukung mode link di Windows dan menolak untuk memasang plugin mode link di sana. Deklarasikan `"mode": "copy"` sebagai gantinya.

697 

698<h4 id="how-users-accept-the-command">

699 How users accept the command

700</h4>

701 

702Claude Code menjalankan perintah Anda di mesin pengguna, jadi mengikat setiap run ke penerimaan eksplisit pengguna:

703 

704* Ketika pengguna memasang plugin dari layar detailnya di `/plugin`, atau memasang atau memperbarui dengan `claude plugin install` atau `claude plugin update` di terminal interaktif, Claude Code menunjukkan string perintah yang tepat terlebih dahulu dan mencatat perintah yang diterima untuk instalasi itu. `claude plugin update` yang dapat dilanjutkan pada penerimaan perintah yang sama menunjukkan tidak ada.

705* Dalam shell non-interaktif, seperti skrip provisioning, teruskan `--yes` ke `claude plugin install` atau `claude plugin update` untuk menerima perintah yang dicetak. Untuk menerima hanya perintah yang run `--json` sebelumnya ditampilkan, teruskan [`--accept-command`](/docs/id/plugins-reference#plugin-install) dengan `sha256` yang dilaporkan run.

706* Setiap jalur lain menjalankan hanya perintah yang sudah diterima pengguna. Ini termasuk pembaruan yang dimulai dari `/plugin` dan run latar belakang yang dijelaskan dalam [When Claude Code re-runs the command](#when-claude-code-re-runs-the-command). Ketika tidak ada yang diterima, Claude Code menolak untuk menjalankan perintah dan memberi tahu pengguna cara meninjau. Claude Code tidak pernah memasang plugin bersumber perintah sebagai dependensi plugin lain, jadi pengguna memasangnya sendiri terlebih dahulu.

707* Jika Anda mengubah `command` entri, atau beralih `mode`-nya, pengguna menyimpan versi yang sudah mereka miliki dan Claude Code berhenti menjalankan perintah kembali. Dalam sesi interaktif, tab `/plugin` Errors menunjukkan perintah baru sampai pengguna meninjau dan menerimanya dengan menjalankan `claude plugin update <plugin>@<marketplace>`.

708 

709Administrator dapat memblokir sumber perintah di seluruh organisasi dengan pengaturan yang dikelola [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources). Jika organisasi mengatur [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly), Claude Code memblokir sumber perintah secara default.

710 

711<h4 id="when-claude-code-re-runs-the-command">

712 When Claude Code re-runs the command

713</h4>

714 

715Direktori yang dicetak mencerminkan keadaan alat pada saat perintah berjalan, jadi Claude Code menjalankan perintah lagi pada waktu ini:

716 

717* Setiap kali pengguna memasang atau memperbarui plugin

718* Sekali per sesi untuk setiap plugin bersumber perintah yang diaktifkan, di latar belakang, segera setelah sesi dimulai. Run ini tidak melalui pembaruan marketplace otomatis, jadi tidak bergantung pada [pengaturan pembaruan otomatis](/docs/id/discover-plugins#configure-auto-updates) marketplace

719* Pada startup atau di `/reload-plugins`, ketika versi yang dipasang plugin yang diaktifkan hilang dari cache plugin

720 

721Claude Code melewati dua run latar belakang ketika pengguna mengatur [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars). Instalasi dan pembaruan eksplisit masih menjalankan perintah dengan variabel itu diatur.

722 

723Ketika output yang di-hash perintah telah berubah, Claude Code memasang hasilnya sebagai versi baru dan memuat ulang dalam sesi interaktif yang berjalan, beralih [komponen yang sama yang `/reload-plugins` beralih](/docs/id/plugins-reference#environment-variables). Pengguna melihat notifikasi bahwa plugin dimuat ulang. Jika memuat ulang di tempat akan membatalkan cache prompt sesi, Claude Code malah meminta pengguna untuk menjalankan `/reload-plugins`, yang [memperingatkan tentang biaya cache dan menerapkan ketika dijalankan kembali dengan `--force`](/docs/id/prompt-caching#enabling-or-disabling-a-plugin).

724 

725<h3 id="advanced-plugin-entries">

726 Entri plugin lanjutan

727</h3>

728 

729Contoh ini menunjukkan entri plugin menggunakan banyak field opsional, termasuk jalur kustom untuk commands, agents, hooks, dan MCP servers:

730 

731```json theme={null}

732{

733 "name": "enterprise-tools",

734 "source": {

735 "source": "github",

736 "repo": "company/enterprise-plugin"

737 },

738 "description": "Enterprise workflow automation tools",

739 "version": "2.1.0",

740 "author": {

741 "name": "Enterprise Team",

742 "email": "enterprise@example.com"

743 },

744 "homepage": "https://docs.example.com/plugins/enterprise-tools",

745 "repository": "https://github.com/company/enterprise-plugin",

746 "license": "MIT",

747 "keywords": ["enterprise", "workflow", "automation"],

748 "category": "productivity",

749 "commands": [

750 "./commands/core/",

751 "./commands/enterprise/",

752 "./commands/experimental/preview.md"

753 ],

754 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

755 "hooks": {

756 "PostToolUse": [

757 {

758 "matcher": "Write|Edit",

759 "hooks": [

760 {

761 "type": "command",

762 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

763 }

764 ]

765 }

766 ]

767 },

768 "mcpServers": {

769 "enterprise-db": {

770 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

771 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

772 }

773 },

774 "strict": false

775}

776```

777 

778Hal-hal penting untuk diperhatikan:

779 

780* **`commands` dan `agents`**: Anda dapat menentukan beberapa direktori atau file individual. Jalur relatif terhadap root plugin dan harus tetap di dalamnya.

781 * Claude Code menolak jalur yang diselesaikan di luar direktori plugin, seperti `./../shared.md`, dengan error [`path escapes plugin directory`](/docs/id/errors#path-escapes-plugin-directory), dan masih memuat plugin tanpa komponen itu

782* **`${CLAUDE_PLUGIN_ROOT}`**: gunakan variabel ini dalam perintah hook dan config MCP server untuk mereferensikan file dalam direktori instalasi plugin.

783 * Lihat [tabel substitusi](/docs/id/plugins-reference#environment-variables) untuk field config mana yang mensubstitusinya per tipe server

784 * Untuk dependensi atau state yang harus bertahan pembaruan plugin, gunakan [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins-reference#persistent-data-directory) sebagai gantinya

785* **`strict: false`**: Karena ini diatur ke false, plugin tidak memerlukan `plugin.json` sendiri. Entri marketplace mendefinisikan semuanya. Lihat [Strict mode](#strict-mode) di bawah.

786 

787Secara default, skills plugin dimuat dari direktori `skills/` di bawah `source`-nya. Jalur yang tercantum dalam field `skills` menambah pemindaian itu:

788 

789```json theme={null}

790"skills": ["./skills/", "./extra-skills/"]

791```

792 

793Ketika beberapa entri plugin berbagi satu folder `skills/` di root marketplace (`source: "./"`), cantumkan subdirektori spesifik sebagai gantinya sehingga setiap entri hanya memuat skills-nya sendiri:

794 

795```json theme={null}

796"source": "./",

797"skills": ["./skills/code-review", "./skills/docs"]

798```

799 

800Dengan 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.

801 

802<h3 id="strict-mode">

803 Strict mode

804</h3>

805 

806Field `strict` mengontrol apakah `plugin.json` adalah otoritas untuk definisi komponen (skills, agents, hooks, MCP servers, output styles).

807 

808| Value | Perilaku |

809| :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |

810| `true` (default) | `plugin.json` adalah otoritas. Entri marketplace dapat melengkapinya dengan komponen tambahan, dan kedua sumber digabungkan. |

811| `false` | Entri marketplace adalah definisi lengkap. Jika plugin juga memiliki `plugin.json` yang mendeklarasikan komponen, itu adalah konflik dan plugin gagal dimuat. |

812 

813**Kapan menggunakan setiap mode:**

814 

815* **`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.

816* **`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.

817 

818<h2 id="host-and-distribute-marketplaces">

819 Host dan distribusikan marketplace

820</h2>

821 

822Ketika pengguna menambahkan marketplace yang dihosting di repositori git, atau memasang plugin berbasis git yang tercantum, Claude Code mengklon repositori marketplace atau plugin itu ke mesin mereka. Klon tidak pernah mengunduh konten [Git LFS](https://git-lfs.com), jadi file yang dilacak LFS tiba sebagai file pointer. Jaga file yang dibutuhkan plugin Anda keluar dari LFS.

823 

824<h3 id="host-on-github-recommended">

825 Host di GitHub (direkomendasikan)

826</h3>

827 

828GitHub adalah cara yang direkomendasikan untuk host dan distribusikan marketplace:

829 

8301. **Buat repositori**: siapkan repositori baru untuk marketplace Anda

8312. **Tambahkan file marketplace**: buat `.claude-plugin/marketplace.json` dengan definisi plugin Anda

8323. **Bagikan dengan tim**: pengguna menambahkan marketplace Anda dengan `/plugin marketplace add owner/repo`

833 

834**Manfaat**: kontrol versi bawaan, pelacakan masalah, dan fitur kolaborasi tim.

835 

836<h3 id="host-on-other-git-services">

837 Host di layanan git lainnya

838</h3>

839 

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

841 

842```shell theme={null}

843/plugin marketplace add https://gitlab.com/company/plugins.git

844```

845 

846<h3 id="private-repositories">

847 Repositori pribadi

848</h3>

849 

850Claude Code mendukung pemasangan plugin dari repositori pribadi. Jika Anda mendistribusikan marketplace Anda melalui [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) sebagai gantinya, kredensial git Anda tidak terlibat: sinkronisasi organisasi membaca repositori marketplace melalui koneksi GitHub atau GitLab organisasi Anda di claude.ai. Lihat [Distribusikan melalui pengaturan organisasi](#distribute-through-organization-settings) untuk sumber plugin mana yang dapat bersifat pribadi.

851 

852<h4 id="commands-you-run">

853 Perintah yang Anda jalankan

854</h4>

855 

856Ketika Anda menjalankan `/plugin marketplace add`, `/plugin install`, `/plugin update`, atau `/plugin marketplace update`, 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`](/docs/id/env-vars#variables) untuk mengklonnya melalui HTTPS sebagai gantinya.

857 

858<h4 id="background-auto-updates">

859 Pembaruan otomatis latar belakang

860</h4>

861 

862Pemeriksaan refresh latar belakang memeriksa remote marketplace untuk commit baru dengan helper kredensial git yang dikonfigurasi, sama seperti perintah yang Anda jalankan. Untuk remote SSH, kunci yang dimuat di `ssh-agent` mengautentikasi pemeriksaan. Claude Code menjalankan pemeriksaan secara non-interaktif: ia mematikan prompt terminal git dan program askpass, dan memberitahu helper kredensial untuk tidak meminta. Apakah pemeriksaan dapat mengautentikasi ke repositori pribadi melalui HTTPS tergantung pada helper Anda:

863 

864* Helper yang dapat menyediakan kredensial yang disimpan tanpa meminta mengautentikasi pemeriksaan. Git Credential Manager, helper Keychain macOS, dan `git-credential-store` bekerja dengan cara ini setelah mereka menyimpan kredensial untuk host.

865* Helper yang perlu meminta Anda tidak dapat menjawab di latar belakang. Pembaruan gagal diam-diam dan checkout yang ada tetap di tempat, jadi plugin Anda terus bekerja dari status terakhir yang disinkronkan. Jalankan `/plugin marketplace update <name>` untuk menyegarkan marketplace dengan kredensial Anda.

866 

867Ketika pemeriksaan menemukan checkout up to date, Claude Code meninggalkannya apa adanya. Ketika pemeriksaan menemukan commit baru, atau gagal karena tidak dapat menjangkau atau mengautentikasi ke remote, Claude Code mengklon marketplace lagi dan menukar klon baru. Jika klon itu gagal, checkout yang ada tetap di tempat. Pengklonaan ulang dapat [time out pada repositori besar](#git-operations-time-out).

868 

869Dua pengaturan membuat marketplace pribadi berperilaku dapat diprediksi:

870 

871* Atur `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` untuk menyimpan checkout yang ada tanpa mencoba pengklonaan ulang ketika pemeriksaan latar belakang tidak dapat menjangkau atau mengautentikasi ke remote. Plugin Anda terus bekerja dari status terakhir yang disinkronkan, dan pembaruan manual dengan `/plugin marketplace update` masih mengautentikasi dengan kredensial Anda.

872* Konfigurasikan helper kredensial git, misalnya dengan `gh auth setup-git` untuk GitHub, sehingga pemeriksaan latar belakang dan pengklonaan ulang dapat mengautentikasi tanpa meminta.

873 

874Menetapkan 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`.

875 

876<Note>

877 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.

878</Note>

879 

880<h3 id="distribute-through-organization-settings">

881 Distribusikan melalui pengaturan organisasi

882</h3>

883 

884Jika Anda mendistribusikan plugin melalui [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) pada paket Team atau Enterprise, aturan sumber ini berlaku:

885 

886* Di github.com dan gitlab.com, repositori marketplace harus bersifat pribadi atau internal. Sinkronisasi organisasi membaca repositori melalui koneksi yang cocok dengan hostnya:

887 * **github.com**: Claude GitHub App

888 * **Host GitHub Enterprise Server Anda**: [GitHub Enterprise App](/docs/id/github-enterprise-server#admin-setup) organisasi Anda

889 * **gitlab.com atau instance GitLab yang dikelola sendiri Anda**: token akses dalam [konfigurasi GitLab](#sync-a-gitlab-hosted-marketplace) organisasi Anda untuk host itu

890* Setiap sumber plugin harus bertipe `github`, `url`, atau `git-subdir`, atau [jalur relatif](#relative-paths) yang dimulai dengan `./`. Jika Anda membuat daftar plugin berdasarkan nama kosong di bawah `metadata.pluginRoot`, sinkronisasi organisasi menolaknya sebagai sumber yang tidak didukung, jadi tuliskan jalurnya, seperti `./plugins/deploy-tools`.

891* Sumber plugin dapat bersifat pribadi dalam tiga kasus:

892 * Sumber github.com yang berbagi pemilik repositori marketplace

893 * Sumber di host GitHub Enterprise organisasi Anda dengan GHE App yang dipasang di repositori

894 * Sumber `url` atau `git-subdir` di host GitLab yang sama dengan repositori marketplace. Di gitlab.com, sumber juga harus berada di bawah grup tingkat atas atau namespace pengguna yang sama dengan repositori marketplace.

895* Sumber plugin lainnya harus berupa repositori publik di github.com, gitlab.com, atau bitbucket.org, yang diambil sinkronisasi organisasi tanpa kredensial. Sinkronisasi organisasi menolak sumber plugin di host yang tidak dicakup aturan ini.

896 

897Lihat [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) untuk alur kerja admin.

898 

899Untuk menyertakan plugin pribadi, tempatkan folder plugin di dalam repositori marketplace dan referensikan dengan [jalur relatif](#relative-paths). Sinkronisasi organisasi mengemas setiap plugin selama distribusi, jadi pengguna tidak pernah memerlukan akses ke repositori sumber terpisah.

900 

901Misalnya, entri plugin `marketplace.json` ini mereferensikan plugin yang Anda komit di `plugins/deploy-tools` dalam repositori marketplace:

902 

903```json theme={null}

904{

905 "name": "deploy-tools",

906 "source": "./plugins/deploy-tools"

907}

908```

909 

910<h4 id="sync-a-gitlab-hosted-marketplace">

911 Sinkronkan marketplace yang dihosting GitLab

912</h4>

913 

914Untuk menyinkronkan marketplace dari gitlab.com atau instance GitLab yang dikelola sendiri, [Owner](/docs/id/server-managed-settings#access-control) terlebih dahulu menambahkan konfigurasi GitLab untuk host itu di [**Organization settings > Claude Code**](https://claude.ai/admin-settings/claude-code). Konfigurasi GitLab dalam beta publik dan hanya berlaku untuk sinkronisasi marketplace plugin. Menambahkan satu tidak membuat repositori GitLab tersedia di [Claude Code di web](/docs/id/claude-code-on-the-web#limitations). Lihat [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) untuk langkah-langkah setup.

915 

916Ketika Anda menambahkan marketplace, masukkan URL HTTPS proyek, seperti `https://gitlab.example.com/platform/claude-plugins`. Proyek dalam subgrup bersarang berfungsi. Sinkronisasi organisasi membaca cabang default proyek. Jika Anda mengaktifkan **Sync automatically**, hanya push ke cabang default yang memulai sinkronisasi.

917 

918<h4 id="keep-executables-out-of-the-top-level-bin-directory">

919 Jaga executable keluar dari direktori bin tingkat atas

920</h4>

921 

922Jangan sertakan direktori `bin/` tingkat atas dalam plugin apa pun yang Anda distribusikan melalui pengaturan organisasi. claude.ai menolak plugin yang memilikinya, baik plugin tiba melalui sinkronisasi marketplace atau unggahan langsung:

923 

924* **Sinkronisasi marketplace**: sinkronisasi organisasi menolak plugin itu dan menyinkronkan sisa marketplace. Pesan kesalahan dimulai dengan `Plugin contains a top-level bin/ directory`.

925* **Unggahan langsung**: jika Anda mengunggah plugin di [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins) sebagai gantinya, claude.ai menolak unggahan dengan pesan yang sama.

926 

927Jaga executable di direktori lain, seperti `scripts/`, dan referensikan sebagai `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` dari [skills, hooks, atau konfigurasi server MCP](/docs/id/plugins-reference#environment-variables) Anda.

928 

929<h3 id="require-marketplaces-for-your-team">

930 Wajibkan marketplace untuk tim Anda

931</h3>

932 

933Anda dapat mengonfigurasi repositori Anda sehingga Claude Code menambahkan marketplace Anda untuk anggota tim sekali mereka [mempercayai folder proyek](/docs/id/permissions#what-runs-before-you-trust-a-folder), tanpa prompt terpisah. Tambahkan marketplace Anda ke `.claude/settings.json`:

934 

935```json theme={null}

936{

937 "extraKnownMarketplaces": {

938 "company-tools": {

939 "source": {

940 "source": "github",

941 "repo": "your-org/claude-plugins"

942 }

943 }

944 }

945}

946```

947 

948Anda juga dapat menentukan plugin mana yang harus diaktifkan secara default:

949 

950```json theme={null}

951{

952 "enabledPlugins": {

953 "code-formatter@company-tools": true,

954 "deployment-tools@company-tools": true

955 }

956}

957```

958 

959Untuk opsi konfigurasi lengkap, lihat [Plugin settings](/docs/id/settings-reference#plugin-settings).

960 

961<Note>

962 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.

963</Note>

964 

965<h3 id="pre-populate-plugins-for-containers">

966 Pra-isi plugin untuk container

967</h3>

968 

969Untuk 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.

970 

971Untuk 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.

972 

973Direktori seed mencerminkan struktur `~/.claude/plugins`:

974 

975```

976$CLAUDE_CODE_PLUGIN_SEED_DIR/

977 known_marketplaces.json

978 marketplaces/<name>/...

979 cache/<marketplace>/<plugin>/<version>/...

980```

981 

982Untuk 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.

983 

984Untuk melewati langkah copy, atur `CLAUDE_CODE_PLUGIN_CACHE_DIR` ke jalur target seed Anda selama build sehingga plugin dipasang langsung ke sana:

985 

986```bash theme={null}

987CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

988CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

989```

990 

991Kemudian atur `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` di lingkungan runtime container Anda sehingga Claude Code membaca dari seed saat startup.

992 

993Saat 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`.

994 

995Detail perilaku:

996 

997* **Read-only**: Claude Code tidak pernah menulis ke direktori seed.

998* **Auto-updates disabled**: marketplace seed tidak auto-update.

999* **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.

1000* **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.

1001* **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.

1002* **Komposisi dengan pengaturan**: jika `extraKnownMarketplaces` atau `enabledPlugins` mendeklarasikan marketplace yang sudah ada di seed, Claude Code menggunakan salinan seed alih-alih mengklon.

1003 

1004<h3 id="managed-marketplace-restrictions">

1005 Pembatasan marketplace yang dikelola

1006</h3>

1007 

1008Untuk organisasi yang memerlukan kontrol ketat atas sumber plugin, administrator dapat membatasi marketplace plugin mana yang diizinkan pengguna untuk tambahkan menggunakan pengaturan [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dalam pengaturan yang dikelola. Untuk juga menolak flag CLI yang sideload plugin, agen, dan server MCP untuk satu kali jalankan, pasangkan dengan [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags). Untuk allowlist marketplace mana yang plugin-nya dapat muncul sebagai saran instalasi kontekstual, atur [`pluginSuggestionMarketplaces`](/docs/id/settings-reference#pluginsuggestionmarketplaces).

1009 

1010`strictKnownMarketplaces` cocok dengan marketplace tempat plugin berasal, bukan entri di dalamnya, jadi pengguna masih dapat memasang plugin dengan [sumber `command`](#command-sources) dari marketplace yang diizinkan. Untuk memblokir sumber command juga, atur [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources).

1011 

1012Ketika `strictKnownMarketplaces` dikonfigurasi dalam pengaturan yang dikelola, perilaku pembatasan tergantung pada nilainya:

1013 

1014| Value | Perilaku |

1015| --------------------------- | ------------------------------------------------------------------------------------------- |

1016| Tidak terdefinisi (default) | Tidak ada pembatasan. Pengguna dapat menambahkan marketplace apa pun |

1017| Array kosong `[]` | Lockdown lengkap. Memblokir setiap sumber marketplace, termasuk marketplace Anthropic resmi |

1018| Daftar sumber | Allowlist diterapkan. Pengguna hanya dapat menambahkan marketplace yang cocok dengan entri |

1019 

1020<h4 id="common-configurations">

1021 Konfigurasi umum

1022</h4>

1023 

1024Nonaktifkan semua penambahan marketplace, termasuk marketplace Anthropic resmi:

1025 

1026```json theme={null}

1027{

1028 "strictKnownMarketplaces": []

1029}

1030```

1031 

1032Claude Code mengunduh plugin [disinkronkan dari claude.ai](/docs/id/plugins-reference#synced-plugins) dari akun Anda daripada dari marketplace, jadi lockdown ini tidak mencakupnya. Untuk menghentikan yang juga, atur [`syncClaudeAiPlugins`](/docs/id/settings-reference#syncclaudeaiplugins) ke `false` dalam pengaturan yang dikelola, atau matikan Skills untuk organisasi Anda di claude.ai.

1033 

1034Izinkan hanya marketplace Anthropic resmi. Pencocokan untuk entri repositori tunggal bersifat tepat, jadi entri ini tidak mencakup varian `ref` atau `path` dari repositori yang sama:

1035 

1036```json theme={null}

1037{

1038 "strictKnownMarketplaces": [

1039 {

1040 "source": "github",

1041 "repo": "anthropics/claude-plugins-official"

1042 }

1043 ]

1044}

1045```

1046 

1047Dengan entri ini, Claude Code menjaga marketplace resmi yang sudah terdaftar tetap tersedia dan, di mesin baru, mendaftarkan marketplace secara otomatis saat pertama kali Anda memulai Claude Code secara interaktif.

1048 

1049Pendaftaran otomatis tidak mencakup setiap mesin. Paling sering melewatkan:

1050 

1051* Lingkungan non-interaktif yang berjalan sebelum peluncuran interaktif pertama mesin.

1052* Mesin tempat Claude Code sudah berjalan secara interaktif di bawah kebijakan yang memblokir marketplace, seperti lockdown array kosong. Claude Code mencatat upaya yang diblokir dan tidak mencoba lagi setelah kebijakan berubah.

1053 

1054Di mesin ini, tambahkan marketplace ke [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dalam `managed-settings.json` yang sama sehingga Claude Code mendaftarkannya secara otomatis, atau jalankan `claude plugin marketplace add anthropics/claude-plugins-official`.

1055 

1056Izinkan marketplace tertentu saja:

1057 

1058```json theme={null}

1059{

1060 "strictKnownMarketplaces": [

1061 {

1062 "source": "github",

1063 "repo": "acme-corp/approved-plugins"

1064 },

1065 {

1066 "source": "github",

1067 "repo": "acme-corp/security-tools",

1068 "ref": "v2.0"

1069 },

1070 {

1071 "source": "url",

1072 "url": "https://plugins.example.com/marketplace.json"

1073 }

1074 ]

1075}

1076```

1077 

1078Izinkan setiap repositori marketplace di bawah organisasi GitHub dengan entri [owner-wildcard](/docs/id/settings-reference#owner-wildcards). Owner wildcards memerlukan Claude Code v2.1.223 atau lebih baru.

1079 

1080```json theme={null}

1081{

1082 "strictKnownMarketplaces": [

1083 {

1084 "source": "github",

1085 "repo": "acme-corp/*"

1086 }

1087 ]

1088}

1089```

1090 

1091Izinkan semua marketplace dari server git internal menggunakan pencocokan pola regex pada host. Ini adalah pendekatan yang direkomendasikan untuk [GitHub Enterprise Server](/docs/id/github-enterprise-server#plugin-marketplaces-on-ghes) atau instance GitLab yang dihosting sendiri:

1092 

1093```json theme={null}

1094{

1095 "strictKnownMarketplaces": [

1096 {

1097 "source": "hostPattern",

1098 "hostPattern": "^github\\.example\\.com$"

1099 }

1100 ]

1101}

1102```

1103 

1104Izinkan marketplace berbasis filesystem dari direktori tertentu menggunakan pencocokan pola regex pada jalur:

1105 

1106```json theme={null}

1107{

1108 "strictKnownMarketplaces": [

1109 {

1110 "source": "pathPattern",

1111 "pathPattern": "^/opt/approved/"

1112 }

1113 ]

1114}

1115```

1116 

1117Gunakan `".*"` sebagai `pathPattern` untuk mengizinkan jalur filesystem apa pun sambil tetap mengontrol sumber jaringan dengan `hostPattern`.

1118 

1119<Note>

1120 `strictKnownMarketplaces` membatasi apa yang dapat ditambahkan pengguna, tetapi tidak mendaftarkan marketplace dengan sendirinya. Untuk mendaftarkan marketplace yang diizinkan untuk pengguna secara otomatis, tambahkan ke [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dalam `managed-settings.json` yang sama.

1121 

1122 Marketplace Anthropic resmi adalah satu-satunya yang Claude Code daftarkan dengan sendirinya, dan hanya ketika allowlist mengizinkannya. Pendaftaran otomatis juga melewatkan beberapa mesin, seperti lingkungan non-interaktif dan mesin tempat kebijakan sebelumnya memblokirnya. Untuk mencakup mesin tersebut, tambahkan marketplace resmi ke `extraKnownMarketplaces` juga. Untuk kedua pengaturan bersama-sama, lihat [referensi `strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces).

1123</Note>

1124 

1125<h4 id="how-restrictions-work">

1126 Cara pembatasan bekerja

1127</h4>

1128 

1129Pembatasan 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`.

1130 

1131Tempat kedua daftar diterapkan tergantung pada tempat Anda menetapkannya:

1132 

1133* **Konsol admin claude.ai**: Claude Code menerapkan kedua daftar dalam sesi yang [membaca pengaturan yang dikelola server](/docs/id/managed-settings#where-and-when-a-policy-applies). claude.ai juga memeriksanya ketika siapa pun dalam organisasi Anda menambahkan marketplace baru dari repositori git di claude.ai, atau dari **Customize** di aplikasi Claude Desktop di luar tab Code-nya. Itu mencakup marketplace yang ditambahkan anggota untuk akun mereka sendiri dan yang ditambahkan untuk seluruh organisasi di bawah [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai menolak repositori yang tidak diakui allowlist atau yang dinamai blocklist. Itu tidak memeriksa ulang marketplace yang ditambahkan di salah satu tempat sebelum Anda menetapkan daftar, dan itu tidak memeriksa plugin yang diunggah.

1134* **File pengaturan yang dikelola, kebijakan tingkat OS, atau sumber yang dikelola lainnya**: Claude Code menerapkan kedua daftar tempat itu membaca sumber itu. claude.ai tidak membacanya.

1135 

1136Untuk memblokir setiap repositori marketplace di bawah pemilik GitHub, gunakan bentuk owner-wildcard dalam entri `blockedMarketplaces`: `{ "source": "github", "repo": "untrusted-org/*" }`. Memerlukan Claude Code v2.1.223 atau lebih baru. Untuk aturan pencocokan, yang berbeda antara blocklist dan allowlist, lihat [Owner wildcards](/docs/id/settings-reference#owner-wildcards).

1137 

1138Ketika pengguna menambahkan URL repositori `https://` yang Claude Code [klon daripada ambil](/docs/id/discover-plugins#add-from-other-git-hosts), seperti URL repositori `github.com` atau `gitlab.com` kosong, Claude Code juga memeriksanya terhadap entri `url` dalam `blockedMarketplaces`. Claude Code memblokir penambahan jika entri menamai URL yang sama. Dalam perbandingan itu, Claude Code mengabaikan akhiran `.git` dan ref apa pun yang ditambahkan pengguna setelah `#`. Memerlukan Claude Code v2.1.232 atau lebih baru. Sebelum v2.1.232, Claude Code mencocokkan entri `url` hanya terhadap URL yang diambil sebagai file `marketplace.json` yang dihosting.

1139 

1140Allowlist menggunakan pencocokan tepat untuk sebagian besar jenis sumber, terlepas dari entri `github` owner-wildcard. Agar marketplace diizinkan, semua field yang ditentukan harus cocok:

1141 

1142* Untuk sumber GitHub: `repo` diperlukan, baik menamai satu repositori atau menggunakan bentuk owner-wildcard `owner/*` untuk mencakup setiap repositori di bawah pemilik itu. Untuk cara entri wildcard cocok, termasuk aturan kasus, lihat [Owner wildcards](/docs/id/settings-reference#owner-wildcards). Untuk entri repositori tunggal, `ref` harus cocok tepat atau tidak ada di kedua sumber marketplace dan entri allowlist, dan aturan yang sama berlaku untuk `path`

1143* Untuk sumber URL: URL lengkap harus cocok secara tepat

1144* Untuk sumber `hostPattern`: host marketplace dicocokkan dengan pola regex

1145* Untuk sumber `pathPattern`: jalur filesystem marketplace dicocokkan dengan pola regex

1146 

1147Pencocokan tepat allowlist memperlakukan URL yang berbeda hanya dengan garis miring trailing, akhiran `.git`, atau skema `ssh://` dan `https://` sebagai nilai berbeda. Jika marketplace organisasi Anda dapat diklon oleh lebih dari satu bentuk URL, lebih suka entri `hostPattern` daripada URL literal sehingga bentuk `https://`, `ssh://`, dan `user@host:path` semuanya cocok.

1148 

1149Marketplace yang [dihosting di claude.ai](/docs/id/discover-plugins#add-from-claude-ai) dicocokkan berdasarkan host: entri `hostPattern` yang cocok dengan `claude.ai` mengatur, dalam `strictKnownMarketplaces` dan dalam `blockedMarketplaces`. Di allowlist, entri seperti itu tidak mengakui unggahan claude.ai pribadi anggota. Memerlukan Claude Code v2.1.273 atau lebih baru.

1150 

1151Karena `strictKnownMarketplaces` diatur dalam [pengaturan yang dikelola](/docs/id/managed-settings), konfigurasi pengguna individual dan proyek tidak dapat mengganti pembatasan ini.

1152 

1153Untuk detail konfigurasi lengkap termasuk semua jenis sumber yang didukung dan perbandingan dengan `extraKnownMarketplaces`, lihat [referensi strictKnownMarketplaces](/docs/id/settings-reference#strictknownmarketplaces).

1154 

1155<h3 id="version-resolution-and-release-channels">

1156 Resolusi versi dan saluran rilis

1157</h3>

1158 

1159Versi 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. Untuk sumber berbasis git, jika Anda menghilangkan `version`, Claude Code menggunakan SHA commit yang diselesaikan dari sumber, jadi pengguna mendapatkan pembaruan setiap kali commit itu berubah; ini adalah setup paling sederhana untuk plugin internal atau yang sedang dikembangkan secara aktif. Lihat [Version management](/docs/id/plugins-reference#version-management) untuk urutan resolusi lengkap, termasuk sumber `archive`.

1160 

1161<Warning>

1162 Menetapkan `version` menyematkan plugin untuk setiap jenis sumber kecuali [`command`](#command-sources), yang versinya selalu menyertakan hash dari apa yang dihasilkan perintah. Jika plugin [dimuat di tempat](/docs/id/plugins-reference#plugin-caching-and-file-resolution) dari marketplace yang ditambahkan sebagai direktori lokal juga tidak disematkan. Jika Anda mendeklarasikan `"version": "1.0.0"` dalam `plugin.json` dan mendorong commit baru tanpa mengubah string itu, pengguna yang ada dari sumber tersebut menyimpan salinan cache, karena Claude Code melihat versi yang sama. Bump field pada setiap rilis, atau hilangkan untuk kembali ke versi yang diselesaikan.

1163 

1164 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`.

1165</Warning>

1166 

1167<h4 id="set-up-release-channels">

1168 Siapkan saluran rilis

1169</h4>

1170 

1171Untuk 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 memberikan setiap grup pengguna marketplace-nya sendiri melalui pengaturan yang dikelola dalam salah satu dari dua cara:

1172 

1173* Terapkan [pengaturan yang dikelola endpoint terpisah](/docs/id/managed-settings#delivery-mechanisms), seperti file pengaturan yang dikelola atau profil MDM, ke perangkat setiap grup. [Cara Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#precedence-within-the-managed-tier) mengatakan apakah file per-grup atau profil berlaku di perangkat yang juga memiliki sumber organisasi-lebar.

1174* Tentukan satu [kebijakan gateway aplikasi Claude](/docs/id/claude-apps-gateway-config#managed) per grup. Gateway menerapkan kebijakan pertama yang aturan kecocokannya sesuai dengan pengguna, jadi urutkan kebijakan sehingga setiap pengguna mencapai kebijakan grup mereka. `extraKnownMarketplaces` kebijakan grup menggantikan peta kebijakan catch-all daripada menggabungkan dengannya, jadi daftarkan setiap marketplace yang dibutuhkan grup dalam kebijakan grup, bukan hanya marketplace salurannya.

1175 

1176Pengaturan yang dikelola server dari konsol admin [berlaku untuk setiap pengguna dalam organisasi Anda](/docs/id/server-managed-settings#current-limitations), jadi mereka tidak dapat membawa penugasan per-grup.

1177 

1178<Warning>

1179 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.

1180</Warning>

1181 

1182<h5 id="example">

1183 Contoh

1184</h5>

1185 

1186```json theme={null}

1187{

1188 "name": "stable-tools",

1189 "plugins": [

1190 {

1191 "name": "code-formatter",

1192 "source": {

1193 "source": "github",

1194 "repo": "acme-corp/code-formatter",

1195 "ref": "stable"

1196 }

1197 }

1198 ]

1199}

1200```

1201 

1202```json theme={null}

1203{

1204 "name": "latest-tools",

1205 "plugins": [

1206 {

1207 "name": "code-formatter",

1208 "source": {

1209 "source": "github",

1210 "repo": "acme-corp/code-formatter",

1211 "ref": "latest"

1212 }

1213 }

1214 ]

1215}

1216```

1217 

1218<h5 id="assign-channels-to-user-groups">

1219 Tetapkan saluran ke grup pengguna

1220</h5>

1221 

1222Tetapkan setiap marketplace ke grup pengguna melalui pengaturan yang dikelola endpoint per-grup atau kebijakan gateway yang dijelaskan di bawah [Siapkan saluran rilis](#set-up-release-channels). Misalnya, grup stabil menerima:

1223 

1224```json theme={null}

1225{

1226 "extraKnownMarketplaces": {

1227 "stable-tools": {

1228 "source": {

1229 "source": "github",

1230 "repo": "acme-corp/stable-tools"

1231 }

1232 }

1233 }

1234}

1235```

1236 

1237Grup early-access menerima `latest-tools` sebagai gantinya:

1238 

1239```json theme={null}

1240{

1241 "extraKnownMarketplaces": {

1242 "latest-tools": {

1243 "source": {

1244 "source": "github",

1245 "repo": "acme-corp/latest-tools"

1246 }

1247 }

1248 }

1249}

1250```

1251 

1252<h4 id="pin-dependency-versions">

1253 Sematkan versi dependensi

1254</h4>

1255 

1256Plugin dapat membatasi dependensinya ke rentang semver sehingga pembaruan dependensi tidak merusak plugin yang bergantung. Lihat [Batasi versi dependensi plugin](/docs/id/plugin-dependencies) untuk konvensi git-tag `{plugin-name}--v{version}`, sintaks rentang, dan bagaimana beberapa batasan pada dependensi yang sama digabungkan.

1257 

1258<h3 id="rename-or-remove-a-plugin">

1259 Ubah nama atau hapus plugin

1260</h3>

1261 

1262`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`](#optional-plugin-fields) dan jaga `name` tetap tidak berubah.

1263 

1264Jika 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:

1265 

1266```json theme={null}

1267{

1268 "name": "acme-tools",

1269 "owner": { "name": "Acme" },

1270 "plugins": [

1271 { "name": "code-formatter", "source": "./plugins/code-formatter" }

1272 ],

1273 "renames": {

1274 "formatter": "code-formatter",

1275 "legacy-linter": null

1276 }

1277}

1278```

1279 

1280Ketika pengguna memulai Claude Code dengan nama lama masih dalam pengaturan mereka, Claude Code mengikuti peta `renames`:

1281 

1282* 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.

1283* Untuk entri `null`, Claude Code menghapus kunci lama dan pemberitahuan melaporkan bahwa plugin dihapus dari marketplace.

1284* 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.

1285 

1286Perlakukan `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`.

1287 

1288Jalankan `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`.

1289 

1290<Note>

1291 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`.

1292</Note>

1293 

1294Versi Claude Code sebelumnya mengabaikan field `renames` dan melaporkan `plugin-not-found` untuk nama lama.

1295 

1296<h2 id="validation-and-testing">

1297 Validasi dan pengujian

1298</h2>

1299 

1300Uji marketplace Anda sebelum berbagi. Validasi memeriksa struktur file; untuk menguji apakah plugin mengubah apa yang Claude lakukan pada prompt realistis, jalankan suite eval-nya dengan [`claude plugin eval`](/docs/id/plugin-evals) sebelum Anda menerbitkan versi baru.

1301 

1302Dari direktori marketplace Anda, validasi sintaks JSON:

1303 

1304```bash theme={null}

1305claude plugin validate .

1306```

1307 

1308Atau dari dalam Claude Code:

1309 

1310```shell theme={null}

1311/plugin validate .

1312```

1313 

1314Tambahkan marketplace untuk pengujian:

1315 

1316```shell theme={null}

1317/plugin marketplace add ./path/to/marketplace

1318```

1319 

1320Pasang plugin uji untuk memverifikasi semuanya berfungsi:

1321 

1322```shell theme={null}

1323/plugin install test-plugin@marketplace-name

1324```

1325 

1326Untuk alur kerja pengujian plugin lengkap, lihat [Uji plugin Anda secara lokal](/docs/id/plugins#test-your-plugins-locally). Untuk troubleshooting teknis, lihat [Plugins reference](/docs/id/plugins-reference).

1327 

1328<h2 id="manage-marketplaces-from-the-cli">

1329 Kelola marketplace dari CLI

1330</h2>

1331 

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

1333 

1334<h3 id="plugin-marketplace-add">

1335 Plugin marketplace add

1336</h3>

1337 

1338Tambahkan marketplace dari repositori GitHub, URL git, URL jarak jauh, atau jalur lokal.

1339 

1340```bash theme={null}

1341claude plugin marketplace add <source> [options]

1342```

1343 

1344**Argumen:**

1345 

1346* `<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

1347 

1348URL 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.

1349 

1350**Opsi:**

1351 

1352| Opsi | Deskripsi | Default |

1353| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1354| `--scope <scope>` | Di mana mendeklarasikan marketplace: `user`, `project`, atau `local`. Lihat [Plugin installation scopes](/docs/id/plugins-reference#plugin-installation-scopes) | `user` |

1355| `--sparse <paths...>` | Batasi checkout ke direktori tertentu melalui git sparse-checkout. Berguna untuk monorepo | |

1356| `--claudeai` | Baca argumen sebagai nama [marketplace yang dihosting di claude.ai](/docs/id/discover-plugins#add-from-claude-ai) alih-alih sumber. Memerlukan Claude Code v2.1.273 atau lebih baru | |

1357 

1358Tambahkan marketplace dari GitHub menggunakan shorthand `owner/repo`:

1359 

1360```bash theme={null}

1361claude plugin marketplace add acme-corp/claude-plugins

1362```

1363 

1364Sematkan ke branch atau tag tertentu dengan `@ref`:

1365 

1366```bash theme={null}

1367claude plugin marketplace add acme-corp/claude-plugins@v2.0

1368```

1369 

1370Tambahkan dari URL git di host non-GitHub:

1371 

1372```bash theme={null}

1373claude plugin marketplace add https://gitlab.example.com/team/plugins.git

1374```

1375 

1376Tambahkan dari URL jarak jauh yang melayani file `marketplace.json` secara langsung:

1377 

1378```bash theme={null}

1379claude plugin marketplace add https://example.com/marketplace.json

1380```

1381 

1382Tambahkan dari direktori lokal untuk pengujian:

1383 

1384```bash theme={null}

1385claude plugin marketplace add ./my-marketplace

1386```

1387 

1388Deklarasikan marketplace di scope proyek sehingga dibagikan dengan tim Anda melalui `.claude/settings.json`:

1389 

1390```bash theme={null}

1391claude plugin marketplace add acme-corp/claude-plugins --scope project

1392```

1393 

1394Untuk monorepo, batasi checkout ke direktori yang berisi konten plugin:

1395 

1396```bash theme={null}

1397claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

1398```

1399 

1400Tambahkan [marketplace yang dihosting di claude.ai](/docs/id/discover-plugins#add-from-claude-ai) berdasarkan nama yang dicetak di bagian `From claude.ai:` dari `claude plugin marketplace list`:

1401 

1402```bash theme={null}

1403claude plugin marketplace add --claudeai claudeai-organization-library

1404```

1405 

1406Dengan `--claudeai`, perintah menolak `--scope` dan `--sparse`. Marketplace dihosting untuk akun Anda, bukan dideklarasikan dalam file pengaturan, jadi Anda tidak dapat membagikannya melalui `.claude/settings.json` proyek.

1407 

1408<h3 id="plugin-marketplace-list">

1409 Plugin marketplace list

1410</h3>

1411 

1412Daftar semua marketplace yang dikonfigurasi.

1413 

1414```bash theme={null}

1415claude plugin marketplace list [options]

1416```

1417 

1418**Opsi:**

1419 

1420| Opsi | Deskripsi |

1421| :------- | :------------------ |

1422| `--json` | Output sebagai JSON |

1423 

1424Dengan `--json`, setiap entri mencakup `name`, `source`, bidang `installLocation` dengan jalur cache lokal tempat marketplace disimpan, 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.

1425 

1426Marketplace [claude.ai](/docs/id/discover-plugins#add-from-claude-ai) yang ditambahkan tidak memiliki clone lokal, jadi entrinya membawa pengidentifikasi claude.ai-nya, `marketplaceId` dan `organizationUuid`, sebagai pengganti `installLocation`.

1427 

1428Dalam sesi terminal di mana [plugin disinkronkan dari akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins), daftar teks berakhir dengan bagian `From claude.ai:` yang menamai apa yang claude.ai daftarkan untuk akun Anda di luar marketplace yang telah Anda tambahkan. Untuk menambahkan salah satunya, lihat [Tambahkan dari claude.ai](/docs/id/discover-plugins#add-from-claude-ai). Output `--json` hanya mencakup marketplace yang dikonfigurasi dan meninggalkan bagian tersebut. Memerlukan Claude Code v2.1.273 atau lebih baru.

1429 

1430<h3 id="plugin-marketplace-remove">

1431 Plugin marketplace remove

1432</h3>

1433 

1434Hapus marketplace yang dikonfigurasi. Alias `rm` juga diterima.

1435 

1436```bash theme={null}

1437claude plugin marketplace remove <name> [options]

1438```

1439 

1440**Argumen:**

1441 

1442* `<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`

1443 

1444**Opsi:**

1445 

1446| Opsi | Deskripsi | Default |

1447| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------ |

1448| `--scope <scope>` | Batasi penghapusan ke scope pengaturan tunggal: `user`, `project`, atau `local`. Lihat [Plugin installation scopes](/docs/id/plugins-reference#plugin-installation-scopes). Ketika dihilangkan, deklarasi dihapus dari setiap scope yang dapat diedit. Ketika diberikan, hanya deklarasi scope tersebut yang dihapus; status bersama, cache, dan data plugin yang dipasang dipertahankan ketika marketplace masih dideklarasikan di scope lain | (semua scope) |

1449 

1450<Warning>

1451 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.

1452</Warning>

1453 

1454<h3 id="plugin-marketplace-update">

1455 Plugin marketplace update

1456</h3>

1457 

1458Segarkan 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.

1459 

1460```bash theme={null}

1461claude plugin marketplace update [name]

1462```

1463 

1464**Argumen:**

1465 

1466* `[name]`: nama marketplace untuk diperbarui, seperti yang ditunjukkan oleh `claude plugin marketplace list`. Memperbarui semua marketplace jika dihilangkan

1467 

1468Baik `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](#pre-populate-plugins-for-containers).

1469 

1470<h2 id="troubleshooting">

1471 Troubleshooting

1472</h2>

1473 

1474<h3 id="marketplace-not-loading">

1475 Marketplace tidak memuat

1476</h3>

1477 

1478**Gejala**: Tidak dapat menambahkan marketplace atau melihat plugin darinya

1479 

1480**Solusi**:

1481 

1482* Verifikasi URL marketplace dapat diakses

1483* Periksa bahwa `.claude-plugin/marketplace.json` ada di jalur yang ditentukan

1484* Pastikan sintaks JSON valid menggunakan `claude plugin validate .` atau `/plugin validate .` dari direktori marketplace. Untuk memeriksa frontmatter skill, agent, dan command, lihat [Validate a plugin or a directory without a manifest](#validate-a-plugin-or-a-directory-without-a-manifest)

1485* Untuk repositori pribadi, konfirmasi Anda memiliki izin akses

1486 

1487<h3 id="marketplace-validation-errors">

1488 Kesalahan validasi marketplace

1489</h3>

1490 

1491Jalankan `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 →`.

1492 

1493Mulai dari Claude Code v2.1.196, pass per-entri juga:

1494 

1495* mencakup plugin yang `source`-nya adalah `.`

1496* berjalan ketika `marketplace.json` berada di luar direktori `.claude-plugin`, menyelesaikan sumber terhadap direktori file itu sendiri

1497* melaporkan masalah setiap entri bahkan ketika bagian lain dari file memiliki kesalahan skema

1498 

1499Versi sebelumnya melewati plugin di root marketplace dan hanya turun dari `.claude-plugin/marketplace.json`.

1500 

1501Dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin. Untuk menemukan kesalahan dalam file tersebut, lihat [Validate a plugin or a directory without a manifest](#validate-a-plugin-or-a-directory-without-a-manifest). Tabel di bawah mencantumkan kesalahan paling umum dari direktori marketplace, dengan penyebab dan perbaikan untuk masing-masing:

1502 

1503| Kesalahan | Penyebab | Solusi |

1504| :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |

1505| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | Direktori yang Anda beri nama tidak memiliki `.claude-plugin/marketplace.json` atau `plugin.json`, dan tidak ada file skill, agent, atau command untuk diperiksa | Jalankan dari root marketplace, atau buat `.claude-plugin/marketplace.json` dengan field yang diperlukan |

1506| `Invalid JSON syntax: Unexpected token...` | Kesalahan sintaks JSON dalam marketplace.json | Periksa koma yang hilang, koma ekstra, atau string yang tidak dikutip |

1507| `Duplicate plugin name "x" found in marketplace` | Dua plugin berbagi nama yang sama | Berikan setiap plugin nilai `name` yang unik |

1508| `plugins[0].source: Path contains ".."` | Segmen jalur sumber adalah `..` | Gunakan jalur relatif terhadap root marketplace tanpa segmen `..`. Lihat [Relative paths](#relative-paths) |

1509| `Marketplace name cannot contain control or bidirectional-formatting characters` | Nama marketplace `name` berisi karakter bidirectional-formatting Unicode atau karakter kontrol, seperti escape atau newline | Hapus karakter dari nama. Sebelum v2.1.247, karakter ini menghasilkan kesalahan `Marketplace name impersonates an official Anthropic/Claude marketplace` |

1510| `Plugin name cannot contain control or bidirectional-formatting characters` | Nama plugin `name` berisi karakter bidirectional-formatting Unicode atau karakter kontrol, seperti escape atau newline | Hapus karakter dari nama. Sebelum v2.1.247, Claude Code tidak menjalankan pemeriksaan ini |

1511 

1512**Peringatan** (non-blocking):

1513 

1514* `Marketplace has no plugins defined`: tambahkan setidaknya satu plugin ke array `plugins`

1515* `No marketplace description provided`: tambahkan `description` tingkat atas untuk membantu pengguna memahami marketplace Anda

1516* `Plugin name "x" is not kebab-case`: ubah nama menjadi huruf kecil, digit, dan tanda hubung saja (misalnya, `my-plugin`). Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace claude.ai menolaknya.

1517* `Marketplace name "x" is reserved in Claude Desktop`: marketplace dinamai `org`, `org-provisioned`, atau `unknown`, dalam huruf besar atau kecil apa pun. Claude Code menerima nama ini, tetapi sinkronisasi marketplace terkelola Claude Desktop menolak seluruh marketplace. Ubah nama marketplace. Sebelum v2.1.221, `claude plugin validate` tidak menjalankan pemeriksaan ini.

1518* `Marketplace name "x" is not accepted by Claude Desktop` atau `Plugin name "x" is not accepted by Claude Desktop`: Claude Desktop menerima nama hingga 128 karakter yang terdiri dari huruf, digit, `.`, `_`, dan `-`, dimulai dengan huruf atau digit. Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace terkelola Claude Desktop menolak marketplace yang namanya gagal pemeriksaan dan secara diam-diam menghapus entri plugin yang namanya gagal. Ubah nama marketplace atau plugin. Sebelum v2.1.221, `claude plugin validate` tidak menjalankan pemeriksaan ini.

1519 

1520<h4 id="validate-a-plugin-or-a-directory-without-a-manifest">

1521 Validate a plugin or a directory without a manifest

1522</h4>

1523 

1524Untuk menemukan file skill, agent, dan command yang frontmatter-nya tidak parse, jalankan `claude plugin validate` dan beri nama direktori yang menahannya. Claude Code tidak mencari di luar direktori yang Anda beri nama. Setiap run kecuali satu terhadap plugin yang memiliki `plugin.json` memerlukan Claude Code v2.1.233 atau lebih baru.

1525 

1526<h5 id="pick-the-directory-to-name">

1527 Pick the directory to name

1528</h5>

1529 

1530Claude Code memeriksa file berbeda tergantung pada direktori mana yang Anda beri nama. Temukan apa yang ingin Anda periksa di kolom pertama, dan jalankan perintah baris itu:

1531 

1532| Untuk memeriksa | Jalankan | Claude Code memeriksa |

1533| :------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1534| Plugin yang memiliki `plugin.json` | `claude plugin validate ./plugins/my-plugin` | `plugin.json`, `hooks/hooks.json`, dan direktori `skills`, `agents`, dan `commands` di root plugin |

1535| Satu direktori skill, agent, atau command, seperti plugin yang belum memiliki `plugin.json` | `claude plugin validate .claude/skills`, `~/.claude/agents`, atau `./my-plugin/agents` | Setiap file skill, agent, atau command dalam direktori itu |

1536| Folder yang skill-nya adalah root `SKILL.md`-nya | `claude plugin validate ./skills`, memberi nama direktori `skills` yang menahannya | Root `SKILL.md` setiap folder. Direktori yang menahan harus dinamai `skills`; folder di bawah nama lain, seperti `plugins/`, tidak memiliki run yang memeriksa root `SKILL.md`-nya |

1537| Tiga direktori proyek sekaligus | `claude plugin validate .claude`, atau root proyek ketika tidak memiliki manifest `.claude-plugin/` | `.claude/skills`, `.claude/agents`, dan `.claude/commands` |

1538| Direktori tingkat pengguna Anda | `claude plugin validate ~/.claude` | `~/.claude/skills`, `~/.claude/agents`, dan `~/.claude/commands` |

1539 

1540<h5 id="check-a-plugin-whose-skill-is-its-root-skill-md">

1541 Check a plugin whose skill is its root `SKILL.md`

1542</h5>

1543 

1544Ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin. Ketika plugin berada di direktori bernama `skills`, jalankan perintah dua kali:

1545 

1546* Beri nama direktori `skills` itu untuk memeriksa root `SKILL.md` plugin.

1547* Beri nama direktori plugin untuk memeriksa sisanya.

1548 

1549Ketika plugin berada di bawah nama lain, seperti `plugins/`, run direktori `skills` tidak tersedia, dan tidak ada run yang memeriksa root `SKILL.md`-nya.

1550 

1551<h5 id="check-files-behind-symlinks">

1552 Check files behind symlinks

1553</h5>

1554 

1555Ketika Anda menjalankan `claude plugin validate`, Claude Code tidak mengikuti symlink di dalam direktori yang Anda beri nama. Apa yang dilakukannya tergantung pada di mana link berada:

1556 

1557* **Direktori `skills`, `agents`, atau `commands` yang tertaut di bawah root plugin atau `.claude`**: Claude Code memperingatkan bahwa tidak ada yang di dalamnya yang dibaca.

1558* **Entri tertaut di dalam direktori `skills`, `agents`, atau `commands`**: Claude Code melewatinya dan memperingatkan, per direktori, berapa banyak entri yang dilewatinya yang akan dimuat sesi.

1559* **Direktori `skills`, `agents`, atau `commands` yang Anda beri nama adalah symlink itu sendiri, atau direktori `.claude` induknya adalah**: Claude Code melaporkan kesalahan dan tidak memeriksa apa pun di dalamnya. Beri nama direktori nyata sebagai gantinya.

1560 

1561Dalam dua kasus skill, run berlalu dengan peringatan. Untuk memeriksa file tertaut, jalankan lagi dan beri nama direktori yang menahannya secara langsung:

1562 

1563* **Plugin yang direktori `skills`-nya [tertaut ke skill plugin sibling](/docs/id/plugins-reference#share-files-within-a-marketplace-with-symlinks)**: beri nama direktori plugin sibling.

1564* **[Entri skill tertaut](/docs/id/skills#where-skills-live) dalam `~/.claude/skills` atau `.claude/skills`**: Claude Code mengikuti entri dalam sesi. Untuk memeriksanya, beri nama direktori bernama `skills` yang menahannya folder nyata.

1565 

1566<h5 id="read-the-validation-results">

1567 Read the validation results

1568</h5>

1569 

1570Run yang bersih berakhir dengan `Validation passed`.

1571 

1572`No manifest found in directory` berarti Claude Code tidak menemukan `plugin.json` atau `marketplace.json` di sana, dan tidak ada file skill, agent, atau command dalam direktori yang diprobnya di bawahnya. Beri nama direktori `skills`, `agents`, atau `commands` yang menahannya file Anda sebagai gantinya.

1573 

1574Dua dari kesalahan yang dilaporkan Claude Code dari run ini, dengan perbaikan untuk masing-masing:

1575 

1576* `YAML frontmatter failed to parse: ...`: perbaiki YAML dalam blok frontmatter file skill, agent, atau command. Sampai Anda melakukannya, sesi membaca tidak ada field frontmatter dari file

1577* `Invalid JSON syntax: ...` pada `hooks/hooks.json`: perbaiki sintaks JSON. Sampai Anda melakukannya, sesi memuat plugin tanpa hook dalam file itu. Claude Code melaporkan kesalahan ini hanya dalam run plugin

1578 

1579Dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin. Untuk jalur yang Anda atur melalui [component path fields](/docs/id/plugins-reference#component-path-fields) dalam `plugin.json`, Claude Code memeriksa bahwa setiap jalur ada tetapi tidak membaca file di sana.

1580 

1581<h3 id="plugin-installation-failures">

1582 Kegagalan instalasi plugin

1583</h3>

1584 

1585**Gejala**: Marketplace muncul tetapi instalasi plugin gagal

1586 

1587**Solusi**:

1588 

1589* Verifikasi URL sumber plugin dapat diakses

1590* Periksa bahwa direktori plugin berisi file yang diperlukan

1591* Untuk sumber GitHub, pastikan repositori publik atau Anda memiliki akses

1592* Uji sumber plugin secara manual dengan mengklon/mengunduh

1593* 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

1594 

1595<h3 id="private-repository-authentication-fails">

1596 Autentikasi repositori pribadi gagal

1597</h3>

1598 

1599**Gejala**: Kesalahan autentikasi saat memasang plugin dari repositori pribadi

1600 

1601**Solusi**:

1602 

1603Untuk instalasi manual dan pembaruan:

1604 

1605* Verifikasi Anda diautentikasi dengan penyedia git Anda (misalnya, jalankan `gh auth status` untuk GitHub)

1606* Periksa bahwa helper kredensial Anda dikonfigurasi: `git config --global credential.helper`

1607* Jalankan `git ls-remote <marketplace-url>` untuk menguji apakah git dapat diautentikasi sendiri. Jika git meminta nama pengguna atau kata sandi, simpan kredensial terlebih dahulu: untuk GitHub melalui HTTPS, jalankan `gh auth setup-git`, dan untuk remote SSH, muat kunci Anda ke `ssh-agent`

1608 

1609Untuk pembaruan otomatis latar belakang:

1610 

1611* Pemeriksaan latar belakang menggunakan helper kredensial git yang dikonfigurasi tetapi tidak pernah meminta, jadi helper Anda harus dapat menjawab dengan kredensial yang disimpan. Remote SSH dengan kunci yang dimuat di `ssh-agent` juga diautentikasi

1612* Jika helper Anda perlu meminta Anda, pembaruan latar belakang gagal diam-diam dan klon yang ada tetap di tempat. Masuk ke helper Anda terlebih dahulu sehingga menyimpan kredensial untuk host. Untuk GitHub, jalankan `gh auth login`, kemudian `gh auth setup-git`

1613* Ketika pemeriksaan menemukan commit baru, atau tidak dapat menjangkau atau diautentikasi ke remote, Claude Code me-re-clone marketplace dengan kredensial yang sama. Re-clone mungkin time out pada repositori besar

1614* Atur `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` untuk menyimpan klon yang ada tanpa mencoba re-clone ketika pemeriksaan latar belakang tidak dapat menjangkau atau diautentikasi ke remote

1615* Jika re-clone time out pada repositori besar, tingkatkan batas dengan [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)

1616* Atau perbarui marketplace pribadi secara manual dengan `/plugin marketplace update <name>`, yang menggunakan kredensial Anda

1617 

1618Sebelum v2.1.280, pemeriksaan latar belakang berjalan tanpa helper kredensial git Anda dan tidak dapat diautentikasi ke repositori pribadi melalui HTTPS.

1619 

1620<h3 id="marketplace-updates-fail-in-offline-environments">

1621 Pembaruan marketplace gagal di lingkungan offline

1622</h3>

1623 

1624**Gejala**: Di lingkungan offline atau airgapped, penyegaran marketplace latar belakang tidak dapat menjangkau remote dan Claude Code berulang kali mencoba re-clone yang tidak dapat berhasil.

1625 

1626**Penyebab**: Penyegaran latar belakang memeriksa remote marketplace untuk commit baru, dan ketika pemeriksaan tidak dapat menjangkau remote, Claude Code mencoba mengklon marketplace lagi. Offline, klon gagal dengan cara yang sama dan klon yang ada tetap di tempat. Sebelum v2.1.274, penyegaran menjalankan `git pull` dalam klon yang ada, memindahkan klon ke samping untuk re-clone ketika pull gagal, dan memulihkannya sesudahnya dengan basis best-effort.

1627 

1628Penyegaran berjalan di latar belakang setelah startup, sehingga tidak menunda startup. Setiap sesi masih mengulangi upaya yang gagal, dan setiap operasi git dapat menunggu [timeout 120 detik](#git-operations-time-out).

1629 

1630**Solusi**: Atur `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` untuk melewati upaya re-clone dan terus menggunakan klon yang ada ketika pemeriksaan tidak dapat menjangkau remote:

1631 

1632```bash theme={null}

1633export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1634```

1635 

1636Untuk deployment yang sepenuhnya offline di mana repositori tidak akan pernah dapat dijangkau, gunakan [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) untuk pra-isi direktori plugin saat waktu build sebagai gantinya.

1637 

1638<h3 id="git-operations-time-out">

1639 Operasi Git time out

1640</h3>

1641 

1642**Gejala**: Instalasi plugin atau pembaruan marketplace gagal dengan kesalahan timeout seperti `Git clone timed out after 120s`.

1643 

1644**Penyebab**: Claude Code menggunakan timeout 120 detik untuk semua operasi git, termasuk mengklon repositori plugin dan me-re-clone marketplace untuk memperbaruinya. Repositori besar atau koneksi jaringan lambat mungkin melebihi batas ini.

1645 

1646**Solusi**: Tingkatkan timeout menggunakan variabel lingkungan `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. Nilainya dalam milidetik:

1647 

1648```bash theme={null}

1649export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutes

1650```

1651 

1652<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

1653 Plugin dengan jalur relatif gagal di marketplace berbasis URL

1654</h3>

1655 

1656**Gejala**: Menambahkan marketplace melalui URL seperti `https://example.com/marketplace.json`, tetapi plugin dengan sumber jalur relatif seperti `"./plugins/my-plugin"` gagal dipasang dengan `its marketplace entry path does not stay inside the marketplace directory`. Plugin yang sudah dipasang gagal dimuat dengan `Plugin source path refused`. Kedua pesan memiliki [entri referensi kesalahan](/docs/id/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

1657 

1658**Penyebab**: Menambahkan marketplace berbasis URL hanya mengunduh file `marketplace.json` itu sendiri, dan Claude Code tidak mengambil file plugin berdasarkan jalur relatif dari server itu. Jalur relatif dalam entri marketplace mereferensikan file di server jarak jauh yang tidak diunduh.

1659 

1660**Solusi**:

1661 

1662* **Gunakan sumber eksternal**: ubah entri plugin ke [plugin source](#plugin-sources) apa pun selain jalur relatif:

1663 ```json theme={null}

1664 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1665 ```

1666* **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.

1667 

1668<h3 id="files-not-found-after-installation">

1669 File tidak ditemukan setelah instalasi

1670</h3>

1671 

1672**Gejala**: Plugin dipasang tetapi referensi ke file gagal, terutama file di luar direktori plugin

1673 

1674**Penyebab**: Claude Code menyalin plugin yang dipasang ke direktori cache, kecuali plugin dimuat di tempat. [`command` source dalam link mode](#copy-mode-and-link-mode) dimuat di tempat, begitu juga [relative path source](#relative-paths) dalam marketplace yang ditambahkan dari direktori lokal. Jalur yang mereferensikan file di luar direktori plugin yang disalin (seperti `../shared-utils`) tidak akan berfungsi karena file tersebut tidak disalin.

1675 

1676**Solusi**: Lihat [Plugin caching and file resolution](/docs/id/plugins-reference#plugin-caching-and-file-resolution) untuk solusi termasuk symlink dan restruktur direktori.

1677 

1678Untuk alat debugging tambahan dan masalah umum, lihat [Debugging and development tools](/docs/id/plugins-reference#debugging-and-development-tools).

1679 

1680<h2 id="see-also">

1681 Lihat juga

1682</h2>

1683 

1684* [Temukan dan pasang plugin yang sudah dibuat](/docs/id/discover-plugins) - Memasang plugin dari marketplace yang ada

1685* [Plugins](/docs/id/plugins) - Membuat plugin Anda sendiri

1686* [Plugins reference](/docs/id/plugins-reference) - Spesifikasi teknis lengkap dan skema

1687* [Plugin settings](/docs/id/settings-reference#plugin-settings) - Opsi konfigurasi plugin

1688* [strictKnownMarketplaces reference](/docs/id/settings-reference#strictknownmarketplaces) - Pembatasan marketplace yang dikelola

plugin-relevance.md +0 −186 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# Rekomendasikan plugins untuk organisasi Anda

6 

7> Tambahkan blok relevance ke entri plugin marketplace sehingga Claude Code menyarankannya ketika pekerjaan pengguna cocok.

8 

9Jika Anda mengoperasikan marketplace plugin untuk organisasi Anda, Anda dapat membuat Claude Code menyarankan plugin tertentu kepada pengguna berdasarkan apa yang sedang mereka kerjakan. Tambahkan blok `relevance` ke entri plugin di `marketplace.json`, kemudian daftarkan marketplace di managed settings. Ketika sesi pengguna cocok dengan salah satu sinyal yang dideklarasikan, Claude Code menampilkan saran instalasi untuk plugin tersebut.

10 

11Saran yang dideklarasikan marketplace bersifat opt-in per marketplace melalui [managed settings](/docs/id/managed-settings). Tidak ada deklarasi `relevance` marketplace yang menghasilkan saran sampai administrator menambahkannya ke daftar allowlist, termasuk marketplace resmi Anthropic. Claude Code juga menyertakan satu saran bawaan yang independen dari daftar allowlist ini; tip tersebut dan semua tip yang dideklarasikan marketplace dinonaktifkan ketika [`spinnerTipsEnabled`](/docs/id/settings-reference#spinnertipsenabled) diatur ke `false`.

12 

13Halaman ini untuk operator marketplace dan administrator enterprise. Jika Anda mencari untuk menginstal plugins, lihat [Temukan dan instal plugins](/docs/id/discover-plugins).

14 

15<h2 id="how-it-works">

16 Cara kerjanya

17</h2>

18 

19Setiap entri plugin di `marketplace.json` dapat membawa objek `relevance`. Objek ini menamai topik dan satu atau lebih sinyal. Sinyal adalah pola yang Claude Code uji terhadap sesi saat ini, seperti direktori kerja atau file yang telah dibaca Claude.

20 

21Pencocokan sinyal terjadi secara lokal di mesin pengguna. Pencocokan tidak menambah lalu lintas jaringan dan tidak melaporkan sinyal mana yang cocok, atau nilainya, ke Anthropic atau ke operator marketplace.

22 

23Ketika sinyal cocok dan plugin belum diinstal, Claude Code menampilkan plugin di tiga tempat:

24 

25* **Spinner tip**: pesan "Working with *topic*? Install the *plugin* plugin" dengan perintah `/plugin install` muncul di bawah spinner saat Claude merespons.

26* **Session-start suggestion**: jika sinyal `cwd` cocok dengan direktori kerja, notifikasi satu baris `plugin suggestion: <name>@<marketplace> · /plugin` muncul sebelum giliran pertama.

27* **`/plugin` Discover tab**: plugin disematkan ke bagian atas daftar Discover dengan anotasi seperti "suggested for this directory" atau "suggested for stripe commands".

28 

29Spinner tip dan notifikasi session-start adalah bagian dari sistem spinner-tips. Claude Code menonaktifkan keduanya ketika `spinnerTipsEnabled` diselesaikan menjadi `false` di seluruh file pengaturan Anda, atau ketika `excludeDefault` diselesaikan menjadi `true` di seluruh kunci [`spinnerTipsOverride`](/docs/id/settings-reference#spinnertipsoverride) di pengaturan pengguna, `--settings`, dan pengaturan terkelola dan kunci-kunci tersebut mengonfigurasi setidaknya satu tip atau `tipsFile`.

30 

31Pin tab Discover independen dari pengaturan tip.

32 

33Claude Code tidak pernah menginstal plugin secara otomatis. Pengguna selalu mengonfirmasi.

34 

35<h2 id="add-relevance-to-a-plugin-entry">

36 Tambahkan relevance ke entri plugin

37</h2>

38 

39Tambahkan objek `relevance` ke entri plugin di `marketplace.json` Anda. Contoh berikut mendeklarasikan bahwa plugin `terraform-helpers` relevan ketika Claude membaca file `.tf` atau ketika Claude menjalankan `terraform`:

40 

41```json theme={null}

42{

43 "name": "acme-corp-plugins",

44 "owner": { "name": "Acme Platform Team" },

45 "plugins": [

46 {

47 "name": "terraform-helpers",

48 "source": "./plugins/terraform-helpers",

49 "description": "Acme conventions and helpers for Terraform",

50 "relevance": {

51 "topic": "Terraform",

52 "signals": {

53 "cli": ["terraform"],

54 "filesRead": ["**/*.tf"]

55 }

56 }

57 }

58 ]

59}

60```

61 

62Plugin dengan blok `relevance` tetapi tanpa sinyal yang cocok berperilaku seperti entri marketplace lainnya. Plugin ini muncul di daftar Discover di posisi normalnya dan tidak pernah muncul sebagai spinner tip.

63 

64<h2 id="field-reference">

65 Referensi bidang

66</h2>

67 

68<h3 id="relevance">

69 `relevance`

70</h3>

71 

72| Bidang | Tipe | Deskripsi |

73| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

74| `topic` | string | Opsional. Frasa yang mengisi "Working with *topic*?" di spinner tip. Sering kali nama produk, misalnya `Stripe`. Gunakan domain seperti `design` ketika nama plugin tidak terbaca secara alami sebagai topik. Default ke nama plugin dengan setiap segmen tanda hubung dikapitalisasi. Notifikasi session-start tidak menggunakan nilai ini. Maksimal 64 karakter. |

75| `signals` | object | Matcher yang menentukan kapan plugin relevan. Setidaknya satu sinyal diperlukan agar plugin dapat disarankan. Lihat tabel di bawah. |

76 

77<h3 id="relevance-signals">

78 `relevance.signals`

79</h3>

80 

81| Bidang | Tipe | Deskripsi |

82| :------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

83| `cwd` | array of strings | Pola Glob yang dicocokkan dengan direktori kerja sesi. Dicocokkan sebagai jalur absolut dan, ketika berada di dalam repositori git, sebagai jalur relatif terhadap akar repositori. Garis miring dinormalisasi dan tidak peka huruf besar-kecil. Setiap pola cocok dengan direktori itu sendiri dan semuanya di bawahnya, jadi `infra`, `infra/`, dan `infra/**` berperilaku identik. Ini adalah satu-satunya sinyal yang dapat cocok pada awal sesi, sebelum giliran pertama. Maksimal 10 pola dengan 256 karakter masing-masing. |

84| `cli` | array of strings | Nama perintah dari perintah shell yang telah dijalankan Claude sesi ini, misalnya `["stripe"]`. Berlaku di setiap platform: perintah yang dijalankan di Windows melalui PowerShell atau Git Bash dicatat dengan cara yang sama. Claude Code mencatat satu nama perintah per invokasi alat shell: token pertama setelah penugasan variabel lingkungan apa pun dan `sudo`. Perintah gabungan hanya berkontribusi pada perintah terdepan mereka, jadi `cd infra && terraform plan` mencatat `cd`, bukan `terraform`. Kecocokan tepat. Maksimal 10 entri dengan 64 karakter masing-masing. |

85| `hosts` | array of strings | Nama host yang terlihat di URL `http://` atau `https://` dalam perintah Bash sesi ini, misalnya `["api.stripe.com"]`. Hanya nama host huruf kecil telanjang: tanpa skema, port, atau jalur. Kecocokan tepat tidak peka huruf besar-kecil. Maksimal 20 entri dengan 128 karakter masing-masing. |

86| `filesRead` | array of strings | Pola Glob yang dicocokkan dengan jalur file yang telah dibaca Claude sesi ini, misalnya `["**/*.tf"]`. Garis miring dinormalisasi dan tidak peka huruf besar-kecil. Maksimal 10 pola dengan 256 karakter masing-masing. |

87| `manifestDeps` | array of objects | Dependensi yang dideklarasikan dalam manifes paket yang telah dibaca Claude sesi ini. Setiap entri adalah `{ "file": "...", "pattern": "..." }`, di mana `file` adalah ekspresi reguler yang dicocokkan dengan jalur file manifes seperti yang dicatat dalam status sesi, biasanya jalur absolut, dan `pattern` adalah ekspresi reguler yang dicocokkan dengan konten file tersebut. Jangkar `file` di akhir, misalnya `[/\\\\]package\\.json$` dalam bentuk JSON-escaped, karena pola yang dimulai dengan jangkar tidak pernah cocok dengan jalur absolut. Jalur tidak dinormalisasi pemisah untuk sinyal ini, jadi jalur Windows menggunakan garis miring terbalik. File manifes yang lebih besar dari 512 KB dilewati. Kedua nilai adalah string sumber JavaScript `RegExp` paling banyak 256 karakter. `file` cocok tidak peka huruf besar-kecil. `pattern` peka huruf besar-kecil. Maksimal 10 entri. |

88 

89Sinyal `cli`, `hosts`, `filesRead`, dan `manifestDeps` memerlukan riwayat sesi, jadi mereka hanya dapat cocok pada spinner tip dan tab Discover. Sinyal `filesRead` dan `manifestDeps` menguji status file yang dicatat sesi, yang juga mencakup file yang telah ditulis atau diedit Claude dan file memori `CLAUDE.md` yang dimuat otomatis. Untuk kedua sinyal ini, Claude Code melewati jalur di bawah [direktori konfigurasinya](/docs/id/claude-directory) dan direktori sementaranya.

90 

91Contoh berikut menggunakan `manifestDeps` untuk menyarankan plugin Stripe setelah Claude membaca `package.json` yang bergantung pada `stripe`. Pola `file` menggunakan `[/\\\\]` sehingga cocok dengan pemisah jalur garis miring dan garis miring terbalik, dan `\\.` sehingga titik adalah literal. Dalam JSON, setiap garis miring terbalik dalam ekspresi reguler ditulis dua kali.

92 

93```json theme={null}

94{

95 "name": "stripe-helpers",

96 "source": "./plugins/stripe-helpers",

97 "relevance": {

98 "topic": "Stripe",

99 "signals": {

100 "manifestDeps": [

101 {

102 "file": "[/\\\\]package\\.json$",

103 "pattern": "\"stripe\"\\s*:"

104 }

105 ]

106 }

107 }

108}

109```

110 

111<Note>

112 Claude Code mengabaikan bidang yang tidak dikenal di bawah `relevance` dan `relevance.signals` pada waktu muat, jadi klien yang lebih lama terus memuat marketplace Anda.

113</Note>

114 

115<h2 id="enable-suggestions-in-managed-settings">

116 Aktifkan saran di managed settings

117</h2>

118 

119Mendeklarasikan `relevance` di `marketplace.json` saja tidak cukup. Administrator harus mendaftarkan marketplace di [managed settings](/docs/id/managed-settings) sebelum sarannya muncul kepada pengguna.

120 

121Tambahkan nama marketplace ke `pluginSuggestionMarketplaces`. Untuk marketplace apa pun selain marketplace resmi Anthropic, juga deklarasikan sumber marketplace di managed settings yang sama, baik sebagai entri nama tersebut di `extraKnownMarketplaces` atau sebagai entri di `strictKnownMarketplaces`. Nama yang didaftarkan diabaikan jika marketplace yang terdaftar di mesin berasal dari sumber yang berbeda. Ini mencegah sumber yang tidak terkait mendaftarkan di bawah nama yang didaftarkan untuk memiliki pluginnya disarankan di seluruh organisasi Anda.

122 

123`managed-settings.json` berikut mendaftarkan marketplace organisasi dari repositori GitHub dan mengaktifkan sarannya:

124 

125```json theme={null}

126{

127 "extraKnownMarketplaces": {

128 "acme-corp-plugins": {

129 "source": {

130 "source": "github",

131 "repo": "acme-corp/claude-plugins"

132 }

133 }

134 },

135 "pluginSuggestionMarketplaces": ["acme-corp-plugins"]

136}

137```

138 

139Marketplace resmi dikecualikan dari persyaratan deklarasi sumber karena namanya hanya dapat terdaftar dari sumber Anthropic resmi. Mendaftarkan nama saja sudah cukup:

140 

141```json theme={null}

142{

143 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

144}

145```

146 

147<h2 id="what-the-user-sees">

148 Apa yang dilihat pengguna

149</h2>

150 

151Ketika sinyal cocok selama sesi, spinner tip berbunyi:

152 

153```text theme={null}

154Working with Terraform? Install the terraform-helpers plugin:

155/plugin install terraform-helpers@acme-corp-plugins

156```

157 

158Pada awal sesi, sinyal `cwd` yang cocok menampilkan notifikasi satu baris:

159 

160```text theme={null}

161plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin

162```

163 

164Saran plugin tertentu muncul paling banyak sekali setiap tiga sesi di seluruh spinner tip dan notifikasi session-start digabungkan, dan tidak ada yang berulang setelah plugin diinstal. Notifikasi session-start juga berhenti muncul setelah saran telah ditampilkan dua kali.

165 

166Di tab `/plugin` Discover, plugin disematkan di atas hasil lainnya dengan anotasi yang menamai sinyal yang cocok, seperti `suggested for this directory` atau `suggested for terraform commands`. Tab Discover menyematkan plugin tertentu sekali; kunjungan kemudian mencantumkannya dalam urutan normal.

167 

168<h2 id="validate-your-marketplace">

169 Validasi marketplace Anda

170</h2>

171 

172Jalankan `claude plugin validate` terhadap direktori marketplace Anda untuk memeriksa blok `relevance` sebelum menerbitkan:

173 

174```

175claude plugin validate ./my-marketplace

176```

177 

178Validator melaporkan kunci yang tidak dikenal di bawah `relevance` dan `relevance.signals` sebagai peringatan, menandai nilai `relevance` yang bukan objek, dan menolak entri `signals.hosts` yang menyertakan skema, port, atau jalur.

179 

180<h2 id="see-also">

181 Lihat juga

182</h2>

183 

184* [Buat dan distribusikan marketplace plugin](/docs/id/plugin-marketplaces): bangun marketplace yang menghosting plugins Anda

185* [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugin-hints): minta pengguna dari CLI Anda sendiri alih-alih dari sinyal sesi Claude Code

186* [Semua pengaturan](/docs/id/settings-reference#pluginsuggestionmarketplaces): `pluginSuggestionMarketplaces` dan `extraKnownMarketplaces`

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

plugins-reference.md +0 −1645 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# Referensi Plugins

6 

7> Referensi teknis lengkap untuk sistem plugin Claude Code, termasuk skema, perintah CLI, dan spesifikasi komponen.

8 

9<Tip>

10 Mencari cara memasang plugins? Lihat [Temukan dan pasang plugins](/docs/id/discover-plugins). Untuk membuat plugins, lihat [Plugins](/docs/id/plugins). Untuk mendistribusikan plugins, lihat [Plugin marketplaces](/docs/id/plugin-marketplaces).

11</Tip>

12 

13Sebuah **plugin** adalah direktori yang mandiri berisi komponen-komponen yang memperluas Claude Code dengan fungsionalitas khusus. Komponen plugin mencakup skills, agents, hooks, MCP servers, LSP servers, dan monitors.

14 

15<h2 id="plugin-components-reference">

16 Referensi komponen plugin

17</h2>

18 

19<h3 id="skills">

20 Skills

21</h3>

22 

23Plugin menambahkan skills ke Claude Code, membuat pintasan `/name` yang dapat Anda atau Claude panggil.

24 

25**Lokasi**: Direktori `skills/` atau `commands/` di root plugin, atau file `SKILL.md` tunggal di root plugin

26 

27**Format file**: Skills adalah direktori dengan `SKILL.md`; commands adalah file markdown sederhana

28 

29**Struktur skill**:

30 

31```text theme={null}

32skills/

33├── pdf-processor/

34│ ├── SKILL.md

35│ ├── reference.md (opsional)

36│ └── scripts/ (opsional)

37└── code-reviewer/

38 └── SKILL.md

39```

40 

41Skills dan commands secara otomatis ditemukan ketika plugin diinstal.

42 

43Jika plugin tidak memiliki direktori `skills/` dan tidak memiliki field manifest `skills`, file `SKILL.md` di root plugin dimuat sebagai skill tunggal. Atur field frontmatter `name` untuk mengontrol nama invokasi skill. Tanpanya, Claude Code kembali ke nama direktori instalasi. Untuk plugin yang [disalin ke dalam cache](#plugin-caching-and-file-resolution), nama itu adalah string versi yang berubah pada setiap pembaruan. Untuk plugin yang mengirimkan lebih dari satu skill, gunakan tata letak direktori `skills/` yang ditunjukkan di atas.

44 

45Dalam skills dan commands plugin, field frontmatter Boolean seperti `disable-model-invocation` menerima `yes`, `no`, `on`, `off`, `1`, dan `0` dalam huruf apa pun, selain `true` dan `false`. Sebelum v2.1.218, Claude Code hanya mengenali `true` dan `false`.

46 

47Untuk detail lengkap, lihat [Skills](/docs/id/skills).

48 

49<h3 id="agents">

50 Agents

51</h3>

52 

53Plugin dapat menyediakan subagents khusus untuk tugas-tugas tertentu yang dapat Claude panggil secara otomatis jika sesuai.

54 

55**Lokasi**: Direktori `agents/` di root plugin

56 

57**Format file**: File markdown yang menjelaskan kemampuan agent

58 

59**Struktur agent**:

60 

61```markdown theme={null}

62name: agent-name

63description: Apa yang agent ini spesialisasikan dan kapan Claude harus memanggilnya

64model: sonnet

65effort: medium

66maxTurns: 20

67disallowedTools: Write, Edit

68 

69Prompt sistem terperinci untuk agent yang menjelaskan peran, keahlian, dan perilakunya.

70```

71 

72<h4 id="plugin-agent-frontmatter">

73 Frontmatter agent plugin

74</h4>

75 

76File agent plugin menggunakan [field frontmatter yang sama seperti file subagent](/docs/id/sub-agents#supported-frontmatter-fields), kecuali bahwa Claude Code hanya menghormati beberapa di antaranya ketika agent berasal dari plugin:

77 

78* **Didukung**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, dan `experimental`. Satu-satunya nilai `isolation` yang valid adalah `"worktree"`.

79* **Tidak didukung, untuk alasan keamanan**: `hooks`, `mcpServers`, dan `permissionMode`. Claude Code mengabaikan ini ketika memuat agent dari plugin. Untuk menggunakannya, salin file agent ke `.claude/agents/` atau `~/.claude/agents/`.

80* **Tidak didukung**: `initialPrompt`.

81 

82Anda dapat menempatkan file plugin agent dalam subfolder dari `agents/`. Claude Code [memuatnya secara rekursif](/docs/id/sub-agents#choose-the-subagent-scope) dan menggabungkan nama plugin, setiap nama subfolder, dan nama file dengan titik dua untuk membentuk nama scoped agent. Misalnya, `agents/review/security.md` dalam plugin bernama `my-plugin` dimuat sebagai `my-plugin:review:security`. Dua pengaturan mengubah nama itu:

83 

84* Frontmatter `name`: ini menggantikan hanya nama file, jadi `name: audit` dalam `agents/review/security.md` dimuat sebagai `my-plugin:review:audit`

85* Field manifest [`agents`](#component-path-fields): file yang Anda daftarkan di sana dimuat tanpa nama subfolder, jadi `"agents": "./custom/review/security.md"` dimuat sebagai `my-plugin:security`

86 

87Claude Code memuat agent plugin bahkan ketika frontmatternya tidak memiliki `name` atau tidak dapat diuraikan:

88 

89* Tidak ada `name`: Claude Code memberi nama agent sesuai file, jadi `agents/reviewer.md` dalam plugin bernama `my-plugin` dimuat sebagai `my-plugin:reviewer`

90* Frontmatter yang tidak dapat diuraikan: Claude Code memberi nama agent sesuai file, menggunakan `Agent from my-plugin plugin` sebagai deskripsinya, dan mengabaikan setiap field dalam file

91 

92Sebaliknya, Claude Code melewati file project, user, atau managed agent yang frontmatternya tidak memiliki `name` atau tidak dapat diuraikan.

93 

94Untuk menemukan file dalam direktori `agents/` default plugin yang frontmatternya tidak dapat diuraikan, jalankan `claude plugin validate`. Path yang Anda berikan tergantung pada apakah plugin memiliki manifest, dan kedua contoh menggunakan `./my-plugin` sebagai direktori plugin:

95 

96* Plugin dengan manifest: `claude plugin validate ./my-plugin`

97* Plugin tanpa manifest: `claude plugin validate ./my-plugin/agents`. Memerlukan Claude Code v2.1.233 atau lebih baru.

98 

99Agents muncul dalam [@-mention typeahead](/docs/id/sub-agents#invoke-subagents-explicitly) di bawah nama scoped mereka, seperti `my-plugin:code-reviewer`, setelah plugin diaktifkan.

100 

101Untuk detail lengkap, lihat [Subagents](/docs/id/sub-agents).

102 

103<h3 id="hooks">

104 Hooks

105</h3>

106 

107Plugin dapat menyediakan event handlers yang merespons event Claude Code secara otomatis.

108 

109**Lokasi**: `hooks/hooks.json` di root plugin, atau inline dalam plugin.json

110 

111**Format**: Konfigurasi JSON dengan event matchers dan actions

112 

113`hooks/hooks.json` dapat membawa key `$schema` tingkat atas yang menamai URL JSON Schema untuk autocomplete dan validasi editor. Claude Code mengabaikan key saat waktu load.

114 

115**Konfigurasi hook**:

116 

117```json theme={null}

118{

119 "hooks": {

120 "PostToolUse": [

121 {

122 "matcher": "Write|Edit",

123 "hooks": [

124 {

125 "type": "command",

126 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format-code.sh"

127 }

128 ]

129 }

130 ]

131 }

132}

133```

134 

135Plugin hooks merespons event lifecycle yang sama seperti [user-defined hooks](/docs/id/hooks):

136 

137| Event | Kapan event ini dipicu |

138| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

139| `SessionStart` | Ketika sesi dimulai atau dilanjutkan |

140| `Setup` | Ketika Anda memulai Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam mode `-p`. Untuk persiapan satu kali dalam CI atau skrip |

141| `UserPromptSubmit` | Ketika Anda mengirimkan prompt, sebelum Claude memprosesnya |

142| `UserPromptExpansion` | Ketika perintah yang diketik pengguna berkembang menjadi prompt, sebelum mencapai Claude. Dapat memblokir ekspansi |

143| `PreToolUse` | Sebelum panggilan alat dieksekusi. Dapat memblokir |

144| `PermissionRequest` | Ketika panggilan alat memerlukan keputusan izin |

145| `PermissionDenied` | Ketika mode otomatis menolak panggilan alat, termasuk penolakan tanpa putusan classifier. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberitahu model bahwa mungkin dapat mencoba ulang panggilan alat yang ditolak. Claude Code mengabaikan `retry` ketika classifier tidak menghasilkan putusan |

146| `PostToolUse` | Setelah panggilan alat berhasil |

147| `PostToolUseFailure` | Setelah panggilan alat gagal |

148| `PostToolBatch` | Setelah batch lengkap panggilan alat paralel terselesaikan, sebelum panggilan model berikutnya |

149| `Notification` | Ketika Claude Code mengirimkan notifikasi |

150| `MessageDisplay` | Saat teks pesan asisten ditampilkan |

151| `SubagentStart` | Ketika subagent dimulai |

152| `SubagentStop` | Ketika subagent selesai |

153| `TaskCreated` | Ketika tugas sedang dibuat melalui `TaskCreate` |

154| `TaskCompleted` | Ketika tugas sedang ditandai sebagai selesai |

155| `Stop` | Ketika Claude selesai merespons |

156| `StopFailure` | Ketika giliran berakhir karena kesalahan API |

157| `TeammateIdle` | Ketika rekan tim [agent team](/docs/id/agent-teams) akan menjadi idle |

158| `InstructionsLoaded` | Ketika file CLAUDE.md atau `.claude/rules/*.md` dimuat ke dalam konteks. Dipicu saat awal sesi dan ketika file dimuat dengan malas selama sesi |

159| `ConfigChange` | Ketika file konfigurasi berubah selama sesi |

160| `CwdChanged` | Ketika direktori kerja berubah, misalnya ketika Claude mengeksekusi perintah `cd`. Berguna untuk manajemen lingkungan reaktif dengan alat seperti direnv |

161| `DirectoryAdded` | Ketika direktori kerja ditambahkan di tengah sesi melalui `/add-dir` atau permintaan kontrol SDK `register_repo_root` |

162| `FileChanged` | Ketika file yang dipantau berubah di disk. Bidang `matcher` menentukan nama file mana yang dipantau |

163| `WorktreeCreate` | Ketika worktree sedang dibuat melalui `--worktree`, `isolation: "worktree"`, atau untuk sesi latar belakang. Menggantikan perilaku git default |

164| `WorktreeRemove` | Ketika worktree sedang dihapus saat keluar sesi, ketika subagent selesai, atau ketika Anda menghapus sesi latar belakang |

165| `PreCompact` | Sebelum pemadatan konteks |

166| `PostCompact` | Setelah pemadatan konteks selesai |

167| `PreModelSwitch` | Sebelum Claude Code menerapkan pergantian model yang Anda atau klien minta. Dapat memblokir pergantian |

168| `PostModelSwitch` | Setelah model sesi berubah, termasuk perubahan yang Claude Code lakukan sendiri, seperti memulihkan model ketika Anda melanjutkan sesi |

169| `Elicitation` | Ketika server MCP meminta input pengguna selama panggilan alat |

170| `ElicitationResult` | Setelah pengguna merespons elicitation MCP, sebelum respons dikirim kembali ke server |

171| `SessionEnd` | Ketika sesi berakhir |

172 

173**Tipe hook**:

174 

175* `command`: jalankan perintah shell atau script

176* `http`: kirim event JSON sebagai POST request ke URL

177* `mcp_tool`: panggil tool pada [MCP server](/docs/id/mcp) yang dikonfigurasi

178* `prompt`: evaluasi prompt dengan LLM (menggunakan placeholder `$ARGUMENTS` untuk konteks)

179* `agent`: jalankan verifier agentic dengan tools untuk tugas verifikasi kompleks

180 

181Hooks yang menargetkan [bundled MCP server](#mcp-servers) plugin sendiri harus menggunakan nama scopednya. Tool matchers dan field `if` mengambil nama tool scoped `mcp__plugin_<plugin-name>_<server-name>__<tool>`, dan field `server` hook `mcp_tool` mengambil `plugin:<plugin-name>:<server-name>`. Matcher yang ditulis terhadap bare server key tidak pernah aktif. Lihat [Match MCP tools](/docs/id/hooks#match-mcp-tools) dan [Plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers).

182 

183<h3 id="mcp-servers">

184 MCP servers

185</h3>

186 

187Plugin dapat membundel Model Context Protocol (MCP) servers untuk menghubungkan Claude Code dengan tools dan services eksternal.

188 

189**Lokasi**: `.mcp.json` di root plugin, atau inline dalam plugin.json

190 

191**Format**: Konfigurasi MCP server standar

192 

193**Konfigurasi MCP server**:

194 

195```json theme={null}

196{

197 "mcpServers": {

198 "plugin-database": {

199 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

200 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

201 "env": {

202 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

203 }

204 },

205 "plugin-api-client": {

206 "command": "npx",

207 "args": ["@company/mcp-server", "--plugin-mode"]

208 }

209 }

210}

211```

212 

213**Perilaku integrasi**:

214 

215* MCP servers plugin dimulai secara otomatis ketika plugin diaktifkan

216* Servers muncul sebagai MCP tools standar dalam toolkit Claude

217* Plugin servers dapat dikonfigurasi secara independen dari user MCP servers

218* Jika Anda menjalankan [`/reload-plugins`](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) di tengah sesi, Claude Code mempertahankan koneksi live dari servers yang konfigurasinya tidak berubah

219 

220<h3 id="lsp-servers">

221 LSP servers

222</h3>

223 

224<Tip>

225 Mencari untuk menggunakan LSP plugins? Instal dari marketplace resmi: cari "lsp" di tab Discover `/plugin`. Bagian ini mendokumentasikan cara membuat LSP plugins untuk bahasa yang tidak tercakup oleh marketplace resmi.

226</Tip>

227 

228Plugin dapat menyediakan [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) servers untuk memberikan Claude [real-time code intelligence](/docs/id/discover-plugins#code-intelligence) saat bekerja pada codebase Anda.

229 

230**Lokasi**: `.lsp.json` di root plugin, atau inline dalam `plugin.json`

231 

232**Format**: Konfigurasi JSON yang memetakan nama language server ke konfigurasi mereka

233 

234**Format file `.lsp.json`**:

235 

236```json theme={null}

237{

238 "go": {

239 "command": "gopls",

240 "args": ["serve"],

241 "extensionToLanguage": {

242 ".go": "go"

243 }

244 }

245}

246```

247 

248**Inline dalam `plugin.json`**:

249 

250```json theme={null}

251{

252 "name": "my-plugin",

253 "lspServers": {

254 "go": {

255 "command": "gopls",

256 "args": ["serve"],

257 "extensionToLanguage": {

258 ".go": "go"

259 }

260 }

261 }

262}

263```

264 

265**Field yang diperlukan:**

266 

267| Field | Deskripsi |

268| :-------------------- | :------------------------------------------------- |

269| `command` | Binary LSP yang akan dieksekusi (harus dalam PATH) |

270| `extensionToLanguage` | Memetakan ekstensi file ke identifier bahasa |

271 

272**Field opsional:**

273 

274| Field | Deskripsi |

275| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

276| `args` | Argumen command-line untuk LSP server |

277| `transport` | Transport komunikasi: `stdio` (default) atau `socket`. Claude Code menerima `socket` tetapi menjalankan setiap server melalui stdio, jadi aturan protokol stdout berlaku untuk semua servers |

278| `env` | Variabel environment yang diatur saat memulai server |

279| `initializationOptions` | Opsi yang dilewatkan ke server selama inisialisasi |

280| `settings` | Settings yang dilewatkan melalui `workspace/didChangeConfiguration` |

281| `workspaceFolder` | Path folder workspace untuk server |

282| `startupTimeout` | Waktu maksimal untuk menunggu startup server (milliseconds) |

283| `shutdownTimeout` | Waktu maksimal untuk menunggu graceful shutdown (milliseconds). Ketika timeout berlalu, Claude Code menghentikan proses server. Ketika tidak diatur, tidak ada timeout yang berlaku |

284| `restartOnCrash` | Apakah memulai ulang server setelah crash. Default ke `true`. Atur ke `false` untuk membiarkan server yang crash tetap berhenti daripada memulai ulang |

285| `maxRestarts` | Jumlah maksimal upaya restart sebelum menyerah |

286| `diagnostics` | Apakah mendorong diagnostics ke konteks Claude setelah edits (default `true`). Atur ke `false` untuk menjaga navigasi kode tetapi menekan injeksi diagnostik otomatis. |

287 

288`restartOnCrash` dan `shutdownTimeout` memerlukan Claude Code v2.1.205 atau lebih baru. Sebelum v2.1.205, skema config menerima kedua opsi tetapi mengatur salah satu menyebabkan Claude Code melewati LSP server itu sepenuhnya pada startup, dengan alasan hanya terlihat dalam output `claude --debug`.

289 

290**Multiple servers untuk ekstensi yang sama**: ketika lebih dari satu LSP server yang diaktifkan mendeklarasikan ekstensi file yang sama dalam `extensionToLanguage`, apakah servers berasal dari satu plugin atau dari plugin berbeda, server pertama yang terdaftar menangani file dengan ekstensi itu dan yang lain tidak pernah dimulai. Interface `/plugin` menampilkan peringatan yang menamai plugin yang servernya aktif.

291 

292**Servers yang gagal menginisialisasi**: Claude Code melewati server yang konfigurasinya tidak valid, misalnya yang hilang `command` atau `extensionToLanguage`, dan server yang dikonfigurasi lainnya masih dimulai. Jalankan `claude --debug` untuk melihat mengapa server dilewati.

293 

294Server yang dilewati tidak mengklaim ekstensi filenya, jadi server valid lain yang mendeklarasikan ekstensi yang sama, dari plugin yang sama atau berbeda, masih menangani file tersebut.

295 

296**Kirim output log ke stderr, bukan stdout**: Claude Code membaca stdout server hanya sebagai pesan protokol, dan menerima header pesan hingga 64 KiB dan body pesan hingga 32 MiB. Claude Code memutuskan server yang melebihi batas apa pun atau menulis output non-protokol ke stdout, dan menghitung putus sebagai crash untuk `restartOnCrash` dan `maxRestarts`. Ketika Anda menjalankan dengan `--debug`, Claude Code menulis error yang menamai penyebabnya ke debug log.

297 

298<Warning>

299 **Anda harus menginstal binary language server secara terpisah.** LSP plugins mengonfigurasi cara Claude Code terhubung ke language server, tetapi mereka tidak menyertakan server itu sendiri. Jika Anda melihat `Executable not found in $PATH` di tab Errors `/plugin`, instal binary yang diperlukan untuk bahasa Anda.

300</Warning>

301 

302**Plugin LSP yang tersedia:**

303 

304| Plugin | Language server | Perintah instalasi |

305| :------------------ | :------------------------- | :---------------------------------------------------------------------------------------- |

306| `pyright-lsp` | Pyright (Python) | `pip install pyright` atau `npm install -g pyright` |

307| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

308| `rust-analyzer-lsp` | rust-analyzer | [Lihat instalasi rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

309 

310Instal language server terlebih dahulu, kemudian instal plugin dari marketplace.

311 

312<h3 id="monitors">

313 Monitors

314</h3>

315 

316Plugin dapat mendeklarasikan background monitors yang Claude Code mulai secara otomatis ketika plugin aktif. Setiap monitor menjalankan perintah shell untuk seumur hidup sesi dan mengirimkan setiap baris stdout ke Claude sebagai notifikasi, sehingga Claude dapat bereaksi terhadap entri log, perubahan status, atau event yang dipolling tanpa diminta untuk memulai watch itu sendiri.

317 

318Plugin monitors menggunakan mekanisme yang sama seperti [Monitor tool](/docs/id/tools-reference#monitor-tool) dan berbagi batasan ketersediaannya. Mereka hanya berjalan dalam sesi CLI interaktif, berjalan unsandboxed pada tingkat kepercayaan yang sama seperti [hooks](#hooks), dan dilewati pada host di mana Monitor tool tidak tersedia.

319 

320**Lokasi**: `monitors/monitors.json` di root plugin, atau inline dalam `plugin.json`

321 

322**Format**: Array JSON dari entri monitor

323 

324`monitors/monitors.json` berikut mengawasi endpoint status deployment dan log error lokal:

325 

326```json theme={null}

327[

328 {

329 "name": "deploy-status",

330 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

331 "description": "Deployment status changes"

332 },

333 {

334 "name": "error-log",

335 "command": "tail -F ./logs/error.log",

336 "description": "Application error log",

337 "when": "on-skill-invoke:debug"

338 }

339]

340```

341 

342Untuk mendeklarasikan monitors inline, atur `experimental.monitors` dalam `plugin.json` ke array yang sama. Untuk memuat dari path non-default, atur `experimental.monitors` ke string path relatif seperti `"./config/monitors.json"`. Monitors adalah [komponen eksperimental](#experimental-components).

343 

344**Field yang diperlukan:**

345 

346| Field | Deskripsi |

347| :------------ | :------------------------------------------------------------------------------------------------------------- |

348| `name` | Identifier unik dalam plugin. Mencegah proses duplikat ketika plugin dimuat ulang atau skill dipanggil lagi |

349| `command` | Perintah shell yang dijalankan sebagai proses background persisten dalam direktori kerja sesi |

350| `description` | Ringkasan singkat tentang apa yang sedang diawasi. Ditampilkan dalam panel task dan dalam ringkasan notifikasi |

351 

352**Field opsional:**

353 

354| Field | Deskripsi |

355| :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

356| `when` | Mengontrol kapan monitor dimulai. `"always"` memulainya pada startup sesi dan pada reload plugin, dan merupakan default. `"on-skill-invoke:<skill-name>"` memulainya pertama kali skill bernama dalam plugin ini dikirimkan |

357 

358Nilai `command` mendukung substitusi path [path substitutions](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, dan `${CLAUDE_PROJECT_DIR}`, ditambah `${ENV_VAR}` apa pun dari environment. Awali perintah dengan `cd "${CLAUDE_PLUGIN_ROOT}" && ` jika script perlu berjalan dari direktori plugin itu sendiri.

359 

360Monitor `command` tidak dapat mereferensikan nilai [`${user_config.*}`](#user-configuration). Perintah berjalan melalui shell, jadi Claude Code menolak monitor dengan [error](/docs/id/errors#plugin-command-references-user-config) daripada mensubstitusi nilai. Proses monitor tidak menerima variabel environment `CLAUDE_PLUGIN_OPTION_<KEY>`, jadi biarkan script monitor membaca nilai dari file config yang dimilikinya.

361 

362Jika Anda menonaktifkan plugin di tengah sesi, Claude Code tidak menghentikan monitors yang sudah berjalan; mereka berhenti ketika sesi berakhir.

363 

364<h3 id="themes">

365 Themes

366</h3>

367 

368Plugin dapat mengirimkan color themes yang muncul dalam `/theme` bersama preset built-in dan themes lokal pengguna. Theme adalah file JSON dalam `themes/` dengan preset `base` dan map `overrides` sparse dari color tokens. Themes adalah [komponen eksperimental](#experimental-components).

369 

370```json theme={null}

371{

372 "name": "Dracula",

373 "base": "dark",

374 "overrides": {

375 "claude": "#bd93f9",

376 "error": "#ff5555",

377 "success": "#50fa7b"

378 }

379}

380```

381 

382Ketika pengguna memilih theme plugin, Claude Code menyimpan `custom:<plugin-name>:<slug>` dalam config mereka. Plugin themes adalah read-only: ketika pengguna menekan `Ctrl+E` pada satu dalam `/theme`, Claude Code menyalinnya ke `~/.claude/themes/` sehingga mereka dapat mengedit salinannya.

383 

384***

385 

386<h2 id="plugin-installation-scopes">

387 Cakupan instalasi plugin

388</h2>

389 

390Ketika Anda menginstal plugin, Anda memilih **cakupan** yang menentukan di mana plugin tersedia dan siapa lagi yang dapat menggunakannya:

391 

392| Cakupan | File pengaturan | Kasus penggunaan |

393| :-------- | :--------------------------------------- | :-------------------------------------------------------------------------------------- |

394| `user` | `~/.claude/settings.json` | Plugin pribadi tersedia di semua proyek (default) |

395| `project` | `.claude/settings.json` | Plugin tim yang dibagikan melalui kontrol versi |

396| `local` | `.claude/settings.local.json` | Plugin khusus proyek, diabaikan git ketika Claude Code menyimpan pengaturan ke dalamnya |

397| `managed` | [Managed settings](/docs/id/managed-settings) | Plugin terkelola (baca saja, hanya perbarui) |

398 

399Plugin menggunakan sistem cakupan yang sama dengan konfigurasi Claude Code lainnya. Untuk instruksi instalasi dan flag cakupan, lihat [Install plugins](/docs/id/discover-plugins#install-plugins). Untuk penjelasan lengkap tentang cakupan, lihat [Configuration scopes](/docs/id/settings#where-settings-live).

400 

401***

402 

403<h2 id="skills-directory-plugins">

404 Plugin direktori skills

405</h2>

406 

407Folder apa pun di bawah direktori skills yang berisi manifes `.claude-plugin/plugin.json` dimuat sebagai plugin bernama `<name>@skills-dir` pada sesi berikutnya, tanpa marketplace dan tanpa langkah instalasi. Buat satu dengan [`plugin init`](#plugin-init). Tidak seperti instalasi marketplace yang disalin, plugin ditemukan di tempat daripada disalin ke cache plugin.

408 

409Pohon direktori skills mendukung tiga hal yang berbeda:

410 

411| Apa yang Anda miliki | Apa itu |

412| :-------------------------------------------- | :---------------------------------------------------------------------------------------------------- |

413| `<skills-dir>/foo/SKILL.md` tanpa manifes | [skill](/docs/id/skills) biasa bernama `foo` |

414| `<skills-dir>/foo/.claude-plugin/plugin.json` | Plugin `foo@skills-dir`, yang dapat menggabungkan skills, agents, hooks, dan lainnya miliknya sendiri |

415| `<plugin>/skills/bar/SKILL.md` | Skill `bar` yang dikemas di dalam plugin |

416 

417<h3 id="choose-where-the-plugin-loads-from">

418 Pilih tempat plugin dimuat dari

419</h3>

420 

421| Direktori skills | Cakupan | Memuat |

422| :---------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------ |

423| `~/.claude/skills/` | personal | Di setiap proyek, karena lokasi hanya milik Anda |

424| `<cwd>/.claude/skills/` | proyek | Hanya setelah Anda menerima [dialog kepercayaan](/docs/id/permissions#what-runs-before-you-trust-a-folder) workspace untuk folder tersebut |

425 

426Plugin dengan cakupan proyek diperiksa ke dalam repositori dan menjangkau setiap kolaborator yang mengklonnya. Karena konten tersebut berasal dari repositori daripada dari Anda, konten tersebut dimuat hanya setelah gerbang kepercayaan yang sama yang mengatur aturan izin proyek di `.claude/settings.json`, jadi mempercayai folder induk atau menjalankan dengan `-p` tidak cukup, dan komponen yang menjalankan kode dibatasi lebih lanjut:

427 

428* Server MCP yang dideklarasikannya melalui [persetujuan per-server yang sama](/docs/id/mcp) sebagai `.mcp.json` proyek

429* Server LSP dimulai hanya setelah Anda mempercayai workspace

430* [Monitor latar belakang](#monitors) tidak dimuat

431 

432Plugin dengan cakupan personal tidak memiliki pembatasan ini.

433 

434<Warning>

435 Plugin `@skills-dir` dengan cakupan proyek dimuat hanya dari `.claude/skills/` dari [direktori kerja utama](/docs/id/permissions#working-directories) sesi. Mereka tidak [berjalan ke akar repositori](/docs/id/skills#discovery-from-parent-and-nested-directories) seperti yang dilakukan skills dan perintah biasa, jadi peluncuran dari subdirektori melewatkan plugin yang berada di akar repo. Luncurkan dari akar repositori, atau [pindahkan sesi ke sana dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru.

436</Warning>

437 

438<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

439 Edit, muat ulang, dan nonaktifkan plugin direktori skills

440</h3>

441 

442Perubahan yang Anda buat pada `SKILL.md` skill berlaku segera dalam sesi saat ini. Perubahan pada komponen lain plugin, seperti `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/`, tidak. Jalankan `/reload-plugins` atau mulai ulang Claude Code untuk mengambilnya. Lihat [Deteksi perubahan langsung](/docs/id/skills#live-change-detection).

443 

444Untuk menghentikan pemuatan plugin direktori skills, hapus foldernya atau nonaktifkan berdasarkan nama. Tidak ada langkah `uninstall` karena tidak ada yang diinstal dari marketplace.

445 

446```bash theme={null}

447claude plugin disable my-tool@skills-dir

448```

449 

450***

451 

452<h2 id="synced-plugins">

453 Plugin yang disinkronkan dari claude.ai

454</h2>

455 

456Claude Code memuat plugin yang diaktifkan untuk akun claude.ai Anda, termasuk plugin yang organisasi Anda aktifkan untuk anggotanya, bersama dengan plugin yang Anda instal dari marketplace. Plugin ini diunduh ke dalam `~/.claude/plugins/synced/` dan dimuat sebagai `<name>@synced`, tanpa marketplace dan tanpa catatan instalasi. Plugin yang disinkronkan berjalan dengan kepercayaan yang sama seperti plugin marketplace yang Anda instal: skills, agents, hooks, server MCP, dan server LSP semuanya dimuat.

457 

458Tempat Claude Code menyinkronkan plugin ini tergantung pada sesi:

459 

460* Di [Cowork](https://claude.com/product/cowork) dan [sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup), Claude Code mengunduh plugin ke dalam lingkungan sesi itu sendiri ketika sesi dimulai. Sebelum v2.1.239, Claude Code memuat plugin ini sebagai `<name>@inline`, identitas yang digunakan plugin `--plugin-dir`.

461* Di sesi terminal tempat Anda masuk dengan akun claude.ai Anda, Claude Code memeriksa akun Anda sekali setiap kali dimulai, kemudian mengunduh plugin baru dan yang diperbarui serta menghapus plugin yang Anda atau organisasi Anda matikan, semuanya di latar belakang. Sinkronisasi di sesi terminal memerlukan Claude Code v2.1.273 atau lebih baru.

462 

463Pemeriksaan peluncuran berjalan di latar belakang, sehingga dapat selesai setelah sesi Anda dimulai. Ketika menambah, memperbarui, atau menghapus plugin yang disinkronkan di sesi interaktif, Claude Code menampilkan `Plugins changed. Run /reload-plugins to activate.` Jalankan [`/reload-plugins`](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) untuk memuat perubahan di sesi itu, atau biarkan untuk lain kali Anda memulai Claude Code. Jika Anda mengaktifkan plugin di claude.ai saat sesi sedang berjalan, Claude Code mengunduhnya lain kali dimulai.

464 

465Sinkronisasi plugin di sesi terminal berjalan di bawah kondisi masuk yang sama seperti [skills yang disinkronkan dari claude.ai](/docs/id/skills#where-synced-skills-load). Plugin ini juga memerlukan masuk yang memberikan Claude Code akses ke plugin akun Anda.

466 

467Masuk dari versi Claude Code yang lebih awal mengambil akses plugin lain kali Claude Code memperbarui masuk itu di latar belakang, dalam beberapa jam, atau segera jika Anda menjalankan `/login` lagi. Sinkronisasi plugin dimulai lain kali Anda memulai Claude Code setelah itu.

468 

469`claude plugin list` menampilkan plugin yang disinkronkan di bawah judul `Synced from claude.ai`, dan tab **Installed** `/plugin` mencantumkannya dengan `synced` sebagai sumber mereka. Kelola plugin yang disinkronkan dengan ID `<name>@synced` yang dicetak oleh `claude plugin list`:

470 

471* **Matikan salah satu**: jalankan `claude plugin disable <name>@synced`, atau matikan dari tab **Installed** `/plugin`. Claude Code menyimpan pilihan sebagai `"<name>@synced": false` di [`enabledPlugins`](/docs/id/settings-reference#enabledplugins) tingkat pengguna Anda. Untuk menghidupkan kembali plugin, jalankan `claude plugin enable <name>@synced`.

472* **Jaga plugin tetap keluar di mana-mana**: [matikan plugin untuk akun claude.ai Anda](/docs/id/desktop#extend-claude-code). Untuk menjaganya tetap keluar dari satu proyek di setiap lingkungan, atur `"<name>@synced": false` di bawah `enabledPlugins` di `.claude/settings.json` proyek yang berkomitmen itu.

473* **Kelola plugin itu sendiri di claude.ai**: `claude plugin install`, `update`, dan `uninstall` tidak berlaku untuk plugin yang disinkronkan. Claude Code mengunduh pembaruan plugin pada sinkronisasi berikutnya. Untuk menghapusnya, matikan plugin untuk akun claude.ai Anda, dan Claude Code menghapusnya pada sinkronisasi berikutnya.

474* **Hentikan sinkronisasi di mesin**: atur [`syncClaudeAiPlugins`](/docs/id/settings-reference#syncclaudeaiplugins) ke `false` di pengaturan pengguna Anda. Claude Code berhenti mengunduh, dan lain kali dimulai, plugin yang sudah disinkronkan dipindahkan ke `~/.claude/plugins/.trash/` dan tidak lagi dimuat. Organisasi Anda dapat mengatur kunci yang sama di [pengaturan terkelola](/docs/id/managed-settings), atau matikan Skills di claude.ai, yang juga menghentikan plugin dari sinkronisasi.

475 

476Anda tidak dapat mematikan plugin yang organisasi Anda tandai sebagai wajib di claude.ai. Claude Code memuat plugin bahkan jika Anda menonaktifkannya sebelumnya, dan `claude plugin disable` menolak dengan `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.` Di `claude plugin list`, plugin ini ditandai `required by your org`.

477 

478Ketika plugin yang diaktifkan dari sumber lain cocok dengan nama plugin yang disinkronkan, Claude Code memuat plugin itu dan melaporkan salinan yang disinkronkan sebagai tidak dimuat. Sumber lain termasuk instalasi marketplace, [plugin skills-directory](#skills-directory-plugins), plugin `--plugin-dir`, dan plugin yang tertanam di Claude Code. Untuk menggunakan salinan claude.ai sebagai gantinya, nonaktifkan salinan Anda sendiri. Sebelum v2.1.239, Claude Code memuat salinan yang disinkronkan alih-alih instalasi marketplace dengan nama yang sama.

479 

480***

481 

482<h2 id="plugin-manifest-schema">

483 Skema manifes plugin

484</h2>

485 

486File `.claude-plugin/plugin.json` mendefinisikan metadata dan konfigurasi plugin Anda.

487 

488Manifes bersifat opsional. Jika dihilangkan, Claude Code secara otomatis menemukan komponen di [lokasi default](#file-locations-reference) dan menurunkan nama plugin dari nama direktori. Gunakan manifes ketika Anda perlu memberikan metadata atau jalur komponen kustom.

489 

490<h3 id="complete-schema">

491 Skema lengkap

492</h3>

493 

494```json theme={null}

495{

496 "name": "plugin-name",

497 "displayName": "Plugin Name",

498 "version": "1.2.0",

499 "description": "Brief plugin description",

500 "author": {

501 "name": "Author Name",

502 "email": "author@example.com",

503 "url": "https://github.com/author"

504 },

505 "homepage": "https://docs.example.com/plugin",

506 "repository": "https://github.com/author/plugin",

507 "license": "MIT",

508 "keywords": ["keyword1", "keyword2"],

509 "metadata": { "catalogId": "cat-123", "tier": "pro" },

510 "skills": "./custom/skills/",

511 "commands": ["./custom/commands/special.md"],

512 "agents": ["./custom/agents/reviewer.md"],

513 "hooks": "./config/hooks.json",

514 "mcpServers": "./mcp-config.json",

515 "outputStyles": "./styles/",

516 "lspServers": "./.lsp.json",

517 "experimental": {

518 "themes": "./themes/",

519 "monitors": "./monitors.json",

520 "evals": "quality/evals"

521 },

522 "dependencies": [

523 "helper-lib",

524 { "name": "secrets-vault", "version": "~2.1.0" }

525 ]

526}

527```

528 

529<h3 id="required-fields">

530 Bidang yang diperlukan

531</h3>

532 

533Jika Anda menyertakan manifes, `name` adalah satu-satunya bidang yang diperlukan.

534 

535| Bidang | Tipe | Deskripsi | Contoh |

536| :----- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

537| `name` | string | Pengidentifikasi unik dalam kebab-case, tanpa spasi, karakter kontrol, atau karakter pemformatan bidirectional. Ketika [entri marketplace](/docs/id/plugin-marketplaces#plugin-entries) mencantumkan plugin dengan nama berbeda, nama entri marketplace adalah yang digunakan oleh kunci `enabledPlugins` dan `/plugin` | `"deployment-tools"` |

538 

539Nama ini digunakan untuk namespacing komponen. Misalnya, di UI, agent `agent-creator` untuk plugin dengan nama `plugin-dev` akan muncul sebagai `plugin-dev:agent-creator`.

540 

541<h3 id="unrecognized-fields">

542 Bidang yang tidak dikenali

543</h3>

544 

545Claude Code mengabaikan bidang tingkat atas yang tidak dikenalinya. Anda dapat menyimpan metadata dari ekosistem lain di `plugin.json` dan plugin masih dimuat. Ini membuat praktis untuk mempertahankan satu manifes yang berfungsi ganda sebagai manifes ekstensi VS Code atau Cursor, `package.json` npm, atau manifes bundle MCPB/DXT.

546 

547`claude plugin validate` melaporkan bidang yang tidak dikenali sebagai peringatan, bukan kesalahan. Jika bidang hanya berbeda satu atau dua karakter dari yang dikenali, peringatan menyarankan nama yang mungkin dimaksudkan. Plugin dengan hanya peringatan bidang yang tidak dikenali masih lulus validasi dan dimuat saat runtime.

548 

549Bagaimana Claude Code menangani bidang yang dikenali yang nilainya memiliki tipe yang salah tergantung pada bidangnya:

550 

551* **Sebagian besar bidang**: plugin gagal dimuat. Misalnya, nilai `keywords` yang berupa string bukan array adalah kesalahan pemuatan, dan `claude plugin validate` melaporkannya sebagai demikian.

552* **`experimental` dan `metadata`**: Claude Code mengabaikan nilai non-object, dan `claude plugin validate` melaporkan peringatan.

553 

554Teruskan `--strict` untuk memperlakukan peringatan sebagai kesalahan. Gunakan di CI untuk menangkap nama bidang yang salah eja atau bidang yang tersisa dari manifes alat lain sebelum menerbitkan, meskipun plugin akan dimuat saat runtime.

555 

556```bash theme={null}

557claude plugin validate ./my-plugin --strict

558```

559 

560<h3 id="metadata-fields">

561 Bidang metadata

562</h3>

563 

564| Bidang | Tipe | Deskripsi | Contoh |

565| :--------------- | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

566| `$schema` | string | URL JSON Schema untuk autocomplete dan validasi editor. Claude Code mengabaikan bidang ini saat waktu pemuatan. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

567| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di pemilih `/plugin` dan permukaan UI lainnya. Untuk plugin yang diinstal marketplace, `displayName` pada [entri marketplace](/docs/id/plugin-marketplaces#optional-plugin-fields) mengambil alih nilai ini. Ketika tidak ada nama tampilan yang ditetapkan di kedua tempat, pengguna melihat `name`. Tidak seperti `name`, dapat berisi spasi dan casing apa pun. Tidak digunakan untuk namespacing atau pencarian. | `"Deployment Tools"` |

568| `version` | string | Opsional. Versi semantik. Menetapkan ini mengikat plugin ke string versi itu, sehingga pengguna hanya menerima pembaruan ketika Anda menaikkannya, kecuali untuk [sumber `command`](/docs/id/plugin-marketplaces#command-sources) atau plugin [dimuat di tempat](#plugin-caching-and-file-resolution); lihat [Manajemen versi](#version-management). Jika juga ditetapkan di entri marketplace, `plugin.json` menang. Jika dihilangkan, versi berasal dari sumber berikutnya di [Manajemen versi](#version-management). | `"2.1.0"` |

569| `description` | string | Penjelasan singkat tentang tujuan plugin | `"Deployment automation tools"` |

570| `author` | object | Informasi penulis | `{"name": "Dev Team", "email": "dev@company.com"}` |

571| `homepage` | string | URL dokumentasi | `"https://docs.example.com"` |

572| `repository` | string | URL kode sumber | `"https://github.com/user/plugin"` |

573| `license` | string | Pengidentifikasi lisensi | `"MIT"`, `"Apache-2.0"` |

574| `keywords` | array | Tag penemuan | `["deployment", "ci-cd"]` |

575| `metadata` | object | Objek bentuk bebas untuk data Anda sendiri, seperti bidang hak atau katalog. Claude Code tidak membacanya, jadi nilai tidak pernah mempengaruhi perilaku plugin. Claude Code mengabaikan nilai non-object, dan `claude plugin validate` melaporkannya sebagai peringatan. Sebelum v2.1.222, Claude Code memperlakukan kunci sebagai [bidang yang tidak dikenali](#unrecognized-fields). | `{"catalogId": "cat-123"}` |

576| `defaultEnabled` | boolean | Apakah plugin dimulai dalam keadaan diaktifkan ketika pengguna belum menetapkan satu. Default ke `true`. Lihat [Pengaktifan default](#default-enablement). | `false` |

577 

578<h3 id="default-enablement">

579 Pengaktifan default

580</h3>

581 

582Atur `defaultEnabled: false` di `plugin.json` untuk mengirimkan plugin yang diinstal dalam keadaan dinonaktifkan. Pengguna menghidupkannya dengan `claude plugin enable <plugin>` atau antarmuka `/plugin`. Gunakan ini untuk plugin yang menambah biaya atau ruang lingkup yang harus dipilih pengguna, seperti yang menghubungkan ke layanan eksternal.

583 

584`defaultEnabled` adalah fallback ketika tidak ada yang lain telah memutuskan status plugin. Pengaturan pengguna dan persyaratan ketergantungan mengambil alih:

585 

586* **Pengaturan pengguna**: entri untuk plugin di `enabledPlugins` di ruang lingkup pengaturan apa pun. Setelah ditulis, itu bertahan di seluruh pembaruan dan penginstalan ulang plugin, jadi mengubah `defaultEnabled` dalam rilis yang lebih baru tidak membalik pengguna yang ada.

587* **Persyaratan ketergantungan**: ketika plugin diperlukan oleh plugin lain yang aktif, Claude Code menulis `true` untuk itu pada waktu instalasi atau pengaktifan. Itu memberikannya pengaturan eksplisit, jadi default-nya sendiri tidak lagi berlaku. Lihat [Aktifkan atau nonaktifkan plugin dengan ketergantungan](/docs/id/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).

588 

589Bidang yang sama dapat muncul di entri marketplace plugin, di mana itu mengambil alih nilai di `plugin.json`. Lihat [Bidang plugin opsional](/docs/id/plugin-marketplaces#optional-plugin-fields).

590 

591<h3 id="component-path-fields">

592 Bidang jalur komponen

593</h3>

594 

595| Bidang | Tipe | Deskripsi | Contoh |

596| :---------------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

597| `skills` | string\|array | Direktori skill kustom yang berisi `<name>/SKILL.md`. Menambah pemindaian `skills/` default. Lihat [Aturan perilaku jalur](#path-behavior-rules) untuk pengecualian akar marketplace | `"./custom/skills/"` |

598| `commands` | string\|array | File skill `.md` datar kustom atau direktori (menggantikan `commands/` default) | `"./custom/cmd.md"` atau `["./cmd1.md"]` |

599| `agents` | string\|array | File agent kustom (menggantikan `agents/` default) | `"./custom/agents/reviewer.md"` |

600| `workflows` | string\|array | File atau direktori skrip [workflow](/docs/id/workflows) kustom (menggantikan `workflows/` default) | `"./custom/workflows/"` |

601| `hooks` | string\|array\|object | Jalur konfigurasi hook atau konfigurasi inline | `"./my-extra-hooks.json"` |

602| `mcpServers` | string\|array\|object | Jalur konfigurasi MCP atau konfigurasi inline | `"./my-extra-mcp-config.json"` |

603| `outputStyles` | string\|array | File/direktori gaya output kustom (menggantikan `output-styles/` default) | `"./styles/"` |

604| `lspServers` | string\|array\|object | Konfigurasi [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) untuk intelijen kode (buka definisi, temukan referensi, dll.) | `"./.lsp.json"` |

605| `experimental.themes` | string\|array | File/direktori tema warna (menggantikan `themes/` default). Lihat [Themes](#themes) | `"./themes/"` |

606| `experimental.monitors` | string\|array | Konfigurasi [Monitor](/docs/id/tools-reference#monitor-tool) latar belakang yang dimulai secara otomatis ketika plugin aktif. Lihat [Monitors](#monitors) | `"./monitors.json"` |

607| `experimental.evals` | string\|array | Direktori di bawah akar plugin yang menyimpan [kasus eval](/docs/id/plugin-evals#use-a-different-eval-directory) plugin, ketika bukan `evals/` default. `claude plugin eval --eval-dir` menggantinya | `"quality/evals"` |

608| `userConfig` | object | Nilai yang dapat dikonfigurasi pengguna yang diminta saat pengaktifan. Lihat [Konfigurasi pengguna](#user-configuration) | |

609| `channels` | array | Deklarasi saluran untuk injeksi pesan (gaya Telegram, Slack, Discord). Lihat [Channels](#channels) | |

610| `dependencies` | array | Plugin lain yang diperlukan plugin ini, secara opsional dengan batasan versi semver. Lihat [Batasi versi ketergantungan plugin](/docs/id/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

611 

612<h3 id="experimental-components">

613 Komponen eksperimental

614</h3>

615 

616Komponen di bawah kunci `experimental`, `themes` dan `monitors`, memiliki skema manifes yang mungkin berubah antar rilis saat mereka stabil. Tempat Anda mendeklarasikannya adalah migrasi terpisah: tingkat atas masih berfungsi, `claude plugin validate` memperingatkan, dan rilis di masa depan akan memerlukan `experimental.*`.

617 

618<h3 id="user-configuration">

619 Konfigurasi pengguna

620</h3>

621 

622Bidang `userConfig` mendeklarasikan nilai yang Claude Code minta dari pengguna ketika plugin diaktifkan. Gunakan ini alih-alih mengharuskan pengguna untuk mengedit `settings.json` secara manual.

623 

624```json theme={null}

625{

626 "userConfig": {

627 "api_endpoint": {

628 "type": "string",

629 "title": "API endpoint",

630 "description": "Your team's API endpoint"

631 },

632 "api_token": {

633 "type": "string",

634 "title": "API token",

635 "description": "API authentication token",

636 "sensitive": true

637 }

638 }

639}

640```

641 

642Kunci harus berupa pengidentifikasi yang valid. Setiap opsi mendukung bidang-bidang ini:

643 

644| Bidang | Diperlukan | Deskripsi |

645| :------------ | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

646| `type` | Ya | Salah satu dari `string`, `number`, `boolean`, `directory`, atau `file` |

647| `title` | Ya | Label ditampilkan di dialog konfigurasi |

648| `description` | Ya | Teks bantuan ditampilkan di bawah bidang |

649| `sensitive` | Tidak | Jika `true`, menyembunyikan input dan menyimpan nilai dalam penyimpanan aman alih-alih `settings.json` |

650| `required` | Tidak | Jika `true`, validasi gagal ketika bidang kosong |

651| `default` | Tidak | Nilai yang digunakan ketika pengguna tidak memberikan apa pun |

652| `options` | Tidak | Untuk tipe `string`, nilai yang diterima bidang, ditampilkan di `/config` sebagai pemilih di atasnya. Lihat [Batasi bidang ke opsi tetap](#limit-a-field-to-fixed-options). Memerlukan Claude Code v2.1.271 atau lebih baru |

653| `multiple` | Tidak | Untuk tipe `string`, izinkan array string |

654| `min` / `max` | Tidak | Batas untuk tipe `number` |

655 

656Kecuali bidang `sensitive` dan daftar `multiple`, setiap bidang dari setiap plugin yang diaktifkan juga muncul sebagai baris di panel `/config`. Baris memerlukan Claude Code v2.1.269 atau lebih baru.

657 

658Setiap nilai tersedia untuk substitusi sebagai `${user_config.KEY}` dalam konfigurasi server MCP dan LSP serta perintah hook. Nilai non-sensitif juga dapat disubstitusi dalam konten skill dan agent. Semua nilai diekspor ke proses hook sebagai variabel lingkungan `CLAUDE_PLUGIN_OPTION_<KEY>`, di mana `<KEY>` adalah kunci opsi dengan huruf besar.

659 

660Bidang yang berjalan dalam shell menolak `${user_config.*}`: mensubstitusi nilai yang dikonfigurasi ke dalam perintah shell akan membiarkan shell menjalankan apa pun yang berisi nilai itu, jadi komponen gagal dengan [kesalahan](/docs/id/errors#plugin-command-references-user-config) sebagai gantinya. Setiap bidang yang ditolak memiliki cara alternatif untuk melewatkan nilai:

661 

662| Bidang yang ditolak | Cara melewatkan nilai |

663| :--------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |

664| Perintah hook bentuk shell | Gunakan [bentuk exec](/docs/id/hooks#exec-form-and-shell-form) dengan `args`, atau baca `CLAUDE_PLUGIN_OPTION_<KEY>` dari lingkungan hook |

665| Perintah [Monitor](#monitors) | Baca nilai dari file konfigurasi dalam skrip |

666| MCP [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) | Baca nilai dari file konfigurasi dalam skrip |

667 

668Sebelum v2.1.207, bidang-bidang ini mensubstitusi nilai `${user_config.KEY}`; perbarui plugin yang mengandalkan ini.

669 

670Nilai non-sensitif disimpan di bawah kunci [`pluginConfigs`](/docs/id/settings-reference#pluginconfigs) di `settings.json` pengguna Anda sebagai `pluginConfigs[<plugin-id>].options`.

671 

672Di macOS, Claude Code menyimpan nilai sensitif di macOS Keychain, kembali ke `~/.claude/.credentials.json` ketika Keychain menolak penulisan. Di platform tanpa keychain yang didukung, itu menyimpannya di `~/.claude/.credentials.json`. Penyimpanan Keychain dibagikan dengan token OAuth dan memiliki batas total sekitar 2 KB, jadi simpan nilai sensitif tetap kecil.

673 

674Claude Code membaca semua nilai `pluginConfigs` dari hanya tiga sumber pengaturan:

675 

676* **Pengaturan pengguna**: `~/.claude/settings.json`, file yang ditulis prompt waktu pengaktifan

677* **`--settings`**: bendera CLI atau pengaturan inline SDK

678* **Pengaturan terkelola**: [kebijakan yang dikendalikan organisasi](/docs/id/permissions#managed-settings)

679 

680Ketika lebih dari satu sumber menetapkan kunci yang sama, pengaturan terkelola mengambil alih, kemudian `--settings`, kemudian pengaturan pengguna. Satu-satunya sumber yang dapat Anda hapus dari daftar ini adalah pengaturan pengguna: teruskan [`--setting-sources`](/docs/id/cli-reference#cli-flags) tanpa `user` dan Claude Code melewatinya. Pengaturan terkelola dan `--settings` tetap apa pun yang Anda teruskan. Opsi [`settingSources`](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) SDK menetapkan daftar yang sama.

681 

682Entri di `.claude/settings.json` atau `.claude/settings.local.json` proyek diabaikan. Kedua file berada di workspace, jadi repositori yang dikloning dapat menyediakan nilai di sana, dan nilai-nilai itu akan mengalir ke perintah hook plugin, konfigurasi server MCP, perintah LSP, dan perintah monitor. Sebelum v2.1.207, entri-entri ini dibaca. Pembatasan khusus untuk `pluginConfigs`: [`enabledPlugins`](/docs/id/settings-reference#enabledplugins) masih menghormati pengaturan proyek dan lokal.

683 

684<h4 id="limit-a-field-to-fixed-options">

685 Batasi bidang ke opsi tetap

686</h4>

687 

688Atur `options` pada bidang `userConfig` untuk membuat pengguna memilih nilainya dari daftar tetap.

689 

690Untuk membatasi bidang `tone` ke tiga opsi, cantumkan dalam `options` dan atur `default` ke salah satunya:

691 

692```json theme={null}

693{

694 "userConfig": {

695 "tone": {

696 "type": "string",

697 "title": "Tone",

698 "description": "Voice for generated replies",

699 "options": ["neutral", "warm", "formal"],

700 "default": "neutral"

701 }

702 }

703}

704```

705 

706Jika Anda mendeklarasikan `options` pada bidang apa pun, pengguna pada versi Claude Code sebelum v2.1.271 tidak dapat memuat plugin.

707 

708Ketika Anda menetapkan `options` pada bidang, ikuti aturan-aturan ini:

709 

710* Atur `type` ke `string`

711* Jangan atur `multiple` atau `sensitive` ke `true`

712* Atur `default` ke salah satu opsi

713* Jika Anda membiarkan `default` tidak diatur, atur `required` ke `true`

714* Cantumkan setidaknya satu opsi, masing-masing 1 hingga 64 karakter panjang

715* Jangan mulai atau akhiri opsi dengan spasi

716* Jangan gunakan karakter kontrol, karakter tak terlihat, karakter yang mengubah arah teks, atau spasi selain spasi biasa dalam opsi

717* Jangan cantumkan opsi yang sama dua kali, bahkan dalam huruf case yang berbeda

718 

719Jika Anda melanggar salah satu aturan ini, plugin gagal dimuat. Jalankan `claude plugin validate` untuk melihat bidang mana yang melanggar aturan mana.

720 

721<h3 id="channels">

722 Channels

723</h3>

724 

725Bidang `channels` memungkinkan plugin mendeklarasikan satu atau lebih saluran pesan yang menyuntikkan konten ke dalam percakapan. Setiap saluran mengikat ke server MCP yang disediakan plugin.

726 

727```json theme={null}

728{

729 "channels": [

730 {

731 "server": "telegram",

732 "userConfig": {

733 "bot_token": {

734 "type": "string",

735 "title": "Bot token",

736 "description": "Telegram bot token",

737 "sensitive": true

738 },

739 "owner_id": {

740 "type": "string",

741 "title": "Owner ID",

742 "description": "Your Telegram user ID"

743 }

744 }

745 }

746 ]

747}

748```

749 

750Bidang `server` diperlukan dan harus cocok dengan kunci di `mcpServers` plugin. `userConfig` per-saluran opsional menggunakan skema yang sama dengan bidang tingkat atas, memungkinkan plugin untuk meminta token bot atau ID pemilik ketika plugin diaktifkan.

751 

752<h3 id="path-behavior-rules">

753 Aturan perilaku jalur

754</h3>

755 

756Apakah jalur kustom menggantikan atau memperluas direktori default plugin tergantung pada bidangnya:

757 

758* **Menggantikan default**: `commands`, `agents`, `workflows`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Misalnya, ketika manifes menentukan `commands`, direktori `commands/` default tidak dipindai. Untuk menyimpan default dan menambah lebih banyak, cantumkan secara eksplisit: `"commands": ["./commands/", "./extras/"]`

759* **Menambah default**: `skills`. Direktori `skills/` default selalu dipindai, dan direktori yang tercantum di `skills` dimuat bersama. Pengecualian: untuk [entri marketplace yang `source`-nya diselesaikan ke akar marketplace](/docs/id/plugin-marketplaces#advanced-plugin-entries), mendeklarasikan subdirektori spesifik menggantikan pemindaian `skills/` default

760* **Aturan penggabungan sendiri**: [hooks](#hooks), [server MCP](#mcp-servers), dan [server LSP](#lsp-servers). Lihat setiap bagian untuk cara beberapa sumber menggabungkan

761 

762Ketika plugin memiliki folder default dan kunci manifes yang cocok, Claude Code memperingatkan tentang folder yang diabaikan di `claude plugin list` dan tampilan detail `/plugin`. Plugin masih dimuat menggunakan jalur manifes. Claude Code tidak memperingatkan ketika kunci manifes menunjuk ke folder default, misalnya `"commands": ["./commands/deploy.md"]`, karena jalur itu menamai folder secara eksplisit.

763 

764Untuk semua bidang jalur:

765 

766* Semua jalur harus relatif terhadap akar plugin dan dimulai dengan `./`, kecuali bidang `skills` juga menerima `"."`

767 * Baik `"."` maupun `"./"` menunjukkan akar plugin itu sendiri

768 * Sebelum v2.1.221, `"."` gagal validasi manifes dan plugin tidak dimuat, jadi gunakan `"./"` untuk mendukung versi sebelumnya

769* Komponen dari jalur kustom menggunakan aturan penamaan dan namespacing yang sama, kecuali file agent. Lihat [Agents](#agents) untuk cara kerja nama agent

770* Beberapa jalur dapat ditentukan sebagai array

771* Jalur skill dapat menunjuk ke direktori yang berisi `SKILL.md` secara langsung, misalnya `"skills": ["."]` untuk akar plugin

772 * Claude Code mengambil nama invokasi skill dari bidang frontmatter `name` di `SKILL.md`, jadi nama tetap stabil apa pun nama direktori instalasi

773 * Jika `name` tidak diatur di frontmatter, Claude Code kembali ke nama dasar direktori

774 

775Plugin yang memiliki `SKILL.md` di akarnya, tidak ada subdirektori `skills/`, dan tidak ada bidang manifes `skills` secara otomatis dimuat sebagai plugin skill tunggal. Anda tidak perlu menetapkan `"skills": ["./"]` di `plugin.json` untuk tata letak ini.

776 

777**Contoh jalur**:

778 

779```json theme={null}

780{

781 "commands": [

782 "./specialized/deploy.md",

783 "./utilities/batch-process.md"

784 ],

785 "agents": [

786 "./custom-agents/reviewer.md",

787 "./custom-agents/tester.md"

788 ]

789}

790```

791 

792<h3 id="environment-variables">

793 Variabel lingkungan

794</h3>

795 

796Claude Code menyediakan tiga variabel untuk mereferensikan jalur:

797 

798| Variabel | Diselesaikan ke | Gunakan untuk |

799| :---------------------- | :-------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ |

800| `${CLAUDE_PLUGIN_ROOT}` | Jalur absolut ke direktori instalasi plugin | Skrip, biner, dan file konfigurasi yang disertakan dengan plugin |

801| `${CLAUDE_PLUGIN_DATA}` | [Direktori persisten](#persistent-data-directory) yang bertahan pembaruan plugin, dibuat pada referensi pertama | Ketergantungan yang diinstal seperti `node_modules` atau lingkungan virtual Python, kode yang dihasilkan, dan cache |

802| `${CLAUDE_PROJECT_DIR}` | Akar proyek | Skrip dan file konfigurasi lokal proyek |

803 

804Ketiga-tiganya diekspor sebagai variabel lingkungan ke proses hook dan ke subproses server MCP dan LSP. Mereka tidak ada di lingkungan perintah yang Claude jalankan melalui alat Bash, di sesi utama atau di subagent. Dalam konten plugin, tulis placeholder sebagai gantinya, dan Claude Code mensubstitusi jalur inline ketika memuat konten. Bidang mana yang mensubstitusi mereka inline tergantung pada komponen plugin:

805 

806| Komponen plugin | Bidang tempat placeholder diselesaikan |

807| :----------------------------- | :------------------------------------------ |

808| Konten skill dan agent | Di mana pun placeholder muncul |

809| Perintah hook dan monitor | Di mana pun placeholder muncul |

810| Server MCP `stdio` | `command`, `args`, `env` |

811| Server MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |

812| Server LSP | `command`, `args`, `env`, `workspaceFolder` |

813 

814Dalam perintah hook, gunakan [bentuk exec](/docs/id/hooks#exec-form-and-shell-form) dengan `args` sehingga setiap jalur dilewatkan sebagai satu argumen tanpa tanda kutip. Dalam hook bentuk shell dan perintah monitor, bungkus variabel dalam tanda kutip ganda, seperti `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Hook bentuk shell ini menjalankan skrip yang disertakan dengan plugin:

815 

816```json theme={null}

817{

818 "hooks": {

819 "PostToolUse": [

820 {

821 "hooks": [

822 {

823 "type": "command",

824 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

825 }

826 ]

827 }

828 ]

829 }

830}

831```

832 

833Untuk plugin yang disalin, `${CLAUDE_PLUGIN_ROOT}` berubah ketika plugin diperbarui. Direktori versi sebelumnya tetap di disk untuk periode tenggang setelah pembaruan, tetapi perlakukan sebagai ephemeral dan jangan tulis status di sana. Untuk plugin yang dimuat di tempat dari marketplace direktori lokal, variabel menunjuk ke direktori sumber yang stabil. Lihat [plugin caching](#plugin-caching-and-file-resolution) untuk plugin mana yang disalin dan untuk semantik pembersihan.

834 

835Ketika plugin yang disalin diperbarui di tengah sesi, perintah hook, monitor, server MCP, dan server LSP terus menggunakan jalur versi sebelumnya. Jalankan `/reload-plugins` untuk mengganti hook, server MCP, dan server LSP ke jalur baru; monitor memerlukan restart sesi. Dalam sesi tanpa terminal interaktif, reload meninggalkan server MCP plugin di jalur lama sampai sesi berikutnya.

836 

837Untuk plugin dengan sumber `command`, Claude Code [dapat memuat ulang plugin itu sendiri](/docs/id/plugin-marketplaces#when-claude-code-re-runs-the-command).

838 

839Server MCP juga dapat memanggil permintaan `roots/list` untuk membaca direktori kerja sesi saat runtime. Lihat [apa yang dikembalikan `roots/list` dan kapan Claude Code memberi tahu server tentang perubahan](/docs/id/mcp#option-3-add-a-local-stdio-server).

840 

841<h4 id="persistent-data-directory">

842 Direktori data persisten

843</h4>

844 

845Direktori `${CLAUDE_PLUGIN_DATA}` diselesaikan ke `~/.claude/plugins/data/{id}/`, di mana `{id}` adalah pengidentifikasi plugin dengan karakter di luar `a-z`, `A-Z`, `0-9`, `_`, dan `-` diganti dengan `-`. Untuk plugin yang diinstal sebagai `formatter@my-marketplace`, direktorinya adalah `~/.claude/plugins/data/formatter-my-marketplace/`.

846 

847Penggunaan umum adalah menginstal ketergantungan bahasa sekali dan menggunakannya kembali di seluruh sesi dan pembaruan plugin. Gunakan untuk ketergantungan Python, ketergantungan yang dikunci dengan Yarn atau pnpm, dan paket yang skrip siklus hidupnya harus berjalan. Untuk plugin yang diinstal marketplace, Anda mungkin tidak membutuhkannya sama sekali: Claude Code secara otomatis menginstal ketergantungan paket [Node.js yang memenuhi syarat](#node-js-package-dependencies) ketika cache plugin.

848 

849Karena direktori data melampaui versi plugin tunggal, pemeriksaan keberadaan direktori saja tidak dapat mendeteksi ketika pembaruan mengubah manifes ketergantungan plugin. Pola yang direkomendasikan membandingkan manifes bundel terhadap salinan di direktori data dan menginstal ulang ketika berbeda.

850 

851Hook `SessionStart` ini menginstal `node_modules` pada run pertama dan lagi kapan pun pembaruan plugin menyertakan `package.json` yang berubah:

852 

853```json theme={null}

854{

855 "hooks": {

856 "SessionStart": [

857 {

858 "hooks": [

859 {

860 "type": "command",

861 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

862 }

863 ]

864 }

865 ]

866 }

867}

868```

869 

870`diff` keluar nonzero ketika salinan yang disimpan hilang atau berbeda dari yang bundel, mencakup run pertama dan pembaruan yang mengubah ketergantungan. Jika `npm install` gagal, `rm` trailing menghapus manifes yang disalin sehingga sesi berikutnya mencoba lagi.

871 

872Skrip yang disertakan dalam `${CLAUDE_PLUGIN_ROOT}` kemudian dapat berjalan terhadap `node_modules` yang bertahan:

873 

874```json theme={null}

875{

876 "mcpServers": {

877 "routines": {

878 "command": "node",

879 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

880 "env": {

881 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

882 }

883 }

884 }

885}

886```

887 

888Direktori data dihapus secara otomatis ketika Anda mencopot plugin dari ruang lingkup terakhir tempat itu diinstal. Antarmuka `/plugin` menampilkan ukuran direktori dan meminta sebelum menghapus. CLI menghapus secara default; teruskan [`--keep-data`](#plugin-uninstall) untuk mempertahankannya.

889 

890***

891 

892<h2 id="plugin-caching-and-file-resolution">

893 Plugin caching dan resolusi file

894</h2>

895 

896Plugin ditentukan dalam salah satu dari tiga cara:

897 

898* Melalui `claude --plugin-dir` atau `claude --plugin-url`, untuk durasi sesi.

899* Melalui marketplace, diinstal untuk sesi mendatang.

900* Melalui akun claude.ai Anda, [disinkronkan](#synced-plugins) ke dalam `~/.claude/plugins/synced/`.

901 

902Untuk tujuan keamanan dan verifikasi, Claude Code menyalin plugin *marketplace* ke **plugin cache** lokal pengguna (`~/.claude/plugins/cache`), kecuali plugin dimuat di tempat. Sebuah [`command` source dalam link mode](/docs/id/plugin-marketplaces#copy-mode-and-link-mode) dimuat di tempat melalui link dalam entri cache. Sebuah [relative path source](/docs/id/plugin-marketplaces#relative-paths) dalam marketplace yang ditambahkan dari direktori lokal dimuat di tempat dari folder marketplace.

903 

904Untuk plugin yang dimuat di tempat dari marketplace direktori-lokal, edit Anda ke direktori sumber berlaku pada awal sesi berikutnya atau `/reload-plugins`. Anda tidak perlu bump versi. Proses hook plugin dan server MCP dan LSP menerima `CLAUDE_PLUGIN_ROOT` yang menunjuk ke direktori sumber. Claude Code tidak menginstal [dependensi paket Node.js](#node-js-package-dependencies) plugin ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [direktori data persisten](#persistent-data-directory).

905 

906Untuk plugin yang disalin, setiap versi yang diinstal adalah direktori terpisah dalam cache, dikelompokkan berdasarkan marketplace dan plugin serta dinamai untuk versi yang diselesaikan, dengan salinannya sendiri dari file plugin dan [dependensi paket Node.js](#node-js-package-dependencies). Dependensi yang diselesaikan dari [release tag](/docs/id/plugin-dependencies#tag-plugin-releases-for-version-resolution) mendapatkan nama direktori dengan akhiran commit-SHA.

907 

908Ketika Anda memperbarui atau mencopot plugin, Claude Code menandai direktori versi sebelumnya sebagai orphaned dan menghapusnya dalam sweep latar belakang kira-kira 14 hari kemudian. Periode grace memungkinkan sesi Claude Code bersamaan yang sudah memuat versi lama untuk terus berjalan tanpa kesalahan. Claude Code menjalankan sweep hanya saat setidaknya satu plugin diinstal; setelah Anda mencopot plugin terakhir Anda, direktori orphaned tetap di disk sampai Anda menginstal plugin lagi.

909 

910Claude Code menghapus folder plugin atau marketplace dari cache hanya ketika tidak lagi berisi direktori atau symlink apa pun. Jika Anda membuat symlink dari checkout pengembangan ke dalam cache sebagai entri versi plugin, Claude Code tidak pernah menandai link sebagai orphaned dan tidak pernah menghapusnya atau folder yang menahannya. Claude Code juga tidak pernah menulis file pelacakan versinya di dalam checkout yang ditautkan.

911 

912Tools Glob dan Grep Claude melewati direktori versi orphaned selama pencarian, sehingga hasil file tidak menyertakan kode plugin yang sudah ketinggalan zaman.

913 

914<h3 id="node-js-package-dependencies">

915 Dependensi paket Node.js

916</h3>

917 

918Ketika Claude Code menyalin plugin ke dalam cache, Claude Code juga menginstal dependensi paket Node.js plugin di sana, sehingga hooks dan MCP servers plugin dapat memuatnya. Bagian ini mencakup paket npm dan Bun yang dideklarasikan plugin dalam `package.json` miliknya sendiri. Untuk plugin yang bergantung pada plugin lain, lihat [versi dependensi plugin](/docs/id/plugin-dependencies).

919 

920Claude Code menjalankan install di dalam direktori versi yang disalin setiap kali membuat satu: ketika Anda menginstal plugin, ketika Claude Code memperbarui plugin ke versi baru, dan pada awal sesi ketika plugin yang diaktifkan belum di-cache, seperti pada mesin baru. Install hanya berjalan ketika direktori root plugin berisi `package.json` dan lockfile yang didukung:

921 

922| Lockfile | Command |

923| :--------------------------------------------- | :----------------------------------------------- |

924| `bun.lock` atau `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

925| `npm-shrinkwrap.json` atau `package-lock.json` | `npm ci --ignore-scripts` |

926 

927Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa secara berurutan: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

928 

929Claude Code melewati install dalam dua kasus, masing-masing dengan perbaikannya sendiri:

930 

931* Jika plugin Anda hanya mengirimkan `yarn.lock` atau `pnpm-lock.yaml`, gantikan dengan lockfile npm.

932* Jika `bunfig.toml` berada di samping lockfile bun, hapus `bunfig.toml`, atau gantikan lockfile bun dengan lockfile npm.

933 

934Kirimkan lockfile npm untuk jangkauan terluas. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak kembali ke lockfile lain jika hilang. Untuk plugin yang didistribusikan melalui sumber npm, gunakan `npm-shrinkwrap.json`; npm mengecualikan `package-lock.json` dari paket yang dipublikasikan.

935 

936Claude Code membatasi install dependensi ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama install, dan membatasi berapa lama install dapat berjalan:

937 

938* **Frozen resolution:** Bun dan npm menginstal dengan tepat apa yang dikunci lockfile, dan gagal daripada re-resolve versi ketika `package.json` dan lockfile tidak setuju.

939* **No lifecycle scripts:** `--ignore-scripts` menjaga agar script `preinstall`, `install`, dan `postinstall` tidak berjalan, sehingga dependensi yang membangun modul native dalam script tersebut diunduh tetapi tidak dikompilasi selama install ini.

940* **60-second timeout:** Claude Code menghentikan install yang berjalan lebih lama dan memperlakukannya sebagai gagal.

941 

942Claude Code mengambil plugin sumber npm sebelum install dependensi ini, dan tidak ada script install paket sendiri yang berjalan selama pengambilan. Lihat [npm packages](/docs/id/plugin-marketplaces#npm-packages).

943 

944Install yang gagal atau dilewati tidak pernah memblokir plugin. Ketika install gagal, atau Claude Code melewati karena lockfile yarn atau pnpm atau `bunfig.toml` di samping lockfile bun, Claude Code mencatat alasannya sebagai peringatan dalam [debug output](#debugging-commands). Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log. Install yang time-out dapat meninggalkan pohon `node_modules` parsial dalam salinan cache.

945 

946Anda tidak dapat mematikan install otomatis; tidak ada pengaturan atau variabel lingkungan yang menonaktifkannya. Di jaringan terbatas, lihat [persyaratan akses jaringan](/docs/id/network-config#network-access-requirements) untuk host yang diizinkan.

947 

948Untuk dependensi yang install otomatis tidak dapat sediakan, seperti paket yang memerlukan lifecycle scripts mereka untuk membangun, dependensi Python, atau plugin yang dikunci dengan Yarn atau pnpm, instal dari hook ke [direktori data persisten](#persistent-data-directory).

949 

950<h3 id="path-traversal-limitations">

951 Batasan path traversal

952</h3>

953 

954Claude Code tidak membiarkan plugin mereferensikan file di luar direktorinya sendiri. Claude Code menolak path komponen yang diselesaikan di luar root plugin, apakah path dideklarasikan dalam `plugin.json` atau dalam [entri marketplace](/docs/id/plugin-marketplaces#plugin-entries). Itu mencakup path yang menunjuk di luar plugin seperti yang ditulis, seperti `../shared-utils`, dan symlink yang mengarah di luar plugin, selain [link dalam satu marketplace](#share-files-within-a-marketplace-with-symlinks).

955 

956Di macOS dan Linux, Claude Code juga menolak path komponen yang berisi backslash di mana pun dalam path, bahkan ketika path tetap berada di dalam plugin. Komponen yang dideklarasikan dengan path backslash oleh karena itu hanya dimuat di Windows. Tulis path komponen dengan forward slash, seperti `./commands/deploy.md`.

957 

958Ketika Claude Code menolak path, Claude Code melaporkan error [`path escapes plugin directory`](/docs/id/errors#path-escapes-plugin-directory) dan memuat plugin tanpa komponen tersebut.

959 

960Claude Code juga tidak menyalin file di luar direktori plugin ke dalam cache ketika menginstal plugin, jadi ketika script di dalam plugin yang disalin membaca path di atas root plugin, script tidak menemukan file tersebut juga.

961 

962<h3 id="share-files-within-a-marketplace-with-symlinks">

963 Bagikan file dalam marketplace dengan symlink

964</h3>

965 

966Jika plugin Anda perlu berbagi file dengan bagian lain dari marketplace yang sama, Anda dapat membuat symbolic link di dalam direktori plugin Anda. Bagaimana symlink ditangani ketika plugin disalin ke dalam cache tergantung pada di mana targetnya diselesaikan:

967 

968* **Dalam direktori plugin sendiri:** symlink dipertahankan sebagai symlink relatif dalam cache, sehingga tetap diselesaikan ke target yang disalin saat runtime.

969* **Di tempat lain dalam marketplace yang sama:** symlink didereferensikan. Konten target disalin ke dalam cache di tempatnya. Ini memungkinkan direktori `skills/` meta-plugin untuk menautkan ke skill yang ditentukan oleh plugin lain dalam marketplace.

970* **Di luar marketplace:** symlink dilewati untuk keamanan. Ini mencegah plugin dari menarik file host arbitrer seperti path sistem ke dalam cache.

971 

972Untuk plugin yang diinstal dengan `--plugin-dir`, dari path lokal, atau dari [`command` source](/docs/id/plugin-marketplaces#copy-mode-and-link-mode) dalam copy mode, hanya symlink yang diselesaikan dalam direktori plugin sendiri yang dipertahankan. Semua yang lain dilewati.

973 

974Perintah berikut membuat link dari dalam plugin marketplace ke skill bersama yang ditentukan oleh plugin sibling. Di Windows, gunakan `mklink /D` dari Command Prompt yang ditingkatkan atau aktifkan Developer Mode:

975 

976```bash theme={null}

977ln -s ../../shared-plugin/skills/foo ./skills/foo

978```

979 

980***

981 

982<h2 id="plugin-directory-structure">

983 Struktur direktori plugin

984</h2>

985 

986<h3 id="standard-plugin-layout">

987 Tata letak plugin standar

988</h3>

989 

990Plugin lengkap mengikuti struktur ini:

991 

992```text theme={null}

993enterprise-plugin/

994├── .claude-plugin/ # Direktori metadata (opsional)

995│ └── plugin.json # manifes plugin

996├── skills/ # Skills

997│ ├── code-reviewer/

998│ │ └── SKILL.md

999│ └── pdf-processor/

1000│ ├── SKILL.md

1001│ └── scripts/

1002├── commands/ # Skills sebagai file .md datar

1003│ ├── status.md

1004│ └── logs.md

1005├── agents/ # Definisi subagent

1006│ ├── security-reviewer.md

1007│ ├── performance-tester.md

1008│ ├── compliance-checker.md

1009│ └── review/ # Agents di sini dimuat sebagai enterprise-plugin:review:<name>

1010│ └── accessibility.md

1011├── workflows/ # Skrip workflow

1012│ └── release-audit.js

1013├── output-styles/ # Definisi gaya output

1014│ └── terse.md

1015├── themes/ # Definisi tema warna

1016│ └── dracula.json

1017├── monitors/ # Konfigurasi monitor latar belakang

1018│ └── monitors.json

1019├── hooks/ # Konfigurasi hooks

1020│ ├── hooks.json # Konfigurasi hook utama

1021│ └── security-hooks.json # Hooks tambahan

1022├── bin/ # Plugin yang dapat dijalankan ditambahkan ke PATH

1023│ └── my-tool # Dapat dipanggil sebagai perintah bare di Bash tool

1024├── settings.json # Pengaturan default untuk plugin

1025├── .mcp.json # Definisi server MCP

1026├── .lsp.json # Konfigurasi server LSP

1027├── scripts/ # Skrip hook dan utilitas

1028│ ├── security-scan.sh

1029│ ├── format-code.py

1030│ └── deploy.js

1031├── LICENSE # File lisensi

1032└── CHANGELOG.md # Riwayat versi

1033```

1034 

1035<Warning>

1036 Direktori `.claude-plugin/` berisi file `plugin.json`. Semua direktori lainnya (commands/, agents/, skills/, workflows/, output-styles/, themes/, monitors/, hooks/) harus berada di root plugin, bukan di dalam `.claude-plugin/`.

1037</Warning>

1038 

1039File `CLAUDE.md` di root plugin tidak dimuat sebagai konteks proyek. Plugin berkontribusi konteks melalui skills, agents, dan hooks daripada CLAUDE.md. Untuk mengirimkan instruksi yang dimuat ke dalam konteks Claude, letakkan di [skill](#skills).

1040 

1041<h3 id="file-locations-reference">

1042 Referensi lokasi file

1043</h3>

1044 

1045| Komponen | Lokasi Default | Tujuan |

1046| :---------------- | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1047| **Manifes** | `.claude-plugin/plugin.json` | Metadata dan konfigurasi plugin (opsional) |

1048| **Skills** | `skills/` | Skills dengan struktur `<name>/SKILL.md` |

1049| **Commands** | `commands/` | Skills sebagai file Markdown datar. Gunakan `skills/` untuk plugin baru |

1050| **Agents** | `agents/` | File Markdown subagent. Subfolder adalah bagian dari [nama agent](#agents) |

1051| **Workflows** | `workflows/` | File skrip [Workflow](/docs/id/workflows) |

1052| **Output styles** | `output-styles/` | Definisi gaya output |

1053| **Themes** | `themes/` | Definisi tema warna |

1054| **Hooks** | `hooks/hooks.json` | Konfigurasi hook |

1055| **Server MCP** | `.mcp.json` | Definisi server MCP |

1056| **Server LSP** | `.lsp.json` | Konfigurasi language server |

1057| **Monitors** | `monitors/monitors.json` | Konfigurasi monitor latar belakang |

1058| **Executables** | `bin/` | Executable yang ditambahkan ke `PATH` Bash tool dan dapat dipanggil sebagai perintah bare 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) |

1059| **Settings** | `settings.json` | Konfigurasi default yang diterapkan saat plugin diaktifkan. Hanya kunci [`agent`](/docs/id/sub-agents) dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) yang didukung |

1060 

1061***

1062 

1063<h2 id="cli-commands-reference">

1064 Referensi perintah CLI

1065</h2>

1066 

1067Claude Code menyediakan perintah CLI untuk manajemen plugin non-interaktif, berguna untuk skrip dan otomasi.

1068 

1069<h3 id="plugin-init">

1070 plugin init

1071</h3>

1072 

1073Membuat perancah plugin baru di `~/.claude/skills/<name>/`. Pada sesi Claude Code berikutnya, plugin akan dimuat secara otomatis sebagai `<name>@skills-dir` dan muncul di `/plugin` dan `claude plugin list` tanpa langkah instalasi.

1074 

1075Lihat [Skills-directory plugins](#skills-directory-plugins) untuk persyaratan cakupan dan kepercayaan.

1076 

1077```bash theme={null}

1078claude plugin init <name> [options]

1079```

1080 

1081Perintah ini mengambil argumen-argumen berikut:

1082 

1083* `<name>`: Nama plugin. Menjadi namespace skill dan nama direktori di bawah `~/.claude/skills/`, jadi tidak boleh mengandung spasi atau pemisah jalur.

1084 

1085Perintah ini menerima opsi-opsi berikut:

1086 

1087| Opsi | Deskripsi | Default |

1088| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------- | :---------------------- |

1089| `--description <text>` | Deskripsi manifest | |

1090| `--author <name>` | Nama penulis | `git config user.name` |

1091| `--author-email <email>` | Email penulis | `git config user.email` |

1092| `--with <components...>` | Juga membuat perancah folder komponen. Nilai yang valid: `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, `channel` | |

1093| `-f, --force` | Timpa `.claude-plugin/` yang ada di target | |

1094| `-h, --help` | Tampilkan bantuan untuk perintah | |

1095 

1096`claude plugin new` adalah alias untuk perintah ini.

1097 

1098Setiap nilai `--with` menambahkan file pemula untuk komponen tersebut, siap untuk diedit:

1099 

1100| Komponen | Apa yang dibuat perancah |

1101| :------------- | :---------------------------------------------------------------------------------------------------- |

1102| `skills` | Skill `<name>:example` dengan namespace tambahan di samping yang default |

1103| `agents` | Definisi subagent `agents/` |

1104| `hooks` | `hooks/hooks.json` dengan contoh penanganan acara |

1105| `mcp` | `.mcp.json` dengan contoh server HTTP dan stdio |

1106| `lsp` | Contoh language-server `.lsp.json` |

1107| `output-style` | `output-styles/<name>.md` yang diterapkan secara otomatis saat plugin diaktifkan |

1108| `channel` | [channel](/docs/id/channels) berbasis MCP: server stdio (`server.ts`), `.mcp.json`-nya, dan `package.json` |

1109 

1110Plugin yang dibuat perancah menggunakan sumber `@skills-dir` daripada marketplace. Admin dapat memblokir sumber ini dengan `strictKnownMarketplaces` atau dengan menambahkan `{"source": "skills-dir"}` ke `blockedMarketplaces` dalam [managed settings](/docs/id/plugin-marketplaces#managed-marketplace-restrictions). Ketika diblokir, `plugin init` gagal sebelum menulis.

1111 

1112Contoh-contoh ini menunjukkan invokasi umum:

1113 

1114```bash theme={null}

1115# Membuat perancah plugin minimal

1116claude plugin init my-helper

1117 

1118# Membuat perancah dengan folder skill dan hook

1119claude plugin init my-helper --with skills hooks

1120 

1121# Timpa perancah yang ada

1122claude plugin init my-helper --force

1123```

1124 

1125<h3 id="plugin-install">

1126 plugin install

1127</h3>

1128 

1129Instal plugin dari marketplace yang tersedia.

1130 

1131```bash theme={null}

1132claude plugin install <plugin> [options]

1133```

1134 

1135Perintah ini mengambil argumen-argumen berikut:

1136 

1137* `<plugin>`: Nama plugin atau `plugin-name@marketplace-name` untuk marketplace tertentu

1138 

1139Perintah ini menerima opsi-opsi berikut:

1140 

1141| Opsi | Deskripsi | Default |

1142| :-------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1143| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local` | `user` |

1144| `--config <key=value>` | Atur opsi [`userConfig`](#user-configuration) yang dideklarasikan dalam manifest plugin. Ulangi flag untuk mengatur beberapa opsi | |

1145| `-y, --yes` | Terima perintah yang dideklarasikan marketplace plugin, tanpa prompt konfirmasi: perintah yang menghasilkan plugin dengan [sumber `command`](/docs/id/plugin-marketplaces#command-sources), atau [`headersHelper`](/docs/id/plugin-marketplaces#authenticate-archive-downloads) yang mengautentikasi unduhan arsip. Menerima `headersHelper` memerlukan Claude Code v2.1.238 atau lebih baru. Claude Code masih mencetak perintah terlebih dahulu. Diperlukan ketika stdin atau stdout bukan TTY, kecuali Anda melewatkan `--accept-command`. Tidak berpengaruh di dalam sesi Claude Code, jadi jalankan perintah dari terminal Anda sendiri | |

1146| `--accept-command <sha256>` | Terima perintah yang dideklarasikan marketplace yang `sha256`-nya run [`--json`](#plugin-json-result) sebelumnya melaporkan dalam `shownCommand`, sebagai pengganti `-y`. Penerimaan berlaku untuk perintah, plugin, dan katalog marketplace yang tepat. Jika salah satu dari mereka berubah sejak perintah ditampilkan, termasuk melalui refresh marketplace run itu sendiri, Claude Code tidak menerima digest dan menampilkan perintah lagi. Tidak dapat digabungkan dengan `-y`. Tidak berpengaruh di dalam sesi Claude Code, jadi jalankan perintah dari terminal Anda sendiri. Memerlukan Claude Code v2.1.271 atau lebih baru | |

1147| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru | |

1148| `-h, --help` | Tampilkan bantuan untuk perintah | |

1149 

1150Cakupan menentukan file pengaturan mana yang ditambahkan plugin yang diinstal. Misalnya, `--scope project` menulis ke `enabledPlugins` dalam .claude/settings.json, membuat plugin tersedia untuk semua orang yang mengkloning repositori proyek.

1151 

1152<span id="plugin-json-result" />Dengan `--json`, baris terakhir stdout adalah satu objek JSON. Parsing hanya baris itu, karena Claude Code mencetak perintah apa pun yang dideklarasikan marketplace sebelumnya. Tiga field selalu ada:

1153 

1154* `command`: subperintah yang dijalankan, seperti `install`

1155* `outcome`: `ok` atau `failed`

1156* `message`: deskripsi hasil yang dapat dibaca manusia

1157 

1158Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku. Opsi `--json` pada `plugin uninstall`, `plugin update`, `plugin enable`, dan `plugin disable` mencetak objek yang sama dengan field subperintah tersebut. Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar 1 dengan alasan di stderr.

1159 

1160Ketika run menampilkan perintah yang dideklarasikan marketplace dan tidak menjalankannya, hasil `failed` juga membawa objek `shownCommand` yang field-nya mencakup perintah seperti yang ditampilkan, plugin yang dimilikinya, dan `sha256` perintah. Untuk menerima perintah yang tepat, jalankan kembali dengan `sha256` itu sebagai `--accept-command`. Memerlukan Claude Code v2.1.271 atau lebih baru.

1161 

1162Jika `shownCommand.acceptCommandMatched` adalah `false`, digest yang Anda lewatkan tidak cocok dengan perintah yang sekarang ditampilkan. Tampilkan perintah itu kepada seseorang sebelum melewatkan `sha256`-nya.

1163 

1164Contoh-contoh ini menunjukkan invokasi umum:

1165 

1166```bash theme={null}

1167# Instal ke cakupan pengguna (default)

1168claude plugin install formatter@my-marketplace

1169 

1170# Instal ke cakupan proyek (dibagikan dengan tim)

1171claude plugin install formatter@my-marketplace --scope project

1172 

1173# Instal ke cakupan lokal (tidak dibagikan dengan tim)

1174claude plugin install formatter@my-marketplace --scope local

1175```

1176 

1177<h3 id="plugin-uninstall">

1178 plugin uninstall

1179</h3>

1180 

1181Hapus plugin yang diinstal.

1182 

1183```bash theme={null}

1184claude plugin uninstall <plugin> [options]

1185```

1186 

1187Perintah ini mengambil argumen-argumen berikut:

1188 

1189* `<plugin>`: Nama plugin atau `plugin-name@marketplace-name`

1190 

1191Perintah ini menerima opsi-opsi berikut:

1192 

1193| Opsi | Deskripsi | Default |

1194| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1195| `-s, --scope <scope>` | Copot instalasi dari cakupan: `user`, `project`, atau `local` | `user` |

1196| `--keep-data` | Pertahankan [direktori data persisten](#persistent-data-directory) plugin | |

1197| `--prune` | Juga hapus dependensi yang diinstal otomatis yang tidak diperlukan plugin lain. Lihat [plugin prune](#plugin-prune) | |

1198| `-y, --yes` | Lewati prompt konfirmasi `--prune`. Diperlukan ketika stdin atau stdout bukan TTY | |

1199| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Tidak dapat digabungkan dengan `--prune`. Memerlukan Claude Code v2.1.268 atau lebih baru | |

1200| `-h, --help` | Tampilkan bantuan untuk perintah | |

1201 

1202`claude plugin remove` dan `claude plugin rm` adalah alias untuk perintah ini.

1203 

1204Secara default, mencopot instalasi dari cakupan terakhir yang tersisa juga menghapus direktori `${CLAUDE_PLUGIN_DATA}` plugin. Gunakan `--keep-data` untuk mempertahankannya, misalnya saat menginstal ulang setelah menguji versi baru.

1205 

1206<Note>

1207 Ketika plugin yang diinstal dari marketplace berbeda berbagi nama, bentuk `plugin-name@marketplace-name` mencopot instalasi hanya plugin dari marketplace bernama. Sebelum v2.1.212, bentuk yang memenuhi syarat dapat mencocokkan dan mencopot instalasi plugin dengan nama yang sama dari marketplace berbeda.

1208</Note>

1209 

1210<h3 id="plugin-prune">

1211 plugin prune

1212</h3>

1213 

1214Hapus dependensi plugin yang diinstal otomatis yang tidak lagi diperlukan oleh plugin yang diinstal. Dependensi yang Claude Code tarik untuk memenuhi field [`dependencies`](/docs/id/plugin-dependencies) plugin lain dihapus; plugin yang Anda instal secara langsung tidak pernah disentuh.

1215 

1216```bash theme={null}

1217claude plugin prune [options]

1218```

1219 

1220Perintah ini menerima opsi-opsi berikut:

1221 

1222| Opsi | Deskripsi | Default |

1223| :-------------------- | :---------------------------------------------------------------------- | :------ |

1224| `-s, --scope <scope>` | Prune pada cakupan: `user`, `project`, atau `local` | `user` |

1225| `--dry-run` | Daftar apa yang akan dihapus tanpa menghapus apa pun | |

1226| `-y, --yes` | Lewati prompt konfirmasi. Diperlukan ketika stdin atau stdout bukan TTY | |

1227| `-h, --help` | Tampilkan bantuan untuk perintah | |

1228 

1229`claude plugin autoremove` adalah alias untuk perintah ini.

1230 

1231Perintah mencantumkan dependensi yatim piatu dan meminta konfirmasi sebelum menghapusnya. Untuk menghapus plugin dan membersihkan dependensinya dalam satu langkah, jalankan `claude plugin uninstall <plugin> --prune`.

1232 

1233<h3 id="plugin-enable">

1234 plugin enable

1235</h3>

1236 

1237Aktifkan plugin yang dinonaktifkan. Ketika target diinstal dari marketplace dan mendeklarasikan [dependencies](/docs/id/plugin-dependencies), Claude Code mengaktifkannya secara transitif pada cakupan yang sama. Perintah gagal dalam kondisi yang [Enable or disable a plugin with dependencies](/docs/id/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) daftar.

1238 

1239```bash theme={null}

1240claude plugin enable <plugin> [options]

1241```

1242 

1243Perintah ini mengambil argumen-argumen berikut:

1244 

1245* `<plugin>`: Nama plugin, `plugin-name@marketplace-name`, atau `plugin-name@synced` untuk [plugin yang disinkronkan dari claude.ai](#synced-plugins)

1246 

1247Perintah ini menerima opsi-opsi berikut:

1248 

1249| Opsi | Deskripsi | Default |

1250| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |

1251| `-s, --scope <scope>` | Cakupan untuk diaktifkan: `user`, `project`, atau `local`. Ketika dihilangkan, Claude Code mendeteksi cakupan tempat plugin diinstal | Auto-detect |

1252| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru | |

1253| `-h, --help` | Tampilkan bantuan untuk perintah | |

1254 

1255<h3 id="plugin-disable">

1256 plugin disable

1257</h3>

1258 

1259Nonaktifkan plugin tanpa mencopot instalasinya.

1260 

1261Ketika target diinstal dari marketplace, perintah gagal jika plugin yang diaktifkan lain [bergantung pada](/docs/id/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) itu. Pesan kesalahan mencakup perintah berantai yang menonaktifkan setiap plugin yang bergantung padanya terlebih dahulu.

1262 

1263Untuk [plugin yang disinkronkan](#synced-plugins) yang organisasi Anda perlukan, perintah gagal dan tidak menyimpan apa pun.

1264 

1265```bash theme={null}

1266claude plugin disable [plugin] [options]

1267```

1268 

1269Perintah ini mengambil argumen-argumen berikut:

1270 

1271* `[plugin]`: Nama plugin, `plugin-name@marketplace-name`, atau `plugin-name@synced` untuk [plugin yang disinkronkan dari claude.ai](#synced-plugins). Opsional saat menggunakan `--all`

1272 

1273Perintah ini menerima opsi-opsi berikut:

1274 

1275| Opsi | Deskripsi | Default |

1276| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- |

1277| `-a, --all` | Nonaktifkan semua plugin yang diaktifkan. Tidak dapat digabungkan dengan `--scope` | |

1278| `-s, --scope <scope>` | Cakupan untuk dinonaktifkan: `user`, `project`, atau `local`. Ketika dihilangkan, Claude Code mendeteksi cakupan tempat plugin diinstal | Auto-detect |

1279| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru | |

1280| `-h, --help` | Tampilkan bantuan untuk perintah | |

1281 

1282<h3 id="plugin-update">

1283 plugin update

1284</h3>

1285 

1286Perbarui plugin ke versi terbaru.

1287 

1288```bash theme={null}

1289claude plugin update <plugin> [options]

1290```

1291 

1292Perintah ini mengambil argumen-argumen berikut:

1293 

1294* `<plugin>`: Nama plugin atau `plugin-name@marketplace-name`

1295 

1296Perintah ini menerima opsi-opsi berikut:

1297 

1298| Opsi | Deskripsi | Default |

1299| :-------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1300| `-s, --scope <scope>` | Cakupan untuk diperbarui: `user`, `project`, `local`, atau `managed` | `user` |

1301| `-y, --yes` | Terima perintah yang dideklarasikan marketplace plugin, tanpa prompt konfirmasi: perintah yang menghasilkan plugin dengan [sumber `command`](/docs/id/plugin-marketplaces#command-sources), atau [`headersHelper`](/docs/id/plugin-marketplaces#authenticate-archive-downloads) yang mengautentikasi unduhan arsip. Menerima `headersHelper` memerlukan Claude Code v2.1.238 atau lebih baru. Claude Code masih mencetak perintah terlebih dahulu. Diperlukan ketika stdin atau stdout bukan TTY, kecuali Anda melewatkan `--accept-command`. Tidak berpengaruh di dalam sesi Claude Code, jadi jalankan perintah dari terminal Anda sendiri | |

1302| `--accept-command <sha256>` | Terima perintah yang dideklarasikan marketplace yang `sha256`-nya run [`--json`](#plugin-json-result) sebelumnya melaporkan dalam `shownCommand`, sebagai pengganti `-y`. Penerimaan berlaku untuk perintah, plugin, dan katalog marketplace yang tepat. Jika salah satu dari mereka berubah sejak perintah ditampilkan, termasuk melalui refresh marketplace run itu sendiri, Claude Code tidak menerima digest dan menampilkan perintah lagi. Tidak dapat digabungkan dengan `-y`. Tidak berpengaruh di dalam sesi Claude Code, jadi jalankan perintah dari terminal Anda sendiri. Memerlukan Claude Code v2.1.271 atau lebih baru | |

1303| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru | |

1304| `-h, --help` | Tampilkan bantuan untuk perintah | |

1305 

1306<Note>

1307 Claude Code menyelesaikan nama plugin tanpa kualifikasi terhadap plugin yang diinstal. Ketika plugin yang diinstal dari marketplace berbeda berbagi nama, Claude Code menolak pembaruan dan mencantumkan perintah `plugin-name@marketplace-name` yang memenuhi syarat untuk dijalankan sebagai gantinya. Sebelum v2.1.246, Claude Code hanya menerima bentuk yang memenuhi syarat dan menolak nama tanpa kualifikasi sebagai tidak ditemukan.

1308</Note>

1309 

1310***

1311 

1312<h3 id="plugin-list">

1313 plugin list

1314</h3>

1315 

1316Daftar plugin yang diinstal dengan versi, marketplace sumber, dan status pengaktifan mereka.

1317 

1318```bash theme={null}

1319claude plugin list [options]

1320```

1321 

1322Perintah ini menerima opsi-opsi berikut:

1323 

1324| Opsi | Deskripsi | Default |

1325| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1326| `--json` | Output sebagai JSON. Baris plugin dengan masalah pemuatan atau peringatan penulisan membawa array string `errors` atau `notes`. Pada Claude Code v2.1.268 atau lebih baru, array `errorDetails` dan `noteDetails` paralel memberikan `type` diagnostik setiap entri dan nama yang dirujuknya, seperti plugin, marketplace, server, atau file | |

1327| `--available` | Sertakan plugin yang tersedia dari marketplace. Memerlukan `--json` | |

1328| `-h, --help` | Tampilkan bantuan untuk perintah | |

1329 

1330Dalam sesi interaktif, `/plugin list` mencetak daftar serupa secara inline, tetapi mencakup hanya plugin yang diinstal marketplace:

1331 

1332* Plugin yang dimuat dari direktori skills muncul di antarmuka `/plugin` dan dalam `claude plugin list`, tetapi tidak dalam output `/plugin list` inline.

1333* [Plugin yang disinkronkan dari claude.ai](#synced-plugins) muncul dalam `claude plugin list` pada Claude Code v2.1.239 atau lebih baru dan di antarmuka `/plugin`, tetapi tidak dalam output `/plugin list` inline.

1334* Plugin yang dimuat untuk sesi dengan `--plugin-dir` atau `--plugin-url` muncul di antarmuka `/plugin`, dan dalam `claude plugin list` hanya ketika flag yang sama mendahului subperintah, seperti dalam `claude --plugin-dir <dir> plugin list`. Hanya nama flag lokasi mereka, jadi `claude plugin list` tanpa kualifikasi tidak dapat menemukannya, tidak seperti plugin yang disinkronkan dan plugin direktori skills, yang direktorinya tetap Claude Code pindai.

1335 

1336Bentuk interaktif menerima `--enabled` atau `--disabled` untuk menampilkan hanya plugin dalam status itu, dan `ls` sebagai singkatan untuk `list`.

1337 

1338<h3 id="plugin-details">

1339 plugin details

1340</h3>

1341 

1342Tampilkan inventaris komponen plugin dan biaya token yang diproyeksikan. Output mencantumkan semua komponen yang disumbangkan plugin, dikelompokkan sebagai Skills, Agents, Hooks, server MCP, dan server LSP, bersama dengan perkiraan berapa banyak token yang ditambahkannya ke setiap sesi. Grup Skills mencakup entri `skills/` dan `commands/`.

1343 

1344```bash theme={null}

1345claude plugin details <name>

1346```

1347 

1348Perintah ini mengambil argumen-argumen berikut:

1349 

1350* `<name>`: Nama plugin atau `plugin-name@marketplace-name`

1351 

1352Perintah ini menerima opsi-opsi berikut:

1353 

1354| Opsi | Deskripsi | Default |

1355| :----------- | :------------------------------- | :------ |

1356| `-h, --help` | Tampilkan bantuan untuk perintah | |

1357 

1358Output menampilkan dua angka biaya untuk setiap komponen:

1359 

1360* **Always-on:** token yang ditambahkan ke setiap sesi oleh teks daftar plugin, seperti deskripsi skill, deskripsi agent, dan nama perintah, terlepas dari apakah komponen apa pun diaktifkan.

1361* **On-invoke:** token yang dihabiskan komponen saat diaktifkan. Ditampilkan per komponen, bukan sebagai total plugin, karena sesi khas hanya mengaktifkan subset komponen.

1362 

1363Contoh ini menunjukkan seperti apa output untuk plugin dengan dua skill:

1364 

1365```

1366dependency-guard 1.2.0

1367 Dependency analysis for Claude Code sessions

1368 Source: dependency-guard@example-marketplace

1369 

1370Component inventory

1371 Skills (2) scan-dependencies, review-changes

1372 Agents (0)

1373 Hooks (1) SessionStart (harness-only — no model context cost)

1374 MCP servers (0)

1375 LSP servers (0)

1376 

1377Projected token cost

1378 Always-on: ~180 tok added to every session

1379 

1380Per-component (rounded)

1381 component always-on on-invoke

1382 scan-dependencies ~100 ~2400

1383 review-changes ~80 ~1800

1384 

1385 On-invoke cost is paid each time a skill or agent fires.

1386 Token counts are estimates and may differ from actual usage.

1387```

1388 

1389Total always-on dihitung melalui API `count_tokens` untuk model aktif Anda. Angka per-komponen diskalakan secara proporsional dari total itu. Jika API tidak dapat dijangkau, perintah kembali ke perkiraan berbasis karakter.

1390 

1391<h3 id="plugin-validate">

1392 plugin validate

1393</h3>

1394 

1395Periksa plugin atau marketplace untuk kesalahan sintaks dan skema sebelum menerbitkan.

1396 

1397Perintah keluar 0 ketika validasi lulus, 1 ketika gagal, dan 2 ketika validasi itu sendiri gagal, seperti ketika jalur yang Anda berikan tidak dapat dibaca.

1398 

1399```bash theme={null}

1400claude plugin validate <path> [options]

1401```

1402 

1403Perintah ini mengambil argumen-argumen berikut:

1404 

1405* `<path>`: Jalur ke direktori plugin atau direktori marketplace. Lihat [Validate a plugin or a directory without a manifest](/docs/id/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) untuk file mana yang dicakup plugin run.

1406 

1407Perintah ini menerima opsi-opsi berikut:

1408 

1409| Opsi | Deskripsi | Default |

1410| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ |

1411| `--strict` | Perlakukan peringatan sebagai kesalahan dan keluar 1 pada mereka. Gunakan dalam CI untuk menangkap masalah yang ditoleransi runtime, seperti [unrecognized fields](#unrecognized-fields) | |

1412| `--json` | Output laporan validasi sebagai satu objek JSON dengan kode keluar yang sama. Memerlukan Claude Code v2.1.259 atau lebih baru | |

1413| `-h, --help` | Tampilkan bantuan untuk perintah | |

1414 

1415Dengan `--json`, Claude Code menulis laporan ke stdout sebagai satu objek JSON dengan field tingkat atas ini:

1416 

1417* `success`: versi yang sama yang diberikan kode keluar

1418* `strict`: apakah run memperlakukan peringatan sebagai kesalahan

1419* `target`: jalur yang diselesaikan Claude Code divalidasi

1420* `manifest`: hasil manifest itu sendiri, atau `null` untuk [run tanpa manifest](/docs/id/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)

1421* `contents`: hasil per-file, masing-masing menamai `file`-nya dan membawa array `errors`, `warnings`, dan `notes`

1422 

1423Pada keluar 2, perintah tidak menulis apa pun ke stdout; pesan kesalahan masuk ke stderr.

1424 

1425Dalam sesi interaktif, `/plugin validate <path>` menjalankan pemeriksaan yang sama secara inline.

1426 

1427<h3 id="plugin-eval">

1428 plugin eval

1429</h3>

1430 

1431Jalankan [eval cases](/docs/id/plugin-evals) plugin dan laporkan hasil yang diskor. Memerlukan Claude Code v2.1.269 atau lebih baru. Setiap case adalah prompt plus graders; Claude Code menjalankannya beberapa kali dalam sesi terisolasi dengan hanya plugin target yang dimuat, dan secara default juga tanpa plugin sehingga laporan menunjukkan perbedaannya. Lihat [Test plugins with evals](/docs/id/plugin-evals) untuk format case, graders, hasil, dan penggunaan CI.

1432 

1433```bash theme={null}

1434claude plugin eval [target] [options]

1435```

1436 

1437Target opsional adalah direktori plugin, file `prompt.md` atau `case.yaml` tunggal, plugin yang diinstal sebagai `name` atau `name@marketplace`, atau `name@skills-dir`, dan default ke direktori saat ini. Letakkan sebelum `--tag`, `--allow-tools`, dan `--json`.

1438 

1439Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.

1440 

1441| Opsi | Deskripsi | Default |

1442| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- |

1443| `--runs <n>` | Runs per case per arm | Setiap case's `runs`, else 3 |

1444| `-j, --concurrency <n>` | Sesi agent untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi batas laju Anda | `1` |

1445| `--model <model>` | Model untuk agent yang diuji | Setiap case's `model`, else `ANTHROPIC_MODEL` jika diatur, else default Claude Code |

1446| `--judge-model <model>` | Model untuk `llm` dan `baseline` graders | Model kecil cepat |

1447| `--ablation <mode>` | `none` atau `with-without`. Lihat [Compare against a no-plugin baseline](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` ketika plugin diselesaikan, else `none` |

1448| `--threshold <0..1>` | Keluar 1 jika case apa pun mencetak di bawah ini | `1.0` |

1449| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |

1450| `--allow-tools <tools...>` | Berikan tools di luar set read-only, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Grant tools](/docs/id/plugin-evals#grant-tools) | |

1451| `--scaffold` | Jalankan setiap case's [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) | Off |

1452| `--trust-plugin` | Lewati prompt kepercayaan first-run, untuk CI. Lihat [What a run can access](/docs/id/plugin-evals#security) | Off |

1453| `--mocks <mode>` | `record` atau `off`. Lihat [Mock MCP servers](/docs/id/plugin-evals#mock-mcp-servers) | `record` |

1454| `--eval-dir <dir>` | Direktori di bawah plugin yang menyimpan cases | Manifest's `experimental.evals`, else `evals` |

1455| `--json [path]` | Cetak [result document](/docs/id/plugin-evals#json-result) ke stdout, atau tulis ke path `.json` | |

1456| `--no-publish` | Simpan laporan HTML secara lokal | |

1457| `-h, --help` | Tampilkan bantuan untuk perintah | |

1458 

1459Perintah keluar 0 ketika setiap case memenuhi threshold, 1 pada case yang gagal, kesalahan load, atau direktori plugin yang tidak dipercaya, 2 pada run parsial, 130 ketika terputus, dan 143 ketika dihentikan. Lihat [Run evals in CI](/docs/id/plugin-evals#run-evals-in-ci).

1460 

1461<h3 id="plugin-eval-init">

1462 plugin eval init

1463</h3>

1464 

1465Buat suite eval untuk plugin di direktori saat ini. Memerlukan Claude Code v2.1.269 atau lebih baru. Di terminal ini memulai wawancara penulisan yang membaca plugin, mengusulkan cases dan graders, pilot mereka, dan menulis file. Dengan `--bare`, atau tanpa terminal, itu menulis template single-case kosong sebagai gantinya. Jalankan dari dalam sesi Claude Code interaktif, itu mencetak instruksi wawancara untuk sesi itu ikuti daripada menulis template. Lihat [Create your first eval suite](/docs/id/plugin-evals#create-your-first-eval-suite).

1466 

1467```bash theme={null}

1468claude plugin eval init [name] [options]

1469```

1470 

1471Name opsional adalah case name: wawancara tidak memerlukan satu, sementara `--bare` dan path template no-terminal memerlukan satu. Itu menerima opsi ini:

1472 

1473| Opsi | Deskripsi | Default |

1474| :------------------ | :------------------------------------------------------------------------------------------------ | :-------------------------------------------- |

1475| `--bare` | Tulis `prompt.md` kosong dan `graders/criteria.md` untuk `<name>` alih-alih menjalankan wawancara | |

1476| `-i, --interactive` | Perlukan wawancara. Gagal tanpa terminal alih-alih menulis template | |

1477| `--eval-dir <dir>` | Direktori di bawah direktori saat ini untuk menulis cases ke | Manifest's `experimental.evals`, else `evals` |

1478| `-h, --help` | Tampilkan bantuan untuk perintah | |

1479 

1480<h3 id="plugin-tag">

1481 plugin tag

1482</h3>

1483 

1484Buat tag git rilis untuk plugin. Secara default perintah menandai plugin di direktori saat ini; berikan jalur untuk menandai plugin di tempat lain. Lihat [Tag plugin releases](/docs/id/plugin-dependencies#tag-plugin-releases-for-version-resolution).

1485 

1486```bash theme={null}

1487claude plugin tag [path] [options]

1488```

1489 

1490Perintah ini mengambil argumen-argumen berikut:

1491 

1492* `[path]`: Jalur ke direktori plugin. Default ke direktori saat ini.

1493 

1494Perintah ini menerima opsi-opsi berikut:

1495 

1496| Opsi | Deskripsi | Default |

1497| :-------------------- | :-------------------------------------------------------------- | :------- |

1498| `--push` | Dorong tag ke remote setelah membuatnya | |

1499| `--dry-run` | Cetak apa yang akan ditandai tanpa membuat tag | |

1500| `-f, --force` | Buat tag bahkan jika pohon kerja kotor atau tag sudah ada | |

1501| `-m, --message <msg>` | Pesan anotasi tag. Gunakan `%s` sebagai placeholder untuk versi | |

1502| `--remote <name>` | Remote untuk didorong dengan `--push` | `origin` |

1503| `-h, --help` | Tampilkan bantuan untuk perintah | |

1504 

1505***

1506 

1507<h2 id="debugging-and-development-tools">

1508 Alat debugging dan pengembangan

1509</h2>

1510 

1511<h3 id="debugging-commands">

1512 Perintah debugging

1513</h3>

1514 

1515Gunakan `claude --debug` untuk melihat detail pemuatan plugin:

1516 

1517Ini menampilkan:

1518 

1519* Plugin mana yang sedang dimuat

1520* Kesalahan apa pun dalam manifes plugin

1521* Pendaftaran skill, agent, dan hook

1522* Inisialisasi server MCP

1523 

1524<h3 id="common-issues">

1525 Masalah umum

1526</h3>

1527 

1528| Masalah | Penyebab | Solusi |

1529| :---------------------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1530| Plugin tidak dimuat | `plugin.json` tidak valid | Jalankan `claude plugin validate ./my-plugin` atau `/plugin validate ./my-plugin`, di mana `./my-plugin` adalah direktori plugin Anda, untuk memeriksa `plugin.json`, `hooks/hooks.json`, dan frontmatter dari skills, agents, dan commands di direktori default plugin untuk kesalahan sintaks dan skema. Lihat [Validate a plugin or a directory without a manifest](/docs/id/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) untuk mengetahui apa yang dicakup oleh suatu run |

1531| Skills tidak muncul | Struktur direktori salah | Pastikan `skills/` atau `commands/` berada di root plugin, bukan di dalam `.claude-plugin/` |

1532| Hooks tidak aktif | Script tidak dapat dieksekusi | Jalankan `chmod +x script.sh` |

1533| Server MCP gagal | `${CLAUDE_PLUGIN_ROOT}` hilang | Gunakan variabel untuk semua path plugin |

1534| Kesalahan path | Path absolut digunakan | Buat path relatif, dimulai dengan `./`; lihat [Path behavior rules](#path-behavior-rules), yang mencakup pengecualian `"."` di field `skills` |

1535| LSP `Executable not found in $PATH` | Language server tidak terinstal | Instal binary (misalnya, `npm install -g typescript-language-server typescript`) |

1536 

1537<h3 id="example-error-messages">

1538 Contoh pesan kesalahan

1539</h3>

1540 

1541**Kesalahan validasi manifes**:

1542 

1543* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: periksa koma yang hilang, koma berlebih, atau string yang tidak dikutip

1544* `Plugin <name> has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Invalid input: expected string, received undefined`: field yang diperlukan hilang

1545* `Plugin <name> has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: kesalahan sintaks JSON. Sebelum v2.1.246, Claude Code juga menghasilkan kesalahan ini untuk `plugin.json` yang disimpan sebagai UTF-8 dengan byte-order mark (BOM) di awal, bahkan ketika JSON sebaliknya valid.

1546 

1547**Kesalahan pemuatan plugin**:

1548 

1549* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: path command ada tetapi tidak berisi file command yang valid

1550* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: path `source` di marketplace.json menunjuk ke direktori yang tidak ada

1551* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: hapus definisi komponen duplikat atau hapus `strict: false` di entri marketplace

1552 

1553<h3 id="hook-troubleshooting">

1554 Hook troubleshooting

1555</h3>

1556 

1557**Hook script tidak dieksekusi**:

1558 

15591. Periksa script dapat dieksekusi: `chmod +x ./scripts/your-script.sh`

15602. Verifikasi baris shebang: Baris pertama harus `#!/bin/bash` atau `#!/usr/bin/env bash`

15613. Periksa path menggunakan `${CLAUDE_PLUGIN_ROOT}`: `"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh"`

15624. Uji script secara manual: `./scripts/your-script.sh`

1563 

1564**Hook tidak dipicu pada event yang diharapkan**:

1565 

15661. Verifikasi nama event benar (case-sensitive): `PostToolUse`, bukan `postToolUse`

15672. Periksa pola matcher cocok dengan tools Anda: `"matcher": "Write|Edit"` untuk operasi file

15683. Konfirmasi tipe hook valid: `command`, `http`, `mcp_tool`, `prompt`, atau `agent`

1569 

1570<h3 id="mcp-server-troubleshooting">

1571 MCP server troubleshooting

1572</h3>

1573 

1574**Server tidak memulai**:

1575 

15761. Periksa command ada dan dapat dieksekusi

15772. Verifikasi semua path menggunakan variabel `${CLAUDE_PLUGIN_ROOT}`

15783. Periksa log server MCP: `claude --debug` menampilkan kesalahan inisialisasi

15794. Uji server secara manual di luar Claude Code

1580 

1581**Tool server tidak muncul**:

1582 

15831. Pastikan server dikonfigurasi dengan benar di `.mcp.json` atau `plugin.json`

15842. Verifikasi server mengimplementasikan protokol MCP dengan benar

15853. Periksa timeout koneksi di output debug

1586 

1587<h3 id="directory-structure-mistakes">

1588 Kesalahan struktur direktori

1589</h3>

1590 

1591**Gejala**: Plugin dimuat tetapi komponen (skills, agents, hooks) hilang.

1592 

1593**Struktur yang benar**: Komponen harus berada di root plugin, bukan di dalam `.claude-plugin/`. Hanya `plugin.json` yang termasuk dalam `.claude-plugin/`.

1594 

1595**Daftar periksa debug**:

1596 

15971. Jalankan `claude --debug` dan cari pesan "loading plugin"

15982. Periksa bahwa setiap direktori komponen terdaftar di output debug

15993. Verifikasi izin file memungkinkan membaca file plugin

1600 

1601***

1602 

1603<h2 id="distribution-and-versioning-reference">

1604 Referensi distribusi dan versioning

1605</h2>

1606 

1607<h3 id="version-management">

1608 Manajemen versi

1609</h3>

1610 

1611Claude Code menggunakan versi plugin sebagai cache key yang menentukan apakah update tersedia. Ketika Anda menjalankan `/plugin update` atau auto-update aktif, Claude Code menghitung versi saat ini dan melewati update jika cocok dengan yang sudah terinstal. Plugin yang [dimuat di tempat](#plugin-caching-and-file-resolution) dari marketplace direktori lokal memuat file sumber saat ini di setiap awal sesi, apa pun yang dikatakan string versinya.

1612 

1613Untuk setiap tipe sumber kecuali `command`, Claude Code menyelesaikan versi dari yang pertama dari ini yang diatur:

1614 

16151. Field `version` dalam `plugin.json` plugin

16162. Field `version` dalam entri marketplace plugin dalam `marketplace.json`

16173. SHA commit git dari sumber plugin, untuk sumber `github`, `url`, `git-subdir`, dan relative-path dalam marketplace yang di-host git

16184. Digest SHA-256, untuk [sumber `archive`](/docs/id/plugin-marketplaces#zip-archives): pin `sha256` dalam entri marketplace, atau digest dari file yang diunduh ketika Anda tidak menetapkan pin. Claude Code mempersingkatnya menjadi 12 karakter pertama

16195. `unknown`, untuk sumber `npm` atau direktori lokal yang tidak berada dalam repositori git. Claude Code tidak mengambil versi dari repositori yang menutup path instalasi, seperti `~/.claude` yang dikelola git

1620 

1621Untuk [sumber `command`](/docs/id/plugin-marketplaces#command-sources), Claude Code selalu menurunkan versi dari apa yang dihasilkan perintah: hash konten 12-karakter sendiri, atau ditambahkan ke versi `plugin.json` sebagai `<version>-<hash>` ketika satu diatur. Claude Code mengabaikan field `version` entri marketplace untuk sumber command. Perintah yang output hash-nya berubah oleh karena itu menghasilkan versi baru, bahkan ketika string versi yang ditulis tetap sama. Dalam [link mode](/docs/id/plugin-marketplaces#copy-mode-and-link-mode), hash mencakup path nyata direktori yang dicetak dan entri tingkat atasnya daripada konten file.

1622 

1623Untuk tipe sumber tersebut, ini memberi Anda tiga cara untuk membuat versi plugin:

1624 

1625| Pendekatan | Cara | Perilaku update | Terbaik untuk |

1626| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- |

1627| **Versi eksplisit** | Atur `"version": "2.1.0"` dalam `plugin.json` | Pengguna mendapatkan update hanya ketika Anda menaikkan field ini. Mendorong commit baru tanpa menaikkannya tidak berpengaruh, dan `/plugin update` melaporkan "already at the latest version". Untuk plugin yang [dimuat di tempat](#plugin-caching-and-file-resolution), konten baru dimuat bagaimanapun. | Plugin yang dipublikasikan dengan siklus rilis stabil |

1628| **Versi commit-SHA** | Hilangkan `version` dari `plugin.json` dan entri marketplace | Pengguna mendapatkan update kapan pun commit yang diselesaikan sumber berubah | Plugin internal atau tim dalam pengembangan aktif |

1629| **Versi digest** | Gunakan [sumber `archive`](/docs/id/plugin-marketplaces#zip-archives) dan hilangkan `version` dari `plugin.json` dan entri marketplace | Dengan pin `sha256`, pengguna mendapatkan update ketika Anda mengubah pin. Tanpa satu, pengguna mendapatkan update kapan pun byte file zip yang di-host berubah | Plugin yang dipublikasikan sebagai file zip ke server statis atau repositori artefak |

1630 

1631Jika Anda menggunakan versi eksplisit, ikuti [semantic versioning](https://semver.org) (`MAJOR.MINOR.PATCH`): naikkan MAJOR untuk perubahan breaking, MINOR untuk fitur baru, PATCH untuk perbaikan bug. Dokumentasikan perubahan dalam `CHANGELOG.md`.

1632 

1633***

1634 

1635<h2 id="see-also">

1636 Lihat juga

1637</h2>

1638 

1639* [Plugins](/docs/id/plugins) - Tutorial dan penggunaan praktis

1640* [Plugin marketplaces](/docs/id/plugin-marketplaces) - Membuat dan mengelola marketplace

1641* [Skills](/docs/id/skills) - Detail pengembangan skill

1642* [Subagents](/docs/id/sub-agents) - Konfigurasi dan kemampuan agent

1643* [Hooks](/docs/id/hooks) - Penanganan event dan otomasi

1644* [MCP](/docs/id/mcp) - Integrasi alat eksternal

1645* [Settings](/docs/id/settings) - Opsi konfigurasi untuk plugins

plugins/cli-hints.md +136 −0 created

Details

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# Rekomendasikan plugin Anda dari CLI Anda

6 

7> Minta pengguna Claude Code untuk memasang plugin marketplace resmi Anda dengan mengeluarkan tag claude-code-hint dari CLI atau SDK Anda.

8 

9Jika Anda memelihara CLI atau SDK, alat Anda dapat meminta pengguna Claude Code untuk memasang plugin Anda. Ketika CLI Anda mendeteksi bahwa itu berjalan di dalam Claude Code, buat agar menuliskan tag `<claude-code-hint />` satu baris ke stderr. Claude Code menghapus baris dari output alat Bash dan PowerShell sebelum model melihat output, kemudian menampilkan kepada pengguna prompt pemasangan satu kali.

10 

11Halaman ini hanya berlaku jika plugin Anda terdaftar di `claude-plugins-official` atau marketplace lain dengan salah satu [nama marketplace resmi Anthropic](/docs/id/plugins/security#official-marketplace-names). Marketplace komunitas, `claude-community`, bukan salah satunya.

12 

13<Note>

14 Untuk menerbitkan plugin, lihat [Publish and distribute a plugin](/docs/id/plugins/publish).

15</Note>

16 

17<h2 id="emit-the-hint">

18 Keluarkan hint

19</h2>

20 

21Keluarkan tag hanya ketika `CLAUDECODE` atau `CLAUDE_CODE_CHILD_SESSION` diatur, sehingga tidak muncul ketika seseorang menjalankan CLI Anda secara langsung.

22 

23Claude Code menetapkan `CLAUDECODE=1` dalam perintah yang dijalankannya melalui alat Bash dan PowerShell dan dalam perintah hook. Pada v2.1.172 dan yang lebih baru, itu juga menetapkan `CLAUDE_CODE_CHILD_SESSION=1` di sana. Variabel berbeda dalam proses mana yang membawanya:

24 

25* **`CLAUDECODE`**: diatur oleh setiap versi Claude Code. Ekstensi IDE juga menetapkannya di terminal terintegrasi mereka, jadi gerbang pada `CLAUDECODE` saja juga mengeluarkan tag ketika seseorang menjalankan CLI Anda sendiri di salah satu terminal tersebut

26* **`CLAUDE_CODE_CHILD_SESSION`**: diatur hanya dalam subproses yang dimulai Claude Code sendiri. Gunakan ketika Anda dapat memerlukan v2.1.172 atau yang lebih baru

27 

28[Referensi variabel lingkungan](/docs/id/env-vars) memiliki detailnya.

29 

30Contoh berikut gerbang pada `CLAUDECODE` untuk jangkauan terluas dan mengeluarkan hint untuk plugin bernama `example-cli` di marketplace resmi:

31 

32<CodeGroup>

33 ```javascript Node.js theme={null}

34 if (process.env.CLAUDECODE) {

35 process.stderr.write(

36 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

37 )

38 }

39 ```

40 

41 ```python Python theme={null}

42 import os, sys

43 

44 if os.environ.get("CLAUDECODE"):

45 print(

46 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

47 file=sys.stderr,

48 )

49 ```

50 

51 ```go Go theme={null}

52 if os.Getenv("CLAUDECODE") != "" {

53 fmt.Fprintln(os.Stderr,

54 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

55 }

56 ```

57 

58 ```shell Shell theme={null}

59 if [ -n "$CLAUDECODE" ]; then

60 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

61 fi

62 ```

63</CodeGroup>

64 

65Ganti `example-cli` dengan nama plugin Anda di marketplace resmi.

66 

67Anda dapat mengeluarkan hint pada setiap invokasi, karena Claude Code meminta untuk setiap plugin sekali.

68 

69Untuk memeriksa emitter, jalankan `CLAUDECODE=1 example-cli` di terminal dan konfirmasi baris tag muncul di stderr, kemudian jalankan `example-cli` tanpa variabel dan konfirmasi tidak ada yang dicetak ekstra.

70 

71<h2 id="hint-format">

72 Format hint

73</h2>

74 

75Tag harus menempati barisnya sendiri; Claude Code mengabaikan tag yang tertanam di tengah baris.

76 

77Tag mengambil tiga atribut, semuanya diperlukan:

78 

79| Atribut | Deskripsi |

80| :------ | :----------------------------------------------------------- |

81| `v` | Versi protokol. `1` adalah satu-satunya nilai yang didukung |

82| `type` | Jenis hint. `plugin` adalah satu-satunya nilai yang didukung |

83| `value` | Pengenal plugin dalam bentuk `name@marketplace` |

84 

85Nilai dapat dikutip ganda atau tidak dikutip; nilai yang tidak dikutip tidak dapat berisi spasi.

86 

87Claude Code menghapus baris dari output bahkan ketika `v` atau `type` tidak dikenali.

88 

89<h2 id="check-when-the-prompt-appears">

90 Periksa kapan prompt muncul

91</h2>

92 

93Prompt hanya muncul dalam sesi terminal interaktif. Dalam `claude -p` berjalan, dalam berjalan subagent, dan dalam output perintah hook, tag dilepas dan tidak ada prompt yang ditampilkan. Semua pemeriksaan ini juga harus lulus:

94 

95* **Resmi dan dapat dipasang**: `value` menamai plugin yang Claude Code temukan di salinan lokal marketplace resmi, yang belum dipasang, dan yang tidak ada kebijakan yang memblokir

96* **Analytics aktif**: sesi di mana analytics Claude Code dimatikan tidak pernah meminta, misalnya satu dengan `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, atau satu di penyedia pihak ketiga seperti Amazon Bedrock, di mana [automatic telemetry opt-out](/docs/id/data-usage#default-behaviors-by-api-provider) berlaku

97* **Batas frekuensi**: satu prompt per sesi, satu prompt selamanya per plugin terlepas dari jawaban pengguna, dan tidak ada setelah 100 plugin telah diminta di mesin itu

98* **Tidak dimatikan**: pengguna belum memilih **No, and don't show plugin installation hints again**

99* **Sesi lokal, dihadiri**: workspace sesi bersifat lokal daripada di mesin cloud atau jarak jauh, dan sesi tidak berjalan tanpa pengawasan. Misalnya, sesi dimulai dengan `--cloud`, satu melayani Remote Control, atau anggota tim agent-team tidak pernah meminta

100 

101<h2 id="preview-what-the-user-sees">

102 Pratinjau apa yang dilihat pengguna

103</h2>

104 

105Ketika pemeriksaan dalam [Periksa kapan prompt muncul](#check-when-the-prompt-appears) lulus, Claude Code menampilkan dialog **Plugin recommendation** seperti berikut:

106 

107```text theme={null}

108─────────────────────────────────────────────────────────────

109 Plugin recommendation

110 

111 The example-cli command suggests installing a plugin.

112 

113 Plugin: example-cli

114 Marketplace: claude-plugins-official

115 Description: Official integration for example-cli deployments

116 

117 Would you like to install it?

118 ❯ 1. Yes, install

119 2. No

120 3. No, and don't show plugin installation hints again

121 

122─────────────────────────────────────────────────────────────

123```

124 

125Dialog menamai kata pertama dari perintah shell yang Claude jalankan, sehingga pengguna dapat mendeteksi ketidaksesuaian. Setiap jawaban memiliki satu efek:

126 

127* **Yes, install**: memasang plugin di [user scope](/docs/id/plugins/install)

128* **No, and don't show plugin installation hints again**: mematikan prompt hint masa depan untuk pengguna itu

129* **No answer for 30 seconds**: dihitung sebagai **No**

130 

131<h2 id="next-steps">

132 Langkah berikutnya

133</h2>

134 

135* [Publish and distribute a plugin](/docs/id/plugins/publish): rute ke setiap marketplace, termasuk marketplace resmi, yang hint memerlukan

136* [Plugin commands reference](/docs/id/plugins/cli-reference#plugin-install): perintah shell yang memasang plugin yang sama di luar sesi

plugins/cli-reference.md +841 −0 created

Details

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# Referensi perintah plugin

6 

7> Referensi lengkap untuk perintah shell plugin claude, /plugin dan /reload-plugins dalam sesi, dan flag yang memuat plugin untuk satu sesi.

8 

9Anda menjalankan perintah plugin baik sebagai `claude plugin` dari shell atau skrip Anda, atau sebagai `/plugin` dan `/reload-plugins` di dalam sesi Claude Code. Referensi ini memberikan flag, default, output, dan kode keluar setiap perintah, bersama dengan dua flag yang memuat plugin untuk satu sesi.

10 

11Jalankan `claude plugin --help` pada build Anda untuk mengonfirmasi subperintah mana yang dimiliki versi Anda.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Instal dan kelola langkah, dan di mana `/plugin` berjalan**: lihat [Instal dan kelola plugin](/docs/id/plugins/install)

17 * **Apa yang diubah perintah di disk dan cakupan mana yang diutamakan**: lihat [Referensi pemuatan plugin](/docs/id/plugins/loading)

18 * **Apa arti pesan kesalahan**: lihat [Troubleshoot plugin](/docs/id/plugins/troubleshooting)

19</Note>

20 

21<h2 id="claude-plugin-commands">

22 Perintah claude plugin

23</h2>

24 

25Jalankan `claude plugin <subcommand>` dari shell atau skrip Anda, di luar sesi Claude Code. Subperintah ini menginstal dan mengelola plugin tanpa membuka panel [`/plugin`](#plugin-in-a-session).

26 

27`claude plugins` adalah alias untuk `claude plugin`.

28 

29Setiap subperintah berbagi kode keluar, argumen plugin, dan nilai cakupan ini:

30 

31* **Kode keluar**: `0` pada kesuksesan dan `1` pada kegagalan. `validate` menambahkan keluar `2` untuk kesalahan yang tidak terduga, dan `eval` menambahkan kode yang tercantum di [bagiannya](#plugin-eval).

32* **Argumen plugin**: argumen `<plugin>` adalah plugin `name` atau `name@marketplace`. Ketika dua marketplace menawarkan nama yang sama, gunakan bentuk yang memenuhi syarat.

33* **Cakupan**: `--scope` mengambil `user`, `project`, atau `local`, dan menamai file pengaturan yang ditulis perintah. `update` juga mengambil `managed`.

34 

35<h3 id="plugin-init">

36 plugin init

37</h3>

38 

39Rangka kerja plugin baru di `~/.claude/skills/<name>/`. Plugin ini dimuat dalam sesi berikutnya Anda sebagai `<name>@skills-dir` tanpa langkah instal.

40 

41`new` adalah alias untuk `init`.

42 

43Untuk alur kerja buat, uji, dan edit yang dimulai dengan perintah ini, lihat [Buat plugin](/docs/id/plugins/create).

44 

45```bash theme={null}

46claude plugin init <name> [options]

47```

48 

49`<name>` menjadi nama direktori di bawah `~/.claude/skills/` dan `name` plugin dalam manifestnya.

50 

51Perintah ini tidak memiliki flag untuk lokasi lain. Untuk rangka kerja di dalam proyek, lihat [Buat plugin](/docs/id/plugins/create).

52 

53| Flag | Deskripsi |

54| :----------------------- | :------------------------------------------------------------------------------------------------------------ |

55| `--description <text>` | Deskripsi manifest |

56| `--author <name>` | Nama penulis. Default ke `git config user.name` |

57| `--author-email <email>` | Email penulis. Default ke `git config user.email` |

58| `--with <components...>` | Juga rangka kerja file pemula untuk `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, atau `channel` |

59| `-f, --force` | Timpa `.claude-plugin/` yang ada di target |

60 

61Rangka kerja plugin dengan file skill dan hook pemula:

62 

63```bash theme={null}

64claude plugin init my-helper --with skills hooks

65```

66 

67Claude Code memvalidasi apa yang ditulis dan mencetak `Created plugin "my-helper" at ~/.claude/skills/my-helper`, diikuti oleh id yang dimuat sebagai dan perintah `claude plugin disable` yang mematikannya.

68 

69Claude Code keluar `1` tanpa menulis ketika tidak dapat rangka kerja dengan aman, dan pesan menamai alasannya. Ini adalah alasan umum:

70 

71* Nilai `--with` yang tidak dikenal

72* Rangka kerja yang ada di target tanpa `--force`

73* Pengaturan terkelola yang memblokir plugin direktori skills

74 

75<h3 id="plugin-install">

76 plugin install

77</h3>

78 

79Instal plugin dari marketplace yang telah Anda tambahkan. `i` adalah alias untuk `install`.

80 

81```bash theme={null}

82claude plugin install <plugin> [options]

83```

84 

85Sebagian besar plugin diinstal tanpa prompt. Untuk plugin yang entri marketplacenya [menjalankan perintah untuk menginstalnya](/docs/id/plugins/host-marketplace) atau [menetapkan `headersHelper` untuk downloadnya](/docs/id/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code terlebih dahulu mencetak perintah dan menanyakan `Run this command now? [y/N]`.

86 

87| Flag | Deskripsi |

88| :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |

90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Memerlukan Claude Code v2.1.147 atau lebih baru |

91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari alat Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |

92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |

93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

94 

95Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:

96 

97* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`

98* **Claude menjalankan perintah melalui alat Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri

99 

100Instal plugin untuk semua orang yang mengkloning proyek:

101 

102```bash theme={null}

103claude plugin install formatter@my-marketplace --scope project

104```

105 

106Claude Code mencetak `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Ketika tidak ada yang baru diinstal, output mengatakan mengapa:

107 

108* **Sudah diinstal di cakupan itu**: output adalah `Plugin "formatter@my-marketplace" is already installed (scope: project)` dan kode keluar adalah `0`

109* **Anda menolak prompt sumber perintah**: output adalah `Aborted.` dan kode keluar adalah `1`

110* **Anda menolak prompt `headersHelper`, atau tidak dapat dikonfirmasi tanpa TTY**: output adalah `Aborted — the command was not run.` dan kode keluar adalah `1`

111 

112<h4 id="plugin-json-result">

113 Format hasil JSON

114</h4>

115 

116Ketika Anda melewatkan `--json` ke `plugin install`, baris terakhir stdout adalah satu objek JSON. Parsing hanya baris itu, karena Claude Code mencetak perintah apa pun yang dideklarasikan marketplace sebelumnya.

117 

118Tiga field selalu ada:

119 

120* `command`: subperintah yang berjalan, seperti `install`

121* `outcome`: `ok` atau `failed`

122* `message`: deskripsi hasil yang dapat dibaca manusia

123 

124Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.

125 

126Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.

127 

128<h4 id="accept-a-displayed-install-command">

129 Terima perintah instal yang ditampilkan

130</h4>

131 

132Ketika run `--json` menampilkan perintah yang dideklarasikan marketplace dan tidak menjalankannya, hasil `failed` juga membawa objek `shownCommand`. Fieldnya mencakup perintah seperti yang ditampilkan, plugin yang dimilikinya, dan `sha256` perintah.

133 

134Untuk menerima perintah yang tepat itu, jalankan kembali dengan `sha256` itu sebagai `--accept-command` dari terminal Anda sendiri, karena flag tidak memiliki efek di dalam sesi Claude Code. Memerlukan Claude Code v2.1.271 atau lebih baru.

135 

136`sha256` dihitung sebagai penerimaan untuk perintah, plugin, dan katalog marketplace yang tepat. Jika salah satu dari mereka berubah sejak perintah ditampilkan, Claude Code tidak menerima `sha256` dan menampilkan perintah lagi. Perubahan yang refresh marketplace run sendiri ambil juga dihitung sebagai perubahan seperti itu.

137 

138Jika `shownCommand.acceptCommandMatched` adalah `false`, `sha256` yang Anda lewatkan tidak cocok dengan perintah yang sekarang ditampilkan. Tinjau perintah itu sebelum menjalankan kembali dengan `sha256`-nya.

139 

140<h3 id="plugin-uninstall">

141 plugin uninstall

142</h3>

143 

144Hapus plugin yang diinstal dari satu cakupan. `remove` dan `rm` adalah alias untuk `uninstall`.

145 

146```bash theme={null}

147claude plugin uninstall <plugin> [options]

148```

149 

150| Flag | Deskripsi |

151| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| `-s, --scope <scope>` | Copot dari cakupan: `user`, `project`, atau `local`. Default ke `user` |

153| `--keep-data` | Pertahankan direktori data persisten plugin, `~/.claude/plugins/data/<id>/` |

154| `--prune` | Juga hapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak diperlukan plugin yang tersisa |

155| `-y, --yes` | Lewati prompt konfirmasi `--prune`. Diperlukan dengan `--prune` ketika stdin atau stdout bukan TTY |

156| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Tidak dapat digabungkan dengan `--prune`. Memerlukan Claude Code v2.1.268 atau lebih baru |

157 

158Copot plugin dari cakupan proyek:

159 

160```bash theme={null}

161claude plugin uninstall formatter@my-marketplace --scope project

162```

163 

164Claude Code mencetak `Successfully uninstalled plugin: formatter (scope: project)`. Ketika plugin tidak diinstal di cakupan itu, perintah mencetak baris yang dimulai `Failed to uninstall plugin "formatter@my-marketplace":` dan keluar `1`.

165 

166<h3 id="plugin-enable">

167 plugin enable

168</h3>

169 

170Aktifkan plugin yang dinonaktifkan. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), lewatkan `<name>@synced` sebagai plugin.

171 

172```bash theme={null}

173claude plugin enable <plugin> [options]

174```

175 

176| Flag | Deskripsi |

177| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `-s, --scope <scope>` | Cakupan untuk diaktifkan: `user`, `project`, atau `local`. Terdeteksi otomatis ketika dihilangkan |

179| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

180 

181Tanpa `--scope`, perintah memeriksa file pengaturan Anda dalam urutan lokal, proyek, pengguna, dan menggunakan cakupan pertama yang menyebutkan plugin.

182 

183Jika Anda melewatkan `--scope` di mana plugin tidak dideklarasikan, perintah menulis override atau gagal:

184 

185* **Cakupan yang [diutamakan](/docs/id/plugins/loading) di atas yang mendeklarasikan**: Claude Code menulis override di cakupan yang Anda lewatkan. Misalnya, `claude plugin disable formatter --scope local` mematikan plugin yang diaktifkan proyek hanya untuk Anda

186* **Cakupan lain**: perintah gagal dengan `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`

187 

188Jika plugin sudah diaktifkan di cakupan yang diselesaikan, perintah mencetak `Plugin "formatter" is already enabled` dan keluar `1`. Dengan `--json`, hasil memiliki `"failureCode": "already_in_goal_state"` dan `"alreadyInGoalState": true`, jadi skrip dapat memperlakukan kasus itu sebagai kesuksesan.

189 

190Ketika plugin mendeklarasikan [dependensi](/docs/id/plugins/dependencies), Claude Code juga mengaktifkannya. Perintah gagal dalam kasus ini:

191 

192* **Dependensi tidak diinstal**: aktifkan gagal dan mencetak perintah `claude plugin install` untuk setiap dependensi yang hilang

193* **Dependensi diblokir oleh kebijakan plugin organisasi Anda**: aktifkan gagal dan menamai dependensi yang diblokir

194* **Dependensi diatur ke `false` di cakupan dengan prioritas lebih tinggi dari cakupan target**: aktifkan gagal. Aktifkan dependensi di cakupan itu, atau lewatkan `--scope` untuk menulis di sana

195 

196Aktifkan kembali plugin di mana pun dideklarasikan:

197 

198```bash theme={null}

199claude plugin enable formatter

200```

201 

202Claude Code mencetak `Successfully enabled plugin: formatter (scope: project)`, menamai cakupan yang terdeteksi.

203 

204<h3 id="plugin-disable">

205 plugin disable

206</h3>

207 

208Nonaktifkan plugin tanpa mencopot. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), lewatkan `<name>@synced` sebagai plugin.

209 

210```bash theme={null}

211claude plugin disable [plugin] [options]

212```

213 

214| Flag | Deskripsi |

215| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

216| `-a, --all` | Nonaktifkan setiap plugin yang diaktifkan. Tidak dapat digabungkan dengan nama plugin atau `--scope` |

217| `-s, --scope <scope>` | Cakupan untuk dinonaktifkan: `user`, `project`, atau `local`. Terdeteksi otomatis ketika dihilangkan |

218| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

219 

220Tanpa `--scope`, cakupan terdeteksi otomatis dalam urutan lokal, proyek, pengguna yang sama seperti [`plugin enable`](#plugin-enable).

221 

222Jika Anda tidak melewatkan nama plugin atau `--all`, Claude Code mencetak `Please specify a plugin name or use --all to disable all plugins` dan keluar `1`. Menonaktifkan plugin yang sudah dinonaktifkan mencetak `Plugin "formatter" is already disabled` dan keluar `1`, seperti yang dilakukan [`plugin enable`](#plugin-enable) untuk plugin yang sudah diaktifkan.

223 

224Perintah gagal untuk plugin yang masih diperlukan:

225 

226* **Plugin yang diaktifkan lain [bergantung pada](/docs/id/plugins/dependencies) itu**: perintah gagal dan menamai dependennya untuk dinonaktifkan terlebih dahulu

227* **Organisasi Anda memerlukannya sebagai plugin yang disinkronkan**: perintah gagal dan tidak menyimpan apa pun

228 

229Nonaktifkan satu plugin:

230 

231```bash theme={null}

232claude plugin disable formatter

233```

234 

235Claude Code mencetak `Successfully disabled plugin: formatter (scope: project)`.

236 

237<h3 id="plugin-update">

238 plugin update

239</h3>

240 

241Perbarui plugin ke versi terbaru yang ditawarkan marketplacenya. Versi baru dimuat dalam sesi berikutnya Anda, atau setelah Anda menjalankan `/reload-plugins` di sesi yang sedang berjalan.

242 

243```bash theme={null}

244claude plugin update <plugin> [options]

245```

246 

247| Flag | Deskripsi |

248| :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

249| `-s, --scope <scope>` | Cakupan untuk diperbarui: `user`, `project`, `local`, atau `managed`. Default ke cakupan tempat plugin diinstal |

250| `-y, --yes` | Terima perintah instal yang berubah dari plugin [command-source](/docs/id/plugins/host-marketplace), tanpa prompt. Diperlukan ketika stdin atau stdout bukan TTY, kecuali Anda melewatkan `--accept-command`. Memerlukan Claude Code v2.1.229 atau lebih baru |

251| `--accept-command <sha256>` | Terima perintah yang dideklarasikan marketplace yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Memerlukan Claude Code v2.1.271 atau lebih baru |

252| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

253 

254`managed` adalah satu-satunya cakupan yang dapat Anda perbarui tetapi tidak instal. Untuk plugin yang diinstal admin, lihat [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org).

255 

256Perbarui plugin:

257 

258```bash theme={null}

259claude plugin update formatter@my-marketplace

260```

261 

262Claude Code mencetak `Checking for updates for plugin "formatter@my-marketplace"…`, kemudian hasilnya. Ketika tidak ada yang lebih baru, mencetak `formatter is already at the latest version (1.0.0).` dan keluar `0`.

263 

264Anda dapat melewatkan nama plugin telanjang, yang dicocokkan perintah terhadap plugin yang diinstal. Ketika plugin yang diinstal dari marketplace berbeda berbagi nama, perintah menolak pembaruan dan mencantumkan perintah `plugin-name@marketplace-name` yang memenuhi syarat untuk dijalankan. Memperbarui dengan nama telanjang memerlukan Claude Code v2.1.246 atau lebih baru.

265 

266<h3 id="plugin-list">

267 plugin list

268</h3>

269 

270Daftar plugin yang diinstal dengan versi, cakupan, dan status mereka.

271 

272```bash theme={null}

273claude plugin list [options]

274```

275 

276| Flag | Deskripsi |

277| :------------ | :----------------------------------------------------------------------------------------------------------- |

278| `--json` | Cetak daftar sebagai JSON |

279| `--available` | Juga daftar plugin yang ditawarkan marketplace Anda yang belum Anda instal. Tidak berpengaruh tanpa `--json` |

280 

281Claude Code mengelompokkan output yang dapat dibaca manusia berdasarkan cara setiap plugin dimuat:

282 

283* **`Installed plugins:`**: plugin yang Anda instal dari marketplace

284* **`Session-only plugins (--plugin-dir / --plugin-url):`**: plugin yang dimuat oleh flag itu dalam perintah yang sama, seperti dalam `claude --plugin-dir ./my-plugin plugin list`

285* **`Skills-directory plugins (.claude/skills/*):`**: plugin yang Claude Code temukan di direktori skills

286* **`Synced from claude.ai`**: [plugin yang disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins)

287 

288Tanpa apa pun di grup mana pun, Claude Code mencetak ``No plugins installed. Use `claude plugin install` to install a plugin.``

289 

290<h4 id="json-output">

291 Output JSON

292</h4>

293 

294Dengan `--json`, Claude Code mencetak array dengan satu objek per instalasi. Setiap objek membawa field di bawah. `id`, `version`, `scope`, `enabled`, dan `installPath` selalu ada, dan yang lain muncul hanya ketika berlaku.

295 

296| Field | Tipe | Deskripsi |

297| :------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

298| `id` | string | `name@marketplace` untuk instal, `name@inline` untuk plugin hanya sesi, `name@skills-dir` untuk plugin direktori skills, `name@synced` untuk plugin yang disinkronkan dari claude.ai |

299| `version` | string | Untuk instal marketplace, [versi yang Claude Code hitung](/docs/id/plugins/loading#versions-and-updates) saat instal. Untuk plugin hanya sesi, direktori skills, atau disinkronkan, `version` manifest, atau `unknown` ketika tidak mendeklarasikan |

300| `scope` | string | `user`, `project`, `local`, atau `managed` untuk instal; `user` atau `project` untuk plugin direktori skills; `session` untuk plugin hanya sesi; `synced` untuk plugin yang disinkronkan dari claude.ai |

301| `enabled` | boolean | Apakah plugin diaktifkan dalam pengaturan gabungan Anda |

302| `installPath` | string | Direktori tempat plugin dimuat |

303| `installedAt` | string | Timestamp ISO instalasi. Hanya instal marketplace |

304| `lastUpdated` | string | Timestamp ISO pembaruan terakhir. Hanya instal marketplace |

305| `projectPath` | string | Proyek yang dimiliki instal. Hanya cakupan `project` dan `local` |

306| `mcpServers` | object | Definisi server MCP plugin, ketika plugin yang diinstal marketplace memiliki |

307| `errors` | array of strings | Kesalahan muat, ketika plugin gagal dimuat |

308| `notes` | array of strings | Peringatan penulisan untuk plugin yang dimuat dan berfungsi |

309| `errorDetails` | array of objects | Satu objek per entri `errors`, memberikan `type` diagnostik dan nama yang dirujuknya, seperti plugin, marketplace, server, atau file. Memerlukan Claude Code v2.1.268 atau lebih baru |

310| `noteDetails` | array of objects | Objek detail yang sama untuk setiap entri `notes`. Memerlukan Claude Code v2.1.268 atau lebih baru |

311 

312Dengan `--json --available`, Claude Code mencetak satu objek alih-alih array. Field `installed`-nya memegang array objek plugin yang diinstal, dan field `available`-nya memegang satu objek per plugin marketplace yang tidak diinstal dengan field di bawah.

313 

314| Field | Tipe | Deskripsi |

315| :---------------- | :--------------- | :---------------------------------------------------------------------------------------------------------- |

316| `pluginId` | string | `name@marketplace` |

317| `name` | string | Nama plugin di marketplace |

318| `marketplaceName` | string | Marketplace yang menawarkannya |

319| `source` | string or object | [Sumber](/docs/id/plugins/marketplace-reference) entri marketplace: string untuk jalur relatif, objek sebaliknya |

320| `description` | string | Deskripsi entri, ketika memiliki |

321| `version` | string | Versi entri, ketika mendeklarasikan |

322| `installCount` | number | Jumlah instal, ketika Claude Code memiliki satu untuk plugin |

323 

324<h3 id="plugin-details">

325 plugin details

326</h3>

327 

328Tampilkan inventaris komponen plugin dan biaya token proyeksiannya.

329 

330Plugin harus dimuat: diinstal, ditemukan di direktori skills, atau dilewatkan dengan `--plugin-dir` atau `--plugin-url` dalam perintah yang sama. `<name>` adalah plugin `name` atau `name@marketplace`.

331 

332```bash theme={null}

333claude plugin details <name>

334```

335 

336Perintah tidak mengambil flag di luar `--help`.

337 

338Tampilkan apa yang disumbangkan plugin yang diinstal:

339 

340```bash theme={null}

341claude plugin details formatter

342```

343 

344Claude Code mencetak nama, versi, deskripsi, dan sumber plugin, kemudian bagian ini:

345 

346* **`Component inventory`**: skills, agents, hooks, server MCP, dan server LSP plugin

347* **`Projected token cost`**: token yang selalu aktif yang ditambahkan plugin ke setiap sesi

348* **`Per-component (rounded)`**: perkiraan selalu aktif dan on-invoke untuk setiap skill, agent, dan perintah. Dihilangkan ketika plugin tidak memiliki

349 

350Untuk apa dua angka biaya berarti, lihat [Ukur biaya dan penggunaan plugin](/docs/id/plugins/measure).

351 

352Untuk plugin yang tidak dimuat, Claude Code mencetak ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` dan keluar `1`.

353 

354<h3 id="plugin-prune">

355 plugin prune

356</h3>

357 

358Hapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak diperlukan plugin yang diinstal lagi. Perintah tidak pernah menghapus plugin yang Anda instal sendiri. `autoremove` adalah alias untuk `prune`.

359 

360```bash theme={null}

361claude plugin prune [options]

362```

363 

364| Flag | Deskripsi |

365| :-------------------- | :---------------------------------------------------------------------- |

366| `-s, --scope <scope>` | Prune di cakupan: `user`, `project`, atau `local`. Default ke `user` |

367| `--dry-run` | Daftar apa yang akan dihapus tanpa menghapusnya |

368| `-y, --yes` | Lewati prompt konfirmasi. Diperlukan ketika stdin atau stdout bukan TTY |

369 

370Pratinjau apa yang akan dihapus prune:

371 

372```bash theme={null}

373claude plugin prune --dry-run

374```

375 

376Claude Code mencantumkan dependensi yatim piatu dan berakhir dengan `(dry run — nothing removed)`. Tanpa yang dihapus, mencetak baris yang dimulai `Nothing to prune`.

377 

378Tanpa `--dry-run`, perintah menghapus dependensi yatim piatu hanya setelah Anda mengonfirmasi di prompt atau melewatkan `-y`.

379 

380Kode keluar adalah `0` apa pun yang Anda jawab di prompt.

381 

382Apa yang dilakukan `prune` tergantung pada apakah terminal terpasang dan apakah Anda melewatkan `-y`:

383 

384| Terminal dan flag | Apa yang terjadi |

385| :---------------------------------------- | :----------------------------------------------------------------------------------------------- |

386| Terminal interaktif, tidak ada `-y` | Mencantumkan dependensi yatim piatu dan menanyakan `Remove? [y/N]` |

387| Terminal apa pun, `-y` | Menghapusnya dan mencetak `Removed N auto-installed plugins: <names>` |

388| stdin atau stdout non-TTY, tidak ada `-y` | Mencetak daftar dan ``Not a TTY — run `claude plugin prune -y` to remove.``, menghapus tidak ada |

389 

390<h3 id="plugin-eval">

391 plugin eval

392</h3>

393 

394Jalankan [kasus eval](/docs/id/plugin-evals) plugin dan laporkan hasil yang dinilai. Memerlukan Claude Code v2.1.269 atau lebih baru.

395 

396Setiap kasus adalah prompt plus grader. Claude Code menjalankannya beberapa kali dalam sesi terisolasi dengan hanya plugin target yang dimuat, dan secara default juga tanpa plugin sehingga laporan menunjukkan perbedaannya.

397 

398Lihat [Uji plugin dengan eval](/docs/id/plugin-evals) untuk format kasus, grader, hasil, dan penggunaan CI.

399 

400```bash theme={null}

401claude plugin eval [target] [options]

402```

403 

404`target` opsional default ke direktori saat ini dan mengambil salah satu bentuk ini:

405 

406* Direktori plugin

407* File `prompt.md` atau `case.yaml` tunggal

408* Plugin yang diinstal sebagai `name` atau `name@marketplace`

409* `name@skills-dir`

410 

411Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama alat, atau jalur output JSON alih-alih sebagai target.

412 

413Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.

414 

415| Opsi | Deskripsi | Default |

416| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------- |

417| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |

418| `-j, --concurrency <n>` | Sesi agen untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi batas laju Anda | `1` |

419| `--model <model>` | Model untuk agen di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |

420| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model kecil cepat |

421| `--ablation <mode>` | `none` atau `with-without`. Lihat [Bandingkan dengan baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` ketika plugin diselesaikan, atau `none` |

422| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |

423| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |

424| `--allow-tools <tools...>` | Berikan alat di luar set hanya baca, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan alat](/docs/id/plugin-evals#grant-tools) | |

425| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |

426| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |

427| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |

428| `--eval-dir <dir>` | Direktori di bawah plugin yang memegang kasus | `experimental.evals` manifest, atau `evals` |

429| `--json [path]` | Cetak [dokumen hasil](/docs/id/plugin-evals#json-result) ke stdout, atau tulis ke jalur `.json` | |

430| `--no-publish` | Jaga laporan HTML tetap lokal | |

431 

432Kode keluar melaporkan bagaimana run berakhir. Untuk bertindak atas itu dalam pipeline, lihat [Jalankan eval dalam CI](/docs/id/plugin-evals#run-evals-in-ci).

433 

434| Kode keluar | Arti |

435| :---------- | :--------------------------------------------------------------------------- |

436| `0` | Setiap kasus memenuhi ambang |

437| `1` | Kasus yang gagal, kesalahan muat, atau direktori plugin yang tidak dipercaya |

438| `2` | Run parsial |

439| `130` | Terputus |

440| `143` | Dihentikan |

441 

442<h3 id="plugin-eval-init">

443 plugin eval init

444</h3>

445 

446Buat suite eval untuk plugin di direktori saat ini. Memerlukan Claude Code v2.1.269 atau lebih baru. Lihat [Buat suite eval pertama Anda](/docs/id/plugin-evals#create-your-first-eval-suite).

447 

448```bash theme={null}

449claude plugin eval init [name] [options]

450```

451 

452Di terminal, perintah membuka sesi Claude Code interaktif untuk wawancara penulisan. Dalam wawancara, Claude melakukan hal berikut:

453 

4541. Membaca plugin

4552. Menanyakan apa yang harus dilakukan dengan baik

4563. Mengusulkan kasus dan grader

4574. Menulis file kasus

4585. Menjalankan kasus dan meninjau nilai dengan Anda untuk memeriksa bahwa grader mencetak cara Anda

459 

460Dengan `--bare`, atau tanpa terminal, perintah menulis template kasus tunggal kosong. Ketika Claude menjalankan perintah dari dalam sesi Claude Code, perintah mencetak instruksi wawancara untuk sesi itu ikuti daripada menulis template.

461 

462`name` opsional adalah nama kasus. Diperlukan dengan `--bare` atau tanpa terminal, karena perintah menulis template kosong untuk kasus itu. Wawancara tidak memerlukan.

463 

464Perintah menerima opsi ini:

465 

466| Opsi | Deskripsi | Default |

467| :------------------ | :------------------------------------------------------------------------------------------------ | :------------------------------------------ |

468| `--bare` | Tulis `prompt.md` dan `graders/criteria.md` kosong untuk `<name>` alih-alih menjalankan wawancara | |

469| `-i, --interactive` | Perlukan wawancara. Gagal tanpa terminal alih-alih menulis template | |

470| `--eval-dir <dir>` | Direktori di bawah direktori saat ini untuk menulis kasus ke | `experimental.evals` manifest, atau `evals` |

471 

472<h3 id="plugin-tag">

473 plugin tag

474</h3>

475 

476Buat tag git beranotasi bernama `<name>--v<version>` untuk rilis plugin. Sebelum menandai, perintah memeriksa bahwa `plugin.json` plugin dan entri marketplace apa pun yang mencantumkannya setuju pada versi.

477 

478Untuk kapan menandai rilis, lihat [Terbitkan plugin](/docs/id/plugins/publish).

479 

480```bash theme={null}

481claude plugin tag [path] [options]

482```

483 

484`[path]` adalah direktori plugin, default ke direktori saat ini. Perintah menemukan entri marketplace dengan berjalan naik dari direktori itu ke `.claude-plugin/marketplace.json` yang mencantumkan plugin.

485 

486| Flag | Deskripsi |

487| :-------------------- | :--------------------------------------------------------------------------- |

488| `--push` | Dorong tag ke `--remote` setelah membuatnya |

489| `--dry-run` | Cetak apa yang akan ditandai tanpa membuat tag |

490| `-f, --force` | Lewati pohon kerja kotor dan pemeriksaan tag-sudah-ada |

491| `-m, --message <msg>` | Pesan anotasi tag. `%s` singkatan untuk versi. Default ke `<name> <version>` |

492| `--remote <name>` | Remote untuk didorong dengan `--push`. Default ke `origin` |

493 

494Pratinjau tag untuk plugin dalam checkout marketplace:

495 

496```bash theme={null}

497claude plugin tag plugins/formatter --dry-run

498```

499 

500Claude Code mencetak rencana:

501 

502* Nama plugin

503* Versi dan file mana asalnya

504* Entri marketplace yang cocok, ketika ada

505* Nama tag

506* Perintah `git tag` dan `git push` yang akan dijalankan

507 

508Tanpa `--dry-run`, Claude Code mencetak `Created tag formatter--v1.0.0` dan baik `Pushed to origin` atau perintah push untuk dijalankan sendiri. Jika push gagal, tag masih dibuat secara lokal dan perintah keluar dengan kesalahan.

509 

510Perintah keluar `1` dan mencetak alasan ketika tidak dapat menandai dengan aman. Alasan umum adalah:

511 

512* Tidak ada `version` di `plugin.json` atau entri marketplace

513* Tag sudah ada

514* Pohon kerja kotor

515 

516<h3 id="plugin-validate">

517 plugin validate

518</h3>

519 

520Validasi manifest plugin, manifest marketplace, atau skills, agents, dan perintah dalam direktori, dan keluar dengan kode yang dapat ditindaklanjuti pekerjaan CI. Untuk alur kerja buat, uji, dan edit, lihat [Buat plugin](/docs/id/plugins/create). Untuk apa yang diperiksa validator di setiap manifest, lihat [referensi manifest plugin](/docs/id/plugins/manifest-reference) dan [referensi marketplace](/docs/id/plugins/marketplace-reference).

521 

522```bash theme={null}

523claude plugin validate <path> [options]

524```

525 

526| Flag | Deskripsi |

527| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

528| `--strict` | Perlakukan peringatan sebagai kesalahan, jadi field yang tidak dikenali dan metadata yang hilang yang ditoleransi runtime gagal run. Memerlukan Claude Code v2.1.145 atau lebih baru |

529| `--json` | Output laporan validasi sebagai satu objek JSON dengan kode keluar yang sama. Memerlukan Claude Code v2.1.259 atau lebih baru |

530 

531Validasi plugin sebelum melakukan:

532 

533```bash theme={null}

534claude plugin validate ./my-plugin --strict

535```

536 

537<h4 id="validate-a-directory">

538 Validasi direktori

539</h4>

540 

541`<path>` adalah file manifest atau direktori. Diberikan direktori, Claude Code memilih apa yang akan divalidasi oleh apa yang ditemukannya di sana:

542 

543* `.claude-plugin/marketplace.json`, ketika ada

544* Sebaliknya `.claude-plugin/plugin.json`

545* Sebaliknya file komponen, dipilih oleh nama direktori. Memvalidasi file komponen tanpa manifest memerlukan Claude Code v2.1.233 atau lebih baru:

546 * Direktori bernama `skills`, `agents`, atau `commands`: file di dalamnya

547 * Direktori bernama `.claude`: direktori `skills`, `agents`, dan `commands` di dalamnya

548 * Direktori lain: tiga direktori itu di bawah `.claude`-nya

549 

550Claude Code tidak mengikuti symlink di dalam direktori yang Anda beri nama. Apa yang dilakukan tergantung di mana linknya:

551 

552* **Direktori `skills`, `agents`, atau `commands` yang tertaut di bawah root plugin atau `.claude`**: Claude Code memperingatkan bahwa tidak ada yang di dalamnya dibaca.

553* **Entri tertaut di dalam direktori `skills`, `agents`, atau `commands`**: Claude Code melewatinya dan memperingatkan, per direktori, berapa banyak entri yang dilewati yang akan dimuat sesi.

554* **Direktori `skills`, `agents`, atau `commands` yang Anda beri nama adalah symlink sendiri, atau direktori `.claude` induknya**: Claude Code melaporkan kesalahan dan tidak memeriksa apa pun di dalamnya. Beri nama direktori nyata.

555 

556Beberapa file tidak dibaca oleh run validasi:

557 

558* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin

559* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin

560* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin

561 

562<h4 id="output-and-exit-codes">

563 Output dan kode keluar

564</h4>

565 

566Claude Code mencetak file yang divalidasi, kesalahan dan peringatan apa pun dengan jalurnya, dan baris putusan. Kode keluar mengikuti putusan:

567 

568| Kode keluar | Baris putusan | Arti |

569| :---------- | :-------------------------------------------------------------------------------- | :------------------------------------------------------------------ |

570| `0` | `Validation passed` atau `Validation passed with warnings` | Manifest dimuat. Dengan `--strict`, tidak ada peringatan |

571| `1` | `Validation failed` atau `Validation failed (--strict treats warnings as errors)` | Kesalahan, atau peringatan di bawah `--strict` |

572| `2` | `Unexpected error during validation: <reason>` | Validator sendiri gagal, seperti pada jalur yang tidak dapat dibaca |

573 

574Dengan `--json`, Claude Code menulis laporan ke stdout sebagai satu objek JSON dengan field tingkat atas ini:

575 

576* `success`: putusan yang sama yang diberikan kode keluar

577* `strict`: apakah run memperlakukan peringatan sebagai kesalahan

578* `target`: jalur yang diselesaikan Claude Code divalidasi

579* `manifest`: hasil manifest sendiri, atau `null` untuk run tanpa manifest

580* `contents`: hasil per-file, masing-masing menamai `file`-nya dan membawa array `errors`, `warnings`, dan `notes`

581 

582Pada keluar `2`, perintah tidak menulis apa pun ke stdout. Pesan kesalahan pergi ke stderr.

583 

584<h2 id="claude-plugin-marketplace-commands">

585 Perintah claude plugin marketplace

586</h2>

587 

588Jalankan `claude plugin marketplace <subcommand>` dari shell Anda untuk menambah, mencantumkan, menyegarkan, dan menghapus marketplace yang Anda instal plugin.

589 

590* **Kode keluar**: subperintah ini mengikuti [konvensi kode keluar](#claude-plugin-commands) perintah plugin

591* **Cakupan**: flag `--scope` mereka tidak memiliki bentuk pendek `-s`

592 

593Untuk apa marketplace dan bagaimana Claude Code menyimpannya, lihat [Referensi pemuatan plugin](/docs/id/plugins/loading).

594 

595<h3 id="plugin-marketplace-add">

596 plugin marketplace add

597</h3>

598 

599Tambahkan marketplace dari repositori GitHub, URL git, `marketplace.json` yang dihosting, atau jalur lokal, dan deklarasikan dalam file pengaturan.

600 

601Setelah menambahkannya, Claude Code menginstal [dependensi](/docs/id/plugins/dependencies) apa pun yang hilang dari plugin yang diinstal.

602 

603```bash theme={null}

604claude plugin marketplace add <source> [options]

605```

606 

607| Flag | Deskripsi |

608| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

609| `--scope <scope>` | File pengaturan untuk mendeklarasikan marketplace: `user`, `project`, atau `local`. Default ke `user` |

610| `--sparse <paths...>` | Batasi checkout git ke direktori ini, untuk monorepo. Hanya sumber `github` dan `git` |

611| `--claudeai` | Baca argumen sebagai nama [marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai) alih-alih sumber. Memerlukan Claude Code v2.1.273 atau lebih baru |

612 

613`<source>` mengambil salah satu bentuk dalam tabel di bawah, dan bentuknya memutuskan tipe sumber dan cara Claude Code mengambil marketplace. Untuk objek sumber yang dihasilkan, lihat [referensi marketplace](/docs/id/plugins/marketplace-reference).

614 

615| Anda ketik | Tipe sumber | Cara Claude Code mengambilnya |

616| :---------------------------------------------------------------------------------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------- |

617| `owner/repo`, `owner/repo#ref`, atau `owner/repo@ref` | `github` | Mengkloning repositori GitHub, disematkan ke `ref` ketika diberikan. Pemilik dan repo harus mengikuti aturan penamaan GitHub |

618| `user@host:path[.git][#ref]` | `git` | Mengkloning melalui SSH |

619| `https://example.com/repo.git[#ref]`, atau URL yang berisi `/_git/` | `git` | Mengkloning melalui HTTPS, termasuk URL Azure DevOps |

620| `https://github.com/owner/repo` atau `https://gitlab.com/namespace/project` | `git` | Mengkloning melalui HTTPS setelah menambahkan `.git` |

621| URL `http://` atau `https://` lain, termasuk host git yang dihosting sendiri tanpa `.git` | `url` | Mengambil URL sebagai `marketplace.json`. Untuk mengkloning repositori di sana, tambahkan `.git` |

622| `./path`, `../path`, `/path`, atau `~/path` ke direktori | `directory` | Membaca direktori di tempat. Di Windows, bentuk `.\`, `..\`, dan `C:\` juga berfungsi |

623| Bentuk jalur yang sama, ke file `.json` | `file` | Membaca file di tempat |

624 

625Untuk host yang URL klonnya tidak membawa akhiran `.git`, seperti AWS CodeCommit, tambahkan marketplace sebagai entri git dalam [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces). Claude Code mengkloning entri git apakah atau tidak URL-nya berakhir dengan `.git`.

626 

627Claude Code juga mengkloning URL `gitlab.com` dengan subgrup bersarang, seperti `https://gitlab.com/group/subgroup/project`.

628 

629Tambahkan marketplace dan bagikan dengan proyek:

630 

631```bash theme={null}

632claude plugin marketplace add your-org/your-marketplace --scope project

633```

634 

635Claude Code mencetak `Successfully added marketplace: your-marketplace (declared in project settings)`, menggunakan `name` dari manifest marketplace sendiri. Penambahan berulang atau sumber yang tidak valid mencetak salah satu hasil ini:

636 

637* **Marketplace sudah di disk**: output adalah `Marketplace 'your-marketplace' already on disk — declared in project settings` dan kode keluar adalah `0`

638* **Sumber yang tidak dikenali**: output adalah `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` dan kode keluar adalah `1`

639* **Host telanjang seperti `gitlab.example.com/team/plugins`**: penambahan gagal sebagai shorthand `owner/repo` yang tidak valid, dan pesan memberi tahu Anda untuk menambahkan `https://` atau menggunakan jalur lokal

640 

641Tambahkan [marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai) dengan nama yang dicetak dalam bagian `From claude.ai:` dari `claude plugin marketplace list`:

642 

643```bash theme={null}

644claude plugin marketplace add --claudeai claudeai-organization-library

645```

646 

647Dengan `--claudeai`, perintah menolak `--scope` dan `--sparse`. Marketplace dihosting untuk akun Anda, bukan dideklarasikan dalam file pengaturan, jadi Anda tidak dapat membagikannya melalui `.claude/settings.json` proyek.

648 

649<h3 id="plugin-marketplace-list">

650 plugin marketplace list

651</h3>

652 

653Daftar setiap marketplace yang telah Anda tambahkan, dengan sumbernya.

654 

655```bash theme={null}

656claude plugin marketplace list [options]

657```

658 

659| Flag | Deskripsi |

660| :------- | :------------------------ |

661| `--json` | Cetak daftar sebagai JSON |

662 

663Claude Code mencetak `Configured marketplaces:` dan satu baris `Source:` per marketplace, atau `No marketplaces configured`.

664 

665Dengan `--json`, Claude Code mencetak array dengan satu objek per marketplace, membawa field di bawah. Setiap field adalah string.

666 

667| Field | Deskripsi |

668| :---------------- | :---------------------------------------------------------------------------------- |

669| `name` | Nama marketplace |

670| `source` | `github`, `git`, `url`, `directory`, `file`, atau `claudeai` |

671| `repo` | `owner/repo`. Hanya sumber `github` |

672| `url` | URL kloning atau pengambilan. Hanya sumber `git` dan `url` |

673| `path` | Jalur lokal. Hanya sumber `directory` dan `file` |

674| `ref` | Cabang atau tag yang disematkan. Sumber `github` dan `git`, hanya ketika disematkan |

675| `installLocation` | Di mana Claude Code menyimpan marketplace |

676 

677Marketplace [claude.ai](/docs/id/plugins/install#add-from-claude-ai) yang ditambahkan tidak memiliki kloning lokal, jadi entrinya membawa pengidentifikasi claude.ai-nya, `marketplaceId` dan `organizationUuid`, sebagai pengganti `installLocation`. Juga membawa `scope` ketika satu dicatat, dan `status`.

678 

679Jika sesi terminal Anda [menyinkronkan plugin dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins), daftar teks berakhir dengan bagian `From claude.ai:`. Bagian itu menamai marketplace yang claude.ai daftar untuk akun Anda yang belum Anda tambahkan, baik berbasis git maupun dihosting. Memerlukan Claude Code v2.1.273 atau lebih baru.

680 

681Untuk menambahkan marketplace dari bagian itu, lihat [Tambahkan marketplace dari claude.ai](/docs/id/plugins/install#add-from-claude-ai).

682 

683Output `--json` mencakup marketplace yang dikonfigurasi saja dan meninggalkan bagian.

684 

685<h3 id="plugin-marketplace-remove">

686 plugin marketplace remove

687</h3>

688 

689Hapus deklarasi marketplace dari pengaturan Anda. `rm` adalah alias untuk `remove`.

690 

691<Warning>

692 Ketika Anda menghapus marketplace dari cakupan terakhir yang mendeklarasikannya, Claude Code juga menghapus cache dan mencopot setiap plugin yang Anda instal darinya. Tanpa `--scope`, perintah menghapus deklarasi dari setiap cakupan. Untuk menyegarkan marketplace tanpa kehilangan plugin, jalankan `plugin marketplace update`.

693</Warning>

694 

695```bash theme={null}

696claude plugin marketplace remove <name> [options]

697```

698 

699`<name>` adalah nama marketplace yang ditunjukkan `plugin marketplace list`, bukan sumber yang Anda lewatkan ke `add`.

700 

701| Flag | Deskripsi |

702| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |

703| `--scope <scope>` | Hapus deklarasi dari satu cakupan pengaturan: `user`, `project`, atau `local`. Tanpanya, Claude Code menghapus deklarasi dari setiap cakupan |

704 

705Hapus marketplace dari setiap cakupan:

706 

707```bash theme={null}

708claude plugin marketplace remove your-marketplace

709```

710 

711Claude Code mencetak `Successfully removed marketplace: your-marketplace`, menambahkan `(from project settings)` ketika Anda membatasi cakupannya. Jika Anda membatasi ke file pengaturan yang tidak mendeklarasikan marketplace, perintah gagal dengan `Marketplace 'your-marketplace' is not declared in project settings. Omit --scope to remove it from all scopes.`

712 

713<h3 id="plugin-marketplace-update">

714 plugin marketplace update

715</h3>

716 

717Segarkan satu marketplace, atau setiap marketplace, dari sumbernya untuk mengambil plugin dan versi baru. Marketplace yang ditambahkan dengan cabang atau tag `ref` diperbarui ke commit terbaru dari ref itu, bukan cabang default repositori.

718 

719```bash theme={null}

720claude plugin marketplace update [name]

721```

722 

723Perintah tidak mengambil flag di luar `--help`.

724 

725Segarkan satu marketplace:

726 

727```bash theme={null}

728claude plugin marketplace update your-marketplace

729```

730 

731Claude Code mencetak `Successfully updated marketplace: your-marketplace`. Ketika Anda menghilangkan nama, mencetak hitungan seperti `Successfully updated 2 marketplaces`. Tanpa marketplace yang ditambahkan, mencetak `No marketplaces configured` dan keluar `0`.

732 

733<h2 id="plugin-in-a-session">

734 /plugin dalam sesi

735</h2>

736 

737Di dalam sesi interaktif, `/plugin` membuka panel plugin. Setiap subperintah membuka panel di tab, menjalankan tindakan di sana, atau mencetak hasil inline. `/plugins` dan `/marketplace` adalah alias untuk `/plugin`.

738 

739Anda hanya dapat menjalankan perintah ini dalam sesi terminal interaktif. Dalam run non-interaktif seperti `claude -p`, Claude Code menjawab bahwa `/plugin` tidak tersedia di lingkungan ini.

740 

741Untuk permukaan mana yang memiliki `/plugin`, cara menginstal tanpanya, dan apa yang ditunjukkan setiap tab panel, lihat [Instal dan kelola plugin](/docs/id/plugins/install).

742 

743`<plugin>` adalah plugin `name` atau `name@marketplace`.

744 

745Tabel di bawah mencantumkan setiap bentuk sesi. Subperintah shell `init`, `update`, `details`, `prune`, `eval`, dan `eval init` tidak memiliki bentuk sesi.

746 

747| Perintah | Alias | Apa yang dilakukan |

748| :-------------------------------------------------- | :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

749| `/plugin` | | Membuka panel di tab **Discover**. Kata pertama yang tidak dikenali setelah `/plugin` melakukan hal yang sama |

750| `/plugin help` | `/plugin --help`, `/plugin -h` | Menampilkan daftar penggunaan subperintah `/plugin` |

751| `/plugin list [--enabled\|--disabled]` | `ls` | Mencetak plugin yang diinstal marketplace Anda inline, dengan versi, cakupan, dan status. Flag filter menampilkan hanya status itu. Plugin yang status aktifnya belum diterapkan ditandai `— run /reload-plugins to apply`. Memerlukan Claude Code v2.1.163 atau lebih baru |

752| `/plugin install` | `i` | Membuka tab **Discover** |

753| `/plugin install <plugin>` | `i` | Membuka detail plugin di tab **Discover**. Dengan `name@marketplace`, membukanya dalam daftar marketplace itu |

754| `/plugin install <plugin> --marketplace <source>` | `i` | Menambahkan marketplace di `<source>` ketika Anda belum menambahkannya, meminta Anda mengonfirmasi terlebih dahulu, kemudian membuka detail plugin. Lihat [Tambahkan marketplace dan instal dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command). Memerlukan Claude Code v2.1.275 atau lebih baru |

755| `/plugin manage` | | Membuka tab **Installed** |

756| `/plugin stats` | | Membuka tab **Stats**, dalam sesi di mana [`/skill-doctor`](/docs/id/skills#find-unused-skills) tersedia. Di tempat lain membuka panel di tab **Discover** |

757| `/plugin enable <plugin>` | | Membuka tab **Installed** di plugin dan mengaktifkannya |

758| `/plugin disable <plugin>` | | Membuka tab **Installed** di plugin dan menonaktifkannya |

759| `/plugin uninstall <plugin>` | | Membuka tab **Installed** di plugin dan mencopot |

760| `/plugin configure <plugin>` | `config` | Membuka dialog [`userConfig`](/docs/id/plugins/manifest-reference) plugin, atau melaporkan bahwa plugin tidak mendeklarasikan. Memerlukan Claude Code v2.1.147 atau lebih baru |

761| `/plugin validate <path>` | | Mencetak laporan yang sama seperti `claude plugin validate`, inline |

762| `/plugin tag [path] [--push] [--dry-run] [--force]` | | Membuat tag rilis sebagai `claude plugin tag` lakukan. Menerima `--push`, `--dry-run`, dan `--force` atau `-f`; dengan flag lain atau argumen ekstra, Claude Code mencetak penggunaan |

763| `/plugin marketplace` | `market` | Tidak melakukan apa pun yang terlihat. Lewatkan `add`, `list`, `update`, atau `remove` |

764| `/plugin marketplace add [source]` | `market add` | Dengan sumber, menambahkannya dan melaporkan hasil. Tanpanya, membuka input **Add marketplace** |

765| `/plugin marketplace list` | `market list` | Mencetak nama marketplace Anda inline |

766| `/plugin marketplace update [name]` | `market update` | Membuka tab **Marketplaces**. Dengan nama, menyegarkan marketplace itu di sana |

767| `/plugin marketplace remove [name]` | `market remove`, `market rm`, `marketplace rm` | Membuka tab **Marketplaces**. Dengan nama, menghapus marketplace itu di sana |

768 

769Jika Anda menamai plugin yang tidak diinstal dalam proyek saat ini dalam `/plugin enable`, `disable`, `uninstall`, atau `configure`, Claude Code mencetak `Plugin "<plugin>" is not installed in this project` alih-alih bertindak.

770 

771<h2 id="reload-plugins">

772 /reload-plugins

773</h2>

774 

775Terapkan perubahan plugin yang tertunda ke sesi yang sedang berjalan tanpa memulai ulang. Perubahan yang tertunda adalah plugin yang Anda instal, perbarui, aktifkan, nonaktifkan, atau edit di disk sejak sesi dimulai.

776 

777Ketika Anda menutup panel `/plugin` dengan perubahan yang tertunda yang Anda buat di dalamnya, Claude Code menjalankan `/reload-plugins` untuk Anda. Jalankan sendiri setelah perubahan plugin yang terjadi di luar panel, seperti perintah `claude plugin` yang Anda jalankan di terminal lain.

778 

779```text theme={null}

780/reload-plugins [--force]

781```

782 

783| Flag | Deskripsi |

784| :-------- | :--------------------------------------------------------------------------------------------- |

785| `--force` | Terapkan reload bahkan ketika akan membatalkan cache prompt. `force` tanpa dash juga berfungsi |

786 

787<h3 id="reload-summary">

788 Ringkasan reload

789</h3>

790 

791Claude Code memuat ulang setiap plugin aktif dan mencetak satu baris ringkasan, `Reloaded: N plugins · N skills · N agents · N hooks · N plugin MCP servers · N plugin LSP servers`, menghilangkan hitungan server MCP plugin dalam sesi tanpa terminal interaktif. Ketika plugin apa pun gagal, ringkasan menambahkan `N errors during load. Run /plugin for details.`

792 

793Hitungan skills mencakup setiap skill yang disediakan plugin, baik entri `commands/` maupun skill `SKILL.md`. Hitungan agents adalah jumlah agen yang dimuat dalam sesi, termasuk yang tidak berasal dari plugin.

794 

795Ketika [dependensi](/docs/id/plugins/dependencies) plugin yang dimuat ulang hilang, Claude Code menginstalnya, memuat ulang lagi, dan menambahkan `(+ N dependencies: <names>) resolved` ke ringkasan.

796 

797<h3 id="reloads-that-change-mcp-tools">

798 Reload yang mengubah alat MCP

799</h3>

800 

801Ketika reload akan menambah atau menghapus server MCP plugin atau alat `LSP`, dan perubahan itu akan membatalkan [cache prompt](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), Claude Code tidak menerapkan reload. Mencetak baris seperti `This reload changes MCP tools (<server>) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply.` Lewatkan `--force` untuk menerapkannya.

802 

803<h3 id="sessions-without-an-interactive-terminal">

804 Sesi tanpa terminal interaktif

805</h3>

806 

807`/reload-plugins` juga berjalan dalam sesi tanpa terminal interaktif, seperti aplikasi desktop, Agent SDK, dan [mode non-interaktif](/docs/id/headless) dengan `-p`. Memerlukan Claude Code v2.1.260 atau lebih baru.

808 

809Dalam sesi itu, perintah berjalan hanya ketika Anda mengetiknya ke dalam sesi sendiri, seperti dalam prompt `-p` atau kotak prompt aplikasi desktop. Ketika tiba dengan cara lain, seperti melalui [Remote Control](/docs/id/remote-control) atau pesan yang disalurkan dari Slack, perintah menjawab `/reload-plugins isn't available over a remote connection in this session.` dan memuat ulang tidak ada.

810 

811Reload dalam sesi itu tidak menghubungkan atau memutuskan server MCP plugin. Perubahan itu berlaku dalam sesi berikutnya Anda.

812 

813<h2 id="flags-that-load-a-plugin-for-one-session">

814 Flag yang memuat plugin untuk satu sesi

815</h2>

816 

817Dua flag `claude` memuat plugin untuk satu sesi saja, tanpa menginstalnya. Keduanya dapat diulang.

818 

819Penulis plugin menggunakannya untuk menguji plugin sebelum menerbitkan. Untuk alur kerja muat-edit-muat ulang, lihat [Kembangkan tanpa marketplace](/docs/id/plugins/create#develop-without-a-marketplace).

820 

821| Flag | Deskripsi | Contoh |

822| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------- |

823| `--plugin-dir <path>` | Muat plugin dari direktori atau arsip `.zip` darinya. Folder plugin memuat setiap folder anak yang memegang `.claude-plugin/plugin.json`. Setiap flag mengambil satu jalur | `claude --plugin-dir ./my-plugin --plugin-dir ./other.zip` |

824| `--plugin-url <url>` | Ambil arsip plugin `.zip` dari URL. Ulangi flag, atau lewatkan beberapa URL yang dipisahkan spasi dalam satu nilai yang dikutip | `claude --plugin-url "https://example.com/a.zip https://example.com/b.zip"` |

825 

826Plugin yang dimuat flag apa pun adalah plugin hanya sesi. `claude plugin list` menampilkannya sebagai `<name>@inline` dengan cakupan `session`, tetapi hanya ketika flag yang sama mendahului subperintah. Misalnya, jalankan `claude --plugin-dir ./my-plugin plugin list`.

827 

828Ketika plugin hanya sesi berbagi nama dengan plugin yang diinstal, Claude Code memuat salinan hanya sesi untuk sesi itu dan melewati yang diinstal. Salinan yang diinstal memuat sebagai gantinya jika Anda menonaktifkan salinan hanya sesi dengan `claude plugin disable <name>@inline`, atau jika pengaturan terkelola mengunci nama plugin itu. Untuk prioritas, lihat [Referensi pemuatan plugin](/docs/id/plugins/loading).

829 

830Administrator dapat menolak kedua flag, dan folder yang dinamai dalam variabel [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables), dengan pengaturan terkelola [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags). Claude Code kemudian mencetak bahwa flag dinonaktifkan oleh pengaturan terkelola organisasi Anda dan keluar `1` tanpa memulai.

831 

832Dari Agent SDK, opsi [`plugins`](/docs/id/agent-sdk/plugins) adalah setara dengan `--plugin-dir`.

833 

834<h2 id="next-steps">

835 Langkah berikutnya

836</h2>

837 

838* [Instal dan kelola plugin](/docs/id/plugins/install): operasi yang sama seperti langkah, dengan apa yang Anda lihat di setiap

839* [Referensi pemuatan plugin](/docs/id/plugins/loading): apa yang diubah setiap perintah di disk dan cakupan mana yang berlaku

840* [Troubleshoot plugin](/docs/id/plugins/troubleshooting): pesan kesalahan instal, marketplace, muat, dan validasi dengan perbaikannya

841* [Referensi manifest plugin](/docs/id/plugins/manifest-reference): field yang diperiksa `claude plugin validate`

plugins/code-intelligence.md +156 −0 created

Details

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# Code intelligence plugins

6 

7> Instal plugin language server sehingga Claude melihat kesalahan tipe setelah pengeditan dan menavigasi kode berdasarkan simbol, serta menjawab dialog rekomendasi plugin LSP.

8 

9Plugin code intelligence memberikan Claude diagnostik langsung dan go-to-definition yang dimiliki editor Anda, sehingga Claude menangkap kesalahan tipe dan impor yang hilang yang diperkenalkan oleh pengeditan sendirinya sebelum Anda menjalankan build, dan menemukan definisi dan referensi berdasarkan simbol daripada pencarian teks.

10 

11Setiap plugin menghubungkan Claude Code ke language server untuk satu bahasa melalui Language Server Protocol (LSP). Anda menginstal plugin dari marketplace resmi Anthropic dan binary language server di mesin Anda.

12 

13<Note>

14 Plugin code intelligence bekerja dalam sesi terminal. Dalam [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code tidak memulai plugin language servers, jadi Claude tidak mendapatkan diagnostik atau navigasi kode di sana. Untuk menulis plugin language server Anda sendiri, atau untuk menghubungkan language server yang tidak memiliki plugin, lihat [LSP servers in plugin components](/docs/id/plugins/components#lsp-servers).

15</Note>

16 

17Untuk memulai, temukan bahasa Anda di tabel di bawah [Install a code intelligence plugin](#install-a-code-intelligence-plugin). Plugin dalam tabel itu berasal dari [official plugin marketplace](/docs/id/plugins/anthropic-marketplaces) Anthropic.

18 

19Jika Anda sudah melihat dialog **LSP plugin recommendation**, lihat [Accept or dismiss the recommendation dialog](#accept-or-dismiss-the-recommendation-dialog) untuk mengetahui apa yang dilakukan setiap pilihan.

20 

21<h2 id="install-a-code-intelligence-plugin">

22 Install a code intelligence plugin

23</h2>

24 

25Plugin code intelligence memberi tahu Claude Code perintah mana yang memulai language server dan ekstensi file mana yang ditanganinya. Ini tidak menyertakan language server. Instal binary language server terlebih dahulu, kemudian plugin, kemudian konfirmasi server dimulai.

26 

27<Steps>

28 <Step title="Install the language server binary">

29 Temukan bahasa Anda di tabel di bawah dan instal binary di barisnya. Jika bahasa Anda tidak terdaftar, lihat [Add a language without an official plugin](#add-a-language-without-an-official-plugin).

30 

31 | Language | Plugin | Binary |

32 | :------------------------ | :--------------------------------------------------------------------------------------------------------------- | :------------------------------ |

33 | C/C++ | [`clangd-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/clangd-lsp) | `clangd` |

34 | C# | [`csharp-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/csharp-lsp) | `csharp-ls` |

35 | Go | [`gopls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/gopls-lsp) | `gopls` |

36 | Java | [`jdtls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/jdtls-lsp) | `jdtls` |

37 | Kotlin | [`kotlin-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/kotlin-lsp) | `kotlin-lsp` |

38 | Liquid | [`liquid-lsp`](https://github.com/Shopify/liquid-skills/tree/main/plugins/liquid-lsp) | `shopify`, from the Shopify CLI |

39 | Lua | [`lua-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/lua-lsp) | `lua-language-server` |

40 | PHP | [`php-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/php-lsp) | `intelephense` |

41 | Python | [`pyright-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/pyright-lsp) | `pyright-langserver` |

42 | Ruby | [`ruby-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/ruby-lsp) | `ruby-lsp` |

43 | Rust | [`rust-analyzer-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/rust-analyzer-lsp) | `rust-analyzer` |

44 | Swift | [`swift-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/swift-lsp) | `sourcekit-lsp` |

45 | TypeScript and JavaScript | [`typescript-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/typescript-lsp) | `typescript-language-server` |

46 

47 Anthropic memelihara setiap plugin dalam tabel kecuali `liquid-lsp`, yang dikelola Shopify dan marketplace resmi mencantumkannya.

48 

49 Untuk menemukan perintah yang menginstal binary, ikuti tautan plugin dalam tabel ke README-nya. Untuk TypeScript, perintah itu adalah `npm install -g typescript-language-server typescript`.

50 

51 Setelah Anda menginstal binary, konfirmasi bahwa itu ada di `PATH` shell tempat Anda memulai `claude`, misalnya dengan `which typescript-language-server`, atau `Get-Command typescript-language-server` di PowerShell.

52 </Step>

53 

54 <Step title="Install the plugin">

55 Untuk menginstal plugin yang terdaftar untuk bahasa Anda di tabel langkah 1, jalankan `/plugin install` dalam sesi Claude Code, mengganti `typescript-lsp` dengan nama plugin itu:

56 

57 ```

58 /plugin install typescript-lsp@claude-plugins-official

59 ```

60 

61 Pesan konfirmasi mengatakan apakah plugin aktif sekarang atau memerlukan `/reload-plugins`. Jika instalasi gagal dengan `Marketplace "claude-plugins-official" not found`, lihat [entri troubleshooting untuk kesalahan itu](/docs/id/plugins/troubleshooting#marketplace-claude-plugins-official-not-found). Untuk mengontrol di mana plugin diinstal, atau untuk menjalankan instalasi dari shell Anda daripada di dalam Claude Code, lihat [Install plugins](/docs/id/plugins/install).

62 </Step>

63 

64 <Step title="Confirm the server starts">

65 Language server dimulai pertama kali Claude mengedit file dengan salah satu ekstensi plugin. Untuk melihatnya bekerja, minta Claude untuk memperkenalkan kesalahan tipe dalam file bahasa itu dan kemudian memperbaikinya. Kemudian periksa percakapan untuk baris diagnostik:

66 

67 * **Baris diagnostik muncul**: `Found N new diagnostic issues in M files (ctrl+o to expand)` di bawah edit yang memperkenalkan kesalahan berarti server dimulai.

68 * **Tidak ada baris diagnostik yang muncul**: jalankan `/plugin` dan buka tab **Errors**. Baris yang berbunyi `Executable not found in $PATH: "<binary>"` menamai binary yang akan diinstal. Jika tab tidak memiliki baris seperti itu, lihat [Troubleshoot code intelligence](#troubleshoot-code-intelligence).

69 

70 Setelah Anda menginstal binary yang hilang, Claude Code mencoba lagi lain kali Claude mengedit file yang cocok. Jika Anda menginstal binary ke direktori yang tidak ada di `PATH` shell tempat Anda memulai `claude`, mulai sesi baru dari shell tempat itu berada.

71 </Step>

72</Steps>

73 

74<h2 id="see-what-claude-gains">

75 See what Claude gains

76</h2>

77 

78Dengan language server yang berjalan, Claude mendapatkan diagnostik dan navigasi kode:

79 

80* **Diagnostik setelah pengeditan**: setiap kali Claude mengedit atau menulis file yang ditangani server, Claude mendapatkan kesalahan dan peringatan yang dilaporkan server. Ini melihat kesalahan tipe, impor yang hilang, atau kesalahan sintaks yang diperkenalkannya tanpa menjalankan compiler.

81* **Navigasi kode**: Claude mendapatkan alat `LSP` yang mencari simbol melalui server daripada mencari teks untuk mereka. Alat ini hanya baca. Untuk apa yang dapat dicari Claude dengan alat dan bagaimana izin berlaku untuk itu, lihat [LSP tool behavior](/docs/id/tools-reference#lsp-tool-behavior).

82 

83<h3 id="read-the-diagnostics-yourself">

84 Read the diagnostics yourself

85</h3>

86 

87Setelah Claude mengedit file yang ditangani server, percakapan hanya menampilkan ringkasan `Found N new diagnostic issues`. Untuk membaca masalahnya sendiri, tekan **Ctrl+O**.

88 

89<h2 id="accept-or-dismiss-the-recommendation-dialog">

90 Accept or dismiss the recommendation dialog

91</h2>

92 

93Jika binary language server sudah ada di `PATH` Anda dan plugin yang menggunakannya tidak diinstal, Claude Code menawarkan untuk menginstal plugin untuk Anda dalam dialog berjudul **LSP plugin recommendation**.

94 

95<h3 id="when-the-recommendation-dialog-appears">

96 When the recommendation dialog appears

97</h3>

98 

99Dialog **LSP plugin recommendation** dapat muncul setelah Claude mengedit file. Kondisi ini menentukan apakah itu muncul dan plugin mana yang ditawarkan:

100 

101* **Plugin cocok dengan file**: salah satu marketplace yang telah Anda tambahkan, atau marketplace resmi yang didaftarkan Claude Code untuk Anda, mencantumkan plugin code intelligence untuk ekstensi file itu, dan binary plugin diinstal.

102* **Resmi terlebih dahulu**: ketika lebih dari satu marketplace menawarkan plugin untuk ekstensi, dialog menawarkan plugin marketplace resmi.

103* **Sekali per sesi**: dialog muncul paling banyak sekali dalam sesi, untuk file pertama yang cocok Claude edit.

104* **Bukan untuk sesi cloud**: dialog tidak pernah muncul ketika terminal Anda terpasang ke sesi cloud, seperti yang Anda mulai dengan [`claude --cloud`](/docs/id/claude-code-on-the-web#from-terminal-to-cloud).

105 

106<h3 id="respond-to-the-recommendation-dialog">

107 Respond to the recommendation dialog

108</h3>

109 

110Dialog **LSP plugin recommendation** menamai plugin dan menawarkan pilihan ini:

111 

112* **Yes, install**: Claude Code menginstal plugin untuk akun pengguna Anda dan mencetak `<plugin> installed · restart to apply`. Mulai sesi baru untuk memuat server.

113* **No, not now**: dialog ditutup, dan sesi yang lebih baru dapat menawarkan plugin lagi. Menekan **Esc** melakukan hal yang sama.

114* **Never for this plugin**: dialog berhenti muncul untuk plugin itu dan masih muncul untuk yang lain.

115* **Disable all LSP recommendations**: dialog berhenti muncul untuk setiap bahasa.

116 

117Jika Anda tidak memilih opsi, Claude Code menutupnya setelah 30 detik dan menghitung itu sebagai diabaikan. Hitungan disimpan di seluruh sesi. Setelah lima dialog yang diabaikan, Claude Code berhenti merekomendasikan plugin, sama seperti jika Anda telah memilih **Disable all LSP recommendations**.

118 

119<h3 id="turn-recommendations-back-on">

120 Turn recommendations back on

121</h3>

122 

123Dialog **LSP plugin recommendation** berhenti muncul setelah Anda memilih **Disable all LSP recommendations** atau mengabaikannya lima kali.

124 

125* **Dinonaktifkan atau diabaikan lima kali**: untuk mengaktifkannya kembali dalam kedua kasus, hapus kunci `lspRecommendationDisabled` dan `lspRecommendationIgnoredCount` dari `~/.claude.json`, file konfigurasi Claude Code sendiri.

126* **Tidak pernah untuk plugin ini**: jika Anda memilih **Never for this plugin** dan menginginkan plugin itu ditawarkan lagi, hapus id `name@marketplace` dari daftar `lspRecommendationNeverPlugins` di file yang sama.

127 

128<h2 id="troubleshoot-code-intelligence">

129 Troubleshoot code intelligence

130</h2>

131 

132Halaman troubleshooting plugins mencakup gejala spesifik untuk plugin code intelligence di bawah [Language server doesn't start, uses too much memory, or reports wrong diagnostics](/docs/id/plugins/troubleshooting#language-server-doesnt-start):

133 

134* **Language server tidak dimulai**: Anda melihat `Executable not found in $PATH` di tab **Errors** dari `/plugin`, atau Claude tidak pernah melaporkan diagnostik untuk bahasa.

135* **Penggunaan memori tinggi**: penggunaan memori meningkat saat server mengindeks proyek.

136* **Diagnostik positif palsu dalam monorepo**: diagnostik melaporkan impor sebagai tidak terselesaikan padahal sebenarnya terselesaikan.

137 

138<h2 id="add-a-language-without-an-official-plugin">

139 Add a language without an official plugin

140</h2>

141 

142Jika bahasa Anda tidak ada di [tabel plugin resmi](#install-a-code-intelligence-plugin), Anda masih dapat menghubungkan language server.

143 

1441. Tulis plugin dengan file `.lsp.json` yang menamai perintah server dan ekstensi file yang ditanganinya.

1452. Kemudian muat plugin dengan [`--plugin-dir`](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) atau publikasikan ke marketplace.

146 

147Untuk bidang file dan contoh yang dikerjakan, lihat [LSP servers in plugin components](/docs/id/plugins/components#lsp-servers).

148 

149<h2 id="next-steps">

150 Next steps

151</h2>

152 

153* [LSP servers in plugin components](/docs/id/plugins/components#lsp-servers): tulis `.lsp.json` untuk language server yang tidak memiliki plugin resmi

154* [Install and manage plugins](/docs/id/plugins/install): scopes, updates, dan uninstalling

155* [Troubleshoot plugins](/docs/id/plugins/troubleshooting): load errors di luar yang berbasis language-server di halaman ini

156* [Find plugins in the official marketplace](/docs/id/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace): di mana untuk menjelajahi sisa marketplace resmi

plugins/components.md +1130 −0 created

Details

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# Tambahkan komponen ke plugin

6 

7> Tambahkan skills, hooks, server MCP, dan setiap jenis komponen lainnya ke plugin Claude Code, dengan contoh yang memvalidasi untuk masing-masing.

8 

9export const Piece = ({id, children}) => <div className="pe-piece" data-piece={id}>{children}</div>;

10 

11export const PluginExplorer = ({children}) => {

12 const PIECES = [{

13 id: 'manifest',

14 name: 'Manifest',

15 path: '.claude-plugin/plugin.json',

16 required: "Required by Anthropic's directory",

17 lines: [{

18 depth: 0,

19 kind: 'folder',

20 text: '.claude-plugin/'

21 }, {

22 depth: 1,

23 kind: 'file',

24 text: 'plugin.json'

25 }],

26 href: '/en/plugins/manifest-reference#manifest-file',

27 linkText: 'Go to the manifest reference'

28 }, {

29 id: 'skills',

30 name: 'Skills',

31 path: 'skills/review/SKILL.md',

32 lines: [{

33 depth: 0,

34 kind: 'folder',

35 text: 'skills/'

36 }, {

37 depth: 1,

38 kind: 'folder',

39 text: 'review/'

40 }, {

41 depth: 2,

42 kind: 'file',

43 text: 'SKILL.md'

44 }],

45 href: '/en/plugins/components#skills',

46 linkText: 'Go to the Skills section'

47 }, {

48 id: 'commands',

49 name: 'Commands',

50 path: 'commands/about.md',

51 lines: [{

52 depth: 0,

53 kind: 'folder',

54 text: 'commands/'

55 }, {

56 depth: 1,

57 kind: 'file',

58 text: 'about.md'

59 }],

60 href: '/en/plugins/components#commands',

61 linkText: 'Go to the Commands section'

62 }, {

63 id: 'agents',

64 name: 'Agents',

65 path: 'agents/security-reviewer.md',

66 lines: [{

67 depth: 0,

68 kind: 'folder',

69 text: 'agents/'

70 }, {

71 depth: 1,

72 kind: 'file',

73 text: 'security-reviewer.md'

74 }],

75 href: '/en/plugins/components#agents',

76 linkText: 'Go to the Agents section'

77 }, {

78 id: 'hooks',

79 name: 'Hooks',

80 path: 'hooks/hooks.json',

81 lines: [{

82 depth: 0,

83 kind: 'folder',

84 text: 'hooks/'

85 }, {

86 depth: 1,

87 kind: 'file',

88 text: 'hooks.json'

89 }],

90 href: '/en/plugins/components#hooks',

91 linkText: 'Go to the Hooks section'

92 }, {

93 id: 'monitors',

94 name: 'Monitors',

95 path: 'monitors/monitors.json',

96 lines: [{

97 depth: 0,

98 kind: 'folder',

99 text: 'monitors/'

100 }, {

101 depth: 1,

102 kind: 'file',

103 text: 'monitors.json'

104 }],

105 href: '/en/plugins/components#monitors',

106 linkText: 'Go to the Monitors section'

107 }, {

108 id: 'output-styles',

109 name: 'Output styles',

110 path: 'output-styles/terse.md',

111 lines: [{

112 depth: 0,

113 kind: 'folder',

114 text: 'output-styles/'

115 }, {

116 depth: 1,

117 kind: 'file',

118 text: 'terse.md'

119 }],

120 href: '/en/plugins/components#themes-and-output-styles',

121 linkText: 'Go to the Themes and output styles section'

122 }, {

123 id: 'themes',

124 name: 'Themes',

125 path: 'themes/dracula.json',

126 lines: [{

127 depth: 0,

128 kind: 'folder',

129 text: 'themes/'

130 }, {

131 depth: 1,

132 kind: 'file',

133 text: 'dracula.json'

134 }],

135 href: '/en/plugins/components#themes-and-output-styles',

136 linkText: 'Go to the Themes and output styles section'

137 }, {

138 id: 'workflows',

139 name: 'Workflows',

140 path: 'workflows/audit-routes.js',

141 lines: [{

142 depth: 0,

143 kind: 'folder',

144 text: 'workflows/'

145 }, {

146 depth: 1,

147 kind: 'file',

148 text: 'audit-routes.js'

149 }],

150 href: '/en/workflows#distribute-a-workflow-in-a-plugin',

151 linkText: 'Go to Distribute a workflow in a plugin'

152 }, {

153 id: 'bin',

154 name: 'Executables',

155 path: 'bin/hello-plugin',

156 lines: [{

157 depth: 0,

158 kind: 'folder',

159 text: 'bin/'

160 }, {

161 depth: 1,

162 kind: 'file',

163 text: 'hello-plugin'

164 }],

165 href: '/en/plugins/components#executables',

166 linkText: 'Go to the Executables section'

167 }, {

168 id: 'scripts',

169 name: 'Scripts',

170 path: 'scripts/format.sh',

171 lines: [{

172 depth: 0,

173 kind: 'folder',

174 text: 'scripts/'

175 }, {

176 depth: 1,

177 kind: 'file',

178 text: 'format.sh'

179 }],

180 href: '/en/plugins/components#hooks',

181 linkText: 'Go to the Hooks section'

182 }, {

183 id: 'settings',

184 name: 'Default settings',

185 path: 'settings.json',

186 lines: [{

187 depth: 0,

188 kind: 'file',

189 text: 'settings.json'

190 }],

191 href: '/en/plugins/components#default-settings',

192 linkText: 'Go to the Default settings section'

193 }, {

194 id: 'mcp',

195 name: 'MCP servers',

196 path: '.mcp.json',

197 lines: [{

198 depth: 0,

199 kind: 'file',

200 text: '.mcp.json'

201 }],

202 href: '/en/plugins/components#mcp-servers',

203 linkText: 'Go to the MCP servers section'

204 }, {

205 id: 'lsp',

206 name: 'LSP servers',

207 path: '.lsp.json',

208 lines: [{

209 depth: 0,

210 kind: 'file',

211 text: '.lsp.json'

212 }],

213 href: '/en/plugins/components#lsp-servers',

214 linkText: 'Go to the LSP servers section'

215 }];

216 const [selectedId, setSelectedId] = useState('manifest');

217 const [isFullscreen, setIsFullscreen] = useState(false);

218 const rootRef = useRef(null);

219 useEffect(() => {

220 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

221 document.addEventListener('fullscreenchange', onFsChange);

222 return () => document.removeEventListener('fullscreenchange', onFsChange);

223 }, []);

224 const toggleFullscreen = () => {

225 if (!rootRef.current) return;

226 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

227 };

228 const selected = PIECES.find(p => p.id === selectedId) || PIECES[0];

229 const onTreeKeyDown = e => {

230 const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];

231 if (keys.indexOf(e.key) === -1) return;

232 const i = PIECES.findIndex(p => p.id === selectedId);

233 let next = i;

234 if (e.key === 'ArrowDown') next = Math.min(PIECES.length - 1, i + 1);

235 if (e.key === 'ArrowUp') next = Math.max(0, i - 1);

236 if (e.key === 'Home') next = 0;

237 if (e.key === 'End') next = PIECES.length - 1;

238 e.preventDefault();

239 if (next === i) return;

240 const id = PIECES[next].id;

241 setSelectedId(id);

242 const el = document.getElementById('pe-node-' + id);

243 if (el) el.focus();

244 };

245 const FolderIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

246 <path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />

247 </svg>;

248 const FileIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

249 <path d="M4 1.5h5.5L13 5v9.5H4z" />

250 <path d="M9.5 1.5V5H13" />

251 </svg>;

252 return <div ref={rootRef} className={isFullscreen ? 'pe-root pe-fullscreen not-prose' : 'pe-root not-prose'} data-selected={selected.id}>

253 <style>{`

254 .pe-root {

255 --pe-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);

256 --pe-accent: #D97757;

257 --pe-accent-text: #A8502F;

258 --pe-accent-bg: rgba(217,119,87,0.10);

259 --pe-bg: #FFFFFF;

260 --pe-surface: #FAFAF7;

261 --pe-hover: #F0EEE6;

262 --pe-border: #E8E6DC;

263 --pe-text: #141413;

264 --pe-text-2: #3D3D3A;

265 --pe-text-3: #5E5D59;

266 font-family: inherit;

267 background: var(--pe-bg);

268 color: var(--pe-text);

269 border: 1px solid var(--pe-border);

270 border-radius: 12px;

271 margin: 1.5rem 0;

272 overflow: hidden;

273 box-sizing: border-box;

274 }

275 .dark .pe-root {

276 --pe-accent-text: #EBA98F;

277 --pe-accent-bg: rgba(217,119,87,0.18);

278 --pe-bg: #1A1918;

279 --pe-surface: #232221;

280 --pe-hover: #2E2D2B;

281 --pe-border: #3A3936;

282 --pe-text: #F1EFE9;

283 --pe-text-2: #D6D4CA;

284 --pe-text-3: #B8B5AD;

285 }

286 .pe-root *, .pe-root *::before, .pe-root *::after { box-sizing: border-box; }

287 .pe-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 24px 16px; border-bottom: 1px solid var(--pe-border); }

288 .pe-head-text { flex: 1; min-width: 0; }

289 .pe-fs-btn { flex-shrink: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pe-border); border-radius: 6px; background: var(--pe-surface); color: var(--pe-text-2); font-size: 15px; line-height: 1; cursor: pointer; }

290 .pe-fs-btn:hover { background: var(--pe-hover); }

291 .pe-fs-btn:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

292 .pe-fullscreen { border-radius: 0; height: 100vh; display: flex; flex-direction: column; overflow: auto; }

293 .pe-fullscreen .pe-body { flex: 1; }

294 .pe-title { font-size: 19px; font-weight: 600; line-height: 1.3; color: var(--pe-text); margin: 0; }

295 .pe-sub { font-size: 15px; line-height: 1.5; color: var(--pe-text-3); margin: 4px 0 0; }

296 .pe-sub code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

297 .pe-body { display: flex; align-items: stretch; }

298 .pe-tree-pane { width: 270px; flex-shrink: 0; background: var(--pe-surface); border-right: 1px solid var(--pe-border); padding: 16px 0 12px; }

299 .pe-panel { flex: 1; min-width: 0; padding: 16px 24px 24px; }

300 .pe-caption { font-size: 13px; font-weight: 600; color: var(--pe-text-3); margin: 0 0 10px; }

301 .pe-tree-pane .pe-caption { padding: 0 16px; }

302 .pe-rootline { display: flex; align-items: center; gap: 7px; padding: 3px 16px; font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-text-3); }

303 .pe-node {

304 display: block; width: 100%; margin: 0; padding: 3px 16px 3px 30px; text-align: left; cursor: pointer;

305 background: transparent; color: var(--pe-text-2);

306 border: none; border-left: 3px solid transparent;

307 font-family: var(--pe-mono); font-size: 13.5px; line-height: 1.4;

308 }

309 .pe-node:hover { background: var(--pe-hover); }

310 .pe-node:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: -2px; }

311 .pe-node[aria-pressed="true"] { background: var(--pe-accent-bg); border-left-color: var(--pe-accent); color: var(--pe-accent-text); font-weight: 600; }

312 .pe-line { display: flex; align-items: center; gap: 7px; padding: 2px 0; }

313 .pe-line-tree { flex-wrap: wrap; }

314 .pe-line-tree .pe-req { flex-basis: 100%; margin: 2px 0 0 22px; white-space: normal; width: fit-content; max-width: calc(100% - 22px); }

315 .pe-line span { overflow-wrap: anywhere; }

316 .pe-piece { display: none; font-size: 16px; line-height: 1.6; color: var(--pe-text-2); }

317 .pe-root[data-selected="manifest"] .pe-piece[data-piece="manifest"],

318 .pe-root[data-selected="skills"] .pe-piece[data-piece="skills"],

319 .pe-root[data-selected="commands"] .pe-piece[data-piece="commands"],

320 .pe-root[data-selected="agents"] .pe-piece[data-piece="agents"],

321 .pe-root[data-selected="hooks"] .pe-piece[data-piece="hooks"],

322 .pe-root[data-selected="monitors"] .pe-piece[data-piece="monitors"],

323 .pe-root[data-selected="output-styles"] .pe-piece[data-piece="output-styles"],

324 .pe-root[data-selected="themes"] .pe-piece[data-piece="themes"],

325 .pe-root[data-selected="workflows"] .pe-piece[data-piece="workflows"],

326 .pe-root[data-selected="bin"] .pe-piece[data-piece="bin"],

327 .pe-root[data-selected="scripts"] .pe-piece[data-piece="scripts"],

328 .pe-root[data-selected="settings"] .pe-piece[data-piece="settings"],

329 .pe-root[data-selected="mcp"] .pe-piece[data-piece="mcp"],

330 .pe-root[data-selected="lsp"] .pe-piece[data-piece="lsp"] { display: block; }

331 .pe-piece p { margin: 0 0 10px; }

332 .pe-piece p:last-child { margin-bottom: 0; }

333 .pe-piece code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

334 .pe-piece .code-block { margin: 12px 0 0; }

335 .pe-piece pre code { padding: 0; border: none; background: none; }

336 .pe-piece a { color: var(--pe-accent-text); }

337 .pe-line-compact { display: none; }

338 .pe-icon { flex-shrink: 0; }

339 .pe-req { margin-left: 8px; padding: 0 6px; border-radius: 999px; font-size: 11px; line-height: 18px; letter-spacing: .02em; color: var(--pe-accent-text); border: 1px solid var(--pe-border); background: var(--pe-surface); white-space: nowrap; font-weight: 500; vertical-align: middle; }

340 .pe-name { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -0.2px; color: var(--pe-text); margin: 0; }

341 .pe-path { font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-accent-text); margin: 4px 0 0; overflow-wrap: anywhere; }

342 .pe-block { margin: 20px 0 0; }

343 .pe-link {

344 display: inline-block; margin: 24px 0 0; padding: 8px 14px; border-radius: 8px;

345 font-size: 14.5px; font-weight: 600; text-decoration: none;

346 color: var(--pe-accent-text); background: var(--pe-accent-bg); border: 1px solid var(--pe-accent);

347 }

348 .pe-link:hover { filter: brightness(0.97); }

349 .pe-link:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

350 @media (max-width: 700px) {

351 .pe-head { padding: 16px 16px 14px; }

352 .pe-body { flex-direction: column; }

353 .pe-tree-pane { width: 100%; border-right: none; border-bottom: 1px solid var(--pe-border); }

354 .pe-line-tree { display: none; }

355 .pe-line-compact { display: flex; }

356 .pe-panel { padding: 16px 16px 20px; }

357 }

358 `}</style>

359 

360 <div className="pe-head">

361 <div className="pe-head-text">

362 <div className="pe-title">What goes in a plugin</div>

363 <div className="pe-sub">This example plugin, <code>my-plugin</code>, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.</div>

364 </div>

365 <button type="button" className="pe-fs-btn" onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}>

366 {isFullscreen ? '⤡' : '⛶'}

367 </button>

368 </div>

369 

370 <div className="pe-body">

371 <div className="pe-tree-pane">

372 <div className="pe-caption" id="pe-tree-caption">Plugin directory</div>

373 <div role="group" aria-labelledby="pe-tree-caption" onKeyDown={onTreeKeyDown}>

374 <div className="pe-rootline"><FolderIcon /><span>my-plugin/</span></div>

375 {PIECES.map(p => <button key={p.id} id={'pe-node-' + p.id} type="button" className="pe-node" aria-pressed={p.id === selected.id} aria-label={p.name + ', ' + p.path} onClick={() => setSelectedId(p.id)}>

376 {p.lines.map((line, i) => <span key={i} className="pe-line pe-line-tree" style={{

377 paddingLeft: line.depth * 18 + 'px'

378 }}>

379 {line.kind === 'folder' ? <FolderIcon /> : <FileIcon />}

380 <span>{line.text}</span>

381 {p.required && i === p.lines.length - 1 ? <span className="pe-req">{p.required}</span> : null}

382 </span>)}

383 <span className="pe-line pe-line-compact">

384 <FileIcon />

385 <span>{p.path}</span>

386 {p.required ? <span className="pe-req">{p.required}</span> : null}

387 </span>

388 </button>)}

389 </div>

390 </div>

391 

392 <div className="pe-panel" role="region" aria-labelledby="pe-panel-caption" aria-live="polite" aria-atomic="true">

393 <div className="pe-caption" id="pe-panel-caption">Selected piece</div>

394 <div className="pe-name">{selected.name}{selected.required ? <span className="pe-req">{selected.required}</span> : null}</div>

395 <div className="pe-path">{selected.path}</div>

396 

397 <div className="pe-block">{children}</div>

398 

399 <a className="pe-link" href={selected.href}>{selected.linkText}</a>

400 </div>

401 </div>

402 </div>;

403};

404 

405Plugin Claude Code dibangun dari komponen, seperti skills, agents, hooks, dan server MCP. Setiap komponen memiliki folder default di plugin, kunci manifest opsional di `.claude-plugin/plugin.json` yang menggantikan atau menambah folder tersebut, dan nama yang dilihat pengguna. Untuk tabel bidang lengkap setiap kunci, lihat [referensi manifest](/docs/id/plugins/manifest-reference#fields).

406 

407Gunakan halaman ini untuk menambahkan komponen ke plugin yang sudah dimuat.

408 

409Setelah Anda menambahkan komponen, jalankan `/reload-plugins` dalam sesi yang sedang berjalan atau mulai sesi baru sehingga Claude Code memuatnya. Untuk memeriksa file komponen sebelum memuatnya, jalankan [`claude plugin validate .`](/docs/id/plugins/cli-reference#plugin-validate) di shell Anda dari direktori plugin.

410 

411<Note>

412 Kasus-kasus ini tercakup di halaman lain:

413 

414 * **Membangun plugin pertama Anda**: mulai dengan [Buat plugin](/docs/id/plugins/create)

415 * **Memasang plugin orang lain**: lihat [Pasang plugins](/docs/id/plugins/install)

416 * **Pengguna plugin Anda berada di claude.ai atau di Cowork**: serangkaian komponen yang berbeda dimuat di sana. Lihat [Plugins di claude.ai dan di Cowork](https://claude.com/docs/plugins/overview)

417</Note>

418 

419<h2 id="explore-the-plugin-directory">

420 Jelajahi direktori plugin

421</h2>

422 

423Explorer menunjukkan plugin contoh, `my-plugin`, yang memiliki satu dari setiap jenis komponen di lokasi defaultnya:

424 

425* Skill review dan perintah `about`

426* Subagent security-review

427* Hook yang memformat file setelah Claude mengeditnya, dan folder `scripts/` yang dipanggilnya

428* Monitor log

429* Gaya output dan tema warna

430* Workflow route-audit

431* Executable `hello-plugin`

432* Pengaturan default

433* Server MCP lokal dan language server Go

434 

435Setiap file adalah contoh valid terkecil dari formatnya, ada untuk menunjukkan bentuknya daripada untuk berguna: skill atau agent nyata membawa instruksi lengkap dan sering kali file pendukung, dan hook atau monitor nyata melakukan pekerjaan nyata. Bagian setelah explorer menggunakan file yang sama sebagai contoh mereka dan menautkan ke yang lebih lengkap. Pilih file atau folder untuk membaca tujuannya, lihat apa yang ada di dalamnya, dan temukan bagian yang mencakupnya.

436 

437<PluginExplorer>

438 <Piece id="manifest">

439 [Manifest](/docs/id/plugins/manifest-reference) adalah file `plugin.json` di direktori `.claude-plugin/` plugin. Ini berisi metadata plugin dan nilai `userConfig` yang diminta Claude Code kepada pengguna. Hanya `name` yang diperlukan. Di sini, `description` adalah teks yang dilihat pengguna untuk plugin di `/plugin`, dan `version` membuat pengguna tetap pada versi itu sampai Anda mengubahnya:

440 

441 ```json theme={null}

442 {

443 "name": "my-plugin",

444 "version": "1.0.0",

445 "description": "Review, formatting, and database tools for this team"

446 }

447 ```

448 </Piece>

449 

450 <Piece id="skills">

451 [Skill](/docs/id/skills) adalah file `SKILL.md`. Simpan setiap skill di direktorinya sendiri di bawah `skills/`. Claude membaca `description` setiap skill, dan ketika apa yang diminta pengguna cocok dengannya, seperti meminta Claude untuk meninjau pull request di sini, Claude memuat instruksi skill dan mengikutinya. Pengguna juga dapat menjalankannya secara langsung sebagai `/my-plugin:review`:

452 

453 ```markdown theme={null}

454 ---

455 description: Reviews a pull request for style and test coverage. Use when asked to review code.

456 ---

457 

458 Review the changed files. Report style problems first, then missing tests.

459 ```

460 </Piece>

461 

462 <Piece id="commands">

463 Perintah adalah file Markdown tunggal yang dijalankan pengguna berdasarkan nama. Perintah adalah format yang lebih lama: skill berjalan berdasarkan nama dengan cara yang sama dan juga dapat membawa file pendukung di direktorinya sendiri, jadi tulis yang baru sebagai skills dan simpan `commands/` untuk file yang sudah Anda miliki. File ini menjadi `/my-plugin:about` dan mengambil frontmatter yang sama dengan skill:

464 

465 ```markdown theme={null}

466 ---

467 description: Summarize the repository

468 ---

469 

470 Summarize what this repository does in three sentences.

471 ```

472 </Piece>

473 

474 <Piece id="agents">

475 [Subagent](/docs/id/sub-agents) adalah asisten terpisah, dengan instruksinya sendiri dan jendela konteksnya sendiri, yang dapat didelegasikan Claude untuk menyelesaikan tugas dan mendapatkan hasil kembali. Setiap file Markdown di bawah `agents/` mendefinisikan satu: frontmatter menamainya dan mengatakan kapan menggunakannya, dan body adalah system prompt-nya. Yang ini dinamai `my-plugin:security-reviewer`, dan pengguna dapat memanggilnya dengan `@agent-my-plugin:security-reviewer`:

476 

477 ```markdown theme={null}

478 ---

479 name: security-reviewer

480 description: Reviews code changes for security issues. Use after edits to authentication or input handling.

481 model: sonnet

482 ---

483 

484 You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

485 ```

486 </Piece>

487 

488 <Piece id="hooks">

489 [Hook](/docs/id/hooks-guide) menjalankan sesuatu secara otomatis pada titik dalam siklus hidup Claude Code, seperti setelah setiap pengeditan file: perintah shell, permintaan HTTP, panggilan tool MCP, prompt ke model, atau subagent. Simpan hooks plugin di `hooks/hooks.json` di root plugin. Yang ini menjalankan `scripts/format.sh` plugin setelah Claude menulis atau mengedit file:

490 

491 ```json theme={null}

492 {

493 "hooks": {

494 "PostToolUse": [

495 {

496 "matcher": "Write|Edit",

497 "hooks": [

498 {

499 "type": "command",

500 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

501 }

502 ]

503 }

504 ]

505 }

506 }

507 ```

508 </Piece>

509 

510 <Piece id="monitors">

511 Monitor adalah perintah shell yang dimulai Claude Code di latar belakang ketika sesi dimulai dan terus berjalan sampai berakhir, menggunakan [Monitor tool](/docs/id/tools-reference#monitor-tool). Apa yang dicetak mencapai Claude sebagai notifikasi. Field `when` dapat malah memulainya pertama kali skill bernama berjalan. Yang ini mengekor log kesalahan:

512 

513 ```json theme={null}

514 [

515 {

516 "name": "error-log",

517 "command": "tail -F ./logs/error.log",

518 "description": "Application error log"

519 }

520 ]

521 ```

522 </Piece>

523 

524 <Piece id="output-styles">

525 Plugin dapat menyertakan [output styles](/docs/id/output-styles), yang mengubah cara Claude memformat dan merumuskan balasannya. Simpan setiap output style sebagai `output-styles/<name>.md`. Yang ini muncul di `/output-style` sebagai `my-plugin:terse`:

526 

527 ```markdown theme={null}

528 ---

529 name: terse

530 description: Answer in as few words as possible

531 keep-coding-instructions: true

532 ---

533 

534 Keep every reply short. Skip preambles and summaries.

535 ```

536 </Piece>

537 

538 <Piece id="themes">

539 Plugin dapat menyertakan [color themes](/docs/id/terminal-config#create-a-custom-theme) untuk antarmuka Claude Code. Simpan setiap tema sebagai `themes/<slug>.json`. Yang ini muncul di `/theme` sebagai `Dracula`, ditandai sebagai dari `my-plugin`:

540 

541 ```json theme={null}

542 {

543 "name": "Dracula",

544 "base": "dark",

545 "overrides": {

546 "claude": "#bd93f9",

547 "error": "#ff5555"

548 }

549 }

550 ```

551 </Piece>

552 

553 <Piece id="workflows">

554 Folder `workflows/` menyimpan file `.js` [workflow](/docs/id/workflows): blok `meta`, kemudian body script yang mengorkestra beberapa subagent. Yang ini berjalan sebagai `/my-plugin:audit-routes`:

555 

556 ```javascript theme={null}

557 export const meta = {

558 name: 'audit-routes',

559 description: 'Audit every route handler for missing auth checks',

560 }

561 

562 const found = await agent('List every .ts file under src/routes/.', {

563 schema: { type: 'object', required: ['files'], properties: { files: { type: 'array', items: { type: 'string' } } } },

564 })

565 

566 const audits = await pipeline(found.files, file =>

567 agent(`Audit ${file} for missing authentication checks.`, { label: file }),

568 )

569 

570 return audits.filter(Boolean)

571 ```

572 </Piece>

573 

574 <Piece id="bin">

575 `bin/` adalah cara plugin mengirimkan alat command-line. Sementara plugin diaktifkan, Claude Code menempatkan folder ini di `PATH` shell tempat ia menjalankan perintah, sehingga Claude, atau instruksi skill, dapat menjalankan alat berdasarkan nama tanpa pengguna memasangnya. Dengan [executable](#executables) ini di tempat, `hello-plugin` adalah perintah yang dapat dijalankan Claude:

576 

577 ```bash theme={null}

578 #!/bin/bash

579 echo "hello from my-plugin"

580 ```

581 </Piece>

582 

583 <Piece id="scripts">

584 Hook di `hooks/hooks.json` menjalankan script, dan folder ini adalah tempat contoh menyimpannya. Nama `scripts/` adalah konvensi, bukan sesuatu yang dicari Claude Code: hook menunjuk ke file berdasarkan jalurnya, `${CLAUDE_PLUGIN_ROOT}/scripts/format.sh`. Script formatter mungkin terlihat seperti ini:

585 

586 ```bash theme={null}

587 #!/bin/bash

588 npx prettier --write .

589 ```

590 </Piece>

591 

592 <Piece id="settings">

593 `settings.json` di root plugin menyimpan [settings](/docs/id/settings-reference) yang berlaku sementara plugin diaktifkan, sehingga plugin dapat mengubah cara sesi berperilaku dan tidak hanya menambahkan komponen. Hanya dua kunci yang berlaku dari plugin, [`agent`](/docs/id/settings-reference#agent) dan [`subagentStatusLine`](/docs/id/settings-reference#subagentstatusline); setiap kunci lain dijatuhkan. Lihat [Default settings](#default-settings).

594 

595 Yang ini menetapkan `agent`, yang menjalankan thread utama sesi sebagai agent `security-reviewer` plugin sendiri, sehingga system prompt, pembatasan tool, dan model agent itu berlaku untuk seluruh sesi:

596 

597 ```json theme={null}

598 {

599 "agent": "security-reviewer"

600 }

601 ```

602 </Piece>

603 

604 <Piece id="mcp">

605 [Server MCP](/docs/id/mcp) memberikan Claude tools dari sistem eksternal. Deklarasikan di `.mcp.json` di root plugin. Yang ini memulai server lokal dari script di dalam plugin, dan muncul di `/mcp` sebagai `plugin:my-plugin:db`:

606 

607 ```json theme={null}

608 {

609 "mcpServers": {

610 "db": {

611 "command": "node",

612 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

613 }

614 }

615 }

616 ```

617 </Piece>

618 

619 <Piece id="lsp">

620 Server LSP memberikan Claude [diagnostics dan code navigation](/docs/id/plugins/code-intelligence) untuk bahasa. Deklarasikan server di `.lsp.json` di root plugin. Yang ini menghubungkan language server Go untuk file `.go`:

621 

622 ```json theme={null}

623 {

624 "gopls": {

625 "command": "gopls",

626 "args": ["serve"],

627 "extensionToLanguage": {

628 ".go": "go"

629 }

630 }

631 }

632 ```

633 </Piece>

634</PluginExplorer>

635 

636<h2 id="add-each-kind-of-component">

637 Tambahkan setiap jenis komponen

638</h2>

639 

640Setiap bagian di bawah mencakup satu jenis komponen: di mana file-filenya berada di plugin, contoh yang memvalidasi, apa yang dilihat pengguna setelah plugin dimuat, dan kunci manifest yang mengubah lokasi default. Tambahkan yang dibutuhkan plugin Anda; tidak ada yang diperlukan.

641 

642<h3 id="skills">

643 Skills

644</h3>

645 

646[Skill](/docs/id/skills) adalah file `SKILL.md` yang dapat dimuat Claude ketika deskripsinya cocok dengan tugas. Pengguna juga dapat menjalankannya sebagai perintah. Simpan setiap skill di direktorinya sendiri di bawah `skills/`:

647 

648```text theme={null}

649my-plugin/

650├── .claude-plugin/

651│ └── plugin.json

652└── skills/

653 └── review/

654 └── SKILL.md

655```

656 

657Berikan `SKILL.md` `description` sehingga Claude tahu kapan menggunakannya:

658 

659```markdown skills/review/SKILL.md theme={null}

660---

661description: Reviews a pull request for style and test coverage. Use when asked to review code.

662---

663 

664Review the changed files. Report style problems first, then missing tests.

665```

666 

667Setelah Anda memuat plugin, `/my-plugin:review` menjalankan skill. Nama perintah dan siapa yang dapat memanggilnya mengikuti aturan ini:

668 

669* **Nama perintah**: `/<plugin>:<directory>`, jadi `skills/review/SKILL.md` di `my-plugin` adalah `/my-plugin:review`. Jika Anda menetapkan `name` di frontmatter, itu menggantikan segmen terakhir dan awalan plugin tetap. Lihat [bagaimana skill mendapatkan nama perintahnya](/docs/id/skills#how-a-skill-gets-its-command-name)

670* **Siapa yang memanggilnya**: Claude, pengguna, atau keduanya, dikendalikan oleh frontmatter. Lihat [Kontrol siapa yang memanggilnya skill](/docs/id/skills#control-who-invokes-a-skill)

671 

672Anda juga dapat menempatkan skills di luar direktori default `skills/`:

673 

674* **Direktori tambahan**: daftarkan di kunci manifest `skills`. Mereka menambah pemindaian default `skills/` daripada menggantinya, tidak seperti `commands` dan `agents`

675* **Skill tunggal di root plugin**: tanpa direktori `skills/` dan tanpa kunci manifest `skills`, `SKILL.md` di root plugin dimuat sebagai satu skill. Tetapkan `name` di frontmatter-nya, karena jika tidak, instalasi marketplace menamakan skill setelah [cache directory](/docs/id/plugins/loading#find-plugins-on-disk)-nya daripada plugin Anda

676 

677Untuk menyertakan instruksi dalam plugin, tulislah sebagai skill. Claude Code tidak memuat `CLAUDE.md` di root plugin, dan `claude plugin validate` memperingatkan `CLAUDE.md at the plugin root is not loaded as project context`.

678 

679Untuk field frontmatter dan file pendukung, lihat [Skills](/docs/id/skills).

680 

681<h3 id="commands">

682 Commands

683</h3>

684 

685Perintah adalah file Markdown tunggal yang dijalankan pengguna berdasarkan nama, seperti `/my-plugin:about`.

686 

687<Note>

688 Perintah adalah format yang lebih lama, dan [skills](#skills) menggantikannya untuk pekerjaan baru. Skill berjalan berdasarkan nama dengan cara yang sama, dan itu juga dapat membawa file pendukung di direktorinya. Simpan `commands/` untuk file yang Anda pindahkan dari `.claude/commands/`.

689</Note>

690 

691Simpan perintah di `commands/<file>.md` dan itu menjadi `/<plugin>:<file>`. Subdirektori menambah segmen, jadi `commands/db/migrate.md` adalah `/my-plugin:db:migrate`.

692 

693File perintah mengambil frontmatter yang sama dengan skills.

694 

695<h4 id="define-commands-in-the-manifest">

696 Tentukan perintah di manifest

697</h4>

698 

699Anda hanya membutuhkan ini jika Anda ingin menyimpan file perintah di tempat lain selain `commands/`, atau untuk mendefinisikan perintah pendek di dalam `plugin.json` tanpa file Markdown terpisah. Tetapkan kunci manifest `commands`, dan Claude Code membacanya daripada memindai `commands/`. Kunci mengambil jalur, array jalur, atau objek yang memetakan setiap nama perintah ke file `source` atau `content` inline.

700 

701Manifest ini mendefinisikan `/my-plugin:about` inline, tanpa file Markdown:

702 

703```json .claude-plugin/plugin.json theme={null}

704{

705 "name": "my-plugin",

706 "commands": {

707 "about": {

708 "content": "Summarize what this repository does in three sentences.",

709 "description": "Summarize the repository"

710 }

711 }

712}

713```

714 

715Muat plugin dan jalankan `/my-plugin:about` dalam sesi untuk mengonfirmasi itu dimuat.

716 

717Untuk sintaks kunci lengkap, lihat [`commands`](/docs/id/plugins/manifest-reference#commands).

718 

719<h3 id="agents">

720 Agents

721</h3>

722 

723[Subagent](/docs/id/sub-agents) adalah asisten terpisah, dengan instruksinya sendiri dan jendela konteks, yang dapat didelegasikan Claude untuk menyelesaikan tugas. Setiap file Markdown di bawah `agents/` mendefinisikan satu:

724 

725```markdown agents/security-reviewer.md theme={null}

726---

727name: security-reviewer

728description: Reviews code changes for security issues. Use after edits to authentication or input handling.

729model: sonnet

730---

731 

732You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

733```

734 

735Agent ini dinamai `my-plugin:security-reviewer`, dan pengguna dapat [memanggilnya secara eksplisit](/docs/id/sub-agents#invoke-subagents-explicitly) dengan `@agent-my-plugin:security-reviewer`. Bentuk nama adalah `<plugin>:<name>`, di mana `<name>` berasal dari frontmatter, atau dari nama file ketika tidak ada.

736 

737Kunci manifest `agents` menggantikan pemindaian `agents/`.

738 

739<h4 id="organize-agents-in-subfolders">

740 Atur agents dalam subfolder

741</h4>

742 

743Anda dapat menempatkan file agent plugin dalam subfolder `agents/`. Claude Code [memuatnya secara rekursif](/docs/id/sub-agents#choose-the-subagent-scope) dan menggabungkan nama plugin, setiap nama subfolder, dan nama file dengan titik dua untuk membentuk nama scoped agent. Misalnya, `agents/review/security.md` dalam plugin bernama `my-plugin` dimuat sebagai `my-plugin:review:security`. Dua pengaturan mengubah nama itu:

744 

745* Frontmatter `name`: itu menggantikan hanya nama file, jadi `name: audit` di `agents/review/security.md` dimuat sebagai `my-plugin:review:audit`

746* Field manifest [`agents`](/docs/id/plugins/manifest-reference#fields): file yang Anda daftarkan di sana dimuat tanpa nama subfolder, jadi `"agents": "./custom/review/security.md"` dimuat sebagai `my-plugin:security`

747 

748<h4 id="frontmatter-fields-in-plugin-agents">

749 Field frontmatter dalam agent plugin

750</h4>

751 

752Frontmatter agent plugin mengikuti aturan ini:

753 

754* **Field yang didukung**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, dan kunci `cacheTtl` dari `experimental`. Satu-satunya nilai `isolation` yang valid adalah `"worktree"`. Lihat [field frontmatter yang didukung](/docs/id/sub-agents#supported-frontmatter-fields) untuk apa yang dilakukan masing-masing

755* **Field yang diabaikan**: `permissionMode`, `hooks`, `mcpServers`, dan `initialPrompt`. File agent tidak dapat menambahkan hooks atau server MCP sendiri, jadi tambahkan itu sebagai plugin [hooks](#hooks) dan [server MCP](#mcp-servers) sebagai gantinya

756* **Frontmatter yang tidak diuraikan**: agent masih dimuat dengan setiap field diabaikan. Itu dinamai setelah file, dan deskripsinya berbunyi `Agent from my-plugin plugin`. Jalankan [`claude plugin validate`](/docs/id/plugins/cli-reference#plugin-validate) di shell Anda untuk menemukan file-file ini

757 

758Untuk apa yang dilakukan setiap field dan aturan prioritas, lihat [Subagents](/docs/id/sub-agents#supported-frontmatter-fields).

759 

760<h3 id="hooks">

761 Hooks

762</h3>

763 

764[Hook](/docs/id/hooks-guide) menjalankan sesuatu secara otomatis pada titik dalam siklus hidup Claude Code, seperti setelah setiap pengeditan file: perintah shell, permintaan HTTP, panggilan tool MCP, prompt ke model, atau subagent. Simpan hooks plugin di `hooks/hooks.json` di root plugin, di bawah kunci top-level `"hooks"`, dalam bentuk yang sama dengan objek `hooks` di `settings.json`. Itu memungkinkan Anda menyalin hook pengaturan yang ada tanpa perubahan.

765 

766Hook ini menjalankan script bundled setelah setiap `Write` atau `Edit`:

767 

768```json hooks/hooks.json theme={null}

769{

770 "hooks": {

771 "PostToolUse": [

772 {

773 "matcher": "Write|Edit",

774 "hooks": [

775 {

776 "type": "command",

777 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

778 }

779 ]

780 }

781 ]

782 }

783}

784```

785 

786Simpan script di `scripts/format.sh` dan buat dapat dieksekusi.

787 

788Muat plugin dan minta Claude untuk mengedit file. Hook `PostToolUse` yang keluar 0 tidak menunjukkan apa pun dalam transkrip, jadi konfirmasi itu berjalan dengan [debug logging](/docs/id/hooks#debug-hooks) atau dengan apa yang diubah script itu sendiri.

789 

790Hooks di `hooks/hooks.json` dan di kunci manifest `hooks` keduanya dimuat. Untuk setiap event dan payload-nya, lihat [Hook events](/docs/id/hooks#hook-events).

791 

792<h4 id="when-plugin-hooks-fire">

793 Kapan hook plugin dipecat

794</h4>

795 

796Hook plugin tidak menunggu salah satu skill atau perintah plugin digunakan. Claude Code mendaftarkannya ketika sesi memuat plugin, dan mereka dipecat pada event mereka sejak saat itu. Untuk membatasi kapan hook berjalan, persempit `matcher`-nya.

797 

798Jika hook tidak pernah dipecat, lihat [hooks yang tidak dipecat](/docs/id/plugins/troubleshooting#failed-to-load-hooks-from-and-hooks-that-dont-fire).

799 

800<h4 id="environment-quoting-and-matching-mcp-tools">

801 Lingkungan, quoting, dan pencocokan tool MCP

802</h4>

803 

804Lingkungan hook, quoting `${CLAUDE_PLUGIN_ROOT}`, dan matcher untuk tool MCP plugin sendiri bekerja sebagai berikut:

805 

806* **Lingkungan**: setiap proses hook menerima `CLAUDE_PLUGIN_ROOT` dan `CLAUDE_PLUGIN_DATA` di lingkungannya, ditambah `CLAUDE_PLUGIN_OPTION_<KEY>` untuk setiap nilai [konfigurasi pengguna](#user-configuration), sehingga script Anda dapat membacanya dari sana

807* **Quoting**: ketika `command` tidak memiliki `args`, itu berjalan melalui shell, jadi bungkus jalur `${CLAUDE_PLUGIN_ROOT}` dalam tanda kutip ganda, seperti contoh `hooks/hooks.json` di bawah [Hooks](#hooks), untuk menjaga jalur yang diperluas sebagai satu kata shell. Ketika Anda melewatkan `args` sebagai gantinya, setiap elemen dilewatkan sebagai satu argumen tanpa shell dan tidak memerlukan quoting. Lihat [exec form dan shell form](/docs/id/hooks#exec-form-and-shell-form)

808* **Pencocokan tool MCP plugin sendiri**: tool dari [server MCP yang dideklarasikan plugin ini](#mcp-servers) dinamai `mcp__plugin_<plugin>_<server>__<tool>`, jadi tulis nama lengkap itu di matcher. Matcher pada nama server saja tidak pernah dipecat. Lihat [Match MCP tools](/docs/id/hooks#match-mcp-tools)

809 

810<h3 id="mcp-servers">

811 Server MCP

812</h3>

813 

814Server MCP memberikan Claude tools dari sistem eksternal. Deklarasikan di `.mcp.json` di root plugin, dalam bentuk yang sama dengan [project `.mcp.json`](/docs/id/mcp#project-scope). `.mcp.json` ini mendeklarasikan satu server bernama `db`:

815 

816```json .mcp.json theme={null}

817{

818 "mcpServers": {

819 "db": {

820 "command": "node",

821 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

822 }

823 }

824}

825```

826 

827Anda juga dapat menghilangkan wrapper `mcpServers` dan menempatkan `db` di level atas file.

828 

829Muat plugin dan jalankan `/mcp` untuk mengonfirmasi server muncul sebagai `plugin:my-plugin:db`.

830 

831`claude plugin validate` memeriksa `.mcp.json` dan melaporkan entri server yang akan dijatuhkan Claude Code pada waktu muat sebagai kesalahan. Memerlukan Claude Code v2.1.281 atau lebih baru.

832 

833Untuk di mana entri buruk muncul pada waktu muat, lihat [Server MCP yang tidak dimulai](/docs/id/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

834 

835Kunci manifest `mcpServers` mengambil peta server inline, jalur ke file JSON, atau array dari itu. Ketika server manifest memiliki nama yang sama dengan yang di `.mcp.json`, server manifest menggantinya.

836 

837<h4 id="reach-users-on-claude-ai-and-cowork">

838 Jangkau pengguna di claude.ai dan Cowork

839</h4>

840 

841Server stdio lokal, seperti server `db` di bawah [Server MCP](#mcp-servers), berjalan di Claude Code dan dalam sesi Cowork yang berjalan di mesin Anda di aplikasi Claude Desktop, tetapi bukan di claude.ai. Untuk menjangkau pengguna di sana juga, referensikan server jarak jauh dengan URL `https://`-nya, yang claude.ai dan Cowork tawarkan kepada pengguna sebagai konektor.

842 

843<h4 id="server-names-tool-names-and-reloads">

844 Nama server, nama tool, dan reload

845</h4>

846 

847Nama server, substitusi variabel, dan perilaku reload mengikuti aturan ini:

848 

849* **Nama server**: `plugin:<plugin>:<server>`, jadi server `db` di `my-plugin` adalah `plugin:my-plugin:db` di `/mcp`. Gunakan bentuk yang sama untuk menamakan server dalam hook [`mcp_tool`](/docs/id/hooks#mcp-tool-hook-fields)

850* **Nama tool**: `mcp__plugin_<plugin>_<server>__<tool>`, jadi tool `query` pada server `db` itu adalah `mcp__plugin_my-plugin_db__query`. Itu adalah nama yang digunakan dalam [aturan izin](/docs/id/permissions) dan [matcher hook](#hooks)

851* **Substitusi**: `${CLAUDE_PLUGIN_ROOT}` dan [variabel jalur](#path-variables-and-persistent-data) lainnya disubstitusikan dalam `command`, `args`, dan `env`. Tidak ada quoting yang diperlukan dalam `args`, karena setiap elemen dilewatkan sebagai satu argumen

852* **Reload**: ketika pengguna menjalankan `/reload-plugins` dan [reload berlaku](/docs/id/plugins/cli-reference#reloads-that-change-mcp-tools), server yang konfigurasinya tidak berubah menjaga koneksinya. Server yang konfigurasinya berubah terhubung kembali, dan yang Anda hapus terputus

853 

854<h4 id="include-a-packaged-mcpb-server">

855 Sertakan server MCPB yang dikemas

856</h4>

857 

858Kunci `mcpServers` juga menerima server yang dikemas sebagai file [MCPB](https://github.com/modelcontextprotocol/mcpb), yang ekstensinya adalah `.mcpb` atau `.dxt` yang lebih lama. Arahkan kunci ke file, sebagai jalur di dalam plugin atau URL `https://`:

859 

860```json .claude-plugin/plugin.json theme={null}

861{

862 "name": "my-plugin",

863 "mcpServers": "./servers/db.mcpb"

864}

865```

866 

867Server mengambil namanya dari `name` dalam manifest bundle.

868 

869Untuk transport dan autentikasi, lihat [MCP](/docs/id/mcp#plugin-provided-mcp-servers).

870 

871<h3 id="lsp-servers">

872 Server LSP

873</h3>

874 

875Server LSP memberikan Claude diagnostics dan code navigation untuk bahasa. Jika [plugin code intelligence resmi](/docs/id/plugins/code-intelligence) sudah mencakup bahasa Anda, pasang itu daripada menulis satu. Jika tidak, deklarasikan server di `.lsp.json` di root plugin:

876 

877```json .lsp.json theme={null}

878{

879 "gopls": {

880 "command": "gopls",

881 "args": ["serve"],

882 "extensionToLanguage": {

883 ".go": "go"

884 }

885 }

886}

887```

888 

889File memetakan setiap nama server langsung ke konfigurasinya, tanpa objek wrapper di sekitar peta. `command` adalah nama binary, dengan argumennya di `args`. `extensionToLanguage` memerlukan setidaknya satu ekstensi, masing-masing dimulai dengan `.`.

890 

891`claude plugin validate` tidak membaca file ini. Ketika entri apa pun tidak valid, seluruh file dilewati pada waktu muat dan `Invalid LSP server config for ".lsp.json"` muncul di tab **Errors** `/plugin`.

892 

893Plugin Anda mengonfigurasi koneksi tetapi tidak memasang binary server, dan setiap ekstensi file mendapat satu server:

894 

895* **Binary yang hilang**: Claude Code memulai `command` berdasarkan nama dari `PATH` pengguna. Ketika binary tidak ada, server gagal dimulai dan `claude --debug` mencatat `LSP server <name> failed to start`

896* **Konflik ekstensi**: ketika dua server yang diaktifkan mengklaim ekstensi yang sama, yang pertama terdaftar menangani file-file itu dan yang lain tidak digunakan untuk mereka, apakah server berasal dari satu plugin atau dua. Tab **Errors** `/plugin` menunjukkan peringatan `LSP server "<name>" is not used for <ext> files`

897 

898Kunci manifest `lspServers` mengambil peta yang sama inline, jalur ke file JSON, atau array dari itu, dan server-nya menambah yang di `.lsp.json`. Ketika server manifest memiliki nama yang sama dengan yang di `.lsp.json`, server manifest menggantinya.

899 

900Untuk `transport`, timeout, restart, dan field lainnya, lihat [`lspServers`](/docs/id/plugins/manifest-reference#lspservers).

901 

902Kirim output log ke stderr, bukan stdout. Claude Code membaca stdout server sebagai pesan protokol saja, dan menerima header pesan hingga 64 KiB dan body pesan hingga 32 MiB.

903 

904Claude Code memutuskan server yang melebihi batas apa pun atau menulis output non-protokol ke stdout, dan menghitung putus sebagai crash untuk `restartOnCrash` dan `maxRestarts`. Ketika Anda menjalankan dengan `--debug`, Claude Code menulis kesalahan yang menamai penyebabnya ke log debug.

905 

906<h3 id="executables">

907 Executables

908</h3>

909 

910File di `bin/` di root plugin berada di `PATH` shell tool Bash sementara plugin diaktifkan, sehingga Claude dapat menjalankannya sebagai perintah bare. Tambahkan script yang dapat dieksekusi:

911 

912```bash bin/hello-plugin theme={null}

913#!/bin/bash

914echo "hello from my-plugin"

915```

916 

917Buat dapat dieksekusi dengan `chmod +x bin/hello-plugin` dan muat plugin. Ketika Anda meminta Claude untuk menjalankan `hello-plugin`, hasil tool Bash menunjukkan output script.

918 

919Direktori `bin/` plugin datang setelah entri `PATH` pengguna sendiri, jadi plugin tidak dapat menaungi `git`, `ls`, atau perintah sistem lainnya.

920 

921claude.ai dan Cowork tidak memasang plugin yang memiliki direktori `bin/` level atas, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](/docs/id/plugins/host-marketplace#distribute-through-organization-settings).

922 

923<h3 id="default-settings">

924 Pengaturan default

925</h3>

926 

927Untuk menetapkan default yang berlaku sementara plugin diaktifkan, tambahkan `settings.json` di root plugin, atau letakkan objek yang sama inline di kunci manifest `settings`. Dua kunci berlaku, `agent` dan `subagentStatusLine`, dan setiap kunci lain dijatuhkan.

928 

929Tetapkan `agent` untuk menjalankan salah satu agent plugin sendiri sebagai thread utama:

930 

931```json settings.json theme={null}

932{

933 "agent": "security-reviewer"

934}

935```

936 

937Muat plugin dan mulai sesi. Claude kemudian menjawab dalam percakapan utama dengan system prompt dan model agent `security-reviewer`.

938 

939Untuk semua yang dikontrol kunci, lihat pengaturan [`agent`](/docs/id/settings-reference#agent).

940 

941Ketika kunci yang sama ditetapkan di lebih dari satu tempat, aturan ini memutuskan nilai mana yang berlaku:

942 

943* **File atas manifest**: ketika keduanya ada dan `settings.json` menetapkan setidaknya satu kunci yang didukung, `settings.json` berlaku dan `settings` manifest diabaikan

944* **Pengaturan pengguna atas default plugin**: di seluruh sumber pengaturan, default plugin adalah layer terendah, jadi `agent` pengguna sendiri di `~/.claude/settings.json` menggantikan milik Anda

945* **Dua plugin menetapkan kunci yang sama**: nilai dari plugin yang dimuat terakhir berlaku, dan `claude --debug` mencatat `overrides setting`

946 

947Untuk bentuk `subagentStatusLine`, lihat [subagent status lines](/docs/id/statusline#subagent-status-lines).

948 

949<h3 id="themes-and-output-styles">

950 Tema dan output styles

951</h3>

952 

953Plugin dapat menyertakan color themes dan output styles. Keduanya muncul di picker yang sama dengan pengguna sendiri. Untuk salah satu, menetapkan kunci manifest menggantikan pemindaian folder.

954 

955| Komponen | Simpan sebagai | Format | Muncul di | Kunci manifest |

956| :----------- | :------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------- | :-------------------- |

957| Tema | `themes/<slug>.json` | Format [file tema kustom](/docs/id/terminal-config#create-a-custom-theme) yang ditulis pengguna di `~/.claude/themes/` | `/theme`, di bawah `name` file | `experimental.themes` |

958| Output style | `output-styles/<name>.md` | Format [output style kustom](/docs/id/output-styles#create-a-custom-output-style), dengan frontmatter `name` dan `description` | `/output-style`, sebagai `<plugin>:<name>` | `outputStyles` |

959 

960Tema plugin adalah read-only, jadi ketika pengguna mengedit satu di `/theme`, edit disimpan sebagai salinan di direktori tema mereka sendiri.

961 

962Tema ini mengubah warna prompt accent dan error text pada preset dark:

963 

964```json themes/dracula.json theme={null}

965{

966 "name": "Dracula",

967 "base": "dark",

968 "overrides": {

969 "claude": "#bd93f9",

970 "error": "#ff5555"

971 }

972}

973```

974 

975<h3 id="channels">

976 Channels

977</h3>

978 

979[Channel](/docs/id/channels) memungkinkan sistem luar seperti aplikasi chat mengirim pesan ke sesi. Dalam plugin, channel adalah salah satu server MCP ditambah entri `channels` yang mengikat ke itu dan dapat meminta konfigurasinya sendiri. Manifest ini mengikat channel ke server `telegram` dan meminta token bot:

980 

981```json .claude-plugin/plugin.json theme={null}

982{

983 "name": "my-plugin",

984 "mcpServers": {

985 "telegram": {

986 "command": "node",

987 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

988 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

989 }

990 },

991 "channels": [

992 {

993 "server": "telegram",

994 "userConfig": {

995 "bot_token": {

996 "type": "string",

997 "title": "Bot token",

998 "description": "Telegram bot token",

999 "sensitive": true

1000 }

1001 }

1002 }

1003 ]

1004}

1005```

1006 

1007`server` harus cocok dengan kunci di `mcpServers`. Per-channel `userConfig` mengambil bentuk yang sama dengan kunci [`userConfig` level atas](#user-configuration).

1008 

1009Untuk apa yang harus diimplementasikan server dan bagaimana pengguna mengaktifkan plugin channel, lihat [Package as a plugin](/docs/id/channels-reference#package-as-a-plugin) dalam referensi channels. Untuk tabel field, lihat [`channels`](/docs/id/plugins/manifest-reference#channels).

1010 

1011<h3 id="monitors">

1012 Monitors

1013</h3>

1014 

1015Monitor adalah perintah shell yang berjalan di latar belakang untuk seluruh sesi. Apa yang dicetak mencapai Claude sebagai notifikasi, sehingga Claude dapat bereaksi terhadap log atau perubahan status tanpa diminta untuk menontonnya. Simpan entri di `monitors/monitors.json`:

1016 

1017```json monitors/monitors.json theme={null}

1018[

1019 {

1020 "name": "error-log",

1021 "command": "tail -F ./logs/error.log",

1022 "description": "Application error log"

1023 }

1024]

1025```

1026 

1027Perintah berjalan dalam shell, di direktori kerja tempat sesi dimulai.

1028 

1029Perintah monitor dibatasi di mana itu dimulai dan apa yang dapat direferensikan:

1030 

1031* **Sesi interaktif saja**: monitor plugin dimulai dalam sesi interaktif dan tidak pernah dalam mode non-interaktif dengan flag `-p`. Mereka juga dimulai hanya di mana [Monitor tool](/docs/id/tools-reference#monitor-tool) tersedia

1032* **Tidak ada konfigurasi pengguna**: `command` mendapat [variabel jalur](#path-variables-and-persistent-data) dan `${ENV_VAR}` dari lingkungan, tetapi tidak pernah `${user_config.*}`. Monitor yang mereferensikan satu tidak dimulai, dan proses monitor tidak menerima `CLAUDE_PLUGIN_OPTION_<KEY>` juga

1033* **Menonaktifkan mid-session**: jika Anda menonaktifkan plugin mid-session, Claude Code tidak menghentikan monitor yang sudah berjalan. Mereka berhenti ketika sesi berakhir

1034 

1035Kunci manifest `experimental.monitors` mengambil array yang sama inline atau jalur ke file JSON, dan dibaca daripada `monitors/monitors.json`.

1036 

1037Untuk trigger `when` dan field lainnya, lihat [`monitors`](/docs/id/plugins/manifest-reference#monitors).

1038 

1039<h2 id="user-configuration">

1040 Minta pengguna untuk nilai konfigurasi

1041</h2>

1042 

1043Deklarasikan nilai yang dibutuhkan plugin Anda dari pengguna di kunci manifest `userConfig`, sehingga pengguna tidak mengedit `settings.json` sendiri. Setiap opsi muncul dalam dialog dengan `title`-nya sebagai label dan `description`-nya di bawahnya.

1044 

1045Tetapkan `"sensitive": true` untuk token atau password. Dialog kemudian menutupi input, dan nilai disimpan dalam penyimpanan aman daripada `settings.json`.

1046 

1047Manifest ini meminta endpoint dan token:

1048 

1049```json .claude-plugin/plugin.json theme={null}

1050{

1051 "name": "my-plugin",

1052 "userConfig": {

1053 "api_url": {

1054 "type": "string",

1055 "title": "API URL",

1056 "description": "Base URL of your team's API"

1057 },

1058 "api_token": {

1059 "type": "string",

1060 "title": "API token",

1061 "description": "Token for your team's API",

1062 "sensitive": true

1063 }

1064 }

1065}

1066```

1067 

1068<h3 id="when-the-configuration-dialog-appears">

1069 Kapan dialog konfigurasi muncul

1070</h3>

1071 

1072Dialog muncul hanya dalam antarmuka `/plugin` interaktif. Itu terbuka untuk opsi apa pun yang belum ditetapkan ketika pengguna melakukan salah satu dari berikut:

1073 

1074* Memasang plugin di `/plugin`

1075* Menjalankan `/plugin install <plugin>@<marketplace>` di dalam sesi

1076* Mengaktifkan plugin dari tab **Installed** di `/plugin`

1077 

1078Untuk membuka dialog yang sama kapan saja, pengguna menjalankan `/plugin configure <plugin>@<marketplace>`.

1079 

1080Perintah shell `claude plugin install` tidak pernah meminta nilai `userConfig`. Untuk menetapkan nilai dari shell, lewatkan masing-masing sebagai `--config KEY=VALUE`. Ketika opsi tetap tidak ditetapkan, perintah mencetak baris `userConfig options not yet set` yang menamai kedua cara untuk menetapkannya. [Dialog `userConfig` tidak pernah muncul](/docs/id/plugins/troubleshooting#the-userconfig-dialog-never-appears) mengutip baris.

1081 

1082Untuk field opsi, di mana setiap nilai disimpan, bagaimana komponen mereferensikan nilai yang disimpan, dan field mana yang menolak `${user_config.*}`, lihat [User configuration](/docs/id/plugins/manifest-reference#user-configuration).

1083 

1084<h2 id="path-variables-and-persistent-data">

1085 Referensikan jalur plugin dan simpan data

1086</h2>

1087 

1088Anda tidak tahu di mana plugin Anda akan dipasang, jadi referensikan file dan data-nya melalui variabel ini daripada jalur tetap. Mereka disubstitusikan dalam skill, command, dan agent content, dalam hook dan monitor commands, dan dalam konfigurasi server MCP dan LSP. Mereka juga diekspor ke hook, MCP, dan proses LSP:

1089 

1090* **`${CLAUDE_PLUGIN_ROOT}`**: direktori instalasi plugin. Setiap versi memiliki [cache directory](/docs/id/plugins/loading#find-plugins-on-disk)-nya sendiri, jadi jalur berubah ketika plugin diperbarui. Jangan tulis state di sana

1091* **`${CLAUDE_PLUGIN_DATA}`**: direktori yang bertahan dari update, untuk `node_modules`, virtual environments, dan caches. Itu diselesaikan ke `~/.claude/plugins/data/<id>/` dan dibuat ketika pertama kali direferensikan

1092* **`${CLAUDE_PROJECT_DIR}`**: root proyek, nilai yang sama yang diterima hooks

1093 

1094Dalam jalur direktori data, `<id>` adalah identifier plugin dengan setiap karakter selain huruf, digit, `_`, dan `-` diganti dengan `-`, jadi `my-plugin@my-marketplace` menjadi `my-plugin-my-marketplace`.

1095 

1096Di Windows, jalur yang disubstitusikan menggunakan forward slashes sehingga shell tidak membaca backslashes sebagai escapes.

1097 

1098<h3 id="install-dependencies-into-the-data-directory">

1099 Pasang dependensi ke direktori data

1100</h3>

1101 

1102Untuk plugin yang dipasang marketplace, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) yang memenuhi syarat secara otomatis ketika itu cache plugin, jadi Anda mungkin tidak perlu memasangnya sendiri. Ketika Anda melakukannya, hook `SessionStart` ini memasang `node_modules` ke `${CLAUDE_PLUGIN_DATA}` pada run pertama dan lagi setelah update mengubah `package.json`:

1103 

1104```json hooks/hooks.json theme={null}

1105{

1106 "hooks": {

1107 "SessionStart": [

1108 {

1109 "hooks": [

1110 {

1111 "type": "command",

1112 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

1113 }

1114 ]

1115 }

1116 ]

1117 }

1118}

1119```

1120 

1121Setelah sesi pertama, `~/.claude/plugins/data/<id>/node_modules` ada. Server MCP kemudian dapat menetapkan `NODE_PATH` ke `${CLAUDE_PLUGIN_DATA}/node_modules` di `env`-nya. Untuk field mana yang mensubstitusikan variabel mana, lihat [Environment variables](/docs/id/plugins/manifest-reference#environment-variables).

1122 

1123<h2 id="next-steps">

1124 Langkah berikutnya

1125</h2>

1126 

1127* [Referensi manifest plugin](/docs/id/plugins/manifest-reference): field `plugin.json`, aturan jalur, dan layout standar

1128* [Test plugins dengan evals](/docs/id/plugin-evals): periksa bahwa komponen yang Anda tambahkan mengubah perilaku Claude dengan cara yang Anda maksudkan

1129* [Publikasikan dan distribusikan plugin](/docs/id/plugins/publish): versi plugin dan letakkan di marketplace

1130* [Troubleshoot plugins](/docs/id/plugins/troubleshooting): apa yang harus dilakukan ketika komponen tidak dimuat atau hook tidak dipecat

plugins/create.md +424 −0 created

Details

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 plugin Claude Code

6 

7> Bangun plugin Claude Code pertama Anda dari direktori kosong, uji tanpa marketplace, dan konversi setup .claude/ yang sudah ada.

8 

9Plugin adalah direktori skills, agents, hooks, dan MCP servers, ditambah file `plugin.json`, yang disebut manifest, yang memberi nama pada plugin. Claude Code memuat direktori sebagai satu unit, sehingga Anda dapat membagikannya dengan rekan kerja, memasangnya di beberapa proyek, atau menerbitkannya ke marketplace.

10 

11Halaman ini untuk orang-orang yang menulis plugin mereka sendiri.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Memasang plugin orang lain**: lihat [Install plugins](/docs/id/plugins/install)

17 * **Tidak yakin Anda memerlukan plugin**: lihat [Decide whether you need a plugin](/docs/id/plugins/overview#decide-whether-you-need-a-plugin) di overview

18 * **Pengguna plugin Anda berada di claude.ai atau di Cowork**: folder yang sama dipasang di sana dengan subset komponen yang berbeda. Lihat [Plugins on claude.ai and in Cowork](https://claude.com/docs/plugins/overview)

19</Note>

20 

21Mulai dari bagian yang sesuai dengan apa yang sudah Anda miliki:

22 

23* **Belum ada apa-apa**: ikuti [Create your first plugin](#create-your-first-plugin), kemudian [Develop without a marketplace](#develop-without-a-marketplace) dan [Test and debug](#test-and-debug).

24* **File di bawah `.claude/` sudah ada**: lakukan walkthrough first-plugin sekali untuk mempelajari layoutnya, kemudian ikuti [Convert an existing `.claude/` setup](#convert-an-existing-claude-setup).

25 

26<h2 id="decide-when-to-use-a-plugin">

27 Tentukan kapan menggunakan plugin

28</h2>

29 

30Skills, agents, hooks, dan MCP servers semuanya bekerja standalone di proyek Anda atau direktori home. Pertahankan setup standalone itu selama melayani satu proyek atau hanya Anda. Buat plugin ketika Anda ingin berbagi setup dengan rekan kerja, memasangnya di beberapa proyek, atau menerbitkan rilis yang diversi.

31 

32Ketika Anda memindahkan skills, agents, hooks, dan MCP config standalone ke plugin, lokasi dan nama mereka berubah:

33 

34* **Di mana file-file itu pergi**: di bawah direktori plugin sendiri, yang disebut plugin root, sebagai `skills/`, `agents/`, `hooks/hooks.json`, dan `.mcp.json`.

35* **Bagaimana mereka dinamai**: plugin skills dan agents mendapatkan nama plugin sebagai prefix, seperti `/my-plugin:hello`, sehingga dua plugin dapat masing-masing menyediakan skill `hello` tanpa bertabrakan.

36 

37Untuk memindahkan setup yang sudah ada ke plugin, lihat [Convert an existing `.claude/` setup](#convert-an-existing-claude-setup).

38 

39<h2 id="create-your-first-plugin">

40 Buat plugin pertama Anda

41</h2>

42 

43Dalam walkthrough ini, Anda membuat plugin yang satu-satunya komponennya adalah satu skill, sebuah greeting, dan menjalankannya dengan `--plugin-dir`, yang memuat plugin untuk satu sesi tanpa memasangnya. Plugin dapat menampung campuran apa pun dari [components](/docs/id/plugins/components), seperti skills, agents, hooks, dan MCP servers, dan tidak ada yang diperlukan; satu skill adalah contoh terkecil yang menunjukkan layout.

44 

45Anda memerlukan Claude Code [installed and signed in](/docs/id/quickstart#step-1-install-claude-code).

46 

47Buka terminal di direktori tempat Anda ingin menyimpan plugin, seperti `~/projects`, dan jalankan perintah dalam langkah-langkah ini darinya. Anda dapat menyimpan plugin di mana saja, karena Anda meneruskan jalurnya ke Claude Code ketika Anda memulai sesi.

48 

49<Steps>

50 <Step title="Buat direktori plugin">

51 Buat direktori plugin, dengan folder `.claude-plugin/` di dalamnya untuk menampung manifest:

52 

53 ```bash theme={null}

54 mkdir -p my-first-plugin/.claude-plugin

55 ```

56 </Step>

57 

58 <Step title="Tulis manifest">

59 [manifest](/docs/id/plugins/manifest-reference) adalah file JSON bernama `plugin.json` yang memberi tahu Claude Code nama plugin dan mendeskripsikannya. Simpan yang ini sebagai `my-first-plugin/.claude-plugin/plugin.json`:

60 

61 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

62 {

63 "name": "my-first-plugin",

64 "description": "A greeting plugin to learn the basics",

65 "version": "1.0.0",

66 "author": {

67 "name": "Your Name"

68 }

69 }

70 ```

71 

72 Empat field melakukan ini:

73 

74 * **`name`**: diperlukan. Ini mengidentifikasi plugin dan menjadi prefix pada setiap skill dan agent yang disediakan plugin. Jangan masukkan spasi di dalamnya.

75 * **`description`**: teks yang dilihat pengguna untuk plugin di `/plugin`.

76 * **`version`**: opsional. Menetapkannya membuat pengguna tetap pada versi itu sampai Anda mengubahnya; [Release a new version](/docs/id/plugins/host-marketplace#release-a-new-version) mengatakan kapan harus menetapkan atau menghilangkannya.

77 * **`author`**: siapa yang dikreditkan. `name` diperlukan di dalamnya; `email` dan `url` opsional.

78 

79 Setiap field lainnya ada di [manifest reference](/docs/id/plugins/manifest-reference#fields).

80 

81 Hanya `plugin.json` yang masuk ke dalam `.claude-plugin/`. Skill yang Anda tambahkan selanjutnya langsung di bawah `my-first-plugin/`, di sebelah folder itu.

82 </Step>

83 

84 <Step title="Tambahkan skill">

85 Satu-satunya komponen plugin ini adalah skill. Setiap skill adalah direktori di bawah `skills/` yang berisi file `SKILL.md`. Buat direktori skill:

86 

87 ```bash theme={null}

88 mkdir -p my-first-plugin/skills/hello

89 ```

90 

91 Kemudian buat `my-first-plugin/skills/hello/SKILL.md` dengan konten ini:

92 

93 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

94 ---

95 name: hello

96 description: Greet the user with a friendly message

97 disable-model-invocation: true

98 ---

99 

100 Greet the user warmly and ask how you can help them today.

101 ```

102 

103 Baris `disable-model-invocation: true` berarti Claude tidak menjalankan skill sendiri, jadi hanya Anda yang memicunya. Hapus baris itu dari skill yang ingin Anda jalankan sendiri oleh Claude. Perintah skill menggabungkan nama plugin dan nama skill, jadi Anda menjalankan yang ini sebagai `/my-first-plugin:hello`. Untuk field frontmatter lainnya, lihat [skill frontmatter reference](/docs/id/skills#frontmatter-reference).

104 </Step>

105 

106 <Step title="Validasi plugin">

107 Periksa manifest dan frontmatter skill sebelum Anda menjalankan apa pun:

108 

109 ```bash theme={null}

110 claude plugin validate ./my-first-plugin

111 ```

112 

113 Perintah mencetak jalur manifest yang diperiksa dan `✔ Validation passed`. Jika mencetak `✘ Validation failed` sebagai gantinya, setiap baris di atas baris hasil itu memberi nama field yang harus diperbaiki. Cari setiap pesan di bawah [`claude plugin validate` reports errors](/docs/id/plugins/troubleshooting#claude-plugin-validate-reports-errors).

114 </Step>

115 

116 <Step title="Jalankan Claude Code dengan plugin">

117 Mulai sesi dengan plugin dimuat:

118 

119 ```bash theme={null}

120 claude --plugin-dir ./my-first-plugin

121 ```

122 

123 Setelah Claude Code dimulai, jalankan skill:

124 

125 ```text theme={null}

126 /my-first-plugin:hello

127 ```

128 

129 Claude membalas dengan greeting.

130 </Step>

131</Steps>

132 

133Plugin dimuat hanya dalam sesi yang Anda mulai dengan `--plugin-dir`. Untuk terus bekerja padanya tanpa flag, atau untuk menguji build `.zip`, lihat [Develop without a marketplace](#develop-without-a-marketplace).

134 

135<h3 id="share-the-plugin">

136 Bagikan plugin Anda

137</h3>

138 

139Plugin yang Anda bangun dengan [Create your first plugin](#create-your-first-plugin) hanya ada di mesin Anda. Ketika sudah siap untuk orang lain, ada tiga cara untuk mendapatkannya kepada mereka:

140 

141* **Kirimkan langsung ke beberapa orang**: berikan mereka direktori plugin atau `.zip` darinya, dan tidak ada yang perlu dipublikasikan. Lihat [Share a plugin without a marketplace](/docs/id/plugins/publish#share-a-plugin-without-a-marketplace).

142* **Daftarkan di marketplace Anda sendiri**: rekan kerja menambahkan marketplace Anda sekali dan memasang plugin berdasarkan nama, dan mereka menerima update Anda. Lihat [Publish through your own marketplace](/docs/id/plugins/publish#publish-through-your-own-marketplace).

143* **Kirimkan ke community marketplace Anthropic**: setelah terdaftar, siapa pun yang menambahkan marketplace itu dapat memasangnya. Lihat [Submit to the community marketplace](/docs/id/plugins/publish#submit-to-the-community-marketplace).

144 

145<h3 id="plugin-layout">

146 Plugin layout

147</h3>

148 

149Setiap jenis [component](/docs/id/plugins/components), seperti skills, agents, hooks, dan MCP servers, masuk ke direktori tetap di bawah plugin root, yang merupakan direktori yang Anda teruskan ke `--plugin-dir`. Tambahkan hanya direktori yang Anda gunakan. Untuk mengklik melalui direktori plugin lengkap dan membaca apa yang dilakukan setiap file, buka [plugin explorer](/docs/id/plugins/components#explore-the-plugin-directory).

150 

151Tabel mencantumkan direktori yang paling banyak digunakan plugin untuk memulai, dan [full layout](/docs/id/plugins/manifest-reference#standard-layout) mencantumkan sisanya.

152 

153| Lokasi | Isi |

154| :--------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

155| `.claude-plugin/plugin.json` | Manifest. Ketika Anda memuat plugin dengan `--plugin-dir` dan tidak memiliki manifest, Claude Code memberi nama plugin setelah direktorinya |

156| `skills/` | Satu direktori `<name>/SKILL.md` per skill |

157| `commands/` | File Markdown datar, bentuk lama dari skills. Gunakan `skills/` untuk plugin baru |

158| `agents/` | Satu file Markdown per subagent |

159| `hooks/hooks.json` | Konfigurasi hook: key `"hooks"` tingkat atas yang nilainya memiliki bentuk yang sama dengan `hooks` dalam file settings |

160| `.mcp.json` | Definisi MCP server |

161 

162<Warning>

163 Hanya `plugin.json` yang masuk ke dalam `.claude-plugin/`. Komponen yang disimpan di sana tidak dimuat.

164 

165 Plugin root adalah direktori plugin sendiri, bukan `~/.claude/` itu sendiri. `.mcp.json` yang disimpan di `~/.claude/.mcp.json` tidak dimuat.

166</Warning>

167 

168<h2 id="develop-without-a-marketplace">

169 Kembangkan tanpa marketplace

170</h2>

171 

172Anda tidak memerlukan [marketplace](/docs/id/plugins/overview#get-plugins-from-a-marketplace) untuk menjalankan plugin yang Anda tulis. Muat langsung dari disk atau URL sebagai gantinya:

173 

174* [`--plugin-dir`](#load-a-directory-or-archive-for-one-session): memuat direktori atau arsip `.zip` untuk satu sesi.

175* [`--plugin-url`](#fetch-an-archive-from-a-url-for-one-session): mengambil arsip `.zip` dari URL untuk satu sesi.

176* [`claude plugin init`](#scaffold-a-plugin-that-loads-every-session): membuat scaffold plugin di bawah `~/.claude/skills/` yang dimuat setiap sesi.

177 

178Jika dua plugin yang dimuat dengan cara berbeda berbagi nama, lihat [Name conflicts](/docs/id/plugins/loading#name-conflicts) untuk mengetahui mana yang Claude Code pertahankan.

179 

180<h3 id="load-a-directory-or-archive-for-one-session">

181 Muat plugin untuk satu sesi

182</h3>

183 

184Anda dapat memuat plugin untuk satu sesi dengan tiga cara: dari direktori atau arsip `.zip` di disk dengan `--plugin-dir`, dari URL dengan `--plugin-url`, atau dari variabel lingkungan ketika Anda tidak dapat menambahkan flag. Setiap plugin dimuat hanya untuk sesi itu, dan tidak ada yang ditulis ke settings Anda untuk itu. Ketika Anda mengedit file plugin selama sesi, jalankan `/reload-plugins` untuk memuat perubahan.

185 

186<h4 id="from-a-directory-or-zip">

187 Dari direktori atau `.zip`

188</h4>

189 

190Ketika Anda memulai `claude` dari shell Anda, teruskan `--plugin-dir` dengan direktori root plugin atau arsip `.zip` darinya. Ulangi flag untuk memuat beberapa plugin:

191 

192```bash theme={null}

193claude --plugin-dir ./my-first-plugin --plugin-dir ./other-plugin.zip

194```

195 

196<h4 id="load-a-folder-of-plugins">

197 Dari folder plugin

198</h4>

199 

200Untuk memuat beberapa plugin dari satu tempat, teruskan folder yang menampungnya, seperti `--plugin-dir ./plugins`. Memuat folder plugin memerlukan Claude Code v2.1.265 atau lebih baru.

201 

202Jika folder tidak memiliki direktori `.claude-plugin/` dan tidak memiliki komponen plugin di tingkat atasnya, Claude Code memperlakukannya sebagai folder plugin. Setiap subfolder langsung yang memiliki manifest `.claude-plugin/plugin.json` kemudian dimuat sebagai plugin terpisah. Semua yang lain di folder dilewati tanpa kesalahan, termasuk subfolder yang tidak memiliki manifest. Jika plugin di folder tidak dimuat, periksa bahwa subfoldernya memiliki `.claude-plugin/plugin.json`.

203 

204Dalam sesi interaktif, Anda juga dapat menambah dan menghapus plugin di folder setelah startup:

205 

206* Subfolder yang Anda tambahkan dimuat sebagai plugin baru setelah manifestnya ada.

207* Ketika Anda menghapus subfolder, pluginnya dibongkar.

208 

209Pesan muncul dalam sesi untuk setiap perubahan ini. Jika memuat atau membongkar plugin di tengah percakapan akan [invalidate the prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), perubahan ditahan sebagai gantinya, dan pesan memberi tahu Anda untuk menjalankan `/reload-plugins` untuk menerapkannya.

210 

211<h4 id="fetch-an-archive-from-a-url-for-one-session">

212 Dari URL

213</h4>

214 

215Ketika Anda memulai `claude` dari shell Anda, teruskan `--plugin-url` dengan alamat arsip `.zip`, seperti artefak build yang CI Anda publikasikan:

216 

217```bash theme={null}

218claude --plugin-url https://example.com/my-first-plugin.zip

219```

220 

221Claude Code mengunduh arsip saat startup. Untuk memuat beberapa, ulangi flag atau teruskan URL yang dipisahkan spasi dalam satu argumen yang dikutip.

222 

223Arahkan flag hanya ke arsip yang Anda kontrol atau percayai.

224 

225Jika Claude Code tidak dapat mengambil arsip, atau arsip tidak valid, itu dimulai tanpa plugin dan mencatat kesalahan beban plugin yang dapat Anda tinjau di tab **Errors** manajer `/plugin`.

226 

227<h4 id="from-an-environment-variable">

228 Dari variabel lingkungan

229</h4>

230 

231Untuk memuat plugin dalam sesi di mana Anda tidak dapat menambahkan flag `--plugin-dir`, daftarkan jalur absolutnya dalam variabel lingkungan [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables) sebagai gantinya. Claude Code memuat setiap jalur saat memuat jalur `--plugin-dir`. Plugin ini dimuat sebagai tambahan untuk yang Anda teruskan dengan `--plugin-dir`. [Project and local settings can't set this variable](/docs/id/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` memerlukan Claude Code v2.1.280 atau lebih baru.

232 

233Managed settings dapat mematikan `--plugin-dir` dan `CLAUDE_CODE_PLUGIN_DIRS`. Lihat [Flags that load a plugin for one session](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Untuk menguji plugin bersama dengan plugin yang bergantung padanya, lihat [Test a plugin and its dependency locally](/docs/id/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

234 

235<h3 id="scaffold-a-plugin-that-loads-every-session">

236 Buat plugin dimuat di setiap sesi

237</h3>

238 

239Direktori skills pribadi Anda adalah `~/.claude/skills/`. Claude Code memuat folder apa pun di sana yang berisi `.claude-plugin/plugin.json` sebagai plugin di setiap sesi, tanpa flag dan tanpa langkah install. `claude plugin init` membuat scaffold satu dari plugin ini untuk Anda.

240 

241<h4 id="scaffold-the-plugin-with-claude-plugin-init">

242 Buat scaffold plugin dengan `claude plugin init`

243</h4>

244 

245`claude plugin init` menulis plugin starter di bawah `~/.claude/skills/`. Memerlukan Claude Code v2.1.157 atau lebih baru. Buat scaffold satu dari shell Anda:

246 

247```bash theme={null}

248claude plugin init my-tool

249```

250 

251Perintah membuat `~/.claude/skills/my-tool/` dengan `.claude-plugin/plugin.json` dan root `SKILL.md`. Ini mencetak `✔ Created plugin "my-tool" at ~/.claude/skills/my-tool` diikuti oleh `It will auto-load next session as my-tool@skills-dir. Run /reload-plugins to load it now.`

252 

253Teruskan `--with skills` untuk membuat scaffold `claude plugin init` skill di bawah `skills/` untuk Anda. Nilai `--with` lainnya ada di [plugin commands reference](/docs/id/plugins/cli-reference#plugin-init).

254 

255<h4 id="skill-names-in-a-scaffolded-plugin">

256 Beri nama skills plugin

257</h4>

258 

259Root skill di `~/.claude/skills/my-tool/SKILL.md` juga merupakan personal skill, jadi Anda memanggilnya sebagai `/my-tool`, bukan `/my-tool:my-tool`. Skills yang Anda tambahkan di bawah `skills/` di dalam plugin mendapatkan prefix nama plugin, seperti `/my-tool:example`.

260 

261<h4 id="stop-loading-the-plugin">

262 Hentikan pemuatan plugin

263</h4>

264 

265Untuk menghentikan pemuatan plugin yang dibuat scaffold, hapus direktorinya, atau jalankan `claude plugin disable my-tool@skills-dir` di shell Anda dengan nama `my-tool@skills-dir` yang dicetak `claude plugin init`. Dalam ID `my-tool@skills-dir`, `skills-dir` berdiri di mana nama marketplace akan berada, karena plugin dimuat dari direktori skills Anda daripada dari marketplace.

266 

267<h4 id="load-a-plugin-for-everyone-in-one-repository">

268 Bagikan plugin melalui repository

269</h4>

270 

271`claude plugin init` menulis plugin ke direktori skills pribadi Anda di `~/.claude/skills/`, sehingga dimuat untuk Anda di setiap proyek. Untuk membuat plugin dimuat untuk semua orang di satu repository, buat layout yang sama sendiri di `<project>/.claude/skills/<name>/`, termasuk `.claude-plugin/plugin.json`. Lihat [Plugins shared through a repository](/docs/id/plugins/loading#plugins-shared-through-a-repository) untuk kondisi di mana Claude Code memuat itu.

272 

273<h2 id="test-and-debug">

274 Uji dan debug

275</h2>

276 

277Ketika perubahan pada plugin Anda tidak muncul, kerjakan pemeriksaan ini secara berurutan. Masing-masing memberi tahu Anda apa yang dilakukan Claude Code dengan plugin:

278 

2791. Di shell Anda, jalankan `claude plugin validate <path>`. Ini memeriksa manifest dan frontmatter setiap file skill, agent, dan command, dan keluar `0` pada `Validation passed`. Tambahkan `--strict` untuk gagal pada peringatan juga. Exit codes dan penanganan direktori ada di [plugin commands reference](/docs/id/plugins/cli-reference#plugin-validate).

2802. Dalam sesi yang berjalan, jalankan `/reload-plugins` untuk menerapkan edit yang Anda buat di disk. Ini mencetak satu baris `Reloaded:` dengan hitungan. Kemudian konfirmasi skill dimuat dengan mengetik perintah `/plugin-name:skill` atau dengan menemukan plugin di tab **Installed** `/plugin`.

2813. Dalam sesi yang sama, jalankan `/plugin`. Tab **Installed** mencantumkan plugin Anda dan, dalam detail plugin, komponen yang ditemukan Claude Code. Tab **Errors** mencantumkan apa yang gagal dimuat dan mengapa, seperti jalur dalam manifest Anda yang tidak ada.

2824. Kembali di shell Anda, jalankan `claude plugin list`. Ini mencetak plugin sesi-saja dan direktori-skills dalam bagian mereka sendiri dengan `Status: ✔ loaded` atau kesalahan beban. Untuk menyertakan plugin yang Anda kembangkan, teruskan `--plugin-dir` dengan jalurnya sebelum `plugin list`.

283 

284Untuk memeriksa MCP server, jalankan `/mcp` dalam sesi untuk melihat status server. Ketika server sehat, `/mcp` mencantumkannya sebagai terhubung. Jika tidak, lihat [MCP servers that don't start](/docs/id/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

285 

286Untuk memeriksa hook, picu event yang cocok. Misalnya, minta Claude untuk mengedit file untuk memicu hook `PostToolUse`. Kemudian baca [debug log](/docs/id/hooks#debug-hooks), yang menunjukkan hook mana yang cocok, exit codes mereka, dan output mereka.

287 

288Bagian berikutnya mencakup kegagalan yang paling mungkin Anda alami saat mengembangkan, dan [troubleshooting page](/docs/id/plugins/troubleshooting#build-a-plugin) memiliki entri lengkap untuk masing-masing.

289 

290<h3 id="a-component-path-isn’t-found">

291 Jalur komponen tidak ditemukan

292</h3>

293 

294Tab **Errors** dari `/plugin` menunjukkan `<component> path not found: <path>`, misalnya `commands path not found`. Jalur komponen dalam manifest Anda, seperti `commands`, `skills`, `agents`, atau `hooks`, menunjuk ke tidak ada. Perbaiki jalur atau buat direktori, kemudian jalankan `/reload-plugins` dalam sesi. Lihat [`commands path not found`](/docs/id/plugins/troubleshooting#commands-path-not-found).

295 

296<h3 id="plugin-dir-at-a-marketplace-root-doesn’t-load-the-plugins-under-plugins/">

297 `--plugin-dir` di root marketplace tidak memuat plugin di bawah `plugins/`

298</h3>

299 

300`--plugin-dir` mengambil direktori root plugin, yang berisi `.claude-plugin/plugin.json` dan direktori komponen seperti `skills/`. Jika Anda mengarahkannya ke root marketplace sebagai gantinya, Claude Code tidak membaca `marketplace.json`, jadi plugin di bawah `plugins/` tidak dimuat, dan Anda tidak melihat kesalahan. Arahkan flag ke folder satu plugin, atau tambahkan marketplace. Lihat [entri troubleshooting](/docs/id/plugins/troubleshooting#plugin-dir-loads-a-plugin-with-no-components).

301 

302<h3 id="the-plugin-loads-but-its-skills-are-missing">

303 Plugin dimuat tetapi skillnya hilang

304</h3>

305 

306Direktori `skills/` ada di dalam `.claude-plugin/`, atau entri `skills` dalam manifest menunjuk ke file. Pindahkan `skills/` ke plugin root, arahkan setiap entri `skills` ke direktori yang berisi `SKILL.md`, dan jalankan `/reload-plugins` dalam sesi. Lihat [Plugin loads but its skills are missing](/docs/id/plugins/troubleshooting#plugin-loads-but-its-skills-are-missing).

307 

308<h3 id="the-userconfig-dialog-never-appears">

309 Dialog `userConfig` tidak pernah muncul

310</h3>

311 

312Dialog untuk opsi [`userConfig`](/docs/id/plugins/components#user-configuration) plugin Anda adalah bagian dari pemasangan melalui `/plugin` dalam sesi. Memuat dengan `--plugin-dir` tidak menampilkannya, begitu juga `claude plugin install` di shell. Dengan plugin dimuat, jalankan `/plugin configure <plugin-name>` dalam sesi untuk membukanya. Lihat [The `userConfig` dialog never appears](/docs/id/plugins/troubleshooting#the-userconfig-dialog-never-appears).

313 

314<h3 id="check-that-the-plugin-changes-claude’s-behavior">

315 Periksa bahwa plugin mengubah perilaku Claude

316</h3>

317 

318Plugin yang dimuat tanpa kesalahan masih dapat gagal mengarahkan Claude dengan cara yang Anda maksudkan. `claude plugin eval`, yang Anda jalankan di shell Anda, menjalankan kasus uji Anda dengan dan tanpa plugin dan mencetak perbedaannya. Lihat [Test plugins with evals](/docs/id/plugin-evals), dimulai dengan [Create your first eval suite](/docs/id/plugin-evals#create-your-first-eval-suite).

319 

320<h2 id="convert-an-existing-claude-setup">

321 Konversi setup `.claude/` yang sudah ada

322</h2>

323 

324Jika Anda sudah memiliki skills, agents, atau hooks di bawah direktori `.claude/` proyek, Anda dapat memindahkannya ke plugin tanpa menulis ulang.

325 

326Jalankan perintah dalam langkah-langkah ini dari root proyek, yang merupakan direktori yang berisi `.claude/`, karena jalur `cp` relatif terhadapnya.

327 

328<Steps>

329 <Step title="Buat struktur plugin">

330 Buat direktori plugin dan folder `.claude-plugin/` di sebelah `.claude/`. Anda dapat memindahkan plugin ke mana saja setelahnya.

331 

332 ```bash theme={null}

333 mkdir -p my-plugin/.claude-plugin

334 ```

335 

336 Buat `my-plugin/.claude-plugin/plugin.json`:

337 

338 ```json my-plugin/.claude-plugin/plugin.json theme={null}

339 {

340 "name": "my-plugin",

341 "description": "Migrated from standalone configuration",

342 "version": "1.0.0"

343 }

344 ```

345 </Step>

346 

347 <Step title="Salin file yang sudah ada">

348 Salin setiap direktori konfigurasi yang Anda miliki ke plugin root, dan lewati perintah untuk direktori apa pun yang tidak Anda miliki.

349 

350 ```bash theme={null}

351 cp -r .claude/commands my-plugin/

352 ```

353 

354 ```bash theme={null}

355 cp -r .claude/agents my-plugin/

356 ```

357 

358 ```bash theme={null}

359 cp -r .claude/skills my-plugin/

360 ```

361 

362 Jalankan `ls -a my-plugin` untuk mengonfirmasi bahwa setiap direktori yang Anda salin muncul di sebelah `.claude-plugin`.

363 </Step>

364 

365 <Step title="Pindahkan hooks Anda">

366 Jika Anda memiliki hooks di `.claude/settings.json` atau `.claude/settings.local.json`, buat direktori hooks:

367 

368 ```bash theme={null}

369 mkdir -p my-plugin/hooks

370 ```

371 

372 Buat `my-plugin/hooks/hooks.json` dan salin objek `hooks` dari file settings Anda ke dalamnya. Formatnya sama.

373 

374 Contoh ini menunjukkan bentuk dengan satu hook yang menjalankan linter pada setiap file yang ditulis atau diedit Claude. Ganti contoh dengan objek `hooks` Anda sendiri.

375 

376 ```json my-plugin/hooks/hooks.json theme={null}

377 {

378 "hooks": {

379 "PostToolUse": [

380 {

381 "matcher": "Write|Edit",

382 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

383 }

384 ]

385 }

386 }

387 ```

388 </Step>

389 

390 <Step title="Uji plugin yang dimigrasikan">

391 Muat plugin untuk sesi:

392 

393 ```bash theme={null}

394 claude --plugin-dir ./my-plugin

395 ```

396 

397 Periksa setiap komponen di bawah nama barunya:

398 

399 * **Skills**: jalankan `/my-plugin:deploy` untuk skill yang sebelumnya `/deploy`.

400 * **Subagents**: minta Claude untuk menggunakan agent `my-plugin:reviewer` untuk agent yang sebelumnya `reviewer`.

401 * **Hooks**: picu event yang cocok dengan setiap hook.

402 

403 Jika ada yang hilang, kerjakan [Test and debug](#test-and-debug).

404 </Step>

405</Steps>

406 

407Sementara yang asli masih di bawah `.claude/`, mereka tetap dimuat bersama salinan plugin:

408 

409* **Skills dan agents**: dua set tidak bertabrakan, karena skills dan agents plugin membawa prefix `my-plugin:`. `/deploy` dan `/my-plugin:deploy` keduanya bekerja, dan Claude melihat `reviewer` dan `my-plugin:reviewer` sebagai dua subagent.

410* **Hooks**: hooks tidak memiliki prefix, jadi hook yang ada di file settings Anda dan `hooks/hooks.json` berjalan dua kali setiap kali event-nya terjadi.

411 

412Setelah Anda mengonfirmasi plugin bekerja, hapus yang asli dari `.claude/` dan hapus objek `hooks` dari file settings Anda.

413 

414<h2 id="next-steps">

415 Langkah berikutnya

416</h2>

417 

418* [Plugin components](/docs/id/plugins/components): tambahkan agents, hooks, MCP servers, LSP servers, dan user configuration ke plugin Anda

419* [Test plugins with evals](/docs/id/plugin-evals): tulis kasus eval dan jalankan dengan `claude plugin eval` untuk memeriksa seberapa andal plugin memandu perilaku Claude

420* [Publish a plugin](/docs/id/plugins/publish): versi itu, masukkan ke marketplace, dan kirimkan ke community marketplace

421* [Plugins on claude.ai and in Cowork](https://claude.com/docs/plugins/overview): folder plugin yang sama dipasang di claude.ai dan di Cowork. Beberapa komponen hanya Claude Code

422* [Plugin manifest reference](/docs/id/plugins/manifest-reference): setiap field `plugin.json`, aturan path, dan direktori

423* [Skills](/docs/id/skills): tulis skills yang disediakan plugin Anda

424* [Anthropic's plugins in the claude-code repository](https://github.com/anthropics/claude-code/tree/main/plugins): contoh lengkap yang dikerjakan dari layout di halaman ini, seperti `feature-dev` dan `code-review`

plugins/create-marketplace.md +251 −0 created

Details

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 marketplace

6 

7> Bangun marketplace plugin dari file marketplace.json dan uji secara lokal sebelum Anda menghosting-nya.

8 

9Marketplace plugin adalah direktori atau repositori dengan file `.claude-plugin/marketplace.json` yang mencantumkan plugin Anda dan tempat mengambil masing-masing plugin. Anda mendorong direktori ke host git, dan siapa pun yang memiliki akses mendaftarkannya di Claude Code dengan satu perintah dan menginstal plugin Anda darinya.

10 

11Buat marketplace Anda sendiri ketika Anda ingin grup yang Anda pilih, seperti tim atau organisasi Anda, menginstal plugin Anda dan terus menerima pembaruan Anda dari katalog yang Anda kontrol. Repositori dapat bersifat pribadi, dapat mencantumkan sebanyak mungkin plugin yang Anda inginkan, dan administrator dapat [memerlukannya di setiap mesin](/docs/id/plugins/org).

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Berbagi satu plugin dengan beberapa orang**: kirimkan mereka direktori plugin atau `.zip` darinya. Lihat [Bagikan plugin tanpa marketplace](/docs/id/plugins/publish#share-a-plugin-without-a-marketplace).

17 * **Menawarkan plugin kepada semua orang**: kirimkan ke marketplace komunitas Anthropic. Lihat [Kirim ke marketplace komunitas](/docs/id/plugins/publish#submit-to-the-community-marketplace).

18 * **Menggunakan plugin sendiri**: muat dengan `--plugin-dir` atau simpan di direktori skills Anda. Lihat [Kembangkan tanpa marketplace](/docs/id/plugins/create#develop-without-a-marketplace).

19</Note>

20 

21Mulai dengan [Buat marketplace](#create-a-marketplace) untuk membangun satu di mesin Anda sendiri dan menginstal plugin darinya, kemudian [tambahkan entri plugin lainnya](#add-plugin-entries).

22 

23<h2 id="create-a-marketplace">

24 Buat marketplace

25</h2>

26 

27Langkah-langkah berikut membuat marketplace di mesin Anda, menambahkan plugin ke dalamnya, mendaftarkannya di Claude Code, dan menginstal plugin darinya. Itu adalah seluruh loop, dan itu adalah loop yang sama yang dilalui pengguna Anda setelah Anda menghosting marketplace di tempat yang dapat mereka jangkau. Jalankan setiap perintah di shell Anda, dari direktori tempat Anda ingin `my-marketplace/` dibuat.

28 

29Anda memerlukan plugin untuk dicantumkan. Contoh menggunakan `my-first-plugin` dari [Buat plugin pertama Anda](/docs/id/plugins/create#create-your-first-plugin), plugin dengan satu skill yang Anda jalankan sebagai `/my-first-plugin:hello`; bangun terlebih dahulu jika Anda belum memiliki plugin. Untuk menggunakan plugin Anda sendiri, gantikan direktorinya dan `name`-nya di mana pun langkah-langkah mengatakan `my-first-plugin`. Untuk apa yang dapat dimuat direktori plugin, lihat [penjelajah direktori plugin](/docs/id/plugins/components#explore-the-plugin-directory).

30 

31<Steps>

32 <Step title="Siapkan direktori marketplace">

33 Marketplace adalah direktori dengan file `.claude-plugin/marketplace.json`, ditambah plugin yang dicantumkannya. Buat direktori marketplace dan folder `.claude-plugin/`-nya, kemudian salin plugin Anda di bawah `plugins/`:

34 

35 ```bash theme={null}

36 mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins

37 cp -r my-first-plugin my-marketplace/plugins/

38 ```

39 

40 Periksa bahwa plugin valid di mana ia sekarang berada, sehingga kesalahan apa pun kemudian adalah tentang marketplace dan bukan plugin:

41 

42 ```bash theme={null}

43 claude plugin validate ./my-marketplace/plugins/my-first-plugin

44 ```

45 

46 Baris terakhir dari output membaca `✔ Validation passed`.

47 </Step>

48 

49 <Step title="Buat file marketplace">

50 Simpan `marketplace.json` di `my-marketplace/.claude-plugin/marketplace.json`. File memerlukan `name`, `owner`, dan array `plugins`.

51 

52 Setiap objek dalam `plugins` adalah entri plugin dan memerlukan `name` dan `source`. Tulis `source` entri sebagai jalur dari akar marketplace. Akar adalah `my-marketplace/`, direktori yang berisi `.claude-plugin/`.

53 

54 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

55 {

56 "name": "my-marketplace",

57 "description": "Plugins for my team",

58 "owner": {

59 "name": "Your Name"

60 },

61 "plugins": [

62 {

63 "name": "my-first-plugin",

64 "source": "./plugins/my-first-plugin",

65 "description": "A greeting plugin to learn the basics"

66 }

67 ]

68 }

69 ```

70 </Step>

71 

72 <Step title="Validasi marketplace">

73 Jalankan `claude plugin validate` pada direktori marketplace untuk memeriksa sintaks JSON, bidang yang diperlukan, dan setiap entri plugin dalam `.claude-plugin/marketplace.json`-nya.

74 

75 ```bash theme={null}

76 claude plugin validate ./my-marketplace

77 ```

78 

79 Untuk file seperti yang ditulis di langkah 2, baris terakhir dari output membaca `✔ Validation passed`.

80 </Step>

81 

82 <Step title="Tambahkan marketplace dan instal plugin">

83 Daftarkan direktori sebagai marketplace.

84 

85 ```bash theme={null}

86 claude plugin marketplace add ./my-marketplace

87 ```

88 

89 Perintah mencetak `✔ Successfully added marketplace: my-marketplace (declared in user settings)`, yang berarti marketplace dicatat dalam file pengaturan pengguna Anda.

90 

91 Instal plugin. ID instalasi adalah `name` entri, `@`, dan `name` marketplace.

92 

93 ```bash theme={null}

94 claude plugin install my-first-plugin@my-marketplace

95 ```

96 

97 Perintah mencetak `✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user)`.

98 

99 Di dalam sesi, `/plugin marketplace add ./my-marketplace` mendaftarkan marketplace dengan cara yang sama. `/plugin install my-first-plugin@my-marketplace` membuka detail plugin di panel `/plugin`, tempat Anda menginstalnya. Untuk alur itu, lihat [Instal dan kelola plugin](/docs/id/plugins/install).

100 </Step>

101 

102 <Step title="Konfirmasi plugin dimuat">

103 Daftar plugin yang diinstal.

104 

105 ```bash theme={null}

106 claude plugin list

107 ```

108 

109 Output mencantumkan `my-first-plugin@my-marketplace` dengan `Status: ✔ enabled`.

110 

111 Untuk melihat apa yang dimuat plugin, tampilkan detailnya.

112 

113 ```bash theme={null}

114 claude plugin details my-first-plugin

115 ```

116 

117 Bagian `Component inventory` membaca `Skills (1) hello`.

118 

119 Untuk menjalankan skill, mulai sesi dan masukkan `/my-first-plugin:hello`. Claude menyapa Anda. Perintah memiliki nama plugin sebagai awalan, seperti halnya nama skill plugin apa pun.

120 </Step>

121</Steps>

122 

123<h2 id="add-plugin-entries">

124 Tambahkan entri plugin

125</h2>

126 

127Setiap plugin yang Anda distribusikan adalah satu objek dalam array `plugins` dari `marketplace.json`. Untuk menambahkan plugin kedua, tambahkan objek kedua. Bidang-bidang ini mencakup sebagian besar entri:

128 

129* `name`: pengidentifikasi yang diketik orang sebelum `@` saat mereka menginstal. Tidak dapat berisi spasi.

130* `source`: tempat Claude Code mengambil plugin. Tulis string jalur relatif untuk plugin di dalam direktori marketplace, seperti dalam [panduan walkthrough](#create-a-marketplace), atau objek sumber untuk plugin di luar. Lihat [Pilih sumber plugin](#choose-a-plugin-source).

131* `description`: baris yang dilihat orang di sebelah plugin saat mereka menjelajahi marketplace Anda di `/plugin`.

132 

133Untuk daftar bidang lengkap, lihat [Entri plugin](/docs/id/plugins/marketplace-reference#plugin-entries).

134 

135Entri juga dapat menetapkan bidang [`plugin.json`](/docs/id/plugins/manifest-reference) apa pun. Untuk kapan bidang `plugin.json` entri berlaku untuk plugin yang memiliki `plugin.json`-nya sendiri, lihat [Entri dan plugin.json](/docs/id/plugins/marketplace-reference#entry-and-plugin-json).

136 

137<h2 id="rules-for-plugin-entries">

138 Aturan untuk entri plugin

139</h2>

140 

141Sebagian besar instalasi yang gagal dari marketplace baru berasal dari jalur relatif yang ditulis dari direktori yang salah, atau dari nama entri yang berbeda dari `name` dalam `plugin.json` plugin.

142 

143<h3 id="write-relative-paths-from-the-marketplace-root">

144 Tulis jalur relatif dari akar marketplace

145</h3>

146 

147Akar marketplace adalah direktori yang berisi `.claude-plugin/`. Dalam [panduan walkthrough](#create-a-marketplace), itu adalah `my-marketplace/`, jadi `source` entri adalah `"./plugins/my-first-plugin"`. Jalur tidak dimulai di dalam `.claude-plugin/`, jadi jangan gunakan `..` untuk meninggalkannya.

148 

149Jalur dengan `..` dan jalur ke direktori yang hilang gagal pada perintah yang berbeda:

150 

151* **Jalur dengan `..`**: `claude plugin validate` melaporkan entri sebagai tidak valid. Pesan dimulai dengan `Path contains "..": ./../plugins/my-first-plugin`.

152* **Jalur ke direktori yang tidak ada**: `claude plugin validate` lulus. `claude plugin install` gagal dengan `Source path does not exist: <path>`, dan `<path>` adalah lokasi absolut yang diperiksa Claude Code.

153 

154<h3 id="keep-the-entry-name-and-the-manifest-name-the-same">

155 Jaga nama entri dan nama manifest tetap sama

156</h3>

157 

158Plugin marketplace memiliki `name` entri dalam `marketplace.json` dan `name` dalam `plugin.json`-nya sendiri, disebut nama manifest. Setiap nama muncul di tempat yang berbeda:

159 

160* **Nama entri**: ID instalasi, `<entry-name>@<marketplace>`. Ini adalah apa yang diketik orang untuk menginstal, apa yang ditampilkan `claude plugin list`, dan kunci yang ditulis Claude Code di bawah [`enabledPlugins`](/docs/id/settings-reference#enabledplugins) dalam file pengaturan mereka.

161* **Nama manifest**: awalan pada skill plugin, dan nama yang diambil `claude plugin details`.

162 

163Ketika dua nama berbeda dan seseorang menginstal dengan nama manifest, Claude Code melaporkan `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Jaga dua nama tetap sama. Untuk lebih lanjut tentang bagaimana Claude Code menggunakan dua nama, lihat [Referensi pemuatan plugin](/docs/id/plugins/loading#find-where-a-plugin-came-from).

164 

165<h2 id="choose-a-plugin-source">

166 Pilih sumber plugin

167</h2>

168 

169Setiap entri plugin dalam `marketplace.json` memiliki `source` yang memberi tahu Claude Code tempat mengambil plugin itu. Pilih sumber berdasarkan tempat file plugin disimpan. Tabel mencantumkan sumber yang paling sering digunakan pemilik marketplace.

170 

171| Sumber | Gunakan ketika | Nilai `source` minimal |

172| :------------ | :------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |

173| Jalur relatif | File plugin berada di dalam direktori marketplace itu sendiri | `"./plugins/my-first-plugin"` |

174| `github` | Plugin adalah repositori GitHub sendiri | `{ "source": "github", "repo": "your-org/my-first-plugin" }` |

175| `git-subdir` | Plugin adalah subdirektori dari beberapa repositori lain, seperti monorepo | `{ "source": "git-subdir", "url": "your-org/monorepo", "path": "tools/my-first-plugin" }` |

176 

177Dalam sumber `git-subdir`, `url` mengambil URL git atau shorthand GitHub `owner/repo`.

178 

179Plugin juga dapat berasal dari salah satu jenis sumber ini:

180 

181* `url`: repositori git berdasarkan URL, di host apa pun

182* `archive`: file zip yang diunduh melalui HTTPS

183* `npm`: paket npm

184* `command`: direktori yang dihasilkan dengan menjalankan perintah di mesin tempat plugin diinstal

185 

186Untuk bidang setiap jenis sumber, dan untuk menyematkan sumber berbasis git ke `ref` atau `sha`, lihat [Sumber plugin](/docs/id/plugins/marketplace-reference#plugin-sources).

187 

188<h2 id="validate-and-test">

189 Validasi dan uji

190</h2>

191 

192Saat Anda menambahkan plugin, jalankan `claude plugin validate ./my-marketplace` di shell Anda setelah setiap edit, dan instal dari marketplace di mesin Anda sendiri sebelum Anda membagikannya. Validasi dan instalasi menangkap masalah yang berbeda.

193 

194<h3 id="problems-that-validation-reports">

195 Masalah yang dilaporkan validasi

196</h3>

197 

198`claude plugin validate` hanya membaca file di dalam direktori marketplace. Ini melaporkan:

199 

200* Kesalahan sintaks JSON, sebagai `json: Invalid JSON syntax: <reason>`

201* Bidang yang diperlukan hilang, seperti `owner: Invalid input`

202* Nama marketplace dengan spasi, karakter non-ASCII, atau bentuk yang meniru marketplace Anthropic resmi, seperti `claude-official`

203* `source` relatif yang berisi `..`

204* Bidang yang tidak dikenal di tingkat atas atau dalam entri plugin, sebagai peringatan

205* Masalah dalam `plugin.json` dari setiap plugin jalur-relatif, sebagai `plugins[N] plugin.json → <field>: <message>`

206 

207Untuk setiap pesan yang dapat dicetak `validate`, lihat [Pesan validasi](/docs/id/plugins/marketplace-reference#validation-messages). Untuk flag dan kode keluarnya, lihat [`plugin validate`](/docs/id/plugins/cli-reference#plugin-validate).

208 

209<h3 id="problems-that-surface-when-you-add-or-install">

210 Masalah yang muncul saat Anda menambahkan atau menginstal

211</h3>

212 

213Masalah yang tidak dilaporkan `claude plugin validate` muncul saat Anda menambahkan marketplace atau menginstal darinya:

214 

215* **Saat Anda menambahkan marketplace**: [nama marketplace resmi](/docs/id/plugins/marketplace-reference#reserved-names) yang tepat, seperti `claude-plugins-official`, lulus validasi. Saat Anda menambahkan marketplace dengan salah satu nama tersebut, Claude Code menolaknya dengan pesan yang dimulai dengan `The name '<name>' is reserved for official Anthropic marketplaces`.

216* **Saat Anda menginstal plugin**:

217 * Claude Code pertama kali mengambil sumber `github`, `git-subdir`, atau sumber jarak jauh lainnya saat Anda menginstal plugin, jadi `repo` atau `path` yang salah muncul kemudian.

218 * `source` relatif yang direktorinya tidak ada juga gagal saat instalasi, dengan `Source path does not exist: <path>`.

219 

220<h3 id="test-an-edit-to-a-plugin">

221 Uji edit ke plugin

222</h3>

223 

224Dalam [panduan walkthrough](#create-a-marketplace), Anda menambahkan `my-marketplace` dari direktori lokal dengan `source` jalur-relatif. Dengan pengaturan itu, Claude Code membaca file plugin langsung dari `my-marketplace/plugins/`. Edit Anda berlaku saat mulai sesi berikutnya atau saat Anda menjalankan `/reload-plugins` dalam sesi, tanpa perubahan pada `version` plugin.

225 

226Orang yang menginstal dari marketplace yang dihosting Anda mendapatkan salinan dalam cache plugin sebagai gantinya. Untuk bagaimana mereka menerima versi baru, lihat [Jaga pengguna tetap terbaru](/docs/id/plugins/host-marketplace#keep-users-up-to-date).

227 

228<h3 id="remove-the-marketplace-to-start-over">

229 Hapus marketplace untuk memulai lagi

230</h3>

231 

232Untuk menghapus semuanya dan memulai lagi, jalankan `claude plugin marketplace remove my-marketplace` di shell Anda. Perintah menghapus marketplace dan mencopot plugin-nya.

233 

234<h2 id="host-your-marketplace">

235 Hosting marketplace Anda

236</h2>

237 

238Setelah Anda dapat menginstal plugin dari marketplace di mesin Anda sendiri, seperti dalam [Buat marketplace](#create-a-marketplace), dorong direktori marketplace ke host git.

239 

240Rekan tim Anda kemudian menjalankan `claude plugin marketplace add <owner>/<repo>` di shell mereka untuk repositori GitHub, atau perintah yang sama dengan URL repositori. Mereka kemudian menginstal plugin berdasarkan nama seperti dalam [panduan walkthrough](#create-a-marketplace).

241 

242Untuk akses repositori pribadi, pembaruan, versioning, dan penggantian nama atau penghapusan entri, lihat [Host dan pertahankan marketplace](/docs/id/plugins/host-marketplace).

243 

244<h2 id="next-steps">

245 Langkah berikutnya

246</h2>

247 

248* [Host dan pertahankan marketplace](/docs/id/plugins/host-marketplace): pilih host, jaga pengguna tetap terbaru, dan ganti nama atau hapus plugin dengan aman

249* [Referensi marketplace](/docs/id/plugins/marketplace-reference): bidang `marketplace.json` dan jenis sumber

250* [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org): perlukan marketplace dan plugin-nya di setiap mesin

251* [Sarankan plugin berdasarkan relevansi](/docs/id/plugins/relevance): buat Claude Code menyarankan plugin dari marketplace Anda saat sesi cocok

plugins/dependencies.md +245 −0 created

Details

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# Dependensi plugin

6 

7> Deklarasikan plugin yang plugin Anda bergantung padanya, dengan rentang versi seperti ^1.2, dan lihat bagaimana Claude Code menginstal, menyelesaikan, dan memangkas dependensi tersebut.

8 

9Dependensi plugin adalah plugin lain yang plugin Anda andalkan, seperti plugin yang memanggil MCP server atau skill-nya. Setiap dependensi melacak versi terbaru yang disediakan marketplace-nya kecuali Anda mendeklarasikan batasan versi, rentang semantic-version seperti `^2.0` atau `~2.1.0` yang telah Anda uji.

10 

11Halaman ini adalah untuk penulis plugin yang mendeklarasikan dependensi dalam `plugin.json` dan untuk pengelola marketplace yang menandai rilis.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Menginstal plugin yang memiliki dependensi**: lihat [Kelola plugin yang diinstal](/docs/id/plugins/install#manage-installed-plugins)

17 * **Membaca kesalahan dependensi**: lihat [Kesalahan dependensi](/docs/id/plugins/troubleshooting#dependency-errors)

18 * **Mendeklarasikan paket npm dan Bun yang kode plugin Anda sendiri butuhkan**: lihat [Dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies)

19</Note>

20 

21Untuk menambahkan batasan, mulai dari [Deklarasikan dependensi dengan batasan versi](#declare-a-dependency-with-a-version-constraint). Jika Anda mengelola plugin yang bergantung padanya oleh orang lain, [tandai rilis Anda](#tag-plugin-releases-for-version-resolution) sehingga batasan mereka dapat diselesaikan.

22 

23<h2 id="declare-dependencies">

24 Deklarasikan dependensi

25</h2>

26 

27<span id="decide-whether-to-constrain-dependency-versions" />Tanpa batasan versi, dependensi bergerak ke setiap rilis baru yang marketplace-nya terbitkan saat pengguna memperbarui. Jika rilis itu mengganti nama alat MCP yang plugin Anda panggil, plugin Anda rusak untuk semua orang yang memperbarui.

28 

29Dengan batasan seperti `~2.1.0` pada dependensi dari sumber yang didukung git, pengguna yang memiliki plugin Anda terinstal terus menerima patch `2.1.x` dari dependensi dan tidak pernah pindah ke `2.2`. Untuk meningkatkan sesuai jadwal Anda sendiri, uji terhadap rilis yang lebih baru dan kemudian terbitkan versi baru plugin Anda dengan batasan yang lebih luas.

30 

31<h3 id="declare-a-dependency-with-a-version-constraint">

32 Deklarasikan dependensi dengan batasan versi

33</h3>

34 

35Daftar dependensi dalam array `dependencies` dari `.claude-plugin/plugin.json` plugin Anda. Manifes berikut mendeklarasikan satu dependensi tanpa versi dan satu dependensi terbatas:

36 

37```json .claude-plugin/plugin.json theme={null}

38{

39 "name": "deploy-kit",

40 "version": "3.1.0",

41 "dependencies": [

42 "audit-logger",

43 { "name": "secrets-vault", "version": "~2.1.0" }

44 ]

45}

46```

47 

48Entri dapat berupa string: nama plugin saja, seperti `"audit-logger"` dalam manifes ini, atau `"name@marketplace"` untuk menyelesaikannya di marketplace lain. Dengan string kosong, plugin Anda bergantung pada versi apa pun yang disediakan marketplace plugin tersebut.

49 

50Untuk menetapkan batasan versi, gunakan objek dengan bidang-bidang ini, masing-masing berupa string:

51 

52| Bidang | Deskripsi |

53| :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

54| `name` | Nama plugin dependensi, seperti yang muncul dalam entri marketplace-nya. Claude Code mencarinya di marketplace yang sama dengan plugin yang mendeklarasikan kecuali Anda menetapkan `marketplace`. Diperlukan. |

55| `version` | Rentang [semantic-version](https://github.com/npm/node-semver#ranges) seperti `~2.1.0`, `^2.0`, `>=1.4`, atau `=2.1.0`. Dependensi menginstal pada tag git tertinggi yang memenuhi rentang ini, jadi pengelola dependensi harus [menandai rilis](#tag-plugin-releases-for-version-resolution). |

56| `marketplace` | Marketplace berbeda untuk menyelesaikan `name` di dalamnya. Daftar izin mengontrol dependensi lintas-marketplace, dijelaskan dalam [Bergantung pada plugin dari marketplace lain](#depend-on-a-plugin-from-another-marketplace). |

57 

58Rentang tidak cocok dengan versi pra-rilis seperti `2.0.0-beta.1` kecuali Anda memilih dengan akhiran pra-rilis seperti `^2.0.0-0`.

59 

60<h3 id="bundle-plugins-for-a-team">

61 Bundel plugin untuk tim

62</h3>

63 

64Untuk memungkinkan insinyur menginstal set plugin yang dikurasi dengan satu perintah, terbitkan plugin yang manifesnya berisi `name` dan array `dependencies`. Manifes plugin hanya membutuhkan `name`, jadi ini adalah plugin yang valid, dan menginstalnya menginstal setiap dependensi.

65 

66Misalnya, tim platform dapat menerbitkan bundel khusus peran di marketplace internal sehingga insinyur menjalankan satu `claude plugin install` alih-alih menginstal setiap plugin secara terpisah:

67 

68```json .claude-plugin/plugin.json theme={null}

69{

70 "name": "backend-standard",

71 "version": "1.0.0",

72 "description": "Standard plugin set for backend engineers",

73 "dependencies": [

74 "secrets-vault",

75 "deploy-kit",

76 { "name": "db-migrate", "version": "^3.0" },

77 "oncall-runbook"

78 ]

79}

80```

81 

82Untuk menambahkan plugin ke set standar nanti, terbitkan versi `backend-standard` baru dengan dependensi tambahan. Ketika marketplace tidak [auto-update secara default](/docs/id/plugins/loading#which-marketplaces-and-plugins-auto-update), insinyur baik mengaktifkan auto-update untuk marketplace atau memperbarui secara manual:

83 

84* **Aktifkan auto-update untuk marketplace**: pembaruan auto-update berikutnya memindahkan bundel ke versi baru dan menginstal dependensi apa pun yang ditambahkannya.

85* **Perbarui secara manual**: jalankan `claude plugin update backend-standard` di shell, kemudian `/reload-plugins` dalam sesi terbuka untuk menginstal dependensi yang baru ditambahkan.

86 

87Untuk langkah-langkah sisi insinyur, lihat [Jaga plugin tetap diperbarui](/docs/id/plugins/install#keep-plugins-updated).

88 

89Untuk menerapkan bundel ke semua orang dalam organisasi, administrator menambahkannya ke `enabledPlugins` dalam pengaturan terkelola. Lihat [Pra-instal dan butuhkan plugin](/docs/id/plugins/org#pre-install-and-require-plugins).

90 

91<h3 id="depend-on-a-plugin-from-another-marketplace">

92 Bergantung pada plugin dari marketplace lain

93</h3>

94 

95Secara default, Claude Code tidak menginstal dependensi dari marketplace berbeda dari marketplace plugin yang mendeklarasikan sendiri, kecuali pengguna sudah memiliki dependensi itu terinstal dan diaktifkan pada cakupan yang sama. Default ini mencegah satu marketplace secara diam-diam menginstal plugin dari sumber yang belum ditinjau pengguna.

96 

97Untuk memungkinkan instalasi, tambahkan nama marketplace target ke `allowCrossMarketplaceDependenciesOn` dalam `marketplace.json` marketplace root. Marketplace root adalah yang menghosting plugin yang pengguna instal. Hanya daftar izin marketplace root yang berlaku.

98 

99`marketplace.json` berikut memungkinkan `deploy-kit` bergantung pada plugin dari `your-shared-marketplace`:

100 

101```json .claude-plugin/marketplace.json theme={null}

102{

103 "name": "your-marketplace",

104 "owner": { "name": "Your Org" },

105 "allowCrossMarketplaceDependenciesOn": ["your-shared-marketplace"],

106 "plugins": [

107 {

108 "name": "deploy-kit",

109 "source": "./deploy-kit",

110 "dependencies": [

111 { "name": "audit-logger", "marketplace": "your-shared-marketplace" }

112 ]

113 }

114 ]

115}

116```

117 

118Jika `allowCrossMarketplaceDependenciesOn` hilang atau tidak menyertakan marketplace target, Claude Code tidak menginstal dependensi. Ketika dependensi dideklarasikan dalam entri marketplace, instalasi itu sendiri ditolak dengan pesan yang dimulai `Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist` dan menyebutkan bidang yang akan ditetapkan. Ketika dideklarasikan dalam `plugin.json`, instalasi selesai tanpa dependensi dan plugin Anda kemudian gagal dimuat.

119 

120Pemeriksaan daftar izin tidak berlaku untuk dependensi yang sudah diaktifkan. Jika pengguna menginstal `audit-logger` dari `your-shared-marketplace` sendiri terlebih dahulu, pada cakupan yang sama, `deploy-kit` kemudian menginstal tanpa perubahan apa pun pada daftar izin.

121 

122<h3 id="test-a-plugin-and-its-dependency-locally">

123 Uji plugin dan dependensinya secara lokal

124</h3>

125 

126Jika Anda mengembangkan plugin dan plugin yang bergantung padanya pada saat yang sama, mulai Claude Code dari shell Anda dan muat keduanya dengan [`--plugin-dir`](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session):

127 

128```bash theme={null}

129claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin

130```

131 

132Salinan lokal dependensi memenuhi entri dependensi plugin Anda, jadi Anda tidak perlu menginstal dependensi dari marketplace-nya.

133 

134* **Tidak ada `version` yang diperlukan**: `plugin.json` lokal juga tidak perlu `version`, karena [batasan versi](#declare-a-dependency-with-a-version-constraint) tidak diperiksa terhadap salinan lokal.

135* **Entri yang menyebutkan marketplace**: entri yang menyebutkan marketplace juga cocok dengan salinan lokal pada Claude Code v2.1.242 atau lebih baru.

136 

137Sampai Anda menginstal dependensi dari marketplace-nya, plugin Anda berhenti dimuat setiap kali salinan lokal dinonaktifkan atau tidak ada:

138 

139* **Anda menonaktifkan salinan lokal**: plugin Anda dinonaktifkan pada pemuatan plugin berikutnya, dengan kesalahan yang berakhir `is disabled — enable it or remove the dependency`. Ketika kesalahan menyebutkan dependensi sebagai `<name>@inline`, pengidentifikasi itu merujuk pada salinan `--plugin-dir`.

140* **Anda memulai sesi tanpa flag `--plugin-dir` dependensi**: kesalahan melaporkan dependensi sebagai tidak terinstal. Lewatkan flag lagi, atau instal dependensi dari marketplace-nya.

141 

142Ketika kedua plugin berada dalam satu folder induk, Anda dapat meneruskan folder itu ke `--plugin-dir` sekali. 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.

143 

144<h2 id="tag-plugin-releases-for-version-resolution">

145 Rilis plugin yang bergantung pada orang lain

146</h2>

147 

148Jika Anda mengelola plugin yang plugin lain bergantung padanya dengan batasan versi, tandai rilis-nya sehingga batasan itu dapat diselesaikan. Batasan diselesaikan terhadap tag git pada repositori yang menghosting plugin. Tandai repositori yang [sumber plugin](/docs/id/plugins/marketplace-reference#plugin-sources) plugin dalam `marketplace.json` tunjuk:

149 

150* **Sumber `github`, `url`, atau `git-subdir`**: repositori plugin itu sendiri, jadi penulis plugin membuat tag

151* **Jalur relatif seperti `./plugins/secrets-vault`**: repositori marketplace, jadi pengelola marketplace membuat tag

152 

153<h3 id="create-a-release-tag">

154 Buat tag rilis

155</h3>

156 

157Tandai setiap rilis sebagai `<plugin-name>--v<version>`, di mana `<version>` cocok dengan bidang `version` dalam `plugin.json` commit itu. Awalan plugin-name memungkinkan satu repositori marketplace menghosting beberapa plugin dengan riwayat versi independen.

158 

159Buat tag dari direktori plugin, dengan remote `origin` yang dikonfigurasi untuk menerima tag yang didorong, menggunakan [`claude plugin tag`](/docs/id/plugins/cli-reference#plugin-tag):

160 

161```bash theme={null}

162claude plugin tag --push

163```

164 

165Perintah membangun nama tag dari manifes plugin. Sebelum membuat tag, ia menjalankan pemeriksaan ini:

166 

167* Memvalidasi plugin

168* Memeriksa bahwa `plugin.json` dan entri marketplace setuju pada versi, ketika direktori plugin berada di dalam checkout marketplace

169* Memerlukan pohon kerja yang bersih di bawah direktori plugin

170* Menolak jika tag sudah ada

171 

172Jalankan yang berhasil mencetak `Created tag secrets-vault--v2.1.0`. Dengan `--push`, ia juga mencetak `Pushed to origin`. Tanpa `--push`, ia mencetak perintah `git push` untuk dijalankan sendiri.

173 

174Lewatkan `--dry-run` untuk melihat rencana tanpa membuat apa pun.

175 

176Referensi [`claude plugin tag`](/docs/id/plugins/cli-reference#plugin-tag) mencantumkan flag yang tersisa.

177 

178Anda juga dapat menjalankan `git tag secrets-vault--v2.1.0` secara langsung, selama Anda menjaga `version` dalam `plugin.json` dan dalam entri marketplace tetap sinkron sendiri.

179 

180<h3 id="constrain-a-dependency-that-has-a-non-git-source">

181 Batasi dependensi yang memiliki sumber non-git

182</h3>

183 

184Resolusi berbasis tag hanya berlaku untuk sumber yang didukung git. Untuk dependensi dengan sumber plugin `npm`, `archive`, atau `command` [](/docs/id/plugins/marketplace-reference#plugin-sources), batasan tidak mengontrol versi mana yang diambil. Ini masih diperiksa ketika plugin dimuat, dan plugin dependen dinonaktifkan jika versi yang terinstal tidak memenuhinya.

185 

186Untuk sumber `npm`, `archive`, dan `command`, versi yang diperiksa adalah `version` dalam `plugin.json` dependensi. Tetapkan satu di sana sebelum Anda membatasi dependensi itu, karena `plugin.json` yang tidak menetapkan versi tidak memenuhi batasan apa pun.

187 

188Claude Code tidak pernah menginstal dependensi dengan sumber `command` itu sendiri, jadi pengguna [menginstalnya terlebih dahulu](/docs/id/plugins/marketplace-reference#command-plugin-source). Ini juga tidak pernah menjalankan [`headersHelper`](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) dependensi, jadi pengguna juga menginstal dependensi yang entri marketplace-nya menetapkan satu sebelum mereka menginstal plugin Anda.

189 

190Selain `claude plugin install`, operasi ini juga menginstal dependensi yang dideklarasikan yang hilang, dan batasan `command` dan `headersHelper` berlaku untuk mereka juga:

191 

192* `/reload-plugins`

193* Auto-update dari marketplace plugin dependen

194* Menjalankan kembali `claude plugin install` pada plugin dependen

195* `claude plugin marketplace add`

196 

197<h2 id="how-dependencies-behave-for-your-users">

198 Bagaimana dependensi berperilaku untuk pengguna Anda

199</h2>

200 

201Bagian-bagian ini menjelaskan bagaimana Claude Code menyelesaikan, memeriksa, dan menggabungkan batasan yang Anda deklarasikan setelah plugin Anda diinstal bersama yang lain.

202 

203<h3 id="how-a-constraint-resolves-against-tags">

204 Bagaimana batasan diselesaikan terhadap tag

205</h3>

206 

207Ketika pengguna menginstal plugin yang mendeklarasikan `{ "name": "secrets-vault", "version": "~2.1.0" }`, dependensi menginstal dari tag `secrets-vault--v` tertinggi yang memenuhi `~2.1.0` pada repositori yang menghosting `secrets-vault`. Ketika tidak ada tag yang memenuhi rentang, instalasi baik gagal atau menggunakan salinan marketplace saat ini:

208 

209* **Plugin dengan repositori sendiri**: instalasi gagal dengan pesan yang berisi `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Plugin yang direferensikan oleh jalur relatif**: instalasi menggunakan salinan marketplace saat ini sebagai gantinya, dan batasan diperiksa ketika plugin dimuat. Jika salinan itu berada di luar rentang, plugin dependen tetap dinonaktifkan dan `claude plugin list` menunjukkan `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 

212Untuk plugin yang direferensikan marketplace oleh jalur folder lokal, marketplace yang Anda tambahkan sebagai jalur folder lokal juga menyelesaikan batasan terhadap tag git folder itu, ketika folder adalah repositori git. Ini memerlukan Claude Code v2.1.196 atau lebih baru. Folder lokal yang bukan repositori git tidak memiliki tag, jadi Claude Code menginstal dependensi dari konten folder saat ini sebagai gantinya.

213 

214<h3 id="confirm-the-resolved-version">

215 Konfirmasi versi yang diselesaikan

216</h3>

217 

218Untuk mengonfirmasi versi mana yang diselesaikan batasan, jalankan `claude plugin list` di shell Anda. Dependensi yang diselesaikan tag menunjukkan versinya dengan akhiran commit 12 karakter, seperti `2.1.0-8713c5b11005`.

219 

220Pemeriksaan batasan menggunakan versi tag daripada `version` dalam `plugin.json`, bahkan jika `plugin.json` pada commit itu tertinggal.

221 

222Jika Anda memaksa-pindahkan tag ke commit berbeda, instalasi berikutnya mengambil konten commit itu alih-alih menggunakan kembali salinan cache yang basi. Lihat [Versi dan pembaruan](/docs/id/plugins/loading#versions-and-updates) untuk bagaimana versi plugin menjadi kunci cache-nya.

223 

224<h3 id="combine-constraints-from-several-plugins">

225 Gabungkan batasan dari beberapa plugin

226</h3>

227 

228Ketika beberapa plugin yang terinstal membatasi dependensi yang sama, dependensi diselesaikan ke versi tertinggi yang memenuhi semua rentang mereka. Kombinasi umum diselesaikan seperti ini:

229 

230| Plugin A memerlukan | Plugin B memerlukan | Hasil |

231| :------------------ | :------------------ | :------------------------------------------------------------------------------------------------------------------------------- |

232| `^2.0` | `>=2.1` | Satu instalasi pada tag `2.x` tertinggi pada atau di atas `2.1.0`. Kedua plugin dimuat. |

233| `~2.1` | `~3.0` | Menginstal plugin B gagal dengan pesan `has conflicting version requirements`. Plugin A dan dependensi tetap seperti sebelumnya. |

234| `=2.1.0` | tidak ada | Dependensi tetap pada `2.1.0`. Auto-update melewati versi yang lebih baru saat plugin A terinstal. |

235 

236Auto-update mengambil dependensi terbatas pada tag git tertinggi yang memenuhi rentang setiap plugin yang terinstal, daripada pada versi terbaru marketplace. Jika rentang plugin yang terinstal tidak tumpang tindih, auto-update meninggalkan dependensi itu pada versi saat ini, dan tab **Errors** `/plugin` menunjukkan entri yang menyebutkan plugin yang membatasi. Jika mereka tumpang tindih tetapi tidak ada tag yang jatuh dalam rentang, auto-update mengambil salinan marketplace saat ini dan melewati pembaruan ketika `version` salinan itu jatuh di luar rentang plugin yang terinstal apa pun.

237 

238Ketika pengguna mencopot plugin terakhir yang membatasi dependensi, dependensi tidak lagi dibatasi ke rentang versi dan melanjutkan pelacakan entri marketplace-nya pada pembaruan berikutnya.

239 

240<h2 id="see-also">

241 Lihat juga

242</h2>

243 

244* [`claude plugin prune`](/docs/id/plugins/cli-reference#plugin-prune): hapus dependensi yang diinstal otomatis yang tidak diperlukan plugin lagi

245* [Hosting marketplace](/docs/id/plugins/host-marketplace): saluran rilis dan merekomendasikan plugin lain

plugins/host-marketplace.md +458 −0 created

Details

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# Host dan kelola marketplace

6 

7> Publikasikan marketplace plugin tempat pengguna dapat mengaksesnya, berikan akses ke marketplace pribadi, dan rilis pembaruan serta perubahan nama tanpa merusak instalasi.

8 

9Menghost marketplace berarti menempatkan katalog `marketplace.json` Anda di tempat di mana orang lain dapat menambahkannya dengan `/plugin marketplace add`, memasang plugin-nya, dan terus menerima perubahan Anda setelah Anda push.

10 

11Halaman ini untuk orang yang mengoperasikan marketplace.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Anda belum menulis file katalog**: mulai dengan [Create a marketplace](/docs/id/plugins/create-marketplace)

17 * **Anda adalah admin yang memerlukan, membatasi, atau pra-memasang marketplace di seluruh mesin organisasi Anda**: baca [Manage plugins for your organization](/docs/id/plugins/org)

18</Note>

19 

20Mulai dengan [Host your marketplace](#host-your-marketplace) untuk memilih host dan perintah yang dijalankan pengguna Anda. Baca [Keep users up to date](#keep-users-up-to-date) sebelum rilis pertama Anda. Baca [Rename or remove a plugin](#rename-or-remove-a-plugin) sebelum Anda mengubah `name` plugin.

21 

22<h2 id="host-your-marketplace">

23 Host your marketplace

24</h2>

25 

26Anda dapat menghost marketplace di GitHub, di host git lain, sebagai URL `marketplace.json` yang dihosting, atau di direktori pada filesystem bersama. Kirim perintah add kepada pengguna Anda untuk host Anda dan beri tahu mereka apa yang mereka butuhkan di mesin mereka:

27 

28| Host | Pengguna jalankan, dalam sesi Claude Code | Apa yang pengguna butuhkan |

29| :-------------------------------------------------------------- | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |

30| GitHub | `/plugin marketplace add your-org/your-marketplace` | `git`, dan untuk repositori pribadi akses yang dijelaskan di bawah [Grant access to a private marketplace](#grant-access-to-a-private-marketplace) |

31| GitLab, Bitbucket, GitHub Enterprise Server, atau host git lain | `/plugin marketplace add https://gitlab.example.com/team/plugins.git` | `git`, dan akses ke host dari mesin mereka. Kirim URL lengkap, karena shorthand `owner/repo` selalu berarti github.com |

32| URL `marketplace.json` yang dihosting | `/plugin marketplace add https://plugins.example.com/marketplace.json` | Akses HTTPS ke URL. Pengguna tidak memerlukan `git` untuk katalog itu sendiri |

33| Direktori pada filesystem bersama | `/plugin marketplace add /Volumes/shared/claude-plugins` | Akses baca ke path |

34 

35Untuk mengunci branch atau tag dari marketplace GitHub atau git-URL, beri tahu pengguna untuk menambahkan `#<ref>`, seperti dalam `your-org/your-marketplace#stable`. [Plugin commands reference](/docs/id/plugins/cli-reference#plugin-marketplace-add) mencantumkan setiap bentuk yang diterima perintah.

36 

37Penambahan yang berhasil mencetak `Successfully added marketplace: your-marketplace`. Claude Code mengambil nama itu dari field `name` di `marketplace.json` Anda, bukan dari nama repositori.

38 

39Pengguna kemudian memasang plugin berdasarkan `name` entri dan `name` marketplace, seperti dalam `/plugin install code-formatter@your-marketplace`.

40 

41<h3 id="register-the-marketplace-for-everyone-in-a-repository">

42 Register the marketplace for everyone in a repository

43</h3>

44 

45Untuk berbagi marketplace dengan semua orang yang bekerja di satu repositori, jalankan `claude plugin marketplace add your-org/your-marketplace --scope project` di sana sekali dari shell Anda dan commit `.claude/settings.json` yang ditulis. Claude Code kemudian mendaftarkan marketplace untuk setiap rekan kerja yang [trusts the folder](/docs/id/plugins/org#require-plugins-per-repository).

46 

47<h3 id="avoid-relative-path-entries-in-a-url-hosted-marketplace">

48 Avoid relative-path entries in a URL-hosted marketplace

49</h3>

50 

51Ketika pengguna menambahkan marketplace Anda sebagai URL `marketplace.json` bare, Claude Code hanya mengunduh file itu. Entri di array `plugins` Anda yang `source`-nya adalah path relatif seperti `./plugins/formatter` kemudian gagal saat instalasi dengan [`its marketplace entry path does not stay inside the marketplace directory`](/docs/id/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces). Berikan setiap entri source yang dapat diambil sendiri, seperti repositori `github` atau URL `archive`, atau host marketplace di repositori git sehingga Claude Code mengkloning seluruh pohon.

52 

53<h3 id="edit-plugins-in-place-on-a-shared-directory">

54 Edit plugins in place on a shared directory

55</h3>

56 

57Ketika pengguna menambahkan marketplace Anda dari direktori bersama, Claude Code membaca plugin dengan source path relatif langsung dari direktori itu alih-alih menyalinnya. Pengguna melihat edit Anda ketika mereka memulai sesi berikutnya atau menjalankan `/reload-plugins`, tanpa langkah pembaruan atau bump versi.

58 

59<h3 id="keep-plugin-files-out-of-git-lfs">

60 Keep plugin files out of Git LFS

61</h3>

62 

63Jauhkan file yang plugin Anda butuhkan dari [Git LFS](https://git-lfs.com). Ketika pengguna menambahkan marketplace yang dihosting di repositori git, atau memasang plugin berbasis git yang dicantumkannya, Claude Code mengkloning marketplace atau repositori plugin itu ke mesin mereka. Klon tidak pernah mengunduh konten LFS, jadi file yang dilacak LFS tiba sebagai file pointer.

64 

65<h3 id="share-files-within-a-marketplace-with-symlinks">

66 Share files within a marketplace with symlinks

67</h3>

68 

69Untuk berbagi file antara plugin Anda dan bagian lain dari marketplace yang sama, buat symbolic links di dalam direktori plugin Anda. Ketika Claude Code menyalin plugin ke cache-nya, ia menangani setiap symlink berdasarkan di mana target diselesaikan:

70 

71* **Dalam direktori plugin itu sendiri**: symlink dipertahankan sebagai symlink relatif dalam cache, jadi tetap menyelesaikan target yang disalin saat runtime.

72* **Di tempat lain dalam marketplace yang sama**: symlink didereferensi. Konten target disalin ke cache di tempatnya. Ini memungkinkan direktori `skills/` meta-plugin untuk menghubungkan ke skills yang ditentukan oleh plugin lain di marketplace.

73* **Di luar marketplace**: symlink dilewati untuk keamanan.

74 

75Untuk plugin yang dipasang dari path lokal, atau dari [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source) yang `mode`-nya adalah default `copy`, Claude Code hanya mempertahankan symlink yang diselesaikan dalam direktori plugin itu sendiri dan melewati semua yang lain.

76 

77Perintah berikut membuat link dari dalam plugin marketplace ke skill bersama yang ditentukan oleh plugin sibling. Di Windows, gunakan `mklink /D` dari Command Prompt yang ditinggikan atau aktifkan Developer Mode:

78 

79```bash theme={null}

80ln -s ../../shared-plugin/skills/foo ./skills/foo

81```

82 

83<h2 id="distribute-through-organization-settings">

84 Distribute through organization settings

85</h2>

86 

87Pada paket Team atau Enterprise, Anda juga dapat mendistribusikan marketplace melalui [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) di claude.ai alih-alih menghosting-nya di tempat pengguna menambahkannya sendiri. Organization sync membaca repositori melalui koneksi GitHub atau GitLab organisasi Anda di claude.ai, jadi kredensial git pengguna Anda tidak terlibat.

88 

89Organization sync lebih ketat tentang repositori daripada `/plugin marketplace add`:

90 

91* **Marketplace repository**: di github.com dan gitlab.com, harus pribadi atau internal

92* **Plugin sources**: setiap plugin source harus bertipe `github`, `url`, atau `git-subdir`, atau [relative path](/docs/id/plugins/marketplace-reference#relative-path-plugin-source) yang dimulai dengan `./`

93* **Top-level `bin/` directory**: claude.ai menolak plugin yang memilikinya dan mensinkronkan sisa marketplace. Pesan kesalahan dimulai dengan `Plugin contains a top-level bin/ directory`. Simpan executable di direktori lain, seperti `scripts/`, dan referensikan sebagai `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` dari hooks atau konfigurasi server MCP Anda

94 

95Lihat [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) untuk workflow admin.

96 

97<h2 id="grant-access-to-a-private-marketplace">

98 Grant access to a private marketplace

99</h2>

100 

101Ketika pengguna menambahkan, memasang dari, atau memperbarui marketplace Anda, Claude Code menjalankan `git` di mesin mereka dengan prompt interaktif dimatikan dan mengandalkan kredensial apa pun yang sudah dipegang mesin itu. Claude Code tidak memiliki token git sendiri, dan `marketplace.json` tidak memiliki field untuk satu.

102 

103Anda memilih apakah klon berjalan melalui SSH atau HTTPS berdasarkan bentuk perintah add yang Anda kirim pengguna:

104 

105* **GitHub `owner/repo`**: Claude Code menyelidiki `ssh -T git@github.com` dan mengkloning melalui SSH ketika penyelidikan berhasil. Jika penyelidikan gagal, atau klon SSH itu sendiri gagal, ia mengkloning melalui HTTPS. Pengguna di mesin tanpa kunci SSH GitHub dapat mengatur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` untuk melewati penyelidikan dan mengkloning melalui HTTPS.

106* **`git@host:path.git`**: SSH.

107* **`https://example.com/repo.git`**: HTTPS.

108 

109Beri tahu pengguna apa yang setiap protokol butuhkan di mesin mereka:

110 

111* **SSH**: kunci harus bekerja tanpa prompt passphrase, misalnya karena dimuat di `ssh-agent`. Host harus sudah ada di `known_hosts`.

112* **HTTPS**: Claude Code membiarkan helper kredensial git pengguna diaktifkan tetapi melarangnya dari prompting. Kredensial yang sudah disimpan helper bekerja; satu yang harus diminta gagal. Di GitHub, `gh auth login` diikuti oleh `gh auth setup-git` menyimpan satu.

113 

114Untuk host GitHub Enterprise Server, pengguna memerlukan akses git ke host itu dari mesin mereka. Lihat [Plugin marketplaces on GHES](/docs/id/github-enterprise-server#plugin-marketplaces-on-ghes) untuk apa yang setiap permukaan Claude Code butuhkan untuk mencapai marketplace yang dihosting GHES.

115 

116Jika Anda mendistribusikan melalui **Organization settings > Plugins & skills** di claude.ai sebagai gantinya, kredensial git pengguna Anda tidak terlibat. Lihat [Distribute through organization settings](#distribute-through-organization-settings) untuk plugin source mana yang dapat pribadi di sana.

117 

118<h3 id="serve-users-who-have-no-git-host-account">

119 Serve users who have no git-host account

120</h3>

121 

122Pengguna tanpa akun git-host dapat menambahkan marketplace yang Anda layani sebagai URL `marketplace.json` atau dari direktori bersama, tetapi mereka hanya dapat memasang plugin yang entry source-nya juga dapat mereka jangkau. Entri yang menunjuk ke repositori `github` pribadi masih gagal saat instalasi untuk mereka, karena Claude Code mengambilnya dengan `git` non-interaktif yang sama yang digunakan untuk marketplace yang dihosting git.

123 

124Entry source ini tidak memerlukan akun git:

125 

126* **`archive`**: zip yang diunduh melalui HTTPS. Pengguna tidak memerlukan `git` atau akun, hanya akses jaringan ke URL. Memerlukan Claude Code v2.1.224 atau lebih baru. Pin setiap archive dengan `sha256` sehingga Claude Code menolak unduhan yang berubah. Untuk mengirim kredensial dengan unduhan, lihat [Authenticate archive downloads](#authenticate-archive-downloads).

127* **Repositori git publik**: Claude Code mengkloning source `url` atau `git-subdir` publik melalui HTTPS tanpa kredensial ketika entri memberikan URL `https://`. Untuk source `github`, atau source `git-subdir` yang ditulis sebagai `owner/repo`, pengguna tanpa kunci SSH GitHub mengatur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

128 

129Untuk tim di satu jaringan, marketplace `directory` pada filesystem bersama juga bekerja tanpa akun git. Pengguna hanya memerlukan akses baca ke path.

130 

131<h3 id="what-background-auto-update-does-with-credentials">

132 What background auto-update does with credentials

133</h3>

134 

135Background auto-update adalah refresh tanpa pengawasan Claude Code dari marketplace dan plugin yang dipasang setelah sesi dimulai. Ini dimatikan untuk marketplace Anda sampai pengguna atau admin menyalakannya, seperti yang tercakup di bawah [Keep users up to date](#keep-users-up-to-date).

136 

137Ketika aktif untuk marketplace pribadi, pemeriksaan latar belakang untuk commit baru menggunakan helper kredensial git yang dikonfigurasi pengguna dan tidak pernah prompt. Setiap jenis remote dan helper memberikan hasil yang berbeda:

138 

139* **SSH remotes**: kunci yang dimuat di `ssh-agent` mengautentikasi pemeriksaan.

140* **HTTPS remotes dengan kredensial yang disimpan**: helper yang dapat menyediakan kredensial yang disimpan tanpa prompting mengautentikasi pemeriksaan. Git Credential Manager, helper Keychain macOS, dan `git-credential-store` bekerja dengan cara ini setelah mereka memegang kredensial untuk host.

141* **HTTPS remotes dengan helper yang perlu prompt**: helper tidak dapat menjawab di latar belakang. Pembaruan gagal diam-diam dan checkout yang ada tetap di tempat, jadi plugin pengguna terus bekerja dari status yang terakhir disinkronkan.

142 

143Setelah pemeriksaan, Claude Code melakukan salah satu dari berikut:

144 

145* **Checkout sudah terbaru**: Claude Code membiarkannya apa adanya.

146* **Pemeriksaan menemukan commit baru, atau gagal karena tidak dapat menjangkau atau mengautentikasi ke remote**: Claude Code mengkloning marketplace lagi dan mengganti checkout yang ada dengan klon baru. Jika klon itu gagal, checkout yang ada tetap di tempat. Klon ulang dapat [time out on large repositories](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s).

147 

148Untuk menjaga marketplace pribadi tetap terkini, pengguna dapat melakukan salah satu dari berikut:

149 

150* **Simpan kredensial**: masuk ke helper kredensial terlebih dahulu sehingga memegang kredensial untuk host. Untuk GitHub, jalankan `gh auth login`, kemudian `gh auth setup-git`.

151* **Simpan checkout saat gagal**: jika pengguna mengatur `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, Claude Code menyimpan checkout yang ada tanpa mencoba klon ulang ketika pemeriksaan latar belakang tidak dapat menjangkau atau mengautentikasi ke remote. Plugin terus bekerja dari status yang terakhir disinkronkan.

152 

153Jika pengguna mengatur `GITHUB_TOKEN` atau token provider lain di lingkungan, itu saja tidak mengautentikasi pemeriksaan latar belakang. Token berlaku melalui helper kredensial, seperti helper CLI `gh`, yang membaca `GH_TOKEN` dan `GITHUB_TOKEN`.

154 

155<h2 id="roll-out-to-a-whole-company">

156 Roll out to a whole company

157</h2>

158 

159Meluncurkan plugin ke perusahaan melibatkan Anda sebagai pemilik marketplace, administrator yang mengontrol pengaturan terkelola, dan setiap orang yang menggunakan Claude Code. Anda dapat menjalankan peluncuran tanpa administrator, dalam hal ini setiap orang menambahkan marketplace dan memasang plugin sendiri.

160 

161| Siapa | Apa yang mereka lakukan | Di mana tercakup |

162| :------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- |

163| Anda, pemilik marketplace | Simpan katalog di repositori yang hanya dapat dibaca perusahaan, kirim perintah add untuk host Anda, dan katakan apa yang setiap orang butuhkan di mesin mereka | [Host your marketplace](#host-your-marketplace) dan [Grant access to a private marketplace](#grant-access-to-a-private-marketplace) |

164| Administrator | Mendaftarkan marketplace dan menyalakan plugin-nya untuk semua orang dengan `extraKnownMarketplaces` dan `enabledPlugins` dalam pengaturan terkelola, dan mengatur `autoUpdate` di sana | [Require a marketplace and its plugins](/docs/id/plugins/org#require-a-marketplace-and-its-plugins) dan [Set update policy](/docs/id/plugins/org#set-update-policy) |

165| Setiap orang | Memerlukan akses baca ke repositori git pribadi, dengan kredensial sudah disimpan di mesin mereka. Tanpa administrator, mereka juga menjalankan perintah add dan install | [Add a private marketplace](/docs/id/plugins/install#add-a-private-marketplace) |

166 

167Untuk orang yang tidak memiliki akun git-host, bagian-bagian ini masing-masing mencakup satu cara untuk menjangkau mereka:

168 

169* **Entry sources yang tidak memerlukan akun git**: [Serve users who have no git-host account](#serve-users-who-have-no-git-host-account)

170* **Direktori plugin yang sudah diisi sebelumnya**: [Seed containers and CI](/docs/id/plugins/org#seed-containers-and-ci), yang juga melayani pengguna yang tidak memiliki akun git-host

171* **Pengaturan organisasi claude.ai**: [Distribute through organization settings](#distribute-through-organization-settings), di mana kredensial git pengguna Anda tidak terlibat

172 

173<h2 id="keep-users-up-to-date">

174 Keep users up to date

175</h2>

176 

177Perubahan Anda mencapai pengguna melalui background auto-update, setelah diaktifkan untuk marketplace Anda, atau ketika pengguna memperbarui plugin sendiri. Dalam kedua kasus pengguna mendapatkan salinan baru plugin hanya ketika versi yang dihitung berubah, seperti dijelaskan di bawah [Release a new version](#release-a-new-version).

178 

179<h3 id="turn-on-auto-update">

180 Turn on auto-update

181</h3>

182 

183Background auto-update dimatikan untuk marketplace Anda secara default, dan `marketplace.json` tidak memiliki field untuk menyalakannya. Pengguna atau admin menyalakannya:

184 

185* **Beri tahu pengguna untuk menyalakannya**: setiap pengguna pergi ke **Marketplaces** di `/plugin`, memilih marketplace Anda, dan memilih **Enable auto-update**.

186* **Minta admin untuk mengaturnya**: jika admin mengatur `"autoUpdate": true` pada entri `extraKnownMarketplaces` marketplace Anda dalam pengaturan terkelola, itu aktif untuk semua orang yang menerima pengaturan itu. Lihat [Set update policy](/docs/id/plugins/org#set-update-policy).

187 

188Tanpa auto-update, pengguna menerima perubahan Anda ketika mereka menjalankan `/plugin marketplace update <name>` dalam sesi atau `claude plugin update <plugin>@<name>` di shell.

189 

190Untuk apa yang pengguna lihat ketika pembaruan mencapai mereka, lihat [When auto-update runs](/docs/id/plugins/loading#when-auto-update-runs).

191 

192<h3 id="release-a-new-version">

193 Release a new version

194</h3>

195 

196Untuk merilis versi baru kepada pengguna, ubah `version` plugin. Pengguna mendapatkan salinan baru hanya ketika versi yang dihitung plugin berbeda dari yang mereka miliki. Versi itu berasal dari `plugin.json` terlebih dahulu, kemudian dari entri marketplace, per [Versions and updates](/docs/id/plugins/loading#versions-and-updates).

197 

198Plugin yang pengguna [load in place](/docs/id/plugins/loading#find-plugins-on-disk) dari marketplace yang mereka tambahkan sebagai direktori lokal tidak dikendalikan oleh `version`. Ia memuat file Anda saat ini di setiap awal sesi, apa pun string versinya.

199 

200Untuk setiap instalasi selain in-place load atau satu dari `command` source, tingkatkan `version` pada setiap rilis atau hilangkan:

201 

202* **Bump `version` pada setiap rilis**: pengguna tetap pada salinan cache mereka sampai string berubah. Jika Anda mengatur `"version": "1.0.0"` dan push commit baru tanpa mengubahnya, pengguna tidak menerimanya.

203* **Hilangkan `version`**: pengguna melacak commit Anda sebagai gantinya. Tinggalkan `version` dari `plugin.json` dan entri marketplace.

204 

205Jangan atur `version` di `plugin.json` dan entri marketplace. Jika Anda melakukannya, Claude Code menggunakan nilai `plugin.json` tanpa peringatan, dan `claude plugin validate` melaporkan ketidakcocokan sebagai `Entry declares version "<a>" but <path>/plugin.json says "<b>"`.

206 

207<h3 id="hold-users-on-one-version">

208 Hold users on one version

209</h3>

210 

211Satu marketplace melayani satu versi setiap plugin pada satu waktu, jadi Anda menahan pengguna pada versi dengan memilih apa yang setiap entri tunjuk:

212 

213* **`ref` dan `sha` pada entri plugin**: `ref` menamai branch atau tag dan `sha` menamai commit untuk source `github`, `url`, atau `git-subdir`. Lihat [Plugin sources](/docs/id/plugins/marketplace-reference#plugin-sources).

214* **`#<ref>` pada perintah add**: pengguna yang menambahkan `your-org/your-marketplace#stable` mendapatkan branch atau tag itu dari katalog. Untuk dua baris rilis sekaligus, lihat [Run release channels](#run-release-channels).

215* **`<plugin>--v<version>` tags**: rentang versi dependensi diselesaikan terhadap tag ini. Lihat [Release a plugin that others depend on](/docs/id/plugins/dependencies#tag-plugin-releases-for-version-resolution).

216 

217[Release a new version](#release-a-new-version) mengatakan kapan entri yang berubah mencapai pengguna.

218 

219<h3 id="change-the-command-of-a-command-source">

220 Change the command of a command source

221</h3>

222 

223Jika Anda mengubah `command` dari [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), atau mengalihkan `mode`-nya, setiap pengguna harus menerima perintah baru sebelum Claude Code menjalankannya. Claude Code hanya menjalankan perintah yang tepat yang diterima pengguna ketika mereka memasang atau terakhir memperbarui plugin.

224 

225Setelah salinan marketplace pengguna mengambil perubahan, pengguna itu melihat berikut:

226 

227* **Tidak ada lagi background runs**: [once-per-session run](/docs/id/plugins/loading#when-a-command-source-re-runs) perintah berhenti untuk pengguna itu, jadi output baru tool tidak mencapai mereka.

228* **Entri di tab `/plugin` Errors**: entri menunjukkan perintah baru dan perintah `claude plugin update` untuk dijalankan.

229 

230Beri tahu pengguna untuk menjalankan perintah `claude plugin update` yang ditunjukkan entri itu, di terminal. Claude Code menunjukkan perintah baru dan meminta mereka menerimanya.

231 

232<h2 id="run-release-channels">

233 Run release channels

234</h2>

235 

236Untuk menawarkan track stabil dan early-access, host dua marketplace yang entri-nya menunjuk ke ref berbeda dari plugin yang sama, dan biarkan setiap pengguna menambahkan yang mereka inginkan. Claude Code tidak memiliki konsep release-channel, dan satu marketplace melayani satu versi setiap plugin pada satu waktu.

237 

238Berikan dua file `marketplace.json` nilai `name` yang berbeda. Claude Code mengidentifikasi marketplace berdasarkan `name`-nya, jadi pengguna tidak dapat memiliki dua marketplace dengan nama yang sama terdaftar sekaligus.

239 

240Dengan dua katalog ini, pengguna yang menambahkan `stable-tools` memasang `code-formatter` dari branch `stable`, dan pengguna yang menambahkan `latest-tools` memasangnya dari `latest`:

241 

242```json theme={null}

243{

244 "name": "stable-tools",

245 "owner": { "name": "Your Org" },

246 "plugins": [

247 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "stable" } }

248 ]

249}

250```

251 

252```json theme={null}

253{

254 "name": "latest-tools",

255 "owner": { "name": "Your Org" },

256 "plugins": [

257 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "latest" } }

258 ]

259}

260```

261 

262Berikan dua ref versi `plugin.json` yang berbeda, atau hilangkan `version` sehingga commit SHA membedakan mereka. Pembaruan dideteksi dengan membandingkan versi, jadi ref yang bergerak tanpa perubahan versi meninggalkan pengguna pada salinan cache.

263 

264Untuk menetapkan channel ke grup pengguna alih-alih membiarkan pengguna memilih, admin memberikan setiap grup entri `extraKnownMarketplaces` yang cocok, seperti dijelaskan di bawah [Set update policy](/docs/id/plugins/org#set-update-policy).

265 

266<h2 id="rename-or-remove-a-plugin">

267 Rename or remove a plugin

268</h2>

269 

270`name` plugin adalah pengidentifinya. Pengguna mereferensikannya dalam kunci pengaturan `enabledPlugins` dan `pluginConfigs` dan di `/plugin install`, jadi mengubahnya merusak setiap instalasi yang ada.

271 

272Untuk mengubah label yang pengguna lihat di `/plugin` tanpa merusak apa pun, atur `displayName` di `plugin.json` dan simpan `name` tidak berubah.

273 

274<h3 id="migrate-users-with-a-renames-map">

275 Migrate users with a renames map

276</h3>

277 

278Ketika Anda harus mengubah `name`, tambahkan peta `renames` tingkat atas ke `marketplace.json` sehingga Claude Code memigrasikan pengguna yang ada alih-alih melaporkan [`Plugin "<name>" not found in marketplace`](/docs/id/plugins/troubleshooting#plugin-not-found-in-marketplace). Lakukan hal yang sama ketika Anda menghapus entri dari `plugins`. Migrasi otomatis memerlukan Claude Code v2.1.193 atau lebih baru.

279 

280Petakan setiap nama lama ke nama saat ini, atau ke `null` ketika plugin hilang. Marketplace ini mengganti nama `formatter` menjadi `code-formatter` dan mencatat bahwa `legacy-linter` dihapus:

281 

282```json theme={null}

283{

284 "name": "your-marketplace",

285 "owner": { "name": "Your Org" },

286 "plugins": [

287 { "name": "code-formatter", "source": "./plugins/code-formatter" }

288 ],

289 "renames": {

290 "formatter": "code-formatter",

291 "legacy-linter": null

292 }

293}

294```

295 

296Setelah Anda push, pengguna yang masih memiliki nama lama yang diaktifkan melihat salah satu hasil ini:

297 

298* **Entri yang diganti nama**: plugin memuat di bawah nama barunya. `claude plugin list` dan detail plugin di bawah `/plugin` menunjukkan `Renamed to "code-formatter" in the "your-marketplace" marketplace` sekali, dan Claude Code menulis ulang kunci lama ke yang baru di `enabledPlugins` dan `pluginConfigs` dalam scope pengaturan pengguna, proyek, dan lokal.

299* **Entri `null`**: kunci lama dijatuhkan dari scope itu dan pengguna melihat `Removed from the "your-marketplace" marketplace`.

300* **Diaktifkan dalam pengaturan terkelola**: plugin masih memuat di bawah nama barunya, tetapi Claude Code tidak dapat menulis ulang pengaturan terkelola, jadi pemberitahuan berulang sampai admin memperbarui `enabledPlugins` di sana.

301 

302Untuk marketplace yang pengguna tambahkan dari repositori git atau URL, plugin yang diganti nama melaporkan [`Plugin "<name>" not cached at <path>`](/docs/id/plugins/troubleshooting#plugin-not-cached-at) sampai pengguna menjalankan `/plugin install code-formatter@your-marketplace` sekali dalam sesi.

303 

304Perlakukan `renames` sebagai riwayat append-only. Simpan entri lama setelah semua orang bermigrasi. Ketika Anda mengganti nama lagi, tambahkan entri kedua daripada mengedit yang pertama, karena Claude Code mengikuti rantai dari nama tertua.

305 

306Di shell Anda, jalankan `claude plugin validate .` setelah mengedit peta. Ini menolak rantai yang bersiklus atau yang berakhir di mana pun selain `null` atau nama di `plugins`, dengan `renames.<name>: chain does not resolve`.

307 

308<h3 id="uninstall-removed-plugins-from-users’-machines">

309 Uninstall removed plugins from users' machines

310</h3>

311 

312Untuk mencopot plugin yang dihapus dari mesin pengguna alih-alih meninggalkan salinan di belakang, atur `"forceRemoveDeletedPlugins": true` di tingkat atas `marketplace.json`. Tanpa field, plugin yang dihapus tetap terpasang dan melaporkan `Plugin "<name>" not found in marketplace` ketika sesi memuat-nya. Dengan itu, Claude Code melakukan berikut di setiap awal sesi:

313 

3141. Membandingkan apa yang pengguna pasang dari marketplace Anda terhadap entri dan peta `renames`, dan memperlakukan plugin apa pun yang tidak tercantum atau diganti nama sebagai dihapus.

3152. Mencopot setiap plugin yang dihapus dari scope pengguna, proyek, dan lokal. Plugin yang hanya pengaturan terkelola pasang tetap di tempat.

3163. Mencantumkan setiap plugin yang dihapus di bawah heading **Flagged** di `/plugin` dengan status `Removed from marketplace`.

317 

318<h2 id="authenticate-archive-downloads">

319 Autentikasi unduhan arsip

320</h2>

321 

322Untuk mengautentikasi unduhan [`archive`](/docs/id/plugins/marketplace-reference#archive-plugin-source), seperti unduhan dari registri pribadi, atur header HTTP yang dikirim Claude Code dengannya. Anda dapat mengatur `headers` di salah satu tempat berikut:

323 

324* **Sumber `url` marketplace**: sumber `url` yang Anda daftarkan marketplace darinya, seperti entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces).

325* **Entri plugin**: pada Claude Code v2.1.238 atau lebih baru, Anda dapat mengaturnya pada entri `marketplace.json` plugin sebagai gantinya, di samping `source`.

326 

327Di salah satu tempat, atur perintah `headersHelper` sebagai gantinya dari `headers` ketika nilainya berumur pendek, seperti token yang dihasilkan registri Anda atas permintaan. Claude Code menjalankan perintah dan mengirim objek JSON yang dicetak sebagai header tempat tersebut. Memerlukan Claude Code v2.1.238 atau lebih baru.

328 

329[Referensi marketplace](/docs/id/plugins/marketplace-reference#plugin-entries) mencantumkan bidang entri `headers` dan `headersHelper`.

330 

331Tempat yang Anda pilih menentukan unduhan mana yang mendapatkan header dan kapan Claude Code menjalankan perintah:

332 

333| Tempat | Unduhan yang mendapatkan header | Kapan Claude Code menjalankan `headersHelper` yang diatur di sana |

334| :----------------------- | :------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

335| Sumber `url` Marketplace | Unduhan arsip pada asal URL marketplace, artinya skema, host, dan port yang sama | Sebelum setiap pengambilan `marketplace.json` marketplace dan sebelum setiap unduhan arsip pada asal tersebut. Claude Code menggunakan kembali output satu run selama hingga 60 detik |

336| Entri plugin | Hanya unduhan entri tersebut | Hanya ketika pengguna memasang atau memperbarui plugin tersebut saja dan [menerima perintah](#how-users-accept-a-headershelper-command) |

337 

338Jika kedua tempat mengatur header dengan nama yang sama, Claude Code mengirim nilai entri. Dalam satu tempat, header yang dicetak perintah menimpa header dengan nama yang sama yang tercantum dalam `headers`.

339 

340<h3 id="add-a-headershelper-to-a-plugin-entry">

341 Tambahkan headersHelper ke entri plugin

342</h3>

343 

344Entri ini mengatur `headersHelper` di samping `source`. Ini juga mengatur [`"strict": false`](/docs/id/plugins/marketplace-reference#strict-mode), yang Claude Code perlukan dari entri `marketplace.json` yang mengatur `headersHelper`:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "description": "Formatting commands for internal services",

350 "strict": false,

351 "source": {

352 "source": "archive",

353 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

354 },

355 "headersHelper": "/opt/bin/mint-registry-token.sh"

356}

357```

358 

359Untuk memeriksa entri, jalankan `claude plugin install my-plugin@your-marketplace` di shell Anda. Claude Code menunjukkan perintah dan URL arsip, dan mengunduh zip setelah Anda menerima.

360 

361<h3 id="write-the-headershelper-command">

362 Tulis perintah headersHelper

363</h3>

364 

365Baik Anda mengatur `headersHelper` pada sumber `url` marketplace atau pada entri plugin, tulis perintah untuk memenuhi persyaratan berikut:

366 

367* **Teks perintah**: paling banyak 500 karakter ASCII yang dapat dicetak, tanpa run empat atau lebih spasi.

368* **Output**: cetak satu objek JSON dari nama header dan nilai string pada stdout, kemudian keluar 0 dalam 10 detik.

369* **Shell dan direktori kerja**: Claude Code menjalankan perintah melalui `sh`, atau melalui `cmd.exe` di Windows. Direktori kerja adalah direktori konfigurasi, yaitu `~/.claude` atau [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars#variables). Berikan jalur absolut atau perintah pada `PATH`, karena jalur relatif diselesaikan terhadap direktori tersebut, bukan proyek pengguna.

370* **Variabel yang Claude Code hapus**: ketika perintah diatur dalam entri `marketplace.json`, atau dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, Claude Code menghapus dari lingkungan setiap variabel yang namanya terlihat seperti kredensial, dengan [aturan yang sama yang diterapkannya pada MCP `headersHelper`](/docs/id/mcp#which-variables-a-helper-can-read). `ANTHROPIC_API_KEY` dan `MY_REGISTRY_TOKEN` keduanya dihapus, jadi biarkan perintah membaca kredensialnya dari file atau penyimpanan kredensial. Penghapusan ini tidak berlaku untuk perintah yang diatur dalam pengaturan pengguna, file `--settings`, atau pengaturan terkelola.

371* **Variabel yang Claude Code atur**: `CLAUDE_CODE_MARKETPLACE_URL` dan `CLAUDE_CODE_MARKETPLACE_NAME` untuk perintah sumber `url`, dan `CLAUDE_CODE_PLUGIN_NAME` dan `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` untuk perintah entri. `CLAUDE_CODE_MARKETPLACE_NAME` tidak diatur pada pengambilan pertama setelah pengguna menambahkan marketplace berdasarkan URL, karena pengambilan tersebut adalah yang menyediakan nama.

372 

373Perintah yang mencetak token pembawa mencetak objek seperti ini:

374 

375```json theme={null}

376{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

377```

378 

379<h3 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

380 Kapan Claude Code melewati perintah headersHelper atau menghapus outputnya

381</h3>

382 

383Perintah `headersHelper` tidak berjalan, atau header dari `headers` atau dari output perintah dihapus, ketika salah satu dari berikut berlaku:

384 

385* **Perintah gagal**: jika perintah keluar non-nol, berjalan melampaui 10 detik, atau mencetak apa pun selain objek JSON dari nilai string, pengambilan atau unduhan yang perintah dijalankan tidak terjadi.

386* **URL Marketplace tidak dimulai dengan `https://`**: perintah sumber `url` tersebut tidak berjalan, dan permintaan hanya membawa header yang tercantum dalam bidang `headers`-nya.

387* **Pengalihan meninggalkan asal**: ketika unduhan dialihkan dari asal URL arsip, permintaan yang dialihkan tidak membawa nilai `headers` atau output perintah dari sumber `url` marketplace atau entri plugin.

388* **Entri mengatur header perutean atau identitas**: Claude Code menghapus nama perutean permintaan dan identitas klien seperti `Host`, `Cookie`, dan `X-Forwarded-*` dari `headers` entri dan output perintah, dan mempertahankan nama autentikasi seperti `Authorization`. Setiap entri `marketplace.json` disaring dengan cara ini. Untuk entri plugin inline dalam pengaturan, lihat [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces).

389* **Perintah diatur dalam pengaturan direktori `--add-dir`**: perintah diabaikan, pada sumber `url` dan pada [entri plugin inline](/docs/id/settings-reference#extraknownmarketplaces) juga, dan hanya `headers` file tersebut yang dikirim.

390* **Pengaturan terkelola memblokir perintah**: mengatur [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources) ke `true` memblokir perintah `headersHelper`, dan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) juga memblokir mereka kecuali `disableCommandPluginSources` secara eksplisit `false`. Di bawah salah satu blok, Claude Code masih menjalankan perintah untuk marketplace yang pengaturan terkelola sendiri nyatakan.

391 

392<h3 id="how-users-accept-a-headershelper-command">

393 Bagaimana pengguna menerima perintah headersHelper

394</h3>

395 

396Pengguna menerima perintah entri plugin setiap kali mereka memasang atau memperbarui plugin tersebut saja. Mereka melakukan itu dari tampilan plugin sendiri di `/plugin`, atau dengan `claude plugin install` atau `claude plugin update`. Claude Code menunjukkan perintah dan URL arsip, dan menjalankan perintah hanya setelah pengguna menerima.

397 

398Dalam shell non-interaktif, teruskan [`--yes`](/docs/id/plugins/cli-reference#plugin-install) untuk menerima perintah. Untuk menerima hanya perintah yang ditampilkan run `--json` sebelumnya, teruskan [`--accept-command`](/docs/id/plugins/cli-reference#plugin-install) dengan `sha256` yang dilaporkan run.

399 

400Claude Code menjalankan hanya perintah yang ditunjukkan, untuk URL arsip yang ditunjukkan. Jika perintah entri atau URL arsip berubah di antara, Claude Code menolak pemasangan atau pembaruan. Perubahan dalam string kueri saja tidak dihitung.

401 

402<h3 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

403 Pemasangan dan pembaruan yang menolak perintah alih-alih bertanya

404</h3>

405 

406Pada operasi apa pun selain pemasangan atau pembaruan plugin tunggal, Claude Code tidak menjalankan perintah entri atau mengunduh arsipnya. Plugin tetap pada versi terpasang atau tetap tidak terpasang, dan pengguna melihat salah satu hasil berikut:

407 

408* **Memasang beberapa plugin sekaligus, dari saran plugin, atau sebagai ketergantungan plugin lain**: Claude Code menolak plugin yang memiliki perintah dan mengarahkan pengguna ke tampilan plugin sendiri di `/plugin`. Plugin lain dalam pemasangan massal masih terpasang. Plugin yang bergantung pada plugin yang ditolak gagal terpasang sampai pengguna memasang plugin yang ditolak sendiri.

409* **Pembaruan otomatis latar belakang, atau awal sesi untuk plugin yang arsipnya tidak pernah diunduh**: Claude Code mencantumkan plugin dalam tab Errors `/plugin` sehingga pengguna tahu untuk memasang atau memperbarui sendiri.

410 

411<h3 id="when-a-marketplace-url-sources-command-runs">

412 Kapan perintah sumber `url` marketplace berjalan

413</h3>

414 

415Anda mendeklarasikan `headersHelper` sumber `url` marketplace dalam file pengaturan, seperti entri [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces), daripada dalam katalog yang dipublikasikan marketplace. Claude Code oleh karena itu tidak meminta pengguna untuk menerimanya pada setiap pemasangan atau pembaruan. Sebagai gantinya, file pengaturan yang mendeklarasikannya menentukan kapan Claude Code menjalankannya:

416 

417| File pengaturan | Kapan Claude Code menjalankan perintah |

418| :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

419| Pengaturan pengguna, file `--settings`, atau file pengaturan terkelola pada mesin | Tanpa bertanya, termasuk selama penyegaran marketplace latar belakang |

420| `.claude/settings.json` atau `.claude/settings.local.json` proyek | Hanya setelah pengguna menerima [dialog kepercayaan ruang kerja](/docs/id/permissions#what-runs-before-you-trust-a-folder) untuk folder itu sendiri. Sesi `-p` atau SDK tidak dihitung sebagai menerimanya, dan kepercayaan yang diberikan ke folder induk juga tidak |

421| Pengaturan terkelola server | Dalam sesi interaktif, hanya setelah pengguna menyetujui pengaturan yang dikirimkan dalam [dialog persetujuan keamanan](/docs/id/server-managed-settings#security-approval-dialogs) |

422 

423Untuk [entri plugin inline](/docs/id/settings-reference#extraknownmarketplaces) dalam salah satu file ini, Claude Code memerlukan kepercayaan folder atau persetujuan pengaturan yang sama seperti untuk perintah tingkat marketplace dalam file tersebut, dan pengguna juga menerima perintah entri pada setiap pemasangan atau pembaruan.

424 

425<h2 id="depend-on-and-recommend-other-plugins">

426 Depend on and recommend other plugins

427</h2>

428 

429Entri dapat mendeklarasikan dependensi pada plugin lain.

430 

431* **Rentang versi**: dependensi dapat membawa rentang semver.

432* **Dependensi lintas marketplace**: dependensi dari marketplace lain memasang hanya ketika marketplace Anda mencantumkan marketplace itu di `allowCrossMarketplaceDependenciesOn`.

433 

434Untuk rentang versi, konvensi tag git `<plugin>--v<version>` yang diselesaikan, dan kepercayaan lintas marketplace, lihat [Plugin dependencies](/docs/id/plugins/dependencies).

435 

436Untuk membuat Claude Code menyarankan plugin ketika proyek cocok dengannya, tambahkan blok `relevance` ke entri dengan sinyal yang mengidentifikasi proyek. Pengguna melihat saran dari marketplace Anda hanya ketika admin mencantumkannya di `pluginSuggestionMarketplaces`. Untuk sinyal dan langkah enablement, lihat [Plugin relevance](/docs/id/plugins/relevance).

437 

438<h2 id="work-around-what-a-marketplace-can’t-do">

439 Work around what a marketplace can't do

440</h2>

441 

442Beberapa hal yang diminta pemilik tidak memiliki field di `marketplace.json`. Berikut adalah opsi terdekat untuk masing-masing:

443 

444* **Batasi apa yang pengguna lain pasang**: daftar allowlist marketplace adalah pengaturan terkelola, `strictKnownMarketplaces`. Lihat [Restrict what users can install](/docs/id/plugins/org#restrict-what-users-can-install).

445* **Pasang atau aktifkan plugin tanpa pengguna bertanya**: tidak ada field entri yang memasang plugin. `enabledPlugins` terkelola melakukan itu untuk armada; lihat [Pre-install and require plugins](/docs/id/plugins/org#pre-install-and-require-plugins).

446* **Tampilkan entri berbeda kepada pengguna berbeda**: entri tidak membawa field audiens, dan setiap pengguna yang menambahkan marketplace melihat seluruh katalog. Host marketplace terpisah untuk audiens terpisah.

447* **Tandai plugin sebagai deprecated**: tidak ada status deprecation. Opsinya adalah menghapus entri, memetakan nama-nya ke `null` di `renames`, dan secara opsional mengatur `forceRemoveDeletedPlugins`.

448* **Nyalakan auto-update untuk pengguna Anda**: setiap pengguna menyalakannya di bawah **Marketplaces** di `/plugin`, atau admin mengatur `autoUpdate` dalam pengaturan terkelola. Lihat [Turn on auto-update](#turn-on-auto-update).

449* **Bawa kredensial git**: tidak ada field marketplace yang menyimpan token git. Akses ke marketplace atau plugin yang dihosting git mengikuti setup git pengguna, per [Grant access to a private marketplace](#grant-access-to-a-private-marketplace). Untuk source `archive`, entri dapat mengatur [`headers` atau `headersHelper`](#authenticate-archive-downloads) sebagai gantinya.

450 

451<h2 id="next-steps">

452 Next steps

453</h2>

454 

455* [Marketplace reference](/docs/id/plugins/marketplace-reference): field `marketplace.json`, tipe source, dan pesan validasi

456* [Manage plugins for your organization](/docs/id/plugins/org): memerlukan, membatasi, atau seed marketplace Anda di seluruh mesin organisasi Anda

457* [Plugin dependencies](/docs/id/plugins/dependencies): tag rilis sehingga plugin yang bergantung pada Anda dapat menyelesaikan versi

458* [Troubleshoot plugins](/docs/id/plugins/troubleshooting): kesalahan yang pengguna Anda lihat saat menambahkan atau memperbarui dari marketplace Anda

plugins/install.md +418 −0 created

Details

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# Instal dan kelola plugin

6 

7> Instal plugin Claude Code dari marketplace di permukaan apa pun yang Anda gunakan, pilih cakupan instalasi, dan perbarui atau hapus nanti.

8 

9Menginstal plugin menambahkan skills, agents, hooks, dan MCP servers-nya ke Claude Code di mesin Anda.

10 

11Halaman ini untuk siapa pun yang menggunakan plugin di mesin atau akun mereka sendiri, baik di terminal, aplikasi desktop, IDE, atau sesi cloud: ini mencakup instalasi, memilih cakupan, menambahkan marketplace, dan menjaga plugin tetap terbaru.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Anda menggunakan claude.ai chat atau Cowork, bukan Claude Code**: lihat [Plugins on claude.ai and in Cowork](https://claude.com/docs/plugins/overview)

17 * **Claude Code mencetak error**: temukan di [Troubleshoot plugins](/docs/id/plugins/troubleshooting)

18</Note>

19 

20Mulai dengan [Instal plugin](#install-a-plugin). Jika seseorang mengirimkan Anda perintah instalasi yang nama `@`-nya bukan `claude-plugins-official`, [tambahkan marketplace itu](#add-a-marketplace) terlebih dahulu.

21 

22<h2 id="install-a-plugin">

23 Instal plugin

24</h2>

25 

26Sebagai contoh, bagian ini menginstal [`commit-commands`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/commit-commands) dari [marketplace resmi Anthropic](/docs/id/plugins/anthropic-marketplaces), yang menambahkan perintah untuk commit, push, dan membuka pull request.

27 

28Langkah yang sama menginstal plugin lain apa pun: ganti namanya dan nama marketplace-nya di mana pun `commit-commands` dan `claude-plugins-official` muncul. Jika plugin itu berasal dari marketplace yang berbeda, [tambahkan marketplace](#add-a-marketplace) terlebih dahulu.

29 

30Pilih tab untuk tempat Anda menjalankan Claude Code.

31 

32<Tabs>

33 <Tab title="Terminal">

34 Mulai Claude Code dengan `claude` di proyek Anda, kemudian:

35 

36 <Steps>

37 <Step title="Buka detail plugin dengan perintah instalasi">

38 Jalankan `/plugin install` dengan nama plugin dan marketplace. Dalam sesi, perintah ini tidak langsung menginstal: ini membuka panel `/plugin` pada detail plugin itu sehingga Anda dapat meninjau dan memilih cakupan terlebih dahulu.

39 

40 ```text theme={null}

41 /plugin install commit-commands@claude-plugins-official

42 ```

43 

44 Untuk menjelajahi sebagai gantinya, jalankan `/plugin` tanpa nama plugin: panel membuka pada tab **Discover**, yang mencantumkan plugin dari setiap marketplace yang telah Anda tambahkan, dan Anda dapat mengetik untuk mencari, kemudian tekan **Enter** pada plugin untuk membuka detailnya.

45 </Step>

46 

47 <Step title="Tinjau apa yang ditambahkan plugin">

48 Panel detail menunjukkan deskripsi plugin. Ini juga dapat menunjukkan:

49 

50 * **Will install**: perintah, agents, skills, hooks, dan MCP dan LSP servers yang ditambahkan plugin.

51 * **Last updated**: ditampilkan untuk plugin di marketplace resmi Anthropic.

52 * **Context cost**: untuk plugin di marketplace resmi Anthropic, dua perkiraan token. **Every turn** adalah apa yang ditambahkan plugin ke setiap pesan yang Anda kirim, dan **When invoked** adalah apa yang ditambahkan skills dan agents-nya setelah Claude memuatnya. Perkiraan muncul ketika Anda membuka plugin dengan menamai marketplace-nya, seperti yang dilakukan perintah langkah 1, atau dari tab **Marketplaces**. Panel detail yang Anda capai dari daftar **Discover** tidak menunjukkannya.

53 

54 Plugin dari marketplace lokal atau kustom dapat menunjukkan `Components will be discovered at installation` sebagai gantinya.

55 

56 Plugin dapat menjalankan hooks dan MCP servers, jadi baca panel sebelum Anda menginstal. Lihat [Plugin security and trust](/docs/id/plugins/security).

57 </Step>

58 

59 <Step title="Pilih cakupan">

60 Pilih salah satu dari tiga opsi instalasi:

61 

62 * **Install for you (user scope)**: Anda mendapatkan plugin di setiap proyek di mesin ini

63 * **Install for all collaborators on this repository (project scope)**: ini diaktifkan untuk semua orang yang bekerja di repository ini

64 * **Install for you, in this repo only (local scope)**: Anda mendapatkannya di repository ini saja

65 

66 [Pilih cakupan instalasi](#choose-an-install-scope) mengatakan file pengaturan mana yang ditulis masing-masing dan mana yang berlaku ketika plugin yang sama diatur di lebih dari satu.

67 

68 Setelah Anda memilih cakupan, Claude Code menginstal plugin bersama dengan dependensi apa pun yang dideklarasikannya, kemudian mencetak ringkasan instalasi.

69 </Step>

70 

71 <Step title="Baca ringkasan instalasi">

72 Kalimat terakhir ringkasan memberi tahu Anda apakah plugin dapat digunakan dalam sesi ini:

73 

74 * **Active now**: `Plugin is now active.` Tidak perlu reload.

75 * **Reload needed**: `Run /reload-plugins to activate.` Panel ditutup dan Claude Code menjalankan reload itu untuk Anda. Jika reload akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), itu memperingatkan dan meninggalkan plugin tertunda sebagai gantinya. Jalankan `/reload-plugins --force` untuk mengaktifkannya bagaimanapun, yang biaya satu permintaan uncached.

76 * **Load failed**: `The plugin couldn't be loaded`. Buka tab **Errors** di `/plugin` untuk alasannya, kemudian lihat [After install: plugin not working](/docs/id/plugins/troubleshooting#plugin-installed-but-not-working).

77 </Step>

78 

79 <Step title="Konfirmasi plugin berfungsi">

80 Ketik `/` dan cari skills plugin di bawah namanya, dalam bentuk `/<plugin>:<skill>`. Untuk `commit-commands`, `/commit-commands:commit` muncul. Dua tempat lain juga mencantumkan plugin:

81 

82 * Buka tab **Installed** di `/plugin`, yang mencantumkan plugin dengan cakupannya.

83 * Di shell Anda, jalankan `claude plugin list`, yang mencetak daftar yang sama dengan baris `Version`, `Scope`, dan `Status`.

84 

85 Jika `/commit-commands:commit` tidak muncul, lihat [After install: plugin not working](/docs/id/plugins/troubleshooting#plugin-installed-but-not-working).

86 </Step>

87 </Steps>

88 

89 Menginstal dari marketplace lain apa pun memerlukan satu langkah ekstra terlebih dahulu: [tambahkan marketplace](#add-a-marketplace). Claude Code menambahkan marketplace resmi Anthropic untuk Anda pertama kali Anda memulai sesi terminal interaktif, itulah mengapa contoh melewati langkah itu. Jika Anda menemukan plugin di [claude.com/marketplace](https://claude.com/marketplace), tombol **Claude Code**-nya menyalin perintah instalasi dalam [bentuk shell](#install-from-your-shell)-nya, `claude plugin install <name>@claude-plugins-official`.

90 </Tab>

91 

92 <Tab title="Desktop app">

93 Dalam sesi lokal atau SSH di tab **Code** aplikasi desktop:

94 

95 <Steps>

96 <Step title="Buka browser plugin">

97 Klik tombol **+** di sebelah kotak prompt dan pilih **Plugins**, kemudian **Add plugin**. Browser plugin membuka dengan plugin dari marketplace Anda.

98 </Step>

99 

100 <Step title="Pilih plugin">

101 Temukan `commit-commands` dan pilih.

102 </Step>

103 

104 <Step title="Pilih cakupan">

105 Pilih [cakupan](#choose-an-install-scope): akun pengguna Anda, proyek ini, atau lokal saja.

106 </Step>

107 </Steps>

108 

109 Untuk mengaktifkan, menonaktifkan, atau mencopot nanti, gunakan **+ > Plugins > Manage plugins**. Browser plugin tidak tersedia di sesi cloud aplikasi desktop. Lihat [Install plugins in the desktop app](/docs/id/desktop#install-plugins).

110 </Tab>

111 

112 <Tab title="VS Code">

113 Di panel Claude Code di VS Code:

114 

115 <Steps>

116 <Step title="Buka Manage plugins">

117 Ketik `/plugins` di kotak prompt untuk membuka **Manage plugins**.

118 </Step>

119 

120 <Step title="Instal plugin">

121 Di tab **Plugins**, cari `commit-commands` dan klik **Install**. Jika tab tidak mencantumkan plugin apa pun, tambahkan `anthropics/claude-plugins-official` di tab **Marketplaces** terlebih dahulu.

122 </Step>

123 

124 <Step title="Pilih cakupan">

125 Pilih [cakupan](#choose-an-install-scope): **Install for you**, **Install for this project**, atau **Install locally**.

126 </Step>

127 </Steps>

128 

129 Perubahan Anda berlaku untuk sesi terbuka tanpa restart. Lihat [Manage plugins in VS Code](/docs/id/vs-code#manage-plugins).

130 </Tab>

131 

132 <Tab title="Cloud session">

133 [Sesi cloud](/docs/id/cloud-environments), termasuk [browser di claude.ai/code](/docs/id/claude-code-on-the-web), tidak memiliki browser plugin dan tidak memuat plugin yang Anda instal di mesin Anda sendiri atau yang diaktifkan `.claude/settings.json` repository Anda. Untuk plugin yang didistribusikan organisasi Anda melalui pengaturan terkelola, lihat [Manage plugins for your organization](/docs/id/plugins/org).

134 

135 Lihat [bagian mana dari setup Anda yang juga tersedia di sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup) untuk sisa setup Anda.

136 </Tab>

137</Tabs>

138 

139<h3 id="choose-an-install-scope">

140 Pilih cakupan instalasi

141</h3>

142 

143Cakupan instalasi plugin memutuskan siapa yang mendapatkan plugin dan file pengaturan mana yang mencatat sebagai diaktifkan:

144 

145* **User scope**: plugin diaktifkan untuk Anda di setiap proyek di mesin ini. Entri masuk di `enabledPlugins` di `~/.claude/settings.json`.

146* **Project scope**: plugin diaktifkan untuk semua orang yang bekerja di repository ini. Entri masuk di `.claude/settings.json`, yang Anda commit.

147* **Local scope**: plugin diaktifkan untuk Anda di repository ini saja. Entri masuk di `.claude/settings.local.json`.

148 

149Beberapa plugin diatur oleh penulis mereka untuk mulai dimatikan, melalui bidang [`defaultEnabled`](/docs/id/plugins/manifest-reference#defaultenabled). Plugin seperti itu diinstal tetapi tetap mati sampai Anda mengaktifkannya dengan `claude plugin enable <name>` di shell Anda, atau dari tab **Installed** dari `/plugin` dalam sesi.

150 

151Ketika plugin yang sama diatur di beberapa cakupan, pengaturan lokal menimpa pengaturan proyek, dan pengaturan proyek menimpa pengaturan pengguna. Lihat [Find where a plugin is enabled](/docs/id/plugins/loading#find-where-a-plugin-is-enabled) untuk aturan lengkapnya.

152 

153Terminal, sesi lokal aplikasi desktop, dan ekstensi VS Code di satu komputer membaca file pengaturan yang sama, jadi plugin yang Anda instal di cakupan pengguna di salah satu dari mereka tersedia di dua lainnya.

154 

155<h3 id="other-places-you-run-claude-code">

156 JetBrains, non-interactive runs, dan Agent SDK

157</h3>

158 

159Beberapa tempat Anda menjalankan Claude Code tidak memiliki browser plugin mereka sendiri:

160 

161* **JetBrains IDEs**: plugin JetBrains menjalankan Claude Code di terminal IDE, jadi gunakan langkah-langkah tab **Terminal** di sana.

162* **`claude -p` dan non-interactive runs lainnya**: `/plugin` tidak berjalan, dan Claude menjawab `/plugin isn't available in this environment.` Plugin yang sudah Anda instal memang memuat. Instal dan kelola dari shell Anda dengan [perintah `claude plugin`](#install-from-your-shell).

163* **Agent SDK**: muat plugin melalui opsi plugin SDK. Lihat [Load plugins in the Agent SDK](/docs/id/agent-sdk/plugins).

164 

165Jika Claude Code melaporkan bahwa plugin yang diaktifkan di `.claude/settings.json` repository tidak diinstal, lihat [Enabled in project settings but not installed](/docs/id/plugins/loading#enabled-in-project-settings-but-not-installed).

166 

167<Tip>

168 Jika Anda adalah penulis plugin yang menguji salinan plugin Anda di disk, mulai Claude Code dari shell Anda dengan `--plugin-dir` untuk memuatnya untuk satu sesi alih-alih menginstalnya. Lihat [Flags that load a plugin for one session](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

169</Tip>

170 

171<h3 id="plugins-from-your-claude-ai-account">

172 Plugin dari akun claude.ai Anda

173</h3>

174 

175Akun claude.ai Anda adalah sumber plugin terpisah, bersama dengan marketplace yang Anda instal dari:

176 

177* **What arrives**: setiap plugin yang Anda aktifkan untuk akun claude.ai Anda, dan setiap plugin yang organisasi Anda aktifkan untuk anggotanya. Dalam sesi terminal mereka disinkronkan di latar belakang setiap kali Anda memulai Claude Code sambil masuk dengan akun itu; dalam sesi Cowork mereka diunduh ketika sesi dimulai.

178* **Where you see them**: di `/plugin` dan `claude plugin list` di bawah ID `<name>@synced`. Anda dapat mematikan satu di cakupan Anda sendiri kecuali organisasi Anda memerlukannya.

179* **What doesn't go the other way**: plugin yang Anda instal dengan `/plugin` atau `claude plugin install` tetap di mesin ini dan tidak ditambahkan ke akun claude.ai Anda.

180 

181Untuk waktu sinkronisasi, persyaratan sign-in, dan mematikan sinkronisasi, lihat [Plugins synced from claude.ai](/docs/id/plugins/loading#synced-plugins).

182 

183<h3 id="install-from-your-shell">

184 Instal dari shell Anda

185</h3>

186 

187Jalankan `claude plugin install` di shell Anda untuk menginstal plugin tanpa memulai sesi Claude Code, misalnya dari skrip setup.

188 

189* **Scope**: cakupan pengguna secara default. Lewatkan `--scope project` atau `--scope local` untuk mengubahnya.

190* **When the plugins load**: plugin yang diinstalnya memuat lain kali Anda memulai Claude Code, atau ketika Anda menjalankan `/reload-plugins` dalam sesi yang sudah terbuka.

191* **The marketplace must be added first**: di mesin di mana tidak ada yang telah membuka sesi Claude Code interaktif, marketplace resmi tidak terdaftar, jadi skrip yang menginstal darinya menjalankan `claude plugin marketplace add anthropics/claude-plugins-official` sebelum instalasi.

192 

193```bash theme={null}

194claude plugin install formatter@your-org --scope project

195```

196 

197Perintah mencetak `Successfully installed plugin: formatter@your-org (scope: project)` ketika selesai.

198 

199Beberapa plugin menginstal dengan menjalankan perintah yang dinamai marketplace mereka, disebut [sumber `command`](/docs/id/plugins/marketplace-reference#command-plugin-source). Claude Code menunjukkan perintah itu kepada Anda dan meminta Anda menerimanya sebelum berjalan. Skrip tidak memiliki siapa pun untuk menjawab prompt itu, jadi lewatkan `--yes` di sana untuk menerimanya.

200 

201Untuk setiap bendera `claude plugin install`, lihat [plugin install](/docs/id/plugins/cli-reference#plugin-install).

202 

203<h2 id="add-a-marketplace">

204 Tambahkan marketplace

205</h2>

206 

207Anda hanya memerlukan bagian ini ketika plugin yang Anda inginkan tidak ada di marketplace resmi Anthropic, misalnya satu yang diterbitkan rekan kerja atau satu dari marketplace komunitas Anthropic.

208 

209Marketplace adalah katalog plugin, dan Claude Code harus tahu tentang marketplace sebelum Anda dapat menginstal darinya. Anda menambahkan marketplace sekali. Setelah itu, plugin-nya muncul di tab **Discover** dan menginstal dengan `/plugin install <plugin>@<marketplace>` dalam sesi atau `claude plugin install <plugin>@<marketplace>` di shell Anda, di mana `<marketplace>` adalah nama yang didaftarkan marketplace. Untuk melakukan keduanya dalam satu langkah, lihat [Add a marketplace and install in one command](#add-a-marketplace-and-install-in-one-command).

210 

211Dalam sesi Claude Code, jalankan `/plugin marketplace add` diikuti oleh sumber marketplace: repository GitHub, repository git di host apa pun, direktori atau file lokal, atau `marketplace.json` yang dihosting.

212 

213| Source | What you type | Example |

214| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

215| GitHub repository | `owner/repo`. Tambahkan `#ref` untuk menyematkan branch atau tag. | `/plugin marketplace add anthropics/claude-code`, atau `/plugin marketplace add your-org/plugins#v1.2.0` untuk menyematkan tag `v1.2.0` |

216| Git repository on any host | URL clone lengkap. Tambahkan `#ref` untuk menyematkan branch atau tag. | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |

217| Local directory or file | Jalur relatif atau absolut ke direktori yang menyimpan `.claude-plugin/marketplace.json`, atau ke file JSON itu sendiri. Mulai jalur relatif dengan `./` atau `../`, karena Claude Code membaca `name/name` telanjang sebagai repository GitHub. | `/plugin marketplace add ./my-marketplace` |

218| Hosted `marketplace.json` | URL `https://`-nya | `/plugin marketplace add https://example.com/marketplace.json` |

219 

220Dari shell Anda, `claude plugin marketplace add` mengambil sumber yang sama.

221 

222<Tip>

223 `/plugin market` juga berfungsi sebagai bentuk lebih pendek dari `/plugin marketplace`.

224</Tip>

225 

226Sertakan awalan `https://` pada setiap URL, atau gunakan bentuk `git@host:path` untuk SSH. Jika Anda mengetik `gitlab.example.com/your-group/your-marketplace.git` telanjang, Claude Code membacanya sebagai shorthand GitHub `owner/repo` dan menolaknya.

227 

228Ketika perintah berhasil, itu mencetak `Successfully added marketplace: <name>`, dan plugin marketplace muncul di tab **Discover** lain kali Anda membuka `/plugin`, tanpa reload diperlukan. Jika gagal, cocokkan pesan error di [Troubleshoot plugins](/docs/id/plugins/troubleshooting#add-a-marketplace).

229 

230<h3 id="add-a-marketplace-and-install-in-one-command">

231 Tambahkan marketplace dan instal dalam satu perintah

232</h3>

233 

234Untuk menginstal plugin dari marketplace yang belum Anda tambahkan, jalankan `/plugin install` dalam sesi Claude Code dan namai sumber marketplace dengan `--marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru.

235 

236```text theme={null}

237/plugin install deploy-helper --marketplace your-org/plugins

238```

239 

240Sumber mengambil [bentuk yang sama seperti `/plugin marketplace add`](#add-a-marketplace), seperti GitHub `owner/repo`, URL git, atau jalur lokal, kecuali bahwa tidak dapat berisi spasi. Berikan nama plugin sendiri, tanpa akhiran `@marketplace`.

241 

242Jika Anda belum menambahkan marketplace itu, Claude Code menunjukkan sumber yang diselesaikan dan meminta Anda mengonfirmasi sebelum menambahkannya. Setelah marketplace ditambahkan, detail plugin membuka dan Anda memilih [cakupan instalasi](#install-a-plugin). Jika sumber cocok dengan marketplace yang sudah Anda tambahkan, Claude Code melewati konfirmasi dan membuka detail plugin di marketplace itu.

243 

244<h3 id="add-a-private-marketplace">

245 Tambahkan marketplace pribadi

246</h3>

247 

248Marketplace pribadi adalah satu di repository yang Anda butuhkan kredensial untuk clone, di GitHub atau host git apa pun. Anda menambahkannya dengan perintah `/plugin marketplace add` atau `claude plugin marketplace add` yang sama seperti yang publik. Claude Code mengklonnya dengan kredensial git yang sudah ada di mesin Anda dan tidak pernah meminta, jadi setiap cara koneksi memiliki persyaratan:

249 

250* **HTTPS**: pembantu kredensial git Anda berlaku, jadi akses yang Anda atur dengan `gh auth login`, Keychain macOS, atau `git-credential-store` berfungsi. Prompt interaktif ditekan, jadi host yang belum pernah Anda autentikasi gagal alih-alih meminta kata sandi.

251* **SSH**: host harus sudah ada di file `known_hosts` Anda dan kunci harus berfungsi tanpa prompt passphrase, karena prompt host-fingerprint dan passphrase juga ditekan.

252* **GitHub `owner/repo` shorthand**: Claude Code memeriksa apakah kunci SSH Anda mengautentikasi ke `github.com`, kemudian mengklonnya melalui SSH jika ya dan melalui HTTPS jika tidak. Atur [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/id/env-vars#variables) untuk melewati pemeriksaan itu dan selalu mengklonnya melalui HTTPS.

253 

254Kredensial yang sama berlaku ketika Anda menjalankan `/plugin install`, `/plugin marketplace update`, dan `claude plugin update`.

255 

256Di host GitHub Enterprise Server, lihat [Plugin marketplaces on GHES](/docs/id/github-enterprise-server#plugin-marketplaces-on-ghes) untuk kredensial yang dibutuhkan setiap operasi.

257 

258Jika organisasi Anda mendaftarkan marketplace untuk Anda melalui pengaturan terkelola, Anda tidak menambahkannya sendiri. Lihat [Pre-install and require plugins](/docs/id/plugins/org#pre-install-and-require-plugins).

259 

260<h3 id="add-from-claude-ai">

261 Tambahkan marketplace dari claude.ai

262</h3>

263 

264Dalam sesi terminal di mana [plugin disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins), claude.ai juga dapat mencantumkan marketplace plugin untuk Anda, seperti perpustakaan plugin organisasi Anda dan unggahan claude.ai Anda sendiri. Anda menambahkan salah satu dari ini dengan namanya daripada oleh sumber. Menambahkan marketplace dari claude.ai memerlukan Claude Code v2.1.273 atau lebih baru.

265 

266Tambahkan marketplace claude.ai dari panel `/plugin` atau dari shell Anda:

267 

268* **Inside a session**: jalankan `/plugin` dan buka tab **Marketplaces**, yang mencantumkan marketplace dari claude.ai. Pilih satu di sana untuk menambahkannya.

269* **From your shell**: jalankan `claude plugin marketplace list`, yang mencetaknya di bagian `From claude.ai:`. Kemudian jalankan `claude plugin marketplace add` dengan bendera `--claudeai` dan nama yang ditampilkan dalam daftar.

270 

271Misalnya, perintah ini menambahkan marketplace bernama `claudeai-organization-library`:

272 

273```bash theme={null}

274claude plugin marketplace add --claudeai claudeai-organization-library

275```

276 

277Claude Code mendaftarkan marketplace di bawah nama lokal yang dimulai dengan `claudeai-`, berasal dari nama yang tercantum claude.ai. Misalnya, marketplace yang tercantum sebagai "Organization library" menjadi `claudeai-organization-library`. Instal plugin-nya dengan nama itu, misalnya dengan `claude plugin install <plugin>@claudeai-organization-library`.

278 

279Jika Anda keluar, atau masuk ke organisasi claude.ai yang berbeda, marketplace tetap dikonfigurasi tetapi tidak menunjukkan plugin, dan plugin yang sudah Anda instal darinya terus memuat.

280 

281Bagian `From claude.ai:` juga dapat mencantumkan marketplace berbasis git yang dibagikan melalui claude.ai, dan itu mencetak sumber untuk masing-masing. Tambahkan mereka dengan sumber itu seperti di [Add a marketplace](#add-a-marketplace), bukan dengan `--claudeai`.

282 

283<h2 id="manage-installed-plugins">

284 Kelola plugin yang diinstal

285</h2>

286 

287Tab **Installed** di `/plugin` mencantumkan plugin Anda dengan tindakan untuk mengaktifkan, menonaktifkan, memperbarui, atau mencopot masing-masing. Dalam sesi Claude Code, jalankan `/plugin` dan tekan **Tab** untuk mencapainya, atau jalankan `/plugin enable`, `/plugin disable`, atau `/plugin uninstall` untuk membuka panel dan membuat perubahan itu di sana. Plugin yang dinonaktifkan dikelompokkan di bawah header yang diciutkan di bagian bawah daftar. Gunakan kunci ini di daftar:

288 

289* Ketik untuk memfilter berdasarkan nama atau deskripsi.

290* Tekan **Space** untuk mengaktifkan atau menonaktifkan plugin yang dipilih, dan **f** untuk menyukainya.

291* Tekan **Enter** untuk membuka detail plugin. Menu di sana menawarkan **Disable plugin** atau **Enable plugin**, **Update now**, dan **Uninstall**. Plugin yang mengambil pengaturan juga menawarkan **Configure options**.

292 

293Tab juga dapat menunjukkan plugin di cakupan **Managed**. Organisasi Anda menginstal mereka melalui [pengaturan terkelola](/docs/id/settings#settings-files), dan Anda tidak dapat mengaktifkan, menonaktifkan, atau mencopot mereka di sini.

294 

295Untuk plugin yang disinkronkan yang organisasi Anda perlukan di claude.ai, lihat [Manage plugins synced from claude.ai](#manage-plugins-synced-from-claude-ai).

296 

297Ketika Anda menutup panel `/plugin` dengan perubahan tertunda yang Anda buat di dalamnya, Claude Code menjalankan `/reload-plugins` untuk Anda untuk menerapkannya. Jika reload akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin), itu memperingatkan dan meninggalkan perubahan tertunda sebagai gantinya. Jalankan `/reload-plugins --force` untuk menerapkannya bagaimanapun.

298 

299<h3 id="manage-plugins-synced-from-claude-ai">

300 Kelola plugin yang disinkronkan dari claude.ai

301</h3>

302 

303Tab **Installed** di `/plugin` juga mencantumkan [plugin yang disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins), dengan `synced` sebagai sumber mereka. Plugin yang disinkronkan muncul dalam sesi terminal di Claude Code v2.1.273 atau lebih baru.

304 

305* **Enable or disable**: gunakan tab **Installed**, kecuali organisasi Anda menandai plugin sebagai diperlukan.

306* **Remove**: matikan plugin di claude.ai.

307 

308Ketika Claude Code menyinkronkan plugin yang ditambahkan, diperbarui, atau dihapus ke sesi interaktif, Anda melihat `Plugins changed. Run /reload-plugins to activate.` Jalankan `/reload-plugins` untuk memuat perubahan dalam sesi itu, atau biarkan untuk lain kali Anda memulai Claude Code.

309 

310<h3 id="uninstall-a-plugin-the-project-enables">

311 Copot plugin yang diaktifkan proyek

312</h3>

313 

314Ketika Anda memilih **Uninstall** untuk plugin yang diaktifkan repository ini `.claude/settings.json`, baik dari tab **Installed** atau dengan `/plugin uninstall`, Claude Code menanyakan apakah akan menonaktifkannya untuk Anda atau mencopotnya untuk semua orang:

315 

316* **Disable for me**: tekan **y**. Claude Code menulis `false` untuk plugin di `.claude/settings.local.json` Anda dan meninggalkannya diinstal untuk proyek.

317* **Uninstall for everyone**: tekan **u**. Claude Code menghapus plugin dari `.claude/settings.json` bersama.

318 

319<h3 id="see-what-an-installed-plugin-adds-to-your-sessions">

320 Lihat apa yang ditambahkan plugin yang diinstal ke sesi Anda

321</h3>

322 

323Di shell Anda, jalankan `claude plugin details <name>` untuk plugin yang diinstal. Baris `Always-on` adalah jumlah token yang ditambahkan plugin ke setiap sesi di mana diaktifkan, dan baris per-komponen menunjukkan skill atau agent mana yang berkontribusi paling banyak. Untuk output lengkap dan apa arti setiap angka, lihat [Measure what a plugin costs](/docs/id/plugins/measure#measure-what-a-plugin-costs).

324 

325<h3 id="find-plugins-you-no-longer-use">

326 Temukan plugin yang tidak lagi Anda gunakan

327</h3>

328 

329Di tab **Installed** di `/plugin`, plugin yang Anda instal sendiri dan belum digunakan baru-baru ini muncul di bawah header **Not used recently**, dan detail setiap plugin menunjukkan baris **Last used**. Gunakan header itu dan baris itu untuk menemukan plugin yang masih menambahkan startup dan context cost, kemudian nonaktifkan atau copot.

330 

331<h3 id="plugins-with-dependencies">

332 Plugin dengan dependensi

333</h3>

334 

335Plugin dapat mendeklarasikan plugin lain yang bergantung padanya. Ketika Anda menginstal, menonaktifkan, atau mencopot plugin seperti itu dari marketplace, Claude Code bertindak pada dependensi itu juga:

336 

337* **Install**: Claude Code juga menginstal dan mengaktifkan dependensi yang dideklarasikan plugin di cakupan yang sama. Pesan kesuksesan mencantumnya.

338* **Enable**: Claude Code juga mengaktifkan dependensi plugin yang diinstal tetapi dinonaktifkan. Jika dependensi yang dideklarasikan tidak diinstal, enable gagal dan pesan memberi tahu Anda untuk menginstalnya terlebih dahulu.

339* **Disable**: ketika plugin yang diaktifkan lain masih membutuhkan yang Anda namai, Claude Code menolak dan mencetak perintah berantai yang menonaktifkan keduanya dalam urutan yang benar.

340* **Uninstall**: dependensi yang diinstal otomatis tetap sampai Anda menjalankan `claude plugin prune` di shell Anda; lihat [plugin prune](/docs/id/plugins/cli-reference#plugin-prune).

341 

342Jika Anda memuat plugin dengan `--plugin-dir` sebagai gantinya, lihat [Test a plugin and its dependency locally](/docs/id/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

343 

344<h3 id="manage-plugins-from-your-shell">

345 Kelola plugin dari shell Anda

346</h3>

347 

348Anda juga dapat mengelola plugin tanpa memulai sesi Claude Code. Di shell Anda, jalankan `claude plugin install`, `enable`, `disable`, atau `uninstall` sebagai perintah terminal biasa; mereka mengubah pengaturan yang sama yang dilakukan panel `/plugin`. Masing-masing mengambil `--scope` untuk menargetkan satu cakupan, dan menggunakan cakupan default ketika Anda menghilangkannya:

349 

350* `enable` dan `disable` bertindak pada cakupan paling spesifik yang pengaturannya sudah mencantumkan plugin.

351* `install` dan `uninstall` bertindak pada cakupan pengguna.

352 

353Misalnya, perintah ini menonaktifkan dan mengaktifkan kembali plugin, kemudian mencopotnya di cakupan proyek:

354 

355```bash theme={null}

356claude plugin disable formatter@your-org

357claude plugin enable formatter@your-org

358claude plugin uninstall formatter@your-org --scope project

359```

360 

361<h2 id="keep-plugins-updated">

362 Jaga plugin tetap terbaru

363</h2>

364 

365Plugin memperbarui secara otomatis ketika marketplace yang mereka berasal dari memiliki auto-update diaktifkan. Setelah sesi dimulai, Claude Code menyegarkan marketplace itu dan memperbarui salinan on-disk plugin yang Anda instal darinya.

366 

367Sesi yang berjalan menyimpan versi yang sudah dimuat. Setelah pembaruan, Anda melihat `Plugin updated: <name> · Run /reload-plugins to apply`, dan sesi berikutnya memuat versi baru secara otomatis.

368 

369Ini adalah default auto-update untuk setiap jenis marketplace:

370 

371* **On by default**: `claude-plugins-official` dan [nama marketplace resmi](/docs/id/plugins/security#official-marketplace-names) lainnya kecuali `knowledge-work-plugins` dan `first-party-plugins`, ditambah [marketplace yang ditambahkan dari claude.ai](#add-from-claude-ai).

372* **Off by default**: setiap marketplace lainnya, termasuk marketplace komunitas, marketplace pihak ketiga, dan marketplace pengembangan lokal.

373 

374Untuk kapan auto-update berjalan, plugin mana yang dilewati, dan variabel lingkungan yang mematikannya, lihat [When auto-update runs](/docs/id/plugins/loading#when-auto-update-runs).

375 

376<h3 id="turn-auto-update-on-or-off-for-a-marketplace">

377 Aktifkan atau matikan auto-update untuk marketplace

378</h3>

379 

380Dalam sesi Claude Code, jalankan `/plugin` dan buka tab **Marketplaces**. Pilih marketplace, kemudian pilih **Enable auto-update** atau **Disable auto-update**.

381 

382<h3 id="update-one-plugin-now">

383 Perbarui satu plugin sekarang

384</h3>

385 

386Dalam sesi, buka plugin di tab **Installed** di `/plugin` dan pilih **Update now**, atau di shell Anda jalankan `claude plugin update <plugin>@<marketplace>`.

387 

388<h3 id="auto-update-from-a-private-marketplace">

389 Auto-update dari marketplace pribadi

390</h3>

391 

392Untuk marketplace pribadi, lihat [What background auto-update does with credentials](/docs/id/plugins/host-marketplace#what-background-auto-update-does-with-credentials) untuk cara background auto-updates mengautentikasi melalui SSH dan HTTPS, dan [Troubleshoot plugins](/docs/id/plugins/troubleshooting#add-a-marketplace) untuk pesan yang Anda lihat ketika mereka gagal.

393 

394<h2 id="manage-marketplaces">

395 Kelola marketplace

396</h2>

397 

398Tab **Marketplaces** di `/plugin` mencantumkan setiap marketplace yang Anda daftarkan, bersama dengan sumbernya. Pilih satu untuk menjelajahi plugin-nya, perbarui daftarnya, aktifkan atau matikan auto-update, atau hapusnya.

399 

400Anda juga dapat mencantumkan, memperbarui, dan menghapus marketplace dengan perintah, dari shell Anda atau dalam sesi:

401 

402| Action | In your shell | Inside a session |

403| :----------------------------- | :---------------------------------------- | :---------------------------------- |

404| List marketplaces | `claude plugin marketplace list` | `/plugin marketplace list` |

405| Update a marketplace's listing | `claude plugin marketplace update <name>` | `/plugin marketplace update <name>` |

406| Remove a marketplace | `claude plugin marketplace remove <name>` | `/plugin marketplace remove <name>` |

407 

408Ketika Anda menghapus marketplace, Claude Code mencopot setiap plugin yang Anda instal darinya dan menghapus entri `enabledPlugins` mereka dari file pengaturan Anda. Tab **Marketplaces** menamai plugin itu sebelum meminta Anda mengonfirmasi.

409 

410<h2 id="next-steps">

411 Langkah berikutnya

412</h2>

413 

414* [Anthropic's marketplaces](/docs/id/plugins/anthropic-marketplaces): bagaimana marketplace resmi, komunitas, dan demo berbeda dan di mana untuk menjelajahi masing-masing

415* [Plugin loading reference](/docs/id/plugins/loading): mengapa plugin dimuat, tidak dimuat, atau tidak berubah setelah pembaruan

416* [Plugin security and trust](/docs/id/plugins/security): apa yang harus ditinjau sebelum Anda menginstal plugin dari marketplace yang tidak Anda kenal

417* [Troubleshoot plugins](/docs/id/plugins/troubleshooting): instal dan pesan error marketplace dengan perbaikan mereka

418* [Create a plugin](/docs/id/plugins/create): bangun milik Anda sendiri

plugins/loading.md +424 −0 created

Details

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# Referensi pemuatan plugin

6 

7> Lacak dari mana Claude Code memuat setiap plugin, file pengaturan mana yang menentukan apakah plugin dimuat, dan mengapa pembaruan tidak mengubah apa pun.

8 

9Gunakan halaman ini ketika plugin tidak dimuat, memuat salinan berbeda dari yang Anda harapkan, atau tidak mengambil pembaruan, dan Anda ingin melihat sumber, cakupan pengaturan, atau file di disk mana yang menentukan hal tersebut. Halaman ini memberikan aturan yang diterapkan Claude Code ketika sesi dimulai dan setiap kali Anda menjalankan `/reload-plugins`. Anda juga dapat meminta Claude untuk membaca halaman ini dan mendiagnosis pengaturan Anda.

10 

11<Note>

12 Kasus-kasus ini tercakup di halaman lain:

13 

14 * **Langkah-langkah install, enable, disable, dan update**: lihat [Install dan kelola plugin](/docs/id/plugins/install)

15 * **Anda memiliki pesan kesalahan spesifik**: lihat [Troubleshoot plugin](/docs/id/plugins/troubleshooting)

16</Note>

17 

18Mulai dengan [Periksa tahap mana yang dicapai plugin](#check-which-stage-a-plugin-reached) untuk tiga tahap yang dilalui plugin yang terinstal, atau buka bagian yang sesuai dengan apa yang Anda lihat:

19 

20* Plugin yang Anda matikan masih dimuat: [Temukan di mana plugin diaktifkan](#find-where-a-plugin-is-enabled)

21* Pembaruan tidak mengubah apa pun: [Versi dan pembaruan](#versions-and-updates)

22* Anda melihat file di bawah `~/.claude/plugins/`: [Temukan plugin di disk](#find-plugins-on-disk)

23* Plugin `--plugin-dir` tidak dimuat, atau plugin dengan nama yang sama dimuat sebagai gantinya: [Konflik nama](#name-conflicts)

24 

25<h2 id="check-which-stage-a-plugin-reached">

26 Periksa tahap mana yang dicapai plugin

27</h2>

28 

29Entri `enabledPlugins` menjadi plugin yang dapat Anda gunakan dalam tahap: pengaturan Anda mendeklarasikannya, Claude Code mengambilnya ke disk, dan sesi yang berjalan memuatnya. Ketika plugin tidak berperilaku seperti yang disarankan file pengaturan, periksa tahap mana yang dicapainya:

30 

31* **Dideklarasikan, dalam pengaturan**: `enabledPlugins` mengatakan plugin mana yang harus aktif, dan `extraKnownMarketplaces` mengatakan marketplace mana yang harus ada. Ketika Anda menjalankan `claude plugin marketplace add`, Claude Code menulis marketplace ke `extraKnownMarketplaces` dalam pengaturan pengguna Anda serta ke disk

32* **Diambil, di disk di bawah `~/.claude/plugins/`**: catatan apa yang telah diambil Claude Code, dan file yang diambil itu sendiri:

33 * `known_marketplaces.json` mencatat setiap marketplace yang telah diambil Claude Code, dengan `source`, `installLocation`, `lastUpdated`, dan `autoUpdate`. Ada satu `known_marketplaces.json` per pengguna, jadi marketplace yang Anda tambahkan dalam satu proyek tersedia di setiap proyek

34 * `installed_plugins.json` mencatat setiap install dengan `scope`, `installPath`, dan `version`

35 * `cache/` menyimpan file plugin

36* **Dimuat, dalam sesi yang berjalan**: set plugin yang dimuat Claude Code saat startup atau di `/reload-plugins` terakhir. Perubahan pada pengaturan atau disk tidak mencapai lapisan ini sampai Anda menjalankan `/reload-plugins` atau memulai sesi baru. Itulah mengapa `claude plugin update` berakhir dengan `Restart to apply changes.` dan pembaruan latar belakang memberi tahu Anda dengan `Run /reload-plugins to apply`

37 

38<h3 id="plugins-and-marketplaces-that-aren’t-on-disk-at-session-start">

39 Plugin dan marketplace yang tidak ada di disk saat startup sesi

40</h3>

41 

42Plugin dimuat saat startup sesi dari `installed_plugins.json` dan cache tanpa menggunakan jaringan. Setelah sesi dimulai, Claude Code memeriksa marketplace yang dideklarasikan di latar belakang:

43 

44* **Marketplace yang dideklarasikan pengaturan tetapi `known_marketplaces.json` tidak memiliki**: Claude Code mengklonnya, kemudian memuat ulang plugin dan mengunduh plugin yang diaktifkan yang belum di-cache

45* **Marketplace yang dideklarasikan yang sumbernya berubah dalam pengaturan**: Claude Code mengambilnya kembali dari sumber baru dan menampilkan `Plugins changed. Run /reload-plugins to activate.`

46 

47Plugin yang diaktifkan yang tidak diambil oleh jalur mana pun dan yang tidak memiliki direktori cache yang dapat digunakan menampilkan `Plugin "<name>" not cached at <path>` di tab **Errors** `/plugin`, dan `claude plugin list` menambahkan `— run /plugin to refresh` ke baris yang sama. Untuk perbaikannya, lihat [`Plugin "<name>" not cached at <path>`](/docs/id/plugins/troubleshooting#plugin-not-cached-at).

48 

49<h2 id="find-where-a-plugin-came-from">

50 Temukan dari mana plugin berasal

51</h2>

52 

53Setiap plugin memiliki id dalam bentuk `<name>@<origin>`, yang merupakan apa yang Anda lihat dalam file pengaturan dan dalam `claude plugin list --json`. Bagian setelah `@` memberi tahu Anda di mana Claude Code menemukan plugin:

54 

55| ID berakhir dengan | Bagaimana plugin sampai di sana | Bagaimana Anda mengaktifkan atau menonaktifkannya |

56| :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

57| `@<marketplace>` | Anda menginstalnya dari marketplace yang Anda tambahkan | `"<name>@<marketplace>": true` atau `false` di bawah `enabledPlugins` dalam file pengaturan |

58| `@inline` | Anda memulai Claude Code dengan `--plugin-dir` atau `--plugin-url`, mengatur [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables), atau aplikasi Agent SDK meneruskan opsi `plugins`. Plugin dimuat untuk sesi itu saja | Aktif untuk sesi kecuali manifest menetapkan `defaultEnabled: false` atau file pengaturan menetapkan `"<name>@inline": false` |

59| `@skills-dir` | Anda menyimpan direktori plugin yang memiliki `.claude-plugin/plugin.json` di bawah `~/.claude/skills/` atau `.claude/skills/` proyek | `defaultEnabled` manifest, kecuali file pengaturan menetapkan `"<name>@skills-dir"` ke `true` atau `false` |

60| `@synced` | Anda atau organisasi Anda mengaktifkannya untuk akun claude.ai Anda, dan Claude Code [mengunduhnya](#synced-plugins) | Aktif kecuali manifest menetapkan `defaultEnabled: false` atau file pengaturan menetapkan `"<name>@synced": false`. Plugin yang ditandai organisasi Anda sebagai wajib dimuat terlepas dari apa pun |

61 

62Untuk plugin marketplace, `<name>` adalah nama entri dalam `marketplace.json`; untuk `@inline` dan `@skills-dir` ini adalah `name` dalam manifest plugin.

63 

64Nama asal dalam tabel ini dicadangkan, jadi tidak ada marketplace yang dapat dinamai `inline`, `skills-dir`, atau `synced`.

65 

66<h3 id="entry-name-and-manifest-name">

67 Nama entri dan nama manifest

68</h3>

69 

70Plugin marketplace memiliki dua nama, dan keduanya dapat berbeda:

71 

72* **Nama entri dalam `marketplace.json`**: kunci install dan enable. Ini adalah apa yang Anda tulis dalam `enabledPlugins`, apa yang dinamai direktori cache, dan apa yang ditampilkan `claude plugin list`

73* **`name` dalam manifest**: apa yang komponen plugin di-namespace di bawahnya, dan apa yang dibandingkan [konflik nama](#name-conflicts)

74 

75<h3 id="plugins-shared-through-a-repository">

76 Plugin yang dibagikan melalui repositori

77</h3>

78 

79Untuk membagikan plugin melalui repositori, daftarkan di bawah `enabledPlugins` dalam `.claude/settings.json` atau tempatkan di bawah `.claude/skills/`. Claude Code tidak memindai direktori `.claude/plugins/` proyek.

80 

81Sesi cloud tidak menambahkan marketplace yang daftar repositori di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces), karena itu memerlukan dialog kepercayaan workspace, yang tidak pernah ditampilkan sesi cloud.

82 

83Plugin direktori skills dengan cakupan proyek dimuat hanya dari `.claude/skills/` dari [direktori kerja utama](/docs/id/permissions#working-directories) sesi, dan hanya setelah Anda menerima [dialog kepercayaan workspace](/docs/id/permissions#what-runs-before-you-trust-a-folder) untuk folder itu. Plugin tidak [mencari direktori induk hingga akar repositori](/docs/id/skills#discovery-from-parent-and-nested-directories) seperti yang dilakukan skill dan perintah biasa. Jika Anda meluncurkan dari subdirektori, plugin di akar repositori tidak dimuat. Luncurkan dari akar repositori sebagai gantinya, atau [pindahkan sesi ke sana dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru.

84 

85Plugin dengan cakupan proyek diperiksa ke dalam repositori dan mencapai setiap kolaborator yang mengklonnya. Karena konten itu berasal dari repositori daripada dari Anda, plugin dimuat hanya setelah pemeriksaan kepercayaan yang sama yang berlaku untuk aturan izin proyek dalam `.claude/settings.json`. Mempercayai folder induk atau menjalankan dengan `-p` tidak cukup. Komponen yang menjalankan kode dibatasi lebih lanjut:

86 

87* Server MCP yang dideklarasikannya melalui [persetujuan per-server yang sama](/docs/id/mcp) seperti `.mcp.json` proyek

88* Server MCP yang dideklarasikannya sebagai [bundel MCP](/docs/id/plugins/manifest-reference#mcpservers), file `.mcpb` atau `.dxt`, atau dari file di luar direktori plugin dilewati. Deklarasikan secara inline atau dalam `.mcp.json` di dalam direktori plugin

89* [Monitor latar belakang](/docs/id/plugins/components#monitors) tidak dimuat

90 

91Plugin dengan cakupan personal tidak memiliki batasan ini.

92 

93Untuk cara menulis plugin `--plugin-dir` dan direktori skills, lihat [Buat plugin](/docs/id/plugins/create).

94 

95<h3 id="synced-plugins">

96 Plugin yang disinkronkan dari claude.ai

97</h3>

98 

99Plugin yang Anda aktifkan untuk akun claude.ai Anda juga dimuat dalam Claude Code, bersama dengan plugin yang Anda instal dari marketplace. Ini termasuk plugin yang organisasi Anda aktifkan untuk anggotanya. Setiap plugin ini dimuat sebagai `<name>@synced`, tanpa marketplace dan tanpa [catatan install](#check-which-stage-a-plugin-reached).

100 

101Dalam sesi terminal, skill, agent, hooks, server MCP, dan server LSP plugin yang disinkronkan semuanya dimuat, dengan kepercayaan yang sama seperti plugin marketplace yang Anda instal.

102 

103Untuk komponen yang dimuat Cowork, lihat [Plugin di claude.ai dan di Cowork](https://claude.com/docs/plugins/overview) di claude.com.

104 

105Plugin yang disinkronkan dimuat dalam sesi Cowork dan dalam sesi terminal di mana Anda masuk dengan akun claude.ai Anda:

106 

107* **[Cowork](https://claude.com/product/cowork)**: Claude Code mengunduhnya ke lingkungan sesi itu sendiri ketika sesi dimulai

108* **Sesi terminal**: setiap kali Anda memulai Claude Code, plugin disinkronkan sekali di latar belakang, mengunduh plugin baru dan yang diperbarui serta menghapus yang Anda atau organisasi Anda matikan. Sinkronisasi dalam sesi terminal memerlukan Claude Code v2.1.273 atau lebih baru

109 

110<h4 id="sync-timing-in-terminal-sessions">

111 Waktu sinkronisasi dalam sesi terminal

112</h4>

113 

114Karena sinkronisasi terminal berjalan di latar belakang, dapat selesai setelah sesi Anda telah dimulai. Ketika menambah, memperbarui, atau menghapus plugin yang disinkronkan dalam sesi interaktif, Anda melihat `Plugins changed. Run /reload-plugins to activate.` Jalankan `/reload-plugins` untuk memuat perubahan dalam sesi itu, atau biarkan untuk lain kali Anda memulai Claude Code.

115 

116Jika Anda mengaktifkan plugin di claude.ai saat sesi sedang berjalan, plugin mengunduh lain kali Anda memulai Claude Code.

117 

118<h4 id="sign-in-requirements-for-terminal-sync">

119 Persyaratan masuk untuk sinkronisasi terminal

120</h4>

121 

122Di terminal Anda, plugin disinkronkan hanya dalam sesi di mana Anda masuk dengan akun claude.ai Anda.

123 

124Jika Anda masuk pada versi Claude Code yang lebih awal, masuk itu tidak mencakup plugin sampai Claude Code memperbarui di latar belakang. Untuk mendapatkan akses lebih cepat, jalankan `/login` lagi. Sinkronisasi plugin kemudian dimulai lain kali Anda memulai Claude Code.

125 

126<h4 id="control-which-synced-plugins-load">

127 Kontrol plugin yang disinkronkan mana yang dimuat

128</h4>

129 

130Anda dapat menonaktifkan plugin yang disinkronkan satu per satu, kecuali plugin yang organisasi Anda wajibkan, atau menonaktifkan setiap plugin yang disinkronkan di mesin:

131 

132* **Satu plugin**: `claude plugin disable <name>@synced` dalam shell Anda dan tab **Installed** `/plugin` dalam sesi keduanya menyimpan `"<name>@synced": false` dalam [`enabledPlugins`](/docs/id/settings-reference#enabledplugins) tingkat pengguna Anda. Untuk menjaga plugin keluar dari proyek di setiap lingkungan, atur kunci yang sama dalam `.claude/settings.json` yang berkomitmen proyek

133* **Setiap plugin yang disinkronkan di mesin**: atur [`syncClaudeAiPlugins`](/docs/id/settings-reference#syncclaudeaiplugins) ke `false` dalam pengaturan pengguna Anda, atau organisasi Anda mengaturnya dalam [pengaturan terkelola](/docs/id/managed-settings). Claude Code berhenti mengunduh, dan lain kali Anda memulainya, plugin yang sudah disinkronkan dipindahkan ke `~/.claude/plugins/.trash/` dan tidak lagi dimuat. Jika organisasi Anda menonaktifkan Skills di claude.ai, plugin juga berhenti disinkronkan

134* **Plugin yang organisasi Anda wajibkan**: plugin yang organisasi Anda tandai sebagai wajib di claude.ai dimuat bahkan jika Anda menonaktifkannya sebelumnya. `claude plugin disable` menolaknya dengan `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.`, dan `claude plugin list` menandainya `required by your org`

135 

136Untuk menghapus plugin di claude.ai, lihat [Kelola plugin yang terinstal](/docs/id/plugins/install#manage-installed-plugins).

137 

138<h2 id="find-where-a-plugin-is-enabled">

139 Temukan di mana plugin diaktifkan

140</h2>

141 

142Anda dapat mengatur entri `enabledPlugins` dalam salah satu dari enam sumber. Tabel mencantumnya dari preseden terendah ke tertinggi, dan siapa yang masing-masing berlaku. Untuk file pengaturan itu sendiri, lihat [File pengaturan dan siapa yang mereka pengaruhi](/docs/id/settings#where-settings-live).

143 

144| Sumber | Di mana Anda mengaturnya | Menjangkau |

145| :---------- | :--------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |

146| `--add-dir` | `.claude/settings.json` atau `.claude/settings.local.json` dalam direktori yang Anda teruskan dengan `--add-dir` | Sesi ini saja. Hanya nilai `true` yang memiliki efek, dan setiap sumber lain menimpanya |

147| `user` | `~/.claude/settings.json` | Anda, dalam setiap proyek |

148| `project` | `.claude/settings.json` | Semua orang yang mengklona repositori |

149| `local` | `.claude/settings.local.json` | Anda, dalam repositori ini saja |

150| `flag` | Nilai `--settings` yang Anda teruskan saat peluncuran | Sesi ini saja |

151| `managed` | [Pengaturan terkelola](/docs/id/managed-settings) | Setiap pengguna yang dicakup kebijakan. `true` force-enable dan `false` blok, dan tidak ada sumber lain yang menimpanya |

152 

153Sumber-sumber ini menggabungkan kunci demi kunci. Untuk setiap id plugin, nilai yang berlaku adalah nilai dari sumber preseden tertinggi yang menyebutkan id. Sumber yang tidak menyebutkan id membiarkan nilai dari sumber preseden lebih rendah tetap berlaku.

154 

155<h3 id="disabled-in-user-settings-but-still-loads">

156 Dinonaktifkan dalam pengaturan pengguna tetapi masih dimuat

157</h3>

158 

159Jika Anda mengatur plugin ke `false` dalam `~/.claude/settings.json` dan masih dimuat, `true` dalam sumber preseden lebih tinggi menimpanya. Baris plugin dalam `claude plugin list` dan dalam `/plugin` menampilkan `Disabled in ~/.claude/settings.json but still loads — project settings enable it, which overrides your user setting`. Pesan menyebutkan sumber yang menimpa Anda: `project`, `project, gitignored` untuk `.claude/settings.local.json`, `cli flag`, atau `managed`.

160 

161Untuk keluar dari plugin yang diaktifkan proyek di mesin Anda, atur id ke `false` dalam `.claude/settings.local.json`, yang memiliki preseden lebih tinggi daripada file proyek.

162 

163<h3 id="enabled-in-project-settings-but-not-installed">

164 Diaktifkan dalam pengaturan proyek tetapi tidak terinstal

165</h3>

166 

167Ketika satu-satunya `true` plugin dalam `.claude/settings.json` proyek, Claude Code tidak mengambilnya ke mesin di mana plugin tidak terinstal, kecuali entri marketplace-nya memiliki [sumber jalur relatif](/docs/id/plugins/marketplace-reference#plugin-sources) atau [direktori seed](/docs/id/plugins/org#seed-containers-and-ci) sudah menyimpannya. Sebagai gantinya, tab **Errors** `/plugin` menampilkan `Plugin "<name>" is enabled in project settings but isn't installed here`.

168 

169Plugin jalur relatif tidak memerlukan catatan install karena dimuat dari marketplace itu sendiri.

170 

171Claude Code mengambil plugin dengan sumber eksternal hanya ketika salah satu sumber ini mengaturnya ke `true`:

172 

173* Pengaturan pengguna Anda

174* `.claude/settings.local.json` yang tidak dilacak git

175* Bendera `--settings`

176* Pengaturan terkelola

177 

178<h2 id="find-plugins-on-disk">

179 Temukan plugin di disk

180</h2>

181 

182Claude Code menyimpan file plugin dan catatan status di bawah satu root plugin, yaitu `~/.claude/plugins` kecuali Anda menetapkan [`CLAUDE_CODE_PLUGIN_CACHE_DIR`](/docs/id/env-vars). Setiap path dalam tabel adalah relatif terhadap root tersebut.

183 

184| Path | Apa yang disimpannya |

185| :----------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

186| `cache/<marketplace>/<plugin>/<version>/` | Satu direktori per versi plugin marketplace yang terinstal. `<plugin>` adalah nama entri marketplace dan `<version>` adalah [versi yang diselesaikan](#versions-and-updates). `${CLAUDE_PLUGIN_ROOT}` menunjuk ke direktori ini |

187| `data/<plugin-id>/` | Direktori persisten plugin, diekspos sebagai `${CLAUDE_PLUGIN_DATA}`. Untuk cara `<plugin-id>` dibentuk, lihat [Path variables and persistent data](/docs/id/plugins/components#path-variables-and-persistent-data). Claude Code membuatnya ketika komponen plugin pertama kali menggunakannya dan menyimpannya di seluruh pembaruan. Claude Code menghapusnya ketika Anda mencopot plugin dari scope terakhirnya, kecuali Anda melewatkan `--keep-data` |

188| `marketplaces/<name>/` | Klon atau unduhan marketplace yang ditambahkan dari GitHub, host Git lain, atau URL. Marketplace yang ditambahkan dari sumber `file` atau `directory` lokal tidak memiliki salinan di sini, dan `installLocation` dalam `known_marketplaces.json` adalah path yang Anda berikan |

189| `synced/` | Plugin yang Claude Code [sinkronkan dari akun claude.ai Anda](#synced-plugins) |

190| `.trash/` | Plugin yang sinkronisasi claude.ai hapus, seperti setelah Anda mematikannya di claude.ai atau berhenti menyinkronkan |

191| `installed_plugins.json` dan `known_marketplaces.json` | Catatan tentang apa yang telah Claude Code instal dan marketplace mana yang telah diambilnya, dijelaskan di bawah [Check which stage a plugin reached](#check-which-stage-a-plugin-reached). [Marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai) dicatat dalam `known_marketplaces_claudeai.json` sebagai gantinya |

192| `flagged-plugins.json` | Plugin yang Claude Code copot karena marketplace mereka menghapus daftarnya. Mereka muncul di bagian **Flagged** dari `/plugin`; lihat [Host a marketplace](/docs/id/plugins/host-marketplace) |

193 

194Karena `${CLAUDE_PLUGIN_ROOT}` menunjuk ke direktori versi, path root plugin berubah dengan setiap versi. Simpan file tahan lama plugin dalam `${CLAUDE_PLUGIN_DATA}` sebagai gantinya.

195 

196<h3 id="in-place-and-copied-plugins">

197 Plugin in-place dan yang disalin

198</h3>

199 

200Claude Code memuat beberapa plugin di tempat dari mana Anda menyimpannya dan menyalin sisanya ke dalam cache, sesuai dengan asal mereka:

201 

202* **Plugin `--plugin-dir` dan skills-directory**: direktori dimuat di tempat dan tidak pernah disalin. Arsip `--plugin-url` atau `.zip` `--plugin-dir` diekstrak ke direktori temp sesi terlebih dahulu

203* **Plugin dengan path relatif di marketplace yang Anda tambahkan dari direktori lokal**: plugin dimuat di tempat dari pathnya di dalam folder marketplace. Edit Anda ke direktori sumber berlaku pada awal sesi berikutnya atau `/reload-plugins`, dan Anda tidak perlu meningkatkan versi. Proses hook plugin dan server MCP dan LSP menerima `CLAUDE_PLUGIN_ROOT` yang menunjuk ke direktori sumber. Untuk dependensi paket Node.js-nya, lihat [When the dependency install runs](#when-the-dependency-install-runs)

204* **Plugin sumber `command` dalam [link mode](/docs/id/plugins/marketplace-reference#command-plugin-source)**: direktori yang dicetak perintah dimuat di tempat, melalui link di entri cache

205* **Setiap plugin marketplace lainnya**: Claude Code menyalin plugin ke dalam `cache/<marketplace>/<plugin>/<version>/` saat instalasi dan memuat salinan tersebut. File di luar direktori plugin tidak disalin, jadi ketika skrip di dalam plugin yang disalin membaca path di atas root plugin, seperti `../shared`, itu tidak menemukannya

206 

207<h3 id="paths-that-escape-the-plugin-directory">

208 Path yang keluar dari direktori plugin

209</h3>

210 

211Baik plugin dimuat di tempat atau dari salinan cache, Claude Code tidak membiarkannya mendeklarasikan komponen di luar direktorinya sendiri. Claude Code menolak path komponen yang diselesaikan di luar root plugin, baik path dideklarasikan dalam `plugin.json` atau dalam entri marketplace:

212 

213* **Path yang menunjuk di luar plugin seperti yang ditulis**, seperti `../shared-utils`

214* **Symlink yang mengarah di luar plugin**, selain [link antar plugin dalam satu marketplace](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

215* **Di macOS dan Linux, path yang berisi backslash di mana pun di dalamnya**, bahkan ketika path tetap berada di dalam plugin. Komponen yang dideklarasikan dengan path backslash oleh karena itu hanya dimuat di Windows, jadi tulis path komponen dengan forward slash, seperti `./commands/deploy.md`

216 

217Path yang ditolak muncul sebagai kesalahan [`path escapes plugin directory`](/docs/id/errors#path-escapes-plugin-directory), dan plugin dimuat tanpa komponen tersebut.

218 

219<h3 id="cleanup-of-previous-versions">

220 Pembersihan versi sebelumnya

221</h3>

222 

223Ketika Anda memperbarui atau mencopot plugin, Claude Code menulis penanda `.orphaned_at` ke dalam direktori versi sebelumnya. Claude Code menghapus direktori tersebut dalam pembersihan latar belakang 14 hari kemudian, jadi sesi yang sudah memuat versi lama terus berjalan.

224 

225Sweep hanya berjalan saat `installed_plugins.json` mencatat setidaknya satu instalasi. Setelah Anda mencopot plugin terakhir Anda, direktori orphaned tetap ada sampai Anda menginstal yang lain.

226 

227<h3 id="node-js-package-dependencies">

228 Dependensi paket Node.js

229</h3>

230 

231Ketika Claude Code menyalin plugin ke dalam cache, Claude Code juga menginstal dependensi paket Node.js plugin di sana, sehingga hook dan server MCP plugin dapat memuatnya.

232 

233Bagian ini mencakup paket npm dan Bun yang dideklarasikan plugin dalam `package.json`-nya sendiri. Untuk plugin yang bergantung pada plugin lain, lihat [plugin dependency versions](/docs/id/plugins/dependencies).

234 

235<h4 id="when-the-dependency-install-runs">

236 Kapan dependency install berjalan

237</h4>

238 

239Claude Code menjalankan instalasi di dalam direktori versi yang disalin setiap kali membuat satu:

240 

241* Ketika Anda menginstal plugin

242* Ketika Claude Code memperbarui plugin ke versi baru

243* Saat awal sesi ketika plugin yang diaktifkan belum di-cache, seperti di mesin baru

244 

245Untuk plugin dengan path relatif [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal, Claude Code tidak menginstal dependensi ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins/components#path-variables-and-persistent-data).

246 

247Instalasi hanya berjalan ketika direktori root plugin berisi baik `package.json` maupun lockfile yang didukung. Lockfile menentukan perintah mana yang Claude Code jalankan:

248 

249| Lockfile | Perintah |

250| :--------------------------------------------- | :----------------------------------------------- |

251| `bun.lock` atau `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

252| `npm-shrinkwrap.json` atau `package-lock.json` | `npm ci --ignore-scripts` |

253 

254Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa dalam urutan: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

255 

256Claude Code melewati instalasi untuk lockfile Yarn dan pnpm dan untuk `bunfig.toml` di samping lockfile Bun:

257 

258* Jika plugin Anda hanya memiliki `yarn.lock` atau `pnpm-lock.yaml`, gantikan dengan lockfile npm

259* Jika `bunfig.toml` berada di direktori yang sama dengan lockfile Bun, hapus `bunfig.toml`, atau gantikan lockfile Bun dengan lockfile npm

260 

261Sertakan lockfile npm untuk menjangkau pengguna paling banyak. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak mencoba lockfile lain sebagai gantinya jika package manager tersebut hilang.

262 

263Untuk plugin yang didistribusikan melalui sumber npm, gunakan `npm-shrinkwrap.json`, karena npm mengecualikan `package-lock.json` dari paket yang dipublikasikan.

264 

265<h4 id="limits-on-the-dependency-install">

266 Batas pada dependency install

267</h4>

268 

269Claude Code membatasi dependency install ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama itu, dan membatasi berapa lama itu dapat berjalan:

270 

271* **Frozen resolution**: Bun dan npm menginstal dengan tepat apa yang lockfile pin, dan gagal daripada menyelesaikan ulang versi ketika `package.json` dan lockfile tidak setuju

272* **No lifecycle scripts**: `--ignore-scripts` menjaga skrip `preinstall`, `install`, dan `postinstall` agar tidak berjalan, sehingga dependensi yang membangun modul native dalam skrip tersebut diunduh tetapi tidak dikompilasi selama instalasi ini

273* **60-second timeout**: Claude Code menghentikan instalasi yang berjalan lebih lama dan memperlakukannya sebagai gagal

274 

275Claude Code mengambil plugin sumber npm sebelum dependency install ini, dan tidak ada skrip instalasi paket sendiri yang berjalan selama pengambilan. Lihat [npm plugin source](/docs/id/plugins/marketplace-reference#npm-plugin-source).

276 

277Anda tidak dapat mematikan instalasi otomatis. Tidak ada pengaturan atau variabel lingkungan yang menonaktifkannya.

278 

279Di jaringan terbatas, lihat [network access requirements](/docs/id/network-config#network-access-requirements) untuk host yang diizinkan.

280 

281<h4 id="when-the-dependency-install-fails-or-is-skipped">

282 Ketika dependency install gagal atau dilewati

283</h4>

284 

285Instalasi yang gagal atau dilewati tidak pernah memblokir plugin, dan setiap kasus meninggalkan tanda yang berbeda:

286 

287* Instalasi yang gagal, atau yang dilewati karena lockfile Yarn atau pnpm atau `bunfig.toml`, muncul sebagai peringatan dalam output `claude --debug`

288* Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log

289* Instalasi yang habis waktu dapat meninggalkan pohon `node_modules` parsial dalam salinan cache

290 

291Ketika instalasi otomatis tidak dapat menyediakan dependensi, instal dari hook ke [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data). Itu termasuk paket yang memerlukan skrip lifecycle mereka untuk membangun, dependensi Python, dan plugin yang dikunci dengan Yarn atau pnpm.

292 

293<h2 id="versions-and-updates">

294 Versi dan pembaruan

295</h2>

296 

297Jika penulis plugin mendorong komit baru dan `claude plugin update` mencetak `<name> is already at the latest version (<version>).`, versi yang dihitung Claude Code untuk plugin tidak berubah, jadi tidak ada yang berubah di disk.

298 

299Claude Code menghitung versi untuk setiap plugin yang diinstal, dan versi itu adalah cara mendeteksi pembaruan. `claude plugin update` dan auto-update latar belakang menghitung versi lagi dan melewati plugin ketika cocok dengan apa yang dicatat `installed_plugins.json`.

300 

301Versi juga menamai direktori cache plugin.

302 

303Manifest yang menyematkan `"version"` adalah salah satu cara versi yang dihitung tetap sama di seluruh komit. Lihat [Bagaimana Claude Code menghitung versi](#how-claude-code-computes-the-version) untuk urutan resolusi.

304 

305Plugin [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal memuat file sumber saat ini di setiap startup sesi, apa pun string versinya. Untuk plugin dari [marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai), versi yang dicatat claude.ai untuk plugin adalah versinya, dan `version` manifest tidak dibaca.

306 

307<h3 id="how-claude-code-computes-the-version">

308 Bagaimana Claude Code menghitung versi

309</h3>

310 

311Untuk marketplace yang Anda tambahkan berdasarkan sumber, Claude Code memilih aturan berdasarkan tipe `source` entri marketplace plugin. [Referensi marketplace](/docs/id/plugins/marketplace-reference#plugin-sources) mencantumkan tipe sumber. Untuk setiap tipe sumber dalam daftar itu kecuali `command`:

312 

3131. Bidang `version` dalam manifest plugin datang terlebih dahulu

3142. Kemudian bidang `version` dalam entri marketplace plugin

3153. Ketika tidak ada yang ditetapkan, versi berasal dari tipe sumber:

316 

317| Tipe sumber | Versi ketika tidak ada bidang `version` yang ditetapkan |

318| :----------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- |

319| `github`, `url`, atau `git-subdir` | SHA komit dari sumber, diperpendek menjadi 12 karakter. Versi `git-subdir` juga membawa hash dari jalur subdirektori |

320| `archive` | Digest SHA-256, diperpendek menjadi 12 karakter: pin `sha256` dalam entri marketplace, atau digest file yang diunduh ketika tidak ada pin |

321| Jalur relatif di dalam marketplace yang dihosting Git | SHA komit dari direktori yang diinstal |

322| Direktori lokal, ketika direktori plugin maupun marketplace-nya bukan repositori git | `unknown` |

323| `npm` | `unknown` |

324 

325Claude Code tidak mengambil versi dari repositori yang menutup jalur install, seperti `~/.claude` yang dikelola git.

326 

327Untuk sumber `command`, Claude Code selalu menurunkan versi dari apa yang dihasilkan perintah: hash 12 karakter sendiri, atau `<manifest version>-<hash>` ketika manifest menetapkan satu. Entri marketplace `version` diabaikan untuk sumber command. Untuk apa yang dicakup hash, lihat [Mode copy dan mode link](/docs/id/plugins/marketplace-reference#copy-mode-and-link-mode).

328 

329Karena manifest datang terlebih dahulu, manifest yang menyematkan `"version": "1.0.0"` menjaga setiap pengguna pada salinan cache sampai penulis mengubah string, berapa pun komit yang mereka dorong. Untuk membiarkan pengguna melacak komit sebagai gantinya, tinggalkan `version` dari manifest dan entri. [Host marketplace](/docs/id/plugins/host-marketplace) mencakup pilihan mana yang sesuai dengan setup rilis mana.

330 

331<h3 id="when-claude-code-refreshes-a-marketplace-before-an-install">

332 Kapan Claude Code menyegarkan marketplace sebelum install

333</h3>

334 

335Ketika Anda menginstal plugin, Claude Code mencarinya dalam salinan lokal katalog marketplace. Anda dapat menjalankan `/plugin install` dalam sesi atau `claude plugin install` dalam shell Anda, dan menamai plugin dengan atau tanpa marketplace-nya. Tabel menunjukkan kombinasi mana dari itu yang menyegarkan salinan lokal.

336 

337| Nama plugin | Perintah | Apa yang Claude Code segarkan |

338| :----------------- | :--------------------------------------------- | :----------------------------------------------------------------------------------- |

339| `name@marketplace` | `/plugin install` atau `claude plugin install` | Marketplace yang dinamai, sebelum pencarian |

340| `name` saja | `/plugin install` | Hanya marketplace yang memiliki auto-update aktif, dan hanya setelah pencarian gagal |

341| `name` saja | `claude plugin install` | Tidak ada. Plugin membaca katalog cache tanpa menyegarkan |

342 

343Penyegaran sebelum install `name@marketplace` tidak bergantung pada pengaturan auto-update marketplace atau pada `DISABLE_AUTOUPDATER`.

344 

345Ketika penyegaran gagal, install berlanjut dari katalog cache dan `claude plugin install` melaporkan `marketplace not refreshed`.

346 

347Claude Code melewati penyegaran sebelum install `name@marketplace` ketika:

348 

349* Marketplace ditambahkan dari sumber `file` atau `directory` lokal, atau didefinisikan inline dalam pengaturan dengan [sumber `settings`](/docs/id/settings-reference#extraknownmarketplaces)

350* [Direktori seed](/docs/id/env-vars) menyediakan marketplace

351* Claude Code menyegarkan marketplace dalam 30 detik terakhir

352* Anda mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

353* [Pengaturan terkelola](/docs/id/plugins/org#restrict-what-users-can-install) memblokir marketplace, dalam hal ini Claude Code juga menolak install

354 

355<h3 id="when-auto-update-runs">

356 Kapan auto-update berjalan

357</h3>

358 

359Dalam sesi interaktif, setelah Anda mengirim pesan pertama, Claude Code menunggu penundaan acak hingga sepuluh menit. Plugin kemudian menyegarkan setiap marketplace dengan auto-update aktif dan memperbarui plugin yang diinstal dari mereka di disk.

360 

361Sesi yang berjalan menyimpan versi yang dimuat, dan Anda melihat `Plugin updated: <name> · Run /reload-plugins to apply`. Apakah Anda memuat ulang atau tidak, versi baru dimuat pada peluncuran berikutnya Anda.

362 

363<h4 id="which-marketplaces-and-plugins-auto-update">

364 Marketplace dan plugin mana yang auto-update

365</h4>

366 

367Apakah marketplace auto-update mengikuti yang pertama dari ini yang ditetapkan:

368 

3691. **`autoUpdate` pada entri `extraKnownMarketplaces`-nya** dalam file pengaturan

3702. **`autoUpdate` pada entri `known_marketplaces.json`-nya**, yang toggle **Enable auto-update** di bawah `/plugin` **Marketplaces** tulis. Ketika file pengaturan juga mendeklarasikan marketplace di bawah `extraKnownMarketplaces`, toggle juga menulis `autoUpdate` ke entri pengaturan itu

3713. **Default**: aktif untuk marketplace resmi Anthropic seperti `claude-plugins-official`, nonaktif untuk `knowledge-work-plugins` dan `first-party-plugins`, aktif untuk [marketplace yang ditambahkan dari claude.ai](/docs/id/plugins/install#add-from-claude-ai), dan nonaktif untuk setiap marketplace lainnya

372 

373Jika Anda mengatur `DISABLE_UPDATES=1`, `DISABLE_AUTOUPDATER=1`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, seluruh pass nonaktif dan toggle **Enable auto-update** disembunyikan, kecuali Anda juga mengatur `FORCE_AUTOUPDATE_PLUGINS=1`. [Referensi variabel lingkungan](/docs/id/env-vars) mencakup efek lebih luas setiap variabel.

374 

375Auto-update juga melewati plugin yang entri marketplace-nya mendeklarasikan `headersHelper`. [Install dan pembaruan yang menolak perintah alih-alih bertanya](/docs/id/plugins/host-marketplace#installs-and-updates-that-refuse-the-command-instead-of-asking) menjelaskan kapan plugin seperti itu muncul di tab **Errors** `/plugin` dan cara Anda memperbarui dari sana.

376 

377Ketika plugin yang disalin diperbarui mid-session, perintah hook, monitor, server MCP, dan server LSP terus menggunakan jalur versi sebelumnya. Jalankan `/reload-plugins` untuk beralih hook, server MCP, dan server LSP ke jalur baru. Monitor memerlukan restart sesi.

378 

379<h3 id="when-a-command-source-re-runs">

380 Kapan sumber command dijalankan kembali

381</h3>

382 

383Plugin dengan sumber `command` tidak menunggu [pass auto-update](#when-auto-update-runs). Direktori yang dicetak mencerminkan status alat pada waktu perintah berjalan, jadi Claude Code menjalankan [perintah yang Anda terima](/docs/id/plugins/host-marketplace#change-the-command-of-a-command-source) lagi pada waktu-waktu ini:

384 

385* Setiap kali Anda menginstal atau memperbarui plugin

386* Sekali per sesi untuk setiap plugin yang bersumber command yang diaktifkan, di latar belakang, segera setelah sesi dimulai. Jalankan ini tidak bergantung pada pengaturan auto-update marketplace atau pada `DISABLE_AUTOUPDATER`

387* Saat startup atau di `/reload-plugins`, ketika versi yang diinstal plugin yang diaktifkan hilang dari cache plugin

388 

389Claude Code melewati dua jalankan latar belakang ketika Anda mengatur [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars). Install dan pembaruan eksplisit masih menjalankan perintah dengan variabel itu ditetapkan.

390 

391Ketika output hash perintah telah berubah, Claude Code menginstal hasil sebagai versi baru dan memuat ulang dalam sesi interaktif yang berjalan, beralih [komponen yang sama yang `/reload-plugins` alihkan](/docs/id/plugins/cli-reference#reload-plugins). Anda melihat notifikasi bahwa plugin dimuat ulang.

392 

393Jika memuat ulang di tempat akan membatalkan cache prompt sesi, Claude Code sebagai gantinya memberi tahu Anda untuk menjalankan `/reload-plugins`, yang [memperingatkan tentang biaya cache dan berlaku ketika dijalankan kembali dengan `--force`](/docs/id/prompt-caching#enabling-or-disabling-a-plugin).

394 

395<h2 id="name-conflicts">

396 Konflik nama

397</h2>

398 

399Ketika plugin yang diaktifkan dari asal berbeda berbagi nama manifest, urutan ini menentukan mana yang dimuat, dari preseden tertinggi ke terendah:

400 

4011. Plugin yang id-nya muncul dalam pengaturan terkelola `enabledPlugins`, sebagai `true` atau `false`. Salinan `--plugin-dir` yang nama manifest-nya cocok dengan bagian nama id tidak dimuat, dan Anda melihat `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`

4022. Plugin `--plugin-dir`, `--plugin-url`, atau `CLAUDE_CODE_PLUGIN_DIRS` yang diaktifkan. Plugin menggantikan plugin marketplace atau direktori skills yang sama-nama yang terinstal:

403 * **Plugin marketplace yang terinstal**: digantikan diam-diam. `claude plugin list` masih menampilkan baris marketplace sebagai diaktifkan, karena baris itu mencerminkan pengaturan Anda. Hanya log yang ditulis Claude Code di bawah `~/.claude/debug/` ketika Anda memulai dengan `--debug` yang mencatat `Plugin "<name>" from --plugin-dir overrides installed version`

404 * **Plugin direktori skills**: digantikan dengan baris tab **Errors** `/plugin` yang berbunyi `Not loaded — the name "<name>" is already taken by a session-only plugin (--plugin-dir / --plugin-url), which takes precedence`

4053. Plugin marketplace yang terinstal. Plugin direktori skills dengan nama yang sama mendapat baris `Not loaded` yang sama, menamai plugin yang terinstal

4064. Plugin direktori skills. Antara dua ini, salinan di bawah `~/.claude/skills/` dimuat dan salinan `.claude/skills/` proyek dijatuhkan, dengan baris yang mengatakan jalur mana yang menaunginya

4075. Plugin [disinkronkan dari claude.ai](#synced-plugins). Ketika plugin yang diaktifkan dari asal lain cocok dengan namanya, Claude Code memuat plugin itu dan melaporkan salinan yang disinkronkan sebagai tidak dimuat. Untuk menggunakan salinan claude.ai sebagai gantinya, nonaktifkan salinan Anda sendiri

408 

409Karena urutan membandingkan nama manifest, plugin `--plugin-dir` bernama `hello-plugin` menggantikan `hello@example-marketplace` ketika manifest plugin itu juga mengatakan `"name": "hello-plugin"`.

410 

411<h3 id="keep-a-session-only-plugin-from-loading">

412 Jaga plugin session-only agar tidak dimuat

413</h3>

414 

415Untuk menjaga plugin `--plugin-dir` agar tidak menaungi apa pun, atau untuk menonaktifkannya ketika proses induk meneruskan bendera untuk Anda, atur id-nya ke `false` dalam file pengaturan apa pun. Untuk plugin yang nama manifest-nya adalah `hello-plugin`, entri adalah `"enabledPlugins": {"hello-plugin@inline": false}`. Plugin session-only yang dinonaktifkan tidak menaungi, jadi salinan marketplace atau direktori skills dimuat sebagai gantinya.

416 

417<h2 id="next-steps">

418 Langkah berikutnya

419</h2>

420 

421* [Install dan kelola plugin](/docs/id/plugins/install): langkah install, enable, disable, dan update itu sendiri

422* [Troubleshoot plugin](/docs/id/plugins/troubleshooting): pesan kesalahan berdasarkan tahap yang menghasilkannya

423* [Referensi perintah plugin](/docs/id/plugins/cli-reference): bendera dan perintah yang dinamai di halaman ini

424* [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org): pengaturan terkelola yang force-enable atau blok plugin

plugins/manifest-reference.md +710 −0 created

Details

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# Referensi manifest plugin

6 

7> Referensi lengkap untuk plugin.json: setiap field dengan tipenya dan default, bentuk path yang diterima, dan skema userConfig serta variabel lingkungan.

8 

9Manifest plugin adalah file `plugin.json` di direktori `.claude-plugin/` plugin. File ini membawa metadata plugin dan nilai [`userConfig`](#user-configuration) yang diminta Claude Code kepada pengguna. File ini juga mendeklarasikan komponen apa pun yang Anda tentukan secara inline atau simpan di luar [lokasi defaultnya](#standard-layout).

10 

11Referensi ini untuk pembuat plugin, dan untuk pemilik marketplace yang menempatkan field komponen dalam entri marketplace.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Belajar membangun plugin**: mulai dengan [Buat plugin](/docs/id/plugins/create)

17 * **Apa yang dilakukan setiap komponen saat runtime**: lihat [Komponen plugin](/docs/id/plugins/components)

18</Note>

19 

20Mulai dari bagian yang sesuai dengan apa yang Anda cari:

21 

22* Sebuah field: tabel [Fields](#fields) memberikan tipe setiap field, apakah diperlukan, defaultnya, dan apa yang diterima. [Path rules](#path-rules) mencakup awalan `./` dan containment untuk setiap path komponen

23* Opsi `userConfig` atau entri `channels`: skema [User configuration](#user-configuration) dan [Channels](#channels)

24* `${CLAUDE_PLUGIN_ROOT}` atau variabel lain yang dapat direferensikan plugin: [Environment variables](#environment-variables)

25* Di mana file setiap komponen berada: [Standard layout](#standard-layout)

26* Pesan dari `claude plugin validate`: halaman [troubleshooting](/docs/id/plugins/troubleshooting) mencantumkan setiap pesan dengan perbaikannya dan tautan ke bagian relevan di halaman ini

27 

28<h2 id="manifest-file">

29 Manifest file

30</h2>

31 

32Manifest bersifat opsional. Tanpanya, Claude Code memuat komponen yang ditemukannya di [standard layout](#standard-layout). Nama plugin kemudian berasal dari entri marketplace, atau dari nama direktori saat Anda memuat plugin dengan `--plugin-dir`.

33 

34Tulis manifest saat Anda menginginkan metadata, komponen di luar direktori defaultnya, `userConfig`, atau definisi komponen inline.

35 

36Simpan manifest di `.claude-plugin/plugin.json` di bawah root plugin. Letakkan setiap file plugin lainnya di root plugin, bukan di dalam `.claude-plugin/`. Ini termasuk `skills/`, `commands/`, dan `hooks/`.

37 

38Contoh berikut menetapkan sebagian besar kunci dalam tabel [Fields](#fields). Ini melewati validasi di direktori plugin yang berisi setiap path yang direferensikan.

39 

40```json theme={null}

41{

42 "name": "deploy-tools",

43 "displayName": "Deploy Tools",

44 "version": "1.2.0",

45 "description": "Deployment commands, a review agent, and a status monitor",

46 "author": {

47 "name": "Example Team",

48 "email": "dev@example.com",

49 "url": "https://example.com"

50 },

51 "homepage": "https://example.com/docs/deploy-tools",

52 "repository": "https://github.com/example/deploy-tools",

53 "license": "MIT",

54 "keywords": ["deployment", "ci"],

55 "defaultEnabled": true,

56 "dependencies": ["secrets-vault"],

57 "metadata": { "catalogId": "cat-123" },

58 "skills": ["./extra-skills/"],

59 "commands": {

60 "status": {

61 "source": "./commands/status.md",

62 "description": "Show the current deployment status"

63 },

64 "about": {

65 "content": "Explain what the deploy-tools plugin provides.",

66 "description": "Describe this plugin"

67 }

68 },

69 "agents": ["./agents/reviewer.md"],

70 "hooks": "./config/extra-hooks.json",

71 "mcpServers": {

72 "deploy-api": {

73 "command": "node",

74 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

75 }

76 },

77 "lspServers": "./.lsp.json",

78 "outputStyles": "./styles/",

79 "experimental": {

80 "themes": "./themes/",

81 "monitors": "./config/monitors.json"

82 },

83 "userConfig": {

84 "api_token": {

85 "type": "string",

86 "title": "API token",

87 "description": "Token for the deployment API",

88 "sensitive": true

89 }

90 }

91}

92```

93 

94<h3 id="unrecognized-fields">

95 Unrecognized fields

96</h3>

97 

98Kunci tingkat atas yang tidak dikenali akan dihapus, dan kunci yang tidak dikenali di dalam opsi `userConfig`, entri `channels`, config `lspServers`, atau entri `monitors` akan ditolak:

99 

100* **Top-level fields**: field dihapus dan plugin dimuat. `claude plugin validate` melaporkan setiap field tingkat atas yang tidak dikenali sebagai peringatan

101* **Strict objects**: opsi `userConfig`, entri `channels`, config `lspServers`, dan entri `monitors` bersifat ketat. Kunci yang tidak diketahui di dalamnya adalah kesalahan, dan plugin tidak dimuat

102 

103<h3 id="validate-the-manifest">

104 Validate the manifest

105</h3>

106 

107`claude plugin validate` adalah pemeriksaan otoritatif untuk manifest. Jalankan dari shell Anda terhadap direktori plugin:

108 

109```bash theme={null}

110claude plugin validate ./my-plugin

111```

112 

113Perintah melaporkan salah satu hasil berikut:

114 

115* **`Validation passed`**: manifest dimuat

116* **`Validation passed with warnings`**: manifest dimuat, tetapi validator menemukan sesuatu untuk diperbaiki, seperti field tingkat atas yang tidak diketahui yang Claude Code hapus, `name` yang bukan kebab-case, atau `version`, `description`, atau `author` yang hilang. Lewatkan `--strict` untuk mengubah peringatan menjadi kegagalan di CI

117* **`Validation failed`**: manifest memiliki ketidakcocokan tipe, path yang hilang atau keluar dari root plugin, atau kunci yang tidak diketahui di dalam opsi `userConfig`, entri `channels`, config `lspServers`, atau entri `monitors`. Claude Code melaporkan masalah yang sama saat memuat plugin

118 

119<h2 id="fields">

120 Fields

121</h2>

122 

123Tabel mencantumkan kunci tingkat atas dalam `plugin.json`. `name` adalah satu-satunya kunci yang diperlukan. Jika nama field adalah tautan, bagian yang ditautkan memiliki aturan lengkapnya.

124 

125Untuk kunci komponen seperti `commands` dan `hooks`, [Component path forms](#component-path-forms) menunjukkan setiap bentuk yang diterima dengan contoh, dan setiap path mengikuti [path rules](#path-rules) untuk awalan `./`, ekstensi, dan containment.

126 

127| Field | Type | Description |

128| :----------------------------------- | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

129| `$schema` | String | JSON Schema URL untuk autocomplete editor. Claude Code mengabaikannya saat waktu muat |

130| [`name`](#name) | String | Identifier plugin, diperlukan. Gunakan kebab-case. Setiap komponen di-namespace di bawahnya |

131| [`displayName`](#displayname) | String | Nama yang ditampilkan di UI sebagai pengganti `name` |

132| [`version`](#version) | String | String versi. Menetapkannya membuat pengguna tetap pada versi itu sampai Anda mengubahnya |

133| `description` | String | Penjelasan singkat tentang apa yang disediakan plugin |

134| `author` | Object | `name`, yang diperlukan, ditambah `email` dan `url` opsional |

135| `homepage` | String | URL dokumentasi. Harus diparse sebagai URL, atau plugin gagal dimuat |

136| `repository` | String | URL repositori sumber. Tidak divalidasi |

137| `license` | String | Identifier SPDX seperti `MIT` atau `Apache-2.0` |

138| `keywords` | Array of strings | Tag penemuan |

139| [`metadata`](#metadata) | Object | Objek bentuk bebas untuk data Anda sendiri. Claude Code tidak membacanya |

140| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya. Default ke `true` |

141| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar yang ini berfungsi |

142| [`settings`](#settings) | Object | Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku |

143| [`userConfig`](#user-configuration) | Object | Nilai yang Claude Code minta kepada pengguna saat plugin diaktifkan |

144| [`channels`](#channels) | Array of objects | Saluran pesan yang disediakan plugin, masing-masing terikat ke salah satu server MCP-nya |

145| `skills` | Path, or array of paths | Direktori untuk dipindai untuk skills, masing-masing direktori folder `<name>/SKILL.md` atau satu folder yang menyimpan `SKILL.md` secara langsung. `"."` menamai root plugin. Menambah pemindaian default `skills/` |

146| [`commands`](#commands) | Path, array of paths, or object | File perintah `.md` datar, direktori mereka, atau peta objek nama perintah ke `source` atau `content`. Menggantikan pemindaian default `commands/` |

147| `agents` | Path, or array of paths | File agent `.md`. Direktori tidak diterima. Menggantikan pemindaian default `agents/` |

148| [`hooks`](#hooks) | Path, object, or array of either | File hook `.json` atau config hook inline. Dimuat bersama dengan `hooks/hooks.json` |

149| [`mcpServers`](#mcpservers) | Path, object, or array of either | File config MCP `.json`, bundle `.mcpb` atau `.dxt`, atau config server inline yang di-key berdasarkan nama. Dimuat bersama dengan `.mcp.json`; nama server yang dideklarasikan kemudian menggantikan yang sebelumnya |

150| [`lspServers`](#lspservers) | Path, object, or array of either | File config LSP `.json` atau config server inline yang di-key berdasarkan nama. Dimuat bersama dengan `.lsp.json` |

151| `outputStyles` | Path, or array of paths | File gaya output atau direktori. Menggantikan pemindaian default `output-styles/` |

152| `workflows` | Path, or array of paths | File [Workflow](/docs/id/workflows#distribute-a-workflow-in-a-plugin) `.js` atau direktori. Menggantikan pemindaian default `workflows/` |

153| `experimental` | Object | Kontainer untuk `themes`, `monitors`, dan `evals`, yang bentuk manifestnya mungkin masih berubah |

154| `experimental.themes` | Path, or array of paths | File tema atau direktori. Menggantikan pemindaian default `themes/`. Kunci `themes` tingkat atas masih dimuat, dengan peringatan `claude plugin validate` |

155| [`experimental.monitors`](#monitors) | Path, or inline array | File `.json` yang menyimpan array monitors, atau array itu sendiri. Default ke `monitors/monitors.json`. Kunci `monitors` tingkat atas masih dimuat, dengan peringatan `claude plugin validate`. Monitor hanya berjalan dalam sesi interaktif, dan bukan di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry |

156| `experimental.evals` | Path, or array of paths | Direktori yang menyimpan [eval cases](/docs/id/plugin-evals#use-a-different-eval-directory) plugin saat bukan default `evals/`. `claude plugin eval --eval-dir` menimpanya |

157 

158Di kolom Type, path adalah string relatif terhadap root plugin, seperti `"./custom/commands"`.

159 

160<h3 id="name">

161 `name`

162</h3>

163 

164Identifier plugin. Harus non-kosong, tanpa spasi, `@`, `:`, pemisah path, karakter kontrol, atau karakter pemformatan bidirectional; gunakan kebab-case.

165 

166Claude Code mem-namespace setiap komponen di bawahnya, jadi agent `reviewer` dalam plugin `deploy-tools` muncul sebagai `deploy-tools:reviewer`.

167 

168<h3 id="displayname">

169 `displayName`

170</h3>

171 

172Nama yang ditampilkan di UI sebagai pengganti `name`. Mungkin berisi spasi dan casing apa pun, dan tidak digunakan untuk namespacing atau pencarian.

173 

174Untuk plugin yang diinstal dari marketplace, `displayName` di [entri marketplace](/docs/id/plugins/marketplace-reference#plugin-entries) mengambil alih nilai ini.

175 

176<h3 id="version">

177 `version`

178</h3>

179 

180String versi, tidak diperiksa terhadap semver. Menetapkannya mengunci plugin ke versi itu sampai Anda mengubahnya; lihat [Versions and updates](/docs/id/plugins/loading#versions-and-updates). Plugin dengan [`command` source](/docs/id/plugins/marketplace-reference), plugin dari [marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai), dan plugin [dimuat di tempat](/docs/id/plugins/loading#find-plugins-on-disk) dari marketplace yang ditambahkan sebagai direktori lokal tidak dikunci oleh field ini.

181 

182<h3 id="metadata">

183 `metadata`

184</h3>

185 

186Objek bentuk bebas untuk data Anda sendiri, seperti field katalog atau hak. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru.

187 

188<h3 id="defaultenabled">

189 `defaultEnabled`

190</h3>

191 

192Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya di [`enabledPlugins`](/docs/id/settings-reference#enabledplugins). Default ke `true`. Plugin yang diaktifkan plugin tergantung dimulai diaktifkan terlepas dari itu. Field yang sama di entri marketplace menimpanya.

193 

194Setelah entri `enabledPlugins` pengguna ditulis, itu bertahan di seluruh pembaruan plugin, jadi mengubah `defaultEnabled` dalam rilis kemudian tidak mengubah pengaturan untuk pengguna yang ada.

195 

196<h3 id="dependencies">

197 `dependencies`

198</h3>

199 

200Plugin yang harus diaktifkan agar yang ini berfungsi. Setiap entri adalah `"name"`, `"name@marketplace"`, atau `{ "name": "...", "marketplace": "...", "version": "..." }`. Nama bare diselesaikan terhadap marketplace plugin ini sendiri. Lihat [dependency constraints](/docs/id/plugins/dependencies).

201 

202<h3 id="settings">

203 `settings`

204</h3>

205 

206Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku; kunci lain dihapus saat muat. `settings.json` di root plugin mengambil alih kunci ini. Lihat [Default settings](/docs/id/plugins/components#default-settings).

207 

208<h2 id="component-path-forms">

209 Component path forms

210</h2>

211 

212Setiap kunci komponen menerima path relatif terhadap root plugin. `hooks`, `mcpServers`, `lspServers`, dan `experimental.monitors` juga menerima config inline, `commands` juga menerima peta objek, dan `mcpServers` juga menerima path bundle MCP dan URL. Contoh-contoh berikut menunjukkan setiap bentuk yang diterima sekali. Untuk apa yang dilakukan setiap komponen saat runtime, lihat [Plugin components](/docs/id/plugins/components).

213 

214<h3 id="path-only-fields">

215 Path-only fields

216</h3>

217 

218`agents`, `skills`, `outputStyles`, `workflows`, dan `experimental.themes` mengambil satu path atau array path. Entri `agents` harus file `.md`, dan entri `skills` harus direktori. Tiga lainnya menerima direktori atau file.

219 

220```json theme={null}

221{

222 "agents": ["./custom-agents/reviewer.md", "./custom-agents/tester.md"],

223 "skills": ["./extra-skills/", "."],

224 "outputStyles": "./styles/"

225}

226```

227 

228<h3 id="commands">

229 `commands`

230</h3>

231 

232`commands` mengambil path, array path, atau peta objek. Path menamai file perintah `.md` datar atau direktori. Dalam peta objek, setiap kunci menjadi nama perintah setelah awalan plugin. Misalnya, `"about"` dalam plugin `deploy-tools` berjalan sebagai `/deploy-tools:about`.

233 

234Setiap nilai menetapkan tepat satu dari `source` atau `content`, dan entri yang menetapkan keduanya atau tidak ada gagal validasi. Field lain dalam tabel ini opsional:

235 

236| Field | Type | Description |

237| :------------- | :--------------- | :-------------------------------------------------------------------- |

238| `source` | string | Path ke file Markdown perintah, relatif terhadap root plugin |

239| `content` | string | Markdown inline untuk badan perintah, sebagai pengganti `source` |

240| `description` | string | Deskripsi yang ditampilkan untuk perintah |

241| `argumentHint` | string | Hint argumen yang ditampilkan setelah nama perintah, seperti `[file]` |

242| `model` | string | Model default untuk perintah |

243| `allowedTools` | array of strings | Tools yang dapat digunakan perintah tanpa prompt |

244 

245Peta ini mendeklarasikan satu perintah dari file dan satu dari konten inline:

246 

247```json theme={null}

248{

249 "commands": {

250 "status": { "source": "./commands/status.md", "argumentHint": "[env]" },

251 "about": { "content": "Explain what this plugin provides." }

252 }

253}

254```

255 

256<h3 id="hooks">

257 `hooks`

258</h3>

259 

260`hooks` mengambil path file `.json`, objek hooks inline dalam bentuk yang sama seperti [`hooks` dalam `settings.json`](/docs/id/hooks#configuration), atau array yang mencampur keduanya. Untuk event hook dan field handler, lihat [hooks reference](/docs/id/hooks#hook-events).

261 

262Claude Code menggabungkan apa pun yang Anda deklarasikan dengan `hooks/hooks.json` saat file itu ada.

263 

264```json theme={null}

265{

266 "hooks": [

267 "./config/extra-hooks.json",

268 {

269 "PostToolUse": [

270 {

271 "matcher": "Write|Edit",

272 "hooks": [

273 { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format.sh" }

274 ]

275 }

276 ]

277 }

278 ]

279}

280```

281 

282<h3 id="mcpservers">

283 `mcpServers`

284</h3>

285 

286`mcpServers` mengambil path file `.json`, path bundle MCP atau URL, peta inline, atau array yang mencampur mereka. Untuk field config server, lihat [plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers).

287 

288Claude Code memuat `.mcp.json` di root plugin terlebih dahulu, kemudian setiap bentuk yang dideklarasikan secara berurutan. Nama server yang dideklarasikan kemudian menggantikan yang sebelumnya.

289 

290Nilai `mcpServers` mengambil salah satu bentuk berikut:

291 

292| Shape | Example value | What Claude Code does |

293| :---------------- | :------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- |

294| `.json` file path | `"./mcp/servers.json"` | Membaca file sebagai peta `mcpServers` |

295| MCP bundle path | `"./bundle.mcpb"` | Mengekstrak bundle `.mcpb` atau `.dxt` ke `.mcpb-cache/` di bawah root plugin dan membaca config servernya |

296| MCP bundle URL | `"https://example.com/server.mcpb"` | Mengunduh bundle ke `.mcpb-cache/`, kemudian membacanya |

297| Inline map | `{ "deploy-api": { "command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"] } }` | Menggunakan peta sebagai config server yang di-key berdasarkan nama |

298 

299Path bundle atau URL harus berakhir dengan `.mcpb` atau `.dxt`. Ekstensi lain apa pun gagal validasi.

300 

301<h3 id="lspservers">

302 `lspServers`

303</h3>

304 

305`lspServers` mengambil path file `.json`, peta inline nama server ke config, atau array keduanya.

306 

307Claude Code memuat `.lsp.json` di root plugin terlebih dahulu, kemudian setiap config yang dideklarasikan secara berurutan. Nama server yang dideklarasikan kemudian menggantikan yang sebelumnya.

308 

309Setiap config server adalah objek ketat dengan field berikut. Kunci yang tidak diketahui gagal validasi.

310 

311| Field | Required | Description |

312| :---------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

313| `command` | Yes | Binary language server. Tanpa spasi kecuali nilai dimulai dengan `/`; letakkan argumen di `args` |

314| `extensionToLanguage` | Yes | Peta ekstensi file ke LSP language ID, setidaknya satu entri. Kunci dimulai dengan titik, seperti `".go"` |

315| `args` | No | Argumen yang dilewatkan ke server |

316| `transport` | No | Transport komunikasi: `stdio` (default) atau `socket`. Claude Code menerima `socket` tetapi menjalankan setiap server melalui stdio, jadi aturan protokol stdout berlaku untuk semua server |

317| `env` | No | Variabel lingkungan untuk proses server |

318| `initializationOptions` | No | Opsi yang dikirim dalam permintaan initialize |

319| `settings` | No | Pengaturan yang dikirim oleh `workspace/didChangeConfiguration` |

320| `workspaceFolder` | No | Path folder workspace untuk server |

321| `startupTimeout` | No | Milidetik untuk menunggu startup, integer positif |

322| `shutdownTimeout` | No | Milidetik untuk menunggu shutdown yang elegan, integer positif. Saat timeout berlalu, Claude Code menghentikan proses server. Saat tidak diatur, tidak ada timeout yang berlaku |

323| `restartOnCrash` | No | Apakah memulai ulang server setelah crash. Default ke `true`. Atur ke `false` untuk membiarkan server yang crash tetap berhenti daripada memulai ulang |

324| `maxRestarts` | No | Upaya restart sebelum menyerah, nol atau lebih |

325| `diagnostics` | No | Apakah mendorong diagnostik ke konteks setelah edit. Default ke `true` |

326 

327Config inline ini menjalankan `gopls` untuk file `.go`:

328 

329```json theme={null}

330{

331 "lspServers": {

332 "go": {

333 "command": "gopls",

334 "args": ["serve"],

335 "extensionToLanguage": { ".go": "go" }

336 }

337 }

338}

339```

340 

341Untuk language server yang Anthropic terbitkan sebagai plugin dan bagaimana server berperilaku saat runtime, lihat [Code intelligence](/docs/id/plugins/code-intelligence).

342 

343<h3 id="monitors">

344 `monitors`

345</h3>

346 

347`experimental.monitors` mengambil path file `.json` atau array inline. Saat Anda menghilangkan kunci, Claude Code memuat `monitors/monitors.json` jika ada.

348 

349Setiap entri adalah objek ketat dengan field berikut.

350 

351| Field | Required | Description |

352| :------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- |

353| `name` | Yes | Identifier unik dalam plugin |

354| `command` | Yes | Perintah shell yang Claude Code jalankan sebagai proses latar belakang persisten dalam direktori kerja sesi |

355| `description` | Yes | Ringkasan singkat yang ditampilkan di panel tugas dan ringkasan notifikasi |

356| `when` | No | Dengan `"always"`, default, monitor dimulai saat awal sesi dan pada reload plugin. Dengan `"on-skill-invoke:<skill>"`, dimulai pertama kali skill itu berjalan |

357 

358Array inline ini mendeklarasikan satu monitor yang dimulai pertama kali skill `deploy` berjalan:

359 

360```json theme={null}

361{

362 "experimental": {

363 "monitors": [

364 {

365 "name": "deploy-status",

366 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

367 "description": "Deployment status changes",

368 "when": "on-skill-invoke:deploy"

369 }

370 ]

371 }

372}

373```

374 

375Perintah monitor `command` tidak dapat mereferensikan `${user_config.*}`. Lihat [Fields that run through a shell](#fields-that-run-through-a-shell).

376 

377<h2 id="path-rules">

378 Path rules

379</h2>

380 

381Setiap path komponen dalam manifest relatif terhadap root plugin dan harus dimulai dengan `./`. Path seperti `commands/foo.md` gagal validasi. `skills` dan `mcpServers` masing-masing menerima satu bentuk di luar aturan itu:

382 

383* **`skills`**: juga menerima `"."`. Baik `"."` maupun `"./"` menunjukkan root plugin. Sebelum v2.1.221, `"."` gagal validasi manifest, jadi gunakan `"./"` saat plugin harus dimuat di versi sebelumnya

384* **`mcpServers`**: juga menerima URL bundle `https://`

385 

386<h3 id="containment-and-existence">

387 Containment and existence

388</h3>

389 

390Setiap path komponen harus diselesaikan di dalam root plugin dan harus ada. `claude plugin validate` tidak memeriksa path `outputStyles`, `lspServers`, `monitors`, atau `themes`, jadi path yang buruk di field tersebut gagal hanya saat plugin dimuat:

391 

392* **Containment**: path yang diselesaikan di luar root plugin tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path escapes plugin directory: <path>`. Path yang berisi `..` adalah kasus biasa, dan `claude plugin validate` melaporkannya sebagai `Path contains ".." which could be a path traversal attempt`

393* **Existence**: path yang tidak ada tidak dimuat, dan tab **Errors** `/plugin` menampilkan `<component> path not found: <path>`. `claude plugin validate` melaporkannya sebagai `Path not found`

394 

395<h3 id="how-each-key-combines-with-its-default-location">

396 How each key combines with its default location

397</h3>

398 

399Setiap kunci komponen baik menggantikan lokasi defaultnya, menambahnya, atau menggabungkannya:

400 

401* **Menggantikan default**: `commands`, `agents`, `outputStyles`, `workflows`, `experimental.themes`, `experimental.monitors`. Saat Anda menetapkan `commands`, direktori default `commands/` tidak dipindai. Untuk menyimpan default dan menambah lebih banyak, daftarkan secara eksplisit: `"commands": ["./commands/", "./extras/"]`

402* **Menambah default**: `skills`. Direktori `skills/` masih dipindai, dan direktori yang terdaftar dimuat bersama dengannya

403* **Menggabungkan**: `hooks`, `mcpServers`, `lspServers`. File default dimuat terlebih dahulu, dan apa yang manifest deklarasikan digabungkan ke dalamnya, seperti dijelaskan di bawah [Component path forms](#component-path-forms)

404 

405Jika plugin memiliki folder default seperti `commands/` dan juga menetapkan kunci manifest yang menggantinya, Claude Code memuat path manifest dan bukan folder. `claude plugin list` dan antarmuka `/plugin` kemudian menampilkan peringatan `Default <folder>/ folder is ignored because the manifest sets "<key>"`.

406 

407Untuk menghindari peringatan, atur kunci ke path di dalam folder itu: `"commands": ["./commands/deploy.md"]` menamai file di folder default dan tidak menghasilkan peringatan.

408 

409<h2 id="user-configuration">

410 User configuration

411</h2>

412 

413`userConfig` mendeklarasikan nilai yang Claude Code minta kepada pengguna saat plugin diaktifkan, sehingga pengguna tidak mengedit `settings.json` sendiri.

414 

415Kunci adalah identifier yang terdiri dari huruf, digit, dan garis bawah, dan tidak dapat dimulai dengan digit.

416 

417Setiap nilai adalah objek ketat dengan field berikut. Kunci yang tidak diketahui gagal validasi.

418 

419| Field | Required | Description |

420| :------------ | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

421| `type` | Yes | Salah satu dari `string`, `number`, `boolean`, `directory`, atau `file` |

422| `title` | Yes | Label yang ditampilkan dalam dialog konfigurasi |

423| `description` | Yes | Teks bantuan yang ditampilkan di bawah field |

424| `required` | No | Jika `true`, dialog konfigurasi tidak menerima nilai kosong |

425| `default` | No | Nilai yang digunakan saat pengguna tidak memberikan apa pun: string, number, boolean, atau array string |

426| `options` | No | Untuk `string`, nilai yang diterima field, ditampilkan sebagai picker di `/config`. Lihat [Limit a field to fixed options](#limit-a-field-to-fixed-options). Memerlukan Claude Code v2.1.271 atau lebih baru |

427| `multiple` | No | Untuk `string`, memungkinkan array string |

428| `sensitive` | No | Jika `true`, menyembunyikan input dan menyimpan nilai di penyimpanan aman daripada `settings.json` |

429| `min` / `max` | No | Batas untuk `number` |

430 

431Setiap opsi setiap plugin yang diaktifkan juga muncul sebagai baris di panel `/config`, kecuali opsi `sensitive` dan daftar `multiple`. Baris `/config` memerlukan Claude Code v2.1.269 atau lebih baru.

432 

433`userConfig` ini mendeklarasikan endpoint dan token yang disembunyikan:

434 

435```json theme={null}

436{

437 "userConfig": {

438 "api_endpoint": {

439 "type": "string",

440 "title": "API endpoint",

441 "description": "Your team's API endpoint"

442 },

443 "api_token": {

444 "type": "string",

445 "title": "API token",

446 "description": "API authentication token",

447 "sensitive": true

448 }

449 }

450}

451```

452 

453<h3 id="limit-a-field-to-fixed-options">

454 Limit a field to fixed options

455</h3>

456 

457Atur `options` pada field `userConfig` untuk membuat pengguna memilih nilainya dari daftar tetap.

458 

459Untuk membatasi field `tone` ke tiga opsi, daftarkan di `options` dan atur `default` ke salah satunya:

460 

461```json theme={null}

462{

463 "userConfig": {

464 "tone": {

465 "type": "string",

466 "title": "Tone",

467 "description": "Voice for generated replies",

468 "options": ["neutral", "warm", "formal"],

469 "default": "neutral"

470 }

471 }

472}

473```

474 

475Jika Anda mendeklarasikan `options` pada field apa pun, pengguna di versi Claude Code sebelum v2.1.271 tidak dapat memuat plugin.

476 

477`options` berlaku untuk field `string` yang bukan `multiple` atau `sensitive`. Atur `default` ke salah satu nilai yang terdaftar, atau atur `required: true` sehingga pengguna harus memilih satu. Setiap opsi adalah label polos 1 hingga 64 karakter, dan `claude plugin validate`, yang Anda jalankan di shell Anda, melaporkan apa pun yang ditolaknya. Plugin yang `options`-nya melanggar aturan ini gagal dimuat.

478 

479<h3 id="where-values-are-stored">

480 Where values are stored

481</h3>

482 

483Nilai non-sensitif disimpan di bawah [`pluginConfigs`](/docs/id/settings-reference#pluginconfigs) dalam `settings.json` pengguna. Nilai sensitif masuk ke penyimpanan kredensial aman platform sebagai gantinya. [Halaman pengaturan](/docs/id/settings-reference#pluginconfigs) mencantumkan file pengaturan mana yang `pluginConfigs` dibaca.

484 

485<h3 id="reference-a-saved-value">

486 Reference a saved value

487</h3>

488 

489Referensikan nilai yang disimpan di mana plugin membutuhkannya, dalam salah satu dari dua bentuk:

490 

491* **`${user_config.KEY}`**: disubstitusi dalam config server MCP, config server LSP, [exec-form](/docs/id/hooks#exec-form-and-shell-form) hook `args`, dan konten skill dan agent. Dalam konten skill dan agent, hanya nilai non-sensitif yang disubstitusi, dan nilai sensitif di sana menjadi placeholder

492* **`CLAUDE_PLUGIN_OPTION_<KEY>`**: diekspor ke proses hook untuk setiap opsi, dengan `<KEY>` huruf besar. Hook bentuk shell membaca `$CLAUDE_PLUGIN_OPTION_API_TOKEN` untuk `api_token`

493 

494<h3 id="fields-that-run-through-a-shell">

495 Fields that run through a shell

496</h3>

497 

498Perintah hook bentuk shell, perintah monitor, dan MCP [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) menolak `${user_config.*}`. Komponen yang mereferensikannya di salah satu field ini gagal dengan [error](/docs/id/errors#plugin-command-references-user-config) daripada berjalan, karena nilai field dilewatkan ke shell yang akan mem-parse ulang nilai yang disubstitusi.

499 

500Tabel menunjukkan bagaimana nilai dapat mencapai setiap field ini sebagai gantinya.

501 

502| Field | How the value can reach it |

503| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

504| Shell-form hook commands | Gunakan [exec form](/docs/id/hooks#exec-form-and-shell-form) dengan `args`, atau baca `CLAUDE_PLUGIN_OPTION_<KEY>` dari lingkungan hook |

505| Monitor commands | Bukan melalui Claude Code. Proses monitor tidak menerima `CLAUDE_PLUGIN_OPTION_<KEY>`, jadi skrip monitor harus mendapatkan nilai sendiri |

506| MCP `headersHelper` | Bukan melalui Claude Code. Lingkungan helper membawa `CLAUDE_PLUGIN_ROOT`, `CLAUDE_CODE_MCP_SERVER_NAME`, dan `CLAUDE_CODE_MCP_SERVER_URL` tetapi tidak ada nilai opsi, jadi skrip helper harus mendapatkan nilai sendiri |

507 

508<h2 id="channels">

509 Channels

510</h2>

511 

512`channels` mendeklarasikan saluran pesan yang disediakan plugin, seperti jembatan ke aplikasi chat. Saat Anda mendeklarasikan satu, Claude Code dapat meminta konfigurasi saluran saat plugin diaktifkan. Untuk bagaimana server menyuntikkan pesan, lihat [channels reference](/docs/id/channels-reference#package-as-a-plugin).

513 

514Setiap entri adalah objek ketat yang terikat ke salah satu server MCP plugin, dengan field berikut:

515 

516| Field | Required | Description |

517| :------------ | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

518| `server` | Yes | Kunci server MCP dalam `mcpServers` plugin ini yang saluran ikat ke |

519| `displayName` | No | Nama yang ditampilkan dalam judul dialog konfigurasi. Default ke nama server |

520| `userConfig` | No | Opsi untuk diminta, dalam bentuk yang sama seperti [`userConfig` tingkat atas](#user-configuration). Nilai yang disimpan disubstitusi ke referensi `${user_config.KEY}` dalam `env` server |

521 

522Manifest ini mengikat saluran ke server MCP `telegram` plugin dan meminta token bot yang disubstitusi ke dalam `env` server:

523 

524```json theme={null}

525{

526 "mcpServers": {

527 "telegram": {

528 "command": "node",

529 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

530 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

531 }

532 },

533 "channels": [

534 {

535 "server": "telegram",

536 "displayName": "Telegram",

537 "userConfig": {

538 "bot_token": {

539 "type": "string",

540 "title": "Bot token",

541 "description": "Telegram bot token",

542 "sensitive": true

543 }

544 }

545 }

546 ]

547}

548```

549 

550<h2 id="environment-variables">

551 Environment variables

552</h2>

553 

554Claude Code menyediakan tiga variabel path ke komponen plugin. Referensikan sebagai `${NAME}` di field yang tercantum di bawah [Where each variable resolves](#where-each-variable-resolves), dan bacanya sebagai variabel lingkungan dalam proses yang menerimanya.

555 

556| Variable | Resolves to | Use it for |

557| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------- |

558| `${CLAUDE_PLUGIN_ROOT}` | Path absolut dari versi plugin yang diinstal | Skrip, binary, dan file config yang dikemas dengan plugin |

559| `${CLAUDE_PLUGIN_DATA}` | `~/.claude/plugins/data/<id>/`, dibuat pada referensi pertama dan disimpan di seluruh pembaruan plugin. `<id>` adalah identifier plugin dengan setiap karakter selain huruf, digit, `_`, atau `-` diganti dengan `-` | Dependensi yang diinstal seperti `node_modules`, kode yang dihasilkan, dan cache |

560| `${CLAUDE_PROJECT_DIR}` | Root proyek | Skrip dan file config lokal proyek |

561 

562`${CLAUDE_PLUGIN_ROOT}` berubah saat plugin diperbarui, jadi jangan tulis state di sana. Untuk di mana root bergerak dan kapan direktori lama dibersihkan, lihat [halaman loading](/docs/id/plugins/loading).

563 

564Saat Anda mencopot plugin dari tempat terakhir diinstal, direktori `${CLAUDE_PLUGIN_DATA}` dihapus kecuali Anda melewatkan [`--keep-data`](/docs/id/plugins/cli-reference).

565 

566<h3 id="where-each-variable-resolves">

567 Where each variable resolves

568</h3>

569 

570Di setiap komponen plugin, referensi `${...}` diselesaikan inline di field tertentu, dan beberapa komponen juga menerima variabel di lingkungan proses mereka:

571 

572| Plugin component | Fields where `${...}` resolves | Exported to the process |

573| :-------------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------- |

574| Hook commands | Di mana saja dalam `command` dan `args` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR`, dan `CLAUDE_PLUGIN_OPTION_<KEY>` |

575| Monitor commands | Di mana saja dalam `command` | Tidak diekspor |

576| MCP `stdio` servers | `command`, `args`, `env` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA` |

577| MCP `http`, `sse`, `ws` servers | `url`, `headers`, `headersHelper` | Tidak berlaku |

578| LSP servers | `command`, `args`, `env`, `workspaceFolder` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |

579| Skill, command, and agent content | Di mana saja dalam badan Markdown | Tidak berlaku |

580 

581Variabel tidak ada dalam lingkungan perintah yang Claude jalankan melalui tool Bash, dalam sesi utama atau dalam subagent. Dalam konten skill, command, dan agent, tulis referensi `${...}` dalam badan Markdown sebagai gantinya, dan Claude Code mensubstitusi path inline saat memuat konten.

582 

583<h3 id="quoting-and-path-separators">

584 Quoting and path separators

585</h3>

586 

587Simpan setiap path yang disubstitusi sebagai argumen tunggal:

588 

589* **Hook commands**: gunakan [exec form](/docs/id/hooks#exec-form-and-shell-form) dengan `args` sehingga setiap path adalah satu argumen tanpa quoting

590* **Shell-form hooks dan monitor commands**: bungkus variabel dalam tanda kutip ganda sehingga path dengan spasi tetap satu kata

591 

592Hook bentuk shell ini menjalankan skrip yang dikemas dengan plugin:

593 

594```json theme={null}

595{

596 "hooks": {

597 "PostToolUse": [

598 {

599 "hooks": [

600 {

601 "type": "command",

602 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

603 }

604 ]

605 }

606 ]

607 }

608}

609```

610 

611Di Windows, path yang disubstitusi menggunakan garis miring ke depan sehingga shell tidak membaca garis miring terbalik sebagai escape.

612 

613<h2 id="standard-layout">

614 Standard layout

615</h2>

616 

617Setiap tipe komponen memiliki lokasi default di bawah root plugin, digunakan saat manifest tidak menunjuk ke tempat lain.

618 

619| Component | Default location | Contents |

620| :------------ | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

621| Manifest | `.claude-plugin/plugin.json` | Metadata dan konfigurasi plugin. Opsional |

622| Skills | `skills/` | Satu `<name>/SKILL.md` per skill. Plugin dengan `SKILL.md` di rootnya, tidak ada `skills/`, dan tidak ada kunci `skills` dimuat sebagai skill tunggal |

623| Commands | `commands/` | File perintah Markdown datar. Lebih suka `skills/` untuk plugin baru |

624| Agents | `agents/` | File Markdown agent. Subfolder adalah bagian dari [nama agent](/docs/id/plugins/components#agents) |

625| Hooks | `hooks/hooks.json` | Konfigurasi hook |

626| MCP servers | `.mcp.json` | Definisi server MCP |

627| LSP servers | `.lsp.json` | Konfigurasi server LSP |

628| Output styles | `output-styles/` | File gaya output Markdown |

629| Workflows | `workflows/` | File workflow `.js` |

630| Themes | `themes/` | File tema JSON |

631| Monitors | `monitors/monitors.json` | Array monitors |

632| Executables | `bin/` | File di sini ada di `PATH` tool Bash saat plugin diaktifkan, jadi Claude menjalankannya sebagai perintah bare. claude.ai dan Cowork tidak menginstal plugin yang memiliki direktori ini, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](/docs/id/plugins/host-marketplace#distribute-through-organization-settings) |

633| Settings | `settings.json` | Default `agent` dan `subagentStatusLine` diterapkan saat plugin diaktifkan |

634 

635Plugin yang menggunakan setiap lokasi default, ditambah folder `scripts/` yang dipanggil hook-nya, diatur seperti ini:

636 

637```text theme={null}

638deploy-tools/

639├── .claude-plugin/

640│ └── plugin.json

641├── skills/

642│ └── deploy/

643│ └── SKILL.md

644├── commands/

645│ └── status.md

646├── agents/

647│ └── reviewer.md

648├── hooks/

649│ └── hooks.json

650├── monitors/

651│ └── monitors.json

652├── output-styles/

653│ └── terse.md

654├── themes/

655│ └── dracula.json

656├── workflows/

657│ └── release-audit.js

658├── bin/

659│ └── deploy-tool

660├── scripts/

661│ └── format.sh

662├── settings.json

663├── .mcp.json

664└── .lsp.json

665```

666 

667Untuk mengklik melalui tata letak ini dan membaca apa yang dilakukan setiap file, buka [plugin explorer](/docs/id/plugins/components#explore-the-plugin-directory).

668 

669`CLAUDE.md` di root plugin tidak dimuat sebagai konteks, dan `claude plugin validate` memperingatkan saat menemukannya. Untuk menyertakan instruksi yang dimuat ke dalam konteks Claude, letakkan di skill.

670 

671<h2 id="marketplace-entries-and-the-manifest">

672 Marketplace entries and the manifest

673</h2>

674 

675Entri [marketplace](/docs/id/plugins/marketplace-reference) menerima setiap field di halaman ini bersama dengan [field-nya sendiri](/docs/id/plugins/marketplace-reference#plugin-entries), termasuk `strict`.

676 

677Field `strict` memutuskan apakah entri dapat menambahkan komponen ke plugin yang memiliki `plugin.json`-nya sendiri. Default ke `true`.

678 

679<h3 id="how-entry-fields-combine-with-plugin-json">

680 How entry fields combine with `plugin.json`

681</h3>

682 

683Entri baik berfungsi sebagai manifest, menambahkan komponen ke dalamnya, atau berkonflik dengannya:

684 

685* **Tidak ada `plugin.json`**: entri adalah manifest, terlepas dari `strict`. Entry `hooks` dimuat hanya dalam bentuk objek inline. Untuk path file atau array di sana, tab **Errors** `/plugin` menampilkan error `not yet supported in a marketplace entry`

686* **`plugin.json` ada, `strict` tidak diatur atau `true`**: Claude Code memuat manifest dan menambahkan `commands`, `agents`, `skills`, `outputStyles`, dan `themes` entri ke dalamnya. Untuk `hooks`, matcher entri untuk event menggantikan matcher manifest untuk event yang sama, dan event hanya manifest yang mendeklarasikan tetap miliknya

687* **`plugin.json` ada, `strict: false`**: entri yang mendeklarasikan salah satu dari `commands`, `agents`, `skills`, `hooks`, `outputStyles`, atau `themes` adalah konflik, dan plugin gagal dimuat dengan `Plugin <name> has conflicting manifests`

688 

689Saat [entri marketplace yang `source`-nya adalah root marketplace](/docs/id/plugins/marketplace-reference) mencantumkan subdirektori `skills` tertentu, hanya subdirektori tersebut yang dimuat, dan direktori default `skills/` plugin tidak dipindai. Kunci `skills` dalam manifest sebagai gantinya [menambah default](#how-each-key-combines-with-its-default-location).

690 

691<h3 id="metadata-precedence">

692 Metadata precedence

693</h3>

694 

695Beberapa field metadata memiliki preseden tetap terlepas dari `strict`:

696 

697* **`defaultEnabled` dan display fields**: `defaultEnabled` entri dan [display fields](/docs/id/plugins/marketplace-reference#entry-and-plugin-json)-nya seperti `displayName` menimpakan manifest

698* **`version`**: `version` manifest menimpakan entri

699* **`name`**: saat entri mencantumkan plugin di bawah `name` berbeda dari manifest, `enabledPlugins` menggunakan nama entri, dan komponen di-namespace di bawah nama manifest

700 

701Untuk tabel preseden lengkap, lihat [Strict mode](/docs/id/plugins/marketplace-reference).

702 

703<h2 id="next-steps">

704 Next steps

705</h2>

706 

707* [Tambahkan komponen ke plugin](/docs/id/plugins/components): apa yang dilakukan setiap komponen saat runtime, dengan contoh yang divalidasi

708* [Referensi marketplace](/docs/id/plugins/marketplace-reference): field entri yang dapat ditetapkan marketplace untuk plugin Anda

709* [Referensi perintah plugin](/docs/id/plugins/cli-reference#plugin-validate): flag dan output `claude plugin validate`

710* [Troubleshoot plugins](/docs/id/plugins/troubleshooting#claude-plugin-validate-reports-errors): setiap pesan validasi dengan perbaikannya

Details

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# Referensi Marketplace

6 

7> Referensi lengkap untuk field marketplace.json, entri plugin, dan objek sumber plugin dan marketplace, dengan tempat masing-masing valid.

8 

9`marketplace.json` adalah file yang mendefinisikan marketplace plugin. File ini berisi nama marketplace, pemiliknya, dan satu entri per plugin. Sumber plugin setiap entri mengatakan di mana Claude Code mengambil plugin tersebut.

10 

11Sumber marketplace adalah objek terpisah yang mengatakan di mana Claude Code mengambil file marketplace itu sendiri. Anda menulis satu di pengaturan, atau Claude Code membangunnya ketika Anda menjalankan `claude plugin marketplace add`.

12 

13Referensi ini untuk pengelola marketplace yang membutuhkan nama atau nilai field yang tepat, dan untuk administrator yang perlu mengetahui nilai `source` mana yang valid dalam [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces), [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces), dan [`blockedMarketplaces`](/docs/id/plugins/org#restrict-what-users-can-install).

14 

15<Note>

16 Kasus-kasus ini tercakup di halaman lain:

17 

18 * **Membangun atau menghosting marketplace**: lihat [Buat marketplace](/docs/id/plugins/create-marketplace) dan [Host dan kelola marketplace](/docs/id/plugins/host-marketplace)

19 * **Resep allowlist dan blocklist**: lihat [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org)

20</Note>

21 

22Temukan bagian untuk apa yang Anda tulis atau baca:

23 

24* **File marketplace**: [Field tingkat atas](#top-level-fields) dan [Entri plugin](#plugin-entries)

25* **`source` entri**: [Sumber plugin](#plugin-sources)

26* **Objek `source` di pengaturan**: [Sumber marketplace](#marketplace-sources)

27* **Output dari [`claude plugin validate <path>`](/docs/id/plugins/cli-reference)**: [Pesan validasi](#validation-messages), yang memetakan setiap pesan ke field yang disebutnya

28 

29<h2 id="marketplace-file">

30 File marketplace

31</h2>

32 

33Simpan file marketplace di `.claude-plugin/marketplace.json` di direktori marketplace Anda. Jika Anda menyimpan file di tempat lain di repositori, pengguna harus mendeklarasikan marketplace di [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dengan `path` diatur pada sumbernya, karena `claude plugin marketplace add` tidak memiliki opsi untuk itu.

34 

35Direktori yang berisi `.claude-plugin/` disebut akar marketplace, dan setiap sumber plugin relatif diselesaikan darinya, bukan dari `.claude-plugin/`.

36 

37Setiap pengguna mendaftarkan satu marketplace per `name`, jadi pengguna tidak dapat memiliki dua marketplace dengan nama yang sama terdaftar sekaligus.

38 

39Claude Code mengabaikan kunci tingkat atas yang tidak dikenal atau kunci entri plugin daripada menolaknya, jadi typo dimuat diam-diam. `claude plugin validate` melaporkan setiap kunci yang tidak dikenal sebagai peringatan.

40 

41<h3 id="reserved-names">

42 Nama yang dicadangkan

43</h3>

44 

45Anda tidak dapat memberikan marketplace Anda salah satu nama berikut:

46 

47* **Nama marketplace resmi**: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `life-sciences`, `knowledge-work-plugins`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, dan `claude-tag-plugins`. Dicadangkan kecuali marketplace berasal dari `github` atau `git` [sumber marketplace](#marketplace-sources) di bawah `github.com/anthropics/`.

48* **Nama marketplace komunitas**: `claude-community`, `claude-plugins-community`, dan `healthcare`. Dicadangkan di bawah aturan yang sama dengan nama resmi.

49* **Nama direktori plugin**: `anthropic-plugin-directory` dan `claude-plugin-directory`. Dicadangkan di bawah aturan yang sama dengan nama resmi.

50* **Nama yang menyamar sebagai marketplace resmi**: nama seperti `official-claude-plugins` atau `claude-plugins-v2`, dan nama apa pun yang berisi karakter non-ASCII. Kesalahannya adalah `Marketplace name impersonates an official Anthropic/Claude marketplace`. Karakter kontrol atau pemformatan bidirectional dalam nama juga melaporkan `Marketplace name cannot contain control or bidirectional-formatting characters`.

51* <span id="reserved-name-spellings" />**Ejaan lain dari nama yang dicadangkan**: nama yang berbeda dari nama yang dicadangkan hanya dengan titik di akhir, atau dengan simbol selain garis bawah sebagai pengganti tanda hubung, jadi `claude.code.plugins` dihitung sebagai `claude-code-plugins`. `claude plugin validate` menerima nama seperti itu; menambahkan marketplace gagal dengan [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/id/errors#marketplace-name-is-another-spelling-of-a-reserved-name), dan marketplace yang sudah terdaftar di bawah satu berhenti dimuat. Pemeriksaan ini memerlukan Claude Code v2.1.280 atau lebih baru.

52* **Nama yang Claude Code gunakan untuk plugin yang tidak berasal dari marketplace**: `inline` untuk plugin yang dimuat dengan [`--plugin-dir`](/docs/id/cli-reference), `builtin` untuk plugin bawaan, `skills-dir` untuk plugin yang dimuat otomatis dari [`.claude/skills/`](/docs/id/skills), dan `synced` untuk plugin yang disinkronkan dari akun claude.ai Anda. `claude-plugin-test` juga dicadangkan. `skills-dir` juga muncul sebagai `{"source": "skills-dir"}` dalam `strictKnownMarketplaces` dan `blockedMarketplaces`, dijelaskan di bawah [Nilai sumber yang valid hanya dalam daftar kebijakan](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github`, dan `gh`**: dicadangkan dalam huruf apa pun. Pemeriksaan ini memerlukan Claude Code v2.1.275 atau lebih baru.

54* **Nama yang dimulai dengan `claudeai-`**: dicadangkan untuk marketplace yang dihosting di claude.ai. `claude plugin marketplace add` menolak marketplace lain apa pun yang menggunakannya dengan `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55 

56<h2 id="top-level-fields">

57 Field tingkat atas

58</h2>

59 

60Tabel mencantumkan setiap kunci yang Claude Code baca dari `marketplace.json`. `name`, `owner`, dan `plugins` diperlukan.

61 

62| Field | Tipe | Deskripsi |

63| :----------------------------------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

64| `name` | string | Pengenal marketplace. Tanpa spasi, karakter kontrol, atau karakter pemformatan bidirectional, tanpa `/` atau `\`, tanpa `..`, dan bukan `.`. Lihat [Nama yang dicadangkan](#reserved-names). Pengguna mengetiknya setelah `@` ketika mereka memasang plugin |

65| `owner` | object | Informasi pengelola. `name` diperlukan; `email` dan `url` opsional |

66| `plugins` | array | [Entri plugin](#plugin-entries). Setiap entri divalidasi sendiri, jadi satu entri yang tidak valid tidak gagal marketplace |

67| `$schema` | string | URL JSON Schema untuk pelengkapan otomatis editor. Diabaikan saat waktu muat |

68| `description` | string | Deskripsi marketplace yang ditampilkan kepada pengguna. `claude plugin validate` memperingatkan ketika hilang |

69| `version` | string | Versi manifest marketplace |

70| `metadata.description`, `metadata.version` | string | Lokasi alternatif untuk `description` dan `version` |

71| `metadata.pluginRoot` | string | Direktori yang nama sumber plugin bare diselesaikan di bawahnya. Lihat [Sumber plugin jalur relatif](#relative-path-plugin-source). Memerlukan Claude Code v2.1.239 atau lebih baru |

72| `forceRemoveDeletedPlugins` | boolean | Ketika `true`, plugin yang Anda hapus dari `plugins` dihapus di mesin pengguna. Lihat [Host dan kelola marketplace](/docs/id/plugins/host-marketplace) |

73| `allowCrossMarketplaceDependenciesOn` | array of strings | Nama marketplace yang plugin-nya dapat dipasang sebagai dependensi plugin marketplace ini. Ketika Anda memasang plugin, hanya daftar di marketplace plugin itu sendiri yang berlaku, untuk seluruh rantai dependensinya. Lihat [Dependensi plugin](/docs/id/plugins/dependencies) |

74| `renames` | object | Peta dari `name` plugin sebelumnya ke nama saat ini, atau ke `null` untuk plugin yang Anda hapus. Memerlukan Claude Code v2.1.193 atau lebih baru. Lihat [Host dan kelola marketplace](/docs/id/plugins/host-marketplace) |

75 

76<h2 id="plugin-entries">

77 Entri plugin

78</h2>

79 

80Setiap objek dalam array `plugins` tingkat atas dari `marketplace.json` menamai plugin dan mengatakan di mana mengambilnya. `name` dan `source` diperlukan.

81 

82Entri juga menerima setiap [field `plugin.json`](/docs/id/plugins/manifest-reference), seperti `description`, `version`, `author`, `commands`, dan `hooks`. Untuk kapan field tersebut berlaku, lihat [Bagaimana entri menggabungkan dengan plugin.json](#entry-and-plugin-json).

83 

84Tabel mencantumkan field entri sendiri dan field manifest yang maknanya berubah dalam entri.

85 

86| Field | Tipe | Deskripsi |

87| :--------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

88| `name` | string | Pengenal plugin, tanpa spasi, karakter kontrol, atau karakter pemformatan bidirectional. Pengguna mengetiknya sebelum `@` ketika mereka memasang, bahkan ketika `plugin.json` plugin sendiri menetapkan `name` yang berbeda |

89| `source` | string or object | Di mana mengambil plugin. Lihat [Sumber plugin](#plugin-sources) |

90| `description` | string | Ditampilkan dalam daftar [`/plugin`](/docs/id/plugins/install) dan detail |

91| `version` | string | String versi untuk plugin. Ketika `plugin.json` juga menetapkan `version`, `plugin.json` mengambil prioritas dan `claude plugin validate` memperingatkan. Lihat [Referensi pemuatan plugin](/docs/id/plugins/loading) |

92| `category` | string | Kategori bentuk bebas untuk mengorganisir katalog |

93| `tags` | array of strings | Tag bentuk bebas untuk pencarian |

94| `strict` | boolean | Default `true`. Apakah `plugin.json` adalah sumber definitif untuk komponen plugin. Lihat [Mode ketat](#strict-mode) |

95| `relevance` | object | Sinyal yang memberi tahu Claude Code kapan menyarankan plugin. Lihat [Rekomendasikan plugin untuk organisasi Anda](/docs/id/plugins/relevance) |

96| `dependencies` | array | Plugin yang harus diaktifkan agar yang ini berfungsi. Setiap item adalah `"name"`, `"name@marketplace"`, atau objek. Lihat [Dependensi plugin](/docs/id/plugins/dependencies) |

97| `defaultEnabled` | boolean | Default `true`. Apakah plugin dimulai diaktifkan ketika pengguna belum menetapkannya dalam [`enabledPlugins`](/docs/id/settings-reference#enabledplugins). Nilai entri mengambil prioritas atas `plugin.json` |

98| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di UI. Ketika baik entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin |

99| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru |

100| `headers` | object | Header HTTP yang Claude Code kirim ketika mengunduh [arsip](#archive-plugin-source) entri ini. Header yang ditetapkan di sini menggantikan header dengan nama yang sama dari [`headers`](#fields-by-type) sumber marketplace. Memerlukan Claude Code v2.1.238 atau lebih baru |

101| `headersHelper` | string | Perintah yang mencetak header unduhan arsip entri ini sebagai satu objek JSON, untuk kredensial yang kedaluwarsa. Entri juga harus menetapkan [`"strict": false`](#strict-mode). Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Autentikasi unduhan arsip](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) |

102 

103<h3 id="entry-and-plugin-json">

104 Bagaimana entri menggabungkan dengan plugin.json

105</h3>

106 

107Field entri berlaku berbeda untuk plugin yang diambil yang memiliki `.claude-plugin/plugin.json` sendiri dan untuk yang tidak:

108 

109* **Tidak ada `plugin.json`**: entri adalah manifest terlepas dari `strict`. Setiap field manifest dalam entri berlaku, termasuk [`mcpServers`, `lspServers`, `userConfig`, dan `channels`](/docs/id/plugins/manifest-reference).

110* **`plugin.json` hadir**: `plugin.json` adalah manifest. [Mode ketat](#strict-mode) memutuskan apakah enam field komponen entri, `commands`, `agents`, `skills`, `hooks`, `outputStyles`, dan `themes`, digabungkan dengannya atau ditolak sebagai konflik. Entri `mcpServers`, `lspServers`, `userConfig`, dan `channels` tidak berlaku. Deklarasikan mereka di `plugin.json`.

111 

112<h4 id="hooks-in-an-entry">

113 Hooks dalam entri

114</h4>

115 

116Tulis entri `hooks` sebagai objek inline yang memetakan nama acara hook ke array matcher. Jika Anda menulis jalur file atau array sebagai gantinya, `claude plugin validate` melewatinya. Hook tersebut tidak pernah berjalan, dan Claude Code melaporkan kesalahan `not yet supported in a marketplace entry` untuk plugin. Letakkan hook berbasis file di [`hooks/hooks.json`](/docs/id/plugins/components) plugin sendiri atau `plugin.json`.

117 

118<h4 id="display-fields">

119 Field tampilan

120</h4>

121 

122Baik entri maupun `plugin.json` plugin sendiri dapat menetapkan field tampilan `displayName`, `description`, `author`, `homepage`, `repository`, `license`, dan `keywords`. Pengguna melihat nilai-nilai ini dalam daftar dan detail plugin, sebelum dan sesudah pemasangan:

123 

124* Untuk field yang Anda tetapkan pada entri, pengguna melihat nilai entri, bahkan ketika `plugin.json` menetapkan yang berbeda.

125* Untuk field yang entri biarkan tidak diatur, pengguna melihat nilai `plugin.json`.

126 

127Sebelum pemasangan, Claude Code hanya dapat membaca `plugin.json` untuk entri dengan [sumber jalur relatif](#relative-path-plugin-source), yang file pluginnya berada di dalam marketplace itu sendiri. Untuk entri dengan tipe sumber apa pun, pengguna hanya melihat field entri sendiri sampai mereka memasang plugin.

128 

129<h3 id="strict-mode">

130 Mode ketat

131</h3>

132 

133`strict` memutuskan apa yang terjadi ketika plugin yang diambil memiliki `plugin.json` sendiri dan entri juga mendeklarasikan salah satu [field komponen](#entry-and-plugin-json): `commands`, `agents`, `skills`, `hooks`, `outputStyles`, atau `themes`. Dengan `strict: true`, default, Claude Code menambahkan field komponen entri ke `plugin.json`, kecuali `hooks`, yang matcher-nya menggantikan manifest per acara. Dengan `strict: false`, entri yang mendeklarasikan field komponen apa pun adalah konflik, dan plugin gagal dimuat. Tabel menunjukkan setiap kombinasi `strict`, `plugin.json`, dan field komponen entri.

134 

135| `strict` | `plugin.json` | Field komponen entri | Hasil |

136| :-------------- | :------------ | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

137| any | absent | any | Entri adalah manifest |

138| `true`, default | present | any | `plugin.json` adalah otoritas. Claude Code menambahkan field komponen entri ke dalamnya, kecuali `hooks`, yang matcher-nya [menggantikan manifest per acara](/docs/id/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |

139| `false` | present | none | `plugin.json` adalah manifest, seperti dengan `true` |

140| `false` | present | one or more | Konflik. Plugin gagal dimuat dengan `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |

141 

142<h2 id="plugin-sources">

143 Sumber plugin

144</h2>

145 

146`source` entri plugin mengatakan di mana Claude Code mengambil satu plugin itu. Ini adalah string jalur relatif atau objek yang `source` key-nya sendiri menamai tipenya, jadi entri terlihat seperti `"source": { "source": "github", "repo": "your-org/formatter" }`.

147 

148Tabel mencantumkan setiap tipe sumber plugin dan field-nya.

149 

150| Tipe | Field | Catatan |

151| :------------ | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| Jalur relatif | string itu sendiri | Direktori di dalam marketplace, diselesaikan dari akar marketplace. Harus dimulai dengan `./`, kecuali Anda menulis [nama bare di bawah `metadata.pluginRoot`](#relative-path-plugin-source). `"."` sendiri berarti akar itu sendiri |

153| `github` | `repo`, `ref`, `sha` | Repositori GitHub dalam bentuk `owner/repo` |

154| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |

155| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse partial clone |

156| `npm` | `package`, `version`, `registry` | Paket npm, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |

157| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |

158| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |

159 

160Nama `url` dan `github` juga [tipe sumber marketplace](#marketplace-sources), di mana `url` berarti tautan langsung ke file `marketplace.json` daripada repositori git. `git` hanya ada sebagai sumber marketplace, dan `npm` ada sebagai keduanya. `git-subdir`, `archive`, dan `command` hanya ada sebagai sumber plugin.

161 

162Gunakan jalur relatif untuk plugin di subdirektori repositori marketplace itu sendiri. Gunakan `git-subdir` untuk subdirektori repositori lain.

163 

164Sumber `github`, `url`, dan `git-subdir` berbagi field `ref` dan `sha`:

165 

166* **`ref`**: cabang atau tag. Default ke cabang default repositori.

167* **`sha`**: SHA commit 40-karakter lowercase penuh. Ketika Anda menetapkan baik `ref` maupun `sha`, Claude Code melakukan checkout `sha`. Di sebagian besar host git, termasuk GitHub, GitLab, dan Bitbucket, ini berarti pemasangan berhasil bahkan jika cabang 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 menurut SHA. Di server tersebut `ref` masih harus ada dan commit yang disematkan harus dapat dijangkau darinya.

168 

169Untuk cara setiap tipe diambil, di-cache, dan diversi, lihat [Referensi pemuatan plugin](/docs/id/plugins/loading).

170 

171<h3 id="relative-path-plugin-source">

172 Sumber plugin jalur relatif

173</h3>

174 

175Jalur diselesaikan dari akar marketplace. `./plugins/formatter` adalah `<root>/plugins/formatter` meskipun file marketplace berada di `<root>/.claude-plugin/`.

176 

177Jalur yang berisi `..` gagal validasi. Di macOS dan Linux, Claude Code menolak jalur entri yang berisi garis miring terbalik di mana pun setelah `./` awal, jadi tulis jalur dengan garis miring maju.

178 

179```json theme={null}

180{ "name": "formatter", "source": "./plugins/formatter" }

181```

182 

183Jalur relatif diselesaikan hanya ketika Claude Code memiliki file marketplace, jadi periksa [tipe sumber marketplace](#marketplace-sources):

184 

185* **`github`, `git`, `file`, dan `directory`**: Claude Code memiliki file marketplace.

186* **`url`**: Claude Code hanya mengambil `marketplace.json`, jadi jalur relatif tidak dapat diselesaikan. Berikan setiap plugin sumber objek sebagai gantinya, seperti `github` atau `git-subdir`.

187* **`settings`**: jalur relatif ditolak sepenuhnya.

188 

189<h4 id="bare-names-under-pluginroot">

190 Nama bare di bawah pluginRoot

191</h4>

192 

193Nama bare adalah nama direktori tunggal tanpa `/`, seperti `"formatter"`. Untuk menulis nama bare daripada jalur `./`, atur [`metadata.pluginRoot`](#top-level-fields) ke direktori yang mereka selesaikan di bawahnya. Dengan `"pluginRoot": "./plugins"`, `"source": "formatter"` diselesaikan ke `./plugins/formatter`. Memerlukan Claude Code v2.1.239 atau lebih baru.

194 

195`metadata.pluginRoot` memiliki batasan ini:

196 

197* Itu sendiri harus jalur relatif di dalam marketplace.

198* Itu tidak berpengaruh pada sumber yang sudah dimulai dengan `./`.

199* Sumber yang berisi `/`, seperti `team-a/formatter`, bukan nama bare dan masih memerlukan awalan `./`, bahkan ketika `metadata.pluginRoot` diatur.

200 

201<h3 id="github-plugin-source">

202 Sumber plugin github

203</h3>

204 

205`repo` mengambil `owner/repo`. `ref` dan `sha` opsional.

206 

207```json theme={null}

208{

209 "name": "formatter",

210 "source": {

211 "source": "github",

212 "repo": "your-org/formatter",

213 "ref": "v2.0.0",

214 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

215 }

216}

217```

218 

219<h3 id="url-plugin-source">

220 Sumber plugin url

221</h3>

222 

223`url` adalah URL git lengkap: `https://`, `http://`, `file://`, atau `git@`. Akhiran `.git` tidak diperlukan, jadi URL Azure DevOps dan AWS CodeCommit berfungsi seperti yang ditulis. Tipe ini tidak mengambil shorthand `owner/repo`.

224 

225```json theme={null}

226{

227 "name": "formatter",

228 "source": {

229 "source": "url",

230 "url": "https://gitlab.example.com/your-group/formatter.git",

231 "ref": "main"

232 }

233}

234```

235 

236<h3 id="git-subdir-plugin-source">

237 Sumber plugin git-subdir

238</h3>

239 

240`url` menerima URL git lengkap atau shorthand GitHub `owner/repo`. `path` adalah subdirektori yang menyimpan plugin, dan Claude Code hanya mengunduh subdirektori itu.

241 

242```json theme={null}

243{

244 "name": "formatter",

245 "source": {

246 "source": "git-subdir",

247 "url": "https://github.com/your-org/monorepo.git",

248 "path": "tools/formatter"

249 }

250}

251```

252 

253<h3 id="npm-plugin-source">

254 Sumber plugin npm

255</h3>

256 

257Sumber `npm` mengambil field ini:

258 

259* `package`: nama paket, atau nama scoped seperti `@your-org/formatter`

260* `version`: versi atau rentang

261* `registry`: URL registry untuk paket yang bukan di registry default

262 

263Claude Code mengambil paket dengan klien npm Anda. Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan. Jika paket memiliki lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) tersebut dalam langkah terpisah, juga dengan skrip dinonaktifkan.

264 

265```json theme={null}

266{

267 "name": "formatter",

268 "source": {

269 "source": "npm",

270 "package": "@your-org/formatter",

271 "version": "^2.0.0",

272 "registry": "https://npm.example.com"

273 }

274}

275```

276 

277<h3 id="archive-plugin-source">

278 Sumber plugin archive

279</h3>

280 

281`url` harus menggunakan `https://` dan tidak dapat menunjuk ke host loopback, link-local, atau cloud-metadata.

282 

283Akar plugin mungkin berada di atas zip atau satu direktori ke bawah.

284 

285`sha256` adalah digest arsip sebagai 64 karakter hex, huruf besar atau kecil. Ketika Anda menetapkannya, Claude Code menolak unduhan yang tidak cocok.

286 

287```json theme={null}

288{

289 "name": "formatter",

290 "source": {

291 "source": "archive",

292 "url": "https://artifacts.example.com/formatter-2.0.0.zip",

293 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

294 }

295}

296```

297 

298<h3 id="command-plugin-source">

299 Sumber plugin command

300</h3>

301 

302Gunakan sumber `command` ketika alat yang dipasang di mesin pengguna menghasilkan direktori plugin, seperti IDE yang merender pluginnya untuk toolchain yang dipilih pengguna. Claude Code menjalankan perintah ketika pengguna memasang atau memperbarui plugin, dan [lagi sekali per sesi](/docs/id/plugins/loading#when-a-command-source-re-runs), jadi pengguna mendapatkan output alat yang berubah tanpa memasang ulang.

303 

304Sumber `command` mengambil field ini:

305 

306* `command`: perintah shell yang mencetak jalur absolut direktori plugin sebagai satu baris dan keluar 0. Claude Code menunjukkan seluruh string kepada pengguna untuk ditinjau sebelum menjalankannya. Tulis sebagai ASCII yang dapat dicetak, paling banyak 500 karakter, tanpa run empat atau lebih spasi.

307* `timeout`: bilangan bulat detik dari 1 hingga 600. Default ke 60.

308* `mode`: `copy`, default, atau `link`. Lihat [Mode copy dan mode link](#copy-mode-and-link-mode).

309 

310```json theme={null}

311{

312 "name": "formatter",

313 "source": {

314 "source": "command",

315 "command": "my-tool claude-plugin-path",

316 "timeout": 120

317 }

318}

319```

320 

321Untuk cara pengguna menerima perintah, lihat [Pasang dari shell Anda](/docs/id/plugins/install#install-from-your-shell). Untuk apa yang pengguna lihat setelah Anda mengubahnya, lihat [Ubah perintah sumber command](/docs/id/plugins/host-marketplace#change-the-command-of-a-command-source). Administrator mematikan sumber command dengan [`disableCommandPluginSources`](/docs/id/settings-reference#disablecommandpluginsources).

322 

323<h4 id="what-the-command-must-do">

324 Apa yang harus dilakukan perintah

325</h4>

326 

327Tulis perintah untuk memenuhi persyaratan ini:

328 

329* **Shell dan direktori kerja**: Claude Code menjalankan perintah melalui `sh`, atau melalui `cmd.exe` di Windows, dari direktori home pengguna. Berikan jalur absolut atau perintah di `PATH`.

330* **Output**: cetak tepat satu baris di stdout, jalur absolut direktori plugin, dan keluar 0 dalam `timeout` detik.

331* **Isi direktori**: direktori menyimpan plugin lengkap pada saat perintah keluar. Jalur dapat berbeda dari satu run ke run berikutnya.

332 

333<h4 id="output-that-fails-the-install-or-update">

334 Output yang gagal install atau update

335</h4>

336 

337Install atau update gagal ketika perintah keluar non-zero, berjalan lebih lama dari `timeout`, atau mencetak apa pun selain satu jalur absolut. Itu juga gagal ketika direktori yang dicetak adalah salah satu dari ini:

338 

339* **Tidak ada konten plugin**: direktori yang dicetak tidak memiliki konten plugin di tingkat atasnya, seperti direktori `.claude-plugin/` atau direktori `skills/`, `commands/`, `agents/`, atau `hooks/`.

340* **Direktori sesi sendiri**: direktori yang dicetak adalah yang Claude Code dimulai, atau salah satu induknya.

341* **Jalur jaringan**: di Windows, jalur yang dicetak adalah jalur UNC.

342* **Terlalu besar untuk disalin**: dalam mode copy, direktori lebih besar dari 256 MiB atau memiliki lebih dari 20.000 entri.

343 

344<h4 id="copy-mode-and-link-mode">

345 Mode copy dan mode link

346</h4>

347 

348`mode` memutuskan apakah Claude Code menyalin direktori yang dicetak atau menggunakannya di tempat:

349 

350* **`copy`**: Claude Code menyalin direktori ke cache plugin dan menurunkan [versi plugin](/docs/id/plugins/loading#how-claude-code-computes-the-version) dari hash file yang disalin. Alat Anda dapat menghapus atau menulis ulang direktori setelah perintah keluar. Re-run yang menghasilkan file identik dihitung sebagai up to date.

351* **`link`**: Claude Code mengisi entri cache plugin dengan tautan ke setiap entri tingkat atas direktori yang dicetak dan memuat file di tempat. Tidak ada yang disalin, konten file tidak di-hash, dan batas ukuran tidak berlaku. Gunakan untuk direktori terlalu besar untuk disalin, seperti ekspor SDK yang dirender.

352 

353Plugin mode link memiliki persyaratan ini:

354 

355* **Simpan direktori di tempat**: Claude Code memuat plugin melalui tautan di setiap startup, jadi direktori yang dicetak harus tetap di mana itu selama plugin tetap dipasang.

356* **Cetak jalur berbeda untuk menandakan konten baru**: versi berasal dari jalur nyata direktori yang dicetak dan entri tingkat atasnya, bukan dari file di dalamnya.

357* **Simpan symlink tingkat atas di dalam direktori**: install gagal jika entri tingkat atas adalah symlink yang menunjuk di luar direktori yang dicetak.

358* **Sertakan `node_modules`**: Claude Code melewati [install dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) untuk plugin mode link, jadi cetak direktori yang sudah berisi paket yang dibutuhkan plugin.

359* **Sesi dimulai di dalam direktori**: sesi yang dimulai di direktori yang dicetak atau di mana pun di bawahnya tidak memuat plugin.

360* **Bukan di Windows**: Claude Code menolak untuk memasang plugin mode link di Windows. Deklarasikan `"mode": "copy"` di sana.

361 

362<h2 id="marketplace-sources">

363 Sumber marketplace

364</h2>

365 

366Sumber marketplace mengatakan di mana Claude Code mengambil `marketplace.json` dari. CLI membangun satu untuk Anda ketika Anda menambahkan marketplace, dan Anda menulis satu sendiri di pengaturan:

367 

368* **[`claude plugin marketplace add`](/docs/id/plugins/cli-reference)**: Claude Code membangun sumber dari string yang Anda lewatkan.

369* **[`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces)**: Anda menulis sumber sendiri sebagai objek `source`.

370* **[`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dan [`blockedMarketplaces`](/docs/id/plugins/org#restrict-what-users-can-install)**: administrator menulis sumber dalam dua daftar kebijakan ini. `strictKnownMarketplaces` adalah allowlist dan `blockedMarketplaces` adalah blocklist.

371 

372Nama tipe `url`, `git`, dan `github` berarti sesuatu yang berbeda dalam sumber marketplace daripada dalam [sumber plugin](#plugin-sources):

373 

374| Nama tipe | Sebagai sumber marketplace | Sebagai sumber plugin |

375| :-------- | :--------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |

376| `url` | Tautan langsung ke file `marketplace.json`, dengan field `url`, `headers`, dan `headersHelper` | Repositori git untuk diklon, dengan field `url`, `ref`, dan `sha` |

377| `git` | Repositori git untuk diklon, dengan field `url`, `ref`, `path`, dan `sparsePaths` | Tidak ada |

378| `github` | Repositori GitHub, dengan field `repo`, `ref`, `path`, dan `sparsePaths` | Repositori GitHub, dengan field `repo`, `ref`, dan `sha`, dan tidak ada `path` |

379 

380Tabel mencantumkan setiap tipe sumber marketplace dengan field-nya, input `claude plugin marketplace add` yang menghasilkannya, dan apa yang dilakukannya di masing-masing dari tiga kunci pengaturan.

381 

382| Tipe | Field | Input `marketplace add` | `extraKnownMarketplaces` | `strictKnownMarketplaces` | `blockedMarketplaces` |

383| :------------ | :----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------- |

384| `url` | `url`, `headers`, `headersHelper` | URL `http://` atau `https://` yang tidak cocok dengan bentuk git | Dimuat | Memungkinkan URL yang sama | Memblokir URL yang sama |

385| `github` | `repo`, `ref`, `path`, `sparsePaths` | `owner/repo`, `owner/repo@ref`, atau `owner/repo#ref` | Dimuat | Memungkinkan `repo`, `ref`, dan `path` yang sama. `repo` mungkin `owner/*` | Memblokir yang sama, dan URL `git` ke repositori yang sama |

386| `git` | `url`, `ref`, `path`, `sparsePaths` | URL `user@host:path`, atau URL `https://` yang berakhir dengan `.git`, berisi `/_git/`, atau menamai repositori github.com atau gitlab.com. `#ref` menyematkan ref | Dimuat | Memungkinkan URL, `ref`, dan `path` yang sama | Memblokir yang sama, dan ejaan lain dari repositori github.com yang sama |

387| `npm` | `package` | Tidak diproduksi | Gagal dimuat: `NPM marketplace sources not yet implemented` | Diuraikan tetapi tidak cocok dengan apa pun, karena tidak ada yang mendaftarkan marketplace `npm` | Diuraikan tetapi tidak cocok dengan apa pun |

388| `file` | `path` | Jalur ke file `.json` | Dimuat | Memungkinkan jalur yang sama | Memblokir jalur yang sama |

389| `directory` | `path` | Jalur ke direktori | Dimuat | Memungkinkan jalur yang sama | Memblokir jalur yang sama |

390| `settings` | `name`, `plugins`, `owner` | Tidak diproduksi | Dimuat | Memungkinkan entri dengan `name` dan `plugins` yang sama | Memblokir `name` yang sama |

391| `skills-dir` | none | Tidak diproduksi | Gagal dimuat: `Unsupported marketplace source type` | Menjaga [plugin direktori skills](/docs/id/plugins/org#keep-skills-directory-plugins-loading) tetap dimuat saat allowlist diatur. Lihat [Nilai sumber yang valid hanya dalam daftar kebijakan](#source-values-valid-only-in-policy-lists) | Menghentikan plugin direktori skills dari dimuat |

392| `hostPattern` | `hostPattern` | Tidak diproduksi | Gagal dimuat: `Unsupported marketplace source type` | Memungkinkan sumber `github`, `git`, dan `url` yang host-nya cocok | Memblokir sumber tersebut |

393| `pathPattern` | `pathPattern` | Tidak diproduksi | Gagal dimuat: `Unsupported marketplace source type` | Memungkinkan sumber `file` dan `directory` yang `path`-nya cocok | Memblokir sumber tersebut |

394 

395<h3 id="fields-by-type">

396 Field menurut tipe

397</h3>

398 

399Tabel mencantumkan setiap field sumber marketplace yang memiliki default, batasan, atau makna khusus untuk tipenya.

400 

401| Field | Tipe | Deskripsi |

402| :-------------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

403| `url` | `url` | Tautan ke file `marketplace.json`. Claude Code hanya mengunduh file itu, jadi plugin marketplace tidak dapat menggunakan [sumber jalur relatif](#relative-path-plugin-source) |

404| `url` | `git` | Repositori git untuk diklon |

405| `headers` | `url` | Peta header HTTP yang Claude Code kirim dengan pengambilan, untuk host yang diautentikasi |

406| `headersHelper` | `url` | Perintah yang mencetak header yang nilai-nilainya terlalu pendek untuk didaftar dalam `headers`. Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Autentikasi unduhan arsip](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) |

407| `repo` | `github` | Dalam `marketplace add` dan `extraKnownMarketplaces`, `repo` harus menamai satu repositori. `marketplace add` menolak `owner/*` sebagai shorthand `owner/repo` yang tidak valid; dalam `extraKnownMarketplaces` Claude Code mengambilnya secara harfiah dan klon gagal |

408| `ref` | `github`, `git` | Cabang atau tag. Default ke cabang default repositori |

409| `path` | `github`, `git` | Jalur file marketplace di dalam repositori. Default ke `.claude-plugin/marketplace.json` |

410| `path` | `file` | File marketplace itu sendiri. Claude Code membacanya di tempat dan mengambil direktori dua level ke atas sebagai akar marketplace, jadi simpan file di `<root>/.claude-plugin/marketplace.json` |

411| `path` | `directory` | Akar marketplace, direktori yang berisi `.claude-plugin/marketplace.json` |

412| `sparsePaths` | `github`, `git` | Array direktori untuk sparse checkout, seperti `[".claude-plugin", "plugins"]`. `claude plugin marketplace add --sparse` menetapkannya |

413| `skipLfs` | `github`, `git` | Diterima dan tidak berpengaruh. Lihat [Simpan file plugin di luar Git LFS](/docs/id/plugins/host-marketplace#keep-plugin-files-out-of-git-lfs) |

414| `name` | `settings` | Harus sama dengan kunci `extraKnownMarketplaces` dan tidak dapat menjadi [nama yang dicadangkan](#reserved-names) |

415| `plugins` | `settings` | Katalog inline, tanpa file yang dihosting. Setiap item mengambil `name`, `source`, `description`, `version`, `strict`, `headers`, dan `headersHelper`. Tulis `source` setiap item sebagai tipe objek, karena jalur relatif tidak memiliki repositori untuk diselesaikan |

416 

417<h3 id="source-values-valid-only-in-policy-lists">

418 Nilai sumber yang valid hanya dalam daftar kebijakan

419</h3>

420 

421`hostPattern`, `pathPattern`, `skills-dir`, dan bentuk `owner/*` dari `repo` hanya valid dalam dua daftar kebijakan, `strictKnownMarketplaces` dan `blockedMarketplaces`:

422 

423* **`hostPattern` dan `pathPattern`**: ekspresi reguler yang Claude Code uji terhadap sumber sebelum mengambil darinya.

424* **`skills-dir`**: bukan sumber. Jika Anda menetapkan `strictKnownMarketplaces` sama sekali, [plugin direktori skills](/docs/id/plugins/org#keep-skills-directory-plugins-loading) berhenti dimuat sampai Anda menambahkan `{"source": "skills-dir"}` ke daftar itu.

425* **`owner/*`**: sebagai nilai `repo` `github`, cocok dengan setiap repositori di bawah pemilik GitHub yang tepat. Memerlukan Claude Code v2.1.223 atau lebih baru.

426 

427Untuk urutan kecocokan, semantik `ref` yang tepat, dan resep, lihat [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org).

428 

429<h3 id="source-objects-in-settings">

430 Objek sumber di pengaturan

431</h3>

432 

433Nilai `extraKnownMarketplaces` adalah peta dari nama marketplace ke objek dengan `source`. Entri ini mendaftarkan marketplace dari repositori git di cabang `main`-nya:

434 

435```json theme={null}

436{

437 "extraKnownMarketplaces": {

438 "your-marketplace": {

439 "source": {

440 "source": "git",

441 "url": "https://git.example.com/your-org/your-marketplace.git",

442 "ref": "main"

443 }

444 }

445 }

446}

447```

448 

449`strictKnownMarketplaces` dan `blockedMarketplaces` adalah array objek sumber. Allowlist ini mengakui satu pemilik GitHub dan satu host internal:

450 

451```json theme={null}

452{

453 "strictKnownMarketplaces": [

454 { "source": "github", "repo": "your-org/*" },

455 { "source": "hostPattern", "hostPattern": "^git\\.example\\.com$" }

456 ]

457}

458```

459 

460<h2 id="validation-messages">

461 Pesan validasi

462</h2>

463 

464`claude plugin validate <path>` mengambil akar marketplace atau file marketplace itu sendiri. Itu mencetak kesalahan dan peringatan. Untuk kode keluar dan `--strict`, lihat [plugin validate](/docs/id/plugins/cli-reference#plugin-validate).

465 

466Pesan menamai entri plugin menurut indeksnya, ditulis sebagai `plugins.1.source` atau `plugins[1].source`.

467 

468Pesan yang diawali dengan indeks entri dan `plugin.json →`, seperti `plugins[2] plugin.json →`, adalah tentang file plugin itu sendiri. [`claude plugin validate` melaporkan kesalahan](/docs/id/plugins/troubleshooting#claude-plugin-validate-reports-errors) mencantumkan pesan tersebut dengan perbaikannya.

469 

470Peringatan yang menyebutkan nama flag Claude Desktop menandai nama yang Claude Code terima tetapi Claude Desktop tolak, karena aturan nama Claude Desktop lebih ketat.

471 

472Tabel memetakan pesan tingkat marketplace ke field yang masing-masing tentang.

473 

474| Pesan | Level | Field |

475| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------ |

476| `Marketplace must have a name` | Error | `name` kosong |

477| `Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")` | Error | `name` |

478| `Marketplace name cannot contain path separators (/ or \), ".." sequences, or be "."` | Error | `name` |

479| `Marketplace name impersonates an official Anthropic/Claude marketplace` | Error | `name`. Lihat [Nama yang dicadangkan](#reserved-names) |

480| `Marketplace name cannot contain control or bidirectional-formatting characters` | Error | `name` berisi karakter kontrol, seperti escape atau newline, atau karakter pemformatan bidirectional Unicode |

481| `Marketplace name "inline" is reserved for --plugin-dir session plugins`, dan varian `builtin`, `skills-dir`, `synced`, `claude-plugin-test`, `npm`, `pip`, `uv`, `cargo`, `github`, dan `gh` | Error | `name` |

482| `Author name cannot be empty` | Error | `owner.name` |

483| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |

484| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |

485| `Duplicate plugin name "x" found in marketplace` | Error | Dua entri berbagi `name` |

486| `plugins.i.source: Invalid input` | Error | `source` entri tidak cocok dengan tipe apa pun. Lihat [Invalid input pada sumber](#invalid-input-on-a-source) |

487| `plugins[i].source: Path contains "..": <path>` | Error | `source` relatif yang melarikan diri dari akar marketplace |

488| `source.source: 'unsupported' is a parse-time placeholder and cannot be authored` | Error | `plugins[i].source` |

489| `Plugin "x" sets headersHelper but is not "strict": false` | Error | `plugins[i].headersHelper`, pada entri `archive` |

490| `chain does not resolve (<reason>) — target must be a name in plugins[], a key in renames, or null` | Error | `renames.<old>` |

491| `target "x" is not a valid plugin name (PluginIdSchema)` | Error | `renames.<old>` |

492| `Unknown field 'x'. Claude Code ignores it at load time.` | Warning | Kunci bernama di tingkat atas, di bawah `metadata`, dalam entri, atau di bawah `relevance` entri |

493| `Marketplace has no plugins defined` | Warning | `plugins` kosong |

494| `Plugin "x" sets headers/headersHelper, which only apply to "archive" sources; they have no effect on this entry.` | Warning | `plugins[i].headers` atau `plugins[i].headersHelper`, pada entri yang `source`-nya bukan `archive` |

495| `Plugin "x" fetches its archive with a headersHelper but sets no sha256 pin` | Warning | `plugins[i].source.sha256` |

496| `Header "x" is a request-routing/identity header that catalog entries may not set; Claude Code drops it at download time.` | Warning | `plugins[i].headers.<name>` |

497| `Local source "x" is or traverses a symlink, so <path> was not read` | Warning | `plugins[i].source` |

498| `No marketplace description provided. Adding a description helps users understand what this marketplace offers` | Warning | `description` |

499| `Entry declares version "x" but <path>/plugin.json says "y". At install time, plugin.json wins` | Warning | `plugins[i].version`, pada entri jalur relatif |

500| `'relevance' must be an object containing topic and signals; got <type>. It will be ignored at load time.` | Warning | `plugins[i].relevance` |

501| `'metadata' must be a free-form object; got <type>. It will be ignored at load time.` | Warning | `plugins[i].metadata` |

502| `'experimental' must be an object containing component declarations; got <type>. It will be ignored at load time.` | Warning | `plugins[i].experimental` |

503| `Marketplace name "x" is reserved in Claude Desktop` | Warning | `name` adalah `org`, `org-provisioned`, atau `unknown`. Claude Desktop menolak marketplace |

504| `Marketplace name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Warning | `name`. Claude Desktop menolak marketplace |

505| `Plugin name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Warning | `plugins[i].name`. Claude Desktop menjatuhkan entri |

506 

507<h3 id="invalid-input-on-a-source">

508 Invalid input pada sumber

509</h3>

510 

511`Invalid input` pada `source` berarti objek tidak cocok dengan tipe sumber apa pun. Periksa penyebab ini:

512 

513* Jalur relatif yang tidak dimulai dengan `./`, selain `"."` atau [nama bare di bawah `metadata.pluginRoot`](#relative-path-plugin-source)

514* `package` npm yang berisi `..`

515* Tipe `source` yang bukan salah satu dari [sumber plugin](#plugin-sources)

516* Tipe yang dikenal dengan field yang diperlukan hilang atau tipe yang salah, seperti `github` tanpa `repo`

517 

518<h3 id="failures-that-validation-doesn’t-catch">

519 Kegagalan yang validasi tidak tangkap

520</h3>

521 

522`claude plugin validate` tidak melaporkan setiap kegagalan. Entri `hooks` yang ditulis sebagai jalur file atau array melewati validasi, dan kesalahan muncul hanya ketika plugin dimuat, seperti [Hooks dalam entri](#hooks-in-an-entry) menjelaskan. Kesalahan pengambilan `source` juga muncul hanya setelah install, bukan dalam validasi.

523 

524[`claude plugin list`](/docs/id/plugins/cli-reference) menunjukkan plugin yang gagal dimuat dengan kesalahannya, dan [Troubleshoot plugins](/docs/id/plugins/troubleshooting) mencakup string waktu muat.

525 

526<h2 id="next-steps">

527 Langkah berikutnya

528</h2>

529 

530* [Buat marketplace](/docs/id/plugins/create-marketplace): bangun marketplace dari field ini dan pasang darinya secara lokal

531* [Host dan kelola marketplace](/docs/id/plugins/host-marketplace): di mana menempatkan file dan cara pengguna menerima perubahan

532* [Referensi manifest plugin](/docs/id/plugins/manifest-reference): field `plugin.json` yang dapat ditimpa entri

533* [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org): resep allowlist dan blocklist yang menggunakan nilai sumber ini

plugins/measure.md +193 −0 created

Details

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# Ukur biaya dan penggunaan plugin

6 

7> Ukur biaya token plugin Claude Code, cari tahu apakah orang masih menggunakannya, dan pilih peristiwa telemetri untuk pertanyaan plugin di seluruh organisasi.

8 

9Setiap sesi di mana plugin diaktifkan mencakup nama dan deskripsi skills, agents, dan commands-nya dalam konteks Claude, dan token tersebut dihitung terhadap penggunaan pengguna terlepas dari apakah plugin digunakan atau tidak. Halaman ini menunjukkan cara melihat angka tersebut untuk plugin, cara menguranginya jika Anda memelihara plugin, dan di mana penggunaan ditampilkan sehingga Anda dapat mengetahui apakah plugin masih digunakan.

10 

11Halaman ini untuk penulis dan pemelihara plugin. Jika Anda mengelola Claude Code untuk organisasi, [Measure across a fleet](#measure-across-a-fleet) mencakup pertanyaan yang sama di setiap mesin.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Menguji seberapa andal plugin mengubah perilaku Claude**: lihat [Test plugins with evals](/docs/id/plugin-evals)

17 * **Memangkas konteks sesi Anda sendiri**: lihat [Manage installed plugins](/docs/id/plugins/install#manage-installed-plugins) dan halaman [context window](/docs/id/context-window)

18</Note>

19 

20Mulai dengan [Measure what a plugin costs](#measure-what-a-plugin-costs).

21 

22<h2 id="measure-what-a-plugin-costs">

23 Measure what a plugin costs

24</h2>

25 

26Untuk melihat apa yang ditambahkan plugin ke konteks Claude, jalankan [`claude plugin details`](/docs/id/plugins/cli-reference#plugin-details) dengan nama plugin. Anda menjalankannya di shell Anda, bukan di prompt sesi Claude Code yang sedang berjalan. Plugin harus dimuat: diinstal, di direktori skills, atau diteruskan dengan `--plugin-dir` dalam perintah yang sama, seperti dalam `claude --plugin-dir ./formatter plugin details formatter`.

27 

28Contoh ini membaca plugin yang diinstal bernama `formatter` yang memiliki dua skills, satu command, satu agent, satu hook, dan satu server MCP:

29 

30```bash theme={null}

31claude plugin details formatter

32```

33 

34```text theme={null}

35formatter 1.0.0

36 Description: Formats and lints code on save

37 Source: formatter@my-marketplace

38 

39Component inventory

40 Skills (3) format-all, format-code, lint-fix

41 Agents (1) style-reviewer

42 Hooks (1) PostToolUse (harness-only — no model context cost)

43 MCP servers (1) formatter-tools (tool schemas resolved at runtime; not counted)

44 LSP servers (0)

45 

46Projected token cost

47 Always-on: ~146 tok added to every session

48 

49Per-component (rounded)

50 component always-on on-invoke

51 format-code ~40 ~30

52 lint-fix ~50 ~30

53 style-reviewer ~40 ~40

54 format-all < 20 ~30

55 

56 On-invoke cost is paid each time a skill or agent fires.

57 Token counts are estimates and may differ from actual usage.

58```

59 

60Setiap bagian dari output menjawab pertanyaan yang berbeda:

61 

62* **Component inventory**: apa yang ditemukan Claude Code di plugin. Commands dihitung dengan skills, jadi `format-all` muncul di bawah `Skills`. Hooks dan server MCP tidak mendapatkan estimasi biaya dan tidak ada baris per-component; untuk melihat apa yang ditambahkan tools MCP plugin, jalankan `/context` dalam sesi dengan plugin diaktifkan dan baca kategori `MCP tools`.

63* **Always-on**: token yang ditambahkan nama dan deskripsi skills, agents, dan commands plugin ke setiap sesi di mana plugin diaktifkan, terlepas dari apakah ada yang berjalan. Ini adalah angka yang dibawa setiap pengguna, dan yang harus dikurangi.

64* **Per-component**: setiap baris membagi satu skill, agent, atau command menjadi bagian always-on dan biaya on-invoke, yang merupakan body yang dimuat hanya ketika component tersebut berjalan. Gunakan kolom always-on untuk menemukan component mana yang berkontribusi paling banyak.

65 

66<h3 id="lower-the-always-on-figure">

67 Lower the always-on figure

68</h3>

69 

70Jika Anda memelihara plugin, perubahan ini mengurangi apa yang ditambahkannya ke setiap sesi. Jika Anda hanya menggunakannya, pilihan Anda adalah menonaktifkan atau mencopot pemasangannya; lihat [Manage installed plugins](/docs/id/plugins/install#manage-installed-plugins).

71 

72Angka always-on menghitung nama setiap component ditambah `description` dan `when_to_use` frontmatter-nya. Untuk menurunkannya:

73 

74* Perpendek deskripsi skill dan agent.

75* Pisahkan plugin besar sehingga pengguna hanya memasang component yang mereka butuhkan.

76 

77Deskripsi skill juga apa yang dicocokkan Claude terhadap permintaan, jadi yang lebih pendek dapat menghentikan skill dari pemicu. Setelah Anda memangkas deskripsi, periksa pemicu dengan [grader `tool_used: Skill`](/docs/id/plugin-evals#create-your-first-eval-suite) dalam suite eval Anda.

78 

79Untuk apa yang berkontribusi setiap jenis component, lihat [plugin components](/docs/id/plugins/components).

80 

81<h3 id="cost-shown-to-users-before-install">

82 Cost shown to users before install

83</h3>

84 

85Plugin di marketplace resmi menunjukkan biayanya kepada pengguna sebelum pemasangan. Di `/plugin`, ketika pengguna menjelajahi daftar plugin marketplace dan memilih plugin, pane detail menunjukkan bagian **Context cost** dengan baris `Every turn:` dan baris `When invoked:`. Ketika angka always-on adalah 2.000 token atau lebih, baris `Every turn:` muncul disorot.

86 

87Plugin di marketplace Anda sendiri tidak memiliki bagian **Context cost**.

88 

89<h2 id="check-whether-a-plugin-is-used">

90 Check whether a plugin is used

91</h2>

92 

93Claude Code tidak melaporkan penggunaan plugin kembali ke pembuatnya. Penggunaan dicatat di mesin setiap orang yang memasang plugin, jadi apa yang dapat Anda pelajari tergantung pada hubungan Anda dengan orang-orang tersebut:

94 

95* **Anda mengelola Claude Code untuk organisasi mereka**: peristiwa OpenTelemetry dan Analytics API menghitung pemasangan dan aktivasi skill di setiap mesin. Lihat [Measure across a fleet](#measure-across-a-fleet).

96* **Mereka adalah rekan kerja yang dapat Anda tanyai**: Claude Code setiap pengguna menunjukkan kepada mereka apakah mereka masih menggunakan plugin, di empat tempat: panel [`/plugin`](#not-used-recently-in-/plugin), [`/skill-doctor`](#find-skills-that-never-run), [`/doctor`](#unused-plugins-in-/doctor), dan [`/usage`](#usage-share-in-/usage). Keempat perintah ini dijalankan pengguna di prompt Claude Code dalam sesi di mesin mereka sendiri.

97* **Tidak satupun**: Anda tidak memiliki sinyal penggunaan dari Claude Code untuk plugin tersebut.

98 

99<h3 id="not-used-recently-in-/plugin">

100 Not used recently in `/plugin`

101</h3>

102 

103Di tab **Installed** dari `/plugin`, plugin yang dipasang pengguna dari marketplace bergerak di bawah header **Not used recently** setelah tidak digunakan selama minimal 14 hari dan 10 sesi. Detail plugin juga menunjukkan baris `Last used:`. Untuk apa yang dilakukan pengguna dengan header dan baris tersebut, lihat [Find plugins you no longer use](/docs/id/plugins/install#find-plugins-you-no-longer-use).

104 

105Header **Not used recently** tidak pernah muncul untuk:

106 

107* Plugin yang dimuat dengan `--plugin-dir` atau dari direktori skills

108* Plugin yang diaktifkan melalui managed settings, atau dipasang dari [seed directory](/docs/id/plugins/org#seed-containers-and-ci)

109* Plugin yang menyertakan tema, output style, monitor, atau workflow, karena ini digunakan tanpa invocation yang dilacak

110 

111[Language server](/docs/id/plugins/components#lsp-servers) plugin dihitung sebagai digunakan ketika memberikan diagnostik atau menjawab permintaan navigasi kode, jadi plugin LSP yang servernya aktif dalam sesi Anda tidak terdaftar sebagai tidak digunakan.

112 

113Ketika organisasi pengguna menetapkan [`strictKnownMarketplaces`](/docs/id/plugins/org#restrict-what-users-can-install), baik header maupun baris `Last used:` tidak muncul.

114 

115<h3 id="find-skills-that-never-run">

116 Find skills that never run

117</h3>

118 

119Jalankan `/skill-doctor` untuk melihat apa yang dikerjakan setiap skill Anda dan seberapa sering digunakan. Ini menandai skills yang ada dalam daftar skill Claude tetapi tidak pernah dijalankan, termasuk skills dari plugins.

120 

121Dalam sesi interaktif, laporan terbuka di tab **Stats** manajer `/plugin`. Lihat [Find unused skills](/docs/id/skills#find-unused-skills) untuk apa yang dicakup laporan dan di mana tersedia.

122 

123<h3 id="unused-plugins-in-/doctor">

124 Unused plugins in `/doctor`

125</h3>

126 

127Checkup `/doctor` mencantumkan setiap skill yang dipasang pengguna, server MCP, dan plugin, dan merekomendasikan menonaktifkan yang tidak digunakan. Lihat [`/doctor` dalam referensi commands](/docs/id/commands#all-commands).

128 

129<h3 id="usage-share-in-/usage">

130 Usage share in `/usage`

131</h3>

132 

133Pada paket Pro, Max, Team, atau Enterprise, breakdown `/usage` mengatribusikan penggunaan terbaru kepada skills, subagents, plugins, dan server MCP sebagai bagian dari total. Lihat [Using the `/usage` command](/docs/id/costs#using-the-/usage-command).

134 

135<h2 id="measure-across-a-fleet">

136 Measure across a fleet

137</h2>

138 

139Jika Anda mengelola Claude Code untuk organisasi, Anda dapat mengukur biaya dan penggunaan plugin di setiap mesin dari salah satu sumber ini:

140 

141* **OpenTelemetry events**: Claude Code mengekspor ini ke backend Anda sendiri setelah Anda [configure an exporter](/docs/id/monitoring-usage). Lihat [OpenTelemetry events for plugin installs and use](#pick-the-opentelemetry-event-for-each-question).

142* **Analytics API**: dilayani dari catatan Anthropic, tanpa exporter yang diperlukan. Lihat [Query the Analytics API](#query-the-analytics-api).

143 

144<h3 id="pick-the-opentelemetry-event-for-each-question">

145 OpenTelemetry events for plugin installs and use

146</h3>

147 

148Peristiwa OpenTelemetry dan atribut ini menjawab setiap pertanyaan plugin dari backend Anda:

149 

150| Pertanyaan | OpenTelemetry event atau atribut |

151| :----------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

152| Plugin mana yang dipasang, dan dari mana | [`claude_code.plugin_installed`](/docs/id/monitoring-usage#plugin-installed-event), satu per pemasangan |

153| Plugin mana yang aktif dalam berapa banyak sesi | [`claude_code.plugin_loaded`](/docs/id/monitoring-usage#plugin-loaded-event), satu per plugin yang diaktifkan pada awal sesi |

154| Skill mana yang diaktifkan, dan plugin mana yang memilikinya | [`claude_code.skill_activated`](/docs/id/monitoring-usage#skill-activated-event), dengan `plugin.name` dan `marketplace.name` untuk plugin skills |

155| Apa yang dilaporkan hooks plugin | [`claude_code.hook_plugin_metrics`](/docs/id/monitoring-usage#hook-plugin-metrics-event), dipancarkan hanya untuk hooks di plugin marketplace resmi |

156| Apa yang dikerjakan plugin dalam pengeluaran API | `plugin.name` dan `marketplace.name` pada [cost counter](/docs/id/monitoring-usage#cost-counter), diatur ketika skill atau subagent aktif milik plugin |

157 

158<h3 id="redacted-plugin-names-in-your-backend">

159 Redacted plugin names in your backend

160</h3>

161 

162Plugin dari marketplace resmi melaporkan nama plugin dan nama marketplace mereka ke backend Anda secara verbatim. Setiap plugin lainnya namanya diredaksi atau dihilangkan secara default, termasuk plugin dari marketplace organisasi Anda sendiri. [Trust tier](/docs/id/plugins/security#find-plugins-in-telemetry) plugin menentukan mana.

163 

164Untuk mendapatkan nama asli pada beberapa peristiwa, atur variabel lingkungan [`OTEL_LOG_TOOL_DETAILS`](/docs/id/monitoring-usage#common-configuration-variables) ke `1` pada mesin yang mengekspor telemetri, misalnya di blok `env` dari [managed settings](/docs/id/monitoring-usage#administrator-configuration) yang sama yang mengonfigurasi exporter:

165 

166| Event | Default | Dengan `OTEL_LOG_TOOL_DETAILS=1` |

167| :------------------------------------ | :----------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- |

168| `plugin_loaded` | `plugin.name` dan `marketplace.name` adalah string literal `third-party` | Nama asli |

169| `plugin_installed`, `skill_activated` | `plugin.name` dan `marketplace.name` dihilangkan; pada `skill_activated`, `skill.name` adalah `custom_skill` | Nama asli |

170| Cost counter | `plugin.name` adalah `third-party`; `marketplace.name` tidak ada | `plugin.name` asli; `marketplace.name` masih tidak ada |

171 

172Pada `plugin_loaded`, `plugin_id_hash` masih mengidentifikasi setiap plugin secara default, jadi Anda dapat menghitung plugin pihak ketiga yang berbeda.

173 

174<h3 id="query-the-analytics-api">

175 Query the Analytics API

176</h3>

177 

178Pada paket Enterprise, Analytics API menjawab "plugin mana yang dipasang dan dijalankan organisasi saya" dari catatan Anthropic, tanpa exporter yang diperlukan. [`GET /v1/organizations/analytics/plugins`](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) mengembalikan per-plugin, per-hari install dan invocation counts di seluruh Claude Code dan Cowork, yang dapat Anda kelompokkan berdasarkan pengguna, RBAC group, atau produk.

179 

180Aktivitas plugin yang mencapai Anthropic tanpa nama plugin muncul dalam satu baris agregat `third-party`. [Find plugins in telemetry](/docs/id/plugins/security#find-plugins-in-telemetry) mengatakan plugin mana yang dilaporkan Claude Code berdasarkan nama.

181 

182Autentikasi permintaan dengan API key yang memiliki scope `read:analytics`, yang dibuat Primary Owner seperti dijelaskan di bawah [Access data programmatically](/docs/id/analytics#access-data-programmatically).

183 

184Lihat [endpoint reference](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) untuk parameter dan response fields.

185 

186<h2 id="next-steps">

187 Next steps

188</h2>

189 

190* [Test plugins with evals](/docs/id/plugin-evals): ukur seberapa andal plugin mengarahkan Claude, bukan hanya apa yang dikerjakan

191* [Lower the always-on figure](#lower-the-always-on-figure): apa yang harus diubah dalam plugin untuk mengurangi biaya per-turn-nya

192* [Plugin security and trust](/docs/id/plugins/security#find-plugins-in-telemetry): field telemetri mana yang membawa nama plugin dan kapan diredaksi

193* [Monitoring usage](/docs/id/monitoring-usage): referensi peristiwa OpenTelemetry lengkap

plugins/org.md +460 −0 created

Details

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# Kelola plugin Claude Code untuk organisasi Anda

6 

7> Kontrol plugin mana yang Claude Code instal dan izinkan di seluruh organisasi Anda melalui pengaturan terkelola.

8 

9Pengaturan terkelola memungkinkan Anda memutuskan plugin mana yang Claude Code instal dan izinkan di setiap mesin dalam organisasi Anda. Pengguna tidak dapat menggantinya. Anda mengirimkannya baik sebagai [pengaturan terkelola server](/docs/id/server-managed-settings) dari konsol admin claude.ai atau sebagai pengaturan terkelola endpoint melalui MDM atau file `managed-settings.json`. Sebagian besar kontrol di halaman ini hanya berlaku dari pengaturan terkelola.

10 

11Halaman ini untuk administrator, dan pengaturan di sini mengatur Claude Code.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Menginstal plugin untuk diri sendiri**: mulai dari [Install plugins](/docs/id/plugins/install)

17 * **Mengontrol plugin mana yang dapat digunakan anggota di claude.ai dan Cowork**: lihat [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) di pusat bantuan

18 * **Halaman plugin di pengaturan admin claude.ai**: [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) mengaktifkan plugin untuk akun claude.ai anggota, dan yang tersebut mencapai Claude Code sebagai [synced plugins](/docs/id/plugins/loading#synced-plugins). Ini tidak menetapkan salah satu kunci di halaman ini

19</Note>

20 

21Bagian-bagian mengikuti urutan yang paling sering dilakukan peluncuran: [memerlukan plugin](#pre-install-and-require-plugins) untuk semua orang atau per repositori, [seed containers dan CI](#seed-containers-and-ci), [batasi](#restrict-what-users-can-install) apa yang dapat ditambahkan pengguna sendiri, [tetapkan kebijakan pembaruan](#set-update-policy), kemudian [audit](#audit-and-review) apa yang diinstal. Untuk meninjau setiap kunci kebijakan di satu tempat, lihat [matriks kontrol](#control-matrix).

22 

23<h2 id="pre-install-and-require-plugins">

24 Pre-install dan require plugins

25</h2>

26 

27Marketplace adalah katalog plugin yang Claude Code ambil dari repositori git, URL, atau jalur lokal. Setelah Anda mendaftarkan marketplace di mesin, Claude Code dapat menginstal plugin darinya.

28 

29Untuk menginstal plugin untuk armada, tetapkan dua kunci bersama-sama dalam [pengaturan terkelola](/docs/id/managed-settings), file kebijakan atau kebijakan yang disampaikan server yang dibaca setiap mesin dalam organisasi Anda: `extraKnownMarketplaces` mendaftarkan marketplace di setiap mesin, dan `enabledPlugins` menamai plugin yang akan diinstal dan diaktifkan darinya. [Pilih mekanisme pengiriman](#choose-a-delivery-mechanism) mencakup cara pengaturan terkelola mencapai setiap mesin.

30 

31<h3 id="choose-a-delivery-mechanism">

32 Pilih mekanisme pengiriman

33</h3>

34 

35Pengaturan terkelola mencapai mesin melalui salah satu dari tiga mekanisme pengiriman:

36 

37* **Pengaturan terkelola server**: tetapkan kunci plugin sebagai JSON di [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code). Memerlukan peran [Owner](/docs/id/server-managed-settings#access-control) dalam organisasi Claude Anda. Sesi cloud mengambil pengaturan ini sebelum menginstal plugin.

38* **Kebijakan MDM**: di macOS, berikan plist yang kunci tingkat atas adalah kunci pengaturan. Di Windows, simpan seluruh dokumen JSON sebagai string dalam nilai registri. Domain plist dan kunci registri ada di [Tempat setiap mekanisme menyimpan kebijakan](/docs/id/managed-settings#where-each-mechanism-stores-the-policy).

39* **File pengaturan terkelola**: tempatkan `managed-settings.json` di jalur sistem platform. Anda juga dapat menambahkan file ke direktori drop-in `managed-settings.d/` di sebelahnya. Jalur file per platform ada di [Tempat setiap mekanisme menyimpan kebijakan](/docs/id/managed-settings#where-each-mechanism-stores-the-policy), dan aturan penggabungan drop-in ada di [Pisahkan kebijakan berbasis file di seluruh tim](/docs/id/managed-settings#split-a-file-based-policy-across-teams).

40 

41Gunakan pengaturan terkelola server jika Anda memiliki organisasi Claude for Teams atau Enterprise di claude.ai dan perangkat Anda tidak semuanya di bawah MDM. Jika tidak, gunakan kebijakan MDM atau file pengaturan terkelola. Untuk pertukaran, lihat [Pilih antara pengaturan terkelola server dan endpoint](/docs/id/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings).

42 

43<h4 id="which-managed-source-applies-on-a-machine">

44 Sumber terkelola mana yang berlaku di mesin

45</h4>

46 

47Secara default, hanya satu dari tiga sumber ini yang berlaku di mesin. Claude Code menggunakan yang pertama yang mengirimkan kunci kebijakan, memeriksa pengaturan terkelola server terlebih dahulu, kemudian kebijakan MDM, kemudian file pengaturan terkelola. Jika pengaturan terkelola server mengirimkan bahkan satu kunci kebijakan yang tidak terkait, Claude Code mengabaikan kunci plugin dalam kebijakan MDM atau file pengaturan terkelola di mesin itu, terlepas dari [kunci yang dibacanya dari setiap sumber](/docs/id/managed-settings#keys-read-from-every-admin-source).

48 

49Untuk menerapkan setiap sumber sebagai gantinya, tetapkan [`managedSourcesBehavior`](/docs/id/managed-settings#compose-every-managed-source) ke `"merge"`.

50 

51[Bagaimana Claude Code menggabungkan sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) juga mencantumkan kunci yang Claude Code baca dari setiap sumber dalam kedua mode.

52 

53<h3 id="require-a-marketplace-and-its-plugins">

54 Memerlukan marketplace dan pluginnya

55</h3>

56 

57Tambahkan marketplace di bawah `extraKnownMarketplaces`, dikunci dengan `name` marketplace sendiri dari `marketplace.json`-nya. Kemudian tambahkan setiap plugin di bawah `enabledPlugins` sebagai `plugin-name@marketplace-name`. Setiap entri marketplace membawa objek `source` dengan bidang `source` yang menamai tipe, seperti `github`. Contoh pengaturan terkelola ini mendaftarkan marketplace organisasi dan force-enable dua plugin darinya:

58 

59```json theme={null}

60{

61 "extraKnownMarketplaces": {

62 "your-marketplace": {

63 "source": { "source": "github", "repo": "your-org/your-marketplace" },

64 "autoUpdate": true

65 }

66 },

67 "enabledPlugins": {

68 "code-formatter@your-marketplace": true,

69 "deploy-helper@your-marketplace": true

70 }

71}

72```

73 

74Setelah pengaturan mencapai mesin, Claude Code mendaftarkan marketplace dan menginstal dua plugin di awal sesi pengguna berikutnya. Pengguna melihatnya di `/plugin`, dan menonaktifkan satu di cakupan mereka sendiri tidak menghentikannya dari memuat, karena pengaturan terkelola mengambil alih setiap cakupan lain.

75 

76Untuk memblokir plugin di setiap cakupan dan menyembunyikannya dari daftar marketplace, tetapkan ke `false` dalam `enabledPlugins` terkelola sebagai gantinya.

77 

78Sesuaikan bidang `autoUpdate` dan `source` untuk marketplace Anda:

79 

80* **`autoUpdate`**: `true` membuat marketplace dan pluginnya menyegarkan di latar belakang, dan `false` mematikannya. Lihat [Tetapkan kebijakan pembaruan](#set-update-policy).

81* **`source`**: `github` adalah salah satu dari beberapa jenis sumber. Sumber `git` mengambil `url` untuk GitLab atau host internal, dan sumber `url` mengambil alamat `marketplace.json` yang dihosting. Setiap bentuk sumber ada di [referensi marketplace](/docs/id/plugins/marketplace-reference).

82 

83Jika marketplace adalah repositori git pribadi, setiap pengguna memerlukan akses baca ke dalamnya. Klon marketplace berbasis git berjalan dengan git di mesin pengguna, menggunakan kredensial yang disimpan dan tanpa prompt. Untuk pengguna tanpa akun host git, gunakan [seed](#seed-containers-and-ci) sebagai gantinya.

84 

85Entri terkelola juga mengganti entri marketplace dengan nama yang sama atau salinan `--plugin-dir` dari sumber lain:

86 

87* **Marketplaces**: entri marketplace terkelola mengganti entri dengan prioritas lebih rendah dengan nama yang sama, dan bidang dua entri tidak digabungkan.

88* **Salinan `--plugin-dir`**: `--plugin-dir` memuat plugin dari direktori lokal untuk satu sesi. Untuk apa yang terjadi ketika nama salinan itu cocok dengan plugin yang dinamai `enabledPlugins` terkelola Anda, lihat [Konflik nama](/docs/id/plugins/loading#name-conflicts).

89 

90Marketplace resmi Anthropic `claude-plugins-official` tidak memerlukan entri `extraKnownMarketplaces` ketika `enabledPlugins` menetapkan salah satu pluginnya ke `true`. Entri `name@claude-plugins-official` itu mendeklarasikan marketplace oleh dirinya sendiri, di mana pun kunci ini berlaku. Jika Anda tidak mengaktifkan salah satu pluginnya dan masih menginginkannya didaftarkan di setiap mesin, berikan entri eksplisit, seperti yang dilakukan [Izinkan marketplace resmi dan milik Anda sendiri](#allow-the-official-marketplace-and-your-own).

91 

92<h3 id="require-plugins-per-repository">

93 Memerlukan plugin per repositori

94</h3>

95 

96Untuk mencakup kontributor satu repositori alih-alih seluruh armada Anda, tetapkan `extraKnownMarketplaces` dan `enabledPlugins` dalam `.claude/settings.json` repositori itu. Entri `extraKnownMarketplaces` hanya berlaku dalam folder yang telah dipercaya kontributor, dan dalam folder yang tidak dipercaya Claude Code mengabaikannya tanpa pesan:

97 

98* **Sesi interaktif**: Claude Code mendaftarkan marketplace hanya setelah kontributor menerima [dialog kepercayaan workspace](/docs/id/permissions#what-runs-before-you-trust-a-folder) untuk folder itu.

99* **[Lari `-p` non-interaktif](/docs/id/headless)**: entri hanya berlaku dalam folder yang kepercayaannya sudah diterima pengguna secara interaktif, atau yang bendera `hasTrustDialogAccepted` Anda tetapkan dalam `~/.claude.json`.

100 

101Plugin yang marketplace cantumkan dengan jalur relatif dimuat dari salinan marketplace setelah entri `extraKnownMarketplaces` repositori berlaku. Plugin yang entri marketplace-nya menunjuk ke sumber eksternal sebagai gantinya, seperti repositori GitHub plugin sendiri, tidak diinstal dari pengaturan repositori saja. Setiap kontributor melihat `Plugin "<name>" is enabled in project settings but isn't installed` sampai mereka menjalankan `claude plugin install <name>@<marketplace> --scope project`, seperti yang dijelaskan [Install plugins](/docs/id/plugins/install).

102 

103Jika 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.

104 

105Untuk meluncurkan bundel plugin dengan dependensi, letakkan plugin bundel dalam `enabledPlugins`, seperti yang dijelaskan [Plugin dependencies](/docs/id/plugins/dependencies).

106 

107<h3 id="when-each-surface-applies-the-plugin-keys">

108 Ketika setiap permukaan menerapkan kunci plugin

109</h3>

110 

111Tabel menunjukkan kapan setiap jenis sesi Claude Code menerapkan `extraKnownMarketplaces` dan `enabledPlugins`, dari pengaturan terkelola dan dari `.claude/settings.json` repositori. Untuk Desktop app dan ekstensi IDE, lihat [Install a plugin](/docs/id/plugins/install#install-a-plugin).

112 

113| Permukaan | Managed `extraKnownMarketplaces` dan `enabledPlugins` | Repository `.claude/settings.json` |

114| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |

115| Terminal, interaktif | Diterapkan pada awal sesi di setiap mesin yang menerima pengaturan | `extraKnownMarketplaces` diterapkan setelah kepercayaan; `enabledPlugins` diterapkan pada awal sesi |

116| `-p` dan CI | Diterapkan pada awal sesi, dengan instalasi berjalan di latar belakang | `extraKnownMarketplaces` hanya dalam folder terpercaya; `enabledPlugins` diterapkan |

117| Sesi cloud | Dalam lingkungan yang dihosting Anthropic, hanya pengaturan terkelola server yang mencapai sesi, yang menunggu mereka sebelum menginstal plugin. Kebijakan MDM dan file pengaturan terkelola tetap di mesin pengguna. Untuk lingkungan yang dihosting sendiri, lihat [Tempat dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) | Lihat tab **Cloud session** di bawah [Install a plugin](/docs/id/plugins/install#install-a-plugin) |

118 

119Dalam lari `-p` atau CI, marketplace dan plugin diinstal di latar belakang, jadi plugin dapat hilang dari putaran pertama. Tetapkan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1` untuk membuat lari menunggu instalasi sebelum kueri pertamanya.

120 

121<h3 id="confirm-the-rollout">

122 Konfirmasi peluncuran

123</h3>

124 

125Periksa bahwa marketplace dan plugin tiba di mesin atau dalam lari CI:

126 

127* **Di satu mesin**: mulai Claude Code dan jalankan `/plugin`. Marketplace dan plugin terdaftar.

128* **Dalam CI**: jalankan `claude -p` dengan `--output-format stream-json --verbose`. Acara `init` mencantumkan plugin yang dimuat di bawah `plugins`.

129 

130<h2 id="seed-containers-and-ci">

131 Seed containers dan CI

132</h2>

133 

134Untuk image container dan CI runner yang tidak dapat mengklon saat runtime, pra-isi direktori plugin pada waktu build dan arahkan `CLAUDE_CODE_PLUGIN_SEED_DIR` ke dalamnya. Claude Code mendaftarkan marketplace seed pada startup dan memuat cache plugin dari seed di tempat, tanpa mengklon.

135 

136Seed juga melayani pengguna yang tidak memiliki akun host git.

137 

138<Note>

139 Dalam lingkungan CI/CD, konfigurasikan pembantu kredensial git sebelum menginstal plugin dari repositori pribadi. Di GitHub Actions, ekspor token dengan akses baca ke repositori marketplace sebagai `GH_TOKEN`, kemudian jalankan `gh auth setup-git`. Token alur kerja default hanya dapat mengakses repositori alur kerja itu sendiri, jadi marketplace pribadi di repositori lain memerlukan token akses pribadi atau token aplikasi.

140</Note>

141 

142<Steps>

143 <Step title="Instal ke seed pada waktu build">

144 Tetapkan `CLAUDE_CODE_PLUGIN_CACHE_DIR` ke jalur seed sehingga marketplace dan plugin diinstal di sana alih-alih `~/.claude/plugins`:

145 

146 ```bash theme={null}

147 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/your-marketplace

148 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install code-formatter@your-marketplace

149 ```

150 

151 Seed memiliki tata letak yang sama dengan `~/.claude/plugins`: `known_marketplaces.json`, `marketplaces/<name>/`, dan `cache/<marketplace>/<plugin>/<version>/`. Anda dapat memasang seed di jalur berbeda dari tempat Anda membangunnya.

152 </Step>

153 

154 <Step title="Arahkan runtime ke seed">

155 Tetapkan `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` dalam lingkungan container. Untuk menggunakan beberapa seed, pisahkan jalurnya dengan `:` di Unix atau `;` di Windows. Claude Code menggunakan seed pertama yang berisi marketplace atau cache plugin yang diberikan.

156 </Step>

157 

158 <Step title="Aktifkan plugin">

159 Plugin dalam seed tidak diaktifkan dengan sendirinya. Tetapkan `enabledPlugins` untuk setiap plugin seed yang ingin Anda muat, dalam pengaturan terkelola atau dalam `.claude/settings.json` repositori.

160 </Step>

161</Steps>

162 

163Untuk memverifikasi seed, jalankan `claude -p` dengan `--output-format stream-json --verbose` dalam image. Dalam daftar `plugins` acara `init`, jalur setiap plugin yang dimuat ada di bawah seed, seperti `/opt/claude-seed/cache/your-marketplace/code-formatter/1.0.0`.

164 

165Marketplace seed mengikuti aturan ini:

166 

167* **Baca-saja**: Claude Code tidak pernah menulis ke seed dan memaksa `autoUpdate` mati untuk marketplace seed.

168* **Entri seed mengambil prioritas**: pada setiap startup, marketplace yang dideklarasikan dalam seed menimpa entri pengguna dengan nama yang sama. Pengguna keluar dari plugin seed dengan `claude plugin disable`, bukan dengan menghapus marketplace.

169* **Pembaruan dan penghapusan gagal**: `claude plugin marketplace update <name>` dan `remove` tanpa `--scope` pada marketplace seed gagal dengan pesan yang menamai direktori seed.

170* **Kebijakan masih berlaku**: [allowlist dan blocklist](#restrict-what-users-can-install) memeriksa sumber marketplace seed yang tercatat juga. Izinkan sumber yang Anda bangun seed darinya.

171 

172Untuk armada tanpa akses git keluar, gabungkan seed dengan sumber marketplace `directory` atau `file` pada mount bersama. Tetapkan `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` juga, yang juga mematikan [plugin auto-update](/docs/id/plugins/loading#when-auto-update-runs). Jika proxy tersedia, lihat [Proxy configuration](/docs/id/network-config#proxy-configuration) untuk variabel yang harus ditetapkan.

173 

174<h2 id="restrict-what-users-can-install">

175 Batasi apa yang dapat diinstal pengguna

176</h2>

177 

178Allowlist `strictKnownMarketplaces` terkelola dan blocklist `blockedMarketplaces` memutuskan sumber marketplace mana yang dapat diambil plugin. Sumber marketplace adalah repositori git, URL, atau jalur lokal yang Claude Code ambil darinya. Kedua daftar cocok dengan sumber marketplace yang diambil plugin, bukan entri plugin sendiri di dalam marketplace itu.

179 

180Untuk lockdown umum, yang memungkinkan marketplace resmi dan milik Anda sendiri, lihat [Izinkan marketplace resmi dan milik Anda sendiri](#allow-the-official-marketplace-and-your-own). Pasangkan dengan [`disableSideloadFlags`](#control-matrix) sehingga pengguna tidak dapat memuat plugin dari direktori lokal atau URL.

181 

182Kedua daftar berlaku sebelum apa pun diunduh dan lagi pada awal sesi:

183 

184* **Sebelum unduhan**: daftar berlaku ketika pengguna menambahkan marketplace dan pada setiap instalasi, pembaruan, penyegaran, dan auto-update.

185* **Pada awal sesi**: daftar berlaku lagi ke plugin yang sudah diinstal, jadi plugin yang diinstal yang sumber marketplace-nya tidak lagi cocok tidak dimuat. `/plugin` mencantumkannya dengan `Marketplace "<name>" is not in the allowed marketplace list` atau `Marketplace "<name>" is blocked by enterprise policy`.

186 

187Tempat dua daftar ditegakkan tergantung di mana Anda menetapkannya:

188 

189* **Konsol admin claude.ai**: Claude Code menerapkan kedua daftar dalam sesi yang [membaca pengaturan terkelola server](/docs/id/managed-settings#where-and-when-a-policy-applies). claude.ai juga memeriksanya ketika siapa pun dalam organisasi Anda menambahkan marketplace baru dari repositori git di claude.ai, atau dari **Customize** di Claude Desktop app di luar tab Code-nya. Itu mencakup marketplace yang ditambahkan anggota untuk akun mereka sendiri dan yang ditambahkan untuk seluruh organisasi di bawah [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai menolak repositori yang allowlist tidak terima atau yang blocklist namai. Ini tidak memeriksa ulang marketplace yang ditambahkan di tempat mana pun sebelum Anda menetapkan daftar, dan tidak memeriksa plugin yang diunggah.

190* **File pengaturan terkelola, kebijakan tingkat OS, atau sumber terkelola lainnya**: Claude Code menerapkan kedua daftar di mana ia membaca sumber itu. claude.ai tidak membacanya.

191 

192Sementara allowlist apa pun ditetapkan, atau blocklist menamai sumber apa pun selain [`skills-dir`](#blocklist-with-blockedmarketplaces), plugin yang marketplace Claude Code tidak dapat temukan tidak dimuat. `/plugin` menunjukkan kesalahan kebijakan untuk itu daripada kesalahan tidak ditemukan. Kasus umum adalah entri `enabledPlugins` basi untuk marketplace yang tidak ada yang daftarkan.

193 

194<h3 id="control-matrix">

195 Matriks kontrol

196</h3>

197 

198Tabel mencantumkan setiap kunci kebijakan plugin, apa yang ditegakkannya, dan apa yang tidak dapat dilakukannya.

199 

200| Kunci | Apa yang ditegakkannya | Apa yang tidak dapat dilakukannya |

201| :----------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

202| `strictKnownMarketplaces` | Allowlist sumber marketplace. `[]` memblokir setiap sumber, termasuk marketplace resmi. Alias: `allowedMarketplaces` | Tidak mendaftarkan marketplace, membatasi entri dalam marketplace yang diizinkan, atau memblokir `--plugin-dir` |

203| `blockedMarketplaces` | Blocklist sumber marketplace, diperiksa sebelum allowlist | Tidak memblokir marketplace yang sudah didaftarkan dari sumber yang tidak cocok |

204| `syncClaudeAiPlugins` | Tetapkan `false` untuk menghentikan Claude Code mengunduh dan memuat plugin [disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins) untuk akun setiap pengguna. Memerlukan Claude Code v2.1.273 atau lebih baru | Tidak mematikan satu plugin yang disinkronkan. Untuk itu, tetapkan `"<name>@synced": false` dalam [`enabledPlugins`](/docs/id/settings-reference#enabledplugins) |

205| `enabledPlugins` | `true` force-enable, `false` memblokir di setiap cakupan dan menyembunyikan plugin | Tidak menginstal plugin yang marketplace-nya tidak didaftarkan atau diizinkan |

206| `disableSideloadFlags` | Menolak `--plugin-dir`, `--plugin-url`, `--agents`, opsi `plugins` Agent SDK, dan `--mcp-config` non-SDK pada startup, dan menolak folder yang dinamai dalam variabel [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables) dengan cara yang sama | Tidak membatasi `.mcp.json`, `claude mcp add`, atau server yang disediakan SDK. Pasangkan dengan [`allowedMcpServers`](/docs/id/managed-mcp) |

207| `disableCommandPluginSources` | Memblokir plugin dengan sumber `command` dari instalasi, pembaruan, atau pemuatan. Sumber `command` adalah sumber yang direktori plugin-nya dihasilkan dengan menjalankan perintah di mesin. Ketika tidak ditetapkan, mengambil nilai `allowManagedHooksOnly` | Tidak mempengaruhi jenis sumber lainnya |

208| `allowManagedHooksOnly` | Membatasi hook mana yang berjalan. Lihat [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) | Tidak mempercayai hook dari plugin yang diaktifkan pengguna sendiri |

209| `strictPluginOnlyCustomization` | Memblokir skills, agents, hooks, dan server MCP yang tidak berasal dari plugin, pengaturan terkelola, atau built-in Claude Code. Tetapkan `true` untuk mencakup semua empat jenis, atau array nilai `skills`, `agents`, `hooks`, dan `mcp` seperti `["skills", "hooks"]` untuk mencakup beberapa | Tidak membatasi plugin mana yang diinstal pengguna. Pasangkan dengan `strictKnownMarketplaces` |

210| `pluginSuggestionMarketplaces` | Marketplace yang pluginnya dapat muncul sebagai saran instalasi. Lihat [Recommend plugins](#recommend-plugins) | Tidak mempengaruhi tips built-in |

211| `pluginTrustMessage` | Menambahkan teks Anda ke peringatan kepercayaan yang ditunjukkan `/plugin` sebelum plugin diinstal | Tidak mengubah teks peringatan itu sendiri |

212| `allowedChannelPlugins` | Mengganti daftar default plugin yang diizinkan untuk mendorong pesan channel. Memerlukan `channelsEnabled: true` | Lihat [Restrict which channel plugins can run](/docs/id/channels#restrict-which-channel-plugins-can-run) |

213| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/id/env-vars) | Menghentikan sesi terminal interaktif dari auto-registering marketplace resmi | Tidak menghapus marketplace yang sudah didaftarkan. Allowlist dan blocklist gerbang auto-registering yang sama tanpanya. Mesin yang dimulai sekali dengan itu ditetapkan tidak melanjutkan auto-registering setelah Anda membatalkannya |

214 

215Setiap kunci dalam tabel adalah pengaturan terkelola, terlepas dari `enabledPlugins`, `syncClaudeAiPlugins`, dan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`:

216 

217* **`enabledPlugins`**: Anda dapat menetapkannya dalam cakupan apa pun, dan pengaturan terkelola menguncinya.

218* **`syncClaudeAiPlugins`**: setiap pengguna juga dapat menetapkannya dalam pengaturan pengguna atau lokal mereka sendiri. Lihat [cakupannya dalam referensi pengaturan](/docs/id/settings-reference#syncclaudeaiplugins).

219* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: ini adalah variabel lingkungan yang Anda berikan melalui blok `env` terkelola yang ditunjukkan di bawah [Matikan pembaruan untuk seluruh armada](#turn-updates-off-for-the-whole-fleet).

220 

221Setiap kunci pengaturan di sini memiliki entri dalam [referensi pengaturan](/docs/id/settings-reference).

222 

223<h4 id="aliases-for-the-marketplace-keys">

224 Alias untuk kunci marketplace

225</h4>

226 

227`strictKnownMarketplaces` juga dapat dieja `allowedMarketplaces`, dan `extraKnownMarketplaces` juga dapat dieja `additionalMarketplaces`.

228 

229* **Versi**: alias memerlukan Claude Code v2.1.232 atau lebih baru, dan klien yang lebih lama mengabaikannya. Dalam file yang dibaca armada campuran, pertahankan nama kanonik.

230* **Kedua ejaan ditetapkan**: ketika file menetapkan kedua ejaan, nilai kunci kanonik berlaku.

231 

232<h3 id="allowlist-with-strictknownmarketplaces">

233 Allowlist dengan `strictKnownMarketplaces`

234</h3>

235 

236Tetapkan allowlist ke daftar objek sumber ini. Sebagian besar entri cocok persis, entri `hostPattern` dan `pathPattern` cocok sebagai ekspresi reguler, dan wildcard pemilik `github` cocok berdasarkan pemilik:

237 

238* **`github`**: `{ "source": "github", "repo": "your-org/approved-plugins" }`, dengan `ref` dan `path` opsional.

239* **Wildcard pemilik `github`**: `{ "source": "github", "repo": "your-org/*" }` cocok dengan setiap repositori di bawah pemilik itu. `*` harus berdiri untuk seluruh nama repositori. Claude Code mengabaikan entri seperti `*/plugins` dan `your-org/tools-*` sebagai tidak valid, jadi mereka tidak cocok dengan apa pun. Memerlukan Claude Code v2.1.223 atau lebih baru.

240* **`git`**: `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }`, dengan `ref` dan `path` opsional.

241* **`url`**: `{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }`, dengan `headers` opsional.

242* **`file` dan `directory`**: `{ "source": "file", "path": "/opt/marketplace/marketplace.json" }` atau `{ "source": "directory", "path": "/opt/marketplace/plugins" }`, dengan jalur absolut.

243* **`hostPattern`**: `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }`, dicocokkan terhadap host sumber `github`, `git`, dan `url`. Pola cocok di mana saja dalam nama host, jadi jangkarnya dengan `^` dan `$` seperti yang ditunjukkan untuk mencocokkan seluruh host. Sumber `github` selalu dihitung sebagai `github.com`. Gunakan entri `hostPattern` untuk GitHub Enterprise Server atau host GitLab di mana pengembang membuat marketplace mereka sendiri. [Halaman GHES](/docs/id/github-enterprise-server#allowlist-ghes-marketplaces-in-managed-settings) memiliki contoh yang dikerjakan.

244* **`pathPattern`**: `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }`, dicocokkan terhadap `path` sumber `file` dan `directory`. Pola cocok di mana saja dalam jalur, jadi mulai dengan `^` untuk menjepit awalan direktori. `".*"` memungkinkan setiap jalur lokal.

245* **`skills-dir`**: `{ "source": "skills-dir" }` membuat [plugin direktori skills](#keep-skills-directory-plugins-loading) terus memuat saat allowlist ditetapkan, dan tidak cocok dengan marketplace apa pun.

246 

247<h4 id="how-entries-match">

248 Bagaimana entri cocok

249</h4>

250 

251Entri `url` cocok pada nilai `url`-nya; `headers` tidak dibandingkan. Untuk entri `github` dan `git`, `repo` atau `url`, `ref`, dan `path` harus semuanya cocok, atau tidak ada di kedua sisi:

252 

253* Entri tanpa `ref` tidak mencakup sumber dengan `ref: "main"`.

254* Entri untuk `your-org/your-marketplace` tidak mencakup URL `git` yang mengklon repositori yang sama.

255* Garis miring trailing, akhiran `.git`, atau `ssh://` sebagai pengganti `https://` adalah nilai berbeda. Ketika marketplace dapat diklon oleh lebih dari satu URL, lebih suka entri `hostPattern`.

256 

257Entri wildcard pemilik mengikuti aturan persis untuk `ref` dan cocok dengan `path` apa pun di dalam repositori kecuali entri menjepit satu. Pencocokan wildcard peka huruf besar-kecil pada allowlist.

258 

259<h4 id="keep-skills-directory-plugins-loading">

260 Jaga plugin direktori skills tetap memuat

261</h4>

262 

263Plugin direktori skills adalah plugin yang pengguna simpan di bawah `~/.claude/skills/` atau `.claude/skills/` proyek dalam folder yang membawa `.claude-plugin/plugin.json`. Jika Anda menetapkan allowlist apa pun tanpa entri `{ "source": "skills-dir" }`, mereka berhenti memuat. [Skills](/docs/id/skills) biasa, artinya `SKILL.md` tanpa manifest itu, terus memuat.

264 

265<h4 id="marketplaces-hosted-on-claude-ai">

266 Marketplace yang dihosting di claude.ai

267</h4>

268 

269Allowlist dan blocklist cocok dengan [marketplace yang dihosting di claude.ai](/docs/id/plugins/install#add-from-claude-ai) berdasarkan hostnya. Untuk memungkinkan atau memblokir satu, tambahkan entri `hostPattern` yang cocok dengan `claude.ai` ke `strictKnownMarketplaces` atau `blockedMarketplaces`. Pada allowlist, entri seperti itu mengakui marketplace claude.ai organisasi Anda dan marketplace default claude.ai, tetapi bukan marketplace yang dibuat dari unggahan claude.ai anggota sendiri atau yang cakupannya claude.ai tidak nyatakan. Memerlukan Claude Code v2.1.273 atau lebih baru.

270 

271<h4 id="lock-every-source-out">

272 Kunci setiap sumber

273</h4>

274 

275Allowlist kosong, `[]`, mengunci setiap sumber marketplace, termasuk marketplace resmi.

276 

277Lockdown ini tidak mencakup plugin [disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), yang Claude Code unduh dari akun setiap pengguna daripada dari marketplace. Untuk menghentikan yang juga, tetapkan [`syncClaudeAiPlugins`](/docs/id/settings-reference#syncclaudeaiplugins) ke `false` dalam pengaturan terkelola, atau matikan Skills untuk organisasi Anda di claude.ai.

278 

279<h3 id="blocklist-with-blockedmarketplaces">

280 Blocklist dengan `blockedMarketplaces`

281</h3>

282 

283`blockedMarketplaces` mengambil objek sumber yang sama dengan [`strictKnownMarketplaces`](#allowlist-with-strictknownmarketplaces) dan diperiksa terlebih dahulu, jadi sumber pada kedua daftar diblokir. Pencocokan blocklist lebih luas daripada pencocokan allowlist:

284 

285* URL Git dikanonikalisasi, jadi bentuk `git@` dan `https://`, akhiran `.git`, dan garis miring trailing dari satu repositori `github.com` semuanya cocok dengan entri yang sama.

286* Entri `github` juga memblokir URL `git` yang setara, dan sebaliknya.

287* Untuk entri `owner/*`, perbandingan pemilik tidak peka huruf besar-kecil.

288* Entri tanpa `ref` atau `path` memblokir setiap ref dan path dari repositori yang cocok.

289 

290Entri ini memblokir setiap repositori di bawah satu pemilik GitHub:

291 

292```json theme={null}

293{

294 "blockedMarketplaces": [

295 { "source": "github", "repo": "untrusted-org/*" }

296 ]

297}

298```

299 

300Entri `url` dalam `blockedMarketplaces` juga berlaku ketika pengguna menambahkan URL repositori `https://` yang Claude Code [klon daripada ambil](/docs/id/plugins/cli-reference#plugin-marketplace-add), seperti URL repositori `github.com` atau `gitlab.com` biasa. Pengguna tidak dapat menambahkan URL itu jika entri menamakannya. Pencocokan mengabaikan akhiran `.git` dan ref apa pun yang ditambahkan pengguna setelah `#`. Memerlukan Claude Code v2.1.232 atau lebih baru.

301 

302Entri `{ "source": "skills-dir" }` di sini menghentikan [plugin direktori skills](#keep-skills-directory-plugins-loading) dari memuat, dari `~/.claude/skills/` dan `.claude/skills/` proyek.

303 

304Blocklist yang hanya menamai entri itu tidak dihitung sebagai pembatasan aktif, jadi tidak [menghentikan plugin yang marketplace Claude Code tidak dapat temukan](#restrict-what-users-can-install) dari memuat.

305 

306<h3 id="allow-the-official-marketplace-and-your-own">

307 Izinkan marketplace resmi dan milik Anda sendiri

308</h3>

309 

310Sebagian besar organisasi memungkinkan marketplace resmi dan milik mereka sendiri, dan mendaftarkan keduanya sehingga setiap mesin memilikinya. Kebijakan pengaturan terkelola ini memungkinkan kedua marketplace, mendaftarkan keduanya, force-enable dua plugin, dan menolak `--plugin-dir`:

311 

312```json theme={null}

313{

314 "strictKnownMarketplaces": [

315 { "source": "github", "repo": "anthropics/claude-plugins-official" },

316 { "source": "github", "repo": "your-org/*" },

317 { "source": "skills-dir" }

318 ],

319 "extraKnownMarketplaces": {

320 "claude-plugins-official": {

321 "source": { "source": "github", "repo": "anthropics/claude-plugins-official" }

322 },

323 "your-marketplace": {

324 "source": { "source": "github", "repo": "your-org/your-marketplace" }

325 }

326 },

327 "enabledPlugins": {

328 "code-formatter@your-marketplace": true,

329 "deploy-helper@your-marketplace": true

330 },

331 "disableSideloadFlags": true

332}

333```

334 

335Pada mesin dengan kebijakan ini, menambahkan sumber apa pun di luar daftar, misalnya `/plugin marketplace add https://example.com/other-marketplace.git`, gagal dengan pesan yang berisi `is blocked by enterprise policy` diikuti oleh sumber yang diizinkan. `claude --plugin-dir ./x` keluar dengan pesan yang menamai `disableSideloadFlags`.

336 

337Entri `{ "source": "skills-dir" }` membuat [plugin direktori skills](#keep-skills-directory-plugins-loading) terus memuat di bawah allowlist ini. Hapus entri itu dan mereka berhenti memuat.

338 

339Daftarkan kedua marketplace dengan entri `extraKnownMarketplaces` eksplisit, seperti yang dilakukan kebijakan ini, daripada mengandalkan allowlist atau marketplace resmi mendaftarkan dirinya sendiri:

340 

341* **Allowlist tidak mendaftarkan apa pun**: entri `extraKnownMarketplaces` melakukannya, dan itu harus melewati allowlist itu sendiri. Claude Code menolak untuk mendaftarkan marketplace terkelola yang sumber allowlist tidak cocok.

342* **Marketplace resmi mendaftarkan dirinya sendiri hanya dalam sesi terminal interaktif**: bahkan di sana, itu mendaftarkan hanya ketika allowlist mengizinkannya. Lari `-p` atau terminal yang terpasang ke sesi cloud tidak pernah mendaftarkannya.

343* **Upaya yang diblokir diingat**: jika mesin pernah berjalan di bawah kebijakan yang memblokir marketplace resmi, Claude Code mencatat upaya yang diblokir dan tidak mencoba ulang setelah kebijakan berubah. Lockdown `[]` adalah satu kebijakan seperti itu. Mesin itu mendaftarkannya lagi hanya melalui entri `extraKnownMarketplaces` seperti yang ada dalam kebijakan ini, entri `enabledPlugins` untuk salah satu pluginnya, atau `/plugin marketplace add` manual.

344 

345<h2 id="set-update-policy">

346 Tetapkan kebijakan pembaruan

347</h2>

348 

349Anda dapat menetapkan kebijakan pembaruan per marketplace, untuk seluruh armada, atau per grup pengguna melalui saluran rilis.

350 

351<h3 id="turn-auto-update-on-or-off-per-marketplace">

352 Aktifkan atau matikan auto-update per marketplace

353</h3>

354 

355Plugin auto-update berjalan di latar belakang setelah startup untuk marketplace yang memilikinya diaktifkan. Untuk marketplace mana yang memilikinya aktif secara default, lihat [Kapan auto-update berjalan](/docs/id/plugins/loading#when-auto-update-runs). Untuk memutuskan untuk armada, tetapkan `"autoUpdate": true` atau `false` pada entri `extraKnownMarketplaces` terkelola:

356 

357* Jika entri terkelola menetapkan bidang, Claude Code menolak toggle `/plugin` pengguna dengan kesalahan yang dimulai `Auto-update for '<name>' is set by`.

358* Jika entri terkelola membiarkan bidang tidak ditetapkan, toggle pengguna bertahan.

359 

360<h3 id="turn-updates-off-for-the-whole-fleet">

361 Matikan pembaruan untuk seluruh armada

362</h3>

363 

364Untuk mematikan plugin auto-update untuk setiap marketplace, tetapkan `DISABLE_AUTOUPDATER` dalam blok `env` terkelola, seperti yang dilakukan contoh ini. Variabel yang sama juga menghentikan pembaruan Claude Code sendiri:

365 

366```json theme={null}

367{

368 "env": {

369 "DISABLE_AUTOUPDATER": "1"

370 }

371}

372```

373 

374Untuk menghentikan pembaruan Claude Code sendiri tetapi menjaga plugin auto-update, tambahkan `"FORCE_AUTOUPDATE_PLUGINS": "1"` ke blok yang sama. [Variabel lingkungan lainnya yang menghentikan plugin auto-update](/docs/id/plugins/loading#when-auto-update-runs) bekerja dengan cara yang sama.

375 

376`DISABLE_AUTOUPDATER` tidak mencakup plugin dengan [sumber `command`](/docs/id/plugins/marketplace-reference#command-plugin-source). Claude Code menjalankan kembali perintah setiap plugin yang diaktifkan setiap sesi dan menginstal output ketika berubah. Untuk apa yang menghentikan lari itu, lihat [Kapan sumber command menjalankan kembali](/docs/id/plugins/loading#when-a-command-source-re-runs).

377 

378<h3 id="assign-release-channels-to-user-groups">

379 Tetapkan saluran rilis ke grup pengguna

380</h3>

381 

382Untuk menjalankan saluran stabil dan akses awal, host dua marketplace yang menunjuk ke ref berbeda dari plugin yang sama. Kemudian berikan setiap grup pengguna marketplace-nya sendiri melalui pengaturan terkelola endpoint terpisah atau kebijakan gateway. Pengaturan terkelola server dari konsol admin [berlaku untuk setiap pengguna dalam organisasi Anda](/docs/id/server-managed-settings#current-limitations), jadi mereka tidak dapat menetapkan pengaturan berbeda untuk grup berbeda.

383 

384* Terapkan [pengaturan terkelola endpoint](/docs/id/managed-settings#delivery-mechanisms) terpisah, seperti file pengaturan terkelola atau profil MDM, ke perangkat setiap grup. Untuk memeriksa apakah file per-grup atau profil berlaku pada perangkat yang juga memiliki sumber organisasi-lebar, lihat [Bagaimana Claude Code menggabungkan sumber terkelola](/docs/id/managed-settings#precedence-within-the-managed-tier).

385* Tentukan satu [kebijakan gateway aplikasi Claude](/docs/id/claude-apps-gateway-config#managed) per grup. Gateway menerapkan kebijakan pertama yang aturan kecocokannya sesuai dengan pengguna, jadi urutkan kebijakan sehingga setiap pengguna mencapai kebijakan grup mereka. Peta `extraKnownMarketplaces` kebijakan itu tidak digabungkan dengan peta kebijakan lain, jadi cantumkan setiap marketplace yang dibutuhkan grup di dalamnya, bukan hanya marketplace saluran-nya.

386 

387Dengan mekanisme apa pun, grup stabil menerima konfigurasi ini:

388 

389```json theme={null}

390{

391 "extraKnownMarketplaces": {

392 "stable-tools": {

393 "source": { "source": "github", "repo": "your-org/stable-tools" }

394 }

395 }

396}

397```

398 

399Grup akses awal menerima `latest-tools` sebagai gantinya. Untuk menyiapkan dua marketplace, lihat [Jalankan saluran rilis](/docs/id/plugins/host-marketplace#run-release-channels).

400 

401<h2 id="recommend-plugins">

402 Rekomendasikan plugin

403</h2>

404 

405Pemilik marketplace dapat melampirkan sinyal `relevance` ke entri sehingga Claude Code menyarankan plugin ketika proyek cocok.

406 

407Saran dari marketplace hanya muncul ketika itu didaftarkan di mesin pengguna, Anda mencantumkan namanya dalam `pluginSuggestionMarketplaces` dalam pengaturan terkelola, dan Anda mendeklarasikan sumbernya dalam kebijakan yang sama. Deklarasikan sumber baik sebagai entri `extraKnownMarketplaces` marketplace atau sebagai entri allowlist. Marketplace resmi hanya memerlukan nama. Lihat [Aktifkan saran dalam pengaturan terkelola](/docs/id/plugins/relevance#enable-suggestions-in-managed-settings).

408 

409<h2 id="audit-and-review">

410 Audit dan tinjau

411</h2>

412 

413Acara OpenTelemetry dan Analytics API memberi tahu Anda apa yang diinstal dan dijalankan armada Anda.

414 

415Untuk apa yang dapat dijalankan plugin di mesin dan apa yang diizinkan setiap tingkat kepercayaan, baca [Plugin security](/docs/id/plugins/security) sebelum Anda menyetujui marketplace.

416 

417<h3 id="opentelemetry-events">

418 Acara OpenTelemetry

419</h3>

420 

421`claude_code.plugin_installed` mencatat setiap instalasi, dan `claude_code.plugin_loaded` mencatat setiap plugin yang diaktifkan pada awal sesi. Kedua acara menyunting atau menghilangkan nama plugin dan marketplace pihak ketiga kecuali Anda menetapkan `OTEL_LOG_TOOL_DETAILS=1`, seperti yang ditunjukkan [Nama plugin yang disunting dalam backend Anda](/docs/id/plugins/measure#redacted-plugin-names-in-your-backend). Daftar bidang ada di bawah [Plugin installed event](/docs/id/monitoring-usage#plugin-installed-event) dan [Plugin loaded event](/docs/id/monitoring-usage#plugin-loaded-event).

422 

423<h3 id="analytics-api">

424 Analytics API

425</h3>

426 

427Pada paket Enterprise, `GET /v1/organizations/analytics/plugins` mengembalikan instalasi per-plugin, per-hari dan jumlah invokasi di seluruh Claude Code dan Cowork. Anda dapat mengelompokkan jumlah berdasarkan pengguna atau grup RBAC. Aktivitas plugin yang mencapai Anthropic tanpa nama plugin muncul dalam satu baris `third-party` agregat. Lihat [referensi endpoint](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) dan [Akses data secara terprogram](/docs/id/analytics#access-data-programmatically) untuk kunci yang diperlukannya.

428 

429<h2 id="plan-for-what-managed-settings-can’t-enforce">

430 Rencanakan apa yang tidak dapat ditegakkan pengaturan terkelola

431</h2>

432 

433Permintaan ini dari tinjauan keamanan tidak memiliki kunci khusus dalam skema pengaturan saat ini. Kontrol yang ada terdekat adalah:

434 

435* **Penargetan per-pengguna atau per-grup**: setiap kunci plugin berlaku untuk setiap pengguna yang menerima pengaturan. Pengaturan terkelola server mengirimkan satu konfigurasi per organisasi. Untuk kebijakan per-grup, gunakan pengaturan terkelola endpoint terpisah atau kebijakan gateway, seperti di bawah [Tetapkan saluran rilis ke grup pengguna](#assign-release-channels-to-user-groups).

436* **Membatasi entri dalam marketplace yang diizinkan**: allowlist cocok dengan sumber marketplace. Untuk memblokir satu plugin dari marketplace yang diizinkan, tetapkan ke `false` dalam `enabledPlugins` terkelola.

437* **Menyembunyikan `/plugin`**: tidak ada kunci yang menonaktifkan perintah. Setara terdekat menggabungkan allowlist yang hanya menamai marketplace Anda, entri `enabledPlugins` terkelola untuk plugin yang Anda sediakan, dan `disableSideloadFlags`.

438* **Gating `--plugin-dir` melalui allowlist**: allowlist tidak mencakup `--plugin-dir`. `disableSideloadFlags` melakukannya.

439* **Menerapkan toggle plugin claude.ai melalui kunci ini**: [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) tidak menetapkan kunci di halaman ini. Apa yang diaktifkan anggota dan organisasi Anda di sana mencapai CLI sebagai [synced plugins](/docs/id/plugins/loading#synced-plugins), yang memiliki kontrol mereka sendiri.

440 

441<h2 id="troubleshoot-policy">

442 Troubleshoot kebijakan

443</h2>

444 

445Jika kebijakan plugin tidak berperilaku seperti yang diharapkan di mesin, periksa gejala ini terlebih dahulu:

446 

447* **File terkelola tidak diurai**: ketika `managed-settings.json` bukan JSON yang valid, Claude Code menolak untuk memulai dan mencetak [kesalahan yang menamai file](/docs/id/errors#managed-settings-document-could-not-be-parsed). File yang diurai tetapi memiliki satu entri tidak valid menyimpan sisa kebijakan-nya. Lihat [Entri tidak valid dalam pengaturan terkelola](/docs/id/managed-settings#invalid-entries-in-managed-settings).

448* **Sumber terkelola tidak dimuat**: jalankan `/status` dan cari `Enterprise managed settings` dalam baris `Setting sources`. Jika hilang, sumber tidak dimuat.

449* **Pengguna melaporkan `blocked by enterprise policy`**: pesan menamai marketplace atau sumbernya. Untuk allowlist, itu juga mencantumkan sumber yang diizinkan. Entri yang menghadap pengguna ada di [Troubleshoot plugins](/docs/id/plugins/troubleshooting).

450* **Plugin yang dinonaktifkan pengguna dalam `~/.claude/settings.json` masih dimuat**: sumber pengaturan lain mengaktifkannya kembali, seperti entri `enabledPlugins` terkelola yang force-enable-nya. `/plugin` dan `claude plugin list` menunjukkan `Disabled in ~/.claude/settings.json but still loads` dengan sumber pengaturan itu.

451 

452<h2 id="next-steps">

453 Langkah berikutnya

454</h2>

455 

456* [Referensi marketplace](/docs/id/plugins/marketplace-reference#marketplace-sources): nilai `source` yang `extraKnownMarketplaces`, `strictKnownMarketplaces`, dan `blockedMarketplaces` terima

457* [Host dan pertahankan marketplace](/docs/id/plugins/host-marketplace): jalankan marketplace yang kebijakan Anda arahkan

458* [Plugin security dan trust](/docs/id/plugins/security): apa yang dapat dilakukan plugin di mesin dan cara meninjau satu sebelum menginstal

459* [Pengaturan terkelola server](/docs/id/server-managed-settings): berikan kunci ini dari konsol admin claude.ai

460* [Troubleshoot plugins](/docs/id/plugins/troubleshooting#blocked-by-your-organization): pesan yang dilihat pengguna ketika kebijakan memblokir mereka

plugins/overview.md +142 −0 created

Details

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# Ikhtisar plugin

6 

7> Pahami apa itu plugin Claude Code, kapan Anda membutuhkannya daripada skill mandiri atau server MCP, dan halaman mana yang harus dibaca untuk memasang atau membuat satu.

8 

9Plugin Claude Code adalah direktori skill, agent, hooks, server MCP, atau komponen lainnya yang Claude Code pasang dan muat sebagai satu unit. Sebagian besar plugin berasal dari marketplace, yang merupakan katalog yang mencantumkan plugin dan tempat mengambil masing-masing. Anda juga dapat memuat plugin dari folder yang diberikan seseorang kepada Anda, atau [membangun plugin Anda sendiri](/docs/id/plugins/create).

10 

11<Note>

12 Jika Anda menggunakan chat claude.ai atau Cowork dan bukan Claude Code, lihat [Plugin di claude.ai dan di Cowork](https://claude.com/docs/plugins/overview).

13</Note>

14 

15Untuk mencoba plugin sekarang, jalankan `/plugin` dalam sesi terminal Claude Code dan pasang satu dari tab **Discover**, yang mencantumkan plugin dari marketplace resmi Anthropic dan marketplace apa pun yang telah Anda tambahkan. Dari sana:

16 

17* [Pasang dan kelola plugin](/docs/id/plugins/install): langkah pemasangan lengkap, cakupan, dan permukaan lainnya

18* [Buat plugin](/docs/id/plugins/create): bangun plugin Anda sendiri

19* [Tentukan apakah Anda membutuhkan plugin](#decide-whether-you-need-a-plugin): apakah plugin adalah alat yang tepat untuk apa yang Anda inginkan

20 

21<h2 id="understand-what-a-plugin-is">

22 Pahami apa itu plugin

23</h2>

24 

25Plugin adalah direktori komponen, biasanya dengan manifes. Manifes, file JSON di `.claude-plugin/plugin.json`, memberikan nama plugin dan dapat menambahkan versi, deskripsi, dan [metadata](/docs/id/plugins/manifest-reference) lainnya. Komponen adalah apa yang ditambahkan plugin ke Claude Code, seperti:

26 

27* [**Skills**](/docs/id/plugins/components#skills): instruksi `SKILL.md` yang Claude muat saat relevan, dan yang juga dapat Anda jalankan sebagai perintah

28* [**Agents**](/docs/id/plugins/components#agents): definisi subagent yang dapat didelegasikan Claude

29* [**Hooks**](/docs/id/plugins/components#hooks): perintah yang dijalankan Claude Code pada titik dalam siklus hidupnya, seperti setelah setiap edit

30* [**MCP servers**](/docs/id/plugins/components#mcp-servers): server alat yang terhubung dengan Claude Code saat plugin diaktifkan

31 

32Diagram ini menunjukkan plugin bernama `my-plugin` yang menyimpan satu dari masing-masing komponen tersebut, dan apa yang Anda dapatkan dari setiap file setelah plugin dimuat.

33 

34<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f623b64e82713b830e48174f0a922888" className="dark:hidden" alt="Diagram dalam dua kolom yang digabungkan oleh lima panah lurus. Di sebelah kiri, direktori plugin bernama my-plugin, menyimpan manifes di .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, dan komponen lainnya. Di sebelah kanan, apa yang diberikan setiap file dalam sesi Anda: manifes menetapkan nama plugin, my-plugin; skill berjalan sebagai /my-plugin:review; file agent adalah subagent yang dapat didelegasikan Claude; file hooks menyimpan hook yang berjalan pada acara siklus hidup; dan .mcp.json menambahkan server MCP yang memberikan alat Claude." width="760" height="336" data-path="images/plugin-directory.svg" />

35 

36<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=17ee2bd45b63154fcc148ae1d1f736d8" className="hidden dark:block" alt="Diagram dalam dua kolom yang digabungkan oleh lima panah lurus. Di sebelah kiri, direktori plugin bernama my-plugin, menyimpan manifes di .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, dan komponen lainnya. Di sebelah kanan, apa yang diberikan setiap file dalam sesi Anda: manifes menetapkan nama plugin, my-plugin; skill berjalan sebagai /my-plugin:review; file agent adalah subagent yang dapat didelegasikan Claude; file hooks menyimpan hook yang berjalan pada acara siklus hidup; dan .mcp.json menambahkan server MCP yang memberikan alat Claude." width="760" height="336" data-path="images/plugin-directory-dark.svg" />

37 

38Untuk setiap jenis komponen yang dapat disimpan plugin, dengan contoh masing-masing, lihat [Plugin components](/docs/id/plugins/components). Untuk melihat di mana setiap bagian berada dalam direktori plugin, gunakan [plugin explorer](/docs/id/plugins/components#explore-the-plugin-directory) di halaman itu.

39 

40<h3 id="decide-whether-you-need-a-plugin">

41 Tentukan apakah Anda membutuhkan plugin

42</h3>

43 

44Skills, subagent, hooks, dan server MCP semuanya bekerja sendiri, tanpa plugin. Skill yang Anda simpan di `~/.claude/skills/`, misalnya, tersedia di setiap proyek di mesin Anda. Untuk menyiapkan satu sendiri, lihat [Skills](/docs/id/skills), [Subagents](/docs/id/sub-agents), [Hooks](/docs/id/hooks-guide), atau [MCP](/docs/id/mcp).

45 

46Gunakan plugin ketika Anda ingin beberapa skill, subagent, hooks, atau server MCP dikemas sebagai satu unit. Pasang satu untuk mendapatkan setup yang dibangun orang lain, dengan satu perintah dan pembaruan dari marketplace-nya. Buat satu untuk memberikan setup Anda sendiri kepada rekan kerja, pasang di banyak proyek, atau terbitkan rilis yang diberi versi.

47 

48<h3 id="what-an-enabled-plugin-adds-to-your-sessions">

49 Apa yang ditambahkan plugin yang diaktifkan ke sesi Anda

50</h3>

51 

52Plugin yang diaktifkan adalah bagian dari setiap sesi, bukan hanya sesi tempat Anda menggunakannya. Itu memiliki beberapa konsekuensi yang patut diketahui sebelum Anda memasang satu:

53 

54* **Konteks dan penggunaan**: untuk setiap skill, agent, dan perintah yang [dapat dijalankan Claude sendiri](/docs/id/skills#control-who-invokes-a-skill), nama dan deskripsi ada dalam konteks Claude di setiap giliran sehingga Claude tahu itu ada. Token tersebut dihitung menuju penggunaan Anda dan meninggalkan lebih sedikit ruang di [jendela konteks](/docs/id/context-window) bahkan dalam sesi di mana tidak ada yang dari plugin berjalan. Teks lengkap skill atau agent dimuat hanya saat digunakan. Apa yang ditambahkan server MCP plugin per giliran mengikuti [pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search).

55* **Proses**: server MCP yang didefinisikan plugin berjalan bersama setiap sesi tempat plugin diaktifkan, dan hook-nya menyala pada acara mereka.

56* **Izin**: apa yang dijalankan plugin, dijalankan sebagai Anda. Lihat [Plugin security and trust](/docs/id/plugins/security) untuk apa yang harus ditinjau terlebih dahulu.

57 

58Anda dapat memeriksa jejak plugin di setiap tahap:

59 

60* **Sebelum Anda memasang**: buka plugin dari tab **Marketplaces** di `/plugin`. Plugin di marketplace resmi Anthropic menunjukkan perkiraan **Context cost** di sana.

61* **Setelah Anda memasang**: [Measure what a plugin costs](/docs/id/plugins/measure#measure-what-a-plugin-costs) menunjukkan cara membaca jejak plugin, dan grup **Not used recently** tab **Installed** mencantumkan plugin yang dapat Anda matikan.

62* **Untuk menghentikannya tanpa mencopot**: nonaktifkan plugin dengan `/plugin` atau, di shell Anda, `claude plugin disable`. Lihat [Manage installed plugins](/docs/id/plugins/install#manage-installed-plugins).

63 

64<h2 id="get-plugins-from-a-marketplace">

65 Dapatkan plugin dari marketplace

66</h2>

67 

68Marketplace adalah repositori atau direktori dengan file `.claude-plugin/marketplace.json` yang mencantumkan plugin dan tempat mengambil masing-masing. Ini adalah katalog, bukan toko yang dihosting. Anda menambahkan marketplace sekali, kemudian memasang plugin darinya berdasarkan nama, seperti `commit-commands@claude-plugins-official`.

69 

70<Note>

71 Marketplace plugin bukanlah [Claude Marketplace](https://claude.com/marketplace). Claude Marketplace adalah situs web di claude.com/marketplace tempat Anda menjelajahi plugin, konektor, produk mitra, dan mitra layanan. Ini bukan marketplace yang Anda tambahkan dengan `/plugin marketplace add`.

72</Note>

73 

74Claude Code menambahkan marketplace resmi Anthropic pertama kali Anda memulai sesi terminal interaktif, kecuali [kebijakan terkelola](/docs/id/plugins/org#allow-the-official-marketplace-and-your-own) memblokir. Claude Code tidak menambahkan marketplace lain sendiri, termasuk marketplace komunitas dan demo Anthropic. Untuk membedakan tiga marketplace Anthropic, baca [Anthropic's marketplaces](/docs/id/plugins/anthropic-marketplaces). Untuk melihat apa yang dicantumkan marketplace resmi, buka tab **Discover** dari `/plugin` dalam sesi atau jelajahi [Claude Marketplace](https://claude.com/marketplace/plugins).

75 

76Diagram ini menunjukkan jalur dari marketplace ke sesi Anda. Marketplace mencantumkan plugin, Anda memasang plugin itu, dan Claude Code memuat komponen-komponennya.

77 

78<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=4196344954b7c2e27fc0bd6a9a1113a1" className="dark:hidden" alt="Diagram jalur marketplace dalam tiga kotak, kiri ke kanan. Marketplace, katalog plugin, mencantumkan plugin. Plugin adalah satu direktori yang dipasang sebagai unit, menyimpan skill, agent, hooks, server MCP, dan komponen lainnya. Anda memasang plugin ke Claude Code, yang memuat komponen-komponennya." width="760" height="252" data-path="images/plugins-model.svg" />

79 

80<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f6cdefe1fc05daf3b253d26e9f3f70f6" className="hidden dark:block" alt="Diagram jalur marketplace dalam tiga kotak, kiri ke kanan. Marketplace, katalog plugin, mencantumkan plugin. Plugin adalah satu direktori yang dipasang sebagai unit, menyimpan skill, agent, hooks, server MCP, dan komponen lainnya. Anda memasang plugin ke Claude Code, yang memuat komponen-komponennya." width="760" height="252" data-path="images/plugins-model-dark.svg" />

81 

82[Install and manage plugins](/docs/id/plugins/install#install-a-plugin) memiliki langkah pemasangan untuk setiap tempat Anda menjalankan Claude Code. Saat Anda mengembangkan plugin, Anda tidak memerlukan marketplace: muat langsung dari foldernya dengan `--plugin-dir`, seperti yang ditunjukkan [Develop without a marketplace](/docs/id/plugins/create#develop-without-a-marketplace).

83 

84<h3 id="make-an-installed-plugin-available-in-your-session">

85 Buat plugin yang dipasang tersedia dalam sesi Anda

86</h3>

87 

88Sebelum plugin yang Anda pasang memberikan Anda skill yang dapat Anda jalankan, plugin harus ada di setiap lapisan ini:

89 

90* **Settings**: pengaturan Anda mencantumkan marketplace yang telah Anda tambahkan dan plugin yang diaktifkan.

91* **Disk**: `~/.claude/plugins/` menyimpan apa yang telah diambil dan dipasang Claude Code.

92* **Session**: plugin dimuat saat startup, atau ketika Anda [reload plugins](/docs/id/plugins/loading#check-which-stage-a-plugin-reached).

93 

94Baca [Plugin loading reference](/docs/id/plugins/loading) untuk aturan di setiap lapisan, termasuk file pengaturan mana yang memiliki prioritas dan di mana file berada di disk.

95 

96<h2 id="tell-anthropic’s-marketplaces-from-third-party-ones">

97 Bedakan marketplace Anthropic dari yang pihak ketiga

98</h2>

99 

100Nama marketplace menempatkannya di salah satu dari tiga tingkat. Claude Code menerima nama resmi dan komunitas hanya untuk marketplace yang bersumber dari repositori `github.com/anthropics/`:

101 

102* **Official**: marketplace dengan salah satu [nama marketplace resmi](/docs/id/plugins/security#official-marketplace-names) Anthropic, termasuk `claude-plugins-official` dan marketplace demo `claude-code-plugins`.

103* **Community**: marketplace dengan salah satu nama komunitas Anthropic, seperti `claude-community`. [Identify Anthropic's marketplaces by name](/docs/id/plugins/security#marketplace-tiers) mencantumkan mereka.

104* **Third-party**: setiap marketplace lainnya. Marketplace yang diterbitkan rekan kerja atau organisasi Anda adalah pihak ketiga.

105 

106Apa pun tingkatnya, plugin yang Anda pasang dapat menjalankan kode dengan hak istimewa pengguna Anda. Baca [Plugin security and trust](/docs/id/plugins/security) untuk cara meninjau plugin sebelum Anda memasangnya.

107 

108Melalui [pengaturan terkelola](/docs/id/settings#settings-files), organisasi dapat membuat daftar putih atau memblokir marketplace, memaksa pemasangan plugin, dan mematikan pemuatan hanya-sesi. Baca [Manage plugins for your organization](/docs/id/plugins/org) untuk kontrol tersebut.

109 

110<h2 id="understand-install-scopes">

111 Pahami cakupan pemasangan

112</h2>

113 

114Ketika Anda memasang plugin, Anda memilih cakupan, dan cakupan menentukan siapa plugin diaktifkan untuk:

115 

116* **User scope**: diaktifkan untuk Anda di setiap proyek di komputer ini

117* **Project scope**: diaktifkan untuk semua orang yang bekerja di repositori ini, melalui `.claude/settings.json` yang berkomitmen. Setiap kolaborator masih [memasangnya di mesin mereka sendiri](/docs/id/plugins/loading#enabled-in-project-settings-but-not-installed)

118* **Local scope**: diaktifkan untuk Anda di repositori ini saja

119 

120Plugin yang Anda pasang di cakupan pengguna di terminal, sesi lokal aplikasi desktop, atau ekstensi VS Code tersedia di dua lainnya di komputer itu, karena ketiganya membaca file pengaturan yang sama. Lihat [Choose an install scope](/docs/id/plugins/install#choose-an-install-scope) untuk cara memilih satu.

121 

122Sesi cloud, termasuk satu di browser di claude.ai/code, tidak memuat plugin dalam pengaturan lokal Anda. Untuk langkah pemasangan di terminal, VS Code, dan aplikasi desktop, dan untuk apa yang dimuat sesi cloud, lihat [Install a plugin](/docs/id/plugins/install#install-a-plugin).

123 

124<Note>

125 Format plugin yang sama juga dipasang di claude.ai dan di Cowork, di mana set komponen yang berbeda dimuat. Untuk permukaan tersebut, lihat [Plugins on claude.ai and in Cowork](https://claude.com/docs/plugins/overview) di claude.com.

126</Note>

127 

128<h2 id="next-steps">

129 Langkah berikutnya

130</h2>

131 

132Sebagian besar orang mulai dengan memasang plugin dari marketplace resmi Anthropic, yang ditambahkan Claude Code pertama kali Anda memulai sesi terminal interaktif. Jalankan `/plugin` dalam sesi terminal untuk menjelajahinya, atau ikuti [Install and manage plugins](/docs/id/plugins/install), yang juga mencakup aplikasi desktop dan VS Code. Untuk melihat apa yang ada di marketplace itu sebelum Anda membuka Claude Code, jelajahi [Claude Marketplace](https://claude.com/marketplace/plugins) di web.

133 

134Untuk membangun plugin Anda sendiri, [Create a plugin](/docs/id/plugins/create) dimulai dengan direktori kosong dan berakhir dengan plugin yang berfungsi.

135 

136Setelah Anda memasang atau membangun plugin, halaman-halaman ini mencakup apa yang akan datang:

137 

138* **Bagikan apa yang Anda bangun**: [Publish and distribute a plugin](/docs/id/plugins/publish)

139* **Periksa apakah itu berfungsi dan digunakan**: [Test plugins with evals](/docs/id/plugin-evals) dan [Measure plugin cost and usage](/docs/id/plugins/measure)

140* **Jalankan marketplace untuk tim Anda**: [Create a marketplace](/docs/id/plugins/create-marketplace), kemudian [Host and maintain a marketplace](/docs/id/plugins/host-marketplace)

141* **Tetapkan kebijakan plugin untuk organisasi**: [Manage plugins for your organization](/docs/id/plugins/org)

142* **Perbaiki masalah**: [Troubleshoot plugins](/docs/id/plugins/troubleshooting)

plugins/publish.md +210 −0 created

Details

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# Publikasikan dan distribusikan plugin

6 

7> Publikasikan plugin Claude Code melalui marketplace Anda sendiri atau marketplace komunitas Anthropic, dengan daftar periksa pra-rilis dan cara pengguna mendapatkan pembaruan.

8 

9Mempublikasikan plugin Claude Code berarti mencantumkannya di marketplace, katalog JSON yang mencantumkan plugin dan tempat mengambil masing-masing plugin, sehingga orang lain dapat memasangnya berdasarkan nama dan menerima pembaruan Anda. Anda dapat menjalankan marketplace Anda sendiri atau mengirimkan plugin Anda ke marketplace komunitas Anthropic. Untuk berbagi plugin tanpa mempublikasikannya, kirimkan direktori plugin atau `.zip` darinya kepada orang-orang untuk dimuat sendiri.

10 

11Halaman ini adalah untuk penulis plugin yang berfungsi dan siap untuk membagikannya.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Plugin Anda belum selesai**: mulai dengan [Buat plugin](/docs/id/plugins/create)

17 * **Anda memelihara CLI atau SDK dengan plugin di marketplace resmi**: lihat [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugins/cli-hints)

18</Note>

19 

20Mulai dengan [Pilih cara mendistribusikan](#choose-how-to-distribute) untuk membandingkan opsi distribusi. Jika Anda sudah tahu rute Anda, buka [Siapkan plugin Anda untuk rilis](#prepare-your-plugin-for-release), kemudian ikuti bagian rute Anda untuk apa yang harus diberitahukan kepada pengguna Anda dan bagaimana mereka menerima pembaruan Anda.

21 

22<h2 id="choose-how-to-distribute">

23 Pilih cara mendistribusikan

24</h2>

25 

26Pilih opsi distribusi berdasarkan siapa yang perlu memasang plugin:

27 

28| Rute | Siapa yang dapat memasang | Apa yang Anda butuhkan | Apakah pengguna mendapatkan pembaruan Anda secara otomatis? |

29| :---------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |

30| [Tanpa marketplace](#share-a-plugin-without-a-marketplace) | Orang-orang yang Anda kirimkan folder plugin atau `.zip` darinya | Folder plugin | Tidak ada. Mereka memuat salinan yang Anda kirimkan |

31| [Marketplace Anda sendiri](#publish-through-your-own-marketplace) | Siapa pun yang dapat menjangkau repositori, yang dapat berupa repositori pribadi yang dapat dikloning tim Anda | Repositori git atau host lain dengan `.claude-plugin/marketplace.json` yang mencantumkan plugin Anda | Mati |

32| [Marketplace komunitas Anthropic](#submit-to-the-community-marketplace) | Siapa pun yang menambahkan `anthropics/claude-plugins-community` | Pengajuan melalui formulir pengajuan direktori plugin | Mati |

33 

34Auto-update adalah pengaturan per-marketplace di sisi pengguna yang mengambil versi baru di latar belakang.

35 

36<h2 id="prepare-your-plugin-for-release">

37 Siapkan plugin Anda untuk rilis

38</h2>

39 

40Nama, versi, validasi, dan pemasangan dari marketplace menentukan apakah rilis berfungsi untuk orang-orang yang memasangnya. Periksa sebelum rilis pertama dan lagi sebelum setiap rilis berikutnya.

41 

42<Steps>

43 <Step title="Pilih nama permanen">

44 Pengguna memasang, mengaktifkan, dan mengonfigurasi plugin Anda dengan `name@marketplace`, jadi plugin yang diganti nama adalah plugin yang berbeda untuk setiap pemasangan yang ada. Pilih nama kebab-case seperti `deploy-helper`, karena `claude plugin validate` memperingatkan bentuk lain, dan perlakukan sebagai permanen. Atur `displayName` di `plugin.json` untuk label yang dilihat pengguna.

45 </Step>

46 

47 <Step title="Tentukan cara Anda akan membuat versi">

48 Jika Anda menetapkan `version` di `plugin.json` dan kemudian mendorong commit tanpa mengubahnya, `claude plugin update` mencetak `<name> is already at the latest version (1.0.0).` dan pengguna menyimpan salinan lama. Baik tingkatkan `version` pada setiap rilis, atau hilangkan di marketplace yang dihosting git sehingga Claude Code menggunakan SHA commit sebagai gantinya. Lihat [Versi dan pembaruan](/docs/id/plugins/loading#versions-and-updates).

49 </Step>

50 

51 <Step title="Validasi">

52 Di shell Anda, jalankan `claude plugin validate --strict ./your-plugin`. Jalankan bersih mencetak `✔ Validation passed`.

53 

54 * **Di CI**: pertahankan `--strict`, yang juga gagal jalankan dengan kode keluar 1 pada peringatan seperti bidang manifes yang tidak dikenal atau `version` yang hilang. Lepaskan `--strict` jika Anda memilih untuk menghilangkan `version` di langkah sebelumnya.

55 * **Jalur**: validasi melaporkan jalur komponen yang tidak dimulai dengan `./`. Di dalam perintah hook dan konfigurasi server MCP, rujuk file sebagai `${CLAUDE_PLUGIN_ROOT}/...`. Lihat [aturan jalur](/docs/id/plugins/manifest-reference#path-rules).

56 </Step>

57 

58 <Step title="Pasang dari marketplace lokal">

59 Di shell Anda, tambahkan marketplace lokal yang mencantumkan plugin dengan `claude plugin marketplace add ./path-to-marketplace`, pasang plugin darinya, dan mulai sesi untuk mengonfirmasi bahwa plugin dimuat.

60 

61 * Untuk marketplace terkecil yang berfungsi, lihat [Buat marketplace](/docs/id/plugins/create-marketplace).

62 * Untuk mengetahui apakah pemasangan memuat direktori sumber Anda atau salinan cache, lihat [Plugin in-place dan disalin](/docs/id/plugins/loading#in-place-and-copied-plugins).

63 </Step>

64 

65 <Step title="Isi metadata yang dilihat pengguna">

66 Atur `description`, `author`, `homepage`, dan `repository` di `plugin.json`, dan tambahkan `README.md` di root plugin. `homepage` harus diurai sebagai URL. [Referensi manifes](/docs/id/plugins/manifest-reference#fields) mencantumkan setiap bidang.

67 </Step>

68 

69 <Step title="Jalankan suite eval Anda">

70 Jika Anda memiliki suite eval, jalankan `claude plugin eval` di shell Anda. Ini menjalankan kasus uji plugin dan mencetak hasil, yang menangkap regresi saat Anda mengubah plugin. Lihat [Plugin uji dengan eval](/docs/id/plugin-evals).

71 </Step>

72</Steps>

73 

74<h2 id="share-a-plugin-without-a-marketplace">

75 Bagikan plugin tanpa marketplace

76</h2>

77 

78Jika plugin berada di repositori git, orang dapat mengklonnya dan memuat checkout, atau memulai Claude Code dari shell mereka dengan `--plugin-url` yang menunjuk ke `.zip` yang Anda lampirkan ke rilis. Untuk mendapatkan versi berikutnya mereka menarik atau mengunduh lagi. Jika tidak ada di repositori, kirimkan direktori atau `.zip` darinya. Mereka memuat dengan salah satu dari dua cara:

79 

80* **Untuk satu sesi**: mereka memulai Claude Code dari shell mereka dengan `claude --plugin-dir ./deploy-helper`, di mana jalurnya adalah klon, folder yang tidak dizip, atau `.zip` itu sendiri. Lihat [Bendera yang memuat plugin untuk satu sesi](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

81* **Untuk setiap sesi**: mereka memindahkan direktori plugin, dengan `.claude-plugin/plugin.json` miliknya, di bawah `~/.claude/skills/` sehingga Claude Code [memuat dalam setiap sesi](/docs/id/plugins/loading#find-where-a-plugin-came-from).

82 

83Menambahkan `.claude-plugin/marketplace.json` ke repositori yang sama adalah apa yang memungkinkan orang memasang berdasarkan nama dan memperbarui dengan perintah; lihat [Publikasikan melalui marketplace Anda sendiri](#publish-through-your-own-marketplace).

84 

85<h3 id="ship-a-plugin-with-your-own-tool">

86 Kirim plugin dengan alat Anda sendiri

87</h3>

88 

89Jika Anda memelihara CLI atau SDK, publikasikan plugin di marketplace dan buat installer atau pesan pasca-instalasi Anda menjalankan atau mencetak dua perintah yang dibutuhkan pengguna: `claude plugin marketplace add <source>`, kemudian `claude plugin install <name>@<marketplace>`. Untuk penemuan dalam sesi ketika seseorang menggunakan alat Anda, lihat [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugins/cli-hints).

90 

91<h2 id="publish-through-your-own-marketplace">

92 Publikasikan melalui marketplace Anda sendiri

93</h2>

94 

95Marketplace Anda sendiri adalah file `.claude-plugin/marketplace.json` yang mencantumkan plugin Anda, ditambahkan ke repositori git. Setelah file berada di repositori, plugin dipublikasikan, tanpa formulir pengajuan. Anda dapat menyimpan file di repositori plugin Anda sendiri atau di repositori terpisah.

96 

97<h3 id="add-the-marketplace-file-to-your-repository">

98 Tambahkan file marketplace ke repositori Anda

99</h3>

100 

101Untuk mempublikasikan dari repositori plugin Anda sendiri, simpan file marketplace di samping `plugin.json` di `.claude-plugin/`, dengan satu entri yang `source` adalah `"./"`, root repositori. Berikan entri `name` yang sama dengan `plugin.json`, per [Jaga nama entri dan nama manifes tetap sama](/docs/id/plugins/create-marketplace#keep-the-entry-name-and-the-manifest-name-the-same):

102 

103```json .claude-plugin/marketplace.json theme={null}

104{

105 "name": "your-marketplace",

106 "owner": { "name": "Your Name" },

107 "plugins": [

108 { "name": "deploy-helper", "source": "./" }

109 ]

110}

111```

112 

113Di shell Anda, jalankan `claude plugin validate .` di repositori untuk memeriksa file sebelum Anda mendorong.

114 

115[Buat marketplace](/docs/id/plugins/create-marketplace) mencakup tata letak dengan beberapa plugin di satu repositori.

116 

117<h3 id="control-who-can-install">

118 Kontrol siapa yang dapat memasang

119</h3>

120 

121Siapa pun yang dapat mengkloning repositori dapat memasang darinya, jadi jika repositori pribadi, marketplace juga pribadi. Untuk host selain repositori git, lihat [Host marketplace](/docs/id/plugins/host-marketplace). Untuk menjangkau semua orang di perusahaan, termasuk orang yang tidak menggunakan git, lihat [Luncurkan ke seluruh perusahaan](/docs/id/plugins/host-marketplace#roll-out-to-a-whole-company).

122 

123<h3 id="tell-users-how-to-install">

124 Beritahu pengguna cara memasang

125</h3>

126 

127Beritahu pengguna Anda untuk menambahkan marketplace dan kemudian memasang plugin dari shell mereka, mengganti sumber dan nama dengan milik Anda:

128 

129* Tambahkan marketplace sekali: `claude plugin marketplace add your-org/your-marketplace`, di mana argumennya adalah shorthand GitHub `owner/repo`, URL, atau jalur

130* Pasang plugin: `claude plugin install deploy-helper@your-marketplace`

131* Atau lakukan keduanya dari dalam sesi: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru. Lihat [Tambahkan marketplace dan pasang dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command)

132 

133<h3 id="ship-updates-to-users">

134 Kirim pembaruan kepada pengguna

135</h3>

136 

137Pengguna menerima rilis ketika mereka memintanya atau ketika auto-update aktif untuk marketplace Anda:

138 

139* **Atas permintaan**: `claude plugin update deploy-helper@your-marketplace` di shell pengguna menyegarkan marketplace dan memasang salinan baru ketika versi plugin Anda telah berubah

140* **Auto-update**: mati secara default untuk marketplace Anda. Lihat [Aktifkan auto-update](/docs/id/plugins/host-marketplace#turn-on-auto-update). Setelah aktif, ini melakukan hal yang sama dengan `claude plugin update` dengan penundaan setelah sesi dimulai

141 

142[Pasang plugin](/docs/id/plugins/install) mencakup perintah sisi pengguna, dan [kapan auto-update berjalan](/docs/id/plugins/loading#when-auto-update-runs) mencakup waktu.

143 

144<h2 id="submit-to-the-community-marketplace">

145 Kirimkan ke marketplace komunitas

146</h2>

147 

148Marketplace komunitas Anthropic, `claude-community`, adalah marketplace publik yang mencantumkan plugin yang dikirimkan melalui formulir pengajuan direktori plugin.

149 

150Pengguna menambahkan marketplace komunitas dalam sesi Claude Code dengan `/plugin marketplace add anthropics/claude-plugins-community` dan memasang darinya sebagai `@claude-community`.

151 

152Untuk cara marketplace komunitas berbeda dari marketplace resmi, lihat [Marketplace Anthropic](/docs/id/plugins/anthropic-marketplaces).

153 

154Untuk mengirimkan plugin Anda ke marketplace komunitas, gunakan salah satu formulir dalam aplikasi:

155 

156* **claude.ai**: [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

157* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

158 

159Formulir claude.ai memerlukan organisasi Team atau Enterprise dan izin Directory, yang dipegang Owner secara default. Penulis individual yang bukan bagian dari organisasi Team atau Enterprise dapat menggunakan formulir Console sebagai gantinya.

160 

161Di shell Anda, jalankan `claude plugin validate ./your-plugin` secara lokal sebelum Anda mengirimkan, mengganti `./your-plugin` dengan jalur ke direktori plugin Anda. 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.

162 

163Plugin yang tercantum muncul di katalog [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), dalam hampir setiap kasus disematkan ke SHA commit tertentu.

164 

165Mungkin ada penundaan antara pengajuan 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).

166 

167Marketplace resmi, `claude-plugins-official`, tidak menerima pengajuan melalui formulir ini. Jika Anda bekerja dengan kontak mitra Anthropic, tanyakan tentang daftar marketplace resmi.

168 

169<h2 id="ship-updates-renames-and-removals">

170 Kirim pembaruan, penggantian nama, dan penghapusan

171</h2>

172 

173<h3 id="release-a-new-version">

174 Rilis versi baru

175</h3>

176 

177Jika Anda mempublikasikan melalui marketplace Anda sendiri dan `plugin.json` Anda menetapkan `version`, tingkatkan dan dorong. Pengguna yang menjalankan `claude plugin update` atau memiliki auto-update aktif kemudian menerima versi baru, seperti dijelaskan di bawah [Kirim pembaruan kepada pengguna](#ship-updates-to-users).

178 

179<h3 id="tag-a-release">

180 Tag rilis

181</h3>

182 

183Tag rilis di git ketika plugin lain mendeklarasikan rentang versi pada milik Anda, karena rentang tersebut diselesaikan terhadap tag. Jika tidak, Anda tidak memerlukan tag.

184 

185Untuk tag, jalankan `claude plugin tag` di shell Anda dari direktori plugin. Ini membuat tag `{name}--v{version}`. Tambahkan `--push` untuk mengirim tag ke `origin`. [Referensi `plugin tag`](/docs/id/plugins/cli-reference#plugin-tag) mencantumkan bendera-bendera miliknya.

186 

187<h3 id="rename-or-remove-a-plugin">

188 Ganti nama atau hapus plugin

189</h3>

190 

191Jangan pernah ubah `name` plugin yang dipublikasikan. Setelah penggantian nama, pengguna yang sudah memasangnya kehilangan plugin, karena pemasangan mereka dicatat di bawah nama lama. Entri `renames` di file marketplace Anda memigrasikan mereka sebagai gantinya. Ubah `displayName` ketika Anda menginginkan label yang berbeda.

192 

193Jika penggantian nama tidak dapat dihindari, gunakan peta `renames` file marketplace sehingga pemasangan yang ada bermigrasi alih-alih gagal dengan [`Plugin "<name>" not found in marketplace`](/docs/id/plugins/troubleshooting#plugin-not-found-in-marketplace). Untuk menghapus plugin dari marketplace, atau untuk detail `renames` lengkap, lihat [Ganti nama atau hapus plugin](/docs/id/plugins/host-marketplace#rename-or-remove-a-plugin) di halaman hosting. [Referensi marketplace](/docs/id/plugins/marketplace-reference#top-level-fields) memiliki bidang.

194 

195<h2 id="declare-dependencies">

196 Deklarasikan dependensi

197</h2>

198 

199Jika plugin Anda memerlukan plugin lain dari marketplace yang sama untuk diaktifkan, cantumkan di array `dependencies` dari `plugin.json`. Setiap entri adalah nama telanjang atau objek dengan rentang `version` semver. Ketika pengguna memasang plugin Anda, Claude Code memasang dan mengaktifkan dependensi juga.

200 

201[Dependensi plugin](/docs/id/plugins/dependencies) mencakup sintaks rentang, dependensi lintas-marketplace, dan cara pengguna memangkas dependensi yang tidak lagi mereka butuhkan.

202 

203<h2 id="next-steps">

204 Langkah berikutnya

205</h2>

206 

207* [Host dan pertahankan marketplace](/docs/id/plugins/host-marketplace): rilis versi baru dan jaga pengguna tetap terkini

208* [Dependensi plugin](/docs/id/plugins/dependencies): deklarasikan dan buat versi plugin yang Anda andalkan

209* [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugins/cli-hints): minta pengguna Claude Code dari CLI Anda untuk memasang plugin

210* [Ukur biaya dan penggunaan plugin](/docs/id/plugins/measure): lihat berapa biaya plugin Anda dalam konteks dan apakah orang menggunakannya

plugins/relevance.md +247 −0 created

Details

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# Rekomendasikan plugins untuk organisasi Anda

6 

7> Tambahkan blok relevansi ke entri plugin marketplace sehingga Claude Code menyarankannya ketika pekerjaan pengguna cocok, dan daftarkan whitelist marketplace dalam pengaturan terkelola.

8 

9Claude Code dapat menyarankan pemasangan plugin dari marketplace organisasi Anda ketika sesi pengguna cocok dengan sinyal yang Anda tentukan untuk plugin tersebut. Sinyal mencakup direktori kerja, file yang telah dibaca Claude, dan perintah yang telah dijalankan Claude. Anda menentukannya dengan menambahkan blok `relevance` ke entri plugin di `marketplace.json`.

10 

11Operator marketplace menulis entri `relevance`. Administrator kemudian mendaftarkan whitelist marketplace dalam pengaturan terkelola. Pengguna tidak melihat saran dari marketplace sampai marketplace tersebut didaftarkan whitelist.

12 

13<Note>

14 Kasus-kasus ini tercakup di halaman lain:

15 

16 * **Anda ingin memasang plugins**: lihat [Pasang dan kelola plugins](/docs/id/plugins/install)

17 * **Anda ingin mematikan saran**: lihat [Pahami cara kerja relevansi plugin](#understand-how-plugin-relevance-works)

18</Note>

19 

20Mulai dengan bagian untuk peran Anda:

21 

22* **Operator marketplace**: baca [cara kerja saran](#understand-how-plugin-relevance-works), kemudian [tambahkan relevansi ke entri plugin](#add-relevance-to-a-plugin-entry) dan [validasi marketplace Anda](#validate-your-marketplace)

23* **Administrator**: [aktifkan saran dalam pengaturan terkelola](#enable-suggestions-in-managed-settings)

24 

25<h2 id="understand-how-plugin-relevance-works">

26 Pahami cara kerja relevansi plugin

27</h2>

28 

29Setiap entri plugin di `marketplace.json` dapat menyertakan objek `relevance`. Objek tersebut menamai topik dan satu atau lebih sinyal. Sinyal adalah pola yang diuji Claude Code terhadap sesi saat ini, seperti direktori kerja atau file yang telah dibaca Claude.

30 

31Pencocokan sinyal terjadi secara lokal di mesin pengguna dan tidak menambah lalu lintas jaringan. Claude Code tidak melaporkan sinyal mana yang cocok atau nilainya kepada Anthropic atau operator marketplace.

32 

33Ketika sinyal cocok dan plugin belum terpasang, Claude Code menyarankan plugin di tempat-tempat ini:

34 

35* **Spinner tip**: pesan dengan perintah `/plugin install` muncul di bawah spinner saat Claude merespons.

36* **Notifikasi awal sesi**: jika sinyal `cwd` cocok dengan direktori kerja, notifikasi satu baris muncul sebelum pengguna mengirim pesan pertama.

37* **Tab Discover `/plugin`**: plugin disematkan ke bagian atas daftar Discover.

38 

39[Pratinjau apa yang dilihat pengguna](#preview-what-the-user-sees) menunjukkan teks pasti dari masing-masing dan seberapa sering mereka berulang.

40 

41Claude Code tidak pernah memasang plugin secara otomatis. Pengguna selalu mengonfirmasi.

42 

43Spinner tip dan notifikasi awal sesi keduanya berhenti muncul ketika pengguna atau proyek menetapkan [`spinnerTipsEnabled`](/docs/id/settings-reference#spinnertipsenabled) ke `false`, atau ketika [`spinnerTipsOverride`](/docs/id/settings-reference#spinnertipsoverride) dengan `excludeDefault` menggantikan tips bawaan. Pin tab Discover tidak terpengaruh oleh pengaturan mana pun.

44 

45<h2 id="add-relevance-to-a-plugin-entry">

46 Tambahkan relevansi ke entri plugin

47</h2>

48 

49Tambahkan objek `relevance` ke entri plugin di `marketplace.json` Anda. Contoh berikut mendeklarasikan bahwa plugin `terraform-helpers` relevan ketika Claude membaca file `.tf` atau menjalankan `terraform`:

50 

51```json theme={null}

52{

53 "name": "your-marketplace",

54 "owner": { "name": "Your Org" },

55 "plugins": [

56 {

57 "name": "terraform-helpers",

58 "source": "./plugins/terraform-helpers",

59 "description": "Your organization's Terraform conventions and helpers",

60 "relevance": {

61 "topic": "Terraform",

62 "signals": {

63 "cli": ["terraform"],

64 "filesRead": ["**/*.tf"]

65 }

66 }

67 }

68 ]

69}

70```

71 

72Selama tidak ada sinyal yang cocok, plugin mempertahankan posisi normalnya di daftar Discover dan tidak muncul sebagai spinner tip.

73 

74Untuk memeriksa blok sebelum menerbitkan, [validasi marketplace Anda](#validate-your-marketplace).

75 

76<h2 id="field-reference">

77 Referensi bidang

78</h2>

79 

80Objek `relevance` dan objek `signals` bersarangnya menerima bidang dalam tabel berikut.

81 

82Klien yang lebih lama masih memuat marketplace yang menggunakan bidang `relevance` yang tidak mereka kenali, karena bidang yang tidak dikenali di bawah `relevance` dan `relevance.signals` diabaikan saat waktu muat. Bidang yang dikenali yang nilainya melebihi batasnya dalam [referensi bidang](#field-reference) membatalkan seluruh entri plugin, dan pengguna tidak dapat memasang plugin tersebut dari marketplace sampai Anda memperbaikinya; `claude plugin validate` melaporkan batas yang sama.

83 

84<h3 id="relevance">

85 `relevance`

86</h3>

87 

88| Bidang | Tipe | Deskripsi |

89| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

90| `topic` | string | Opsional. Frasa yang mengisi "Bekerja dengan *topic*?" dalam spinner tip. Default ke nama plugin dengan setiap segmen tanda hubung dikapitalisasi. Maksimal 64 karakter. |

91| `signals` | object | Pencocokan yang menentukan kapan plugin relevan. Claude Code menyarankan plugin hanya jika setidaknya satu sinyal diatur. Lihat [`relevance.signals`](#relevance-signals). |

92 

93`topic` sering kali adalah nama produk, misalnya `Terraform`. Gunakan domain seperti `design` ketika nama plugin tidak terdengar alami sebagai topik.

94 

95<h3 id="relevance-signals">

96 `relevance.signals`

97</h3>

98 

99Objek `signals` menerima bidang berikut.

100 

101| Bidang | Tipe | Deskripsi | Batas |

102| :------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------- |

103| `cwd` | array of strings | Pola glob yang dicocokkan terhadap direktori kerja sesi. Lihat [pencocokan direktori kerja](#working-directory-matching). | 10 pola dari 256 karakter masing-masing |

104| `cli` | array of strings | Nama perintah dari perintah shell yang telah dijalankan Claude sesi ini, misalnya `["terraform"]`. Pencocokan tepat. Lihat [pencocokan nama perintah](#command-name-matching). | 10 entri dari 64 karakter masing-masing |

105| `hosts` | array of strings | Nama host yang terlihat dalam URL `http://` atau `https://` dalam perintah Bash sesi ini, misalnya `["registry.terraform.io"]`. Hanya nama host huruf kecil telanjang: tidak ada skema, port, atau jalur. Pencocokan tepat tidak peka huruf besar-kecil. | 20 entri dari 128 karakter masing-masing |

106| `filesRead` | array of strings | Pola glob yang dicocokkan terhadap jalur file yang telah dibaca Claude sesi ini, misalnya `["**/*.tf"]`. Garis miring maju dinormalisasi dan tidak peka huruf besar-kecil. | 10 pola dari 256 karakter masing-masing |

107| `manifestDeps` | array of objects | Dependensi yang dideklarasikan dalam manifes paket yang telah dibaca Claude sesi ini. Setiap entri adalah `{ "file": "...", "pattern": "..." }`, di mana kedua nilai adalah ekspresi reguler. Lihat [pencocokan dependensi manifes](#manifest-dependency-matching). | 10 entri, setiap nilai paling banyak 256 karakter. File manifes yang lebih besar dari 512 KB dilewati |

108 

109Sinyal `filesRead` dan `manifestDeps` juga cocok dengan file yang telah ditulis atau diedit Claude sesi ini dan terhadap file memori `CLAUDE.md` yang dimuat otomatis proyek.

110 

111<h4 id="working-directory-matching">

112 Pencocokan direktori kerja

113</h4>

114 

115`cwd` adalah satu-satunya sinyal yang dapat cocok saat awal sesi, sebelum pengguna mengirim pesan pertama.

116 

117Claude Code mencocokkan setiap pola `cwd` sebagai berikut:

118 

119* Pola dicocokkan terhadap direktori kerja sebagai jalur absolut. Ketika sesi berada di dalam repositori git, pola juga dicocokkan terhadap jalur direktori kerja relatif terhadap akar repositori.

120* Pencocokan dinormalisasi garis miring maju dan tidak peka huruf besar-kecil.

121* Setiap pola cocok dengan direktori itu sendiri dan semuanya di bawahnya, jadi `infra`, `infra/`, dan `infra/**` berperilaku identik.

122 

123<h4 id="command-name-matching">

124 Pencocokan nama perintah

125</h4>

126 

127Claude Code mencatat satu nama perintah untuk setiap perintah shell yang dijalankan Claude: token pertama setelah penetapan variabel lingkungan awal apa pun dan `sudo`. Perintah gabungan hanya berkontribusi pada perintah terdepan mereka, jadi `cd infra && terraform plan` mencatat `cd`, bukan `terraform`.

128 

129<h4 id="manifest-dependency-matching">

130 Pencocokan dependensi manifes

131</h4>

132 

133Setiap entri `manifestDeps` memasangkan dua string sumber JavaScript `RegExp`:

134 

135* `file`: dicocokkan tidak peka huruf besar-kecil terhadap jalur file manifes. Jalur biasanya absolut, jadi jangkarkan pola di akhir daripada di awal. Jalur tidak dinormalisasi pemisah untuk sinyal ini, jadi jalur Windows menggunakan garis miring terbalik.

136* `pattern`: dicocokkan peka huruf besar-kecil terhadap isi file tersebut.

137 

138Contoh berikut menggunakan `manifestDeps` untuk menyarankan plugin Anda setelah Claude membaca `package.json` yang bergantung pada paket npm SDK Anda, bernama `your-sdk` di sini.

139 

140```json theme={null}

141{

142 "name": "your-plugin",

143 "source": "./plugins/your-plugin",

144 "relevance": {

145 "signals": {

146 "manifestDeps": [

147 {

148 "file": "[/\\\\]package\\.json$",

149 "pattern": "\"your-sdk\"\\s*:"

150 }

151 ]

152 }

153 }

154}

155```

156 

157Dalam contoh ini, pola `file` menggunakan `[/\\\\]` sehingga cocok dengan pemisah jalur garis miring maju dan garis miring terbalik, dan `\\.` sehingga titik adalah literal. Dalam JSON, setiap garis miring terbalik dalam ekspresi reguler ditulis dua kali.

158 

159<h2 id="validate-your-marketplace">

160 Validasi marketplace Anda

161</h2>

162 

163Di shell Anda, jalankan `claude plugin validate` terhadap direktori marketplace Anda untuk memeriksa blok `relevance` sebelum menerbitkan:

164 

165```bash theme={null}

166claude plugin validate ./my-marketplace

167```

168 

169Validator melaporkan kesalahan dan peringatan pada blok `relevance`, termasuk ini:

170 

171* Melaporkan kunci yang tidak dikenali di bawah `relevance` dan `relevance.signals` sebagai peringatan

172* Menandai nilai `relevance` yang bukan objek

173* Menolak entri `signals.hosts` yang menyertakan skema, port, atau jalur

174 

175Setiap temuan dicetak dengan jalur bidang yang menjadi perhatiannya, dan output berakhir dengan `Validation passed`, `Validation passed with warnings`, atau `Validation failed`.

176 

177<h2 id="enable-suggestions-in-managed-settings">

178 Aktifkan saran dalam pengaturan terkelola

179</h2>

180 

181Pengguna tidak melihat saran dari marketplace sampai administrator mendaftarkan whitelist dalam [pengaturan terkelola](/docs/id/plugins/org), bahkan ketika `marketplace.json` mendeklarasikan `relevance`.

182 

183Untuk mendaftarkan whitelist marketplace, edit pengaturan terkelola Anda sebagai berikut:

184 

185* Tambahkan nama marketplace ke `pluginSuggestionMarketplaces`.

186* Untuk marketplace apa pun selain marketplace resmi Anthropic, juga deklarasikan sumber marketplace, baik sebagai entri nama tersebut di [`extraKnownMarketplaces`](/docs/id/plugins/org#require-a-marketplace-and-its-plugins) atau sebagai entri di [`strictKnownMarketplaces`](/docs/id/plugins/org#allowlist-with-strictknownmarketplaces).

187 

188Pada mesin di mana marketplace tidak terdaftar, atau terdaftar dengan nama yang didaftarkan whitelist dari sumber yang berbeda, tidak ada saran darinya yang muncul. Pemeriksaan sumber menghentikan sumber yang tidak terkait dari mendaftar dengan nama yang didaftarkan whitelist untuk mendapatkan pluginnya disarankan di seluruh organisasi Anda.

189 

190`managed-settings.json` berikut mendaftarkan marketplace organisasi dari repositori GitHub dan mengaktifkan sarannya:

191 

192```json theme={null}

193{

194 "extraKnownMarketplaces": {

195 "your-marketplace": {

196 "source": {

197 "source": "github",

198 "repo": "your-org/your-marketplace"

199 }

200 }

201 },

202 "pluginSuggestionMarketplaces": ["your-marketplace"]

203}

204```

205 

206Nama marketplace resmi hanya dapat mendaftar dari sumber Anthropic resmi, jadi tidak memerlukan deklarasi sumber. Untuk marketplace resmi, daftarkan whitelist nama saja:

207 

208```json theme={null}

209{

210 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

211}

212```

213 

214<h2 id="preview-what-the-user-sees">

215 Pratinjau apa yang dilihat pengguna

216</h2>

217 

218Ketika sinyal `relevance` plugin cocok selama sesi, tip di bawah spinner berbunyi:

219 

220```text theme={null}

221Working with Terraform? Install the terraform-helpers plugin:

222/plugin install terraform-helpers@your-marketplace

223```

224 

225Ketika sinyal `cwd` cocok saat awal sesi, notifikasi satu baris berbunyi:

226 

227```text theme={null}

228plugin suggestion: terraform-helpers@your-marketplace · /plugin

229```

230 

231Di tab Discover `/plugin`, plugin disematkan di atas hasil lainnya dengan anotasi yang menamai sinyal yang cocok, seperti `suggested for this directory` atau `suggested for terraform commands`.

232 

233Claude Code membatasi seberapa sering plugin tertentu disarankan:

234 

235* Saran muncul paling banyak sekali setiap tiga sesi di seluruh spinner tip dan notifikasi awal sesi digabungkan.

236* Notifikasi awal sesi berhenti muncul setelah spinner tip dan notifikasi telah menunjukkan plugin sebanyak dua kali secara gabungan.

237* Baik spinner tip maupun notifikasi awal sesi tidak berulang setelah plugin dipasang.

238* Tab Discover menyematkan plugin pertama kali pengguna membuka tab saat sinyal plugin cocok. Claude Code mencatat itu di `~/.claude.json`, jadi setiap kali pengguna membuka `/plugin` di mesin itu, plugin muncul dalam urutan normal.

239 

240<h2 id="see-also">

241 Lihat juga

242</h2>

243 

244* [Host marketplace](/docs/id/plugins/host-marketplace): jalankan marketplace yang menghost plugins Anda

245* [Referensi marketplace](/docs/id/plugins/marketplace-reference#plugin-entries): setiap bidang yang diterima entri plugin

246* [Rekomendasikan plugin Anda dari CLI Anda](/docs/id/plugins/cli-hints): minta pengguna dari CLI Anda sendiri daripada dari sinyal sesi Claude Code

247* [Kelola plugins untuk organisasi Anda](/docs/id/plugins/org): `extraKnownMarketplaces`, `strictKnownMarketplaces`, dan sisa kunci kebijakan plugin

plugins/security.md +186 −0 created

Details

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# Keamanan dan kepercayaan plugin

6 

7> Tentukan apakah Anda mempercayai plugin sebelum menginstalnya, dari apa yang dapat dilakukan plugin di mesin Anda hingga cara meninjau dan menghapusnya.

8 

9Plugin Claude Code yang Anda instal dapat menjalankan kode arbitrer di mesin Anda dengan hak istimewa pengguna Anda.

10 

11Anda menginstal plugin dari marketplace, yang merupakan katalog yang Claude Code ambil darinya. Beberapa nama marketplace [dicadangkan untuk marketplace Anthropic sendiri](#marketplace-tiers), dan setiap marketplace lainnya adalah pihak ketiga. Nama marketplace memberi tahu Anda siapa yang menerbitkan katalog, bukan apa yang dilakukan setiap plugin di dalamnya, jadi [tinjau plugin sebelum Anda menginstalnya](#review-a-plugin-before-you-install) dari marketplace mana pun asalnya.

12 

13Baca halaman ini jika Anda memutuskan apakah akan menginstal plugin, atau jika Anda meninjau alat sebelum tim Anda dapat menggunakannya.

14 

15<Note>

16 Kasus-kasus ini tercakup di halaman lain:

17 

18 * **Model keamanan Claude Code sendiri**: lihat [Security](/docs/id/security)

19 * **Membatasi atau memerlukan plugin untuk organisasi**: lihat [Manage plugins for your organization](/docs/id/plugins/org)

20 * **Plugin `security-guidance` atau `claude-security`**: halaman ini bukan tentang mereka. Lihat [`security-guidance`](/docs/id/security-guidance) dan [`claude-security`](/docs/id/claude-security)

21</Note>

22 

23Mulai dengan [apa yang dapat dilakukan plugin](#understand-what-a-plugin-can-do) dan [marketplace mana yang merupakan Anthropic](#marketplace-tiers), kemudian [tinjau plugin sebelum Anda menginstalnya](#review-a-plugin-before-you-install).

24 

25<h2 id="understand-what-a-plugin-can-do">

26 Pahami apa yang dapat dilakukan plugin

27</h2>

28 

29Plugin dapat membawa konten yang menjalankan kode di mesin Anda dengan hak istimewa pengguna Anda dan konten yang memasuki konteks Claude sebagai instruksi, jadi [tinjau plugin sebelum Anda menginstalnya](#review-a-plugin-before-you-install). Berikut adalah apa yang dapat dilakukan plugin yang diinstal:

30 

31* **Hooks**: [hooks](/docs/id/hooks) plugin berjalan sebagai perintah shell pada titik-titik dalam siklus hidup Claude Code, seperti sebelum atau sesudah panggilan alat.

32* **Server MCP dan LSP**: Claude Code terhubung ke [server MCP](/docs/id/mcp) yang dideklarasikan plugin yang diaktifkan dan memberikan Claude alat mereka. Server MCP stdio berjalan sebagai proses yang dimulai Claude Code di mesin Anda. Claude Code juga memulai server bahasa yang dideklarasikan plugin.

33* **Direktori `bin/`**: Claude Code menambahkan direktori `bin/` setiap plugin yang diaktifkan ke `PATH` shell alat Bash, sehingga perintah Bash Claude dapat menjalankan executable apa pun di sana.

34* **Skills, commands, dan agents**: ini memasuki konteks Claude sebagai instruksi, sehingga mempengaruhi apa yang dilakukan Claude dengan alat yang sudah dimilikinya.

35* **Updates**: ketika auto-update aktif untuk marketplace tempat Anda menginstal plugin, Claude Code memperbarui plugin itu di latar belakang, sehingga file yang Anda tinjau dapat berubah di disk. [When auto-update runs](/docs/id/plugins/loading#when-auto-update-runs) memiliki waktu. Untuk mengaktifkan atau menonaktifkan auto-update per marketplace, lihat [Keep plugins updated](/docs/id/plugins/install#keep-plugins-updated).

36 

37[Aturan izin](/docs/id/permissions) Claude Code dan [sandbox](/docs/id/sandboxing) mencakup panggilan alat yang dibuat Claude, bukan kode yang dijalankan plugin sendiri:

38 

39* **Hooks dan proses server**: command hooks menjalankan perintah shell dengan izin pengguna penuh Anda. Claude Code menjalankan hooks dan server MCP di luar sandbox.

40* **Panggilan alat Claude**: panggilan ke salah satu alat MCP plugin, dan perintah Bash yang menjalankan executable dari `bin/` plugin, adalah panggilan alat, sehingga aturan izin Anda berlaku untuk mereka.

41 

42Menginstal plugin juga mengaktifkannya, kecuali manifest atau entri marketplace-nya menetapkan [`defaultEnabled: false`](/docs/id/plugins/install#choose-an-install-scope) dan Anda belum mengaktifkannya sendiri.

43 

44Untuk menghapus plugin yang tidak lagi Anda percayai, lihat [Remove a plugin you no longer trust](#remove-a-plugin-you-no-longer-trust).

45 

46<h2 id="marketplace-tiers">

47 Identifikasi marketplace Anthropic berdasarkan nama

48</h2>

49 

50Nama marketplace menempatkannya dalam salah satu dari tiga tingkat: official, community, atau third-party. Claude Code menerima nama official dan community hanya untuk marketplace yang bersumber dari repositori `github.com/anthropics/`, sehingga marketplace pihak ketiga tidak dapat menyajikan dirinya sebagai marketplace Anthropic. Marketplace yang diterbitkan rekan kerja atau organisasi Anda adalah pihak ketiga.

51 

52Tabel mencantumkan nama mana yang termasuk dalam setiap tingkat:

53 

54| Tingkat | Marketplace mana |

55| :---------- | :------------------------------------------------------------------------------------------ |

56| Official | [Nama marketplace official](#official-marketplace-names), seperti `claude-plugins-official` |

57| Community | `claude-community`, `claude-plugins-community`, dan `healthcare` |

58| Third-party | Setiap marketplace lainnya |

59 

60Ketika katalog `claude-community` menyematkan plugin ke SHA commit, yang dilakukannya untuk hampir setiap entri, Claude Code menolak untuk menginstal commit yang berbeda.

61 

62<h3 id="official-marketplace-names">

63 Nama marketplace official

64</h3>

65 

66Nama marketplace ini membentuk tingkat official:

67 

68* `claude-plugins-official`

69* `claude-code-marketplace`

70* `claude-code-plugins`

71* `anthropic-marketplace`

72* `anthropic-plugins`

73* `agent-skills`

74* `anthropic-agent-skills`

75* `life-sciences`

76* `knowledge-work-plugins`

77* `claude-for-legal`

78* `claude-for-financial-services`

79* `financial-services-plugins`

80* `first-party-plugins`

81* `claude-tag-plugins`

82 

83Untuk cara marketplace official, community, dan demo berbeda dan di mana untuk menjelajahi apa yang masing-masing daftarkan, lihat [Anthropic's marketplaces](/docs/id/plugins/anthropic-marketplaces).

84 

85<h2 id="review-a-plugin-before-you-install">

86 Tinjau plugin sebelum Anda menginstal

87</h2>

88 

89Sebelum Anda menginstal plugin, lihat apa yang ditambahkannya dan dari mana asalnya.

90 

91<Steps>

92 <Step title="Periksa sumber marketplace">

93 Di shell Anda, jalankan `claude plugin marketplace list` untuk mencetak sumber setiap marketplace ditambahkan dari, seperti repositori GitHub atau direktori.

94 </Step>

95 

96 <Step title="Baca panel detail">

97 Dalam sesi Claude Code, jalankan `/plugin` dan pilih plugin. Panel detail menunjukkan bagian **Will install** yang mencantumkan commands, agents, skills, hooks, dan server MCP dan LSP plugin. Untuk plugin yang Anthropic tidak memiliki data komponen yang dipublikasikan, bagian menunjukkan apa yang dideklarasikan entri marketplace, atau catatan: `Components will be discovered at installation` untuk plugin yang disimpan di dalam marketplace, atau `Component summary not available for remote plugin` untuk yang diambil dari tempat lain.

98 </Step>

99 

100 <Step title="Baca sumber plugin">

101 Di panel detail, pilih **Open homepage** atau **View on GitHub** di bawah opsi install. Jika panel tidak menawarkan keduanya, buka repositori marketplace yang Anda temukan di langkah pertama. Temukan direktori plugin di sana. Bagian **Will install** menunjukkan bahwa hook ada tetapi bukan apa yang dijalankannya, jadi baca file-file ini di direktori plugin:

102 

103 * **`hooks/hooks.json`**: perintah yang dijalankan setiap hook

104 * **`.mcp.json`**: perintah atau URL setiap server

105 * **`bin/`**: setiap file dalam direktori

106 </Step>

107 

108 <Step title="Daftar apa yang berisi plugin">

109 Clone repositori yang menyimpan direktori plugin, kemudian jalankan `claude --plugin-dir <plugin directory> plugin details <plugin name>` di shell Anda untuk melihat apa yang ditemukan Claude Code di dalamnya. Perintah membaca file plugin tanpa memulai sesi dan mencetak `Component inventory` yang mencantumkan skills dan commands plugin, agents, hooks dengan event setiap hook, dan server MCP dan LSP.

110 </Step>

111</Steps>

112 

113Setelah Anda menginstal plugin, jalankan `claude plugin details <plugin name>` di shell Anda untuk mencetak `Component inventory` yang sama untuk salinan yang diinstal di bawah `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`.

114 

115<h3 id="remove-a-plugin-you-no-longer-trust">

116 Hapus plugin yang tidak lagi Anda percayai

117</h3>

118 

119Di shell Anda, jalankan [`claude plugin uninstall <plugin>`](/docs/id/plugins/cli-reference#plugin-uninstall) dengan `--scope` tempat Anda menginstalnya. Kemudian periksa apa yang dihapus uninstall dan apa yang ditinggalkannya:

120 

121* **Data persisten**: ketika itu adalah scope terakhir plugin diinstal, uninstalling juga menghapus direktori data persisten plugin, kecuali Anda melewatkan `--keep-data`.

122* **File cache**: file plugin tetap di disk di bawah `~/.claude/plugins/cache/` selama 14 hari sebelum [background sweep menghapusnya](/docs/id/plugins/loading#cleanup-of-previous-versions). Setelah Anda menghapus plugin terakhir Anda, direktori yatim piatu tetap sampai Anda menginstal yang lain. Untuk menghapus file sekarang, hapus direktori plugin di bawah `~/.claude/plugins/cache/<marketplace>/<plugin>/` sendiri.

123* **Marketplace**: jika Anda juga tidak mempercayai pemilik marketplace, [hapus marketplace](/docs/id/plugins/install#manage-marketplaces) juga, yang menghapus setiap plugin yang Anda instal darinya.

124 

125<h2 id="recognize-when-claude-code-refuses-or-warns">

126 Kenali ketika Claude Code menolak atau memperingatkan

127</h2>

128 

129Panel detail yang Anda buka dari tab **Discover** atau **Marketplaces** di `/plugin` menunjukkan peringatan kepercayaan yang sama untuk setiap plugin. Claude Code menolak alih-alih memperingatkan dalam kasus-kasus seperti yang ada di bawah [Untrusted marketplace sources and failed integrity checks](#untrusted-marketplace-sources-and-failed-integrity-checks).

130 

131<h3 id="trust-warning-before-you-install">

132 Peringatan kepercayaan sebelum Anda menginstal

133</h3>

134 

135Peringatan membaca sama apa pun marketplace plugin berasal dari:

136 

137```text theme={null}

138Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.

139```

140 

141Jika organisasi Anda menetapkan `pluginTrustMessage` dalam [managed settings](/docs/id/plugins/org), Claude Code menambahkan teks itu ke peringatan.

142 

143<h3 id="untrusted-marketplace-sources-and-failed-integrity-checks">

144 Sumber marketplace yang tidak dipercaya dan pemeriksaan integritas yang gagal

145</h3>

146 

147Claude Code menolak untuk memuat marketplace atau menginstal plugin dalam kasus-kasus ini, masing-masing dengan pesan kesalahannya sendiri:

148 

149* **Sumber marketplace yang tidak dipercaya**: ketika marketplace menggunakan nama official atau community tetapi sumbernya berada di luar `github.com/anthropics/`, Claude Code berhenti memuat marketplace dan plugin yang Anda instal darinya. Kesalahannya adalah [Marketplace is registered from an untrusted source](/docs/id/errors#marketplace-is-registered-from-an-untrusted-source).

150* **Integritas archive**: ketika entri marketplace menyematkan [`archive` source](/docs/id/plugins/marketplace-reference#archive-plugin-source) ke digest `sha256` dan digest file yang diunduh tidak cocok, Claude Code menolak install. Kesalahannya adalah [Plugin archive integrity check failed](/docs/id/errors#plugin-archive-integrity-check-failed).

151 

152Pin `sha256` terpisah dari pin SHA commit katalog community, yang memilih commit git untuk checkout.

153 

154<h2 id="enforce-plugin-controls-for-your-organization">

155 Terapkan kontrol plugin untuk organisasi Anda

156</h2>

157 

158Dengan [managed settings](/docs/id/plugins/org), administrator dapat menerapkan kontrol plugin ini:

159 

160* Allowlist atau blocklist sumber marketplace

161* Force-enable plugins

162* Matikan flag `--plugin-dir` dan `--plugin-url` dan variabel `CLAUDE_CODE_PLUGIN_DIRS`

163* Batasi hooks ke yang dari managed settings dan force-enabled plugins

164* Hentikan plugins dari akun claude.ai anggota dari loading di Claude Code, dengan [`syncClaudeAiPlugins`](/docs/id/plugins/org#control-matrix)

165 

166[Control matrix](/docs/id/plugins/org#control-matrix) mengatakan apa yang dilakukan setiap kunci dan tidak mencakup.

167 

168<h2 id="find-plugins-in-telemetry">

169 Temukan plugins dalam telemetri

170</h2>

171 

172Jika organisasi Anda mengekspor [OpenTelemetry events](/docs/id/monitoring-usage) Claude Code ke backend-nya sendiri, [marketplace tiers](#marketplace-tiers) memutuskan nama plugin mana yang muncul di sana:

173 

174* **[Plugin loaded event](/docs/id/monitoring-usage#plugin-loaded-event)**: event melaporkan nama plugin dan marketplace tingkat official seperti adanya. Untuk tingkat community dan third-party, `plugin.name` dan `marketplace.name` adalah string literal `third-party` kecuali Anda menetapkan `OTEL_LOG_TOOL_DETAILS=1`.

175* **Plugin scope**: `plugin.scope` event loaded masih melaporkan dari mana plugin berasal, seperti `org` untuk plugin yang diaktifkan managed settings Anda atau `user-local` untuk plugin third-party lainnya. [Plugin loaded event](/docs/id/monitoring-usage#plugin-loaded-event) mencantumkan setiap nilai.

176* **[Plugin installed event](/docs/id/monitoring-usage#plugin-installed-event)**: kecuali Anda menetapkan `OTEL_LOG_TOOL_DETAILS=1`, event menghilangkan field nama untuk plugin non-official alih-alih melaporkan `third-party`.

177* **[Claude Code Analytics API](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list)**: Claude Code melaporkan plugins dari tingkat official dan community berdasarkan nama dan melaporkan setiap plugin lainnya sebagai `third-party`.

178 

179<h2 id="next-steps">

180 Langkah berikutnya

181</h2>

182 

183* [Manage plugins for your organization](/docs/id/plugins/org): batasi marketplace mana yang dapat diinstal pengguna dan perlukan yang Anda percayai

184* [Install and manage plugins](/docs/id/plugins/install): tinjau panel detail plugin sebelum Anda memilih scope

185* [Anthropic's marketplaces](/docs/id/plugins/anthropic-marketplaces): nama marketplace mana yang merupakan Anthropic

186* [Security](/docs/id/security): model keamanan Claude Code sendiri

plugins/troubleshooting.md +1064 −0 created

Details

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# Troubleshoot plugins

6 

7> Perbaiki kesalahan plugin di Claude Code. Temukan pesan yang tepat yang Anda lihat, dikelompokkan berdasarkan tahap dari mana /plugin berjalan melalui instalasi dan kebijakan organisasi.

8 

9Halaman ini mencantumkan pesan kesalahan dan gejala untuk plugin Claude Code dan untuk marketplace, katalog tempat Claude Code menginstal plugin. Setiap entri memberikan penyebab, satu perbaikan, dan apa yang Anda lihat setelah perbaikan berhasil.

10 

11Jika pesan menyebutkan plugin atau marketplace, entri menunjukkan placeholder seperti `<name>` sebagai gantinya.

12 

13Gunakan halaman ini apakah Anda menginstal plugin, membangunnya, menyelenggarakan marketplace, atau mengelola plugin untuk organisasi.

14 

15<Note>

16 Kasus-kasus ini tercakup di halaman lain:

17 

18 * **Mengapa scopes, cache, dan precedence berperilaku seperti yang mereka lakukan**: baca [Plugin loading reference](/docs/id/plugins/loading)

19 * **Mencari flag, field, atau command**: gunakan [plugin commands reference](/docs/id/plugins/cli-reference), [manifest reference](/docs/id/plugins/manifest-reference), atau [marketplace reference](/docs/id/plugins/marketplace-reference)

20</Note>

21 

22Cari pesan yang tepat yang Anda lihat. Setiap pesan tercantum di bawah tahap yang menghasilkannya, yang tidak selalu merupakan perintah yang Anda jalankan. Misalnya, instalasi dapat gagal karena marketplace hilang, jadi pesan itu berada di bawah [Add a marketplace](#add-a-marketplace).

23 

24<h2 id="find-where-/plugin-runs">

25 Find where `/plugin` runs

26</h2>

27 

28`/plugin` adalah command yang Anda ketik di dalam sesi terminal Claude Code yang sedang berjalan, dan itu membuka panel interaktif. Entri di bagian ini mencakup tempat-tempat di mana Anda dapat mengetiknya tetapi tidak dapat berjalan, dan spelling command yang tidak ada.

29 

30<h3 id="plugin-isnt-available-in-this-environment">

31 `/plugin isn't available in this environment`

32</h3>

33 

34Anda mengetik `/plugin` di tempat lain selain sesi terminal Claude Code, dan Claude menjawab dengan baris ini alih-alih membuka apa pun.

35 

36Anda mendapatkan balasan ini dalam sesi yang tidak memiliki terminal untuk menggambar panel `/plugin` di dalamnya: [non-interactive mode](/docs/id/headless) dengan `claude -p`, Agent SDK, tab Code aplikasi desktop Claude, panel ekstensi VS Code, dan browser di claude.ai/code.

37 

38Di panel ekstensi VS Code, hanya baris `/plugin` dengan sesuatu setelahnya, seperti `/plugin install <plugin>@<marketplace>`, yang mendapatkan balasan ini. `/plugin` atau `/plugins` yang diketik sendiri membuka dialog **Manage plugins**.

39 

40Instal plugin dari permukaan yang Anda gunakan:

41 

42* **Aplikasi desktop Claude, sesi lokal atau SSH**: klik tombol **+** di sebelah prompt, lalu **Plugins**, lalu **Add plugin** untuk membuka [plugin browser](/docs/id/desktop#install-plugins)

43* **Ekstensi VS Code**: gunakan tab **VS Code** di bawah [Install a plugin](/docs/id/plugins/install#install-a-plugin)

44* **Claude Code di web, atau sesi cloud desktop**: sesi cloud tidak memiliki plugin browser. Lihat tab **Cloud session** di bawah [Install a plugin](/docs/id/plugins/install#install-a-plugin) untuk apa yang dimuat sesi cloud

45* **Terminal yang Anda miliki akses**: jalankan `claude` dan ketik `/plugin` di sana, atau jalankan `claude plugin install <plugin>@<marketplace>` di shell Anda tanpa memulai sesi

46 

47Ketika instalasi terminal berhasil, `/plugin` mencetak ringkasan instalasi yang dimulai dengan `✓ Installed <plugin>.` dan `claude plugin install` mencetak `Successfully installed plugin: <plugin>@<marketplace>`.

48 

49<h3 id="zsh-no-such-file-or-directory-plugin">

50 `zsh: no such file or directory: /plugin`

51</h3>

52 

53Anda mengetik `/plugin ...` di prompt shell, dan shell melaporkan bahwa tidak ada file bernama `/plugin`. Bash melaporkan `bash: /plugin: No such file or directory`.

54 

55`/plugin` adalah command yang Anda ketik di dalam sesi Claude Code, bukan di prompt shell. Mulai sesi dan ketik command yang sama di sana:

56 

57```shell theme={null}

58claude

59```

60 

61Kemudian, di prompt Claude Code:

62 

63```text theme={null}

64/plugin install <plugin>@<marketplace>

65```

66 

67Instalasi yang berhasil mencetak ringkasan yang dimulai dengan `✓ Installed <plugin>.` Jika instalasi itu sendiri kemudian gagal, pesannya ada di bawah [Add a marketplace](#add-a-marketplace) atau [Install a plugin](#install-a-plugin).

68 

69Untuk menginstal dari shell tanpa memulai sesi, jalankan `claude plugin install <plugin>@<marketplace>` sebagai gantinya.

70 

71<h3 id="the-term-plugin-is-not-recognized-as-the-name-of-a-cmdlet">

72 `The term '/plugin' is not recognized as the name of a cmdlet`

73</h3>

74 

75Anda mengetik `/plugin ...` di prompt PowerShell, dan `/plugin` adalah command Claude Code, bukan program. Bash dan Zsh melaporkan [bentuk kesalahan mereka sendiri](#zsh-no-such-file-or-directory-plugin).

76 

77Gunakan salah satu dari ini:

78 

79* Jalankan `claude`, lalu ketik `/plugin` di prompt Claude Code

80* Jalankan `claude plugin install <plugin>@<marketplace>` di PowerShell tanpa memulai sesi

81 

82<h3 id="claude-command-not-found-after-claude-plugin">

83 `claude: command not found` after `claude plugin ...`

84</h3>

85 

86Anda menjalankan `claude plugin install ...` di shell Anda, dan shell tidak dapat menemukan `claude` sama sekali. Di Windows pesannya adalah `'claude' is not recognized as the name of a cmdlet` atau `'claude' is not recognized as an internal or external command`.

87 

88Penyebabnya bukan command plugin. Baik Claude Code tidak terinstal, atau direktori instalasinya tidak ada di `PATH` Anda di shell ini. Ikuti [`command not found: claude` after installation](/docs/id/troubleshoot-install#command-not-found-claude-after-installation), lalu coba ulang command plugin.

89 

90<h3 id="unknown-command-and-command-spellings-that-dont-exist">

91 `Unknown command` and command spellings that don't exist

92</h3>

93 

94Anda mengetik command plugin yang Anda lihat di suatu tempat dan mendapatkan `Unknown command: /<name>` dalam sesi, atau `error: unknown command '<name>'` atau `error: unknown option '<flag>'` dari binary `claude` di shell Anda.

95 

96Beberapa spelling command sedang digunakan yang Claude Code tidak miliki. Tabel di bawah memetakan masing-masing ke command yang sebenarnya. [Plugin commands reference](/docs/id/plugins/cli-reference) mencantumkan setiap subcommand dan flag.

97 

98| Anda mengetik | Apa yang Claude Code katakan | Gunakan sebagai gantinya |

99| :----------------------------------------- | :--------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

100| `claude plugin add <source>` | `error: unknown command 'add'` | `claude plugin marketplace add <source>` untuk menambahkan marketplace, atau `claude plugin install <plugin>@<marketplace>` untuk menginstal plugin |

101| `claude plugin install <plugin> --project` | `error: unknown option '--project'` | `claude plugin install <plugin>@<marketplace> --scope project` |

102| `/install <plugin>` | `Unknown command: /install` | `/plugin install <plugin>@<marketplace>` |

103| `/plugin add <source>` | Panel `/plugin` terbuka di tab **Discover** | `/plugin marketplace add <source>` |

104| `marketplace.anthropic.com` sebagai sumber | `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` | `anthropics/claude-plugins-official` untuk marketplace resmi |

105 

106Spelling ini terlihat salah tetapi berfungsi:

107 

108* `claude plugins` adalah alias dari `claude plugin`

109* `claude plugin remove` adalah alias dari `claude plugin uninstall`

110* `/plugins` dan `/marketplace` dalam sesi membuka panel yang sama seperti `/plugin`

111 

112<h2 id="add-a-marketplace">

113 Add a marketplace

114</h2>

115 

116Marketplace adalah katalog yang Anda tambahkan ke Claude Code dari repositori git, URL, atau path lokal. Entri ini mencakup pesan yang Anda dapatkan ketika menambahkan satu gagal atau refresh kemudian gagal.

117 

118<h3 id="marketplace-claude-plugins-official-not-found">

119 `Marketplace "claude-plugins-official" not found`

120</h3>

121 

122Anda menjalankan `/plugin install <plugin>@claude-plugins-official` dalam sesi, dan Claude Code melaporkan bahwa tidak memiliki marketplace dengan nama itu.

123 

124Marketplace resmi belum terdaftar di mesin ini. Claude Code biasanya mendaftarkannya sendiri pertama kali Anda memulai sesi terminal interaktif. Belum berjalan jika Anda hanya menggunakan Claude Code melalui ekstensi VS Code, dan itu melewati atau menunda langkah itu:

125 

126* Ketika kebijakan memblokir sumber

127* Ketika `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` diatur

128* Setelah upaya yang gagal yang menunggu untuk mencoba ulang

129 

130Command shell `claude plugin` tidak pernah mendaftarkannya untuk Anda.

131 

132Tambahkan, lalu coba ulang instalasi:

133 

134```text theme={null}

135/plugin marketplace add anthropics/claude-plugins-official

136```

137 

138Claude Code mencetak `Successfully added marketplace: claude-plugins-official`, dan `/plugin marketplace list` menunjukkan marketplace dengan sumbernya.

139 

140Untuk nama marketplace lain dalam pesan ini, lihat [`Marketplace "<name>" not found`](#marketplace-not-found).

141 

142String yang sama juga muncul di tab **Errors** `/plugin`, daftar kegagalan beban panel, ketika plugin yang tercantum dalam pengaturan Anda menyebutkan marketplace yang belum Anda tambahkan.

143 

144<h3 id="marketplace-not-found">

145 `Marketplace "<name>" not found`

146</h3>

147 

148Anda menjalankan `/plugin install <plugin>@<name>` dalam sesi, sering kali dari baris instalasi yang dikirim seseorang kepada Anda, dan Claude Code melaporkan bahwa tidak memiliki marketplace dengan nama itu.

149 

150Jika nama dimulai dengan `claudeai-`, marketplace dihosting di claude.ai, dan Anda menambahkannya berdasarkan nama dari shell Anda dengan `claude plugin marketplace add --claudeai <name>`. Lihat [Add a marketplace from claude.ai](/docs/id/plugins/install#add-from-claude-ai).

151 

152Untuk nama lain, baris instalasi menyebutkan marketplace tetapi tidak mengatakan di mana marketplace dihosting, dan Claude Code tidak memiliki indeks untuk mencari nama marketplace. Tanyakan kepada siapa pun yang mengirim baris untuk sumber marketplace, yang merupakan GitHub `owner/repo`, URL git, atau path. Kemudian [tambahkan marketplace](/docs/id/plugins/install#add-a-marketplace) dan jalankan baris instalasi lagi.

153 

154Marketplace yang dikirim seseorang kepada Anda adalah pihak ketiga, jadi [tinjau plugin sebelum Anda menginstalnya](/docs/id/plugins/security#review-a-plugin-before-you-install).

155 

156Jika Anda sudah menambahkan marketplace, periksa spelling terhadap `/plugin marketplace list`.

157 

158<h3 id="invalid-marketplace-source-format">

159 `Invalid marketplace source format`

160</h3>

161 

162Anda menjalankan `/plugin marketplace add <source>` atau `claude plugin marketplace add <source>`, dan Claude Code menjawab `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

163 

164Claude Code menerima sumber dalam salah satu bentuk ini:

165 

166* Shorthand GitHub `owner/repo`

167* URL `https://` atau `http://`

168* URL SSH `user@host:path`

169* Path lokal dimulai dengan `./`, `../`, `/`, atau `~`

170 

171Nama telanjang seperti `claude-plugins-official` tidak cocok dengan salah satu dari mereka. Begitu juga hostname telanjang seperti `marketplace.anthropic.com`.

172 

173Ketik ulang sumber dalam salah satu bentuk yang diterima:

174 

175```text theme={null}

176/plugin marketplace add anthropics/claude-plugins-official

177```

178 

179Claude Code mencetak `Successfully added marketplace: <name>` ketika penambahan berhasil.

180 

181<h3 id="is-not-a-valid-github-owner-repo-shorthand">

182 `'<source>' is not a valid GitHub owner/repo shorthand`

183</h3>

184 

185Anda melewatkan sumber dengan garis miring yang bukan `owner/repo`, seperti `github.com/owner/repo` atau path `gitlab.example.com/group/project`. Claude Code menolaknya dengan pesan ini dan daftar bentuk yang diterima.

186 

187Shorthand `owner/repo` hanya untuk GitHub dan harus mengikuti aturan penamaan GitHub, jadi hostname atau segmen path tambahan gagal. Lewatkan sumber dalam bentuk yang cocok dengan tempat marketplace dihosting:

188 

189* **Repository di host apa pun**: URL klon lengkap

190* **`marketplace.json` yang dihosting**: URL `https://` nya

191* **Checkout lokal**: `./path` atau path absolut

192 

193Misalnya, untuk menambahkan marketplace resmi dengan URL klon-nya, dalam sesi:

194 

195```text theme={null}

196/plugin marketplace add https://github.com/anthropics/claude-plugins-official.git

197```

198 

199Penambahan yang berhasil mencetak `Successfully added marketplace: <name>`.

200 

201<h3 id="path-does-not-exist">

202 `Path does not exist: <path>`

203</h3>

204 

205Anda melewatkan path lokal ke `marketplace add`, dan tidak ada yang ada di path itu. Path relatif diselesaikan terhadap direktori saat ini Anda.

206 

207Periksa path yang diselesaikan dalam pesan. Kemudian jalankan command dari direktori path relatif dimulai, atau lewatkan path absolut ke direktori marketplace. Penambahan yang berhasil mencetak `Successfully added marketplace: <name>`.

208 

209Claude Code menerima direktori yang berisi `.claude-plugin/marketplace.json`, atau path ke file `.json`. Path ke file lain apa pun gagal dengan `File path must point to a .json file (marketplace.json)`.

210 

211<h3 id="marketplace-file-not-found-at-claude-plugin-marketplace-json">

212 `Marketplace file not found at <path>/.claude-plugin/marketplace.json`

213</h3>

214 

215Claude Code mengklon atau mengunduh marketplace tetapi tidak menemukan `marketplace.json` di path yang diharapkan di dalamnya. Command add melaporkannya sebagai `Failed to add marketplace: Marketplace file not found at ...`.

216 

217Lokasi default adalah `.claude-plugin/marketplace.json` di root repository, dan [marketplace reference](/docs/id/plugins/marketplace-reference) mencantumkan lokasi yang diterima.

218 

219Perbaikannya berbeda untuk pemilik dan untuk semua orang:

220 

221* **Anda memiliki marketplace**: letakkan file di lokasi itu dan tambahkan kembali marketplace

222* **Seseorang lain menyelenggarakannya**: tanyakan kepada pemilik untuk sumber yang tepat yang mereka terbitkan

223 

224<h3 id="ssh-authentication-failed-or-https-authentication-failed">

225 `SSH authentication failed` or `HTTPS authentication failed`

226</h3>

227 

228Anda menambahkan atau memperbarui marketplace dari repositori git, dan klon gagal dengan `Failed to clone marketplace repository:` diikuti oleh salah satu baris ini.

229 

230Pertama periksa repository itu sendiri: `owner/repo` yang salah eja, repository yang tidak ada, atau repository pribadi yang tidak dapat Anda lihat juga berakhir dalam pesan ini. Buka URL repository di browser Anda, atau jalankan `git ls-remote <url>` di terminal Anda, untuk mengonfirmasi bahwa itu ada dan Anda memiliki akses.

231 

232Jika repository benar, penyebabnya adalah kredensial. Claude Code menjalankan git dengan prompt interaktif dinonaktifkan, jadi tidak dapat meminta Anda untuk password, passphrase kunci, atau kredensial seperti yang dilakukan terminal Anda. Jika git perlu meminta, Anda melihat `fatal: Cannot prompt because user interactivity has been disabled` atau `terminal prompts disabled` dalam kesalahan asli. Hanya kredensial yang sudah berfungsi non-interaktif yang berhasil:

233 

234* **SSH**: `ssh -T git@<host>` harus berhasil tanpa meminta passphrase, dan host harus sudah ada di `known_hosts`

235* **HTTPS**: credential helper Anda harus menyimpan token untuk host. Untuk GitHub, jalankan `gh auth login` dan `gh auth setup-git`. Untuk host lain, simpan personal access token di git credential helper Anda. Uji dengan `git ls-remote <url>`

236 

237Setelah `git ls-remote` berhasil di terminal Anda tanpa prompt, jalankan add atau update lagi. Penambahan yang berhasil mencetak `Successfully added marketplace: <name>`. Update yang berhasil mencetak `Successfully updated marketplace: <name>` dari shell Anda, atau `✔ Updated 1 marketplace` dalam sesi.

238 

239Untuk membuat Claude Code melewati SSH untuk sumber GitHub `owner/repo`, atur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Tanpanya, Claude Code mengklon sumber-sumber itu melalui SSH ketika kunci SSH untuk `github.com` terlihat dikonfigurasi, dan kembali ke HTTPS ketika klon SSH gagal.

240 

241Untuk apa yang dapat dan tidak dapat dilakukan auto-update latar belakang dengan kredensial Anda, lihat [What background auto-update does with credentials](/docs/id/plugins/host-marketplace#what-background-auto-update-does-with-credentials).

242 

243<h3 id="ssh-host-key-is-not-in-your-known-hosts-file">

244 `SSH host key is not in your known_hosts file`

245</h3>

246 

247Anda menambahkan marketplace melalui SSH dari host yang belum pernah Anda hubungkan, dan klon gagal dengan baris ini dan hint `ssh -T git@<host>`. Untuk host yang kuncinya berubah, pesannya adalah `SSH host key has changed` dengan hint `ssh-keygen -R <host>` sebagai gantinya.

248 

249Claude Code mengklon dengan `StrictHostKeyChecking=yes`, jadi itu menolak host yang kuncinya belum Anda terima daripada menerima kunci secara otomatis. Hubungkan sekali dari terminal Anda untuk menerima fingerprint, lalu coba ulang:

250 

251```shell theme={null}

252ssh -T git@github.com

253```

254 

255Untuk repository publik, tambahkan marketplace dengan URL `https://` nya sebagai gantinya untuk menghindari SSH sepenuhnya.

256 

257<h3 id="command-git-not-found-or-is-in-an-unsafe-location">

258 `Command 'git' not found or is in an unsafe location`

259</h3>

260 

261Di Windows, Anda menambahkan marketplace dan Claude Code melaporkan `Failed to clone marketplace repository: Command 'git' not found or is in an unsafe location (current directory)`.

262 

263Claude Code mencari `git` di `PATH` Anda dan menolak untuk menjalankan yang ditemukan hanya di direktori saat ini. Untuk memperbaikinya, instal Git dan coba ulang:

264 

265<Steps>

266 <Step title="Install Git for Windows">

267 Instal Git untuk Windows sehingga `git` ada di `PATH` Anda.

268 </Step>

269 

270 <Step title="Open a new terminal">

271 Buka terminal baru sehingga `PATH` yang diperbarui berlaku.

272 </Step>

273 

274 <Step title="Confirm git runs">

275 Konfirmasi `git --version` mencetak versi.

276 </Step>

277 

278 <Step title="Retry the add">

279 Jalankan command `marketplace add` lagi.

280 </Step>

281</Steps>

282 

283<h3 id="git-clone-timed-out-after-120s">

284 `Git clone timed out after 120s`

285</h3>

286 

287Anda menambahkan atau memperbarui marketplace, dan itu gagal dengan `Git clone timed out after 120s`, diikuti oleh hint untuk mengatur `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`.

288 

289Mengklon marketplace, dan mengklon ulang satu untuk memperbaruinya, mendapat 120 detik secara default. Untuk repository besar atau koneksi lambat, naikkan batasnya. Nilainya dalam milidetik:

290 

291<Tabs>

292 <Tab title="Bash or Zsh">

293 ```bash theme={null}

294 export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000

295 ```

296 </Tab>

297 

298 <Tab title="PowerShell">

299 ```powershell theme={null}

300 $env:CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS = "300000"

301 ```

302 </Tab>

303</Tabs>

304 

305Kemudian coba ulang di shell yang sama.

306 

307Jika repository adalah monorepo, batasi checkout ke direktori yang Anda beri nama dengan `claude plugin marketplace add <source> --sparse <paths>`.

308 

309<h3 id="marketplace-updates-keep-failing-offline">

310 Marketplace updates keep failing offline

311</h3>

312 

313Anda bekerja di lingkungan di mana host git marketplace tidak dapat dijangkau, dan setiap sesi mengulangi refresh yang gagal di latar belakang. Checkout marketplace Anda yang ada tetap di tempat dan startup tidak tertunda.

314 

315Setiap sesi, untuk marketplace dengan [auto-update on](/docs/id/plugins/loading#which-marketplaces-and-plugins-auto-update), Claude Code memeriksa host git marketplace untuk commit baru di latar belakang. Ketika pemeriksaan itu tidak dapat menjangkau host, itu mencoba mengklon marketplace lagi, dan offline klon itu juga gagal.

316 

317Atur variabel ini untuk melewati upaya re-clone dan terus menggunakan checkout yang ada ketika pemeriksaan tidak dapat menjangkau host:

318 

319<Tabs>

320 <Tab title="Bash or Zsh">

321 ```bash theme={null}

322 export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

323 ```

324 </Tab>

325 

326 <Tab title="PowerShell">

327 ```powershell theme={null}

328 $env:CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE = "1"

329 ```

330 </Tab>

331</Tabs>

332 

333Dengan variabel yang diatur, Claude Code melewati re-clone hanya untuk checkout yang sudah berisi `.claude-plugin/marketplace.json`. Marketplace yang tidak pernah diklon atau yang klonnya berhenti di tengah jalan masih mendapat upaya klon, jadi tambahkan sekali saat online.

334 

335Untuk deployment yang sepenuhnya offline, pre-populate direktori plugins pada waktu build gambar dengan `CLAUDE_CODE_PLUGIN_SEED_DIR` sebagai gantinya, mengikuti [Seed containers and CI](/docs/id/plugins/org#seed-containers-and-ci).

336 

337<h3 id="marketplace-add-fails-on-a-github-enterprise-server-host">

338 Marketplace add fails on a GitHub Enterprise Server host

339</h3>

340 

341Anda menambahkan marketplace dari URL GitHub Enterprise Server (GHES) dan mendapatkan kesalahan kebijakan, atau Anda menambahkannya dari claude.ai dan mendapatkan kesalahan akses GitHub.

342 

343Kedua kasus ada di halaman GHES:

344 

345* [Kesalahan kebijakan](/docs/id/github-enterprise-server#marketplace-add-fails-with-a-policy-error) berarti organisasi Anda membatasi sumber marketplace dan admin perlu menambahkan `hostPattern` untuk host

346* [Kesalahan akses GitHub di claude.ai](/docs/id/github-enterprise-server#marketplace-add-on-claude-ai-fails-with-a-github-access-error) berarti akun GitHub Enterprise Anda sendiri belum terhubung

347 

348<h2 id="install-a-plugin">

349 Install a plugin

350</h2>

351 

352Anda menambahkan marketplace dan menjalankan instalasi, dan instalasi berhenti dengan pesan alih-alih menginstal apa pun. Entri ini mencakup pesan-pesan itu. Mereka juga mencakup pesan terkait yang muncul kemudian di tab **Errors** `/plugin`, atau sebagai tab **Discover** kosong, ketika plugin atau marketplace-nya tidak dapat ditemukan, dibaca, atau dipercaya.

353 

354<h3 id="plugin-not-found-in-marketplace">

355 `Plugin "<name>" not found in marketplace "<marketplace>"`

356</h3>

357 

358Anda menjalankan `/plugin install <name>@<marketplace>` atau `claude plugin install <name>@<marketplace>`, dan nama plugin tidak ada dalam salinan katalog marketplace itu di mesin Anda.

359 

360`claude plugin install` di shell Anda mencetak pesan yang sama ketika Anda belum menambahkan marketplace sama sekali. Jika `claude plugin marketplace update <marketplace>` kemudian menjawab `Marketplace '<marketplace>' not found`, [tambahkan marketplace](#add-a-marketplace) terlebih dahulu.

361 

362<h4 id="the-message-ends-with-a-refresh-hint">

363 `not found in marketplace` with a refresh hint

364</h4>

365 

366Hint berbunyi `Your local copy may be out of date — try claude plugin marketplace update <marketplace>` atau `The marketplace couldn't be refreshed (...)`. Claude Code tidak merefresh marketplace sebelum pencarian, seperti ketika Anda offline, jadi salinan katalog Anda mungkin sudah ketinggalan zaman. Refresh dengan nama marketplace, lalu instal lagi:

367 

368```text theme={null}

369/plugin marketplace update <marketplace>

370```

371 

372`claude plugin marketplace update` mencetak `Successfully updated marketplace: <name>`, dan `/plugin marketplace update` menunjukkan `✔ Updated 1 marketplace`. Jika instalasi yang dicoba ulang mencetak pesan yang sama, periksa nama seperti yang dijelaskan [`not found in marketplace` with no hint](#the-message-has-no-hint). [When Claude Code refreshes a marketplace before an install](/docs/id/plugins/loading#when-claude-code-refreshes-a-marketplace-before-an-install) mencantumkan kasus lain di mana refresh tidak berjalan.

373 

374<h4 id="the-message-has-no-hint">

375 `not found in marketplace` with no hint

376</h4>

377 

378Nama adalah masalah yang paling mungkin. Buka `/plugin`, buka **Discover**, dan salin nama dari daftar.

379 

380Sebelum v2.1.232, Claude Code merefresh marketplace yang dinamai hanya setelah pencarian terlewat, dan hanya ketika auto-update aktif untuk itu.

381 

382<h3 id="plugin-not-found-in-any-marketplace">

383 `Plugin "<name>" not found in any marketplace`

384</h3>

385 

386Anda menjalankan `/plugin install <name>` tanpa `@marketplace`, dan tidak ada marketplace terdaftar yang memiliki plugin itu. `claude plugin install <name>` melaporkan `Plugin "<name>" not found in any configured marketplace`.

387 

388Tanpa nama marketplace, `claude plugin install` mencari katalog yang sudah dimilikinya dan tidak merefresh mereka terlebih dahulu, dan `/plugin install` merefresh hanya marketplace yang memiliki auto-update aktif. Beri nama marketplace, dan Claude Code merefresh-nya sebelum mencari plugin:

389 

390```text theme={null}

391/plugin install <name>@<marketplace>

392```

393 

394Ketika instalasi berhasil, Anda melihat `✓ Installed <plugin>.` dalam sesi, atau `Successfully installed plugin: <plugin>@<marketplace>` dari `claude plugin install`.

395 

396Jika Anda tidak tahu marketplace mana yang mencantumkan plugin, jalankan `/plugin marketplace list` untuk marketplace yang Anda miliki, dan telusuri **Discover** di `/plugin` untuk nama plugin.

397 

398<h3 id="plugin-is-already-installed-globally">

399 `Plugin '<name>@<marketplace>' is already installed globally`

400</h3>

401 

402Anda menjalankan `/plugin install` untuk plugin yang sudah diinstal di scope pengguna atau oleh pengaturan terkelola, dan Claude Code menolak dengan `Use '/plugin' to manage existing plugins.` Jika Anda mengetik nama plugin tanpa `@<marketplace>`, pesan menghilangkan `globally`.

403 

404Plugin sudah tersedia di setiap proyek, jadi tidak ada yang perlu ditambahkan. Untuk mengubah [scope](/docs/id/plugins/install)-nya, mengaktifkan atau menonaktifkannya, atau mengonfigurasinya, buka `/plugin` dan buka **Installed**.

405 

406Plugin yang diinstal hanya di scope proyek atau lokal tidak memicu pesan ini. Claude Code memungkinkan Anda menginstalnya di scope pengguna juga, jadi tersedia di proyek lain.

407 

408`claude plugin install` di shell Anda mencetak pesan yang berbeda. Untuk plugin yang sudah diinstal di scope target, itu mencetak `Plugin "<name>@<marketplace>" is already installed (scope: user)` dan keluar 0. Jika direktori cache-nya hilang, command yang sama mengunduh ulang-nya.

409 

410<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

411 `This plugin uses a source type your Claude Code version does not support`

412</h3>

413 

414Anda menginstal plugin yang entri marketplace-nya menggunakan tipe sumber yang versi Claude Code ini tidak dapat ambil, dan Claude Code berhenti dengan pesan ini dan `Update Claude Code and try again.`

415 

416Perbarui Claude Code, lalu coba ulang instalasi. Tipe sumber ada di [marketplace reference](/docs/id/plugins/marketplace-reference).

417 

418<h3 id="plugin-archive-integrity-check-failed">

419 `Plugin archive integrity check failed`

420</h3>

421 

422Anda menginstal plugin yang didistribusikan sebagai arsip zip, dan Claude Code menolaknya dengan baris ini dan `The archive was not installed.` Entri marketplace plugin menggunakan [`archive` source](/docs/id/plugins/marketplace-reference) dengan pin `sha256`, dan digest file yang diunduh tidak cocok dengan pin.

423 

424Pesan lengkapnya terlihat seperti ini:

425 

426```text theme={null}

427Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.

428```

429 

430Perbaikannya berbeda untuk penerbit dan penginstal:

431 

432* **Anda menerbitkan plugin**: hitung ulang digest file yang tepat yang URL layani dan perbarui `sha256` dalam entri marketplace. Gunakan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell

433* **Anda menginstal plugin**: jalankan `/plugin marketplace update <name>` dalam sesi untuk merefresh katalog jika entri diperbaiki, lalu coba ulang instalasi. Jika digest masih tidak setuju setelah refresh, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal

434 

435<h3 id="marketplace-is-registered-from-an-untrusted-source">

436 `Marketplace "<name>" is registered from an untrusted source`

437</h3>

438 

439Marketplace yang Anda tambahkan sebelumnya berhenti memuat, begitu juga plugin-nya. Baris ini muncul di tab **Errors** `/plugin` atau pada refresh berikutnya.

440 

441Marketplace terdaftar di bawah nama yang [dicadangkan untuk marketplace resmi Anthropic](/docs/id/plugins/marketplace-reference), tetapi sumber terdaftar-nya bukan repository GitHub `anthropics`. Nama yang dicadangkan diperiksa ulang setiap kali marketplace memuat atau merefresh, jadi marketplace dan plugin yang diinstal darinya berhenti memuat.

442 

443Pesan lengkap menyebutkan nama yang dicadangkan dan perbaikannya:

444 

445```text theme={null}

446Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

447```

448 

449Perbaikannya berbeda untuk pengguna dan penerbit:

450 

451* **Anda menggunakan marketplace**: di shell Anda, jalankan `claude plugin marketplace remove <name>`, lalu tambahkan marketplace lagi dari repository `github.com/anthropics` resmi

452* **Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum itu menjadi dicadangkan**: ganti namanya dan minta pengguna untuk menambahkan kembali dari sumber Anda

453 

454Sebelum v2.1.205, Claude Code memeriksa nama hanya ketika Anda menambahkan marketplace, jadi entri yang terdaftar sebelum nama-nya menjadi dicadangkan terus memuat.

455 

456<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

457 `Plugin <name> has a corrupt manifest file` or `has an invalid manifest file`

458</h3>

459 

460Claude Code mengambil plugin, lalu gagal membaca `.claude-plugin/plugin.json`-nya. Di shell, `<name>` dalam baris ini dapat berupa nama direktori sementara; awalan `Failed to install plugin "<name>@<marketplace>"` membawa nama asli plugin. Wording mengatakan pemeriksaan mana yang gagal:

461 

462* **`corrupt manifest file`, diikuti oleh `JSON parse error:`**: file bukan JSON yang valid

463* **`invalid manifest file`, diikuti oleh `Validation errors:`**: file parse tetapi gagal schema, seperti `name: Invalid input` untuk field yang diperlukan yang hilang

464 

465`claude plugin install` melaporkan salah satu sebagai `Failed to install plugin "<name>@<marketplace>":` dan keluar dengan kode 1.

466 

467Penulis plugin harus memperbaiki file, dan plugin tidak dapat diinstal sampai saat itu:

468 

469* **Jika itu Anda**: jalankan `claude plugin validate <plugin-directory>` di shell Anda untuk melihat kesalahan yang sama dengan path yang menyinggung, lalu perbaiki file

470* **Jika bukan Anda**: laporkan pesan ke pemilik marketplace

471 

472<h3 id="plugin-directory-not-found-at-path">

473 `Plugin directory not found at path: <path>`

474</h3>

475 

476Tab **Errors** di `/plugin` menunjukkan ini untuk plugin yang diaktifkan yang marketplace-nya mencantumkan dengan path relatif, seperti `./plugins/my-plugin`, ketika tidak ada direktori yang ada di path itu di dalam marketplace. Jika Anda memelihara marketplace, perbaiki path `source` entri atau pulihkan folder. Jika tidak, laporkan pesan ke pemilik marketplace.

477 

478`Marketplace directory not found at path: <path>` berarti direktori marketplace itu sendiri hilang. Untuk marketplace yang Anda tambahkan dari path lokal, direktori itu pindah atau dihapus. Pulihkan, atau hapus marketplace dan tambahkan lagi dari lokasi barunya.

479 

480<h3 id="no-plugins-available-or-no-marketplaces-configured">

481 `No plugins available` or `No marketplaces configured`

482</h3>

483 

484Anda membuka `/plugin` dan tab **Discover** kosong, atau `claude plugin marketplace list` mencetak `No marketplaces configured`.

485 

486Tidak ada marketplace yang terdaftar, jadi tidak ada katalog untuk ditampilkan. Dalam sesi, tambahkan marketplace resmi, `anthropics/claude-plugins-official`:

487 

488```text theme={null}

489/plugin marketplace add anthropics/claude-plugins-official

490```

491 

492Claude Code mencetak `Successfully added marketplace: claude-plugins-official`, dan **Discover** mencantumkan plugin-nya. Halaman [Anthropic marketplaces](/docs/id/plugins/anthropic-marketplaces) mencantumkan marketplace lain yang dapat Anda tambahkan.

493 

494<h3 id="marketplace-is-already-added-from-a-different-source">

495 `Marketplace "<name>" is already added from a different source`

496</h3>

497 

498Anda mengonfirmasi penambahan marketplace melalui [`/plugin install <plugin> --marketplace <source>`](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dan katalog yang Claude Code ambil dari sumber itu memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada alih-alih menggantinya, dan plugin tidak diinstal.

499 

500Pesan lengkapnya terlihat seperti ini:

501 

502```text theme={null}

503Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.

504```

505 

506Pilih sumber mana yang Anda inginkan:

507 

508* **Marketplace yang sudah Anda tambahkan**: instal darinya berdasarkan nama dengan `/plugin install <plugin>@<name>`

509* **Sumber baru**: jalankan `/plugin marketplace remove <name>`, lalu coba ulang instalasi

510 

511<h3 id="cannot-add-marketplace-its-network-source-differs">

512 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`

513</h3>

514 

515Anda menjalankan `marketplace add`, dan katalog di sumber itu memiliki nama yang sama dengan marketplace yang file pengaturan sudah deklarasikan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dengan sumber berbeda. Claude Code menolak penambahan dan tidak mendaftarkan apa pun.

516 

517Pesan berakhir dengan perbaikannya: sumber harus cocok dengan yang dideklarasikan untuk nama ini dalam pengaturan, atau Anda mengubah deklarasi. Bandingkan sumber yang Anda lewatkan terhadap entri `extraKnownMarketplaces` untuk nama itu, termasuk `ref`, `path`, dan `headers`-nya, lalu lakukan salah satu dari ini:

518 

519* **Gunakan sumber yang dideklarasikan**: tambahkan marketplace dari sumber yang entri pengaturan beri nama

520* **Gunakan sumber baru**: edit atau hapus entri `extraKnownMarketplaces`, lalu tambahkan marketplace lagi. Jika pengaturan terkelola mendeklarasikannya, tanyakan administrator Anda

521 

522<h3 id="failed-to-install-from-the-plugin-menu">

523 `Failed to install: <plugin> (<reason>)`

524</h3>

525 

526Anda memilih plugin untuk diinstal di menu `/plugin`, tidak satupun dari mereka diinstal, dan menu ditutup dengan ringkasan apa yang gagal.

527 

528Beberapa alasan, seperti output git setelah klon yang gagal, menunjukkan hanya baris pertama mereka. Ketika alasan seperti itu diperpendek, ringkasan berakhir dengan `Installing a plugin from its details (Enter) in /plugin shows its full error.`

529 

530Apa yang harus dilakukan tergantung pada apakah ringkasan memendekkan alasan:

531 

532* Perbaiki apa yang alasan dalam tanda kurung beri nama

533* Ketika alasan diperpendek, jalankan `/plugin`, pilih plugin di tab **Discover**, dan tekan **Enter** untuk menginstalnya dari detailnya. Jika instalasi gagal di sana, tampilan detail menunjukkan kesalahan lengkap

534 

535<h3 id="could-not-move-the-new-copy-of-this-plugin-version">

536 `Could not move the new copy of this plugin version into <path>`

537</h3>

538 

539Ketika Anda menginstal plugin, Claude Code mengunduh salinan segar file-nya dan memindahkannya ke folder versi itu di [plugin cache](/docs/id/plugins/loading#find-plugins-on-disk). Pesan ini berarti perpindahan gagal, biasanya karena program lain menggunakan folder saat instalasi berjalan. Kode sistem file muncul dalam tanda kurung:

540 

541```text theme={null}

542Could not move the new copy of this plugin version into /home/user/.claude/plugins/cache/acme-tools/formatter/1.2.0: the new copy or the version folder stayed busy while the install ran (ENOTEMPTY) — usually a scanner still reading the freshly downloaded files, another program using that folder, or another process re-creating it. The previously installed copy was moved back. Run the install again once other Claude Code sessions or programs using that folder have finished.

543```

544 

545Pesan mengatakan apa yang terjadi pada salinan yang diinstal sebelumnya, yang memberi tahu Anda apakah plugin masih berfungsi:

546 

547* `The previously installed copy was moved back`: versi yang Anda miliki masih diinstal

548* `had to be removed first`, `was not moved back`, atau `could not be moved back`: versi plugin itu tidak diinstal sampai instalasi berhasil

549* Tidak ada kalimat seperti itu: tidak ada salinan sebelumnya, jadi versi tidak diinstal namun

550 

551Di Windows, ketika program lain menyimpan salinan yang diinstal itu sendiri, pesan malah mengatakan salinan itu `could not be replaced` dan bahwa `It was not replaced and the new copy was discarded`, jadi versi yang Anda miliki masih diinstal.

552 

553Daftar `Left on disk` menyebutkan folder yang disisihkan di dalam cache. Instalasi versi itu nanti atau pembersihan cache plugin menghapusnya, jadi Anda tidak perlu menghapusnya.

554 

555Untuk memperbaiki instalasi:

556 

557* Tutup sesi Claude Code lain, editor, dan terminal yang menggunakan folder plugin di bawah `~/.claude/plugins/cache`, lalu jalankan instalasi lagi

558* Ketika pesan mengatakan untuk memeriksa izin folder cache plugin, pulihkan izin tulis Anda di folder yang dinamai dan bebaskan ruang disk, lalu jalankan instalasi lagi

559 

560<h3 id="dependency-errors">

561 Dependency errors

562</h3>

563 

564Plugin yang mendeklarasikan dependensi dapat gagal diinstal, atau diinstal dan tetap dinonaktifkan, ketika dependensi tidak dapat dipenuhi. Pesan mencapai Anda pada waktu instalasi atau pada waktu beban:

565 

566* **Selama instalasi**: penolakan kembali sebagai pesan kesalahan instalasi

567* **Ketika plugin memuat**: masalah muncul di `claude plugin list` dan tab **Errors** `/plugin`, dan Claude Code membuat plugin yang terpengaruh tetap dinonaktifkan sampai Anda menyelesaikannya

568 

569Tabel mencantumkan setiap pesan dan perbaikannya. Untuk mendeklarasikan dependensi sebagai penulis, lihat [Plugin dependencies](/docs/id/plugins/dependencies).

570 

571| Pesan | Arti | Cara menyelesaikan |

572| :------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

573| `Dependency "<dep>" is not installed` | Dependensi yang dideklarasikan tidak diinstal. | Instal di shell Anda dengan `claude plugin install <dep>@<marketplace>`, atau uninstal plugin. Jika marketplace dependensi belum terdaftar, tambahkan dan jalankan `/reload-plugins` dalam sesi Anda, yang menginstal dependensi yang hilang yang dapat diselesaikan. |

574| `Dependency "<dep>" is disabled` | Dependensi diinstal tetapi dimatikan. | Aktifkan dependensi, atau uninstal plugin yang membutuhkannya. |

575| `Requires "<dep>" <range>, installed <version>` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin. | Perbarui dependensi ke versi dalam rentang, atau uninstal plugin. |

576| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Tidak ada versi yang memenuhi setiap rentang yang menyematkannya. Pesan mencantumkan rentang-nya. | Uninstal atau perbarui salah satu plugin yang bertentangan, atau minta penulis upstream untuk memperluas batasan-nya. |

577| `... has version requirements too complex to intersect` atau `has an invalid version requirement` | Rentang bukan semver yang valid, atau rentang gabungan tidak dapat dipotong. | Perbaiki rentang yang tidak valid atau sederhanakan rantai `\|\|` yang panjang. |

578| `... has no git tag satisfying <range>` | Repository dependensi tidak memiliki tag `<name>--v*` dalam rentang. | Periksa bahwa tag upstream rilis dengan konvensi itu, atau relakskan rentang. |

579| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Dependensi ada di marketplace berbeda, dan resolusi lintas-marketplace dimatikan secara default. | Instal dependensi sendiri di scope yang sama, di shell Anda dengan `claude plugin install <dep>@<marketplace>` ditambah `--scope` yang Anda instal plugin, lalu coba ulang. |

580 

581Untuk melihat ini secara terprogram, jalankan `claude plugin list --json` di shell Anda. Plugin dengan masalah membawa field `errors` dengan pesan dan field `errorDetails` dengan `type` untuk masing-masing: dua baris pertama adalah `dependency-unsatisfied` dan yang ketiga adalah `dependency-version-unsatisfied`.

582 

583<h2 id="plugin-installed-but-not-working">

584 Plugin installed but not working

585</h2>

586 

587Instalasi berhasil, tetapi skills, hooks, atau server plugin tidak melakukan apa pun. Mulai dengan [Plugin doesn't appear or its skills don't show up](#plugin-doesnt-appear-or-its-skills-dont-show-up), yang memberi tahu Anda di mana Claude Code melaporkan apa yang dimuat, lalu cocokkan pesannya.

588 

589<h3 id="plugin-doesnt-appear-or-its-skills-dont-show-up">

590 Plugin doesn't appear or its skills don't show up

591</h3>

592 

593Anda menginstal plugin dan mengetik `/` mengharapkan skills-nya, atau meminta Claude untuk menggunakannya, dan tidak ada yang terjadi.

594 

595Periksa status plugin sebelum mengubah apa pun:

596 

597<Steps>

598 <Step title="Confirm the plugin is installed and enabled">

599 Jalankan `/plugin` dan buka **Installed**. Konfirmasi plugin tercantum dan diaktifkan. `claude plugin list` di shell Anda mencetak daftar yang sama dengan versi, scope, dan `Status: ✔ enabled` setiap plugin.

600 </Step>

601 

602 <Step title="Read the Errors tab">

603 Buka tab **Errors** di panel yang sama. Setiap entri memasangkan pesan dengan baris panduan. Sebagian besar pesan di sisa bagian ini berasal dari tab itu.

604 </Step>

605 

606 <Step title="Reload if you installed during this session">

607 Jika plugin diinstal dan bebas kesalahan tetapi Anda menginstalnya selama sesi ini, jalankan `/reload-plugins`. Itu mencetak `Reloaded:` dengan hitungan plugin, skills, agents, hooks, dan server. Ketika sesuatu gagal itu menambahkan `N errors during load. Run /plugin for details.`

608 </Step>

609</Steps>

610 

611Jika plugin memuat tanpa kesalahan dan skills-nya masih tidak muncul, langkah berikutnya berbeda untuk plugin Anda sendiri dan untuk plugin orang lain:

612 

613* **Plugin yang Anda bangun**: lihat [Plugin loads but its skills are missing](#plugin-loads-but-its-skills-are-missing)

614* **Plugin yang diterbitkan orang lain**: buka **Installed** di `/plugin` dan buka pane detail plugin, yang mencantumkan apa yang berisi plugin. Plugin yang tidak mencantumkan skills di sana tidak memiliki yang ditawarkan ketika Anda mengetik `/`

615 

616<h3 id="run-reload-plugins-to-activate">

617 `Run /reload-plugins to activate.`

618</h3>

619 

620Ringkasan instalasi di `/plugin` berakhir dengan `Run /reload-plugins to activate.` alih-alih `Plugin is now active.`

621 

622Claude Code tidak mengaktifkan plugin selama instalasi, baik karena mengaktifkannya akan [membatalkan prompt cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin) atau karena upaya aktivasi gagal.

623 

624Anda tidak perlu mengetik command. Panel ditutup dan Claude Code menjalankan `/reload-plugins` untuk Anda, atau mengantrekannya sampai respons yang streaming selesai.

625 

626Baca apa yang reload itu cetak:

627 

628* **`Reloaded:` dengan hitungan plugin, skills, agents, hooks, dan server**: plugin sekarang aktif. Ketika sesuatu gagal memuat, baris menambahkan `N errors during load. Run /plugin for details.`

629* **`This reload changes MCP tools (...) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply.`**: reload akan menambah atau menghapus server MCP plugin, atau tool `LSP`, dan membatalkan prompt cache Anda. Untuk kasus LSP baris dimulai `This reload adds the LSP tool` atau `This reload removes the LSP tool`. Jalankan dengan `--force` untuk mengaktifkan plugin bagaimanapun, atau mulai sesi baru

630 

631Sebelum v2.1.268, instalasi yang tidak diaktifkan selama instalasi tetap tertunda sampai Anda menjalankan `/reload-plugins` sendiri.

632 

633Sebelum v2.1.246, hitungan skills dalam ringkasan itu hanya termasuk entri `commands/` plugin, jadi reload dapat memuat skills `SKILL.md` plugin dan masih melaporkan `0 skills`.

634 

635<h3 id="plugin-not-cached-at">

636 `Plugin "<name>" not cached at <path>`

637</h3>

638 

639Tab **Errors** menunjukkan baris ini dengan panduan `Run /plugin to refresh the plugin cache`. Claude Code memiliki catatan instalasi untuk plugin, tetapi direktori yang ditunjuk catatan hilang, misalnya setelah Anda menghapus cache.

640 

641Instal ulang plugin dari shell Anda. `claude plugin install <name>@<marketplace>` mengunduh ulang plugin yang direktori instalasi-nya hilang meskipun catatan ada:

642 

643```shell theme={null}

644claude plugin install <name>@<marketplace>

645```

646 

647Kemudian jalankan `/reload-plugins` dalam sesi Anda. Entri tab **Errors** menghilang dan plugin kembali di bawah **Installed**.

648 

649<h3 id="a-plugin-you-disabled-still-loads">

650 `Disabled in ~/.claude/settings.json but still loads`

651</h3>

652 

653Anda menetapkan plugin ke `false` di `~/.claude/settings.json`, dan barisnya di `claude plugin list` atau `/plugin` menunjukkan pesan ini diikuti oleh sumber yang mengaktifkannya, seperti `— project settings enable it, which overrides your user setting`. `true` dalam sumber precedence yang lebih tinggi itu menimpa pengaturan pengguna Anda.

654 

655Untuk opt out dari plugin yang diaktifkan proyek di mesin Anda, atur id ke `false` di `.claude/settings.local.json`, yang memiliki precedence lebih tinggi daripada file proyek. Untuk sumber lain yang pesan dapat beri nama, lihat [Disabled in user settings but still loads](/docs/id/plugins/loading#disabled-in-user-settings-but-still-loads).

656 

657Jika `claude plugin list` malah menandai plugin `required by your org`, tidak ada file pengaturan yang terlibat: organisasi Anda menandai plugin yang disinkronkan itu sebagai diperlukan di claude.ai, dan itu memuat bahkan jika Anda menonaktifkannya sebelumnya. Lihat [Plugins synced from claude.ai](/docs/id/plugins/loading#synced-plugins).

658 

659<h3 id="plugin-is-enabled-in-project-settings-but-isnt-installed-here">

660 `Plugin "<name>" is enabled in project settings but isn't installed here`

661</h3>

662 

663Tab **Errors** menunjukkan baris ini untuk plugin yang `.claude/settings.json` proyek Anda aktifkan, dengan panduan `Run claude plugin install <name>@<marketplace> --scope project to install it for this project`.

664 

665Pengaturan repository dapat mengaktifkan plugin untuk semua orang yang membukanya, tetapi mereka tidak menginstalnya. Ketika plugin berasal dari sumber eksternal seperti repository GitHub atau paket npm, Claude Code tidak mengunduhnya sampai Anda menginstalnya sendiri. Jalankan command dari baris panduan di shell Anda, lalu reload:

666 

667```shell theme={null}

668claude plugin install <name>@<marketplace> --scope project

669```

670 

671Setelah Anda menjalankan `/reload-plugins` dalam sesi Anda, entri tab **Errors** hilang dan plugin tercantum di bawah **Installed**.

672 

673Jika organisasi Anda pre-install plugin untuk Anda, itu melakukannya melalui pengaturan terkelola. Lihat [Pre-install and require plugins](/docs/id/plugins/org#pre-install-and-require-plugins).

674 

675<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">

676 `Failed to load hooks from <path>` and hooks that don't fire

677</h3>

678 

679Hooks plugin tidak berjalan. Baik tab **Errors** menunjukkan kegagalan beban untuk mereka, hooks memuat dan Anda melihat pemberitahuan `<Event> hook error` dalam transkrip, atau hook memuat tanpa kesalahan dan tidak pernah menyala.

680 

681<h4 id="hooks-fail-to-load">

682 Hooks fail to load

683</h4>

684 

685Tab **Errors** menunjukkan salah satu pesan ini:

686 

687* **`Failed to load hooks from <path>: <reason>`**: `hooks/hooks.json` bukan JSON yang valid atau gagal schema hooks. Alasan menyebutkan parse atau kesalahan validasi. Perbaiki file. Untuk menangkap masalah sintaks JSON di `hooks/hooks.json` sebelum Anda menerbitkan plugin, jalankan `claude plugin validate <plugin-directory>` di shell Anda

688* **`hooks path not found: <path>`**: field `hooks` manifest menyebutkan file yang tidak ada di path itu relatif terhadap root plugin. Perbaiki path atau tambahkan file

689 

690<h4 id="hook-error-notices-in-the-transcript">

691 `hook error` notices in the transcript

692</h4>

693 

694Pemberitahuan bentuk `... hook error: Failed with non-blocking status code: <stderr>` berarti hook berjalan dan command-nya gagal. Misalnya, `Stop hook error: Failed with non-blocking status code: /bin/sh: node: command not found` berarti shell yang Claude Code spawn tidak dapat menemukan `node`. Instal, atau pastikan itu ada di `PATH` dari terminal yang Anda mulai `claude` dari.

695 

696Untuk kesalahan lain apa pun, jalankan command hook sendiri dari direktori plugin untuk melihat output lengkap, atau tangkap stderr lengkap dengan [debug logging](/docs/id/hooks#debug-hooks).

697 

698<h4 id="hook-loads-but-never-fires">

699 Hook loads but never fires

700</h4>

701 

702Jika hook memuat tanpa kesalahan tetapi tidak pernah menyala, periksa definisinya lalu tonton itu berjalan:

703 

704<Steps>

705 <Step title="Check the event name">

706 Nama event peka huruf besar-kecil, jadi konfirmasi milik Anda cocok persis, misalnya `PostToolUse`.

707 </Step>

708 

709 <Step title="Check the matcher">

710 Konfirmasi `matcher` hook cocok dengan nama tool.

711 </Step>

712 

713 <Step title="Trigger the event on purpose">

714 Untuk hook `PostToolUse`, minta Claude untuk mengedit file.

715 </Step>

716 

717 <Step title="Read the debug log">

718 Buka [debug log](/docs/id/hooks#debug-hooks), yang mencatat hook mana yang cocok. Hook yang berjalan muncul di sana dengan kode keluar-nya.

719 </Step>

720</Steps>

721 

722<h3 id="invalid-mcp-server-config-for-and-mcp-servers-that-dont-start">

723 `Invalid MCP server config for "<server>"` and MCP servers that don't start

724</h3>

725 

726Plugin menggabungkan server MCP, dan tab **Errors** menunjukkan `Invalid MCP server config for "<server>": <error>`, atau server tercantum tetapi `/mcp` tidak pernah menunjukkannya terhubung.

727 

728<h4 id="invalid-mcp-server-config-for-server-error">

729 `Invalid MCP server config for "<server>": <error>`

730</h4>

731 

732Konfigurasi server melewati pemeriksaan schema, tetapi Claude Code tidak dapat menyelesaikannya untuk sesi ini. Teks setelah titik dua menyebutkan penyebab dan memutuskan perbaikan:

733 

734* **`Missing environment variables: <names>`**: atur variabel itu di shell yang Anda mulai Claude Code dari, lalu mulai sesi baru

735* **`URL is unset or invalid`**: opsi `${user_config.*}` yang URL gunakan tidak diatur. Jalankan `/plugin configure <plugin>` untuk mengaturnya

736* **`has an invalid MCP url`** atau **`headersHelper for MCP server '<server>' references ${user_config.*}`**: konfigurasi plugin itu sendiri yang salah. Perbaiki `url` atau `headersHelper` dalam konfigurasi MCP plugin Anda, atau laporkan ke penulis plugin jika plugin bukan milik Anda. Kasus `headersHelper` memiliki entri sendiri di bawah [plugin command references user\_config](/docs/id/errors#plugin-command-references-user-config)

737 

738<h4 id="server-is-configured-but-never-connects">

739 Server is configured but never connects

740</h4>

741 

742Jalankan `/mcp` untuk melihat status server. Ketika server sehat, `/mcp` mencantumkannya sebagai terhubung.

743 

744Untuk membaca kesalahan yang dicetak server saat memulai, jalankan `claude --debug` dan buka log di `~/.claude/debug/<session-id>.txt`. Flag `--debug` tidak mencetak ke terminal.

745 

746Entri server di `.mcp.json` yang gagal schema tidak muncul di tab **Errors**. Claude Code menjatuhkan server itu dan mencatat `Invalid MCP server config for <server> in <path>` hanya dalam log debug itu. Untuk menemukan entri tanpa memuat plugin, jalankan `claude plugin validate` di shell Anda pada direktori plugin, yang melaporkannya sebagai kesalahan.

747 

748Sebelum v2.1.281, `claude plugin validate` tidak memeriksa `.mcp.json`.

749 

750<h4 id="server-works-with-plugin-dir-but-fails-after-install">

751 Server works with `--plugin-dir` but fails after install

752</h4>

753 

754Anda adalah penulis plugin, dan server dimulai ketika Anda memuat plugin dari direktori sumber-nya dengan `--plugin-dir` tetapi gagal setelah plugin diinstal.

755 

756Claude Code menyalin plugin yang diinstal ke dalam cache-nya, jadi path yang hanya berfungsi dari direktori sumber rusak. Tulis path di dalam plugin dengan `${CLAUDE_PLUGIN_ROOT}`.

757 

758Untuk path yang menjangkau di luar direktori plugin, lihat [Files the plugin references outside its directory aren't found](#files-the-plugin-references-outside-its-directory-arent-found).

759 

760<h3 id="language-server-doesnt-start">

761 Language server doesn't start, uses too much memory, or reports wrong diagnostics

762</h3>

763 

764Anda menginstal [code intelligence plugin](/docs/id/plugins/code-intelligence) dan Claude tidak melihat diagnostik, atau language server menggunakan terlalu banyak memori atau melaporkan kesalahan yang tidak nyata.

765 

766<h4 id="language-server-doesn’t-start">

767 Language server doesn't start

768</h4>

769 

770Plugin terhubung ke binary language server yang Anda instal secara terpisah, dan Claude Code memunculkannya dengan nama command dari `PATH` Anda.

771 

772Tab **Errors** `/plugin` menunjukkan kegagalan dengan alasannya, seperti `Executable not found in $PATH: "<binary>"`, dan `claude --debug` mencatatnya sebagai `LSP server <name> failed to start: <reason>`.

773 

774Instal binary dan konfirmasi itu ada di `PATH` dari terminal yang Anda mulai `claude` dari, misalnya dengan `which typescript-language-server`. Kemudian mulai sesi baru.

775 

776<h4 id="language-server-uses-too-much-memory">

777 Language server uses too much memory

778</h4>

779 

780Language server seperti `rust-analyzer` dan `pyright` mengindeks seluruh proyek. Nonaktifkan plugin dengan `/plugin disable <plugin>` dalam sesi dan andalkan tool pencarian bawaan Claude sebagai gantinya.

781 

782<h4 id="false-positive-diagnostics-in-a-monorepo">

783 False positive diagnostics in a monorepo

784</h4>

785 

786Language server yang tidak dikonfigurasi untuk workspace dapat melaporkan impor yang tidak terselesaikan untuk paket internal. Tidak ada yang perlu diperbaiki di sisi Claude Code, dan diagnostik tidak menghentikan Claude dari mengedit kode.

787 

788<h2 id="build-a-plugin">

789 Build a plugin

790</h2>

791 

792Anda mengembangkan plugin dan memuat dengan `--plugin-dir` atau menginstalnya dari marketplace lokal. Entri ini mencakup kegagalan yang Anda alami saat mengembangkan plugin. Untuk pemeriksaan yang berjalan setelah setiap perubahan, lihat [Test and debug](/docs/id/plugins/create#test-and-debug).

793 

794Dua kegagalan yang juga menjangkau pengguna plugin memiliki entri mereka di bawah [Plugin installed but not working](#plugin-installed-but-not-working):

795 

796* **Hook yang tidak menyala**: lihat [hooks that don't fire](#failed-to-load-hooks-from-and-hooks-that-dont-fire)

797* **Server MCP yang tidak dimulai**: lihat [MCP servers that don't start](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)

798 

799<h3 id="commands-path-not-found">

800 `commands path not found: <path>`

801</h3>

802 

803Tab **Errors** menunjukkan `commands path not found: <absolute path>` dengan panduan `Check that the path in your manifest or marketplace config is correct`. Pesan yang sama muncul untuk `skills`, `agents`, dan `hooks`.

804 

805Claude Code menyelesaikan path dari `plugin.json` Anda atau entri marketplace terhadap root plugin dan menemukan tidak ada di sana. Path dalam pesan adalah path absolut yang diperiksa, jadi bandingkan dengan apa yang ada di disk. Perbaiki path atau buat direktori, lalu jalankan `/reload-plugins`.

806 

807Path dalam manifest relatif terhadap root plugin dan dimulai dengan `./`. Path yang diselesaikan di luar root plugin dilaporkan sebagai `<component> path escapes plugin directory` sebagai gantinya dan dijatuhkan.

808 

809<h3 id="plugin-dir-loads-a-plugin-with-no-components">

810 `--plugin-dir` at a marketplace root doesn't load the plugins under `plugins/`

811</h3>

812 

813Anda memulai `claude --plugin-dir <path>` dan tidak melihat kesalahan, tetapi skills, agents, dan hooks plugin tidak ada.

814 

815`--plugin-dir` mengambil direktori root plugin, yang berisi `.claude-plugin/plugin.json` dan direktori komponen seperti `skills/`. Jika Anda menunjuknya ke root marketplace, Claude Code tidak membaca `marketplace.json`, jadi plugin di bawah `plugins/` tidak memuat, dan Anda tidak melihat kesalahan. Sebelum v2.1.281, Claude Code memuat root marketplace sebagai satu plugin kosong bernama setelah direktori itu. Tunjukkan flag ke direktori plugin itu sendiri:

816 

817```shell theme={null}

818claude --plugin-dir ./my-marketplace/plugins/my-plugin

819```

820 

821Kemudian buka **Installed** di `/plugin`, di mana pane detail plugin mencantumkan komponen-nya.

822 

823<h3 id="files-the-plugin-references-outside-its-directory-arent-found">

824 Files the plugin references outside its directory aren't found

825</h3>

826 

827Plugin berfungsi dari direktori sumber-nya dengan `--plugin-dir` tetapi gagal setelah instalasi, dengan kesalahan tentang path seperti `../shared-utils`.

828 

829Claude Code menyalin plugin yang diinstal ke dalam cache-nya dan memuat dari sana, jadi path yang menjangkau di luar direktori plugin itu sendiri menunjuk pada tidak ada dalam cache. Pindahkan file bersama di dalam direktori plugin, atau referensikan mereka melalui symlink di dalamnya. Untuk di mana cache dan bagaimana path diselesaikan, lihat [Find plugins on disk](/docs/id/plugins/loading#find-plugins-on-disk).

830 

831<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">

832 `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows

833</h3>

834 

835Di Windows, hook plugin menerima `${CLAUDE_PLUGIN_ROOT}` sebagai `C:/Users/you/...` daripada `C:\Users\you\...`, dan script yang mengharapkan backslash rusak.

836 

837Claude Code menjalankan hook bentuk shell melalui Git Bash di Windows dan mengganti root plugin dalam bentuk Win32 forward-slash dengan tujuan. Bash builtins, alat MSYS, dan binary Windows asli semuanya menerima bentuk itu.

838 

839Jika script Anda membutuhkan backslash, alihkan hook ke salah satu bentuk yang menyimpan path asli, dijelaskan di bawah [exec form and shell form](/docs/id/hooks#exec-form-and-shell-form):

840 

841* Hook bentuk exec, yang memunculkan proses langsung dengan array `args`

842* Hook dengan `"shell": "powershell"`

843 

844<h3 id="plugin-loads-but-its-skills-are-missing">

845 Plugin loads but its skills are missing

846</h3>

847 

848Plugin Anda tercantum di bawah **Installed** tanpa kesalahan, tetapi skills-nya tidak ditawarkan ketika Anda mengetik `/`.

849 

850Skills memuat dari `skills/` di root plugin dan command dari `commands/` di root plugin. Hanya `plugin.json` yang termasuk di dalam `.claude-plugin/`, dan direktori `skills/` di dalam `.claude-plugin/` tidak dipindai. Pindahkan direktori ke root plugin dan jalankan `/reload-plugins`. Setelah itu, pane detail plugin di `/plugin` mencantumkan skills, dan mengetik `/` menawarkan mereka.

851 

852Setiap skill adalah direktori yang berisi `SKILL.md`. Entri `skills` dalam manifest yang menunjuk pada file `SKILL.md` daripada direktorinya dilaporkan sebagai `path is a file; skills entries must be directories containing SKILL.md`.

853 

854<h3 id="skill-loads-but-claude-never-invokes-the-skill">

855 Skill loads but Claude never invokes the skill

856</h3>

857 

858Skill plugin Anda berjalan ketika Anda mengetik command `/<plugin>:<skill>` nya, tetapi Claude tidak pernah memanggilnya sebagai respons terhadap permintaan biasa.

859 

860Periksa penyebab ini secara berurutan:

861 

862* **Skill menetapkan `disable-model-invocation: true`**: dengan field itu diatur, hanya Anda yang dapat memanggil skill. Template skill di [Create your first plugin](/docs/id/plugins/create#create-your-first-plugin) mengaturnya. Hapus baris dari skill yang ingin Claude panggil sendiri. [Control who invokes a skill](/docs/id/skills#control-who-invokes-a-skill) mencakup field

863* **Deskripsi tidak cocok dengan cara orang bertanya**: kerjakan pemeriksaan di [Skill not triggering](/docs/id/skills#skill-not-triggering)

864* **Deskripsi dipotong**: ketika banyak skills diinstal, Claude Code memendekkan deskripsi agar sesuai dengan anggaran karakter daftar, yang dapat menghapus kata kunci yang Claude butuhkan untuk mencocokkan permintaan. Lihat [Skill descriptions are cut short](/docs/id/skills#skill-descriptions-are-cut-short)

865 

866Untuk mengukur seberapa sering skill memicu di seluruh prompt realistis daripada memeriksa satu per satu, tulis kasus eval dengan [grader `tool_used: Skill`](/docs/id/plugin-evals#create-your-first-eval-suite) dan jalankan dengan `claude plugin eval` setelah setiap perubahan deskripsi.

867 

868<h3 id="is-not-a-plugin-or-skill-folder">

869 `<directory> is not a plugin or skill folder` from `claude plugin eval init`

870</h3>

871 

872Anda menjalankan `claude plugin eval init` dari direktori yang bukan root plugin, seperti direktori home Anda atau root repository yang menyimpan plugin dalam subdirektori. `init` menulis suite di bawah direktori kerja, jadi itu berhenti alih-alih membuat direktori `evals/` yang plugin tidak akan pernah lihat.

873 

874Ubah ke root plugin, direktori yang menyimpan `.claude-plugin/plugin.json` atau `SKILL.md` skill, dan jalankan command lagi. Untuk scaffold suite di tempat lain dengan tujuan, lewatkan `--eval-dir`. Lihat [Test plugins with evals](/docs/id/plugin-evals).

875 

876<h3 id="the-userconfig-dialog-never-appears">

877 The `userConfig` dialog never appears

878</h3>

879 

880Plugin Anda mendeklarasikan opsi `userConfig`, tetapi tidak ada dialog konfigurasi yang muncul ketika Anda menginstalnya.

881 

882Instalasi interaktif menunjukkan dialog, dan command shell mengambil nilai sebagai flag:

883 

884* **`/plugin install` dalam sesi, atau tab Discover di `/plugin`**: dialog adalah bagian dari instalasi interaktif ini

885* **`claude plugin install` di shell Anda**: tidak pernah meminta nilai `userConfig`. Itu menyimpan nilai `--config KEY=VALUE` apa pun yang Anda lewatkan, dan ketika opsi tetap tidak diatur itu mencetak `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Ketika salah satu opsi yang tidak diatur diperlukan, `(M required)` mengikuti `not yet set`.

886 

887Jika Anda menginstal dari shell, lewatkan nilai dengan `--config`, satu flag per opsi:

888 

889```shell theme={null}

890claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

891```

892 

893Ketika setiap opsi diatur, output instalasi tidak membawa baris `not yet set`. Untuk membuka dialog setelahnya, jalankan `/plugin configure my-plugin@my-marketplace` dalam sesi.

894 

895Jika Anda melewatkan kunci `--config` yang manifest tidak deklarasikan, plugin masih diinstal, dan command mencetak `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` diikuti oleh kunci yang plugin deklarasikan.

896 

897<h3 id="claude-plugin-validate-reports-errors">

898 `claude plugin validate` reports errors

899</h3>

900 

901Anda menjalankan `claude plugin validate <path>`, atau `/plugin validate <path>` dalam sesi, dan itu mencetak `Found N errors` dan `Validation failed`, lalu keluar dengan kode 1.

902 

903Validator membaca manifest di path yang Anda berikan: `.claude-plugin/plugin.json` untuk direktori plugin, atau `.claude-plugin/marketplace.json` untuk direktori marketplace. Untuk marketplace, itu memprefiks masalah dalam manifest entri sendiri dengan indeks entri, sebagai `plugins[1] plugin.json → json: ...`.

904 

905Tabel mencakup pesan yang menghentikan validasi dan dua peringatan, `No frontmatter block found` dan `Unknown field '<key>'`, yang menghentikannya hanya ketika Anda melewatkan `--strict`. Peringatan lain, seperti deskripsi yang hilang, tidak tercantum.

906 

907| Pesan | Penyebab | Perbaikan |

908| :------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

909| `File not found: <path>` | Path tidak memiliki manifest, atau tidak ada. | Jalankan command terhadap root plugin atau marketplace, direktori yang berisi `.claude-plugin/`. |

910| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | Direktori tidak memiliki manifest `.claude-plugin/`. | Buat manifest, atau tunjuk ke direktori yang benar. |

911| `Invalid JSON syntax: <parse error>` | Manifest, atau `hooks/hooks.json`, bukan JSON yang valid. | Perbaiki JSON. Sampai Anda memperbaiki `hooks/hooks.json`, sesi memuat plugin tanpa hooks dalam file itu. |

912| `Path not found: <path>. The runtime loader will report this as a load failure.` | Path komponen dalam manifest tidak ada. | Perbaiki path atau buat direktori. |

913| `Path contains ".." which could be a path traversal attempt: <path>` | Path komponen melarikan diri dari direktori plugin. | Gunakan path di dalam root plugin. |

914| `Path is a file; skills entries must be directories containing SKILL.md` | Entri `skills` menunjuk pada `SKILL.md` alih-alih direktorinya. | Tunjuk ke direktori induk, atau `.` untuk `SKILL.md` tingkat root. |

915| `No frontmatter block found` atau `YAML frontmatter failed to parse: <error>` | File skill, agent, atau command memiliki frontmatter YAML yang hilang atau tidak valid. | Tambahkan atau perbaiki frontmatter antara pembatas `---`. Dilaporkan saat memvalidasi direktori plugin. |

916| `Unknown field '<key>'` | Manifest memiliki field yang schema tidak tentukan. | Hapus, atau gunakan nama yang pesan sarankan. Claude Code mengabaikan field yang tidak dikenal pada waktu beban. |

917 

918Jalankan command lagi setelah setiap perbaikan sampai itu mencetak tidak ada kesalahan.

919 

920Field `plugin.json` ada di [manifest reference](/docs/id/plugins/manifest-reference), dan pesan tingkat marketplace ada di bawah [Marketplace validation errors](#marketplace-validation-errors).

921 

922<h3 id="plugin-has-conflicting-manifests">

923 `Plugin <name> has conflicting manifests`

924</h3>

925 

926Plugin gagal memuat dengan `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`

927 

928Plugin memiliki `plugin.json` sendiri, dan entri marketplace-nya menetapkan `strict: false` sambil juga mendeklarasikan salah satu dari `commands`, `agents`, `skills`, `hooks`, `outputStyles`, atau `themes`. Hapus field itu dari entri, atau atur `strict: true` dalam entri sehingga Claude Code menambahkannya ke `plugin.json`. Lihat [Strict mode](/docs/id/plugins/marketplace-reference#strict-mode).

929 

930<h3 id="warning-no-commands-found-in-plugin-custom-directory">

931 `Warning: No commands found in plugin <name> custom directory`

932</h3>

933 

934Ketika plugin memuat, log `claude --debug` di `~/.claude/debug/<session-id>.txt` mencatat `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Tidak ada yang muncul dalam sesi atau tab **Errors**.

935 

936Path `commands` dalam manifest ada tetapi tidak menyimpan file `.md` dan tidak ada `SKILL.md` dalam subdirektori. Tambahkan file command, atau hapus path dari manifest.

937 

938<h2 id="host-a-marketplace">

939 Host a marketplace

940</h2>

941 

942Anda menerbitkan marketplace dan pengguna melaporkan kesalahan, atau validasi Anda sendiri gagal. Entri ini untuk pemilik marketplace.

943 

944<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

945 Plugins with relative paths fail in URL-based marketplaces

946</h3>

947 

948Pengguna menambahkan marketplace Anda dengan URL `https://example.com/marketplace.json`. Instalasi plugin yang `source` adalah path relatif, seperti `./plugins/my-plugin`, gagal dengan `its marketplace entry path does not stay inside the marketplace directory`. Plugin yang sudah diinstal gagal memuat dengan `Plugin source path refused`. Kedua pesan memiliki [entri referensi kesalahan](/docs/id/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

949 

950Ketika pengguna menambahkan marketplace berbasis URL, Claude Code hanya mengunduh file `marketplace.json` itu sendiri. Itu tidak mengambil file plugin dengan path relatif dari server itu, jadi path relatif dalam entri menunjuk pada direktori yang tidak pernah diambil. Berikan setiap entri sumber yang Claude Code dapat ambil sendiri, seperti repository GitHub:

951 

952```json theme={null}

953{ "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

954```

955 

956Atau, host marketplace dalam repository git dan beri tahu pengguna untuk menambahkannya dengan URL repository. Untuk sumber git, Claude Code mengklon seluruh repository, jadi path relatif diselesaikan. Tipe sumber ada di [marketplace reference](/docs/id/plugins/marketplace-reference).

957 

958<h3 id="marketplace-validation-errors">

959 Marketplace validation errors

960</h3>

961 

962Anda menjalankan `claude plugin validate .` dari direktori marketplace Anda dan itu melaporkan kesalahan atau peringatan pada file marketplace itu sendiri.

963 

964`claude plugin validate` juga memvalidasi setiap entri yang `source` adalah path lokal dan memperingatkan ketika `version` entri tidak setuju dengan manifest plugin itu sendiri.

965 

966Tabel mencantumkan pesan tingkat marketplace. Pesan tingkat entri adalah pesan plugin di bawah [`claude plugin validate` reports errors](#claude-plugin-validate-reports-errors), diprefiks dengan `plugins[N] plugin.json →`.

967 

968| Pesan | Jenis | Perbaikan |

969| :-------------------------------------------------------------------------------------------------------------------------- | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------- |

970| `Duplicate plugin name "<name>" found in marketplace` | Kesalahan | Berikan setiap plugin `name` yang unik. |

971| `Path contains "..": <path>` di bawah `plugins[N].source` | Kesalahan | Gunakan path relatif terhadap root marketplace tanpa segmen `..`. |

972| `Marketplace name cannot contain control or bidirectional-formatting characters` | Kesalahan | Hapus karakter dari nama, seperti escape atau newline. |

973| `Plugin name cannot contain control or bidirectional-formatting characters` | Kesalahan | Hapus karakter dari plugin `name`. |

974| `Marketplace has no plugins defined` | Peringatan | Tambahkan setidaknya satu entri ke `plugins`. |

975| `No marketplace description provided` | Peringatan | Tambahkan `description` tingkat atas. |

976| `Plugin name "<name>" is not kebab-case` di bawah `plugins[N] plugin.json → name` | Peringatan | Ganti nama ke huruf kecil, digit, dan tanda hubung. Claude Code menerima bentuk lain, tetapi sinkronisasi marketplace claude.ai menolaknya. |

977| `Entry declares version "<a>" but <path>/plugin.json says "<b>"` | Peringatan | Perbarui entri agar cocok dengan `plugin.json`, yang otoritatif pada waktu instalasi. |

978| `Marketplace name "<name>" is reserved in Claude Desktop` | Peringatan | Ganti nama marketplace. Sinkronisasi marketplace terkelola Claude Desktop menolak `org`, `org-provisioned`, dan `unknown` dalam casing apa pun. |

979| `Marketplace name "<name>" is not accepted by Claude Desktop` atau `Plugin name "<name>" is not accepted by Claude Desktop` | Peringatan | Ganti nama ke paling banyak 128 karakter huruf, digit, `.`, `_`, dan `-`, dimulai dengan huruf atau digit. |

980 

981Sebelum v2.1.247, nama marketplace yang berisi karakter kontrol atau bidirectional-formatting dilaporkan hanya sebagai `Marketplace name impersonates an official Anthropic/Claude marketplace`.

982 

983<h2 id="blocked-by-your-organization">

984 Blocked by your organization

985</h2>

986 

987Organisasi Anda menerapkan pengaturan terkelola yang membatasi plugin, dan command ditolak dengan pesan kebijakan. Entri ini menyebutkan pengaturan di balik setiap penolakan sehingga Anda tahu apa yang harus diminta administrator Anda. Untuk sisi admin, lihat [Manage plugins for your organization](/docs/id/plugins/org).

988 

989<h3 id="marketplace-source-is-blocked-by-enterprise-policy">

990 `Marketplace source '<source>' is blocked by enterprise policy`

991</h3>

992 

993Anda menjalankan `/plugin marketplace add`, `update`, atau instalasi, dan Claude Code menolak dengan baris ini. Untuk sumber GitHub atau git, host mengikuti sumber dalam tanda kurung, seperti dalam `'github:owner/repo' (github.com)`.

994 

995Administrator Anda menetapkan `blockedMarketplaces` atau `strictKnownMarketplaces` dalam pengaturan terkelola, dan sumber ini tidak diizinkan. Minta administrator Anda untuk mengizinkan sumber, atau tambahkan salah satu sumber yang diizinkan yang pesan cantumkan.

996 

997Cocokkan sisa pesan untuk melihat jenis kebijakan apa yang memblokir sumber:

998 

999* **`Allowed sources: <list>`**: blok berasal dari allowlist `strictKnownMarketplaces` daripada blocklist `blockedMarketplaces`

1000* **`No external marketplaces are allowed.`**: allowlist `strictKnownMarketplaces` kosong

1001* **`Tip:` bahwa shorthand mengasumsikan github.com**: allowlist mengizinkan host git dengan hostname, dan shorthand `owner/repo` yang Anda lewatkan menunjuk pada github.com. Jika repository tinggal di host internal Anda, tambahkan lagi dengan URL lengkapnya, seperti `git@your-git-host.com:owner/repo.git`

1002 

1003Marketplace yang Anda tambahkan sebelum kebijakan menjadi lebih ketat berhenti merefresh juga, karena kebijakan berlaku pada setiap refresh.

1004 

1005<h3 id="marketplace-is-not-in-the-allowed-marketplace-list">

1006 `Marketplace "<name>" is not in the allowed marketplace list`

1007</h3>

1008 

1009Tab **Errors** menunjukkan baris ini, atau `Marketplace "<name>" is blocked by enterprise policy`, untuk marketplace yang sudah Anda daftarkan.

1010 

1011Pengaturan terkelola yang sama yang memblokir [marketplace source](#marketplace-source-is-blocked-by-enterprise-policy) berlaku pada waktu beban. `strictKnownMarketplaces` tidak termasuk marketplace ini, atau `blockedMarketplaces` menyebutkannya, jadi Claude Code berhenti memuat dan plugin-nya. Untuk varian allowlist, baris panduan menunjukkan sumber yang diizinkan, atau `Contact your administrator to configure allowed marketplace sources`. Untuk varian blocklist itu berbunyi `This marketplace source is explicitly blocked by your administrator`.

1012 

1013<h3 id="plugin-is-blocked-by-your-organizations-policy-and-cannot-be-installed">

1014 `Plugin "<name>" is blocked by your organization's policy and cannot be installed`

1015</h3>

1016 

1017Instalasi ditolak dengan baris ini, enable dengan baris yang sama berakhir `cannot be enabled`, atau instalasi atau update dengan satu yang menyebutkan alasan: `Plugin "<name>" is from marketplace "<marketplace>", which is blocked by your organization's policy`, atau `Plugin "<name>" depends on "<dep>", which is blocked by your organization's policy`.

1018 

1019Pengaturan terkelola memblokir plugin ini, marketplace-nya, atau dependensi yang dibutuhkannya. Tanyakan administrator Anda entri mana yang berlaku. Dependensi yang diblokir berarti plugin tidak dapat diinstal sampai marketplace dependensi diizinkan.

1020 

1021<h3 id="plugin-dir-is-disabled-by-your-organizations-managed-settings-disables">

1022 `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

1023</h3>

1024 

1025Anda memulai `claude` dengan `--plugin-dir`, `--plugin-url`, `--agents`, atau `--mcp-config`. Claude Code keluar dengan pesan ini dan `Plugins, custom agents, and MCP servers can only be loaded from sources your administrator has approved.`

1026 

1027Administrator Anda menetapkan `disableSideloadFlags` dalam pengaturan terkelola, yang mematikan flag yang memuat plugin, agents, dan server dari path arbitrer. Muat plugin dari marketplace yang disetujui, atau minta administrator Anda untuk menghapus pengaturan.

1028 

1029Pesan terkait di tab **Errors** `/plugin` adalah `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`. Pengaturan terkelola mengaktifkan atau menonaktifkan plugin itu berdasarkan nama, dan Claude Code mengabaikan salinan `--plugin-dir` Anda sehingga flag tidak dapat menimpa kebijakan.

1030 

1031<h3 id="plugins-from-claude-skills-are-blocked-by-your-organizations-managed-s">

1032 `Plugins from ~/.claude/skills/ are blocked by your organization's managed settings`

1033</h3>

1034 

1035Anda menjalankan `claude plugin init` atau `claude plugin enable`, dan itu berhenti dengan baris ini. Pesan menyebutkan `strictKnownMarketplaces or blockedMarketplaces` dan meminta administrator Anda untuk menambahkan `{"source":"skills-dir"}` ke `strictKnownMarketplaces` atau menghapusnya dari `blockedMarketplaces`.

1036 

1037Sumber `skills-dir` berdiri untuk plugin yang Claude Code muat dari direktori `~/.claude/skills/` Anda. Minta administrator Anda untuk membuat perubahan yang pesan sebutkan.

1038 

1039<h3 id="command-sourced-plugins-are-disabled-by-your-organizations-managed-set">

1040 `Command-sourced plugins are disabled by your organization's managed settings`

1041</h3>

1042 

1043Anda menginstal atau memperbarui plugin dengan sumber `command`, dan itu berhenti dengan baris ini dan `The plugin was not installed or updated and its command was not run.`

1044 

1045Administrator Anda menetapkan `disableCommandPluginSources`, jadi Claude Code menolak untuk menjalankan command yang dideklarasikan marketplace yang menghasilkan plugin. Menetapkan `allowManagedHooksOnly` saja memiliki efek yang sama ketika `disableCommandPluginSources` tidak diatur. Tanyakan administrator Anda apakah plugin dapat diterbitkan dari tipe sumber yang kebijakan izinkan.

1046 

1047<h3 id="marketplace-is-seed-managed">

1048 `Marketplace '<name>' is seed-managed`

1049</h3>

1050 

1051Anda menjalankan `claude plugin marketplace update <name>`, dan itu gagal dengan `Marketplace '<name>' is seed-managed (<dir>)` dan hint untuk meminta admin Anda.

1052 

1053Operator pre-populated marketplace ini melalui `CLAUDE_CODE_PLUGIN_SEED_DIR`, dan Claude Code memperlakukan marketplace yang seed-managed sebagai read-only. `marketplace update` massal melewatinya dan memperbarui yang lain.

1054 

1055Untuk mengubah konten marketplace, minta orang yang memelihara gambar seed untuk memperbaruinya. Untuk prosedurnya, lihat [Seed containers and CI](/docs/id/plugins/org#seed-containers-and-ci).

1056 

1057<h2 id="next-steps">

1058 Next steps

1059</h2>

1060 

1061* [Plugin loading reference](/docs/id/plugins/loading): mengapa scope, cache, dan precedence berperilaku seperti yang mereka lakukan

1062* [Plugin commands reference](/docs/id/plugins/cli-reference): flag, default, output, dan exit code untuk command `claude plugin`

1063* [Install and manage plugins](/docs/id/plugins/install): langkah instalasi dari awal

1064* [Manage plugins for your organization](/docs/id/plugins/org#troubleshoot-policy): troubleshooting sisi kebijakan untuk administrator

Details

135 Enabling or disabling a plugin135 Enabling or disabling a plugin

136</h3>136</h3>

137 137 

138Ketika Anda mengaktifkan atau menonaktifkan [plugin](/docs/id/plugins), apa yang perubahan biaya tergantung pada jenis komponen apa yang disediakan plugin. Kasus-kasus di bawah mencakup setiap jenis komponen, kapan Claude Code menerapkan perubahan, dan apa yang terjadi ketika Anda menonaktifkan plugin lagi dalam sesi yang sama.138Ketika Anda mengaktifkan atau menonaktifkan [plugin](/docs/id/plugins/overview), apa yang perubahan biaya tergantung pada jenis komponen apa yang disediakan plugin. Kasus-kasus di bawah mencakup setiap jenis komponen, kapan Claude Code menerapkan perubahan, dan apa yang terjadi ketika Anda menonaktifkan plugin lagi dalam sesi yang sama.

139 139 

140<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">

141 Plugin components that keep the cache141 Plugin components that keep the cache


147 Plugins that provide MCP servers147 Plugins that provide MCP servers

148</h4>148</h4>

149 149 

150Ketika Anda mengaktifkan atau menonaktifkan plugin yang menyediakan [MCP servers](/docs/id/plugins-reference#mcp-servers), Claude Code mengikuti aturan yang sama seperti ketika Anda [connect or disconnect an MCP server](#connecting-or-disconnecting-an-mcp-server):150Ketika Anda mengaktifkan atau menonaktifkan plugin yang menyediakan [MCP servers](/docs/id/plugins/components#mcp-servers), Claude Code mengikuti aturan yang sama seperti ketika Anda [connect or disconnect an MCP server](#connecting-or-disconnecting-an-mcp-server):

151 151 

152* Jika Claude Code menunda tools server, itu menjaga cache.152* Jika Claude Code menunda tools server, itu menjaga cache.

153* Jika Claude Code memuatnya ke dalam prefiks, permintaan berikutnya membaca ulang seluruh percakapan.153* Jika Claude Code memuatnya ke dalam prefiks, permintaan berikutnya membaca ulang seluruh percakapan.


156 Code intelligence plugins156 Code intelligence plugins

157</h4>157</h4>

158 158 

159Ketika Anda mengaktifkan [code intelligence plugin](/docs/id/discover-plugins#code-intelligence), Claude mendapatkan [LSP tool](/docs/id/tools-reference#lsp-tool-behavior).159Ketika Anda mengaktifkan [code intelligence plugin](/docs/id/plugins/code-intelligence), Claude mendapatkan [LSP tool](/docs/id/tools-reference#lsp-tool-behavior).

160 160 

161<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">

162 When plugin changes apply162 When plugin changes apply

163</h4>163</h4>

164 164 

165Perubahan yang Anda buat di menu `/plugin` melalui [`/reload-plugins`](/docs/id/discover-plugins#apply-plugin-changes-without-restarting), yang Claude Code jalankan untuk Anda ketika Anda menutup menu. Anda membayar biaya, apakah pengumuman yang ditambahkan atau pembacaan ulang penuh, pada putaran pertama setelah perubahan diterapkan. Claude Code juga dapat menerapkan perubahan dengan sendirinya:165Perubahan yang Anda buat di menu `/plugin` melalui [`/reload-plugins`](/docs/id/plugins/cli-reference#reload-plugins), yang Claude Code jalankan untuk Anda ketika Anda menutup menu. Anda membayar biaya, apakah pengumuman yang ditambahkan atau pembacaan ulang penuh, pada putaran pertama setelah perubahan diterapkan. Claude Code juga dapat menerapkan perubahan dengan sendirinya:

166 166 

167* Untuk plugin dengan sumber `command`, Claude Code [can reload the plugin itself](/docs/id/plugin-marketplaces#when-claude-code-re-runs-the-command).167* Untuk plugin dengan sumber `command`, Claude Code [can reload the plugin itself](/docs/id/plugins/loading#when-a-command-source-re-runs).

168* Ketika Anda [install a plugin from the `/plugin` interface](/docs/id/discover-plugins#install-plugins), Claude Code dapat mengaktifkannya selama instalasi. Ringkasan instalasi memberi tahu Anda apakah itu dilakukan.168* Ketika Anda [install a plugin from the `/plugin` interface](/docs/id/plugins/install#install-a-plugin), Claude Code dapat mengaktifkannya selama instalasi. Ringkasan instalasi memberi tahu Anda apakah itu dilakukan.

169* Ketika Anda [move the session with `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menerapkan plugin yang diaktifkan pengaturan direktori baru sebagai bagian dari perpindahan, tanpa peringatan pembacaan ulang penuh yang menahan `/reload-plugins`.169* Ketika Anda [move the session with `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menerapkan plugin yang diaktifkan pengaturan direktori baru sebagai bagian dari perpindahan, tanpa peringatan pembacaan ulang penuh yang menahan `/reload-plugins`.

170* Dalam sesi interaktif, ketika Anda menambah atau menghapus plugin dalam [folder of plugins](/docs/id/plugins#test-your-plugins-locally) yang Anda lewatkan dengan `--plugin-dir`, perubahan diterapkan segera. Jika menerapkannya akan memicu pembacaan ulang penuh, Claude Code menahan perubahan sebagai gantinya dan menampilkan pemberitahuan untuk menjalankan `/reload-plugins`. Memerlukan Claude Code v2.1.265 atau lebih baru.170* Dalam sesi interaktif, ketika Anda menambah atau menghapus plugin dalam [folder of plugins](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) yang Anda lewatkan dengan `--plugin-dir`, perubahan diterapkan segera. Jika menerapkannya akan memicu pembacaan ulang penuh, Claude Code menahan perubahan sebagai gantinya dan menampilkan pemberitahuan untuk menjalankan `/reload-plugins`. Memerlukan Claude Code v2.1.265 atau lebih baru.

171 171 

172Ketika `/reload-plugins` berjalan dan reload akan memicu pembacaan ulang penuh, Claude Code menampilkan peringatan dan tidak menerapkan reload. Jalankan `/reload-plugins --force` untuk menerapkannya bagaimanapun.172Ketika `/reload-plugins` berjalan dan reload akan memicu pembacaan ulang penuh, Claude Code menampilkan peringatan dan tidak menerapkan reload. Jalankan `/reload-plugins --force` untuk menerapkannya bagaimanapun.

173 173 

174`/reload-plugins` juga berjalan dalam sesi tanpa terminal interaktif, seperti aplikasi desktop, Agent SDK, dan [non-interactive mode](/docs/id/headless) dengan `-p`, ketika Anda mengetiknya langsung ke sesi. Memerlukan Claude Code v2.1.260 atau lebih baru.174`/reload-plugins` juga berjalan dalam sesi tanpa terminal interaktif, seperti aplikasi desktop, Agent SDK, dan [non-interactive mode](/docs/id/headless) dengan `-p`, ketika Anda mengetiknya langsung ke sesi. Memerlukan Claude Code v2.1.260 atau lebih baru.

175 175 

176Dalam sesi-sesi itu reload menerapkan semuanya kecuali perubahan MCP server plugin, yang [take effect in your next session](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) dan jadi tidak pernah biaya pembacaan ulang penuh di tengah sesi.176Dalam sesi-sesi itu reload menerapkan semuanya kecuali perubahan MCP server plugin, yang [take effect in your next session](/docs/id/plugins/cli-reference#reload-plugins) dan jadi tidak pernah biaya pembacaan ulang penuh di tengah sesi.

177 177 

178<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">

179 Plugins you enable and then disable in one session179 Plugins you enable and then disable in one session

Details

626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };627 };

628 }, []);628 }, []);

629 const SAFE_HREF = /^(\/(?![\/\\\s])|#|https?:\/\/)/;

629 const linkify = s => {630 const linkify = s => {

630 const out = [];631 const out = [];

631 let last = 0;632 let last = 0;

632 const re = /\[([^\]]+)\]\(([^)]+)\)/g;633 const re = /\[([^\]]+)\]\(([^)]+)\)/g;

633 for (let m; m = re.exec(s); ) {634 for (let m; m = re.exec(s); ) {

634 if (m.index > last) out.push(s.slice(last, m.index));635 if (m.index > last) out.push(s.slice(last, m.index));

635 out.push(<a key={m.index} href={doc(m[2])}>{m[1]}</a>);636 out.push(SAFE_HREF.test(m[2]) ? <a key={m.index} href={doc(m[2])}>{m[1]}</a> : m[1]);

636 last = re.lastIndex;637 last = re.lastIndex;

637 }638 }

638 if (last < s.length) out.push(s.slice(last));639 if (last < s.length) out.push(s.slice(last));


776 </div>777 </div>

777 <div className="pl-label">{L.whyWorks}</div>778 <div className="pl-label">{L.whyWorks}</div>

778 <div className="pl-teaches">{linkify(p.teaches)}</div>779 <div className="pl-teaches">{linkify(p.teaches)}</div>

779 {p.nextHref && p.next && <div className="pl-next">780 {p.nextHref && p.next && SAFE_HREF.test(p.nextHref) && <div className="pl-next">

780 <span className="pl-next-label">{L.makeItStick}</span>781 <span className="pl-next-label">{L.makeItStick}</span>

781 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>782 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>

782 </div>}783 </div>}

Details

252<Note>252<Note>

253 Perangkat Terpercaya saat ini dalam beta. Fitur dan fungsionalitas dapat berkembang seiring pengalaman disempurnakan.253 Perangkat Terpercaya saat ini dalam beta. Fitur dan fungsionalitas dapat berkembang seiring pengalaman disempurnakan.

254 254 

255 Perangkat Terpercaya tersedia di paket Tim dan Enterprise. Ini dimatikan secara default sampai Pemilik mengaktifkannya.255 Perangkat Terpercaya tersedia di paket Pro, Max, Tim, dan Enterprise dan dimatikan secara default. Di paket Tim dan Enterprise, Pemilik mengaktifkannya untuk organisasi. Di paket Pro dan Max, Anda mengaktifkan **Require trusted devices** sendiri di pengaturan Anda, di halaman Cowork atau Account.

256</Note>256</Note>

257 257 

258Perangkat Terpercaya adalah pengaturan seluruh organisasi yang memerlukan anggota untuk memverifikasi perangkat mereka sebelum mereka dapat melihat atau mengarahkan sesi Remote Control dari claude.ai, aplikasi Claude mobile, atau Claude Desktop. Ini mengikat akses Remote Control ke perangkat yang dikenal dan autentikasi terbaru, bukan hanya akun yang masuk.258Perangkat Terpercaya memerlukan setiap anggota organisasi Anda, atau Anda sendiri di paket Pro atau Max, untuk memverifikasi perangkat mereka sebelum mereka dapat melihat atau mengarahkan sesi Remote Control dari claude.ai, aplikasi Claude mobile, atau Claude Desktop. Ini mengikat akses Remote Control ke perangkat yang dikenal dan autentikasi terbaru, bukan hanya akun yang masuk.

259 259 

260Ketika pengaturan aktif, berinteraksi dengan sesi Remote Control memerlukan keduanya:260Ketika pengaturan aktif, berinteraksi dengan sesi Remote Control memerlukan keduanya:

261 261 


267Pengaturan hanya berlaku untuk Remote Control. Obrolan Claude biasa, Claude Code di terminal, dan penggunaan API tidak terpengaruh.267Pengaturan hanya berlaku untuk Remote Control. Obrolan Claude biasa, Claude Code di terminal, dan penggunaan API tidak terpengaruh.

268 268 

269<h3 id="enable-trusted-devices-for-your-organization">269<h3 id="enable-trusted-devices-for-your-organization">

270 Aktifkan Perangkat Terpercaya untuk organisasi Anda270 Aktifkan Perangkat Terpercaya untuk organisasi Tim atau Enterprise

271</h3>271</h3>

272 272 

273Pemilik mengaktifkan pengaturan dari konsol admin Claude Code.273Pemilik mengaktifkan pengaturan dari pengaturan organisasi claude.ai.

274 274 

275<Steps>275<Steps>

276 <Step title="Buka pengaturan admin Claude Code">276 <Step title="Buka halaman Capabilities">

277 Buka [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Toggle **Require trusted devices** muncul di bawah pengaturan Remote Control.277 Buka [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Toggle **Require trusted devices** muncul di bagian itu.

278 </Step>278 </Step>

279 279 

280 <Step title="Aktifkan Require trusted devices">280 <Step title="Aktifkan Require trusted devices">

sandboxing.md +2 −2

Details

147* Aturan `Bash` ask yang kosong, atau bentuk setara `Bash(*)`, dilewati untuk perintah yang berjalan sandboxed; masih berlaku untuk perintah yang kembali ke alur izin reguler. Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), aturan tidak dilewati: itu meminta perintah sandboxed juga, termasuk yang hanya-baca. Sebelum v2.1.212, skip berlaku dalam plan mode juga147* Aturan `Bash` ask yang kosong, atau bentuk setara `Bash(*)`, dilewati untuk perintah yang berjalan sandboxed; masih berlaku untuk perintah yang kembali ke alur izin reguler. Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), aturan tidak dilewati: itu meminta perintah sandboxed juga, termasuk yang hanya-baca. Sebelum v2.1.212, skip berlaku dalam plan mode juga

148 148 

149<Info>149<Info>

150 Mode auto-allow bekerja secara independen dari pengaturan mode izin Anda, kecuali dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) dan, dalam mode auto, untuk perintah yang membawa [per-command allowed domains](#per-command-allowed-domains-in-auto-mode). Bahkan jika Anda tidak dalam mode "accept edits", perintah Bash sandboxed berjalan secara otomatis ketika auto-allow diaktifkan. Ini berarti perintah Bash yang memodifikasi file dalam batas sandbox dieksekusi tanpa prompt, bahkan dalam mode Manual, di mana alat edit file akan meminta.150 Mode auto-allow bekerja secara independen dari pengaturan mode izin Anda, dengan tiga pengecualian: [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), perintah mode auto yang membawa [per-command allowed domains](#per-command-allowed-domains-in-auto-mode), dan [server-side classifier review](/docs/id/permission-modes#how-the-classifier-evaluates-actions) dari perintah sandboxed dalam mode auto. Bahkan jika Anda tidak dalam mode "accept edits", perintah Bash sandboxed berjalan secara otomatis ketika auto-allow diaktifkan. Ini berarti perintah Bash yang memodifikasi file dalam batas sandbox dieksekusi tanpa prompt, bahkan dalam mode Manual, di mana alat edit file akan meminta.

151 151 

152 Dalam plan mode, auto-allow tidak memperluas persetujuan; lihat [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk bagaimana Claude Code membatasi perintah saat Anda merencanakan. Sebelum v2.1.212, auto-allow menjalankan perintah sandboxed tanpa prompt dalam plan mode juga.152 Dalam plan mode, auto-allow tidak memperluas persetujuan; lihat [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk bagaimana Claude Code membatasi perintah saat Anda merencanakan. Sebelum v2.1.212, auto-allow menjalankan perintah sandboxed tanpa prompt dalam plan mode juga.

153</Info>153</Info>


318 Lindungi kredensial318 Lindungi kredensial

319</h3>319</h3>

320 320 

321Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan variabel lingkungan yang harus dilindungi dari perintah sandboxed. Setiap entri memberi nama jalur file atau variabel lingkungan dan `mode`. Blok `credentials` khusus menjaga aturan kredensial dikelompokkan bersama dan terpisah dari aturan filesystem umum. Memerlukan Claude Code v2.1.187 atau lebih baru.321Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan variabel lingkungan yang harus dilindungi dari perintah sandboxed. Setiap entri memberi nama jalur file atau variabel lingkungan dan `mode`. Blok `credentials` khusus menjaga aturan kredensial dikelompokkan bersama dan terpisah dari aturan filesystem umum.

322 322 

323Untuk entri dengan `"mode": "deny"`, jalur file ditolak untuk pembacaan di dalam sandbox, pembatasan yang sama yang diterapkan `filesystem.denyRead`, dan variabel lingkungan tidak diatur sebelum setiap perintah sandboxed berjalan. Perlindungan file adalah bagian dari lapisan filesystem, jadi tidak berlaku jika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku.323Untuk entri dengan `"mode": "deny"`, jalur file ditolak untuk pembacaan di dalam sandbox, pembatasan yang sama yang diterapkan `filesystem.denyRead`, dan variabel lingkungan tidak diatur sebelum setiap perintah sandboxed berjalan. Perlindungan file adalah bagian dari lapisan filesystem, jadi tidak berlaku jika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku.

324 324 

Details

25 Instal plugin25 Instal plugin

26</h2>26</h2>

27 27 

28Dalam sesi terminal Claude Code, instal dari [marketplace resmi Anthropic](/docs/id/discover-plugins#official-anthropic-marketplace):28Dalam sesi terminal Claude Code, instal dari [marketplace resmi Anthropic](/docs/id/plugins/anthropic-marketplaces):

29 29 

30```text theme={null}30```text theme={null}

31/plugin install security-guidance@claude-plugins-official31/plugin install security-guidance@claude-plugins-official


35 35 

36* **Aplikasi desktop Claude, sesi lokal atau SSH**: buka [browser plugin](/docs/id/desktop#install-plugins) dengan mengklik tombol **+** di sebelah prompt, kemudian **Plugins**, kemudian **Add plugin**36* **Aplikasi desktop Claude, sesi lokal atau SSH**: buka [browser plugin](/docs/id/desktop#install-plugins) dengan mengklik tombol **+** di sebelah prompt, kemudian **Plugins**, kemudian **Add plugin**

37* **Ekstensi VS Code**: instal dari [dialog **Manage plugins**](/docs/id/vs-code#manage-plugins)37* **Ekstensi VS Code**: instal dari [dialog **Manage plugins**](/docs/id/vs-code#manage-plugins)

38* **Sesi cloud**: aktifkan plugin untuk akun claude.ai Anda sehingga Claude Code memuatnya sebagai [plugin yang disinkronkan](/docs/id/plugins-reference#synced-plugins). Sesi cloud tidak memuat plugin dari pengaturan pengguna Anda atau dari `.claude/settings.json` repositori, seperti yang dijelaskan dalam [What carries over from your setup](/docs/id/cloud-environments#what-carries-over-from-your-setup)38* **Sesi cloud**: sesi cloud tidak memuat plugin dari pengaturan pengguna Anda atau dari `.claude/settings.json` repositori, seperti yang dijelaskan dalam [What carries over from your setup](/docs/id/cloud-environments#what-carries-over-from-your-setup). Untuk plugin yang didistribusikan organisasi Anda melalui pengaturan terkelola, lihat [Manage plugins for your organization](/docs/id/plugins/org)

39 39 

40Instalasi terminal meminta scope. Pilih user scope untuk menulis plugin ke pengaturan pengguna Anda, sehingga dimuat di setiap sesi lokal baru yang Anda mulai di mesin ini.40Instalasi terminal meminta scope. Pilih user scope untuk menulis plugin ke pengaturan pengguna Anda, sehingga dimuat di setiap sesi lokal baru yang Anda mulai di mesin ini.

41 41 

42Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:42Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

43 43 

44* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba lagi instalnya.44* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba lagi instalnya.

45* Plugin [tidak ditemukan di marketplace](/docs/id/discover-plugins#install-plugins): periksa nama plugin.45* Plugin [tidak ditemukan di marketplace](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

46 46 

47Periksa ringkasan instalasi. Jika melaporkan `Run /reload-plugins to activate.`, lihat [Apply plugin changes without restarting](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) untuk mengaktifkan plugin dalam sesi Anda saat ini.47Periksa ringkasan instalasi. Jika melaporkan `Run /reload-plugins to activate.`, lihat [Apply plugin changes without restarting](/docs/id/plugins/cli-reference#reload-plugins) untuk mengaktifkan plugin dalam sesi Anda saat ini.

48 48 

49<h3 id="enable-for-your-team-in-local-sessions">49<h3 id="enable-for-your-team-in-local-sessions">

50 Aktifkan untuk tim Anda dalam sesi lokal50 Aktifkan untuk tim Anda dalam sesi lokal


279 279 

280* [Code Review](/docs/id/code-review): atur review multi-agent waktu PR280* [Code Review](/docs/id/code-review): atur review multi-agent waktu PR

281* [Otomatiskan alur kerja dengan hooks](/docs/id/hooks-guide): bangun pemeriksaan Anda sendiri pada titik siklus hidup yang sama281* [Otomatiskan alur kerja dengan hooks](/docs/id/hooks-guide): bangun pemeriksaan Anda sendiri pada titik siklus hidup yang sama

282* [Temukan dan instal plugin](/docs/id/discover-plugins#official-anthropic-marketplace): telusuri plugin resmi lainnya282* [Temukan plugin di marketplace resmi](/docs/id/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace): tempat untuk menelusuri plugin resmi lainnya

Details

249}249}

250```250```

251 251 

252Anda juga dapat mengatur kunci ini dalam profil MDM yang [dikelola endpoint](/docs/id/managed-settings#delivery-mechanisms) atau file `managed-settings.json` sistem untuk memberlakukan perilaku tertutup gagal pada peluncuran pertama, sebelum payload server apa pun telah dikirimkan. Dalam Claude Code v2.1.191 atau lebih baru, flag ini adalah pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: Claude Code menghormatinya ketika diatur dalam sumber terkelola yang dikendalikan admin apa pun, bahkan jika payload yang dikelola server yang di-cache juga ada, jadi nilai yang dikirimkan MDM tidak diabaikan ketika pengaturan yang dikelola server ada.252Anda juga dapat mengatur kunci ini dalam profil MDM yang [dikelola endpoint](/docs/id/managed-settings#delivery-mechanisms) atau file `managed-settings.json` sistem untuk memberlakukan perilaku tertutup gagal pada peluncuran pertama, sebelum payload server apa pun telah dikirimkan. Flag ini adalah pengecualian terhadap [aturan prioritas](#settings-precedence) di atas: Claude Code menghormatinya ketika diatur dalam sumber terkelola yang dikendalikan admin apa pun, bahkan jika payload yang dikelola server yang di-cache juga ada, jadi nilai yang dikirimkan MDM tidak diabaikan ketika pengaturan yang dikelola server ada.

253 253 

254Ketika [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, outputnya menggantikan setiap sumber terkelola lainnya untuk kunci yang Claude Code baca setelah startup. Untuk sumber yang Claude Code baca kunci ini dari, lihat [entri pengaturannya](/docs/id/settings-reference#forceremotesettingsrefresh). Entri `policyHelper` mengatakan sumber mana Claude Code membaca helper dari dan kapan itu berjalan.254Ketika [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola, outputnya menggantikan setiap sumber terkelola lainnya untuk kunci yang Claude Code baca setelah startup. Untuk sumber yang Claude Code baca kunci ini dari, lihat [entri pengaturannya](/docs/id/settings-reference#forceremotesettingsrefresh). Entri `policyHelper` mengatakan sumber mana Claude Code membaca helper dari dan kapan itu berjalan.

255 255 


338 338 

339Kunci yang dikembalikan oleh skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) maupun kredensial [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) tidak memicu pengambilan pengaturan.339Kunci yang dikembalikan oleh skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) maupun kredensial [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) tidak memicu pengambilan pengaturan.

340 340 

341Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan yang dikelola server dari konsol admin claude.ai, bahkan ketika pengguna masuk dengan akun Tim atau Perusahaan. [Di mana dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup kebijakan mana yang mencapai sesi Cowork di mesin pengguna dan sesi Cowork jarak jauh. claude.ai masih menerapkan daftar [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dan [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) Anda sendiri ketika pengguna Cowork menambahkan marketplace dari repositori git di claude.ai atau dari **Customize** di tab Cowork. [Bagaimana pembatasan bekerja](/docs/id/plugin-marketplaces#how-restrictions-work) menjelaskan pemeriksaan tersebut.341Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan yang dikelola server dari konsol admin claude.ai, bahkan ketika pengguna masuk dengan akun Tim atau Perusahaan. [Di mana dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup kebijakan mana yang mencapai sesi Cowork di mesin pengguna dan sesi Cowork jarak jauh. claude.ai masih menerapkan daftar [`strictKnownMarketplaces`](/docs/id/settings-reference#strictknownmarketplaces) dan [`blockedMarketplaces`](/docs/id/settings-reference#blockedmarketplaces) Anda sendiri ketika pengguna Cowork menambahkan marketplace dari repositori git di claude.ai atau dari **Customize** di tab Cowork. [Bagaimana pembatasan bekerja](/docs/id/plugins/org#restrict-what-users-can-install) menjelaskan pemeriksaan tersebut.

342 342 

343Jika Anda mengekspor variabel penyedia `CLAUDE_CODE_USE_*` atau `ANTHROPIC_BASE_URL` non-default di shell Anda, Claude Code melewati pengambilan pengaturan untuk sesi Anda. [`claude doctor` dan `/status` melaporkan pengambilan yang dilewati dan penyebabnya](#verify-settings-delivery).343Jika Anda mengekspor variabel penyedia `CLAUDE_CODE_USE_*` atau `ANTHROPIC_BASE_URL` non-default di shell Anda, Claude Code melewati pengambilan pengaturan untuk sesi Anda. [`claude doctor` dan `/status` melaporkan pengambilan yang dilewati dan penyebabnya](#verify-settings-delivery).

344 344 

sessions.md +1 −1

Details

37 37 

38Sesi yang dilanjutkan memulihkan percakapan bersama dengan status yang disimpan di dalamnya:38Sesi yang dilanjutkan memulihkan percakapan bersama dengan status yang disimpan di dalamnya:

39 39 

40* Riwayat percakapan: riwayat lengkap, termasuk panggilan alat dan hasil. Alat yang masih berjalan ketika proses sebelumnya berakhir, misalnya dalam kerusakan, tidak selesai atau berjalan lagi ketika Anda melanjutkan; Claude melanjutkan tanpa outputnya.40* Riwayat percakapan: riwayat lengkap, termasuk panggilan alat dan hasil. Alat yang masih berjalan ketika proses sebelumnya berakhir, misalnya dalam kerusakan, tidak selesai atau berjalan lagi ketika Anda melanjutkan. Claude melihat panggilan yang ditandai sebagai terputus sebelum hasilnya dicatat dan diberitahu untuk memeriksa apakah itu berlaku sebelum menjalankannya lagi, kecuali [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars#variables) diatur. Sebelum v2.1.281, Claude Code menghapus panggilan yang terputus dari percakapan atau menampilkannya kepada Claude sebagai yang Anda interupsi.

41* Model: sesi berlanjut pada model yang digunakannya. Model tidak dipulihkan ketika telah pensiun atau tidak diizinkan oleh `availableModels`, ketika bendera `--model` atau variabel lingkungan keluarga `ANTHROPIC_MODEL` memilih satu saat peluncuran, atau pada penyedia yang menggunakan ID penerapan khusus penyedia, seperti [Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry](/docs/id/third-party-integrations); lihat [konfigurasi model](/docs/id/model-config#setting-your-model) untuk urutan resolusi.41* Model: sesi berlanjut pada model yang digunakannya. Model tidak dipulihkan ketika telah pensiun atau tidak diizinkan oleh `availableModels`, ketika bendera `--model` atau variabel lingkungan keluarga `ANTHROPIC_MODEL` memilih satu saat peluncuran, atau pada penyedia yang menggunakan ID penerapan khusus penyedia, seperti [Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry](/docs/id/third-party-integrations); lihat [konfigurasi model](/docs/id/model-config#setting-your-model) untuk urutan resolusi.

42* Agent: sesi yang dimulai dengan [`--agent`](/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan `agent` berlanjut sebagai agen tersebut, mempertahankan pembatasan alat dan model-nya. Teruskan `--agent` saat melanjutkan untuk memilih yang berbeda; untuk prompt sistem dalam kedua kasus, lihat [Bendera prompt sistem dalam percakapan yang dilanjutkan](/docs/id/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code mencari agen di dua tempat: direktori asli sesi, asalkan Anda telah [mempercayai ruang kerja tersebut](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan kemudian direktori tempat Anda melanjutkan, sehingga agen yang bersifat proyek masih dimuat ketika Anda melanjutkan dari direktori lain. Jika Claude Code tidak menemukan agen di salah satu tempat, sesi dilanjutkan dengan alat default dan menampilkan [peringatan yang menyebutkan agen](/docs/id/errors#session-agent-no-longer-available).42* Agent: sesi yang dimulai dengan [`--agent`](/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan `agent` berlanjut sebagai agen tersebut, mempertahankan pembatasan alat dan model-nya. Teruskan `--agent` saat melanjutkan untuk memilih yang berbeda; untuk prompt sistem dalam kedua kasus, lihat [Bendera prompt sistem dalam percakapan yang dilanjutkan](/docs/id/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code mencari agen di dua tempat: direktori asli sesi, asalkan Anda telah [mempercayai ruang kerja tersebut](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan kemudian direktori tempat Anda melanjutkan, sehingga agen yang bersifat proyek masih dimuat ketika Anda melanjutkan dari direktori lain. Jika Claude Code tidak menemukan agen di salah satu tempat, sesi dilanjutkan dengan alat default dan menampilkan [peringatan yang menyebutkan agen](/docs/id/errors#session-agent-no-longer-available).

43* Mode izin: jika Anda melanjutkan dari terminal dengan `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`, Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di [mode izin saat melanjutkan](#permission-mode-on-resume), yang juga mencakup pemilih sesi, `/resume`, dan melanjutkan dengan `claude -p`. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk mengganti mode yang dipulihkan.43* Mode izin: jika Anda melanjutkan dari terminal dengan `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`, Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di [mode izin saat melanjutkan](#permission-mode-on-resume), yang juga mencakup pemilih sesi, `/resume`, dan melanjutkan dengan `claude -p`. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk mengganti mode yang dipulihkan.

settings.md +39 −35

Details

397<span id="where-settings-live" />397<span id="where-settings-live" />

398 398 

399<h2 id="settings-files-and-who-they-affect">399<h2 id="settings-files-and-who-they-affect">

400 File pengaturan dan siapa yang mereka pengaruhi400 File pengaturan dan siapa yang terpengaruh

401</h2>401</h2>

402 402 

403Claude Code membaca pengaturan dari empat file, dan organisasi juga dapat mengirimkan pengaturan yang dikelola dari konsol claude.ai. Setiap sumber memiliki cakupan: set orang dan proyek yang pengaturan yang disimpan di dalamnya berlaku untuk, apakah itu hanya Anda, semua orang di proyek, atau semua orang di organisasi Anda.403Claude Code membaca pengaturan dari empat file, dan organisasi juga dapat mengirimkan pengaturan terkelola dari konsol claude.ai. Setiap sumber memiliki cakupan: set orang dan proyek yang pengaturan yang disimpan di dalamnya berlaku, baik itu hanya Anda, semua orang dalam proyek, atau semua orang di organisasi Anda.

404 404 

405| Cakupan | File | Siapa yang terpengaruh | Gunakan untuk |405| Cakupan | File | Siapa yang terpengaruh | Gunakan untuk |

406| :------------- | :--------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |406| :------------- | :----------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |

407| Pengguna | `~/.claude/settings.json` | Anda, di setiap proyek di mesin ini | Preferensi pribadi: tema, mode editor, model default, aturan izin Anda sendiri |407| Pengguna | `~/.claude/settings.json` | Anda, di setiap proyek di mesin ini | Preferensi pribadi: tema, mode editor, model default, aturan izin Anda sendiri |

408| Proyek bersama | `.claude/settings.json` | Semua orang yang bekerja di folder yang memuatnya. Dalam repositori git, komitnya sehingga rekan kerja mendapatkannya | Izin tim, hooks, plugins, dan variabel lingkungan yang dibutuhkan proyek |408| Proyek bersama | `.claude/settings.json` | Semua orang yang bekerja di folder yang memuatnya. Di repositori git, commit itu sehingga rekan kerja mendapatkannya | Izin tim, hooks, plugins, dan variabel lingkungan yang dibutuhkan proyek |

409| Proyek lokal | `.claude/settings.local.json` | Anda, hanya di proyek ini. Claude Code menyimpannya keluar dari git saat membuat file; jika Anda membuatnya dengan tangan, tambahkan ke `.gitignore` sendiri | Penggantian pribadi untuk satu proyek, dan pengujian sebelum Anda bagikan |409| Proyek lokal | `.claude/settings.local.json` | Anda, hanya di proyek ini. Claude Code menyimpannya di luar git saat membuat file; jika Anda membuatnya dengan tangan, tambahkan ke `.gitignore` sendiri | Penggantian pribadi untuk satu proyek, dan pengujian sebelum Anda berbagi |

410| Dikelola | `managed-settings.json` dan [sumber yang dikelola](/docs/id/managed-settings#delivery-mechanisms) lainnya | Semua orang yang organisasi Anda terapkan ke; tidak ada yang Anda atur menimpanya, terlepas dari beberapa [pengecualian yang sensitif terhadap keamanan](#exceptions-to-managed-settings-precedence) | Kebijakan keamanan dan persyaratan kepatuhan |410| Terkelola | `managed-settings.json` dan [sumber terkelola](/docs/id/managed-settings#delivery-mechanisms) lainnya | Semua orang organisasi Anda menerapkannya; tidak ada yang Anda atur yang menggantikannya, kecuali beberapa [pengecualian sensitif keamanan](#exceptions-to-managed-settings-precedence) | Kebijakan keamanan dan persyaratan kepatuhan |

411 411 

412Di kolom File, `~/.claude` adalah folder `.claude` di direktori home Anda, dan `.claude` telanjang adalah folder `.claude` di dalam proyek Anda.412Di kolom File, `~/.claude` adalah folder `.claude` di direktori home Anda, dan `.claude` kosong adalah folder `.claude` di dalam proyek Anda.

413 413 

414<span id="where-each-file-applies" />414<span id="where-each-file-applies" />

415 415 


421 421 

422Misalkan Anda memiliki tiga proyek di mesin Anda, `website/`, `api/`, dan `acme-app/`, rekan kerja memiliki klon mereka sendiri dari `acme-app/`, dan Anda memulai [sesi cloud](#settings-in-cloud-sessions) di `acme-app/`.422Misalkan Anda memiliki tiga proyek di mesin Anda, `website/`, `api/`, dan `acme-app/`, rekan kerja memiliki klon mereka sendiri dari `acme-app/`, dan Anda memulai [sesi cloud](#settings-in-cloud-sessions) di `acme-app/`.

423 423 

424Grafik di bawah menunjukkan folder mana yang pengaturan berlaku saat Anda memulai Claude Code dari mereka. Klik file pengaturan untuk melihat folder yang dicapainya.424Grafik di bawah menunjukkan folder mana yang pengaturan berlaku saat Anda memulai Claude Code dari mereka. Klik file pengaturan untuk melihat folder yang dijangkaunya.

425 425 

426<SettingsScope />426<SettingsScope />

427 427 

428* **`~/.claude/settings.json`**: setiap proyek di mesin Anda, dan tidak ada di mesin rekan kerja atau dalam sesi cloud428* **`~/.claude/settings.json`**: setiap proyek di mesin Anda, dan tidak ada di mesin rekan kerja atau di sesi cloud

429* **`acme-app/.claude/settings.json`**: `acme-app/` Anda. Ia mencapai klon rekan kerja dan sesi cloud hanya jika Anda melakukan komit file ke kontrol versi; sampai Anda melakukannya, itu adalah file di disk Anda seperti yang lain dan tidak ada orang lain yang memilikinya429* **`acme-app/.claude/settings.json`**: `acme-app/` Anda. Ini menjangkau klon rekan kerja dan sesi cloud hanya jika Anda commit file ke kontrol versi; sampai Anda melakukannya, itu adalah file di disk Anda seperti yang lain dan tidak ada orang lain yang memilikinya

430* **`acme-app/.claude/settings.local.json`**: hanya `acme-app/` Anda. Claude Code menambahkannya ke pengecualian git global Anda saat pertama kali menulis file, sehingga tetap keluar dari komit Anda; jika Anda membuat file dengan tangan, [tambahkan ke `.gitignore` sendiri](#keep-personal-settings-out-of-a-repository)430* **`acme-app/.claude/settings.local.json`**: hanya `acme-app/` Anda. Claude Code menambahkannya ke pengecualian git global Anda pertama kali menulis file, sehingga tetap keluar dari commit Anda; jika Anda membuat file dengan tangan, [tambahkan ke `.gitignore` sendiri](#keep-personal-settings-out-of-a-repository)

431* **Pengaturan yang dikelola**, apakah file `managed-settings.json`, kebijakan MDM, atau [pengaturan yang dikelola server](/docs/id/server-managed-settings) dari konsol claude.ai: setiap proyek di setiap mesin yang organisasi Anda terapkan ke, atau yang Anda masuk dengan akun organisasi Anda. Hanya pengaturan yang dikelola server yang mencapai sesi cloud431* **Pengaturan terkelola**, baik file `managed-settings.json`, kebijakan MDM, atau [pengaturan yang dikelola server](/docs/id/server-managed-settings) dari konsol claude.ai: setiap proyek di setiap mesin organisasi Anda menerapkannya, atau yang Anda masuk dengan akun organisasi Anda. Hanya pengaturan yang dikelola server yang menjangkau sesi cloud

432 432 

433<span id="which-files-you-have" />433<span id="which-files-you-have" />

434 434 


438 438 

439Menginstal Claude Code tidak membuat file pengaturan apa pun. Jika mesin atau proyek Anda sudah memiliki satu, itu berasal dari salah satu sumber ini:439Menginstal Claude Code tidak membuat file pengaturan apa pun. Jika mesin atau proyek Anda sudah memiliki satu, itu berasal dari salah satu sumber ini:

440 440 

441* **Dikelola**: organisasi Anda menerapkannya. Anda tidak membuat atau mengeditnya.441* **Terkelola**: organisasi Anda menerapkannya. Anda tidak membuat atau mengeditnya.

442* **Proyek bersama**: proyek yang sudah menggunakan Claude Code mungkin memiliki satu yang dikomit. Jika tidak, buatnya di `.claude/settings.json` di folder proyek.442* **Proyek bersama**: proyek yang sudah menggunakan Claude Code mungkin memiliki satu yang di-commit. Jika tidak, buatnya di `.claude/settings.json` di folder proyek.

443* **Pengguna** dan **Proyek lokal**: buatnya sendiri, atau biarkan Claude Code membuatnya. Ia menulis `~/.claude/settings.json` saat pertama kali Anda mengubah opsi di menu `/config` yang disimpannya dalam pengaturan pengguna, seperti tema, dan `.claude/settings.local.json` saat pertama kali Anda memberikan persetujuan berdiri di prompt izin, seperti "Ya, dan jangan tanya lagi" untuk perintah Bash. Beberapa opsi `/config`, termasuk **Tampilkan tips**, disimpan ke `.claude/settings.local.json` sebagai gantinya.443* **Pengguna** dan **Proyek lokal**: buatnya sendiri, atau biarkan Claude Code membuatnya. Ini menulis `~/.claude/settings.json` pertama kali Anda mengubah opsi di menu `/config` yang disimpannya dalam pengaturan pengguna, seperti tema, dan `.claude/settings.local.json` pertama kali Anda memberikan persetujuan berdiri di prompt izin, seperti "Ya, dan jangan tanya lagi" untuk perintah Bash. Beberapa opsi `/config`, termasuk **Tampilkan tips**, disimpan ke `.claude/settings.local.json` sebagai gantinya dari file pengguna.

444 444 

445<Info>445<Info>

446 Di Windows, `~/.claude` berarti `%USERPROFILE%\.claude`. Untuk menyimpan file direktori home di tempat lain, atur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars); Claude Code kemudian menyimpan pengaturan, riwayat sesi, dan plugins Anda di sana sebagai gantinya.446 Di Windows, `~/.claude` berarti `%USERPROFILE%\.claude`. Untuk menyimpan file direktori home di tempat lain, atur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars); Claude Code kemudian menyimpan pengaturan, riwayat sesi, dan plugins Anda di sana sebagai gantinya.

447</Info>447</Info>

448 448 

449Claude Code juga menyimpan file kelima, [`~/.claude.json`](/docs/id/claude-directory#ce-claude-json), yang ditulis untuk dirinya sendiri; Anda tidak perlu mengeditnya. Ia menyimpan sesi masuk Anda, konfigurasi [server MCP](/docs/id/mcp), status per-proyek seperti keputusan kepercayaan, dan [kunci konfigurasi global](/docs/id/settings-reference#global-config-settings) yang `/config` tulis untuk Anda.449Claude Code juga menyimpan file kelima, [`~/.claude.json`](/docs/id/claude-directory#ce-claude-json), yang ditulis untuk dirinya sendiri; Anda tidak perlu mengeditnya. Ini menyimpan sesi masuk Anda, konfigurasi [server MCP](/docs/id/mcp), status per-proyek seperti keputusan kepercayaan, dan [kunci konfigurasi global](/docs/id/settings-reference#global-config-settings) yang `/config` tulis untuk Anda.

450 450 

451<h3 id="share-settings-with-your-team">451<h3 id="share-settings-with-your-team">

452 Bagikan pengaturan dengan tim Anda452 Bagikan pengaturan dengan tim Anda

453</h3>453</h3>

454 454 

455Komit `.claude/settings.json` sehingga semua orang yang mengkloning repositori mendapatkan izin, hooks, telemetri, dan plugins yang sama. Setiap rekan kerja masih dapat menimpanya untuk diri mereka sendiri di `.claude/settings.local.json` mereka sendiri, jadi pengecualian pribadi tidak perlu komit. Untuk file tim lengkap, lihat [pengaturan bersama tim](/docs/id/settings-example#a-teams-shared-settings).455Commit `.claude/settings.json` sehingga semua orang yang mengkloning repositori mendapatkan izin, hooks, dan plugins yang sama. Setiap rekan kerja masih dapat menggantikannya untuk diri mereka sendiri di `.claude/settings.local.json` mereka sendiri, sehingga pengecualian pribadi tidak perlu commit. Untuk file tim lengkap, lihat [pengaturan bersama tim](/docs/id/settings-example#a-teams-shared-settings).

456 456 

457Beberapa dari apa yang Anda komit menunggu sampai setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot pengaturan yang tidak berlaku](#common-cases) mencakup keduanya.457Beberapa dari apa yang Anda commit menunggu sampai setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot a setting that doesn't apply](#common-cases) mencakup keduanya.

458 458 

459<span id="local-settings-file" />459<span id="local-settings-file" />

460 460 


465<span id="keep-personal-settings-out-of-the-repository" />465<span id="keep-personal-settings-out-of-the-repository" />

466 466 

467<h3 id="keep-personal-settings-out-of-a-repository">467<h3 id="keep-personal-settings-out-of-a-repository">

468 Simpan pengaturan pribadi keluar dari repositori468 Jaga pengaturan pribadi keluar dari repositori

469</h3>469</h3>

470 470 

471Untuk mengubah pengaturan untuk diri sendiri di satu proyek tanpa mengubahnya untuk rekan kerja Anda, simpan di `.claude/settings.local.json` di dalam proyek. Claude Code menerapkan file itu di atas `.claude/settings.json` yang dikomit, jadi jika file tim Anda menetapkan `"model": "claude-sonnet-5"` dan Anda menginginkan Opus, masukkan `"model": "claude-opus-5-5"` di file lokal Anda dan hanya sesi Anda yang berubah.471Untuk mengubah pengaturan untuk diri sendiri di satu proyek tanpa mengubahnya untuk rekan kerja Anda, simpan di `.claude/settings.local.json` di dalam proyek. Claude Code menerapkan file itu di atas `.claude/settings.json` yang di-commit, jadi jika file tim Anda menetapkan `"model": "claude-sonnet-5"` dan Anda menginginkan Opus, masukkan `"model": "claude-opus-5-5"` di file lokal Anda dan hanya sesi Anda yang berubah.

472 472 

473Claude Code juga menulis ke file ini, menyimpannya keluar dari komit Anda, dan menerapkan aturan izinnya tanpa langkah kepercayaan:473Claude Code juga menulis ke file ini, menyimpannya keluar dari commit Anda, dan menerapkan aturan izinnya tanpa langkah kepercayaan:

474 474 

475* **Claude Code juga menulisnya.** Saat Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan [persetujuan izin](/docs/id/permissions#permission-system) itu di sini sebagai aturan `allow`.475* **Claude Code juga menulisnya.** Ketika Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan [persetujuan izin](/docs/id/permissions#permission-system) itu di sini sebagai aturan `allow`.

476* **Anda tidak perlu gitignore sendiri, kecuali Anda membuatnya dengan tangan.** Saat pertama kali Claude Code menulis file di repositori git yang belum mengabaikannya, ia menambahkan `**/.claude/settings.local.json` ke file pengecualian git global Anda, sehingga file tetap keluar dari komit Anda di setiap repositori. File itu adalah `core.excludesFile` saat konfigurasi git global Anda menetapkannya ke jalur absolut atau jalur dengan awalan `~`; jika tidak, itu adalah `$XDG_CONFIG_HOME/git/ignore`, atau `~/.config/git/ignore` saat `XDG_CONFIG_HOME` tidak diatur. Jika Anda membuat file dengan tangan dan Claude Code belum menulisnya, tambahkan ke `.gitignore` sendiri.476* **Anda tidak perlu gitignore sendiri, kecuali Anda membuatnya dengan tangan.** Pertama kali Claude Code menulis file di repositori git yang tidak sudah mengabaikannya, itu menambahkan `**/.claude/settings.local.json` ke file pengecualian git global Anda, sehingga file tetap keluar dari commit Anda di setiap repositori. File itu adalah `core.excludesFile` ketika konfigurasi git global Anda menetapkannya ke jalur absolut atau jalur dengan awalan `~`; jika tidak, itu adalah `$XDG_CONFIG_HOME/git/ignore`, atau `~/.config/git/ignore` ketika `XDG_CONFIG_HOME` tidak diatur. Jika Anda membuat file dengan tangan dan Claude Code belum menulis ke dalamnya, tambahkan ke `.gitignore` sendiri.

477* **Aturan allow-nya tidak menunggu kepercayaan saat file tetap tidak dilacak.** Karena file adalah milik Anda dan bukan repositori, Claude Code menerapkan aturan `allow`-nya tanpa langkah [kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang diperlukan untuk file yang dikomit. Jika file dilacak oleh git, langkah kepercayaan juga berlaku untuk itu; lihat [Saat file pengaturan lokal Anda memerlukan kepercayaan](/docs/id/permissions#when-your-local-settings-file-needs-trust).477* **Aturan izinnya tidak menunggu kepercayaan sementara file tetap tidak dilacak.** Karena file adalah milik Anda dan bukan repositori, Claude Code menerapkan aturan `allow` tanpa langkah [kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang diperlukan untuk file yang di-commit. Jika file dilacak oleh git, langkah kepercayaan juga berlaku untuk itu; lihat [Ketika file pengaturan lokal Anda memerlukan kepercayaan](/docs/id/permissions#when-your-local-settings-file-needs-trust).

478 478 

479<span id="where-claude-code-looks-for-each-file" />479<span id="where-claude-code-looks-for-each-file" />

480 480 


483<span id="local-allow-rules-dont-wait-for-workspace-trust" />483<span id="local-allow-rules-dont-wait-for-workspace-trust" />

484 484 

485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">485<h4 id="where-claude-code-keeps-the-local-file-in-a-git-repository">

486 Tempat Claude Code menyimpan file lokal dalam repositori git486 Tempat Claude Code menyimpan file lokal di repositori git

487</h4>487</h4>

488 488 

489Saat Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan persetujuan itu sebagai aturan `allow` di `.claude/settings.local.json`. Jika Anda memulai Claude Code di subdirektori repositori git, ia membaca dan menulis file itu di akar repositori dan menerapkan persetujuan di seluruh repositori. Dalam [worktree](/docs/id/worktrees), ia menggunakan file di akar checkout utama.489Ketika Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan persetujuan itu sebagai aturan `allow` di `.claude/settings.local.json`. Jika Anda memulai Claude Code di subdirektori repositori git, itu membaca dan menulis file itu di akar repositori dan menerapkan persetujuan di seluruh repositori. Di [worktree](/docs/id/worktrees), itu menggunakan file di akar checkout utama.

490 490 

491Dua aturan memenuhi syarat lokasi akar:491Dua aturan memenuhi syarat lokasi akar:

492 492 

493* **Saat file tetap dengan `.claude/settings.json` sebagai gantinya**: di luar repositori git, saat akar repositori adalah direktori home Anda, di Windows, atau saat akar repositori atau entri `.git` atau `.claude`-nya tidak dimiliki oleh pengguna Anda.493* **Ketika file tetap dengan `.claude/settings.json` sebagai gantinya**: di luar repositori git, ketika akar repositori adalah direktori home Anda, di Windows, atau ketika akar repositori atau entri `.git` atau `.claude` tidak dimiliki oleh pengguna Anda.

494* **Jalur dalam file tidak berlabuh di akar repositori**: aturan izin yang dimulai dengan `/` atau jalur sandbox relatif [berlabuh di direktori kerja utama sesi](/docs/id/permissions#read-and-edit) sebagai gantinya.494* **Jalur dalam file tidak jangkar di akar repositori**: aturan izin yang dimulai dengan `/` atau jalur sandbox relatif [jangkar di direktori kerja utama sesi](/docs/id/permissions#read-and-edit) sebagai gantinya.

495 495 

496Sebelum v2.1.211, Claude Code menyimpan file di direktori awal. Ia masih membaca file yang versi sebelumnya tinggalkan di sana bersama file akar; saat keduanya menetapkan kunci yang sama, nilai akar berlaku, dan aturan izin dari kedua file berlaku. Helper [`resolveSettings()`](/docs/id/agent-sdk/typescript#resolvesettings) SDK Agent selalu membaca file dari direktori awal.496Sebelum v2.1.211, Claude Code menyimpan file di direktori awal. Itu masih membaca file versi sebelumnya yang ditinggalkan di sana di samping file akar; di mana keduanya menetapkan kunci yang sama, nilai akar berlaku, dan aturan izin dari kedua file berlaku. Helper [`resolveSettings()`](/docs/id/agent-sdk/typescript#resolvesettings) SDK Agent selalu membaca file dari direktori awal.

497 497 

498Claude Code membaca `.claude/settings.json` bersama dari [direktori kerja utama](/docs/id/permissions#working-directories) sesi, jadi untuk menggunakan file yang dikomit di akar repositori, mulai Claude Code di sana. Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory), Claude Code membaca kedua file proyek dari direktori baru sebagai gantinya, menempatkan file lokal dengan aturan yang sama. Membacanya dari direktori yang Anda pindahkan memerlukan Claude Code v2.1.246 atau lebih baru.498Claude Code membaca `.claude/settings.json` bersama dari [direktori kerja utama](/docs/id/permissions#working-directories) sesi, jadi untuk menggunakan file yang di-commit di akar repositori, mulai Claude Code di sana. Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory), Claude Code membaca kedua file proyek dari direktori baru sebagai gantinya, menempatkan file lokal dengan aturan yang sama. Membaca mereka dari direktori yang Anda pindahkan memerlukan Claude Code v2.1.246 atau lebih baru.

499 499 

500<span id="managed-settings-delivery" />500<span id="managed-settings-delivery" />

501 501 


508<span id="settings-your-organization-manages" />508<span id="settings-your-organization-manages" />

509 509 

510<h3 id="check-what-your-organization-enforces">510<h3 id="check-what-your-organization-enforces">

511 Periksa apa yang diterapkan organisasi Anda511 Periksa apa yang organisasi Anda terapkan

512</h3>512</h3>

513 513 

514Jika organisasi Anda mengelola Claude Code, beberapa pengaturan diputuskan untuk Anda dan tidak ada yang Anda masukkan dalam file Anda sendiri yang mengubahnya. Untuk melihat mana, jalankan `/status`: baris `Setting sources` menamai sumber yang dikelola yang berlaku untuk Anda. Pengaturan yang dikelola berlaku di mana pun Claude Code berjalan di mesin ini; [Apa yang dapat diubah pengembang](/docs/id/managed-settings#what-a-developer-can-change) mencakup hak admin lokal dan tools selain Claude Code.514Jika organisasi Anda mengelola Claude Code, beberapa pengaturan diputuskan untuk Anda dan tidak ada yang Anda masukkan dalam file Anda sendiri yang mengubahnya. Untuk melihat mana, jalankan `/status`: baris `Setting sources` menamai sumber terkelola yang berlaku untuk Anda. Pengaturan terkelola berlaku di mana pun Claude Code berjalan di mesin ini; [Apa yang dapat diubah pengembang](/docs/id/managed-settings#what-a-developer-can-change) mencakup hak admin lokal dan alat selain Claude Code.

515 515 

516Pengaturan yang dikelola mencapai Anda melalui [mekanisme pengiriman](/docs/id/managed-settings#delivery-mechanisms) di halaman pengaturan yang dikelola, paling umum:516Pengaturan terkelola menjangkau Anda melalui [mekanisme pengiriman](/docs/id/managed-settings#delivery-mechanisms) di halaman pengaturan terkelola, paling umum:

517 517 

518* [Pengaturan yang dikelola server](/docs/id/server-managed-settings), yang Claude Code ambil dari konsol admin claude.ai atau [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang di-host sendiri518* [Pengaturan yang dikelola server](/docs/id/server-managed-settings), yang Claude Code ambil dari konsol admin claude.ai atau [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang di-host sendiri

519* Kebijakan MDM atau tingkat OS, dan file `managed-settings.json` di direktori sistem519* Kebijakan MDM atau tingkat OS, dan file `managed-settings.json` di direktori sistem

520* Host penyematan seperti Claude Desktop, melalui opsi SDK `managedSettings`; lihat [Kontrol kebijakan dari host penyematan](/docs/id/managed-settings#parent-settings-from-embedding-hosts)520* Host penyematan seperti Claude Desktop, melalui opsi SDK `managedSettings`; lihat [Kontrol kebijakan dari host penyematan](/docs/id/managed-settings#parent-settings-from-embedding-hosts)

521 521 

522Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan yang dikelola server dari konsol admin claude.ai, dan ia membaca kebijakan yang diterapkan ke perangkat Anda kecuali konfigurasi Claude Desktop organisasi Anda menetapkan `requireCoworkFullVmSandbox`. [Tempat dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup Cowork dan sesi cloud.522Di sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan yang dikelola server dari konsol admin claude.ai, dan itu membaca kebijakan yang diterapkan ke perangkat Anda kecuali konfigurasi Claude Desktop organisasi Anda menetapkan `requireCoworkFullVmSandbox`. [Di mana dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup Cowork dan sesi cloud.

523 523 

524Jika Anda adalah administrator, [Siapkan Claude Code untuk organisasi Anda](/docs/id/admin-setup) memandu memilih apa yang akan diterapkan, dan [Terapkan pengaturan yang dikelola](/docs/id/managed-settings) mencakup pengiriman dan cara mengonfirmasi kebijakan berlaku.524Jika Anda adalah administrator, [Siapkan Claude Code untuk organisasi Anda](/docs/id/admin-setup) memandu memilih apa yang akan diterapkan, dan [Terapkan pengaturan terkelola](/docs/id/managed-settings) mencakup pengiriman dan cara mengonfirmasi kebijakan berlaku.

525 525 

526<h2 id="change-a-setting">526<h2 id="change-a-setting">

527 Ubah pengaturan527 Ubah pengaturan


743* **Level yang lebih tinggi menetapkannya.** File pengaturan lain, flag `--settings`, atau sumber yang dikelola menetapkan kunci di atas milik Anda; [tumpukan](#settings-precedence) mengatakan mana. Flag atau variabel lingkungan juga dapat menimpa kunci atas namanya sendiri, diputuskan kunci demi kunci; entri kunci di [referensi pengaturan](/docs/id/settings-reference) mengatakan mana yang digunakan Claude Code, dan [entri `env`](/docs/id/settings-reference#env) mencakup nilai `env` yang dikelola versus ekspor shell.743* **Level yang lebih tinggi menetapkannya.** File pengaturan lain, flag `--settings`, atau sumber yang dikelola menetapkan kunci di atas milik Anda; [tumpukan](#settings-precedence) mengatakan mana. Flag atau variabel lingkungan juga dapat menimpa kunci atas namanya sendiri, diputuskan kunci demi kunci; entri kunci di [referensi pengaturan](/docs/id/settings-reference) mengatakan mana yang digunakan Claude Code, dan [entri `env`](/docs/id/settings-reference#env) mencakup nilai `env` yang dikelola versus ekspor shell.

744* **Kunci keamanan menyimpan nilai ketatnya.** Untuk beberapa kunci Claude Code menghormati nilai yang membatasi dari file apa pun, jadi `true` proyek untuk [`disableClaudeAiConnectors`](/docs/id/settings-reference#disableclaudeaiconnectors) tetap aktif; lihat [Pengecualian untuk urutan prioritas pengaturan yang dikelola](#exceptions-to-managed-settings-precedence).744* **Kunci keamanan menyimpan nilai ketatnya.** Untuk beberapa kunci Claude Code menghormati nilai yang membatasi dari file apa pun, jadi `true` proyek untuk [`disableClaudeAiConnectors`](/docs/id/settings-reference#disableclaudeaiconnectors) tetap aktif; lihat [Pengecualian untuk urutan prioritas pengaturan yang dikelola](#exceptions-to-managed-settings-precedence).

745* **File tidak dapat menetapkan nilai itu.** Nilai [`permissions.defaultMode`](/docs/id/settings-reference#permissions-defaultmode) `auto` dan `bypassPermissions` tidak berlaku dari pengaturan proyek atau lokal; aturnya dalam pengaturan pengguna atau yang dikelola sebagai gantinya, atau lewatkan `--permission-mode` untuk satu sesi. Sebelum v2.1.257, `bypassPermissions` berlaku dari file apa pun.745* **File tidak dapat menetapkan nilai itu.** Nilai [`permissions.defaultMode`](/docs/id/settings-reference#permissions-defaultmode) `auto` dan `bypassPermissions` tidak berlaku dari pengaturan proyek atau lokal; aturnya dalam pengaturan pengguna atau yang dikelola sebagai gantinya, atau lewatkan `--permission-mode` untuk satu sesi. Sebelum v2.1.257, `bypassPermissions` berlaku dari file apa pun.

746 

747 Variabel ekspor telemetri dalam blok [`env`](/docs/id/settings-reference#env) juga tidak berlaku dari pengaturan proyek atau lokal, terlepas dari beberapa nilai off. [Variabel yang diabaikan Claude Code dalam `env`](/docs/id/settings-reference#variables-claude-code-ignores-in-env) mencantumkan variabel dan nilai-nilai tersebut.

746* **File rusak.** JSON tidak valid atau nilai yang ditolak membuat Claude Code melewati file atau entri; lihat [Perbaiki file pengaturan yang rusak](#fix-a-broken-settings-file).748* **File rusak.** JSON tidak valid atau nilai yang ditolak membuat Claude Code melewati file atau entri; lihat [Perbaiki file pengaturan yang rusak](#fix-a-broken-settings-file).

747 749 

748<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">750<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">


766Dua hal menjaga kunci di `.claude/settings.json` dari penerapan untuk semua orang yang mengkloning:768Dua hal menjaga kunci di `.claude/settings.json` dari penerapan untuk semua orang yang mengkloning:

767 769 

768* **Claude Code mengabaikan kunci dalam file repositori.** Cari `User, local, or managed`, `User or managed`, `Managed`, atau `Global config` di kolom Scope dari [indeks pengaturan](/docs/id/settings-reference#settings-index). Kunci-kunci itu tidak pernah berlaku dari file bersama, terlepas dari beberapa yang file repositori masih dapat matikan. Setiap entri itu mengatakan demikian pada baris Scope-nya. Kunci `Global config` hanya berlaku dari `~/.claude.json`.770* **Claude Code mengabaikan kunci dalam file repositori.** Cari `User, local, or managed`, `User or managed`, `Managed`, atau `Global config` di kolom Scope dari [indeks pengaturan](/docs/id/settings-reference#settings-index). Kunci-kunci itu tidak pernah berlaku dari file bersama, terlepas dari beberapa yang file repositori masih dapat matikan. Setiap entri itu mengatakan demikian pada baris Scope-nya. Kunci `Global config` hanya berlaku dari `~/.claude.json`.

771 

772 Di dalam kunci `env`, variabel ekspor telemetri tidak pernah berlaku dari file bersama juga, terlepas dari beberapa nilai off; lihat [Variabel yang diabaikan Claude Code dalam `env`](/docs/id/settings-reference#variables-claude-code-ignores-in-env).

769* **Kunci menunggu kepercayaan.** Aturan `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, dan sebagian besar nilai [`env`](/docs/id/settings-reference#env) hanya berlaku setelah setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust). Sampai saat itu mereka masih melihat prompt dan tidak mendapatkan plugins dari marketplace yang dideklarasikan file. Aturan `deny` dan `ask` berlaku segera.773* **Kunci menunggu kepercayaan.** Aturan `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, dan sebagian besar nilai [`env`](/docs/id/settings-reference#env) hanya berlaku setelah setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust). Sampai saat itu mereka masih melihat prompt dan tidak mendapatkan plugins dari marketplace yang dideklarasikan file. Aturan `deny` dan `ask` berlaku segera.

770 774 

771<h4 id="permission-rules-combine-differently-than-you-expected">775<h4 id="permission-rules-combine-differently-than-you-expected">

Details

98 Pengaturan bersama tim98 Pengaturan bersama tim

99</h2>99</h2>

100 100 

101Pengaturan bersama satu tim, dikomit ke repositori sehingga semua orang yang mengklonnya mendapatkan izin, hooks, telemetri, dan marketplace plugin yang sama. Simpan file seperti ini di `.claude/settings.json` di bagian atas repositori. Apa yang perlu diketahui sebelum Anda mengkomitnya:101Pengaturan bersama satu tim, dikomit ke repositori sehingga semua orang yang mengklonnya mendapatkan izin, hooks, dan marketplace plugin yang sama. Simpan file seperti ini di `.claude/settings.json` di bagian atas repositori. Apa yang perlu diketahui sebelum Anda mengkomitnya:

102 102 

103* **Sesi cloud membacanya juga.** Sesi [cloud session](/docs/id/settings#settings-in-cloud-sessions) dimulai dari klon repositori, jadi file yang dikomit berlaku di sana juga.103* **Sesi cloud membacanya juga.** Sesi [cloud session](/docs/id/settings#settings-in-cloud-sessions) dimulai dari klon repositori, jadi file yang dikomit berlaku di sana juga.

104* **Telemetri masuk dalam pengaturan terkelola atau pribadi.** Claude Code mengabaikan [variabel pengekspor OpenTelemetry](/docs/id/settings-reference#variables-claude-code-ignores-in-env) dalam file pengaturan repositori, kecuali beberapa nilai yang mematikan telemetri. Atur mereka dalam [pengaturan terkelola](/docs/id/monitoring-usage#administrator-configuration) untuk organisasi Anda, atau dalam `~/.claude/settings.json` setiap orang.

104* **Aturan izin menunggu kepercayaan.** Aturan izin dan entri `extraKnownMarketplaces` berlaku setelah setiap orang [mempercayai folder ini sendiri](/docs/id/permissions#project-allow-rules-and-workspace-trust), bukan hanya folder induk; aturan deny dan ask berlaku di setiap sesi, terpercaya atau tidak.105* **Aturan izin menunggu kepercayaan.** Aturan izin dan entri `extraKnownMarketplaces` berlaku setelah setiap orang [mempercayai folder ini sendiri](/docs/id/permissions#project-allow-rules-and-workspace-trust), bukan hanya folder induk; aturan deny dan ask berlaku di setiap sesi, terpercaya atau tidak.

105* **Hook adalah skrip di repo.** Hook file ini menjalankan `.claude/hooks/block-rm.sh`; [How a hook resolves](/docs/id/hooks#how-a-hook-resolves) memandu penulisannya.106* **Hook adalah skrip di repo.** Hook file ini menjalankan `.claude/hooks/block-rm.sh`; [How a hook resolves](/docs/id/hooks#how-a-hook-resolves) memandu penulisannya.

106* **Aturan cocok dengan perintah dan jalur seperti yang ditulis.** `Bash(git push *)` tidak cocok dengan [`git -C . push`](/docs/id/permissions#bash-rule-limits). `Read(./.env)` sendiri menghentikan alat file dan perintah yang menyebutkan file, seperti `cat .env`, tetapi bukan [`grep -r` dijalankan di seluruh direktori](/docs/id/permissions#read-and-edit); blok `sandbox` dalam file ini menutup celah itu, karena sandbox [menambahkan jalur deny `Read` Anda](/docs/id/settings-reference#sandbox-filesystem-denyread) ke apa yang tidak dapat dibaca oleh setiap perintah yang di-sandbox.107* **Aturan cocok dengan perintah dan jalur seperti yang ditulis.** `Bash(git push *)` tidak cocok dengan [`git -C . push`](/docs/id/permissions#bash-rule-limits). `Read(./.env)` sendiri menghentikan alat file dan perintah yang menyebutkan file, seperti `cat .env`, tetapi bukan [`grep -r` dijalankan di seluruh direktori](/docs/id/permissions#read-and-edit); blok `sandbox` dalam file ini menutup celah itu, karena sandbox [menambahkan jalur deny `Read` Anda](/docs/id/settings-reference#sandbox-filesystem-denyread) ke apa yang tidak dapat dibaca oleh setiap perintah yang di-sandbox.


124 "Read(./secrets/**)"125 "Read(./secrets/**)"

125 ]126 ]

126 },127 },

127 "env": {

128 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

129 "OTEL_METRICS_EXPORTER": "otlp",

130 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

131 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

132 },

133 "hooks": {128 "hooks": {

134 "PreToolUse": [129 "PreToolUse": [

135 {130 {


194 "Read(./secrets/**)"189 "Read(./secrets/**)"

195 ]190 ]

196 },191 },

197 // Kirim metrik OpenTelemetry ke kolektor tim melalui gRPC; ganti endpoint dengan URL kolektor Anda

198 "env": {

199 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

200 "OTEL_METRICS_EXPORTER": "otlp",

201 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

202 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

203 },

204 // Sebelum setiap perintah Bash, jalankan skrip di repo yang dapat membloknya192 // Sebelum setiap perintah Bash, jalankan skrip di repo yang dapat membloknya

205 "hooks": {193 "hooks": {

206 "PreToolUse": [194 "PreToolUse": [

Details

626| [`axScreenReader`](#axscreenreader) | Render [output yang ramah pembaca layar](/docs/id/accessibility) | Interface and terminal | Any file |626| [`axScreenReader`](#axscreenreader) | Render [output yang ramah pembaca layar](/docs/id/accessibility) | Interface and terminal | Any file |

627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Catat [file yang diubah perintah Bash](/docs/id/hooks#bash) dalam setiap mode izin | Interface and terminal | User or managed |627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Catat [file yang diubah perintah Bash](/docs/id/hooks#bash) dalam setiap mode izin | Interface and terminal | User or managed |

628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Atur berapa banyak [output](/docs/id/tools-reference#output-limits) perintah yang berhasil yang Claude terima secara inline | Memory and context | Any file |628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Atur berapa banyak [output](/docs/id/tools-reference#output-limits) perintah yang berhasil yang Claude terima secara inline | Memory and context | Any file |

629| [`blockedMarketplaces`](#blockedmarketplaces) | Blokir sumber [marketplace plugin](/docs/id/plugin-marketplaces) untuk organisasi Anda | Plugins and skills | Managed |629| [`blockedMarketplaces`](#blockedmarketplaces) | Blokir sumber [marketplace plugin](/docs/id/plugins/overview) untuk organisasi Anda | Plugins and skills | Managed |

630| [`browserExternalPageTools`](#browserexternalpagetools) | Tetap tidak aktifkan alat Claude di halaman eksternal dalam pane Browser [desktop](/docs/id/desktop) | Tools | Managed |630| [`browserExternalPageTools`](#browserexternalpagetools) | Tetap tidak aktifkan alat Claude di halaman eksternal dalam pane Browser [desktop](/docs/id/desktop) | Tools | Managed |

631| [`channelsEnabled`](#channelsenabled) | Izinkan [channel](/docs/id/channels#enable-channels-for-your-organization) untuk organisasi Anda | Plugins and skills | Managed |631| [`channelsEnabled`](#channelsenabled) | Izinkan [channel](/docs/id/channels#enable-channels-for-your-organization) untuk organisasi Anda | Plugins and skills | Managed |

632| [`claudeMd`](#claudemd) | Injeksikan instruksi [CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) di seluruh organisasi dari pengaturan yang dikelola | Memory and context | Managed |632| [`claudeMd`](#claudemd) | Injeksikan instruksi [CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) di seluruh organisasi dari pengaturan yang dikelola | Memory and context | Managed |


647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Batasi pane Browser [desktop](/docs/id/desktop) ke localhost untuk orang dan Claude | Tools | Managed |647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Batasi pane Browser [desktop](/docs/id/desktop) ke localhost untuk orang dan Claude | Tools | Managed |

648| [`disableBundledSkills`](#disablebundledskills) | Matikan [skill](/docs/id/skills#bundled-skills) dan [workflow](/docs/id/workflows) yang disertakan dengan Claude Code | Plugins and skills | Any file |648| [`disableBundledSkills`](#disablebundledskills) | Matikan [skill](/docs/id/skills#bundled-skills) dan [workflow](/docs/id/workflows) yang disertakan dengan Claude Code | Plugins and skills | Any file |

649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Matikan [konektor claude.ai](/docs/id/mcp#disable-claude-ai-connectors) sehingga Claude Code tidak mengambilnya | MCP | Any file |649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Matikan [konektor claude.ai](/docs/id/mcp#disable-claude-ai-connectors) sehingga Claude Code tidak mengambilnya | MCP | Any file |

650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Blokir [plugin](/docs/id/plugins) yang dipasang dengan menjalankan perintah yang dideklarasikan marketplace | Plugins and skills | Managed |650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Blokir [plugin](/docs/id/plugins/overview) yang dipasang dengan menjalankan perintah yang dideklarasikan marketplace | Plugins and skills | Managed |

651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Hentikan Claude Code dari mendaftarkan penanganan [`claude-cli://`](/docs/id/deep-links) | Remote, desktop, and notifications | Any file |651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Hentikan Claude Code dari mendaftarkan penanganan [`claude-cli://`](/docs/id/deep-links) | Remote, desktop, and notifications | Any file |

652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Matikan sesi [Desktop Code](/docs/id/desktop#local-sessions-on-managed-devices) yang berjalan di perangkat, meninggalkan SSH untuk host lain dan cloud | Remote, desktop, and notifications | Managed |652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Matikan sesi [Desktop Code](/docs/id/desktop#local-sessions-on-managed-devices) yang berjalan di perangkat, meninggalkan SSH untuk host lain dan cloud | Remote, desktop, and notifications | Managed |

653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Tolak server tertentu dari [`.mcp.json`](/docs/id/mcp#project-scope) proyek | MCP | Any file |653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Tolak server tertentu dari [`.mcp.json`](/docs/id/mcp#project-scope) proyek | MCP | Any file |

654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Blokir alat Claude dalam pane [desktop](/docs/id/desktop) iOS Simulator | Tools | Managed |654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Blokir alat Claude dalam pane [desktop](/docs/id/desktop) iOS Simulator | Tools | Managed |

655| [`disableRemoteControl`](#disableremotecontrol) | Matikan [Remote Control](/docs/id/remote-control) di mana pun dapat dimulai | Remote, desktop, and notifications | Any file |655| [`disableRemoteControl`](#disableremotecontrol) | Matikan [Remote Control](/docs/id/remote-control) di mana pun dapat dimulai | Remote, desktop, and notifications | Any file |

656| [`disableSideloadFlags`](#disablesideloadflags) | Tolak flag CLI yang sideload [plugin](/docs/id/plugins), [subagent](/docs/id/sub-agents), dan [server MCP](/docs/id/mcp) | Enterprise and managed settings | Managed |656| [`disableSideloadFlags`](#disablesideloadflags) | Tolak flag CLI yang sideload [plugin](/docs/id/plugins/overview), [subagent](/docs/id/sub-agents), dan [server MCP](/docs/id/mcp) | Enterprise and managed settings | Managed |

657| [`disableSkillShellExecution`](#disableskillshellexecution) | Hentikan [skill](/docs/id/skills) dan perintah kustom dari menjalankan shell inline | Plugins and skills | Any file |657| [`disableSkillShellExecution`](#disableskillshellexecution) | Hentikan [skill](/docs/id/skills) dan perintah kustom dari menjalankan shell inline | Plugins and skills | Any file |

658| [`disableWorkflows`](#disableworkflows) | Matikan [workflow dinamis](/docs/id/workflows) untuk semua orang; gunakan `enableWorkflows` untuk diri sendiri | Hooks and automation | Any file |658| [`disableWorkflows`](#disableworkflows) | Matikan [workflow dinamis](/docs/id/workflows) untuk semua orang; gunakan `enableWorkflows` untuk diri sendiri | Hooks and automation | Any file |

659| [`editorMode`](#editormode) | Gunakan [pintasan keyboard vim](/docs/id/interactive-mode#vim-editor-mode) dalam prompt input | Interface and terminal | Any file |659| [`editorMode`](#editormode) | Gunakan [pintasan keyboard vim](/docs/id/interactive-mode#vim-editor-mode) dalam prompt input | Interface and terminal | Any file |


662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Setujui setiap server dalam file [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek tanpa prompt | MCP | Any file |662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Setujui setiap server dalam file [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek tanpa prompt | MCP | Any file |

663| [`enableArtifact`](#enableartifact) | Matikan [alat Artifact](/docs/id/artifacts) dengan `false` di file mana pun; tidak ada file yang dapat menghidupkannya kembali | Remote, desktop, and notifications | Any file |663| [`enableArtifact`](#enableartifact) | Matikan [alat Artifact](/docs/id/artifacts) dengan `false` di file mana pun; tidak ada file yang dapat menghidupkannya kembali | Remote, desktop, and notifications | Any file |

664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Setujui server tertentu dari [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek | MCP | Any file |664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Setujui server tertentu dari [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek | MCP | Any file |

665| [`enabledPlugins`](#enabledplugins) | Nyalakan atau matikan [plugin](/docs/id/plugins) individual per scope | Plugins and skills | Any file |665| [`enabledPlugins`](#enabledplugins) | Nyalakan atau matikan [plugin](/docs/id/plugins/overview) individual per scope | Plugins and skills | Any file |

666| [`enableWorkflows`](#enableworkflows) | Nyalakan atau matikan [workflow dinamis](/docs/id/workflows) terhadap default rencana Anda | Hooks and automation | Any file |666| [`enableWorkflows`](#enableworkflows) | Nyalakan atau matikan [workflow dinamis](/docs/id/workflows) terhadap default rencana Anda | Hooks and automation | Any file |

667| [`enforceAvailableModels`](#enforceavailablemodels) | Jaga pilihan Default [`/model`](/docs/id/model-config#enforce-the-allowlist-for-the-default-model) tetap dalam daftar izin `availableModels` Anda | Model dan respons | Any file |667| [`enforceAvailableModels`](#enforceavailablemodels) | Jaga pilihan Default [`/model`](/docs/id/model-config#enforce-the-allowlist-for-the-default-model) tetap dalam daftar izin `availableModels` Anda | Model dan respons | Any file |

668| [`env`](#env) | Atur [variabel lingkungan](/docs/id/env-vars#in-settings-files) untuk setiap sesi dan subproses-nya | Memory and context | Any file |668| [`env`](#env) | Atur [variabel lingkungan](/docs/id/env-vars#in-settings-files) untuk setiap sesi dan subproses-nya | Memory and context | Any file |

669| [`externalEditorContext`](#externaleditorcontext) | Tampilkan respons terakhir Claude sebagai komentar ketika Anda menekan [Ctrl+G](/docs/id/interactive-mode#general-controls) untuk mengedit | Global config settings | Global config |669| [`externalEditorContext`](#externaleditorcontext) | Tampilkan respons terakhir Claude sebagai komentar ketika Anda menekan [Ctrl+G](/docs/id/interactive-mode#general-controls) untuk mengedit | Global config settings | Global config |

670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Daftarkan [marketplace](/docs/id/plugin-marketplaces) untuk repositori atau organisasi | Plugins and skills | Any file |670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Daftarkan [marketplace](/docs/id/plugins/overview) untuk repositori atau organisasi | Plugins and skills | Any file |

671| [`fallbackModel`](#fallbackmodel) | Beri nama [model cadangan](/docs/id/model-config#fallback-model-chains) untuk ketika model utama kelebihan beban | Model dan respons | Any file |671| [`fallbackModel`](#fallbackmodel) | Beri nama [model cadangan](/docs/id/model-config#fallback-model-chains) untuk ketika model utama kelebihan beban | Model dan respons | Any file |

672| [`fastMode`](#fastmode) | Nyalakan [mode cepat](/docs/id/fast-mode) untuk sesi tempat tersedia | Model dan respons | Any file |672| [`fastMode`](#fastmode) | Nyalakan [mode cepat](/docs/id/fast-mode) untuk sesi tempat tersedia | Model dan respons | Any file |

673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Perlukan orang untuk menghidupkan [mode cepat](/docs/id/fast-mode) setiap sesi | Model dan respons | Any file |673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Perlukan orang untuk menghidupkan [mode cepat](/docs/id/fast-mode) setiap sesi | Model dan respons | Any file |


712| [`permissions.deny`](#permissions-deny) | Blokir [penggunaan alat](/docs/id/permissions#permission-rule-syntax) yang tercantum, termasuk pembacaan file yang menyimpan rahasia | Permission settings | Any file |712| [`permissions.deny`](#permissions-deny) | Blokir [penggunaan alat](/docs/id/permissions#permission-rule-syntax) yang tercantum, termasuk pembacaan file yang menyimpan rahasia | Permission settings | Any file |

713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Cegah siapa pun memasuki [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Cegah siapa pun memasuki [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |

714| [`plansDirectory`](#plansdirectory) | Pilih tempat [mode plan](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) menulis file rencana | Memory and context | Any file |714| [`plansDirectory`](#plansdirectory) | Pilih tempat [mode plan](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) menulis file rencana | Memory and context | Any file |

715| [`pluginConfigs`](#pluginconfigs) | Simpan jawaban yang Anda berikan dialog konfigurasi [plugin](/docs/id/plugins) | Plugins and skills | User or managed |715| [`pluginConfigs`](#pluginconfigs) | Simpan jawaban yang Anda berikan dialog konfigurasi [plugin](/docs/id/plugins/overview) | Plugins and skills | User or managed |

716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Pilih [marketplace](/docs/id/plugin-marketplaces#managed-marketplace-restrictions) mana yang dapat menampilkan saran instalasi plugin di `/plugin` | Plugins and skills | Managed |716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Pilih [marketplace](/docs/id/plugins/overview) mana yang dapat menampilkan saran instalasi plugin di `/plugin` | Plugins and skills | Managed |

717| [`pluginTrustMessage`](#plugintrustmessage) | Tambahkan teks Anda sendiri ke peringatan kepercayaan [plugin](/docs/id/plugins) | Plugins and skills | Managed |717| [`pluginTrustMessage`](#plugintrustmessage) | Tambahkan teks Anda sendiri ke peringatan kepercayaan [plugin](/docs/id/plugins/overview) | Plugins and skills | Managed |

718| [`policyHelper`](#policyhelper) | Jalankan executable yang menghitung [pengaturan yang dikelola](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) saat startup | Enterprise and managed settings | Managed |718| [`policyHelper`](#policyhelper) | Jalankan executable yang menghitung [pengaturan yang dikelola](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) saat startup | Enterprise and managed settings | Managed |

719| [`policyHelper.path`](#policyhelper-path) | Beri nama [executable pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) yang Claude Code jalankan | Enterprise and managed settings | Managed |719| [`policyHelper.path`](#policyhelper-path) | Beri nama [executable pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) yang Claude Code jalankan | Enterprise and managed settings | Managed |

720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Jalankan kembali [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) di latar belakang pada interval | Enterprise and managed settings | Managed |720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Jalankan kembali [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) di latar belakang pada interval | Enterprise and managed settings | Managed |


785| [`sshConfigs`](#sshconfigs) | Tambahkan [koneksi SSH](/docs/id/desktop#pre-configure-ssh-connections-for-your-team) ke dropdown lingkungan Desktop | Remote, desktop, and notifications | User or managed |785| [`sshConfigs`](#sshconfigs) | Tambahkan [koneksi SSH](/docs/id/desktop#pre-configure-ssh-connections-for-your-team) ke dropdown lingkungan Desktop | Remote, desktop, and notifications | User or managed |

786| [`sshHostAllowlist`](#sshhostallowlist) | Batasi host mana yang dapat dijangkau [sesi SSH Desktop](/docs/id/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remote, desktop, and notifications | Managed |786| [`sshHostAllowlist`](#sshhostallowlist) | Batasi host mana yang dapat dijangkau [sesi SSH Desktop](/docs/id/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remote, desktop, and notifications | Managed |

787| [`statusLine`](#statusline) | Jalankan perintah Anda sendiri untuk merender [baris status](/docs/id/statusline) di bawah prompt | Interface and terminal | Any file |787| [`statusLine`](#statusline) | Jalankan perintah Anda sendiri untuk merender [baris status](/docs/id/statusline) di bawah prompt | Interface and terminal | Any file |

788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Daftar izin sumber [marketplace](/docs/id/plugin-marketplaces) yang dapat ditambahkan dan dipasang pengguna | Plugins and skills | Managed |788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Daftar izin sumber [marketplace](/docs/id/plugins/overview) yang dapat ditambahkan dan dipasang pengguna | Plugins and skills | Managed |

789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Blokir [skill](/docs/id/skills), [agent](/docs/id/sub-agents), [hooks](/docs/id/hooks), dan [server MCP](/docs/id/mcp) dari sumber pengguna dan proyek | Plugins and skills | Managed |789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Blokir [skill](/docs/id/skills), [agent](/docs/id/sub-agents), [hooks](/docs/id/hooks), dan [server MCP](/docs/id/mcp) dari sumber pengguna dan proyek | Plugins and skills | Managed |

790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Kunci [agent](/docs/id/sub-agents) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Kunci [agent](/docs/id/sub-agents) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |

791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Kunci [hooks](/docs/id/hooks) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Kunci [hooks](/docs/id/hooks) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |


794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | Any file |794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | Any file |

795| [`subagentStatusLine`](#subagentstatusline) | Tulis ulang baris dalam tampilan tugas [subagent](/docs/id/sub-agents) dengan perintah Anda sendiri | Interface and terminal | Any file |795| [`subagentStatusLine`](#subagentstatusline) | Tulis ulang baris dalam tampilan tugas [subagent](/docs/id/sub-agents) dengan perintah Anda sendiri | Interface and terminal | Any file |

796| [`switchModelsOnFlag`](#switchmodelsonflag) | Alihkan model secara otomatis atau jeda ketika [pengklasifikasi keamanan](/docs/id/model-config#ask-before-switching) menandai permintaan | Model dan respons | Any file |796| [`switchModelsOnFlag`](#switchmodelsonflag) | Alihkan model secara otomatis atau jeda ketika [pengklasifikasi keamanan](/docs/id/model-config#ask-before-switching) menandai permintaan | Model dan respons | Any file |

797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Hentikan pemuatan [plugin yang diaktifkan di akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Hentikan pemuatan [plugin yang diaktifkan di akun claude.ai Anda](/docs/id/plugins/overview) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |

798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Hentikan pemuatan [skill yang diaktifkan di akun claude.ai Anda](/docs/id/skills#how-synced-skills-behave) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Hentikan pemuatan [skill yang diaktifkan di akun claude.ai Anda](/docs/id/skills#how-synced-skills-behave) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |

799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Matikan penyorotan sintaks dalam diff dan blok kode | Interface and terminal | Any file |799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Matikan penyorotan sintaks dalam diff dan blok kode | Interface and terminal | Any file |

800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Dihapus di v2.1.277, bersama dengan alat `TaskOutput` yang disizingnya | Memory and context | Any file |800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Dihapus di v2.1.277, bersama dengan alat `TaskOutput` yang disizingnya | Memory and context | Any file |


2256 `sandbox.credentials`2256 `sandbox.credentials`

2257</h3>2257</h3>

2258 2258 

2259Deklarasikan file kredensial dan variabel lingkungan untuk [melindungi dari perintah bersandbox](/docs/id/sandboxing#protect-credentials). Setiap entri menamai file `path` atau variabel `name` dan `mode`: `deny` menyembunyikan kredensial di dalam sandbox, dan `mask` menunjukkan perintah bersandbox placeholder sementara [sandbox proxy](/docs/id/sandboxing#mask-credentials) mengganti nilai nyata pada permintaan keluar. Claude Code melindungi hanya entri yang Anda cantumkan; tidak ada daftar deny kredensial bawaan. Memerlukan Claude Code v2.1.187 atau lebih baru.2259Deklarasikan file kredensial dan variabel lingkungan untuk [melindungi dari perintah bersandbox](/docs/id/sandboxing#protect-credentials). Setiap entri menamai file `path` atau variabel `name` dan `mode`: `deny` menyembunyikan kredensial di dalam sandbox, dan `mask` menunjukkan perintah bersandbox placeholder sementara [sandbox proxy](/docs/id/sandboxing#mask-credentials) mengganti nilai nyata pada permintaan keluar. Claude Code melindungi hanya entri yang Anda cantumkan; tidak ada daftar deny kredensial bawaan.

2260 2260 

2261* **Scope**: [`Any file`](#scopes). Claude Code menghormati entri `mask`, `allowPlaintextInject`, `awsPairs`, dan `sigv4` hanya dari pengaturan pengguna, pengaturan yang dikelola, dan flag `--settings`.2261* **Scope**: [`Any file`](#scopes). Claude Code menghormati entri `mask`, `allowPlaintextInject`, `awsPairs`, dan `sigv4` hanya dari pengaturan pengguna, pengaturan yang dikelola, dan flag `--settings`.

2262* **Type**: object dengan `files`, `envVars`, `allowPlaintextInject`, `awsPairs`, dan `sigv4`2262* **Type**: object dengan `files`, `envVars`, `allowPlaintextInject`, `awsPairs`, dan `sigv4`


2275}2275}

2276```2276```

2277 2277 

2278Perlindungan file `deny` adalah bagian dari lapisan sistem file, jadi tidak berlaku ketika Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku. Memerlukan Claude Code v2.1.187 atau lebih baru.2278Perlindungan file `deny` adalah bagian dari lapisan sistem file, jadi tidak berlaku ketika Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku.

2279 2279 

2280<h4 id="invalid-credential-entries-in-managed-settings">2280<h4 id="invalid-credential-entries-in-managed-settings">

2281 Entri kredensial tidak valid dalam pengaturan yang dikelola2281 Entri kredensial tidak valid dalam pengaturan yang dikelola


2293 `sandbox.credentials.files`2293 `sandbox.credentials.files`

2294</h3>2294</h3>

2295 2295 

2296Lindungi file atau direktori kredensial dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code memblokir pembacaan jalur di dalam sandbox, blok baca yang sama dengan [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Dengan `"mode": "mask"`, perintah bersandbox di Linux dan WSL2 membaca salinan sentinel file, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu; di macOS file tidak dapat dibaca di dalam sandbox sebagai gantinya. Memerlukan Claude Code v2.1.187 atau lebih baru, dan `"mode": "mask"` memerlukan v2.1.221 atau lebih baru.2296Lindungi file atau direktori kredensial dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code memblokir pembacaan jalur di dalam sandbox, blok baca yang sama dengan [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Dengan `"mode": "mask"`, perintah bersandbox di Linux dan WSL2 membaca salinan sentinel file, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu; di macOS file tidak dapat dibaca di dalam sandbox sebagai gantinya. `"mode": "mask"` memerlukan Claude Code v2.1.221 atau lebih baru.

2297 2297 

2298* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.2298* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.

2299* **Type**: array objek, masing-masing dengan `path` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for files](#mask-fields-for-files) opsional2299* **Type**: array objek, masing-masing dengan `path` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for files](#mask-fields-for-files) opsional


2314}2314}

2315```2315```

2316 2316 

2317Jalur menggunakan [prefixes](#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. Memerlukan Claude Code v2.1.187 atau lebih baru; entri `mask` memerlukan v2.1.221 atau lebih baru.2317Jalur menggunakan [prefixes](#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. `mask` entri memerlukan Claude Code v2.1.221 atau lebih baru.

2318 2318 

2319Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa. `mask` berlaku untuk file tunggal, jadi cantumkan setiap file kredensial secara terpisah. Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`. [Mask credential files](/docs/id/sandboxing#mask-credential-files) mencakup sumber pengaturan mana yang dihormati dan kapan entri kembali ke `deny`.2319Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa. `mask` berlaku untuk file tunggal, jadi cantumkan setiap file kredensial secara terpisah. Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`. [Mask credential files](/docs/id/sandboxing#mask-credential-files) mencakup sumber pengaturan mana yang dihormati dan kapan entri kembali ke `deny`.

2320 2320 


2370 `sandbox.credentials.envVars`2370 `sandbox.credentials.envVars`

2371</h3>2371</h3>

2372 2372 

2373Lindungi variabel lingkungan dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari lingkungan perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per-sesi, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu, jadi alat seperti `gh` dan `npm` terus mengautentikasi tanpa pernah memegang kredensial nyata. Memerlukan Claude Code v2.1.187 atau lebih baru, dan `"mode": "mask"` memerlukan v2.1.199 atau lebih baru.2373Lindungi variabel lingkungan dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari lingkungan perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per-sesi, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu, jadi alat seperti `gh` dan `npm` terus mengautentikasi tanpa pernah memegang kredensial nyata. `"mode": "mask"` memerlukan Claude Code v2.1.199 atau lebih baru.

2374 2374 

2375* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.2375* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.

2376* **Type**: array objek, masing-masing dengan `name` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional2376* **Type**: array objek, masing-masing dengan `name` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional


2391}2391}

2392```2392```

2393 2393 

2394`name` harus dimulai dengan huruf atau garis bawah dan berisi hanya huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. Memerlukan Claude Code v2.1.187 atau lebih baru; entri `mask` memerlukan v2.1.199 atau lebih baru.2394`name` harus dimulai dengan huruf atau garis bawah dan berisi hanya huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. `mask` entri memerlukan Claude Code v2.1.199 atau lebih baru.

2395 2395 

2396Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask environment variables](/docs/id/sandboxing#mask-environment-variables). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.2396Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask environment variables](/docs/id/sandboxing#mask-environment-variables). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.

2397 2397 


2954 `env`2954 `env`

2955</h3>2955</h3>

2956 2956 

2957Atur variabel lingkungan untuk setiap sesi dan untuk subproses yang dimulai Claude Code darinya. Variabel apa pun dalam [referensi variabel lingkungan](/docs/id/env-vars) dapat masuk di sini, yang merupakan cara Anda menerapkannya ke setiap sesi atau meluncurkannya ke tim Anda.2957Atur variabel lingkungan untuk setiap sesi dan untuk subproses yang dimulai Claude Code darinya. Variabel apa pun dalam [referensi variabel lingkungan](/docs/id/env-vars) dapat masuk di sini, yang merupakan cara Anda menerapkannya ke setiap sesi atau meluncurkannya ke tim Anda. Pengaturan proyek dan lokal tidak dapat menetapkan [beberapa di antaranya](#variables-claude-code-ignores-in-env).

2958 2958 

2959* **Scope**: [`Any file`](#scopes)2959* **Scope**: [`Any file`](#scopes)

2960* **Type**: objek yang memetakan nama variabel ke nilai string2960* **Type**: objek yang memetakan nama variabel ke nilai string


2975 Bagaimana nilai `env` berinteraksi dengan shell Anda2975 Bagaimana nilai `env` berinteraksi dengan shell Anda

2976</h4>2976</h4>

2977 2977 

2978* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan ketika lebih dari satu file pengaturan menetapkan variabel, [yang dengan preseden tertinggi](/docs/id/settings#settings-precedence) berlaku.2978* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan ketika lebih dari satu file pengaturan menetapkan variabel, [yang dengan preseden tertinggi](/docs/id/settings#settings-precedence) berlaku. [Variabel yang Claude Code abaikan dalam `env`](#variables-claude-code-ignores-in-env) mencantumkan pengecualian untuk pengaturan proyek dan lokal.

2979* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong.2979* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong.

2980* `NO_COLOR` dan `FORCE_COLOR` yang ditetapkan di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur di shell Anda sebelum meluncurkan `claude`.2980* `NO_COLOR` dan `FORCE_COLOR` yang ditetapkan di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur di shell Anda sebelum meluncurkan `claude`.

2981* Nilai di sini adalah teks biasa dalam file pengaturan dan mencapai setiap subproses yang dimulai Claude Code. Untuk token pembawa OTLP yang berputar, gunakan [`otelHeadersHelper`](#otelheadershelper); untuk kredensial API, gunakan [`apiKeyHelper`](#apikeyhelper).2981* Nilai di sini adalah teks biasa dalam file pengaturan dan mencapai setiap subproses yang dimulai Claude Code. Untuk token pembawa OTLP yang berputar, gunakan [`otelHeadersHelper`](#otelheadershelper); untuk kredensial API, gunakan [`apiKeyHelper`](#apikeyhelper).


2986 2986 

2987* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi dalam sesi yang berjalan ketika perubahan tersimpan mengubah `env` yang digabungkan.2987* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi dalam sesi yang berjalan ketika perubahan tersimpan mengubah `env` yang digabungkan.

2988* Dari pengaturan proyek dan lokal: setelah Anda mempercayai ruang kerja, atau saat startup dalam mode `-p`, yang tidak pernah menampilkan dialog kepercayaan, dan lagi ketika perubahan tersimpan mengubah `env` yang digabungkan.2988* Dari pengaturan proyek dan lokal: setelah Anda mempercayai ruang kerja, atau saat startup dalam mode `-p`, yang tidak pernah menampilkan dialog kepercayaan, dan lagi ketika perubahan tersimpan mengubah `env` yang digabungkan.

2989* Variabel yang Claude Code klasifikasikan sebagai aman, seperti pemilihan model, batas waktu dan batas, toggle fitur, dan pengaturan telemetri: saat startup dari setiap file pengaturan, terlepas dari [variabel yang tidak dapat ditetapkan pengaturan proyek dan lokal dalam `env`](#variables-claude-code-ignores-in-env).2989* Variabel yang Claude Code klasifikasikan sebagai aman, seperti pemilihan model, batas waktu dan batas, dan toggle fitur: saat startup dari setiap file pengaturan, terlepas dari [variabel yang tidak dapat ditetapkan pengaturan proyek dan lokal dalam `env`](#variables-claude-code-ignores-in-env).

2990* Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru: nilai `env` direktori baru, di atas direktori sebelumnya.2990* Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru: nilai `env` direktori baru, di atas direktori sebelumnya.

2991 2991 

2992<h4 id="variables-claude-code-ignores-in-env">2992<h4 id="variables-claude-code-ignores-in-env">


2997 2997 

2998 * Variabel yang memilih di mana Claude Code menyimpan atau menulis file-nya sendiri: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR`, dan variabel direktori sistem operasi seperti `HOME`, `TMPDIR`, `TMP`, `TEMP`, dan keluarga `XDG_*`.2998 * Variabel yang memilih di mana Claude Code menyimpan atau menulis file-nya sendiri: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR`, dan variabel direktori sistem operasi seperti `HOME`, `TMPDIR`, `TMP`, `TEMP`, dan keluarga `XDG_*`.

2999 * Variabel yang mengekspor konten sesi: [`OTEL_LOG_RAW_API_BODIES`](/docs/id/env-vars#variables) dan pasangan pelacakan beta terperinci `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT`.2999 * Variabel yang mengekspor konten sesi: [`OTEL_LOG_RAW_API_BODIES`](/docs/id/env-vars#variables) dan pasangan pelacakan beta terperinci `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT`.

3000 * Variabel [OpenTelemetry exporter](/docs/id/monitoring-usage) yang menghidupkan telemetri, memilih ke mana telemetri pergi, atau memilih konten apa yang ditangkapnya:

3001 

3002 * `CLAUDE_CODE_ENABLE_TELEMETRY`, ditambah pasangan telemetri yang ditingkatkan beta `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` dan `ENABLE_ENHANCED_TELEMETRY_BETA`

3003 * Pemilih exporter `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`

3004 * Variabel konten `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_ASSISTANT_RESPONSES`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`

3005 * Variabel `OTEL_EXPORTER_OTLP_*` yang namanya berakhir dengan `_ENDPOINT`, `_HEADERS`, `_PROTOCOL`, `_CERTIFICATE`, `_CLIENT_KEY`, atau `_INSECURE`, dalam bentuk generik dan per-sinyal, seperti `OTEL_EXPORTER_OTLP_ENDPOINT` dan `OTEL_EXPORTER_OTLP_METRICS_HEADERS`

3006 * `OTEL_EXPORTER_PROMETHEUS_HOST` dan `OTEL_EXPORTER_PROMETHEUS_PORT`

3007 

3008 Hanya nilai-nilai ini yang masih berlaku dari pengaturan proyek dan lokal, karena mereka mematikan sesuatu: `none` untuk tiga pemilih exporter, dan nilai off seperti `0` untuk `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`. Nilai seperti itu menimpa variabel yang sama dalam pengaturan pengguna Anda, tetapi bukan yang ditetapkan lingkungan tempat Anda memulai Claude Code, file `--settings`, atau pengaturan terkelola.

3009 

3010 Ketika file pengaturan proyek atau lokal menetapkan variabel dalam grup ini, sesi interaktif lokal menampilkan pemberitahuan saat startup. Jalankan `/status` atau `claude doctor` untuk melihat mana yang Claude Code abaikan dan mana yang mematikan telemetri; keduanya mencantumkan nama, tidak pernah nilai. Jalankan non-interaktif dengan `-p` atau sesi Agent SDK tidak menampilkan pemberitahuan, jadi periksa bahwa kolektor Anda masih menerima data setelah Anda upgrade. Jika tidak, atur variabel dalam pengaturan pengguna Anda, pengaturan terkelola, lingkungan pekerjaan, atau file yang Anda lewatkan dengan `--settings`.

3011 

3012 Mengabaikan grup ini dalam pengaturan proyek dan lokal memerlukan Claude Code v2.1.282 atau lebih baru.

3000 * Variabel yang mengubah cara Claude Code dimulai atau disinkronkan, seperti `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR`, dan `CLAUDE_CODE_PLUGIN_SEED_DIR`.3013 * Variabel yang mengubah cara Claude Code dimulai atau disinkronkan, seperti `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR`, dan `CLAUDE_CODE_PLUGIN_SEED_DIR`.

3001 3014 

3002 Sebelum v2.1.251, pengaturan proyek dan lokal dapat menetapkan setiap variabel yang daftar ini namakan kecuali `HOME`, `XDG_CONFIG_HOME`, dan variabel yang mengubah cara Claude Code dimulai atau disinkronkan.3015 Sebelum v2.1.251, pengaturan proyek dan lokal dapat menetapkan variabel dalam daftar ini yang memilih di mana Claude Code menulis file-nya atau yang mengekspor konten sesi, kecuali `HOME` dan `XDG_CONFIG_HOME`.

3003* Variabel identitas yang dimiliki lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.3016* Variabel identitas yang dimiliki lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.

3004* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/id/env-vars#variables), yang diekspor Claude Code sendiri, diabaikan dari setiap file. Mengabaikan variabel soket memerlukan Claude Code v2.1.224 atau lebih baru, dan mengabaikan token memerlukan v2.1.228 atau lebih baru.3017* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/id/env-vars#variables), yang diekspor Claude Code sendiri, diabaikan dari setiap file. Mengabaikan variabel soket memerlukan Claude Code v2.1.224 atau lebih baru, dan mengabaikan token memerlukan v2.1.228 atau lebih baru.

3005* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau lebih baru.3018* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau lebih baru.


3464 `respondToBashCommands`3477 `respondToBashCommands`

3465</h3>3478</h3>

3466 3479 

3467Pilih apakah Claude merespons setelah Anda menjalankan perintah shell dengan [prefix `!`](/docs/id/interactive-mode#shell-mode-with-prefix) di kotak input. Secara default, Claude Code menambahkan output perintah ke percakapan dan Claude membalasnya. Atur kunci ini ke `false` untuk menambahkan output ke konteks tanpa balasan, sehingga Anda dapat menjalankan beberapa perintah dan menanyakan tentang mereka bersama-sama. Memerlukan Claude Code v2.1.186 atau lebih baru.3480Pilih apakah Claude merespons setelah Anda menjalankan perintah shell dengan [prefix `!`](/docs/id/interactive-mode#shell-mode-with-prefix) di kotak input. Secara default, Claude Code menambahkan output perintah ke percakapan dan Claude membalasnya. Atur kunci ini ke `false` untuk menambahkan output ke konteks tanpa balasan, sehingga Anda dapat menjalankan beberapa perintah dan menanyakan tentang mereka bersama-sama.

3468 3481 

3469* **Scope**: [`Any file`](#scopes)3482* **Scope**: [`Any file`](#scopes)

3470* **Type**: Boolean3483* **Type**: Boolean


3478}3491}

3479```3492```

3480 3493 

3481Lihat [Shell mode dengan prefix `!`](/docs/id/interactive-mode#shell-mode-with-prefix). Memerlukan Claude Code v2.1.186 atau lebih baru.3494Lihat [Shell mode dengan prefix `!`](/docs/id/interactive-mode#shell-mode-with-prefix).

3482 3495 

3483<h3 id="showclearcontextonplanaccept">3496<h3 id="showclearcontextonplanaccept">

3484 `showClearContextOnPlanAccept`3497 `showClearContextOnPlanAccept`


3985Sesuaikan atribusi yang ditambahkan Claude Code ke commit git dan pull request. Commit mendapatkan [git trailer](https://git-scm.com/docs/git-interpret-trailers) seperti `Co-Authored-By` secara default; deskripsi pull request mendapatkan teks biasa. Atur setiap bagian secara terpisah dengan sub-kunci di bawah ini.3998Sesuaikan atribusi yang ditambahkan Claude Code ke commit git dan pull request. Commit mendapatkan [git trailer](https://git-scm.com/docs/git-interpret-trailers) seperti `Co-Authored-By` secara default; deskripsi pull request mendapatkan teks biasa. Atur setiap bagian secara terpisah dengan sub-kunci di bawah ini.

3986 3999 

3987* **Scope**: [`Any file`](#scopes)4000* **Scope**: [`Any file`](#scopes)

3988* **Type**: object dengan string `commit` dan `pr` serta Boolean `sessionUrl`4001* **Type**: object dengan string `commit` dan `pr` serta Boolean `sessionUrl`, atau `false` untuk menyembunyikan semua atribusi. Nilai `false` memerlukan Claude Code v2.1.281 atau lebih baru; versi sebelumnya menolaknya dan [melewati seluruh file pengaturan pengguna, proyek, atau lokal](/docs/id/settings#fix-a-broken-settings-file) yang menahannya

3989* **Default**: tidak diatur, jadi Claude Code menggunakan atribusi standar yang ditampilkan di bawah setiap sub-kunci4002* **Default**: tidak diatur, jadi Claude Code menggunakan atribusi standar yang ditampilkan di bawah setiap sub-kunci

3990 4003 

4004Untuk menyembunyikan semua atribusi, atur `attribution` ke `false`. Dalam file pengaturan yang juga dibaca versi sebelumnya, atur [`commit`](#attribution-commit) dan [`pr`](#attribution-pr) ke string kosong dan [`sessionUrl`](#attribution-sessionurl) ke `false` sebagai gantinya.

4005 

3991Contoh ini mengganti atribusi commit, menghapus atribusi pull request, dan menghilangkan tautan sesi:4006Contoh ini mengganti atribusi commit, menghapus atribusi pull request, dan menghilangkan tautan sesi:

3992 4007 

3993```json settings.json theme={null}4008```json settings.json theme={null}


4000}4015}

4001```4016```

4002 4017 

4003Untuk menyembunyikan semua atribusi, atur [`commit`](#attribution-commit) dan [`pr`](#attribution-pr) ke string kosong dan [`sessionUrl`](#attribution-sessionurl) ke `false`. Setelah Anda mengatur `commit` atau `pr`, Claude Code mengabaikan pengaturan `includeCoAuthoredBy` yang sudah usang dan menggunakan teks defaultnya untuk mana pun dari keduanya yang Anda biarkan tidak diatur.4018Setelah Anda mengatur `commit` atau `pr`, Claude Code mengabaikan pengaturan `includeCoAuthoredBy` yang sudah usang dan menggunakan teks defaultnya untuk mana pun dari keduanya yang Anda biarkan tidak diatur.

4004 4019 

4005Claude Code memberitahu Claude bahwa instruksi Anda sendiri tentang atribusi, seperti aturan CLAUDE.md atau [memory](/docs/id/memory), mengambil alih baris commit dan PR ini, kecuali baris diatur dalam [managed settings](/docs/id/managed-settings).4020Claude Code memberitahu Claude bahwa instruksi Anda sendiri tentang atribusi, seperti aturan CLAUDE.md atau [memory](/docs/id/memory), mengambil alih baris commit dan PR ini, kecuali baris diatur dalam [managed settings](/docs/id/managed-settings).

4006 4021 


4026}4041}

4027```4042```

4028 4043 

4029Untuk menyembunyikan semua atribusi hari ini, atur [`attribution.commit`](#attribution-commit) dan [`attribution.pr`](#attribution-pr) ke string kosong dan [`attribution.sessionUrl`](#attribution-sessionurl) ke `false`.4044Untuk menyembunyikan semua atribusi, lihat [`attribution`](#attribution).

4030 4045 

4031<h3 id="includegitinstructions">4046<h3 id="includegitinstructions">

4032 `includeGitInstructions`4047 `includeGitInstructions`


4184* **Hook terkelola dan SDK berjalan**: hooks dari pengaturan terkelola dan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses4199* **Hook terkelola dan SDK berjalan**: hooks dari pengaturan terkelola dan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses

4185* **Hook plugin yang dipaksa diaktifkan berjalan**: hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda melalui [`enabledPlugins`](#enabledplugins). Claude Code cocok dengan ID `plugin@marketplace` lengkap, jadi plugin dengan nama yang sama dari marketplace berbeda tetap diblokir. Ini memungkinkan Anda mendistribusikan hooks yang telah diverifikasi melalui marketplace organisasi sambil memblokir segalanya4200* **Hook plugin yang dipaksa diaktifkan berjalan**: hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda melalui [`enabledPlugins`](#enabledplugins). Claude Code cocok dengan ID `plugin@marketplace` lengkap, jadi plugin dengan nama yang sama dari marketplace berbeda tetap diblokir. Ini memungkinkan Anda mendistribusikan hooks yang telah diverifikasi melalui marketplace organisasi sambil memblokir segalanya

4186* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dari plugin lain, dan hooks yang dideklarasikan dalam frontmatter agent4201* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dari plugin lain, dan hooks yang dideklarasikan dalam frontmatter agent

4187* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugin-marketplaces#command-sources), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit4202* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit

4188* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugin-marketplaces#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru4203* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru

4189* **Status line dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [status line dan file suggestion gates](#status-line-and-file-suggestion-gates)4204* **Status line dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [status line dan file suggestion gates](#status-line-and-file-suggestion-gates)

4190 4205 

4191Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.4206Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.


4369 Plugins dan skills4384 Plugins dan skills

4370</h2>4385</h2>

4371 4386 

4372Aktifkan plugins, daftarkan marketplaces, batasi sumber plugin mana yang diizinkan organisasi, dan kontrol skills mana yang dimuat. Untuk menginstal dan membangun plugins, lihat [Plugins](/docs/id/plugins).4387Aktifkan plugins, daftarkan marketplaces, batasi sumber plugin mana yang diizinkan organisasi, dan kontrol skills mana yang dimuat. Untuk menginstal dan membangun plugins, lihat [Plugins](/docs/id/plugins/overview).

4373 4388 

4374<h3 id="disablebundledskills">4389<h3 id="disablebundledskills">

4375 `disableBundledSkills`4390 `disableBundledSkills`


4465 `syncClaudeAiPlugins`4480 `syncClaudeAiPlugins`

4466</h3>4481</h3>

4467 4482 

4468Matikan unduhan [plugins yang diaktifkan untuk akun claude.ai Anda](/docs/id/plugins-reference#synced-plugins). Claude Code mengunduhnya ke `~/.claude/plugins/synced/` pada awal sesi terminal di mana Anda masuk dengan akun claude.ai Anda, dan dalam sesi Cowork dan cloud, dan memuat masing-masing sebagai `<name>@synced`. Atur `false` untuk menghentikan unduhan itu dan berhenti memuat plugins yang sudah disinkronkan. Claude Code hanya menghormati `false`: `true` sama dengan unset dan tidak menghidupkan sinkronisasi di mana sebaliknya mati. Memerlukan Claude Code v2.1.273 atau lebih baru.4483Matikan unduhan [plugins yang diaktifkan untuk akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins). Claude Code mengunduhnya ke `~/.claude/plugins/synced/` pada awal sesi terminal di mana Anda masuk dengan akun claude.ai Anda dan dalam sesi Cowork, dan memuat masing-masing sebagai `<name>@synced`. Atur `false` untuk menghentikan unduhan itu dan berhenti memuat plugins yang sudah disinkronkan. Claude Code hanya menghormati `false`: `true` sama dengan unset dan tidak menghidupkan sinkronisasi di mana sebaliknya mati. Memerlukan Claude Code v2.1.273 atau lebih baru.

4469 4484 

4470* **Scope**: [`User, local, or managed`](#scopes), dan file yang dilewatkan dengan `--settings`. Repositori tidak dapat mematikannya untuk Anda.4485* **Scope**: [`User, local, or managed`](#scopes), dan file yang dilewatkan dengan `--settings`. Repositori tidak dapat mematikannya untuk Anda.

4471* **Type**: Boolean4486* **Type**: Boolean


4514 4529 

4515Blokir sumber marketplace plugin untuk organisasi Anda. Claude Code memeriksa daftar blokir pada penambahan marketplace dan pada instalasi, pembaruan, penyegaran, dan auto-update plugin, jadi marketplace yang ditambahkan seseorang sebelum Anda menetapkan kebijakan tidak dapat digunakan untuk mengambil plugins. Sumber yang diblokir diperiksa sebelum unduhan, jadi mereka tidak pernah menyentuh filesystem.4530Blokir sumber marketplace plugin untuk organisasi Anda. Claude Code memeriksa daftar blokir pada penambahan marketplace dan pada instalasi, pembaruan, penyegaran, dan auto-update plugin, jadi marketplace yang ditambahkan seseorang sebelum Anda menetapkan kebijakan tidak dapat digunakan untuk mengambil plugins. Sumber yang diblokir diperiksa sebelum unduhan, jadi mereka tidak pernah menyentuh filesystem.

4516 4531 

4517Jika Anda menetapkan kunci ini dalam [konsol admin claude.ai](/docs/id/server-managed-settings), claude.ai juga menerapkannya ketika siapa pun di organisasi Anda menambahkan marketplace dari repositori git di claude.ai, seperti yang dijelaskan [Bagaimana pembatasan bekerja](/docs/id/plugin-marketplaces#how-restrictions-work).4532Jika Anda menetapkan kunci ini dalam [konsol admin claude.ai](/docs/id/server-managed-settings), claude.ai juga menerapkannya ketika siapa pun di organisasi Anda menambahkan marketplace dari repositori git di claude.ai, seperti yang dijelaskan [Bagaimana pembatasan bekerja](/docs/id/plugins/org#restrict-what-users-can-install).

4518 4533 

4519* **Scope**: [`Managed`](#scopes)4534* **Scope**: [`Managed`](#scopes)

4520* **Type**: array objek sumber marketplace, dalam bentuk yang sama seperti [`strictKnownMarketplaces`](#allowed-source-types)4535* **Type**: array objek sumber marketplace, dalam bentuk yang sama seperti [`strictKnownMarketplaces`](#allowed-source-types)


4530}4545}

4531```4546```

4532 4547 

4533Entri `github` dapat menggunakan [bentuk owner-wildcard](#owner-wildcards) `"owner/*"` untuk memblokir setiap repositori di bawah pemilik GitHub itu, yang memerlukan Claude Code v2.1.223 atau lebih baru. Tambahkan `{ "source": "skills-dir" }` untuk menghentikan Claude Code memuat [`@skills-dir` plugins](/docs/id/plugins-reference#skills-directory-plugins) dari `~/.claude/skills/` tanpa membatasi marketplace apa pun. Lihat [Pembatasan marketplace yang dikelola](/docs/id/plugin-marketplaces#managed-marketplace-restrictions).4548Entri `github` dapat menggunakan [bentuk owner-wildcard](#owner-wildcards) `"owner/*"` untuk memblokir setiap repositori di bawah pemilik GitHub itu, yang memerlukan Claude Code v2.1.223 atau lebih baru. Tambahkan `{ "source": "skills-dir" }` untuk menghentikan Claude Code memuat [`@skills-dir` plugins](/docs/id/plugins/loading#plugins-shared-through-a-repository) dari `~/.claude/skills/` tanpa membatasi marketplace apa pun. Lihat [Pembatasan marketplace yang dikelola](/docs/id/plugins/org#restrict-what-users-can-install).

4534 4549 

4535<h3 id="channelsenabled">4550<h3 id="channelsenabled">

4536 `channelsEnabled`4551 `channelsEnabled`


4556 `disableCommandPluginSources`4571 `disableCommandPluginSources`

4557</h3>4572</h3>

4558 4573 

4559Blokir [sumber plugin `command`](/docs/id/plugin-marketplaces#command-sources), yang menginstal plugin dengan menjalankan perintah yang dideklarasikan marketplace pada mesin pengguna. Ketika Anda mengaturnya ke `true`, Claude Code tidak pernah menjalankan perintah, tidak menginstal atau memperbarui plugins yang bersumber perintah, dan berhenti memuat yang sudah diinstal. Atur ke `false` untuk mengizinkannya secara eksplisit. Kapan pun itu memblokir sumber perintah, apakah Anda mengaturnya ke `true` atau membiarkannya unset di bawah [`allowManagedHooksOnly`](#allowmanagedhooksonly), itu juga memblokir perintah marketplace [`headersHelper`](/docs/id/plugin-marketplaces#authenticate-archive-downloads), kecuali untuk marketplace yang managed settings sendiri deklarasikan. Memerlukan Claude Code v2.1.229 atau lebih baru, dan blokir `headersHelper` memerlukan v2.1.238 atau lebih baru.4574Blokir [sumber plugin `command`](/docs/id/plugins/marketplace-reference#command-plugin-source), yang menginstal plugin dengan menjalankan perintah yang dideklarasikan marketplace pada mesin pengguna. Ketika Anda mengaturnya ke `true`, Claude Code tidak pernah menjalankan perintah, tidak menginstal atau memperbarui plugins yang bersumber perintah, dan berhenti memuat yang sudah diinstal. Atur ke `false` untuk mengizinkannya secara eksplisit. Kapan pun itu memblokir sumber perintah, apakah Anda mengaturnya ke `true` atau membiarkannya unset di bawah [`allowManagedHooksOnly`](#allowmanagedhooksonly), itu juga memblokir perintah marketplace [`headersHelper`](/docs/id/plugins/host-marketplace#authenticate-archive-downloads), kecuali untuk marketplace yang managed settings sendiri deklarasikan. Memerlukan Claude Code v2.1.229 atau lebih baru, dan blokir `headersHelper` memerlukan v2.1.238 atau lebih baru.

4560 4575 

4561* **Scope**: [`Managed`](#scopes)4576* **Scope**: [`Managed`](#scopes)

4562* **Type**: Boolean4577* **Type**: Boolean


4588}4603}

4589```4604```

4590 4605 

4591Nama berlaku hanya ketika marketplace terdaftar di mesin dan sumber terdaftarnya juga dideklarasikan dalam managed settings yang sama, baik sebagai entri [`extraKnownMarketplaces`](#extraknownmarketplaces) untuk nama itu atau sebagai entri [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code mengabaikan marketplace yang terdaftar dari sumber berbeda di bawah nama yang diizinkan. Marketplace resmi dikecualikan dari persyaratan sumber: mengizinkan nama saja sudah cukup, karena nama itu hanya dapat terdaftar dari sumber Anthropic resmi. Lihat [Sarankan plugins berdasarkan konteks](/docs/id/plugin-relevance).4606Nama berlaku hanya ketika marketplace terdaftar di mesin dan sumber terdaftarnya juga dideklarasikan dalam managed settings yang sama, baik sebagai entri [`extraKnownMarketplaces`](#extraknownmarketplaces) untuk nama itu atau sebagai entri [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code mengabaikan marketplace yang terdaftar dari sumber berbeda di bawah nama yang diizinkan. Marketplace resmi dikecualikan dari persyaratan sumber: mengizinkan nama saja sudah cukup, karena nama itu hanya dapat terdaftar dari sumber Anthropic resmi. Lihat [Sarankan plugins berdasarkan konteks](/docs/id/plugins/relevance).

4592 4607 

4593<h3 id="plugintrustmessage">4608<h3 id="plugintrustmessage">

4594 `pluginTrustMessage`4609 `pluginTrustMessage`


4612 4627 

4613Batasi sumber marketplace plugin mana yang dapat ditambahkan dan diinstal oleh orang-orang di organisasi Anda. Claude Code memberlakukan daftar allowlist pada penambahan marketplace dan pada instalasi, pembaruan, penyegaran, dan auto-update plugin, sebelum operasi jaringan atau filesystem apa pun, jadi marketplace yang ditambahkan seseorang sebelum Anda menetapkan kebijakan tidak dapat digunakan untuk mengambil plugins setelah sumbernya tidak lagi cocok. Pengguna yang diblokir melihat kesalahan yang menamai kebijakan yang dikelola.4628Batasi sumber marketplace plugin mana yang dapat ditambahkan dan diinstal oleh orang-orang di organisasi Anda. Claude Code memberlakukan daftar allowlist pada penambahan marketplace dan pada instalasi, pembaruan, penyegaran, dan auto-update plugin, sebelum operasi jaringan atau filesystem apa pun, jadi marketplace yang ditambahkan seseorang sebelum Anda menetapkan kebijakan tidak dapat digunakan untuk mengambil plugins setelah sumbernya tidak lagi cocok. Pengguna yang diblokir melihat kesalahan yang menamai kebijakan yang dikelola.

4614 4629 

4615Jika Anda menetapkan kunci ini dalam [konsol admin claude.ai](/docs/id/server-managed-settings), claude.ai juga menerapkannya ketika siapa pun di organisasi Anda menambahkan marketplace dari repositori git di claude.ai, seperti yang dijelaskan [Bagaimana pembatasan bekerja](/docs/id/plugin-marketplaces#how-restrictions-work).4630Jika Anda menetapkan kunci ini dalam [konsol admin claude.ai](/docs/id/server-managed-settings), claude.ai juga menerapkannya ketika siapa pun di organisasi Anda menambahkan marketplace dari repositori git di claude.ai, seperti yang dijelaskan [Bagaimana pembatasan bekerja](/docs/id/plugins/org#restrict-what-users-can-install).

4616 4631 

4617* **Scope**: [`Managed`](#scopes)4632* **Scope**: [`Managed`](#scopes)

4618* **Type**: array objek sumber marketplace; lihat [Tipe sumber yang diizinkan](#allowed-source-types)4633* **Type**: array objek sumber marketplace; lihat [Tipe sumber yang diizinkan](#allowed-source-types)


4630}4645}

4631```4646```

4632 4647 

4633Anda juga dapat menulis kunci ini sebagai `allowedMarketplaces`; [Alias kunci Marketplace](#marketplace-key-aliases) menjelaskan bagaimana Claude Code memperlakukan alias dan versi mana yang menerimanya. Kunci ini adalah gerbang kebijakan: itu mengontrol apa yang dapat ditambahkan pengguna tetapi tidak mendaftarkan apa pun. Untuk membatasi dan pra-daftar dalam satu file, lihat [Gabungkan dengan `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Untuk tampilan yang menghadap pengguna, lihat [Pembatasan marketplace yang dikelola](/docs/id/plugin-marketplaces#managed-marketplace-restrictions).4648Anda juga dapat menulis kunci ini sebagai `allowedMarketplaces`; [Alias kunci Marketplace](#marketplace-key-aliases) menjelaskan bagaimana Claude Code memperlakukan alias dan versi mana yang menerimanya. Kunci ini adalah gerbang kebijakan: itu mengontrol apa yang dapat ditambahkan pengguna tetapi tidak mendaftarkan apa pun. Untuk membatasi dan pra-daftar dalam satu file, lihat [Gabungkan dengan `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Untuk tampilan yang menghadap pengguna, lihat [Pembatasan marketplace yang dikelola](/docs/id/plugins/org#restrict-what-users-can-install).

4634 4649 

4635<h4 id="allowed-source-types">4650<h4 id="allowed-source-types">

4636 Tipe sumber yang diizinkan4651 Tipe sumber yang diizinkan


4639Setiap entri di bawah menunjukkan satu entri daftar allowlist per tipe sumber dan bidang yang diterimanya. Sebagian besar tipe cocok persis; `hostPattern` dan `pathPattern` cocok dengan regex, dan entri `github` dapat menggunakan [wildcard pemilik](#owner-wildcards).4654Setiap entri di bawah menunjukkan satu entri daftar allowlist per tipe sumber dan bidang yang diterimanya. Sebagian besar tipe cocok persis; `hostPattern` dan `pathPattern` cocok dengan regex, dan entri `github` dapat menggunakan [wildcard pemilik](#owner-wildcards).

4640 4655 

4641| Source | Contoh entri | Bidang |4656| Source | Contoh entri | Bidang |

4642| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------ |4657| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- |

4643| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` diperlukan; `ref` adalah cabang atau tag; `path` adalah subdirektori |4658| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` diperlukan; `ref` adalah cabang atau tag; `path` adalah subdirektori |

4644| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` diperlukan; `ref` dan `path` seperti untuk `github` |4659| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` diperlukan; `ref` dan `path` seperti untuk `github` |

4645| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` diperlukan; `headers` menambahkan header HTTP untuk akses yang diautentikasi |4660| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` diperlukan; `headers` menambahkan header HTTP untuk akses yang diautentikasi |

4646| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` diperlukan, jalur absolut ke file `marketplace.json` |4661| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` diperlukan, jalur absolut ke file `marketplace.json` |

4647| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` diperlukan, jalur absolut ke direktori yang berisi `.claude-plugin/marketplace.json` |4662| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` diperlukan, jalur absolut ke direktori yang berisi `.claude-plugin/marketplace.json` |

4648| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` diperlukan, regex yang cocok dengan host marketplace |4663| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` diperlukan, regex yang cocok di mana saja dalam host marketplace; jangkarnya dengan `^` dan `$` untuk mencocokkan seluruh host |

4649| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` diperlukan, regex yang cocok dengan `path` dari sumber `file` dan `directory` |4664| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` diperlukan, regex yang cocok di mana saja dalam `path` dari sumber `file` dan `directory`; mulai dengan `^` untuk menancapkan awalan |

4650| `skills-dir` | `{ "source": "skills-dir" }` | Tidak ada bidang. Memilih kembali pemindaian plugin `~/.claude/skills/` |4665| `skills-dir` | `{ "source": "skills-dir" }` | Tidak ada bidang. Memilih kembali pemindaian plugin `~/.claude/skills/` |

4651 4666 

4652Tiga tipe sumber membawa aturan di luar tabel:4667Tiga tipe sumber membawa aturan di luar tabel:

4653 4668 

4654* **`url`**: marketplace URL hanya mengunduh file `marketplace.json`, dan Claude Code tidak mengambil file plugin dengan jalur relatif dari server itu, jadi plugins-nya harus menggunakan [sumber plugin](/docs/id/plugin-marketplaces#plugin-sources) selain jalur relatif, seperti URL arsip, yang dapat berada di host yang sama. Untuk plugins dengan jalur relatif, gunakan marketplace berbasis Git sebagai gantinya. Lihat [Plugins dengan jalur relatif gagal dalam marketplaces berbasis URL](/docs/id/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).4669* **`url`**: marketplace URL hanya mengunduh file `marketplace.json`, dan Claude Code tidak mengambil file plugin dengan jalur relatif dari server itu, jadi plugins-nya harus menggunakan [sumber plugin](/docs/id/plugins/marketplace-reference#plugin-sources) selain jalur relatif, seperti URL arsip, yang dapat berada di host yang sama. Untuk plugins dengan jalur relatif, gunakan marketplace berbasis Git sebagai gantinya. Lihat [Plugins dengan jalur relatif gagal dalam marketplaces berbasis URL](/docs/id/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces).

4655* **`hostPattern`**: gunakan untuk mengizinkan setiap marketplace di server GitHub Enterprise atau GitLab internal tanpa mencantumkan setiap repositori. Claude Code mencocokkan sumber `github` terhadap `github.com`, mengambil hostname dari sumber `url`, dan mengambilnya dari sumber `git` tergantung pada bentuk [git URL](https://git-scm.com/docs/git-clone#_git_urls):4670* **`hostPattern`**: gunakan untuk mengizinkan setiap marketplace di server GitHub Enterprise atau GitLab internal tanpa mencantumkan setiap repositori. Claude Code mencocokkan sumber `github` terhadap `github.com`, mengambil hostname dari sumber `url`, dan mengambilnya dari sumber `git` tergantung pada bentuk [git URL](https://git-scm.com/docs/git-clone#_git_urls):

4656 4671 

4657 * URL dengan skema, seperti `https://` atau `ssh://`: hostname dalam URL.4672 * URL dengan skema, seperti `https://` atau `ssh://`: hostname dalam URL.


4661 Sumber `file` dan `directory` tidak memiliki host dan tidak pernah cocok dengan entri `hostPattern`.4676 Sumber `file` dan `directory` tidak memiliki host dan tidak pernah cocok dengan entri `hostPattern`.

4662* **`pathPattern`**: gunakan untuk mengizinkan marketplaces filesystem bersama entri `hostPattern` untuk sumber jaringan. `".*"` mengizinkan setiap jalur lokal; pola yang lebih sempit seperti `"^/opt/approved/"` membatasi ke direktori.4677* **`pathPattern`**: gunakan untuk mengizinkan marketplaces filesystem bersama entri `hostPattern` untuk sumber jaringan. `".*"` mengizinkan setiap jalur lokal; pola yang lebih sempit seperti `"^/opt/approved/"` membatasi ke direktori.

4663 4678 

4664Daftar allowlist apa pun, bahkan yang kosong, juga menghentikan Claude Code memuat [`@skills-dir` plugins](/docs/id/plugins-reference#skills-directory-plugins) dari `~/.claude/skills/`. Tambahkan entri `{ "source": "skills-dir" }` untuk terus memuat mereka; entri tidak memiliki arti di luar kunci ini dan `blockedMarketplaces`.4679Daftar allowlist apa pun, bahkan yang kosong, juga menghentikan Claude Code memuat [`@skills-dir` plugins](/docs/id/plugins/loading#plugins-shared-through-a-repository) dari `~/.claude/skills/`. Tambahkan entri `{ "source": "skills-dir" }` untuk terus memuat mereka; entri tidak memiliki arti di luar kunci ini dan `blockedMarketplaces`.

4665 4680 

4666<h4 id="owner-wildcards">4681<h4 id="owner-wildcards">

4667 Wildcard pemilik4682 Owner wildcards

4668</h4>4683</h4>

4669 4684 

4670Entri `github` yang nilai `repo`-nya adalah `"<owner>/*"` cocok dengan setiap repositori di bawah pemilik GitHub itu. Wildcard pemilik memerlukan Claude Code v2.1.223 atau lebih baru dan hanya bekerja dalam `strictKnownMarketplaces` dan `blockedMarketplaces`. Di tempat lain sumber `github` muncul, seperti `extraKnownMarketplaces` atau `/plugin marketplace add`, nilai `repo` harus menamai satu repositori. Sebelum v2.1.223, Claude Code membandingkan entri secara harfiah, jadi entri daftar allowlist tidak cocok dengan repositori apa pun dan entri daftar blokir tidak memblokir apa pun; entri repositori tunggal diberlakukan pada setiap versi.4685Entri `github` yang nilai `repo`-nya adalah `"<owner>/*"` cocok dengan setiap repositori di bawah pemilik GitHub itu. Wildcard pemilik memerlukan Claude Code v2.1.223 atau lebih baru dan hanya bekerja dalam `strictKnownMarketplaces` dan `blockedMarketplaces`. Di tempat lain sumber `github` muncul, seperti `extraKnownMarketplaces` atau `/plugin marketplace add`, nilai `repo` harus menamai satu repositori. Sebelum v2.1.223, Claude Code membandingkan entri secara harfiah, jadi entri daftar allowlist tidak cocok dengan repositori apa pun dan entri daftar blokir tidak memblokir apa pun; entri repositori tunggal diberlakukan pada setiap versi.


4679}4694}

4680```4695```

4681 4696 

4682Hanya seluruh posisi nama-repositori yang dapat menjadi wildcard. Claude Code membandingkan entri seperti `*`, `*/plugins`, atau `acme-corp/tools-*` secara harfiah, jadi mereka tidak cocok dengan repositori apa pun.4697Hanya seluruh posisi nama-repositori yang dapat menjadi wildcard. Claude Code mengabaikan entri seperti `*`, `*/plugins`, atau `acme-corp/tools-*` sebagai tidak valid, jadi mereka tidak cocok dengan repositori apa pun.

4683 4698 

4684Aturan pencocokan berbeda antara dua pengaturan:4699Aturan pencocokan berbeda antara dua pengaturan:

4685 4700 


4691| `path` | Lebih longgar daripada aturan entri yang tepat: entri dengan `path` memerlukan nilai yang tepat itu, sementara entri tanpa satu cocok dengan jalur apa pun di dalam repositori | Entri tanpa `path` memblokir semua jalur dari repositori yang cocok dengannya |4706| `path` | Lebih longgar daripada aturan entri yang tepat: entri dengan `path` memerlukan nilai yang tepat itu, sementara entri tanpa satu cocok dengan jalur apa pun di dalam repositori | Entri tanpa `path` memblokir semua jalur dari repositori yang cocok dengannya |

4692 4707 

4693<h4 id="exact-matching">4708<h4 id="exact-matching">

4694 Pencocokan yang tepat4709 Exact matching

4695</h4>4710</h4>

4696 4711 

4697Untuk setiap tipe sumber kecuali entri `github` wildcard pemilik dan entri `hostPattern` dan `pathPattern` yang cocok dengan regex, Claude Code hanya mengizinkan penambahan pengguna ketika sumber marketplace cocok dengan entri secara tepat. Untuk sumber berbasis git `github` dan `git`, pencocokan yang tepat mencakup bidang opsional:4712Untuk setiap tipe sumber kecuali entri `github` wildcard pemilik dan entri `hostPattern` dan `pathPattern` yang cocok dengan regex, Claude Code hanya mengizinkan penambahan pengguna ketika sumber marketplace cocok dengan entri secara tepat. Untuk sumber berbasis git `github` dan `git`, pencocokan yang tepat mencakup bidang opsional:


4706* `{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }` dan `{ "source": "github", "repo": "acme-corp/plugins" }`4721* `{ "source": "github", "repo": "acme-corp/plugins", "path": "marketplace" }` dan `{ "source": "github", "repo": "acme-corp/plugins" }`

4707 4722 

4708<h4 id="allow-only-the-official-marketplace">4723<h4 id="allow-only-the-official-marketplace">

4709 Izinkan hanya marketplace resmi4724 Allow only the official marketplace

4710</h4>4725</h4>

4711 4726 

4712Untuk mengizinkan marketplace resmi Anthropic dan tidak ada yang lain, cantumkan repositorinya:4727Untuk mengizinkan marketplace resmi Anthropic dan tidak ada yang lain, cantumkan repositorinya:


4719}4734}

4720```4735```

4721 4736 

4722Dengan entri ini, Claude Code menjaga marketplace resmi yang sudah terdaftar tetap tersedia dan, di mesin baru, mendaftarkan marketplace secara otomatis pertama kali Anda memulai Claude Code secara interaktif. Pendaftaran otomatis paling sering melewatkan:4737Dengan entri ini, Claude Code menjaga marketplace resmi yang sudah terdaftar tetap tersedia dan, di mesin baru, mendaftarkan marketplace secara otomatis pertama kali Anda memulai sesi terminal interaktif. Pendaftaran otomatis paling sering melewatkan:

4723 4738 

4724* Lingkungan non-interaktif yang berjalan sebelum peluncuran interaktif pertama mesin.4739* Lingkungan non-interaktif yang berjalan sebelum sesi terminal interaktif pertama mesin.

4725* Mesin di mana Claude Code sudah berjalan secara interaktif di bawah kebijakan yang memblokir marketplace, seperti lockdown array kosong. Claude Code mencatat upaya yang diblokir dan tidak mencoba lagi setelah kebijakan berubah.4740* Mesin di mana Claude Code sudah berjalan melalui ekstensi VS Code.

4741* Mesin di mana Claude Code sudah menjalankan sesi terminal interaktif di bawah kebijakan yang memblokir marketplace, seperti lockdown array kosong. Claude Code mencatat upaya yang diblokir dan tidak mencoba lagi setelah kebijakan berubah.

4726 4742 

4727Pada mesin ini, tambahkan marketplace ke [`extraKnownMarketplaces`](#extraknownmarketplaces) dalam `managed-settings.json` yang sama sehingga Claude Code mendaftarkannya secara otomatis, atau jalankan `claude plugin marketplace add anthropics/claude-plugins-official`.4743Pada mesin ini, tambahkan marketplace ke [`extraKnownMarketplaces`](#extraknownmarketplaces) dalam `managed-settings.json` yang sama sehingga Claude Code mendaftarkannya secara otomatis, atau jalankan `claude plugin marketplace add anthropics/claude-plugins-official`.

4728 4744 

4729<h4 id="combine-with-extraknownmarketplaces">4745<h4 id="combine-with-extraknownmarketplaces">

4730 Gabungkan dengan `extraKnownMarketplaces`4746 Combine with `extraKnownMarketplaces`

4731</h4>4747</h4>

4732 4748 

4733Dua kunci melakukan pekerjaan berbeda. Tabel ini membandingkannya:4749Dua kunci melakukan pekerjaan berbeda. Tabel ini membandingkannya:


4756}4772}

4757```4773```

4758 4774 

4759Dengan hanya `strictKnownMarketplaces` yang diatur, pengguna masih dapat menambahkan marketplace yang diizinkan sendiri dengan `/plugin marketplace add`. Marketplace resmi Anthropic adalah satu-satunya yang Claude Code daftarkan secara otomatis, dan hanya ketika daftar allowlist mengizinkannya. [Izinkan hanya marketplace resmi](#allow-only-the-official-marketplace) mencantumkan mesin yang dilewatkan.4775Dengan hanya `strictKnownMarketplaces` yang diatur, pengguna masih dapat menambahkan marketplace yang diizinkan sendiri dengan `/plugin marketplace add`. Marketplace resmi Anthropic adalah satu-satunya yang Claude Code daftarkan secara otomatis, dan hanya ketika daftar allowlist mengizinkannya. [Allow only the official marketplace](#allow-only-the-official-marketplace) mencantumkan mesin yang dilewatkan.

4760 4776 

4761<h3 id="strictpluginonlycustomization">4777<h3 id="strictpluginonlycustomization">

4762 `strictPluginOnlyCustomization`4778 `strictPluginOnlyCustomization`


4846 `enabledPlugins`4862 `enabledPlugins`

4847</h3>4863</h3>

4848 4864 

4849Hidupkan atau matikan [plugins](/docs/id/plugins) individual, dikunci dengan `plugin-name@marketplace-name`. Plugin tanpa entri di scope apa pun kembali ke nilai [`defaultEnabled`](/docs/id/plugins-reference#default-enablement)-nya. Ketika Anda mengaktifkan atau menonaktifkan plugin dengan `/plugin` atau `claude plugin enable`, Claude Code menulis kunci ini untuk Anda.4865Hidupkan atau matikan [plugins](/docs/id/plugins/overview) individual, dikunci dengan `plugin-name@marketplace-name`. Plugin tanpa entri di scope apa pun kembali ke nilai [`defaultEnabled`](/docs/id/plugins/manifest-reference#fields)-nya. Ketika Anda mengaktifkan atau menonaktifkan plugin dengan `/plugin` atau `claude plugin enable`, Claude Code menulis kunci ini untuk Anda.

4850 4866 

4851* **Scope**: [`Any file`](#scopes)4867* **Scope**: [`Any file`](#scopes)

4852* **Type**: object mapping `plugin-name@marketplace-name` ke Boolean4868* **Type**: object mapping `plugin-name@marketplace-name` ke Boolean


4873 4889 

4874Pengaturan proyek mengambil prioritas atas pengaturan pengguna, jadi mengatur plugin ke `false` dalam `~/.claude/settings.json` tidak menonaktifkan plugin yang `.claude/settings.json` proyek aktifkan. Untuk memilih keluar dari plugin yang diaktifkan proyek di mesin Anda, atur ke `false` dalam `.claude/settings.local.json` sebagai gantinya. Plugins yang dipaksa diaktifkan oleh managed settings tidak dapat dinonaktifkan dengan cara ini, karena managed settings menimpa pengaturan lokal.4890Pengaturan proyek mengambil prioritas atas pengaturan pengguna, jadi mengatur plugin ke `false` dalam `~/.claude/settings.json` tidak menonaktifkan plugin yang `.claude/settings.json` proyek aktifkan. Untuk memilih keluar dari plugin yang diaktifkan proyek di mesin Anda, atur ke `false` dalam `.claude/settings.local.json` sebagai gantinya. Plugins yang dipaksa diaktifkan oleh managed settings tidak dapat dinonaktifkan dengan cara ini, karena managed settings menimpa pengaturan lokal.

4875 4891 

4876Mengaktifkan plugin dari sumber eksternal seperti repositori GitHub atau paket npm dalam `.claude/settings.json` proyek tidak menginstalnya untuk orang lain. Di setiap jalur yang memuat plugins, Claude Code melaporkan plugin sebagai tidak diinstal sampai setiap pengguna [menginstalnya sendiri](/docs/id/discover-plugins#configure-team-marketplaces).4892Mengaktifkan plugin dari sumber eksternal seperti repositori GitHub atau paket npm dalam `.claude/settings.json` proyek tidak menginstalnya untuk orang lain. Di setiap jalur yang memuat plugins, Claude Code melaporkan plugin sebagai tidak diinstal sampai setiap pengguna [menginstalnya sendiri](/docs/id/plugins/org#require-plugins-per-repository).

4877 4893 

4878<h3 id="extraknownmarketplaces">4894<h3 id="extraknownmarketplaces">

4879 `extraKnownMarketplaces`4895 `extraKnownMarketplaces`


4908 4924 

4909[Apa yang berjalan sebelum Anda mempercayai folder](/docs/id/permissions#what-runs-before-you-trust-a-folder) membandingkan gerbang kepercayaan dengan konten lain yang dapat disediakan repositori. Anda juga dapat menulis kunci ini sebagai `additionalMarketplaces`; lihat [Alias kunci Marketplace](#marketplace-key-aliases).4925[Apa yang berjalan sebelum Anda mempercayai folder](/docs/id/permissions#what-runs-before-you-trust-a-folder) membandingkan gerbang kepercayaan dengan konten lain yang dapat disediakan repositori. Anda juga dapat menulis kunci ini sebagai `additionalMarketplaces`; lihat [Alias kunci Marketplace](#marketplace-key-aliases).

4910 4926 

4911Atur `"autoUpdate": true` bersama `source` untuk membuat Claude Code menyegarkan marketplace itu dan memperbarui plugins yang diinstal dalam latar belakang setelah startup. Ketika dihilangkan, `claude-plugins-official` dan sebagian besar marketplace resmi Anthropic lainnya default ke `true`, dan marketplace pihak ketiga default ke `false`. Lihat [Konfigurasi auto-updates](/docs/id/discover-plugins#configure-auto-updates).4927Atur `"autoUpdate": true` bersama `source` untuk membuat Claude Code menyegarkan marketplace itu dan memperbarui plugins yang diinstal dalam latar belakang setelah startup. Ketika dihilangkan, `claude-plugins-official` dan sebagian besar marketplace resmi Anthropic lainnya default ke `true`, dan marketplace pihak ketiga default ke `false`. Lihat [Konfigurasi auto-updates](/docs/id/plugins/install#keep-plugins-updated).

4912 4928 

4913Ketika lebih dari satu file pengaturan mendefinisikan entri marketplace di bawah nama yang sama, Claude Code menggunakan entri dari file [prioritas tertinggi](/docs/id/settings#settings-precedence) secara keseluruhan. Entri itu menggantikan entri prioritas lebih rendah dan tidak mewarisi bidang apa pun, jadi redefinisi tidak dapat menggabungkan `source.headers` kredensial satu file dengan URL yang dikontrol file lain. Sebelum v2.1.228, Claude Code menggabungkan entri nama-sama bidang demi bidang, jadi entri dalam file prioritas lebih tinggi dapat mewarisi bidang yang tidak diaturnya, termasuk `headers` file lain.4929Ketika lebih dari satu file pengaturan mendefinisikan entri marketplace di bawah nama yang sama, Claude Code menggunakan entri dari file [prioritas tertinggi](/docs/id/settings#settings-precedence) secara keseluruhan. Entri itu menggantikan entri prioritas lebih rendah dan tidak mewarisi bidang apa pun, jadi redefinisi tidak dapat menggabungkan `source.headers` kredensial satu file dengan URL yang dikontrol file lain. Sebelum v2.1.228, Claude Code menggabungkan entri nama-sama bidang demi bidang, jadi entri dalam file prioritas lebih tinggi dapat mewarisi bidang yang tidak diaturnya, termasuk `headers` file lain.

4914 4930 

4915<h4 id="marketplace-source-types">4931<h4 id="marketplace-source-types">

4916 Tipe sumber marketplace4932 Marketplace source types

4917</h4>4933</h4>

4918 4934 

4919Objek `source` mengambil salah satu bentuk ini:4935Objek `source` mengambil salah satu bentuk ini:


4925* **`directory`**: jalur filesystem lokal, dengan `path`, hanya untuk pengembangan4941* **`directory`**: jalur filesystem lokal, dengan `path`, hanya untuk pengembangan

4926* **`settings`**: marketplace inline yang dideklarasikan langsung dalam file pengaturan tanpa repositori yang dihosting, dengan `name` dan `plugins`4942* **`settings`**: marketplace inline yang dideklarasikan langsung dalam file pengaturan tanpa repositori yang dihosting, dengan `name` dan `plugins`

4927 4943 

4928Tipe sumber `git` bekerja dengan layanan hosting git apa pun, termasuk GitLab dan Bitbucket yang dihosting sendiri. Claude Code mengkloning repositori dengan autentikasi yang sama yang `git clone` gunakan di mesin itu: pembantu kredensial yang dikonfigurasi atau kunci SSH. Token penyedia seperti `GITHUB_TOKEN` hanya berlaku melalui pembantu kredensial yang membacanya. Lihat [Repositori pribadi](/docs/id/plugin-marketplaces#private-repositories) untuk detail setup.4944Tipe sumber `git` bekerja dengan layanan hosting git apa pun, termasuk GitLab dan Bitbucket yang dihosting sendiri. Claude Code mengkloning repositori dengan autentikasi yang sama yang `git clone` gunakan di mesin itu: pembantu kredensial yang dikonfigurasi atau kunci SSH. Token penyedia seperti `GITHUB_TOKEN` hanya berlaku melalui pembantu kredensial yang membacanya. Lihat [Private repositories](/docs/id/plugins/host-marketplace#grant-access-to-a-private-marketplace) untuk detail setup.

4929 4945 

4930Untuk sumber `github` dan `git`, Claude Code tidak pernah mengunduh konten [Git LFS](https://git-lfs.com) ketika mengkloning repositori marketplace untuk menambahkan atau memperbaruinya. File yang dilacak LFS diperiksa sebagai file pointer, dan output penambahan atau pembaruan melaporkan berapa banyak.4946Untuk sumber `github` dan `git`, Claude Code tidak pernah mengunduh konten [Git LFS](https://git-lfs.com) ketika mengkloning repositori marketplace untuk menambahkan atau memperbaruinya. File yang dilacak LFS diperiksa sebagai file pointer, dan output penambahan atau pembaruan melaporkan berapa banyak.

4931 4947 

4932Bidang `skipLfs` di dalam objek `source` diterima dan tidak memiliki efek. Sebelum v2.1.274, Claude Code mengunduh konten LFS kecuali Anda mengatur `"skipLfs": true`.4948Bidang `skipLfs` di dalam objek `source` diterima dan tidak memiliki efek. Sebelum v2.1.274, Claude Code mengunduh konten LFS kecuali Anda mengatur `"skipLfs": true`.

4933 4949 

4934Untuk sumber `url`, atur `headersHelper` di dalam objek `source` ketika kredensial dalam `headers` kedaluwarsa dan perintah harus menghasilkan yang baru. Memerlukan Claude Code v2.1.238 atau lebih baru. Untuk apa yang harus dicetak perintah dan di mana Claude Code menjalankannya, lihat [Tulis perintah headersHelper](/docs/id/plugin-marketplaces#write-the-headershelper-command), dan untuk kasus di mana Claude Code tidak menjalankannya, lihat [Kapan Claude Code melewati perintah headersHelper](/docs/id/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Setelah Anda mengatur `headersHelper` pada URL marketplace `https://`, Claude Code menjalankan perintah di dua titik, menggunakan kembali output satu run selama hingga 60 detik:4950Untuk sumber `url`, atur `headersHelper` di dalam objek `source` ketika kredensial dalam `headers` kedaluwarsa dan perintah harus menghasilkan yang baru. Memerlukan Claude Code v2.1.238 atau lebih baru. Untuk apa yang harus dicetak perintah dan di mana Claude Code menjalankannya, lihat [Write the headersHelper command](/docs/id/plugins/host-marketplace#write-the-headershelper-command), dan untuk kasus di mana Claude Code tidak menjalankannya, lihat [When Claude Code skips a headersHelper command](/docs/id/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Setelah Anda mengatur `headersHelper` pada URL marketplace `https://`, Claude Code menjalankan perintah di dua titik, menggunakan kembali output satu run selama hingga 60 detik:

4935 4951 

4936* Sebelum setiap pengambilan `marketplace.json` marketplace itu, termasuk penyegaran nanti. Claude Code mengirim header yang dicetak dengan pengambilan itu.4952* Sebelum setiap pengambilan `marketplace.json` marketplace itu, termasuk penyegaran nanti. Claude Code mengirim header yang dicetak dengan pengambilan itu.

4937* Sebelum setiap unduhan arsip plugin pada asal URL marketplace, berarti skema, host, dan port yang sama. Claude Code mengirim output dengan unduhan itu, dan tidak ada unduhan lain yang mendapat header.4953* Sebelum setiap unduhan arsip plugin pada asal URL marketplace, berarti skema, host, dan port yang sama. Claude Code mengirim output dengan unduhan itu, dan tidak ada unduhan lain yang mendapat header.

4938 4954 

4939Claude Code mengabaikan `headersHelper` apa pun yang diatur dalam `.claude/settings.json` atau `.claude/settings.local.json` direktori yang Anda tambahkan dengan [`--add-dir`](/docs/id/permissions#what-runs-before-you-trust-a-folder), pada sumber `url` dan pada entri plugin inline sama-sama, dan hanya mengirim `headers` tetap yang diatur dalam file itu. [Bagaimana pengguna menerima perintah headersHelper](/docs/id/plugin-marketplaces#how-users-accept-a-headershelper-command) mencakup file pengaturan lainnya.4955Claude Code mengabaikan `headersHelper` apa pun yang diatur dalam `.claude/settings.json` atau `.claude/settings.local.json` direktori yang Anda tambahkan dengan [`--add-dir`](/docs/id/permissions#what-runs-before-you-trust-a-folder), pada sumber `url` dan pada entri plugin inline sama-sama, dan hanya mengirim `headers` tetap yang diatur dalam file itu. [How users accept a headersHelper command](/docs/id/plugins/host-marketplace#how-users-accept-a-headershelper-command) mencakup file pengaturan lainnya.

4940 4956 

4941Plugins yang tercantum dalam sumber `settings` harus mereferensikan sumber eksternal seperti GitHub atau npm, dan `name` harus cocok dengan kunci marketplace. Anda masih mengaktifkan setiap plugin secara terpisah dalam `enabledPlugins`. Contoh ini mendeklarasikan satu plugin inline:4957Plugins yang tercantum dalam sumber `settings` harus mereferensikan sumber eksternal seperti GitHub atau npm, dan `name` harus cocok dengan kunci marketplace. Anda masih mengaktifkan setiap plugin secara terpisah dalam `enabledPlugins`. Contoh ini mendeklarasikan satu plugin inline:

4942 4958 


4962}4978}

4963```4979```

4964 4980 

4965Entri plugin di bawah `source: 'settings'` yang `source`-nya sendiri adalah [`archive`](/docs/id/plugin-marketplaces#zip-archives) dapat mengatur `headers` untuk unduhan arsip. Jika nilai yang akan Anda masukkan dalam `headers` berumur pendek, seperti token yang registry Anda cetak atas permintaan, atur perintah `headersHelper` sebagai gantinya. Entri dapat mengatur keduanya. Kedua bidang memerlukan Claude Code v2.1.238 atau lebih baru.4981Entri plugin di bawah `source: 'settings'` yang `source`-nya sendiri adalah [`archive`](/docs/id/plugins/marketplace-reference#archive-plugin-source) dapat mengatur `headers` untuk unduhan arsip. Jika nilai yang akan Anda masukkan dalam `headers` berumur pendek, seperti token yang registry Anda cetak atas permintaan, atur perintah `headersHelper` sebagai gantinya. Entri dapat mengatur keduanya. Kedua bidang memerlukan Claude Code v2.1.238 atau lebih baru.

4966 4982 

4967Claude Code mengirim `headers` entri, dan apa pun yang dicetak perintah, dengan unduhan arsip plugin itu dan dengan tidak ada unduhan lain. Claude Code menjalankan perintah hanya ketika pengguna [menginstal atau memperbarui plugin itu saja](/docs/id/plugin-marketplaces#how-users-accept-a-headershelper-command). Tiga aturan lebih lanjut tergantung pada file mana yang memegang entri:4983Claude Code mengirim `headers` entri, dan apa pun yang dicetak perintah, dengan unduhan arsip plugin itu dan dengan tidak ada unduhan lain. Claude Code menjalankan perintah hanya ketika pengguna [menginstal atau memperbarui plugin itu saja](/docs/id/plugins/host-marketplace#how-users-accept-a-headershelper-command). Tiga aturan lebih lanjut tergantung pada file mana yang memegang entri:

4968 4984 

4969* **`strict`**: tidak seperti entri dalam `marketplace.json` marketplace, entri dalam pengaturan tidak memerlukan `"strict": false`, karena file pengaturan tidak membawa bidang manifest untuk inline. Lihat [Mode ketat](/docs/id/plugin-marketplaces#strict-mode).4985* **`strict`**: tidak seperti entri dalam `marketplace.json` marketplace, entri dalam pengaturan tidak memerlukan `"strict": false`, karena file pengaturan tidak membawa bidang manifest untuk inline. Lihat [Strict mode](/docs/id/plugins/marketplace-reference#strict-mode).

4970* **Kepercayaan folder**: untuk entri dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, Claude Code menjalankan perintah hanya setelah pengguna juga [mempercayai folder itu](/docs/id/permissions#what-runs-before-you-trust-a-folder).4986* **Folder trust**: untuk entri dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, Claude Code menjalankan perintah hanya setelah pengguna juga [mempercayai folder itu](/docs/id/permissions#what-runs-before-you-trust-a-folder).

4971* **Filter header**: Claude Code menjatuhkan [nama header perutean permintaan dan identitas klien](/docs/id/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output) dari entri dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, karena repositori dapat menyediakan file itu. Claude Code menerapkan filter yang sama ke entri katalog dan ke entri dalam pengaturan direktori `--add-dir`, dan tidak ada filter ke entri dalam pengaturan pengguna Anda, file `--settings`, atau managed settings.4987* **Header filter**: Claude Code menjatuhkan [nama header perutean permintaan dan identitas klien](/docs/id/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output) dari entri dalam `.claude/settings.json` atau `.claude/settings.local.json` proyek, karena repositori dapat menyediakan file itu. Claude Code menerapkan filter yang sama ke entri katalog dan ke entri dalam pengaturan direktori `--add-dir`, dan tidak ada filter ke entri dalam pengaturan pengguna Anda, file `--settings`, atau managed settings.

4972 4988 

4973<h4 id="marketplace-key-aliases">4989<h4 id="marketplace-key-aliases">

4974 Alias kunci Marketplace4990 Marketplace key aliases

4975</h4>4991</h4>

4976 4992 

4977Pada Claude Code v2.1.232 atau lebih baru, Anda dapat menulis `extraKnownMarketplaces` sebagai `additionalMarketplaces` dan `strictKnownMarketplaces` sebagai `allowedMarketplaces`. Claude Code memperlakukan setiap alias sebagai berikut:4993Pada Claude Code v2.1.232 atau lebih baru, Anda dapat menulis `extraKnownMarketplaces` sebagai `additionalMarketplaces` dan `strictKnownMarketplaces` sebagai `allowedMarketplaces`. Claude Code memperlakukan setiap alias sebagai berikut:


4985 `pluginConfigs`5001 `pluginConfigs`

4986</h3>5002</h3>

4987 5003 

4988Simpan jawaban non-sensitif yang Anda berikan dialog konfigurasi [`userConfig`](/docs/id/plugins-reference#user-configuration) plugin, dikunci dengan ID plugin. Claude Code menulis kunci ini ke pengaturan pengguna Anda ketika Anda mengisi dialog, jadi Anda tidak perlu mengeditnya dengan tangan. Claude Code menyimpan opsi sensitif dalam Keychain macOS sebagai gantinya, kembali ke `~/.claude/.credentials.json` ketika Keychain menolak penulisan; pada platform tanpa keychain yang didukung, itu menyimpannya dalam `~/.claude/.credentials.json`.5004Simpan jawaban non-sensitif yang Anda berikan dialog konfigurasi [`userConfig`](/docs/id/plugins/manifest-reference#user-configuration) plugin, dikunci dengan ID plugin. Claude Code menulis kunci ini ke pengaturan pengguna Anda ketika Anda mengisi dialog, jadi Anda tidak perlu mengeditnya dengan tangan. Claude Code menyimpan opsi sensitif dalam Keychain macOS sebagai gantinya, kembali ke `~/.claude/.credentials.json` ketika Keychain menolak penulisan; pada platform tanpa keychain yang didukung, itu menyimpannya dalam `~/.claude/.credentials.json`.

4989 5005 

4990* **Scope**: [`User or managed`](#scopes)5006* **Scope**: [`User or managed`](#scopes)

4991* **Type**: object mapping ID plugin ke objek dengan bidang `options`, mapping setiap nama opsi ke string, angka, Boolean, atau array string, dan bidang `mcpServers` opsional yang memegang nilai konfigurasi pengguna per-server dalam bentuk yang sama5007* **Type**: object mapping ID plugin ke objek dengan bidang `options`, mapping setiap nama opsi ke string, angka, Boolean, atau array string, dan bidang `mcpServers` opsional yang memegang nilai konfigurasi pengguna per-server dalam bentuk yang sama


5233}5249}

5234```5250```

5235 5251 

5236`settings.json` plugin sendiri juga dapat menyediakan kunci ini; lihat [Ship default settings with your plugin](/docs/id/plugins#ship-default-settings-with-your-plugin).5252`settings.json` plugin sendiri juga dapat menyediakan kunci ini; lihat [Ship default settings with your plugin](/docs/id/plugins/components#default-settings).

5237 5253 

5238<h3 id="crosssessioninbound">5254<h3 id="crosssessioninbound">

5239 `crossSessionInbound`5255 `crossSessionInbound`


5329 * `"in-process"`: rekan kerja berjalan di dalam pane terminal utama Anda5345 * `"in-process"`: rekan kerja berjalan di dalam pane terminal utama Anda

5330 * `"auto"`: pane terpisah ketika Anda menjalankan di dalam tmux, atau di dalam iTerm2 dengan `it2` di `PATH` Anda atau tmux terinstal; in-process sebaliknya5346 * `"auto"`: pane terpisah ketika Anda menjalankan di dalam tmux, atau di dalam iTerm2 dengan `it2` di `PATH` Anda atau tmux terinstal; in-process sebaliknya

5331 * `"tmux"`: pane terpisah menggunakan tmux atau iTerm2, terdeteksi dari terminal Anda5347 * `"tmux"`: pane terpisah menggunakan tmux atau iTerm2, terdeteksi dari terminal Anda

5332 * `"iterm2"`: pane terpisah native iTerm2 melalui CLI `it2`, di Claude Code v2.1.186 atau lebih baru5348 * `"iterm2"`: pane terpisah native iTerm2 melalui CLI `it2`

5333* **Default**: `"in-process"`5349* **Default**: `"in-process"`

5334* **Per-session overrides**: `--teammate-mode` mengambil alih kunci ini untuk satu sesi5350* **Per-session overrides**: `--teammate-mode` mengambil alih kunci ini untuk satu sesi

5335 5351 


5339}5355}

5340```5356```

5341 5357 

5342Nilai `iterm2` memerlukan Claude Code v2.1.186 atau lebih baru.

5343 

5344<span id="worktree-settings" />5358<span id="worktree-settings" />

5345 5359 

5346<h3 id="worktree">5360<h3 id="worktree">


6200 6214 

6201Claude Code masih menerima `--mcp-config` yang servernya adalah semua entri `type: "sdk"` dalam proses, sehingga Agent SDK dan ekstensi VS Code tetap berfungsi. Pengguna masih dapat menambahkan server dengan `claude mcp add` atau file `.mcp.json`; untuk kontrol per-server, atur [`allowedMcpServers`](/docs/id/managed-mcp) juga. Memerlukan Claude Code v2.1.193 atau lebih baru.6215Claude Code masih menerima `--mcp-config` yang servernya adalah semua entri `type: "sdk"` dalam proses, sehingga Agent SDK dan ekstensi VS Code tetap berfungsi. Pengguna masih dapat menambahkan server dengan `claude mcp add` atau file `.mcp.json`; untuk kontrol per-server, atur [`allowedMcpServers`](/docs/id/managed-mcp) juga. Memerlukan Claude Code v2.1.193 atau lebih baru.

6202 6216 

6217Pemeriksaan yang sama mencakup folder plugin yang dinamai dalam variabel lingkungan [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/id/env-vars#variables), yang memerlukan Claude Code v2.1.280 atau lebih baru. Ketika variabel menyebutkan folder, Claude Code keluar dengan kesalahan yang sama, dan kesalahan mengatakan untuk membatalkan pengaturan variabel.

6218 

6203Dalam sesi cloud, Claude Code juga mengabaikan pembaruan MCP yang dikirimkan server di tengah sesi, jalur di balik konfigurasi sesi cloud dan SDK `setMcpServers()` pada pekerja jarak jauh. Entri `type: "sdk"` dalam proses tetap dikecualikan di sana juga. Sebelum v2.1.239, `--mcp-config` yang dikirimkan server memblokir sesi cloud dari dimulai.6219Dalam sesi cloud, Claude Code juga mengabaikan pembaruan MCP yang dikirimkan server di tengah sesi, jalur di balik konfigurasi sesi cloud dan SDK `setMcpServers()` pada pekerja jarak jauh. Entri `type: "sdk"` dalam proses tetap dikecualikan di sana juga. Sebelum v2.1.239, `--mcp-config` yang dikirimkan server memblokir sesi cloud dari dimulai.

6204 6220 

6205<h3 id="forceremotesettingsrefresh">6221<h3 id="forceremotesettingsrefresh">

skills.md +15 −15

Details

129| Project | `.claude/skills/<skill-name>/SKILL.md` | Sesi di repositori ini. Commit agar tim Anda juga mendapatkannya |129| Project | `.claude/skills/<skill-name>/SKILL.md` | Sesi di repositori ini. Commit agar tim Anda juga mendapatkannya |

130| Nested | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesi yang dimulai di atau di bawah `<subdir>`. Sesi yang dimulai di atasnya memuat skill sekali Claude bekerja pada file di sana. Lihat [monorepos dan subdirektori](#discovery-from-parent-and-nested-directories) |130| Nested | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesi yang dimulai di atau di bawah `<subdir>`. Sesi yang dimulai di atasnya memuat skill sekali Claude bekerja pada file di sana. Lihat [monorepos dan subdirektori](#discovery-from-parent-and-nested-directories) |

131| Additional directory | `.claude/skills/<skill-name>/SKILL.md` di direktori yang Anda lewatkan dengan `--add-dir` | Sesi itu. Lihat [direktori di luar proyek](#skills-from-additional-directories) |131| Additional directory | `.claude/skills/<skill-name>/SKILL.md` di direktori yang Anda lewatkan dengan `--add-dir` | Sesi itu. Lihat [direktori di luar proyek](#skills-from-additional-directories) |

132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Di mana pun [plugin](/docs/id/plugins) diaktifkan, sebagai `/plugin-name:skill-name` |132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Di mana pun [plugin](/docs/id/plugins/overview) diaktifkan, sebagai `/plugin-name:skill-name` |

133| claude.ai account | Skills yang diaktifkan untuk akun claude.ai Anda | Sesi Cowork, sesi cloud, dan sesi terminal tempat Anda masuk dengan akun itu. Lihat [Skills yang disinkronkan dari claude.ai](#how-synced-skills-behave) |133| claude.ai account | Skills yang diaktifkan untuk akun claude.ai Anda | Sesi Cowork, sesi cloud, dan sesi terminal tempat Anda masuk dengan akun itu. Lihat [Skills yang disinkronkan dari claude.ai](#how-synced-skills-behave) |

134 134 

135Folder skill juga mengikuti aturan ini:135Folder skill juga mengikuti aturan ini:

136 136 

137* **Folder yang di-symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau project dapat berupa symlink ke direktori lain di disk. Claude Code membaca `SKILL.md` dari target dan memuat skill sekali meskipun beberapa lokasi menunjuk ke target yang sama. Plugin skills [menangani symlinks secara berbeda](/docs/id/plugins-reference#share-files-within-a-marketplace-with-symlinks).137* **Folder yang di-symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau project dapat berupa symlink ke direktori lain di disk. Claude Code membaca `SKILL.md` dari target dan memuat skill sekali meskipun beberapa lokasi menunjuk ke target yang sama. Plugin skills [menangani symlinks secara berbeda](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

138* **Nama yang dicadangkan**: jangan beri nama folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skills yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama itu di lokasi enterprise, personal, dan project.138* **Nama yang dicadangkan**: jangan beri nama folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skills yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama itu di lokasi enterprise, personal, dan project.

139* **File perintah**: file Markdown di `.claude/commands/` adalah format yang lebih lama dan masih berfungsi. Ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk menemukan nama yang Anda ketik untuk menginvokasinya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Lebih suka skill untuk pekerjaan baru, karena skills juga mendukung [file pendukung](#add-supporting-files).139* **File perintah**: file Markdown di `.claude/commands/` adalah format yang lebih lama dan masih berfungsi. Ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk menemukan nama yang Anda ketik untuk menginvokasinya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Lebih suka skill untuk pekerjaan baru, karena skills juga mendukung [file pendukung](#add-supporting-files).

140* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan itu dimuat sebagai [plugin](/docs/id/plugins-reference#skills-directory-plugins) bernama `<name>@skills-dir`, sehingga dapat menggabungkan agents, hooks, dan MCP servers. Di `.claude/skills/` proyek, ini memerlukan penerimaan dialog kepercayaan workspace terlebih dahulu.140* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan itu dimuat sebagai [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository) bernama `<name>@skills-dir`, sehingga dapat menggabungkan agents, hooks, dan MCP servers. Di `.claude/skills/` proyek, ini memerlukan penerimaan dialog kepercayaan workspace terlebih dahulu.

141 141 

142<h3 id="discovery-from-parent-and-nested-directories">142<h3 id="discovery-from-parent-and-nested-directories">

143 Muat skills di monorepos dan subdirektori143 Muat skills di monorepos dan subdirektori


275 275 

276Claude Code mengawasi direktori skill untuk perubahan file, kecuali di [bare mode](/docs/id/headless#start-faster-with-bare-mode). Ketika Anda menambah, mengedit, atau menghapus skill di bawah `~/.claude/skills/`, project `.claude/skills/`, atau `.claude/skills/` di dalam direktori `--add-dir`, Claude Code mengambil perubahan dalam sesi saat ini, tanpa restart. Jika Anda membuat direktori skills tingkat atas yang tidak ada ketika sesi dimulai, restart Claude Code sehingga dapat mengawasi direktori baru.276Claude Code mengawasi direktori skill untuk perubahan file, kecuali di [bare mode](/docs/id/headless#start-faster-with-bare-mode). Ketika Anda menambah, mengedit, atau menghapus skill di bawah `~/.claude/skills/`, project `.claude/skills/`, atau `.claude/skills/` di dalam direktori `--add-dir`, Claude Code mengambil perubahan dalam sesi saat ini, tanpa restart. Jika Anda membuat direktori skills tingkat atas yang tidak ada ketika sesi dimulai, restart Claude Code sehingga dapat mengawasi direktori baru.

277 277 

278Live change detection mencakup teks `SKILL.md` saja. Untuk folder skill yang juga merupakan [plugin](/docs/id/plugins-reference#skills-directory-plugins), perubahan ke `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` untuk berlaku.278Live change detection mencakup teks `SKILL.md` saja. Untuk folder skill yang juga merupakan [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository), perubahan ke `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` untuk berlaku.

279 279 

280<h3 id="remove-a-skill">280<h3 id="remove-a-skill">

281 Hapus skill281 Hapus skill


285 285 

286* **Personal atau project skill**: hapus direktori skill, `~/.claude/skills/<skill-name>/` atau `.claude/skills/<skill-name>/`. Claude Code [menjatuhkannya dari `/skills` di sesi saat ini](#live-change-detection); konten yang sudah dimuat Claude Code darinya mengikuti [skill content lifecycle](#skill-content-lifecycle).286* **Personal atau project skill**: hapus direktori skill, `~/.claude/skills/<skill-name>/` atau `.claude/skills/<skill-name>/`. Claude Code [menjatuhkannya dari `/skills` di sesi saat ini](#live-change-detection); konten yang sudah dimuat Claude Code darinya mengikuti [skill content lifecycle](#skill-content-lifecycle).

287* **Enterprise skill**: administrator menghapus direktori skill dari `.claude/skills/` di dalam [direktori managed settings](/docs/id/managed-settings#delivery-mechanisms), misalnya `/etc/claude-code/.claude/skills/<skill-name>/` di Linux.287* **Enterprise skill**: administrator menghapus direktori skill dari `.claude/skills/` di dalam [direktori managed settings](/docs/id/managed-settings#delivery-mechanisms), misalnya `/etc/claude-code/.claude/skills/<skill-name>/` di Linux.

288* **Plugin skill**: nonaktifkan atau uninstall plugin yang menyediakannya, dari menu `/plugin` atau dengan `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code membongkar skills plugin ketika [perubahan berlaku](/docs/id/discover-plugins#apply-plugin-changes-without-restarting) atau ketika Anda restart.288* **Plugin skill**: nonaktifkan atau uninstall plugin yang menyediakannya, dari menu `/plugin` atau dengan `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code membongkar skills plugin ketika [perubahan berlaku](/docs/id/plugins/cli-reference#reload-plugins) atau ketika Anda restart.

289* **Skill yang disinkronkan dari claude.ai**: matikan skill untuk akun claude.ai Anda, di tempat yang sama Anda [mengaktifkannya](#skills-in-cowork-and-cloud-sessions). Claude Code menghapusnya dari `~/.claude/skills/synced/` saat berikutnya [menyinkronkan skills Anda](#where-synced-skills-load). Jika Anda menghapus direktori dengan tangan sebagai gantinya, sinkronisasi berikutnya mengunduhnya lagi sementara skill tetap diaktifkan di claude.ai.289* **Skill yang disinkronkan dari claude.ai**: matikan skill untuk akun claude.ai Anda, di tempat yang sama Anda [mengaktifkannya](#skills-in-cowork-and-cloud-sessions). Claude Code menghapusnya dari `~/.claude/skills/synced/` saat berikutnya [menyinkronkan skills Anda](#where-synced-skills-load). Jika Anda menghapus direktori dengan tangan sebagai gantinya, sinkronisasi berikutnya mengunduhnya lagi sementara skill tetap diaktifkan di claude.ai.

290* **Bundled skill**: atur [`disableBundledSkills`](#bundled-skills) ke `true` untuk mematikan bundled skills, atau atur satu skill ke `"off"` di [`skillOverrides`](#override-skill-visibility-from-settings) untuk menyembunyikannya.290* **Bundled skill**: atur [`disableBundledSkills`](#bundled-skills) ke `true` untuk mematikan bundled skills, atau atur satu skill ke `"off"` di [`skillOverrides`](#override-skill-visibility-from-settings) untuk menyembunyikannya.

291 291 


389 389 

390| Distribution path | Frontmatter fields you can use |390| Distribution path | Frontmatter fields you can use |

391| :-------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |391| :-------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |

392| Claude Code skills at [any level](#where-skills-live), including [plugin](/docs/id/plugins) skills | Every field in the table above |392| Claude Code skills at [any level](#where-skills-live), including [plugin](/docs/id/plugins/overview) skills | Every field in the table above |

393| claude.ai skill uploads, the Skills API, and packaging with `package_skill.py` from [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |393| claude.ai skill uploads, the Skills API, and packaging with `package_skill.py` from [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |

394 394 

395Ketika Anda mengaktifkan skill pribadi untuk akun claude.ai Anda, misalnya untuk menggunakannya dalam [sesi Cowork dan cloud](#skills-in-cowork-and-cloud-sessions) dan rutinitas, Anda mengunggahnya ke claude.ai, jadi aturan yang sama berlaku.395Ketika Anda mengaktifkan skill pribadi untuk akun claude.ai Anda, misalnya untuk menggunakannya dalam [sesi Cowork dan cloud](#skills-in-cowork-and-cloud-sessions) dan rutinitas, Anda mengunggahnya ke claude.ai, jadi aturan yang sama berlaku.


411Tabel di bawah menunjukkan dari mana nama perintah berasal untuk setiap tata letak:411Tabel di bawah menunjukkan dari mana nama perintah berasal untuk setiap tata letak:

412 412 

413| Skill location | Command name source | Example |413| Skill location | Command name source | Example |

414| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------- |414| :------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------- |

415| Skill directory under `~/.claude/skills/` or `.claude/skills/` | Directory name | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |415| Skill directory under `~/.claude/skills/` or `.claude/skills/` | Directory name | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

416| [Nested](#where-skills-live) `.claude/skills/` directory, when the name clashes with another skill | Subdirectory path relative to the working directory, then the skill directory name | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |416| [Nested](#where-skills-live) `.claude/skills/` directory, when the name clashes with another skill | Subdirectory path relative to the working directory, then the skill directory name | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

417| File under `.claude/commands/` | File name without extension | `.claude/commands/deploy.md` → `/deploy` |417| File under `.claude/commands/` | File name without extension | `.claude/commands/deploy.md` → `/deploy` |

418| File in a subdirectory of `.claude/commands/` | Subdirectory path relative to `commands/` with each `/` replaced by `:`, then the file name without extension | `.claude/commands/frontend/component.md` → `/frontend:component` |418| File in a subdirectory of `.claude/commands/` | Subdirectory path relative to `commands/` with each `/` replaced by `:`, then the file name without extension | `.claude/commands/frontend/component.md` → `/frontend:component` |

419| Plugin `skills/` subdirectory | Frontmatter `name` or the directory name, namespaced by plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, or `/my-plugin:fancy` with `name: fancy` |419| Plugin `skills/` subdirectory | Frontmatter `name` or the directory name, namespaced by plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, or `/my-plugin:fancy` with `name: fancy` |

420| Plugin root `SKILL.md` | Frontmatter `name`, with the plugin directory name as a fallback | `my-plugin/SKILL.md` with `name: review` → `/my-plugin:review`. See [Path behavior rules](/docs/id/plugins-reference#path-behavior-rules) |420| Plugin root `SKILL.md` | Frontmatter `name`, with the plugin directory name as a fallback | `my-plugin/SKILL.md` with `name: review` → `/my-plugin:review`. See [a single skill at the plugin root](/docs/id/plugins/components#skills) |

421| Skill [synced from claude.ai](#how-synced-skills-behave) | The skill's name on your claude.ai account, prefixed with `anthropic-skills:` | Account skill `deploy` → `/anthropic-skills:deploy`, or `/deploy` while no other command uses that name |421| Skill [synced from claude.ai](#how-synced-skills-behave) | The skill's name on your claude.ai account, prefixed with `anthropic-skills:` | Account skill `deploy` → `/anthropic-skills:deploy`, or `/deploy` while no other command uses that name |

422 422 

423Dalam skill plugin, frontmatter `name` menggantikan nama direktori dalam segmen terakhir perintah, jadi `my-plugin/skills/review/SKILL.md` dengan `name: fancy` menjadi `/my-plugin:fancy`. Perintah bare `/fancy` juga menginvokasi skill kecuali perintah lain sudah menggunakan nama itu. Jika `name` yang Anda tulis sudah dimulai dengan awalan plugin itu sendiri, Claude Code tidak menambahkan awalan lagi pada v2.1.246 atau lebih baru. Misalnya, `name: my-plugin:fancy` masih menjadi `/my-plugin:fancy`. Dari v2.1.216 hingga v2.1.245, Claude Code menggandakan awalan ketika `name` sudah membawanya.423Dalam skill plugin, frontmatter `name` menggantikan nama direktori dalam segmen terakhir perintah, jadi `my-plugin/skills/review/SKILL.md` dengan `name: fancy` menjadi `/my-plugin:fancy`. Perintah bare `/fancy` juga menginvokasi skill kecuali perintah lain sudah menggunakan nama itu. Jika `name` yang Anda tulis sudah dimulai dengan awalan plugin itu sendiri, Claude Code tidak menambahkan awalan lagi pada v2.1.246 atau lebih baru. Misalnya, `name: my-plugin:fancy` masih menjadi `/my-plugin:fancy`. Dari v2.1.216 hingga v2.1.245, Claude Code menggandakan awalan ketika `name` sudah membawanya.


442| `${CLAUDE_EFFORT}` | The current effort level: `low`, `medium`, `high`, `xhigh`, or `max`. Ultracode is not a distinct level and reports as `xhigh`. Use this to adapt skill instructions to the active effort setting. |442| `${CLAUDE_EFFORT}` | The current effort level: `low`, `medium`, `high`, `xhigh`, or `max`. Ultracode is not a distinct level and reports as `xhigh`. Use this to adapt skill instructions to the active effort setting. |

443| `${CLAUDE_SKILL_DIR}` | The directory containing the skill's `SKILL.md` file. For plugin skills, this is the skill's subdirectory within the plugin, not the plugin root. Use this in bash injection commands to reference scripts or files bundled with the skill, regardless of the current working directory. |443| `${CLAUDE_SKILL_DIR}` | The directory containing the skill's `SKILL.md` file. For plugin skills, this is the skill's subdirectory within the plugin, not the plugin root. Use this in bash injection commands to reference scripts or files bundled with the skill, regardless of the current working directory. |

444| `${CLAUDE_PROJECT_DIR}` | The project root directory. This is the same path [hooks](/docs/id/hooks#reference-scripts-by-path) and MCP servers receive as `CLAUDE_PROJECT_DIR`. Use this to reference project-local scripts or files, such as `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independent of where the skill is installed. |444| `${CLAUDE_PROJECT_DIR}` | The project root directory. This is the same path [hooks](/docs/id/hooks#reference-scripts-by-path) and MCP servers receive as `CLAUDE_PROJECT_DIR`. Use this to reference project-local scripts or files, such as `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independent of where the skill is installed. |

445| `${CLAUDE_PLUGIN_ROOT}` | The plugin's installation directory. Substituted only in plugin skills. Use this to reference scripts or files bundled anywhere in the plugin, including resources shared between the plugin's skills. See [plugin environment variables](/docs/id/plugins-reference#environment-variables). |445| `${CLAUDE_PLUGIN_ROOT}` | The plugin's installation directory. Substituted only in plugin skills. Use this to reference scripts or files bundled anywhere in the plugin, including resources shared between the plugin's skills. See [plugin environment variables](/docs/id/plugins/manifest-reference#environment-variables). |

446| `${CLAUDE_PLUGIN_DATA}` | The plugin's [persistent data directory](/docs/id/plugins-reference#persistent-data-directory), which survives plugin updates. Substituted only in plugin skills. Use this to reference installed dependencies, generated files, or caches that must outlive an update. |446| `${CLAUDE_PLUGIN_DATA}` | The plugin's [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data), which survives plugin updates. Substituted only in plugin skills. Use this to reference installed dependencies, generated files, or caches that must outlive an update. |

447 447 

448Claude Code menggantikan `${CLAUDE_SKILL_DIR}` dan `${CLAUDE_PROJECT_DIR}` di dua tempat: konten markdown skill, dan aturan Bash dalam frontmatter [`allowed-tools`](#frontmatter-reference). Dalam skill plugin, Claude Code menggantikan `${CLAUDE_PLUGIN_ROOT}` dan `${CLAUDE_PLUGIN_DATA}` di tempat yang sama. Menggunakan variabel yang sama di kedua tempat memungkinkan skill menjalankan skrip bundel tanpa prompt izin. Skill berikut menunjukkan polanya:448Claude Code menggantikan `${CLAUDE_SKILL_DIR}` dan `${CLAUDE_PROJECT_DIR}` di dua tempat: konten markdown skill, dan aturan Bash dalam frontmatter [`allowed-tools`](#frontmatter-reference). Dalam skill plugin, Claude Code menggantikan `${CLAUDE_PLUGIN_ROOT}` dan `${CLAUDE_PLUGIN_DATA}` di tempat yang sama. Menggunakan variabel yang sama di kedua tempat memungkinkan skill menjalankan skrip bundel tanpa prompt izin. Skill berikut menunjukkan polanya:

449 449 


892 892 

893Pemeriksaan untuk keduanya adalah perbandingan baseline. Kumpulkan beberapa prompt yang realistis, jalankan masing-masing dalam sesi baru dengan skill tersedia dan lagi dengan itu [dinonaktifkan](#override-skill-visibility-from-settings), dan bandingkan hasilnya. Sesi baru penting karena konteks sisa dari pembuatan skill akan menyembunyikan celah dalam instruksi tertulis.893Pemeriksaan untuk keduanya adalah perbandingan baseline. Kumpulkan beberapa prompt yang realistis, jalankan masing-masing dalam sesi baru dengan skill tersedia dan lagi dengan itu [dinonaktifkan](#override-skill-visibility-from-settings), dan bandingkan hasilnya. Sesi baru penting karena konteks sisa dari pembuatan skill akan menyembunyikan celah dalam instruksi tertulis.

894 894 

895Dua alat mengotomatisasi perbandingan itu. Untuk skill yang dikirim dalam [plugin](/docs/id/plugins), [`claude plugin eval`](/docs/id/plugin-evals) menjalankan setiap prompt dalam sesi terisolasi dengan dan tanpa plugin, mencetak skornya dengan grader yang Anda tentukan atau yang ditulis untuk Anda, dan keluar dengan non-zero di bawah ambang batas sehingga Anda dapat membatasi CI padanya. Untuk iterasi pada skill tunggal di dalam percakapan Claude Code, plugin skill-creator di bawah menjalankan loop serupa dengan format `evals/evals.json` miliknya sendiri. Dua format tidak dapat dipertukarkan.895Dua alat mengotomatisasi perbandingan itu. Untuk skill yang dikirim dalam [plugin](/docs/id/plugins/overview), [`claude plugin eval`](/docs/id/plugin-evals) menjalankan setiap prompt dalam sesi terisolasi dengan dan tanpa plugin, mencetak skornya dengan grader yang Anda tentukan atau yang ditulis untuk Anda, dan keluar dengan non-zero di bawah ambang batas sehingga Anda dapat membatasi CI padanya. Untuk iterasi pada skill tunggal di dalam percakapan Claude Code, plugin skill-creator di bawah menjalankan loop serupa dengan format `evals/evals.json` miliknya sendiri. Dua format tidak dapat dipertukarkan.

896 896 

897<h3 id="run-evals-with-skill-creator">897<h3 id="run-evals-with-skill-creator">

898 Jalankan evals dengan skill-creator898 Jalankan evals dengan skill-creator


907Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:907Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:

908 908 

909* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.909* `Marketplace "claude-plugins-official" not found`: tambahkan marketplace dengan `/plugin marketplace add anthropics/claude-plugins-official`, kemudian coba ulang instalasi.

910* Plugin [tidak ditemukan di marketplace](/docs/id/discover-plugins#install-plugins): periksa nama plugin.910* Plugin [tidak ditemukan di marketplace](/docs/id/plugins/install#install-a-plugin): periksa nama plugin.

911 911 

912Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Claude Code kemudian menjalankan reload itu untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan `/reload-plugins --force` untuk membuat skill plugin tersedia dalam sesi saat ini. Kemudian minta Claude untuk mengevaluasi skill yang ada, misalnya `evaluate my summarize-changes skill with skill-creator`. Plugin memandu Anda melalui penulisan test case dan menjalankan loop:912Jika ringkasan instalasi melaporkan `Run /reload-plugins to activate.`, Claude Code kemudian menjalankan reload itu untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan `/reload-plugins --force` untuk membuat skill plugin tersedia dalam sesi saat ini. Kemudian minta Claude untuk mengevaluasi skill yang ada, misalnya `evaluate my summarize-changes skill with skill-creator`. Plugin memandu Anda melalui penulisan test case dan menjalankan loop:

913 913 


928Skills dapat didistribusikan pada berbagai cakupan tergantung pada audiens Anda:928Skills dapat didistribusikan pada berbagai cakupan tergantung pada audiens Anda:

929 929 

930* **Project skills**: Commit `.claude/skills/` ke version control930* **Project skills**: Commit `.claude/skills/` ke version control

931* **Plugins**: Buat direktori `skills/` di [plugin](/docs/id/plugins) Anda931* **Plugins**: Buat direktori `skills/` di [plugin](/docs/id/plugins/overview) Anda

932* **Managed**: Terapkan di seluruh organisasi melalui [managed settings](/docs/id/managed-settings)932* **Managed**: Terapkan di seluruh organisasi melalui [managed settings](/docs/id/managed-settings)

933 933 

934<h3 id="generate-visual-output">934<h3 id="generate-visual-output">


1143 1143 

1144Jika skill dikirim dalam plugin, Anda dapat mengukur seberapa sering skill tersebut terpicu di seluruh prompt yang realistis daripada memeriksa satu per satu: tulis kasus eval dengan [`tool_used: Skill` grader](/docs/id/plugin-evals#create-your-first-eval-suite) dan jalankan dengan `claude plugin eval` setelah setiap perubahan deskripsi.1144Jika skill dikirim dalam plugin, Anda dapat mengukur seberapa sering skill tersebut terpicu di seluruh prompt yang realistis daripada memeriksa satu per satu: tulis kasus eval dengan [`tool_used: Skill` grader](/docs/id/plugin-evals#create-your-first-eval-suite) dan jalankan dengan `claude plugin eval` setelah setiap perubahan deskripsi.

1145 1145 

1146Untuk menemukan file `SKILL.md` yang frontmatter-nya tidak parse, jalankan [`claude plugin validate`](/docs/id/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) pada direktori skills, misalnya `claude plugin validate .claude/skills` untuk project skills atau `claude plugin validate ~/.claude/skills` untuk personal skills. Memerlukan Claude Code v2.1.233 atau lebih baru.1146Untuk menemukan file `SKILL.md` yang frontmatter-nya tidak parse, jalankan [`claude plugin validate`](/docs/id/plugins/cli-reference#validate-a-directory) pada direktori skills, misalnya `claude plugin validate .claude/skills` untuk project skills atau `claude plugin validate ~/.claude/skills` untuk personal skills. Memerlukan Claude Code v2.1.233 atau lebih baru.

1147 1147 

1148<h3 id="skill-triggers-too-often">1148<h3 id="skill-triggers-too-often">

1149 Skill terpicu terlalu sering1149 Skill terpicu terlalu sering


1184* **[Mengevaluasi kualitas output skill](https://agentskills.io/skill-creation/evaluating-skills)**: format file eval dan alur kerja iterasi di agentskills.io1184* **[Mengevaluasi kualitas output skill](https://agentskills.io/skill-creation/evaluating-skills)**: format file eval dan alur kerja iterasi di agentskills.io

1185* **[Praktik terbaik penulisan skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)**: panduan penulisan yang berlaku di seluruh produk Claude1185* **[Praktik terbaik penulisan skill](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)**: panduan penulisan yang berlaku di seluruh produk Claude

1186* **[Subagents](/docs/id/sub-agents)**: delegasikan tugas ke agen khusus1186* **[Subagents](/docs/id/sub-agents)**: delegasikan tugas ke agen khusus

1187* **[Plugins](/docs/id/plugins)**: paket dan distribusikan skills dengan ekstensi lainnya1187* **[Plugins](/docs/id/plugins/overview)**: paket dan distribusikan skills dengan ekstensi lainnya

1188* **[Hooks](/docs/id/hooks)**: otomatisasi workflow di sekitar peristiwa tool1188* **[Hooks](/docs/id/hooks)**: otomatisasi workflow di sekitar peristiwa tool

1189* **[Memory](/docs/id/memory)**: kelola file CLAUDE.md untuk konteks persisten1189* **[Memory](/docs/id/memory)**: kelola file CLAUDE.md untuk konteks persisten

1190* **[Commands](/docs/id/commands)**: referensi untuk perintah bawaan dan skills bundel1190* **[Commands](/docs/id/commands)**: referensi untuk perintah bawaan dan skills bundel

statusline.md +1 −1

Details

1142 1142 

1143Tulis satu baris JSON ke stdout per baris yang ingin Anda ganti, dalam bentuk `{"id": "<task id>", "content": "<row body>"}`. String `content` dirender apa adanya, termasuk warna ANSI dan hyperlink OSC 8. Hilangkan `id` tugas untuk menjaga rendering default untuk baris itu; keluarkan string `content` kosong untuk menyembunyikannya.1143Tulis satu baris JSON ke stdout per baris yang ingin Anda ganti, dalam bentuk `{"id": "<task id>", "content": "<row body>"}`. String `content` dirender apa adanya, termasuk warna ANSI dan hyperlink OSC 8. Hilangkan `id` tugas untuk menjaga rendering default untuk baris itu; keluarkan string `content` kosong untuk menyembunyikannya.

1144 1144 

1145Gerbang kepercayaan, `disableAllHooks`, dan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) yang sama yang berlaku untuk `statusLine` berlaku di sini. Plugin dapat mengirimkan `subagentStatusLine` default dalam [`settings.json`](/docs/id/plugins-reference#standard-plugin-layout) mereka, tetapi tidak seperti hooks, nilai plugin tidak berjalan di bawah `allowManagedHooksOnly` bahkan ketika plugin dipaksa diaktifkan dalam pengaturan terkelola `enabledPlugins`.1145Gerbang kepercayaan, `disableAllHooks`, dan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) yang sama yang berlaku untuk `statusLine` berlaku di sini. Plugin dapat mengirimkan `subagentStatusLine` default dalam [`settings.json`](/docs/id/plugins/manifest-reference#standard-layout) mereka, tetapi tidak seperti hooks, nilai plugin tidak berjalan di bawah `allowManagedHooksOnly` bahkan ketika plugin dipaksa diaktifkan dalam pengaturan terkelola `enabledPlugins`.

1146 1146 

1147<h2 id="tips">1147<h2 id="tips">

1148 Tips1148 Tips

sub-agents.md +15 −13

Details

174| Flag CLI `--agents` | Sesi saat ini | 2 | Lewatkan JSON saat meluncurkan Claude Code |174| Flag CLI `--agents` | Sesi saat ini | 2 | Lewatkan JSON saat meluncurkan Claude Code |

175| `.claude/agents/` | Proyek saat ini | 3 | Tanyakan Claude, atau buat file secara manual |175| `.claude/agents/` | Proyek saat ini | 3 | Tanyakan Claude, atau buat file secara manual |

176| `~/.claude/agents/` | Semua proyek Anda | 4 | Tanyakan Claude, atau buat file secara manual |176| `~/.claude/agents/` | Semua proyek Anda | 4 | Tanyakan Claude, atau buat file secara manual |

177| Direktori `agents/` plugin | Tempat plugin diaktifkan | 5 (terendah) | Diinstal dengan [plugins](/docs/id/plugins) |177| Direktori `agents/` plugin | Tempat plugin diaktifkan | 5 (terendah) | Diinstal dengan [plugins](/docs/id/plugins/overview) |

178 178 

179**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.179**Subagent proyek** (`.claude/agents/`) ideal untuk subagent khusus untuk basis kode. Periksa mereka ke kontrol versi sehingga tim Anda dapat menggunakannya dan meningkatkannya secara kolaboratif.

180 180 

181Subagent proyek ditemukan dengan berjalan naik dari direktori kerja saat ini, sehingga setiap `.claude/agents/` antara sana dan akar repositori dipindai. Sejak v2.1.178, ketika lebih dari satu direktori bersarang ini mendefinisikan `name` yang sama, Claude Code menggunakan definisi yang paling dekat dengan direktori kerja.181Subagent proyek ditemukan dengan berjalan naik dari direktori kerja saat ini, sehingga setiap `.claude/agents/` antara sana dan akar repositori dipindai. Ketika lebih dari satu direktori bersarang ini mendefinisikan `name` yang sama, Claude Code menggunakan definisi yang paling dekat dengan direktori kerja.

182 182 

183Ketika Anda menambahkan direktori dengan `--add-dir` atau `/add-dir`, Claude Code juga memuat folder `.claude/agents/` miliknya, bersama dengan subagent proyek Anda. Lihat [Direktori tambahan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) untuk jenis konfigurasi lain mana yang dimuat dari `--add-dir`. Untuk berbagi subagent di seluruh proyek tanpa `--add-dir`, gunakan `~/.claude/agents/` atau [plugin](/docs/id/plugins).183Ketika Anda menambahkan direktori dengan `--add-dir` atau `/add-dir`, Claude Code juga memuat folder `.claude/agents/` miliknya, bersama dengan subagent proyek Anda. Lihat [Direktori tambahan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) untuk jenis konfigurasi lain mana yang dimuat dari `--add-dir`. Untuk berbagi subagent di seluruh proyek tanpa `--add-dir`, gunakan `~/.claude/agents/` atau [plugin](/docs/id/plugins/overview).

184 184 

185**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.185**Subagent pengguna** (`~/.claude/agents/`) adalah subagent pribadi yang tersedia di semua proyek Anda.

186 186 


238 238 

239**Subagent terkelola** digunakan oleh administrator organisasi. Tempatkan file markdown dalam `.claude/agents/` di dalam [direktori pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), menggunakan format frontmatter yang sama dengan subagent proyek dan pengguna. Definisi terkelola mengambil alih subagent proyek dan pengguna dengan nama yang sama.239**Subagent terkelola** digunakan oleh administrator organisasi. Tempatkan file markdown dalam `.claude/agents/` di dalam [direktori pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), menggunakan format frontmatter yang sama dengan subagent proyek dan pengguna. Definisi terkelola mengambil alih subagent proyek dan pengguna dengan nama yang sama.

240 240 

241**Subagent plugin** berasal dari [plugins](/docs/id/plugins) yang telah Anda instal. Mereka dimuat secara otomatis bersama subagent khusus Anda dan muncul dalam typeahead @-mention di bawah nama yang dibatasi cakupan mereka. Lihat [referensi komponen plugin](/docs/id/plugins-reference#agents) untuk detail tentang membuat subagent plugin.241**Subagent plugin** berasal dari [plugins](/docs/id/plugins/overview) yang telah Anda instal. Mereka dimuat secara otomatis bersama subagent khusus Anda dan muncul dalam typeahead @-mention di bawah nama yang dibatasi cakupan mereka. Lihat [referensi komponen plugin](/docs/id/plugins/components#agents) untuk detail tentang membuat subagent plugin.

242 242 

243<Note>243<Note>

244 Untuk alasan keamanan, subagent plugin tidak mendukung bidang frontmatter `hooks`, `mcpServers`, atau `permissionMode`. Bidang-bidang ini diabaikan saat memuat agen dari plugin. Jika Anda membutuhkannya, salin file agen ke dalam `.claude/agents/` atau `~/.claude/agents/`. Anda juga dapat menambahkan aturan ke [`permissions.allow`](/docs/id/settings-reference#permissions-allow) dalam `settings.json` atau `settings.local.json`, tetapi aturan-aturan ini berlaku untuk seluruh sesi, bukan hanya subagent plugin.244 Untuk alasan keamanan, subagent plugin tidak mendukung bidang frontmatter `hooks`, `mcpServers`, atau `permissionMode`. Bidang-bidang ini diabaikan saat memuat agen dari plugin. Jika Anda membutuhkannya, salin file agen ke dalam `.claude/agents/` atau `~/.claude/agents/`. Anda juga dapat menambahkan aturan ke [`permissions.allow`](/docs/id/settings-reference#permissions-allow) dalam `settings.json` atau `settings.local.json`, tetapi aturan-aturan ini berlaku untuk seluruh sesi, bukan hanya subagent plugin.


305 305 

306| Bidang | Diperlukan | Deskripsi |306| Bidang | Diperlukan | Deskripsi |

307| :---------------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |307| :---------------- | :--------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

308| `name` | Ya | Pengenal unik, seperti `code-reviewer` atau `reviewer-v2`. [Hooks](/docs/id/hooks#subagentstart) menerima nilai ini sebagai `agent_type`. Nama file tidak harus cocok. Nama tidak dapat berisi `:`, yang dicadangkan untuk [pengenal yang dibatasi cakupan plugin](/docs/id/plugins) seperti `my-plugin:reviewer`. Claude Code tidak memuat file yang namanya berisi satu dan mencatat kesalahan ke debug log. Sebelum v2.1.218, nama seperti itu diterima |308| `name` | Ya | Pengenal unik, seperti `code-reviewer` atau `reviewer-v2`. [Hooks](/docs/id/hooks#subagentstart) menerima nilai ini sebagai `agent_type`. Nama file tidak harus cocok. Nama tidak dapat berisi `:`, yang dicadangkan untuk [pengenal yang dibatasi cakupan plugin](/docs/id/plugins/overview) seperti `my-plugin:reviewer`. Claude Code tidak memuat file yang namanya berisi satu dan mencatat kesalahan ke debug log. Sebelum v2.1.218, nama seperti itu diterima |

309| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |309| `description` | Ya | Kapan Claude harus mendelegasikan ke subagent ini |

310| `tools` | Tidak | [Alat](#available-tools) yang dapat digunakan subagent, sebagai string yang dipisahkan koma seperti `Read, Grep, Bash` atau daftar YAML. Mewarisi setiap alat yang tersedia untuk subagent jika dihilangkan. Jika tidak ada entri dalam daftar yang diselesaikan ke alat, subagent biasanya [gagal diluncurkan](/docs/id/errors#agent-would-be-spawned-with-zero-tools) dengan kesalahan yang menyebutkan entri. Untuk memuat Skills ke dalam konteks, gunakan bidang `skills` daripada mencantumkan `Skill` di sini |310| `tools` | Tidak | [Alat](#available-tools) yang dapat digunakan subagent, sebagai string yang dipisahkan koma seperti `Read, Grep, Bash` atau daftar YAML. Mewarisi setiap alat yang tersedia untuk subagent jika dihilangkan. Jika tidak ada entri dalam daftar yang diselesaikan ke alat, subagent biasanya [gagal diluncurkan](/docs/id/errors#agent-would-be-spawned-with-zero-tools) dengan kesalahan yang menyebutkan entri. Untuk memuat Skills ke dalam konteks, gunakan bidang `skills` daripada mencantumkan `Skill` di sini |

311| `disallowedTools` | Tidak | Alat untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan. Format yang sama dengan `tools`. Entri dengan penentu, seperti `Bash(git push *)`, masih [menghapus seluruh alat](#available-tools) |311| `disallowedTools` | Tidak | Alat untuk ditolak, dihapus dari daftar yang diwarisi atau ditentukan. Format yang sama dengan `tools`. Entri dengan penentu, seperti `Bash(git push *)`, masih [menghapus seluruh alat](#available-tools) |


349 349 

350Untuk melihat debug log, jalankan Claude Code dengan `--debug`.350Untuk melihat debug log, jalankan Claude Code dengan `--debug`.

351 351 

352[Subagent plugin](/docs/id/plugins-reference#agents) yang frontmatter-nya tidak memiliki `name` atau tidak diuraikan masih dimuat, di bawah nama file-nya.352[Subagent plugin](/docs/id/plugins/components#agents) yang frontmatter-nya tidak memiliki `name` atau tidak diuraikan masih dimuat, di bawah nama file-nya.

353 353 

354<h5 id="check-an-agents-directory-before-a-session">354<h5 id="check-an-agents-directory-before-a-session">

355 Periksa direktori `agents` sebelum sesi355 Periksa direktori `agents` sebelum sesi

356</h5>356</h5>

357 357 

358Untuk menemukan file dalam direktori `agents` yang frontmatter-nya tidak diuraikan, jalankan `claude plugin validate` terhadap direktori, misalnya `.claude/agents` atau `~/.claude/agents`. Claude Code memeriksa hanya [direktori yang Anda beri nama](/docs/id/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest), dan tidak menandai file yang frontmatter-nya diuraikan tetapi tidak memiliki `name`. Memerlukan Claude Code v2.1.233 atau lebih baru.358Untuk menemukan file dalam direktori `agents` yang frontmatter-nya tidak diuraikan, jalankan `claude plugin validate` terhadap direktori, misalnya `.claude/agents` atau `~/.claude/agents`. Claude Code memeriksa hanya [direktori yang Anda beri nama](/docs/id/plugins/cli-reference#validate-a-directory), dan tidak menandai file yang frontmatter-nya diuraikan tetapi tidak memiliki `name`. Memerlukan Claude Code v2.1.233 atau lebih baru.

359 359 

360<h3 id="choose-a-model">360<h3 id="choose-a-model">

361 Pilih model361 Pilih model


573* Nama yang mereferensikan server yang sudah Anda konfigurasi573* Nama yang mereferensikan server yang sudah Anda konfigurasi

574* Server inline dalam file agen dari `~/.claude/agents/`, dalam satu yang Anda lewatkan dengan `--agents` atau opsi SDK `agents`, atau dalam satu yang pengaturan terkelola sediakan574* Server inline dalam file agen dari `~/.claude/agents/`, dalam satu yang Anda lewatkan dengan `--agents` atau opsi SDK `agents`, atau dalam satu yang pengaturan terkelola sediakan

575 575 

576Sejak v2.1.153, pembatasan MCP yang berlaku untuk sesi utama juga mencakup server yang dideklarasikan dalam frontmatter subagent:576Pembatasan MCP yang berlaku untuk sesi utama juga mencakup server yang dideklarasikan dalam frontmatter subagent:

577 577 

578* [`--strict-mcp-config`](/docs/id/cli-reference) dan [`--bare`](/docs/id/cli-reference)578* [`--strict-mcp-config`](/docs/id/cli-reference) dan [`--bare`](/docs/id/cli-reference)

579* [Konfigurasi MCP terkelola Enterprise](/docs/id/managed-mcp)579* [Konfigurasi MCP terkelola Enterprise](/docs/id/managed-mcp)


820| `SubagentStart` | Nama jenis agen | Ketika subagent mulai dijalankan |820| `SubagentStart` | Nama jenis agen | Ketika subagent mulai dijalankan |

821| `SubagentStop` | Nama jenis agen | Ketika subagent selesai |821| `SubagentStop` | Nama jenis agen | Ketika subagent selesai |

822 822 

823Kedua peristiwa mendukung matcher untuk menargetkan jenis agen tertentu berdasarkan nama. Nilai matcher adalah `name` frontmatter agen untuk subagent tingkat proyek dan pengguna, atau pengenal yang dibatasi cakupan plugin seperti `my-plugin:db-agent` untuk [subagent plugin](/docs/id/plugins). Nama yang dibatasi cakupan berisi titik dua, sehingga dievaluasi sebagai [ekspresi reguler yang tidak berlabuh](/docs/id/hooks#matcher-patterns); jangkarnya dengan `^` dan `$`, seperti dalam `^my-plugin:db-agent$`, untuk mencocokkan hanya agen itu.823Kedua peristiwa mendukung matcher untuk menargetkan jenis agen tertentu berdasarkan nama. Nilai matcher adalah `name` frontmatter agen untuk subagent tingkat proyek dan pengguna, atau pengenal yang dibatasi cakupan plugin seperti `my-plugin:db-agent` untuk [subagent plugin](/docs/id/plugins/components#agents). Nama yang dibatasi cakupan berisi titik dua, sehingga dievaluasi sebagai [ekspresi reguler yang tidak berlabuh](/docs/id/hooks#matcher-patterns); jangkarnya dengan `^` dan `$`, seperti dalam `^my-plugin:db-agent$`, untuk mencocokkan hanya agen itu.

824 824 

825Contoh ini menjalankan skrip setup hanya ketika subagent `db-agent` dimulai, dan skrip cleanup ketika subagent apa pun berhenti:825Contoh ini menjalankan skrip setup hanya ketika subagent `db-agent` dimulai, dan skrip cleanup ketika subagent apa pun berhenti:

826 826 


862 862 

863Jaga deskripsi tetap singkat: Claude Code menampilkan peringatan startup ketika deskripsi gabungan subagent Anda melampaui [batas 15.000 token](/docs/id/errors#agent-descriptions-are-over-the-15000-token-limit), dan masih memuat setiap subagent.863Jaga deskripsi tetap singkat: Claude Code menampilkan peringatan startup ketika deskripsi gabungan subagent Anda melampaui [batas 15.000 token](/docs/id/errors#agent-descriptions-are-over-the-15000-token-limit), dan masih memuat setiap subagent.

864 864 

865Jika subagent dikirim dalam [plugin](/docs/id/plugins/overview), Anda dapat mengukur seberapa andal Claude mendelegasikan ke dalamnya di seluruh prompt realistis daripada memeriksa satu per satu: [`claude plugin eval`](/docs/id/plugin-evals) menjalankan setiap prompt dengan dan tanpa plugin dan menilai hasilnya.

866 

865<h3 id="invoke-subagents-explicitly">867<h3 id="invoke-subagents-explicitly">

866 Panggil subagent secara eksplisit868 Panggil subagent secara eksplisit

867</h3>869</h3>


887 889 

888Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.890Pesan lengkap Anda masih pergi ke Claude, yang menulis prompt tugas subagent berdasarkan apa yang Anda minta. @-mention mengontrol subagent mana yang Claude panggil, bukan prompt apa yang diterima.

889 891 

890Subagent yang disediakan oleh [plugin](/docs/id/plugins) yang diaktifkan muncul di typeahead dengan nama yang dibatasi, seperti `my-plugin:code-reviewer` atau `my-plugin:review:security` ketika plugin [mengorganisir agen ke dalam subfolder](#choose-the-subagent-scope). Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama.892Subagent yang disediakan oleh [plugin](/docs/id/plugins/overview) yang diaktifkan muncul di typeahead dengan nama yang dibatasi, seperti `my-plugin:code-reviewer` atau `my-plugin:review:security` ketika plugin [mengorganisir agen ke dalam subfolder](#choose-the-subagent-scope). Subagent background bernama yang saat ini berjalan dalam sesi juga muncul di typeahead, menunjukkan status mereka di samping nama.

891 893 

892Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-` diikuti dengan nama yang dibatasi untuk subagent plugin, misalnya `@agent-my-plugin:code-reviewer`. Saat Anda mengetik formulir ini, typeahead menampilkan kecocokan file daripada agen. Penyebutan agen masih diselesaikan saat Anda mengirimkan.894Anda juga dapat mengetik mention secara manual tanpa menggunakan picker: `@agent-<name>` untuk subagent lokal, atau `@agent-` diikuti dengan nama yang dibatasi untuk subagent plugin, misalnya `@agent-my-plugin:code-reviewer`. Saat Anda mengetik formulir ini, typeahead menampilkan kecocokan file daripada agen. Penyebutan agen masih diselesaikan saat Anda mengirimkan.

893 895 


934Subagent dapat berjalan di foreground atau background:936Subagent dapat berjalan di foreground atau background:

935 937 

936* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.938* **Subagent foreground** memblokir percakapan utama sampai selesai. Prompt izin dilewatkan kepada Anda saat muncul.

937* **Subagent background** berjalan secara bersamaan sementara Anda terus bekerja. Ketika subagent background mencapai panggilan alat yang memerlukan izin, Claude Code menampilkan prompt di sesi utama Anda dan menyebutkan subagent yang bertanya. Setujui untuk membiarkan subagent melanjutkan, atau tekan Esc untuk menolak panggilan alat itu saja tanpa menghentikan subagent. Sebelum v2.1.186, subagent background auto-deny setiap panggilan alat yang sebaliknya akan meminta.939* **Subagent background** berjalan secara bersamaan sementara Anda terus bekerja. Ketika subagent background mencapai panggilan alat yang memerlukan izin, Claude Code menampilkan prompt di sesi utama Anda dan menyebutkan subagent yang bertanya. Setujui untuk membiarkan subagent melanjutkan, atau tekan Esc untuk menolak panggilan alat itu saja tanpa menghentikan subagent.

938 940 

939Untuk setiap subagent yang Claude hasilkan dengan alat Agent, Claude Code memilih foreground atau background dari kasus pertama yang berlaku:941Untuk setiap subagent yang Claude hasilkan dengan alat Agent, Claude Code memilih foreground atau background dari kasus pertama yang berlaku:

940 942 


1177 1179 

1178Subagent yang Anda hentikan sendiri, dengan `x` dalam `/tasks` atau permintaan SDK `stop_task`, tidak auto-resume. Jika Claude mengirimnya pesan, pesan ditolak dan Claude diberitahu agen dibatalkan.1180Subagent yang Anda hentikan sendiri, dengan `x` dalam `/tasks` atau permintaan SDK `stop_task`, tidak auto-resume. Jika Claude mengirimnya pesan, pesan ditolak dan Claude diberitahu agen dibatalkan.

1179 1181 

1180Sementara [baris subagent itu masih dalam panel subagent](#run-subagents-in-foreground-or-background), ketik ke dalam transkrip untuk melanjutkannya sendiri. Setelah itu, pesan dari Claude dapat auto-resume lagi. Memerlukan Claude Code v2.1.191 atau lebih baru.1182Sementara [baris subagent itu masih dalam panel subagent](#run-subagents-in-foreground-or-background), ketik ke dalam transkrip untuk melanjutkannya sendiri. Setelah itu, pesan dari Claude dapat auto-resume lagi.

1181 1183 

1182Melanjutkan memulai run baru dari agen di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas SDK Agent. Sebelum v2.1.205, itu terus menunjukkan status gagal atau selesai sebelumnya sementara run yang dilanjutkan sedang bekerja.1184Melanjutkan memulai run baru dari agen di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas SDK Agent. Sebelum v2.1.205, itu terus menunjukkan status gagal atau selesai sebelumnya sementara run yang dilanjutkan sedang bekerja.

1183 1185 


1495 1497 

1496Sekarang setelah Anda memahami subagent, jelajahi fitur terkait ini:1498Sekarang setelah Anda memahami subagent, jelajahi fitur terkait ini:

1497 1499 

1498* [Distribusikan subagent dengan plugins](/docs/id/plugins) untuk berbagi subagent di seluruh tim atau proyek1500* [Distribusikan subagent dengan plugins](/docs/id/plugins/components#agents) untuk berbagi subagent di seluruh tim atau proyek

1499* [Jalankan Claude Code secara terprogram](/docs/id/headless) dengan Agent SDK untuk CI/CD dan otomasi1501* [Jalankan Claude Code secara terprogram](/docs/id/headless) dengan Agent SDK untuk CI/CD dan otomasi

1500* [Gunakan MCP servers](/docs/id/mcp) untuk memberikan subagent akses ke alat dan data eksternal1502* [Gunakan MCP servers](/docs/id/mcp) untuk memberikan subagent akses ke alat dan data eksternal

Details

156 Buat tema khusus156 Buat tema khusus

157</h3>157</h3>

158 158 

159Selain preset bawaan, `/theme` mencantumkan tema khusus apa pun yang telah Anda tentukan dan tema apa pun yang disumbangkan oleh [plugin](/docs/id/plugins-reference#themes) yang terinstal. Pilih **New custom theme…** di akhir daftar untuk membuat satu secara interaktif: Anda memberi nama tema, kemudian pilih token warna individual untuk ditimpa. Tekan `Ctrl+E` saat tema khusus disorot untuk mengeditnya.159Selain preset bawaan, `/theme` mencantumkan tema khusus apa pun yang telah Anda tentukan dan tema apa pun yang disumbangkan oleh [plugins](/docs/id/plugins/components#themes-and-output-styles) yang terinstal. Pilih **New custom theme…** di akhir daftar untuk membuat satu secara interaktif: Anda memberi nama tema, kemudian pilih token warna individual untuk ditimpa. Tekan `Ctrl+E` saat tema khusus disorot untuk mengeditnya.

160 160 

161Setiap tema khusus adalah file JSON di `~/.claude/themes/`. Nama file tanpa ekstensi `.json` adalah slug tema, dan memilih tema menyimpan `custom:<slug>` sebagai preferensi tema Anda. File memiliki tiga bidang opsional:161Setiap tema khusus adalah file JSON di `~/.claude/themes/`. Nama file tanpa ekstensi `.json` adalah slug tema, dan memilih tema menyimpan `custom:<slug>` sebagai preferensi tema Anda. File memiliki tiga bidang opsional:

162 162 

tools-reference.md +20 −20

Details

151Alat Bash menjalankan setiap perintah dalam proses terpisah.151Alat Bash menjalankan setiap perintah dalam proses terpisah.

152 152 

153<h3 id="what-persists-between-commands">153<h3 id="what-persists-between-commands">

154 Apa yang bertahan antar perintah154 Apa yang bertahan di antara perintah

155</h3>155</h3>

156 156 

157* Ketika Claude menjalankan `cd` dalam sesi utama, direktori kerja baru terbawa ke perintah Bash yang lebih baru selama tetap berada di dalam direktori proyek atau [direktori kerja tambahan](/docs/id/permissions#working-directories) yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan. Ini termasuk perintah yang Claude jalankan sebagai respons terhadap pesan Anda yang lebih baru.157* Ketika Claude menjalankan `cd` dalam sesi utama, direktori kerja baru terbawa ke perintah Bash yang lebih baru selama tetap berada di dalam direktori proyek atau [direktori kerja tambahan](/docs/id/permissions#working-directories) yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan. Ini termasuk perintah yang Claude jalankan sebagai respons terhadap pesan Anda yang lebih baru.

158 * Sesi subagent tidak pernah membawa perubahan direktori kerja.158 * Sesi subagent tidak pernah membawa perubahan direktori kerja.

159 * Jika `cd` mendarat di luar direktori-direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkan `Shell cwd was reset to <dir>` ke hasil alat.159 * Jika `cd` mendarat di luar direktori tersebut, Claude Code mengatur ulang ke direktori proyek dan menambahkan `Shell cwd was reset to <dir>` ke hasil alat.

160 * Untuk menonaktifkan pembawaan ini sehingga setiap perintah Bash dimulai di direktori proyek, atur `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.160 * Untuk menonaktifkan carry-over ini sehingga setiap perintah Bash dimulai di direktori proyek, atur `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1`.

161* Variabel lingkungan tidak bertahan. `export` dalam satu perintah tidak akan tersedia di perintah berikutnya.161* Variabel lingkungan tidak bertahan. `export` dalam satu perintah tidak akan tersedia di perintah berikutnya.

162* Alias dan fungsi shell yang ditentukan dalam file startup shell Anda tersedia. Pada awal sesi, Claude Code bersumber dari `~/.zshrc`, `~/.bashrc`, atau `~/.profile` tergantung pada shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, dan menerapkannya ke setiap perintah Bash.162* Alias dan fungsi shell yang ditentukan dalam file startup shell Anda tersedia. Pada awal sesi, Claude Code bersumber dari `~/.zshrc`, `~/.bashrc`, atau `~/.profile` tergantung pada shell Anda, menangkap alias, fungsi, dan opsi shell yang dihasilkan, dan menerapkannya ke setiap perintah Bash.

163 163 

164Aktifkan virtualenv atau lingkungan conda Anda sebelum meluncurkan Claude Code. Untuk membuat variabel lingkungan bertahan di seluruh perintah Bash, atur [`CLAUDE_ENV_FILE`](/docs/id/env-vars) ke skrip shell sebelum meluncurkan Claude Code, atau gunakan [hook SessionStart](/docs/id/hooks#persist-environment-variables) untuk mengisinya secara dinamis.164Aktifkan virtualenv atau lingkungan conda Anda sebelum meluncurkan Claude Code. Untuk membuat variabel lingkungan bertahan di seluruh perintah Bash, atur [`CLAUDE_ENV_FILE`](/docs/id/env-vars) ke skrip shell sebelum meluncurkan Claude Code, atau gunakan [hook SessionStart](/docs/id/hooks#persist-environment-variables) untuk mengisinya secara dinamis.

165 165 

166<h3 id="timeout-and-output-limits">166<h3 id="timeout-and-output-limits">

167 Batas waktu tunggu dan output167 Batas waktu dan output

168</h3>168</h3>

169 169 

170Setiap perintah berjalan di bawah waktu tunggu, dan Claude mengelolanya: ketika menginginkan lebih lama dari default untuk perintah, Claude melewatkan parameter `timeout` dengan panggilan itu — Anda tidak pernah menetapkan waktu tunggu per perintah. Dua [variabel lingkungan](/docs/id/env-vars) membatasi apa yang Claude dapatkan:170Setiap perintah berjalan di bawah batas waktu, dan Claude mengelolanya: ketika menginginkan lebih lama dari default untuk perintah, ia melewatkan parameter `timeout` dengan panggilan itu — Anda tidak pernah menetapkan batas waktu per perintah. Dua [variabel lingkungan](/docs/id/env-vars) membatasi apa yang Claude dapatkan:

171 171 

172* `BASH_DEFAULT_TIMEOUT_MS` — default ketika Claude tidak melewatkan waktu tunggu; dua menit di luar kotak172* `BASH_DEFAULT_TIMEOUT_MS` — default ketika Claude tidak melewatkan batas waktu; dua menit di luar kotak

173* `BASH_MAX_TIMEOUT_MS` — dengan default, menetapkan batas yang membatasi apa pun yang Claude minta: batas efektif adalah yang lebih besar dari keduanya, sepuluh menit di luar kotak173* `BASH_MAX_TIMEOUT_MS` — dengan default, menetapkan batas yang membatasi apa pun yang Claude minta: batas efektif adalah yang lebih besar dari keduanya, sepuluh menit di luar kotak

174 174 

175<h4 id="output-limits">175<h4 id="output-limits">

176 Batas output176 Batas output

177</h4>177</h4>

178 178 

179Claude Code mengalirkan output perintah ke file kerja saat perintah berjalan; perintah yang outputnya melampaui 5 GB dibunuh. Ketika perintah selesai, Claude Code membaca output kembali dari file itu, hingga jendela baca-balik yang dijelaskan di bawah. Berapa banyak output yang mencapai Claude secara inline tergantung pada apakah Claude Code memperlakukan hasil sebagai kegagalan:179Claude Code mengalirkan output perintah ke file kerja saat perintah berjalan; perintah yang outputnya melampaui 5 GB dibunuh. Ketika perintah selesai, Claude Code membaca output kembali dari file itu, hingga jendela read-back yang dijelaskan di bawah. Berapa banyak output yang mencapai Claude secara inline tergantung pada apakah Claude Code memperlakukan hasil sebagai kegagalan:

180 180 

181| Hasil | Apa yang Claude dapatkan |181| Hasil | Apa yang Claude dapatkan |

182| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |182| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

183| Valid | Inline hingga kira-kira 30.000 karakter secara default; melampaui itu, jalur file yang disimpan ke direktori sesi dan dipotong melampaui 64 MiB, ditambah pratinjau singkat dari awal, dan Claude membaca atau mencari file ketika membutuhkan sisanya |183| Valid | Inline hingga kira-kira 30.000 karakter secara default; melampaui itu, jalur file yang disimpan ke direktori sesi dan dipotong melampaui 64 MiB, ditambah pratinjau hingga 2.000 karakter pertama, dan Claude membaca atau mencari file ketika membutuhkan sisanya |

184| Kegagalan | Inline hingga kira-kira 10.000 karakter; melampaui itu, kutipan kepala-dan-ekor ukuran itu dipotong dari jendela baca-balik, tanpa jalur file |184| Kegagalan | Inline hingga kira-kira 10.000 karakter; melampaui itu, kutipan kepala-dan-ekor ukuran itu dipotong dari jendela read-back, tanpa jalur file |

185 185 

186Perintah yang keluar 1 dihitung sebagai hasil valid untuk alat Bash hanya ketika Claude Code mengenali kode keluar 1 sebagai hasil yang jinak untuk perintah itu: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, dan `[`, ditambah `git diff` dan `git grep`. Setiap perintah lain yang keluar 1 dihitung sebagai kegagalan, bahkan ketika keluar 1 adalah hasil informasional yang jinak: tidak ada kecocokan untuk `pgrep` dan `jq -e`, file yang berbeda untuk `cmp`.186Perintah yang keluar 1 dihitung sebagai hasil valid untuk alat Bash hanya ketika Claude Code mengenali kode keluar 1 sebagai hasil yang jinak untuk perintah itu: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, dan `[`, ditambah `git diff` dan `git grep`. Setiap perintah lain yang keluar 1 dihitung sebagai kegagalan, bahkan ketika keluar 1 adalah hasil informasional yang jinak: tidak ada kecocokan untuk `pgrep` dan `jq -e`, file yang berbeda untuk `cmp`.

187 187 

188[`BASH_MAX_OUTPUT_LENGTH`](/docs/id/env-vars) menetapkan berapa banyak karakter output yang Claude Code baca kembali dari file kerja ke hasil perintah: 30.000 secara default, hingga batas keras 150.000. Naikkan ketika perintah Anda secara rutin melampaui jendela itu, seperti build verbose atau log rangkaian tes lengkap. Menaikkannya memperbesar jendela baca-balik, yang juga merupakan jendela kutipan perintah yang gagal dipotong. Ini tidak menaikkan batas inline: hasil valid di atas batas inline tiba sebagai jalur file ditambah pratinjau terlepas dari variabel ini.188[`BASH_MAX_OUTPUT_LENGTH`](/docs/id/env-vars) menetapkan berapa banyak karakter output yang Claude Code baca kembali dari file kerja ke hasil perintah: 30.000 secara default, hingga batas keras 150.000. Naikkan ketika perintah Anda secara rutin melampaui jendela itu, seperti build verbose atau log test-suite lengkap. Menaikkannya memperbesar jendela read-back, yang juga merupakan jendela kutipan perintah yang gagal dipotong. Itu tidak menaikkan batas inline: hasil valid di atas batas inline tiba sebagai jalur file ditambah pratinjau terlepas dari variabel ini.

189 189 

190Untuk mengubah berapa banyak hasil valid yang Claude terima secara inline, atur pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars) sebagai gantinya, hingga 128.000 karakter. Ini mengukur batas inline dan jendela baca-balik bersama-sama, dan Claude Code kemudian mengabaikan `BASH_MAX_OUTPUT_LENGTH`. Memerlukan Claude Code v2.1.261 atau lebih baru.190Untuk mengubah berapa banyak hasil valid yang Claude terima secara inline, atur pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars) sebagai gantinya, hingga 128.000 karakter. Ini mengukur batas inline dan jendela read-back bersama-sama, dan Claude Code kemudian mengabaikan `BASH_MAX_OUTPUT_LENGTH`. Memerlukan Claude Code v2.1.261 atau lebih baru.

191 191 

192<h3 id="background-commands">192<h3 id="background-commands">

193 Perintah latar belakang193 Perintah latar belakang

194</h3>194</h3>

195 195 

196Untuk proses yang berjalan lama seperti server dev atau build watch, Claude dapat mengatur `run_in_background: true` untuk memulai perintah sebagai tugas latar belakang dan terus bekerja saat berjalan. Daftar dan hentikan tugas latar belakang dengan `/tasks`. Setelah Anda menghentikan satu di sana, atau dari klien yang terhubung seperti aplikasi desktop, Claude melanjutkan alih-alih menunggu. Jika subagent memulai perintah, subagent itulah yang melanjutkan.196Untuk proses yang berjalan lama seperti server dev atau build watch, Claude dapat mengatur `run_in_background: true` untuk memulai perintah sebagai tugas latar belakang dan terus bekerja saat berjalan. Daftar dan hentikan tugas latar belakang dengan `/tasks`. Setelah Anda menghentikan satu di sana, atau dari klien yang terhubung seperti aplikasi desktop, Claude melanjutkan alih-alih menunggu. Jika subagent memulai perintah, itu adalah subagent itu yang melanjutkan.

197 197 

198Perintah yang dimulai oleh [subagent latar depan](/docs/id/sub-agents#run-subagents-in-foreground-or-background) berhenti ketika subagent itu memberikan respons finalnya. Perintah yang dimulai oleh percakapan utama atau subagent latar belakang terus berjalan setelah respons final. Dalam mode non-interaktif dengan bendera `-p`, [perintah latar belakang berakhir segera setelah hasil final jalannya](/docs/id/headless#background-tasks-at-exit).198Perintah yang dimulai oleh [subagent foreground](/docs/id/sub-agents#run-subagents-in-foreground-or-background) berhenti ketika subagent itu memberikan respons finalnya. Perintah yang dimulai oleh percakapan utama atau subagent latar belakang terus berjalan setelah respons final. Dalam mode non-interaktif dengan flag `-p`, [perintah latar belakang berakhir segera setelah hasil final run](/docs/id/headless#background-tasks-at-exit).

199 199 

200Ketika perintah mencapai waktu tunggunya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. Claude terus bekerja saat perintah berlanjut. Claude Code menerapkan aturan seumur hidup yang sama ke perintah yang dipindahkan seperti ke perintah latar belakang lainnya, jadi masih menghentikan perintah subagent latar depan pada respons final subagent itu. Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang.200Ketika perintah mencapai batas waktunya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. Claude terus bekerja saat perintah berlanjut. Claude Code menerapkan aturan lifetime yang sama ke perintah yang dipindahkan seperti ke perintah latar belakang lainnya, jadi masih menghentikan perintah subagent foreground pada respons final subagent itu. Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang.

201 201 

202Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:202Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:

203 203 

204* Ketika waktu tunggu memicu perpindahan, hasil melaporkannya secara eksplisit: `Command did not complete within its 120s timeout and was moved to the background`, dengan detik sesuai dengan waktu tunggu yang berlaku, diikuti oleh ID tugas dan jalur file yang output sedang ditulis.204* Ketika batas waktu memicu perpindahan, hasil melaporkannya secara eksplisit: `Command did not complete within its 120s timeout and was moved to the background`, dengan detik sesuai dengan batas waktu yang berlaku, diikuti oleh ID tugas dan jalur file tempat output ditulis.

205* Sebuah `cd`, `pushd`, `popd`, atau `chdir` di dalam perintah yang dipindahkan ke latar belakang tidak pernah terbawa: hasil menyatakan `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, jadi Claude tidak bertindak atas perubahan direktori yang tidak terjadi.205* Sebuah `cd`, `pushd`, `popd`, atau `chdir` di dalam perintah yang dipindahkan ke latar belakang tidak pernah terbawa: hasil menyatakan `Session cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.`, jadi Claude tidak bertindak atas perubahan direktori yang tidak terjadi.

206 206 

207<h3 id="memory-limit-on-linux-and-wsl">207<h3 id="memory-limit-on-linux-and-wsl">


221* `mcp`: server [MCP](/docs/id/mcp) lokal221* `mcp`: server [MCP](/docs/id/mcp) lokal

222* `lsp`: [server bahasa](#lsp-tool-behavior)222* `lsp`: [server bahasa](#lsp-tool-behavior)

223* `hooks`: perintah [hook](/docs/id/hooks)223* `hooks`: perintah [hook](/docs/id/hooks)

224* `plugin`: perintah yang [plugin](/docs/id/plugins) jalankan224* `plugin`: perintah yang [plugin](/docs/id/plugins/overview) jalankan

225* `helper`: perintah helper Claude Code sendiri, seperti `git`225* `helper`: perintah helper Claude Code sendiri, seperti `git`

226* `agent`: proses Claude Code anak, seperti [rekan tim agen](/docs/id/agent-teams)226* `agent`: proses Claude Code anak, seperti [rekan tim agen](/docs/id/agent-teams)

227 227 


230* **Nama tidak dikenal**: Claude Code mengabaikan nama yang tidak dikenalinya230* **Nama tidak dikenal**: Claude Code mengabaikan nama yang tidak dikenalinya

231* **Bash, PowerShell, dan Monitor**: Claude Code menjaga perintah alat Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda daftar231* **Bash, PowerShell, dan Monitor**: Claude Code menjaga perintah alat Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda daftar

232* **Variabel tidak diatur**: Claude Code mengambil set jenis yang dibatasi lainnya dari konfigurasi yang Anthropic berikan dari server, dan set itu dapat berubah seiring waktu, jadi atur variabel ketika Anda membutuhkan set yang tidak berubah232* **Variabel tidak diatur**: Claude Code mengambil set jenis yang dibatasi lainnya dari konfigurasi yang Anthropic berikan dari server, dan set itu dapat berubah seiring waktu, jadi atur variabel ketika Anda membutuhkan set yang tidak berubah

233* **Hook gating izin**: bahkan dengan setiap jenis dibatasi, Claude Code mengecualikan dari batas hook yang dapat memblokir atau mengubah hasil tindakan, dan server MCP apa pun yang hook tersebut panggil, sehingga kernel membunuh hook gating izin tidak dapat memungkinkan tindakan yang diblokir233* **Hook gating izin**: bahkan dengan setiap jenis dibatasi, Claude Code mengecualikan dari batas hook yang dapat memblokir atau mengubah hasil tindakan, dan server MCP apa pun yang hook tersebut panggil, sehingga kernel membunuh hook gating izin tidak dapat memungkinkan tindakan yang sedang diblokir.

234 234 

235<h2 id="edit-tool-behavior">235<h2 id="edit-tool-behavior">

236 Perilaku alat Edit236 Perilaku alat Edit


344* Temukan implementasi antarmuka344* Temukan implementasi antarmuka

345* Lacak hierarki panggilan345* Lacak hierarki panggilan

346 346 

347Claude Code menjaga tool tetap tidak aktif sampai Anda menginstal [plugin intelijen kode](/docs/id/discover-plugins#code-intelligence) untuk bahasa Anda. Dalam [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code tidak memulai language server plugin, jadi LSP tool tetap tidak aktif di sana. Claude Code mengambil konfigurasi language server dari plugin, dan Anda menginstal binary server sendiri.347Claude Code menjaga tool tetap tidak aktif sampai Anda menginstal [plugin intelijen kode](/docs/id/plugins/code-intelligence) untuk bahasa Anda. Dalam [sesi cloud](/docs/id/claude-code-on-the-web), Claude Code tidak memulai language server plugin, jadi LSP tool tetap tidak aktif di sana. Claude Code mengambil konfigurasi language server dari plugin, dan Anda menginstal binary server sendiri.

348 348 

349Claude Code mengembalikan hasil kesalahan untuk setiap panggilan LSP pada file yang language server-nya tidak dapat dimulai.349Claude Code mengembalikan hasil kesalahan untuk setiap panggilan LSP pada file yang language server-nya tidak dapat dimulai.

350 350 


376 376 

377Tool ini tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur.377Tool ini tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur.

378 378 

379Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](/docs/id/plugins-reference#monitors).379Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](/docs/id/plugins/components#monitors).

380 380 

381<h3 id="websocket-source">381<h3 id="websocket-source">

382 WebSocket source382 WebSocket source

vs-code.md +2 −2

Details

331 Kelola plugin331 Kelola plugin

332</h2>332</h2>

333 333 

334Ekstensi VS Code menyertakan antarmuka grafis untuk menginstal dan mengelola [plugin](/docs/id/plugins). Ketik `/plugins` di kotak prompt untuk membuka antarmuka **Kelola plugin**.334Ekstensi VS Code menyertakan antarmuka grafis untuk menginstal dan mengelola [plugin](/docs/id/plugins/overview). Ketik `/plugins` di kotak prompt untuk membuka antarmuka **Kelola plugin**.

335 335 

336<h3 id="install-plugins">336<h3 id="install-plugins">

337 Instal plugin337 Instal plugin


394 Manajemen plugin di VS Code menggunakan perintah CLI yang sama di balik layar. Plugin dan marketplace yang Anda konfigurasi di ekstensi juga tersedia di CLI, dan sebaliknya.394 Manajemen plugin di VS Code menggunakan perintah CLI yang sama di balik layar. Plugin dan marketplace yang Anda konfigurasi di ekstensi juga tersedia di CLI, dan sebaliknya.

395</Note>395</Note>

396 396 

397Untuk informasi lebih lanjut tentang sistem plugin, lihat [Plugin](/docs/id/plugins) dan [Plugin marketplaces](/docs/id/plugin-marketplaces).397Untuk informasi lebih lanjut tentang sistem plugin, lihat [Plugin](/docs/id/plugins/overview) dan [Plugin marketplaces](/docs/id/plugins/overview).

398 398 

399<h2 id="automate-browser-tasks-with-chrome">399<h2 id="automate-browser-tasks-with-chrome">

400 Otomatisasi tugas browser dengan Chrome400 Otomatisasi tugas browser dengan Chrome

Details

116 └── my-tool116 └── my-tool

117 ```117 ```

118 118 

119 <a className="digest-feature-link" href="/docs/id/plugins-reference#file-locations-reference">Referensi plugins</a>119 <a className="digest-feature-link" href="/docs/id/plugins/manifest-reference#standard-layout">Referensi plugins</a>

120</div>120</div>

121 121 

122<div className="digest-wins">122<div className="digest-wins">

Details

104 <div>Build macOS dan Linux asli mengganti alat <code>Glob</code> dan <code>Grep</code> dengan <code>bfs</code> dan <code>ugrep</code> tertanam yang tersedia melalui Bash, untuk pencarian yang lebih cepat tanpa putaran alat terpisah</div>104 <div>Build macOS dan Linux asli mengganti alat <code>Glob</code> dan <code>Grep</code> dengan <code>bfs</code> dan <code>ugrep</code> tertanam yang tersedia melalui Bash, untuk pencarian yang lebih cepat tanpa putaran alat terpisah</div>

105 <div><code>--from-pr</code> sekarang menerima URL permintaan penggabungan GitLab, permintaan tarik Bitbucket, dan URL PR GitHub Enterprise selain github.com</div>105 <div><code>--from-pr</code> sekarang menerima URL permintaan penggabungan GitLab, permintaan tarik Bitbucket, dan URL PR GitHub Enterprise selain github.com</div>

106 <div>Mode otomatis: sertakan <code>"\$defaults"</code> dalam <a href="/docs/id/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, atau <code>environment</code></a> untuk menambahkan aturan khusus bersama daftar bawaan alih-alih menggantinya</div>106 <div>Mode otomatis: sertakan <code>"\$defaults"</code> dalam <a href="/docs/id/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, atau <code>environment</code></a> untuk menambahkan aturan khusus bersama daftar bawaan alih-alih menggantinya</div>

107 <div>Perintah <a href="/docs/id/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> baru membuat tag git rilis untuk plugin dengan validasi versi</div>107 <div>Perintah <a href="/docs/id/plugins/dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> baru membuat tag git rilis untuk plugin dengan validasi versi</div>

108 <div>Sesi Opus 4.7 sekarang menghitung terhadap jendela konteks asli 1M model, memperbaiki persentase <code>/context</code> yang membengkak dan autocompaction prematur</div>108 <div>Sesi Opus 4.7 sekarang menghitung terhadap jendela konteks asli 1M model, memperbaiki persentase <code>/context</code> yang membengkak dan autocompaction prematur</div>

109 <div><code>/resume</code> pada sesi besar hingga 67% lebih cepat dan sekarang menawarkan untuk merangkum sesi besar yang sudah usang sebelum membacanya kembali</div>109 <div><code>/resume</code> pada sesi besar hingga 67% lebih cepat dan sekarang menawarkan untuk merangkum sesi besar yang sudah usang sebelum membacanya kembali</div>

110 </div>110 </div>

Details

24 claude --plugin-url https://example.com/my-plugin.zip24 claude --plugin-url https://example.com/my-plugin.zip

25 ```25 ```

26 26 

27 <a className="digest-feature-link" href="/docs/id/plugins">Panduan Plugin</a>27 <a className="digest-feature-link" href="/docs/id/plugins/overview">Panduan Plugin</a>

28</div>28</div>

29 29 

30<div className="digest-feature">30<div className="digest-feature">

Details

59 > /plugin list --enabled59 > /plugin list --enabled

60 ```60 ```

61 61 

62 <a className="digest-feature-link" href="/docs/id/plugins-reference#plugin-list">Perintah plugin</a>62 <a className="digest-feature-link" href="/docs/id/plugins/cli-reference#plugin-list">Perintah plugin</a>

63</div>63</div>

64 64 

65<div className="digest-feature">65<div className="digest-feature">

Details

86 <div className="digest-wins-grid">86 <div className="digest-wins-grid">

87 <div>Ekstensi VS Code mendapatkan <a href="/docs/id/vs-code#extension-settings">Focus view</a>, yang menyembunyikan aktivitas alat di balik satu baris yang dapat diperluas per giliran; alihkan dari menu perintah atau dengan <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> di Mac)</div>87 <div>Ekstensi VS Code mendapatkan <a href="/docs/id/vs-code#extension-settings">Focus view</a>, yang menyembunyikan aktivitas alat di balik satu baris yang dapat diperluas per giliran; alihkan dari menu perintah atau dengan <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> di Mac)</div>

88 <div>File kredensial sandbox menerima <a href="/docs/id/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> di Linux dan WSL2, sehingga perintah yang di-sandbox membaca salinan sentinel sementara proxy sandbox mengganti nilai sebenarnya pada egress; masking kredensial juga mendapatkan opsi <code>extract</code>, <code>decode</code> yang menyadari JWT, dan opsi re-signing AWS SigV4</div>88 <div>File kredensial sandbox menerima <a href="/docs/id/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> di Linux dan WSL2, sehingga perintah yang di-sandbox membaca salinan sentinel sementara proxy sandbox mengganti nilai sebenarnya pada egress; masking kredensial juga mendapatkan opsi <code>extract</code>, <code>decode</code> yang menyadari JWT, dan opsi re-signing AWS SigV4</div>

89 <div>Marketplace dapat mendistribusikan plugin sebagai <a href="/docs/id/plugin-marketplaces#zip-archives">arsip zip</a> dengan sumber <code>archive</code> baru, diunduh melalui HTTPS dengan pin SHA-256 opsional, sehingga instalasi berfungsi tanpa git atau npm</div>89 <div>Marketplace dapat mendistribusikan plugin sebagai <a href="/docs/id/plugins/marketplace-reference#archive-plugin-source">arsip zip</a> dengan sumber <code>archive</code> baru, diunduh melalui HTTPS dengan pin SHA-256 opsional, sehingga instalasi berfungsi tanpa git atau npm</div>

90 <div><code>/review</code> sekarang merupakan alias dari <a href="/docs/id/code-review#review-a-diff-locally"><code>/code-review</code></a>, dan <code>/code-review</code> tanpa tingkat upaya menggunakan kembali tingkat yang Anda ketik terakhir</div>90 <div><code>/review</code> sekarang merupakan alias dari <a href="/docs/id/code-review#review-a-diff-locally"><code>/code-review</code></a>, dan <code>/code-review</code> tanpa tingkat upaya menggunakan kembali tingkat yang Anda ketik terakhir</div>

91 <div>Sesi yang Anda salin dengan <a href="/docs/id/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> sekarang membuat perubahan kodenya di worktree miliknya sendiri alih-alih checkout sesi asli</div>91 <div>Sesi yang Anda salin dengan <a href="/docs/id/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> sekarang membuat perubahan kodenya di worktree miliknya sendiri alih-alih checkout sesi asli</div>

92 <div>Plugin yang Anda instal dari <a href="/docs/id/discover-plugins#install-plugins"><code>/plugin</code></a> diaktifkan dalam sesi saat ini ketika aman untuk melakukannya; ringkasan instalasi melaporkan <code>Plugin is now active.</code> atau memberi tahu Anda untuk menjalankan <code>/reload-plugins</code></div>92 <div>Plugin yang Anda instal dari <a href="/docs/id/plugins/install#install-a-plugin"><code>/plugin</code></a> diaktifkan dalam sesi saat ini ketika aman untuk melakukannya; ringkasan instalasi melaporkan <code>Plugin is now active.</code> atau memberi tahu Anda untuk menjalankan <code>/reload-plugins</code></div>

93 <div><a href="/docs/id/agent-view#how-file-edits-are-isolated">Sesi latar belakang</a> yang mengubah kode di worktree sekarang melakukan commit dan push sebelum selesai, membuka permintaan pull draft hanya ketika tugas memanggilnya, dan mengikuti instruksi git di <code>CLAUDE.md</code> Anda</div>93 <div><a href="/docs/id/agent-view#how-file-edits-are-isolated">Sesi latar belakang</a> yang mengubah kode di worktree sekarang melakukan commit dan push sebelum selesai, membuka permintaan pull draft hanya ketika tugas memanggilnya, dan mengikuti instruksi git di <code>CLAUDE.md</code> Anda</div>

94 <div>Batas 200-subagen-per-sesi dihapus, sehingga sesi yang berjalan lama tidak lagi menolak subagen baru; batas <a href="/docs/id/sub-agents#concurrent-subagent-limit">concurrency</a> dan kedalaman masih berlaku</div>94 <div>Batas 200-subagen-per-sesi dihapus, sehingga sesi yang berjalan lama tidak lagi menolak subagen baru; batas <a href="/docs/id/sub-agents#concurrent-subagent-limit">concurrency</a> dan kedalaman masih berlaku</div>

95 <div>Pengaturan yang diperiksa dalam repositori tidak lagi dapat mengaktifkan <a href="/docs/id/remote-control#enable-remote-control-for-all-sessions">Remote Control auto-connect</a>; atur <code>remoteControlAtStartup</code> di pengaturan pengguna atau terkelola Anda sebagai gantinya, dan pengaturan proyek dan lokal hanya dapat mematikannya</div>95 <div>Pengaturan yang diperiksa dalam repositori tidak lagi dapat mengaktifkan <a href="/docs/id/remote-control#enable-remote-control-for-all-sessions">Remote Control auto-connect</a>; atur <code>remoteControlAtStartup</code> di pengaturan pengguna atau terkelola Anda sebagai gantinya, dan pengaturan proyek dan lokal hanya dapat mematikannya</div>

Details

72 <div className="digest-wins-grid">72 <div className="digest-wins-grid">

73 <div>Ketik <code>@</code> dalam prompt untuk <a href="/docs/id/cross-session-messaging#message-another-session">menyebutkan sesi Claude lain</a> berdasarkan nama, dan Claude mengiriminya pesan langsung dengan <code>SendMessage</code>; nama bare yang cocok dengan tepat satu sesi live sekarang dikirimkan tanpa langkah konfirmasi</div>73 <div>Ketik <code>@</code> dalam prompt untuk <a href="/docs/id/cross-session-messaging#message-another-session">menyebutkan sesi Claude lain</a> berdasarkan nama, dan Claude mengiriminya pesan langsung dengan <code>SendMessage</code>; nama bare yang cocok dengan tepat satu sesi live sekarang dikirimkan tanpa langkah konfirmasi</div>

74 <div>Sesi interaktif pada satu mesin menjaga <a href="/docs/id/cross-session-messaging#see-which-sessions-claude-can-reach">nama unik</a>: jika Anda memulai atau mengganti nama sesi dengan nama yang sudah digunakan sesi live lain, Claude Code memberikan varian <code>name-word-word</code> kepada Anda dan memberitahu Anda</div>74 <div>Sesi interaktif pada satu mesin menjaga <a href="/docs/id/cross-session-messaging#see-which-sessions-claude-can-reach">nama unik</a>: jika Anda memulai atau mengganti nama sesi dengan nama yang sudah digunakan sesi live lain, Claude Code memberikan varian <code>name-word-word</code> kepada Anda dan memberitahu Anda</div>

75 <div>Marketplace plugin menerima <a href="/docs/id/plugin-marketplaces#command-sources">sumber <code>command</code></a>: perintah lokal mencetak direktori plugin, yang Claude Code selesaikan kembali setiap sesi dan terapkan tanpa restart</div>75 <div>Marketplace plugin menerima <a href="/docs/id/plugins/marketplace-reference#command-plugin-source">sumber <code>command</code></a>: perintah lokal mencetak direktori plugin, yang Claude Code selesaikan kembali setiap sesi dan terapkan tanpa restart</div>

76 <div>Di Linux dan WSL, atur <a href="/docs/id/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> ke ukuran seperti <code>4G</code> untuk membatasi memori yang dapat digunakan perintah alat Bash dan PowerShell</div>76 <div>Di Linux dan WSL, atur <a href="/docs/id/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> ke ukuran seperti <code>4G</code> untuk membatasi memori yang dapat digunakan perintah alat Bash dan PowerShell</div>

77 <div>Alat pelacakan tugas, seperti <code>TaskCreate</code>, <code>TaskUpdate</code>, dan <code>TodoWrite</code>, adalah <a href="/docs/id/tools-reference#task-tool-availability">tidak lagi tersedia di Opus 4.8, Sonnet 5, Fable 5, Mythos 5, dan model yang lebih baru dalam keluarga tersebut</a>; atur <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> untuk mengaktifkannya kembali</div>77 <div>Alat pelacakan tugas, seperti <code>TaskCreate</code>, <code>TaskUpdate</code>, dan <code>TodoWrite</code>, adalah <a href="/docs/id/tools-reference#task-tool-availability">tidak lagi tersedia di Opus 4.8, Sonnet 5, Fable 5, Mythos 5, dan model yang lebih baru dalam keluarga tersebut</a>; atur <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> untuk mengaktifkannya kembali</div>

78 <div><a href="/docs/id/code-review#review-a-diff-locally"><code>/code-review</code></a> pada upaya tinggi, xhigh, dan max sekarang berjalan dalam agen latar belakang seperti level lainnya</div>78 <div><a href="/docs/id/code-review#review-a-diff-locally"><code>/code-review</code></a> pada upaya tinggi, xhigh, dan max sekarang berjalan dalam agen latar belakang seperti level lainnya</div>

79 <div><a href="/docs/id/discover-plugins#install-plugins"><code>/plugin install plugin\@marketplace</code></a> menyegarkan marketplace terlebih dahulu, sehingga plugin yang baru dipublikasikan dapat diinstal tanpa pembaruan marketplace manual</div>79 <div><a href="/docs/id/plugins/install#install-a-plugin"><code>/plugin install plugin\@marketplace</code></a> menyegarkan marketplace terlebih dahulu, sehingga plugin yang baru dipublikasikan dapat diinstal tanpa pembaruan marketplace manual</div>

80 <div>Pengaturan menerima <a href="/docs/id/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> dan <code>allowedMarketplaces</code></a> sebagai alias untuk <code>extraKnownMarketplaces</code> dan <code>strictKnownMarketplaces</code></div>80 <div>Pengaturan menerima <a href="/docs/id/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> dan <code>allowedMarketplaces</code></a> sebagai alias untuk <code>extraKnownMarketplaces</code> dan <code>strictKnownMarketplaces</code></div>

81 <div>Pada model yang lebih baru, Claude dapat <a href="/docs/id/tools-reference#write-tool-behavior">menimpa file yang ada dengan alat Write</a> tanpa membacanya terlebih dahulu sesi ini, sesuai dengan aturan alat Edit; model yang lebih lama memerlukan pembacaan</div>81 <div>Pada model yang lebih baru, Claude dapat <a href="/docs/id/tools-reference#write-tool-behavior">menimpa file yang ada dengan alat Write</a> tanpa membacanya terlebih dahulu sesi ini, sesuai dengan aturan alat Edit; model yang lebih lama memerlukan pembacaan</div>

82 <div>Ekstensi VS Code dapat <a href="/docs/id/vs-code#organize-sessions-into-groups">mengatur daftar sesi ke dalam grup</a>: klik kanan untuk membuat, mengganti nama, atau menghapus grup, dan Cmd/Ctrl- atau Shift-klik untuk memindahkan beberapa sesi sekaligus</div>82 <div>Ekstensi VS Code dapat <a href="/docs/id/vs-code#organize-sessions-into-groups">mengatur daftar sesi ke dalam grup</a>: klik kanan untuk membuat, mengganti nama, atau menghapus grup, dan Cmd/Ctrl- atau Shift-klik untuk memindahkan beberapa sesi sekaligus</div>

Details

53 <p className="digest-wins-title">Kemenangan lainnya</p>53 <p className="digest-wins-title">Kemenangan lainnya</p>

54 54 

55 <div className="digest-wins-grid">55 <div className="digest-wins-grid">

56 <div>Atur <a href="/docs/id/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> di tingkat atas atau per model di bawah <code>modelSettings</code> untuk membatasi tingkat upaya pada setiap penyedia, termasuk Amazon Bedrock, Agent Platform Google Cloud, dan Microsoft Foundry; tingkat yang lebih tinggi berjalan pada batas</div>56 <div>Atur <a href="/docs/id/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> di tingkat atas atau per model di bawah <code>modelSettings</code> untuk membatasi tingkat upaya pada setiap penyedia, termasuk Amazon Bedrock, Platform Agen Google Cloud, dan Microsoft Foundry; tingkat yang lebih tinggi berjalan pada batas</div>

57 <div>Arahkan `--plugin-dir` ke folder plugin untuk <a href="/docs/id/plugins#test-your-plugins-locally">memuat setiap subfolder langsung yang memiliki manifest</a></div>57 <div>Arahkan `--plugin-dir` ke folder plugin untuk <a href="/docs/id/plugins/create#load-a-directory-or-archive-for-one-session">memuat setiap subfolder langsung yang memiliki manifest</a></div>

58 <div>Jika WebFetch belum selesai mengunduh halaman dalam lima menit, <a href="/docs/id/tools-reference#webfetch-tool-behavior">fetch gagal dengan error deadline</a> alih-alih hang; atur <code>CLAUDE\_CODE\_WEBFETCH\_DEADLINE\_MS</code> untuk mengubah deadline, atau ke <code>0</code> untuk menghapus batas</div>58 <div>Jika WebFetch belum selesai mengunduh halaman dalam lima menit, <a href="/docs/id/tools-reference#webfetch-tool-behavior">fetch gagal dengan error deadline</a> alih-alih hang; atur <code>CLAUDE\_CODE\_WEBFETCH\_DEADLINE\_MS</code> untuk mengubah deadline, atau ke <code>0</code> untuk menghapus batas</div>

59 <div>Lewatkan `--json` ke <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code>, atau <code>disable</code> untuk mencetak hasil sebagai <a href="/docs/id/plugins-reference#plugin-json-result">satu objek JSON pada baris terakhir stdout</a></div>59 <div>Lewatkan `--json` ke <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code>, atau <code>disable</code> untuk mencetak hasil sebagai <a href="/docs/id/plugins/cli-reference#plugin-json-result">satu objek JSON pada baris terakhir stdout</a></div>

60 <div>Ketika classifier mode otomatis memblokir tindakan, alasan yang diterima Claude <a href="/docs/id/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">biasanya menyebutkan aturan yang cocok</a>, seperti <code>\[Data Exfiltration]</code></div>60 <div>Ketika classifier mode otomatis memblokir tindakan, alasan yang diterima Claude <a href="/docs/id/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">biasanya menyebutkan aturan yang cocok</a>, seperti <code>\[Data Exfiltration]</code></div>

61 <div>Ketika Anda mengetik <code>/</code> di tengah prompt, Anda sekarang dapat memilih dari <a href="/docs/id/interactive-mode#complete-a-command-mid-prompt">daftar perintah yang cocok</a> alih-alih saran tunggal. Daftar terbuka saat Anda mengetik dalam rendering fullscreen. Skill plugin juga cocok pada namanya tanpa awalan plugin</div>61 <div>Ketika Anda mengetik <code>/</code> di tengah prompt, Anda sekarang dapat memilih dari <a href="/docs/id/interactive-mode#complete-a-command-mid-prompt">daftar perintah yang cocok</a> alih-alih saran tunggal. Daftar terbuka saat Anda mengetik dalam rendering fullscreen. Skill plugin juga cocok pada namanya tanpa awalan plugin</div>

62 <div>Di ekstensi VS Code, klik jumlah agen di bagian bawah kotak prompt untuk membuka <a href="/docs/id/vs-code#use-the-prompt-box">peta agen</a>, di mana Anda dapat membuka transkrip read-only subagen atau menghentikannya</div>62 <div>Di ekstensi VS Code, klik jumlah agen di bagian bawah kotak prompt untuk membuka <a href="/docs/id/vs-code#use-the-prompt-box">peta agen</a>, di mana Anda dapat membuka transkrip read-only subagen atau menghentikannya</div>

workflows.md +1 −1

Details

239 Distribusikan alur kerja dalam plugin239 Distribusikan alur kerja dalam plugin

240</h3>240</h3>

241 241 

242Untuk berbagi alur kerja di seluruh tim atau repositori, sertakan dalam [plugin](/docs/id/plugins). Tempatkan skrip dalam direktori `workflows/` di akar plugin, atau arahkan ke lokasi berbeda dengan [field manifes `workflows`](/docs/id/plugins-reference#component-path-fields).242Untuk berbagi alur kerja di seluruh tim atau repositori, sertakan dalam [plugin](/docs/id/plugins/overview). Tempatkan skrip dalam direktori `workflows/` di akar plugin, atau arahkan ke lokasi berbeda dengan [field manifes `workflows`](/docs/id/plugins/manifest-reference#fields).

243 243 

244Alur kerja plugin diberi namespace oleh nama plugin. Plugin yang disebut `acme-tools` yang berisi skrip yang `meta.name` adalah `release-audit` berjalan sebagai `/acme-tools:release-audit`.244Alur kerja plugin diberi namespace oleh nama plugin. Plugin yang disebut `acme-tools` yang berisi skrip yang `meta.name` adalah `release-audit` berjalan sebagai `/acme-tools:release-audit`.

245 245 

worktrees.md +3 −1

Details

256Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:256Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:

257 257 

258* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama repositori utama, dan [sandboxing](/docs/id/sandboxing#filesystem-isolation) memungkinkan penulisan tersebut, jadi perintah seperti `git commit` bekerja dari dalam worktree dengan sandbox diaktifkan.258* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama repositori utama, dan [sandboxing](/docs/id/sandboxing#filesystem-isolation) memungkinkan penulisan tersebut, jadi perintah seperti `git commit` bekerja dari dalam worktree dengan sandbox diaktifkan.

259* **Plugins**: plugin yang diinstal pada [cakupan proyek](/docs/id/plugins-reference#plugin-installation-scopes) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree. Memerlukan Claude Code v2.1.200 atau lebih baru.259* **Plugins**: plugin yang diinstal pada [cakupan proyek](/docs/id/plugins/loading#find-where-a-plugin-is-enabled) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree. Memerlukan Claude Code v2.1.200 atau lebih baru.

260* **Persetujuan izin**: memilih "Ya, dan jangan tanya lagi" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama, jadi itu berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan itu bertahan penghapusan worktree. Di Windows dan dalam kasus lain di mana Claude Code [tidak menggunakan root repositori](/docs/id/settings#where-claude-code-looks-for-each-file), aturan tetap dengan worktree itu. Sebelum v2.1.211, persetujuan yang diberikan dalam worktree disimpan di dalam worktree itu, tidak berlaku di tempat lain, dan hilang saat worktree dihapus. Lihat [di mana persetujuan disimpan](/docs/id/permissions#permission-system).260* **Persetujuan izin**: memilih "Ya, dan jangan tanya lagi" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama, jadi itu berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan itu bertahan penghapusan worktree. Di Windows dan dalam kasus lain di mana Claude Code [tidak menggunakan root repositori](/docs/id/settings#where-claude-code-looks-for-each-file), aturan tetap dengan worktree itu. Sebelum v2.1.211, persetujuan yang diberikan dalam worktree disimpan di dalam worktree itu, tidak berlaku di tempat lain, dan hilang saat worktree dihapus. Lihat [di mana persetujuan disimpan](/docs/id/permissions#permission-system).

261* **Skills, agents, dan commands yang tidak dilacak**: ketika checkout worktree tidak memiliki direktori `.claude/skills` di akarnya, misalnya karena `.claude/skills` Anda diabaikan oleh git, Claude Code memuat [project skills](/docs/id/skills#where-skills-live) checkout utama dalam sesi worktree. Dalam worktree dengan direktori `.claude/skills` sendiri, hanya salinan itu yang dimuat.261* **Skills, agents, dan commands yang tidak dilacak**: ketika checkout worktree tidak memiliki direktori `.claude/skills` di akarnya, misalnya karena `.claude/skills` Anda diabaikan oleh git, Claude Code memuat [project skills](/docs/id/skills#where-skills-live) checkout utama dalam sesi worktree. Dalam worktree dengan direktori `.claude/skills` sendiri, hanya salinan itu yang dimuat.

262 262 


330 330 

331Pasangkan dengan hook `WorktreeRemove` untuk membersihkan saat sesi berakhir. Lihat [referensi hooks](/docs/id/hooks#worktreecreate) untuk skema input dan contoh penghapusan.331Pasangkan dengan hook `WorktreeRemove` untuk membersihkan saat sesi berakhir. Lihat [referensi hooks](/docs/id/hooks#worktreecreate) untuk skema input dan contoh penghapusan.

332 332 

333Hook `WorktreeCreate` juga memungkinkan Anda menjalankan [`/batch`](/docs/id/commands#all-commands) di luar repositori git. Setiap subagent `/batch` kemudian menerbitkan perubahannya dengan perintah kontrol versi proyek Anda dan, ketika tidak dapat membuka pull request, melaporkan apa yang diterbitkannya. Menjalankan `/batch` di luar repositori git memerlukan Claude Code v2.1.281 atau lebih baru.

334 

333<h2 id="troubleshooting">335<h2 id="troubleshooting">

334 Troubleshooting336 Troubleshooting

335</h2>337</h2>

Details

66| Fitur | Alasan |66| Fitur | Alasan |

67| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |67| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |

68| [Cloud sessions](/docs/id/claude-code-on-the-web), termasuk yang dimulai dari [aplikasi Desktop](/docs/id/desktop#cloud-sessions) | Memerlukan penyimpanan data sesi di sisi server, termasuk riwayat percakapan dengan prompt dan completion. |68| [Cloud sessions](/docs/id/claude-code-on-the-web), termasuk yang dimulai dari [aplikasi Desktop](/docs/id/desktop#cloud-sessions) | Memerlukan penyimpanan data sesi di sisi server, termasuk riwayat percakapan dengan prompt dan completion. |

69| [Claude Tag](/docs/id/claude-tag) | Mempertahankan memori saluran dan transkrip sesi. |69| [Claude Tag](https://claude.com/docs/claude-tag) | Mempertahankan memori saluran dan transkrip sesi. |

70| [Artifacts](/docs/id/artifacts) | Memerlukan penyimpanan konten halaman yang dipublikasikan di infrastruktur yang dioperasikan Anthropic. |70| [Artifacts](/docs/id/artifacts) | Memerlukan penyimpanan konten halaman yang dipublikasikan di infrastruktur yang dioperasikan Anthropic. |

71| Pengiriman umpan balik (`/feedback`, `/bug`, `/share`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |71| Pengiriman umpan balik (`/feedback`, `/bug`, `/share`) | Mengirimkan umpan balik mengirimkan data percakapan ke Anthropic. |

72| [Remote Control](/docs/id/remote-control) | Menyimpan transkrip sesi di server Anthropic untuk menyinkronkan percakapan di seluruh perangkat. |72| [Remote Control](/docs/id/remote-control) | Menyimpan transkrip sesi di server Anthropic untuk menyinkronkan percakapan di seluruh perangkat. |