Referensi komponen plugin
Skills
Plugins menambahkan skills ke Claude Code, membuat pintasan/name yang dapat Anda atau Claude panggil.
Lokasi: Direktori skills/ atau commands/ di root plugin, atau file SKILL.md tunggal di root plugin
Format file: Skills adalah direktori dengan SKILL.md; commands adalah file markdown sederhana
Struktur skill:
- Skills dan commands secara otomatis ditemukan saat plugin dipasang
- Claude dapat memanggilnya secara otomatis berdasarkan konteks tugas
- Skills dapat menyertakan file pendukung di samping SKILL.md
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, yang untuk plugins yang dipasang dari marketplace adalah string versi yang berubah pada setiap update. Untuk plugins yang mengirimkan lebih dari satu skill, gunakan tata letak direktori skills/ yang ditunjukkan di atas.
Untuk detail lengkap, lihat Skills.
Agents
Plugins dapat menyediakan subagents khusus untuk tugas-tugas tertentu yang dapat Claude panggil secara otomatis jika sesuai. Lokasi: Direktoriagents/ di root plugin
Format file: File markdown yang menjelaskan kemampuan agent
Struktur agent:
name, description, model, effort, maxTurns, tools, disallowedTools, skills, memory, background, dan isolation. Satu-satunya nilai isolation yang valid adalah "worktree". Untuk alasan keamanan, hooks, mcpServers, dan permissionMode tidak didukung untuk agents yang dikirim plugin.
Titik integrasi:
- Agents muncul di typeahead @-mention dengan nama yang diberi scope, seperti
my-plugin:code-reviewer, setelah plugin diaktifkan - Claude dapat memanggil agents secara otomatis berdasarkan konteks tugas
- Agents dapat dipanggil secara manual oleh pengguna
- Plugin agents bekerja bersama agents Claude bawaan
Hooks
Plugins dapat menyediakan event handlers yang merespons peristiwa Claude Code secara otomatis. Lokasi:hooks/hooks.json di root plugin, atau inline di plugin.json
Format: Konfigurasi JSON dengan event matchers dan actions
Konfigurasi hook:
Tipe hook:
command: jalankan perintah shell atau scriptshttp: kirim JSON event sebagai POST request ke URLmcp_tool: panggil tool pada MCP server yang dikonfigurasiprompt: evaluasi prompt dengan LLM (menggunakan placeholder$ARGUMENTSuntuk konteks)agent: jalankan verifier agentic dengan tools untuk tugas verifikasi kompleks
if mengambil nama tool yang diberi scope mcp__plugin_<plugin-name>_<server-name>__<tool>, dan field server hook mcp_tool mengambil plugin:<plugin-name>:<server-name>. Matcher yang ditulis terhadap kunci server bare tidak pernah aktif. Lihat Match MCP tools dan Plugin-provided MCP servers.
MCP servers
Plugins dapat menggabungkan Model Context Protocol (MCP) servers untuk menghubungkan Claude Code dengan alat dan layanan eksternal. Lokasi:.mcp.json di root plugin, atau inline di plugin.json
Format: Konfigurasi MCP server standar
Konfigurasi MCP server:
- Plugin MCP servers dimulai secara otomatis saat plugin diaktifkan
- Servers muncul sebagai alat MCP standar di toolkit Claude
- Kemampuan server terintegrasi dengan mulus dengan alat Claude yang ada
- Plugin servers dapat dikonfigurasi secara independen dari MCP servers pengguna
LSP servers
Plugins dapat menyediakan server Language Server Protocol (LSP) untuk memberikan Claude intelijen kode real-time saat bekerja pada codebase Anda. Integrasi LSP menyediakan:- Diagnostik instan: Claude melihat kesalahan dan peringatan segera setelah setiap edit
- Navigasi kode: buka definisi, temukan referensi, dan informasi hover
- Kesadaran bahasa: informasi tipe dan dokumentasi untuk simbol kode
.lsp.json di root plugin, atau inline di plugin.json
Format: Konfigurasi JSON yang memetakan nama language server ke konfigurasinya
Format file .lsp.json:
plugin.json:
Field opsional:
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 saat startup, dengan alasan hanya terlihat di output claude --debug.
Multiple servers untuk ekstensi yang sama: ketika lebih dari satu LSP server yang diaktifkan mendeklarasikan ekstensi file yang sama di extensionToLanguage, apakah servers berasal dari satu plugin atau dari plugin yang 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.
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.
Server 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. Sebelum v2.1.205, server yang gagal menginisialisasi masih mengklaim ekstensinya dan memblokir server valid lain untuk ekstensi yang sama.
LSP plugins yang tersedia:
Pasang language server terlebih dahulu, kemudian pasang plugin dari marketplace.
Monitors
Plugins dapat mendeklarasikan monitors latar belakang yang Claude Code mulai secara otomatis saat 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 peristiwa yang dipolling tanpa diminta untuk memulai watch itu sendiri. Plugin monitors menggunakan mekanisme yang sama seperti Monitor tool dan berbagi batasan ketersediaannya. Mereka hanya berjalan dalam sesi CLI interaktif, berjalan tanpa sandbox pada tingkat kepercayaan yang sama seperti hooks, dan dilewati pada host di mana Monitor tool tidak tersedia. Lokasi:monitors/monitors.json di root plugin, atau inline di plugin.json
Format: Array JSON dari entri monitor
monitors/monitors.json berikut memantau endpoint status deployment dan log error lokal:
experimental.monitors di plugin.json ke array yang sama. Untuk memuat dari jalur non-default, atur experimental.monitors ke string jalur relatif seperti "./config/monitors.json". Monitors adalah komponen eksperimental.
Field yang diperlukan:
Field opsional:
Nilai
command mendukung substitusi variabel ${CLAUDE_PLUGIN_ROOT}, ${CLAUDE_PLUGIN_DATA}, dan ${CLAUDE_PROJECT_DIR}, plus ${ENV_VAR} apa pun dari lingkungan. Awali perintah dengan cd "${CLAUDE_PLUGIN_ROOT}" && jika script perlu berjalan dari direktori plugin itu sendiri.
Perintah command monitor tidak dapat mereferensikan nilai ${user_config.*}. Perintah berjalan melalui shell, jadi Claude Code menolak monitor dengan error daripada mengganti nilai. Proses monitor tidak menerima variabel lingkungan CLAUDE_PLUGIN_OPTION_<KEY>, jadi biarkan script monitor membaca nilai dari file config yang dimilikinya. Sebelum v2.1.207, perintah monitor mengganti nilai ${user_config.*}.
Menonaktifkan plugin di tengah sesi tidak menghentikan monitors yang sudah berjalan. Mereka berhenti saat sesi berakhir.
Themes
Plugins dapat mengirimkan color themes yang muncul di/theme bersama preset bawaan dan themes lokal pengguna. Sebuah theme adalah file JSON di themes/ dengan preset base dan peta overrides yang sparse dari color tokens. Themes adalah komponen eksperimental.
custom:<plugin-name>:<slug> di config pengguna. Plugin themes bersifat read-only; menekan Ctrl+E pada salah satu di /theme menyalinnya ke ~/.claude/themes/ sehingga pengguna dapat mengedit salinannya.
Cakupan instalasi plugin
Saat Anda memasang plugin, Anda memilih cakupan yang menentukan di mana plugin tersedia dan siapa lagi yang dapat menggunakannya:
Plugins menggunakan sistem cakupan yang sama dengan konfigurasi Claude Code lainnya. Untuk instruksi instalasi dan flag cakupan, lihat Pasang plugins. Untuk penjelasan lengkap tentang cakupan, lihat Configuration scopes.
Skills-directory plugins
Folder apa pun di bawah direktori skills yang berisi manifest.claude-plugin/plugin.json dimuat sebagai plugin bernama <name>@skills-dir pada sesi berikutnya, tanpa marketplace dan tanpa langkah instalasi. Scaffold satu dengan plugin init. Tidak seperti instalasi marketplace, plugin ditemukan di tempat daripada disalin ke cache plugin.
Pohon direktori skills mendukung tiga hal yang berbeda:
Pilih di mana plugin dimuat
Plugin cakupan proyek diperiksa ke dalam repositori dan mencapai setiap kolaborator yang mengklonnya. Karena konten itu berasal dari repositori daripada dari Anda, itu dimuat hanya setelah gerbang kepercayaan yang sama yang mengatur
.claude/settings.json, dan komponen yang menjalankan kode dibatasi lebih lanjut:
- MCP servers yang dideklarasikannya melalui persetujuan per-server yang sama seperti
.mcp.jsonproyek - LSP servers dimulai hanya setelah Anda mempercayai workspace
- Background monitors tidak dimuat
Edit, reload, dan disable skills-directory plugin
Perubahan yang Anda buat padaSKILL.md skill berlaku segera dalam sesi saat ini. Perubahan pada komponen plugin lainnya, seperti hooks/, .mcp.json, agents/, dan output-styles/, tidak. Jalankan /reload-plugins atau restart Claude Code untuk mengambilnya. Lihat Live change detection.
Untuk menghentikan loading skills-directory plugin, hapus foldernya atau nonaktifkan berdasarkan nama. Tidak ada langkah uninstall karena tidak ada yang dipasang dari marketplace.
Skema manifest plugin
File.claude-plugin/plugin.json mendefinisikan metadata dan konfigurasi plugin Anda. Bagian ini mendokumentasikan semua field dan opsi yang didukung.
Manifest bersifat opsional. Jika dihilangkan, Claude Code secara otomatis menemukan komponen di lokasi default dan menurunkan nama plugin dari nama direktori. Gunakan manifest saat Anda perlu memberikan metadata atau jalur komponen khusus.
Skema lengkap
Field yang diperlukan
Jika Anda menyertakan manifest,name adalah satu-satunya field yang diperlukan.
Nama ini digunakan untuk namespacing komponen. Misalnya, di UI, agent
agent-creator untuk plugin dengan nama plugin-dev akan muncul sebagai plugin-dev:agent-creator.
Field yang tidak dikenali
Claude Code mengabaikan field tingkat atas yang tidak dikenalinya. Anda dapat menyimpan metadata dari ekosistem lain diplugin.json dan plugin masih dimuat. Ini membuat praktis untuk mempertahankan satu manifest yang berfungsi ganda sebagai manifest ekstensi VS Code atau Cursor, package.json npm, atau manifest bundle MCPB/DXT.
claude plugin validate melaporkan field yang tidak dikenali sebagai peringatan, bukan kesalahan. Jika field adalah satu atau dua karakter dari yang dikenali, peringatan menyarankan nama yang mungkin dimaksudkan. Plugin dengan hanya peringatan field yang tidak dikenali masih lulus validasi dan dimuat saat runtime.
Field dengan tipe yang salah masih gagal. Misalnya, nilai keywords yang merupakan string daripada array adalah kesalahan load, dan claude plugin validate melaporkannya sebagai satu.
Teruskan --strict untuk memperlakukan peringatan sebagai kesalahan. Gunakan di CI untuk menangkap nama field yang salah eja atau field yang tersisa dari manifest tool lain sebelum menerbitkan, meskipun plugin akan dimuat saat runtime.
Field metadata
Default enablement
AturdefaultEnabled: false di plugin.json untuk mengirimkan plugin yang dipasang dalam keadaan dinonaktifkan. Pengguna mengaktifkannya dengan claude plugin enable <plugin> atau antarmuka /plugin. Gunakan ini untuk plugins yang menambah biaya atau cakupan yang harus pengguna pilih, seperti yang menghubungkan ke layanan eksternal. Ini memerlukan Claude Code v2.1.154 atau lebih baru. Versi sebelumnya mengabaikan field dan mengaktifkan plugin saat instalasi.
defaultEnabled adalah fallback saat tidak ada yang lain telah memutuskan status plugin. Dua hal mengambil alih:
- Pengaturan pengguna: entri untuk plugin di
enabledPluginspada cakupan pengaturan apa pun. Setelah ditulis, itu bertahan di seluruh update dan reinstall plugin, jadi mengubahdefaultEnableddalam rilis kemudian tidak membalik pengguna yang ada. - Persyaratan dependensi: ketika plugin diperlukan oleh yang lain yang aktif, Claude Code menulis
trueuntuk itu saat waktu instalasi atau enable. Itu memberikannya pengaturan eksplisit, jadi defaultnya tidak lagi berlaku. Lihat Enable or disable a plugin with dependencies.
plugin.json. Lihat Optional plugin fields.
Field jalur komponen
Komponen eksperimental
Komponen di bawah kunciexperimental, themes dan monitors, memiliki skema manifest yang mungkin berubah antar rilis saat mereka stabil. Di mana Anda mendeklarasikannya adalah migrasi terpisah: tingkat atas masih berfungsi, claude plugin validate memperingatkan, dan rilis mendatang akan memerlukan experimental.*.
User configuration
FielduserConfig mendeklarasikan nilai yang Claude Code minta dari pengguna saat plugin diaktifkan. Gunakan ini daripada memerlukan pengguna untuk mengedit settings.json secara manual.
Setiap nilai tersedia untuk substitusi sebagai
${user_config.KEY} di konfigurasi MCP dan LSP server dan 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 yang dikapitalisasi.
Field yang berjalan dalam shell menolak ${user_config.*}: mensubstitusi nilai yang dikonfigurasi ke dalam perintah shell akan membiarkan shell menjalankan apa pun yang nilai itu berisi, jadi komponen gagal dengan error sebagai gantinya. Setiap field yang ditolak memiliki cara alternatif untuk melewatkan nilai:
Sebelum v2.1.207, field ini mensubstitusi nilai
${user_config.KEY}; perbarui plugins yang mengandalkan ini.
Nilai non-sensitif disimpan di bawah kunci pluginConfigs di settings.json sebagai pluginConfigs[<plugin-id>].options. Claude Code menulis kunci ke pengaturan pengguna dan membacanya kembali dari pengaturan pengguna, flag --settings, dan pengaturan yang dikelola saja; entri di .claude/settings.json atau .claude/settings.local.json proyek diabaikan. Sebelum v2.1.207, Claude Code juga membaca pengaturan proyek dan lokal.
Nilai sensitif masuk ke Keychain macOS, atau ke ~/.claude/.credentials.json di platform di mana keychain yang didukung tidak tersedia. Penyimpanan keychain dibagikan dengan token OAuth dan memiliki batas total sekitar 2 KB, jadi jaga nilai sensitif tetap kecil.
Channels
Fieldchannels memungkinkan plugin mendeklarasikan satu atau lebih message channels yang menyuntikkan konten ke dalam percakapan. Setiap channel mengikat ke MCP server yang disediakan plugin.
server diperlukan dan harus cocok dengan kunci di mcpServers plugin. Field userConfig per-channel opsional menggunakan skema yang sama dengan field tingkat atas, memungkinkan plugin meminta token bot atau ID pemilik saat plugin diaktifkan.
Aturan perilaku jalur
Apakah jalur khusus menggantikan atau memperluas direktori default plugin tergantung pada field:- Menggantikan default:
commands,agents,outputStyles,experimental.themes,experimental.monitors. Misalnya, saat manifest menentukancommands, direktori defaultcommands/tidak dipindai. Untuk menyimpan default dan menambahkan lebih banyak, sertakan secara eksplisit:"commands": ["./commands/", "./extras/"] - Menambah default:
skills. Direktori defaultskills/selalu dipindai, dan direktori yang tercantum diskillsdimuat bersama dengannya. Pengecualian: untuk entri marketplace yangsource-nya diselesaikan ke root marketplace, mendeklarasikan subdirektori khusus menggantikan scan defaultskills/ - Aturan penggabungan sendiri: hooks, MCP servers, dan LSP servers. Lihat setiap bagian untuk cara beberapa sumber digabungkan
claude plugin list dan tampilan detail /plugin. Plugin masih dimuat menggunakan jalur manifest. Tidak ada peringatan yang ditampilkan saat kunci manifest menunjuk ke folder default, misalnya "commands": ["./commands/deploy.md"], karena folder ditangani secara eksplisit dalam hal itu.
Untuk semua field jalur:
- Semua jalur harus relatif terhadap root plugin dan dimulai dengan
./ - Komponen dari jalur khusus menggunakan aturan penamaan dan namespacing yang sama
- Beberapa jalur dapat ditentukan sebagai array
- Saat jalur skill menunjuk ke direktori yang berisi
SKILL.mdsecara langsung, misalnya"skills": ["./"]menunjuk ke root plugin, field frontmatternamediSKILL.mdmenentukan nama invokasi skill. Ini memberikan nama stabil terlepas dari direktori instalasi. Jikanametidak diatur di frontmatter, basename direktori digunakan sebagai fallback.
SKILL.md di root-nya, tidak ada subdirektori skills/, dan tidak ada field manifest skills secara otomatis dimuat sebagai plugin single-skill di Claude Code v2.1.142 dan yang lebih baru. Anda tidak perlu mengatur "skills": ["./"] di plugin.json untuk layout ini. Nama invokasi skill mengikuti aturan yang sama seperti di atas: field frontmatter name, atau basename direktori sebagai fallback.
Contoh jalur:
Variabel lingkungan
Claude Code menyediakan tiga variabel untuk mereferensikan jalur:
Ketiga variabel diekspor sebagai variabel lingkungan ke proses hook dan ke subprocess MCP dan LSP server. Field mana yang mensubstitusi mereka inline tergantung pada komponen plugin:
Dalam perintah hook, gunakan exec form dengan
args sehingga setiap jalur dilewatkan sebagai satu argumen tanpa quoting. 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 script yang disertakan dengan plugin:
${CLAUDE_PLUGIN_ROOT} berubah saat plugin diperbarui. Direktori versi sebelumnya tetap berada di disk selama sekitar tujuh hari setelah update sebelum pembersihan, tetapi perlakukan sebagai ephemeral dan jangan tulis state di sana.
Saat plugin diperbarui di tengah sesi, perintah hook, monitor, MCP server, dan LSP server terus menggunakan jalur versi sebelumnya. Jalankan /reload-plugins untuk mengalihkan hooks, MCP server, dan LSP server ke jalur baru; monitor memerlukan restart sesi.
MCP server 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.
Direktori data persisten
Direktori${CLAUDE_PLUGIN_DATA} diselesaikan ke ~/.claude/plugins/data/{id}/, di mana {id} adalah pengenal plugin dengan karakter di luar a-z, A-Z, 0-9, _, dan - diganti dengan -. Untuk plugin yang dipasang sebagai formatter@my-marketplace, direktorinya adalah ~/.claude/plugins/data/formatter-my-marketplace/.
Penggunaan umum adalah memasang dependensi bahasa sekali dan menggunakannya kembali di seluruh sesi dan update plugin. Karena direktori data bertahan lebih lama dari versi plugin tunggal, pemeriksaan keberadaan direktori saja tidak dapat mendeteksi saat update mengubah manifest dependensi plugin. Pola yang direkomendasikan membandingkan manifest yang disertakan terhadap salinan di direktori data dan memasang ulang saat mereka berbeda.
Hook SessionStart ini memasang node_modules pada run pertama dan lagi kapan pun update plugin menyertakan package.json yang berubah:
diff keluar nonzero saat salinan yang disimpan hilang atau berbeda dari yang disertakan, mencakup run pertama dan updates yang mengubah dependensi. Jika npm install gagal, trailing rm menghapus manifest yang disalin sehingga sesi berikutnya mencoba lagi.
Scripts yang disertakan di ${CLAUDE_PLUGIN_ROOT} kemudian dapat berjalan terhadap node_modules yang persisten:
/plugin menunjukkan ukuran direktori dan meminta sebelum menghapus. CLI menghapus secara default; teruskan --keep-data untuk mempertahankannya.
Plugin caching dan resolusi file
Plugins ditentukan dalam salah satu dari dua cara:- Melalui
claude --plugin-diratauclaude --plugin-url, untuk durasi sesi. - Melalui marketplace, dipasang untuk sesi mendatang.
~/.claude/plugins/cache) daripada menggunakannya di tempat. Memahami perilaku ini penting saat mengembangkan plugins yang mereferensikan file eksternal.
Setiap versi yang dipasang adalah direktori terpisah dalam cache. Saat Anda memperbarui atau menghapus plugin, direktori versi sebelumnya ditandai sebagai orphaned dan dihapus secara otomatis 7 hari kemudian. Periode grace memungkinkan sesi Claude Code bersamaan yang sudah memuat versi lama untuk terus berjalan tanpa kesalahan.
Tools Glob dan Grep Claude melewati direktori versi orphaned selama pencarian, jadi hasil file tidak menyertakan kode plugin yang ketinggalan zaman.
Batasan path traversal
Plugin yang dipasang tidak dapat mereferensikan file di luar direktorinya. Jalur yang melintasi di luar root plugin (seperti../shared-utils) tidak akan berfungsi setelah instalasi karena file eksternal tersebut tidak disalin ke cache.
Bagikan file dalam marketplace dengan symlinks
Jika plugin Anda perlu berbagi file dengan bagian lain dari marketplace yang sama, Anda dapat membuat symbolic links di dalam direktori plugin Anda. Cara symlink ditangani saat plugin disalin ke cache tergantung pada di mana targetnya diselesaikan:- Dalam direktori plugin itu sendiri: symlink dipertahankan sebagai symlink relatif dalam cache, sehingga terus diselesaikan ke target yang disalin saat runtime.
- Di tempat lain dalam marketplace yang sama: symlink didereferensikan. Konten target disalin ke cache di tempatnya. Ini memungkinkan direktori
skills/meta-plugin untuk menghubungkan ke skills yang ditentukan oleh plugins lain dalam marketplace. - Di luar marketplace: symlink dilewati untuk keamanan. Ini mencegah plugins dari menarik file host arbitrer seperti jalur sistem ke dalam cache.
--plugin-dir atau dari jalur lokal, hanya symlinks yang diselesaikan dalam direktori plugin itu sendiri yang dipertahankan. Semua yang lain dilewati.
Perintah 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:
Struktur direktori plugin
Tata letak plugin standar
Plugin lengkap mengikuti struktur ini: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 mereka dalam sebuah skill.
Referensi lokasi file
Referensi perintah CLI
Claude Code menyediakan perintah CLI untuk manajemen plugin non-interaktif, berguna untuk scripting dan otomasi.plugin init
Scaffold plugin baru di~/.claude/skills/<name>/. Pada sesi Claude Code berikutnya itu dimuat secara otomatis sebagai <name>@skills-dir dan muncul di /plugin dan claude plugin list tanpa langkah instalasi.
Lihat Skills-directory plugins untuk persyaratan cakupan dan kepercayaan.
<name>: Nama plugin. Menjadi namespace skill dan nama direktori di bawah~/.claude/skills/, jadi tidak dapat berisi spasi atau pemisah jalur.
Alias:
new
Setiap nilai --with menambahkan file starter untuk komponen itu, siap untuk diedit:
Plugin yang di-scaffold menggunakan sumber
@skills-dir daripada marketplace. Admin dapat memblokir sumber ini dengan strictKnownMarketplaces atau dengan menambahkan {"source": "skills-dir"} ke blockedMarketplaces dalam managed settings. Saat diblokir, plugin init gagal sebelum menulis.
Contoh:
plugin install
Pasang plugin dari marketplace yang tersedia.<plugin>: Nama plugin atauplugin-name@marketplace-nameuntuk marketplace tertentu
Cakupan menentukan file pengaturan mana yang ditambahkan plugin yang dipasang. Misalnya,
--scope project menulis ke enabledPlugins di .claude/settings.json, membuat plugin tersedia untuk semua orang yang mengkloning repositori proyek.
Contoh:
plugin uninstall
Hapus plugin yang dipasang.<plugin>: Nama plugin atauplugin-name@marketplace-name
Alias:
remove, rm
Secara default, menghapus dari cakupan terakhir yang tersisa juga menghapus direktori ${CLAUDE_PLUGIN_DATA} plugin. Gunakan --keep-data untuk mempertahankannya, misalnya saat memasang ulang setelah menguji versi baru.
plugin prune
Hapus dependensi plugin yang dipasang otomatis yang tidak lagi diperlukan oleh plugin yang dipasang. Dependensi yang Claude Code tarik untuk memenuhi bidangdependencies plugin lain dihapus; plugin yang Anda pasang secara langsung tidak pernah disentuh.
Alias:
autoremove
Perintah ini mencantumkan dependensi yatim piatu dan meminta konfirmasi sebelum menghapusnya. Untuk menghapus plugin dan membersihkan dependensinya dalam satu langkah, jalankan claude plugin uninstall <plugin> --prune.
claude plugin prune memerlukan Claude Code v2.1.121 atau lebih baru.plugin enable
Aktifkan plugin yang dinonaktifkan. Jika plugin mendeklarasikan dependencies, Claude Code mengaktifkannya secara transitif pada cakupan yang sama, dan perintah gagal ketika dependensi tidak dipasang.<plugin>: Nama plugin atauplugin-name@marketplace-name
plugin disable
Nonaktifkan plugin tanpa menghapusnya. Gagal ketika plugin yang diaktifkan lain bergantung pada target. Pesan kesalahan mencakup perintah berantai yang menonaktifkan setiap dependensi terlebih dahulu.<plugin>: Nama plugin atauplugin-name@marketplace-name
plugin update
Perbarui plugin ke versi terbaru.<plugin>: Nama plugin atauplugin-name@marketplace-name
plugin list
Daftar plugin yang dipasang dengan versi, marketplace sumber, dan status enable mereka.
Dalam sesi interaktif,
/plugin list mencetak daftar yang sama secara inline. Bentuk interaktif menerima --enabled atau --disabled untuk menampilkan hanya plugin dalam status itu, dan ls sebagai singkatan untuk list.
plugin details
Tampilkan inventaris komponen plugin dan perkiraan 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 entriskills/ dan commands/.
<name>: Nama plugin atauplugin-name@marketplace-name
Output menampilkan dua angka biaya untuk setiap komponen:
- Always-on: token yang ditambahkan ke setiap sesi oleh teks daftar plugin, seperti deskripsi skill, deskripsi agent, dan nama perintah, terlepas dari apakah ada komponen yang diaktifkan.
- On-invoke: token yang dihabiskan komponen saat diaktifkan. Ditampilkan per komponen, bukan sebagai total plugin, karena sesi khas hanya mengaktifkan subset komponen.
count_tokens untuk model aktif Anda. Angka per-komponen diskalakan secara proporsional dari total tersebut. Jika API tidak dapat dijangkau, perintah kembali ke perkiraan berbasis karakter.
plugin tag
Buat tag rilis git untuk plugin di direktori saat ini. Jalankan dari dalam folder plugin. Lihat Tag plugin releases.Alat debugging dan pengembangan
Perintah debugging
Gunakanclaude --debug untuk melihat detail loading plugin:
Ini menunjukkan:
- Plugin mana yang sedang dimuat
- Kesalahan apa pun dalam manifest plugin
- Registrasi skill, agent, dan hook
- Inisialisasi MCP server
Masalah umum
Contoh pesan kesalahan
Kesalahan validasi manifest:Invalid JSON syntax: Unexpected token } in JSON at position 142: periksa koma yang hilang, koma ekstra, atau string yang tidak dikutipPlugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required: field yang diperlukan hilangPlugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...: kesalahan sintaks JSON
Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.: jalur command ada tetapi tidak berisi file command yang validPlugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.: jalursourcedi marketplace.json menunjuk ke direktori yang tidak adaPlugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.: hapus definisi komponen duplikat atau hapusstrict: falsedi entri marketplace
Troubleshooting hook
Hook script tidak dieksekusi:- Periksa script dapat dieksekusi:
chmod +x ./scripts/your-script.sh - Verifikasi baris shebang: Baris pertama harus
#!/bin/bashatau#!/usr/bin/env bash - Periksa jalur menggunakan
${CLAUDE_PLUGIN_ROOT}:"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh" - Uji script secara manual:
./scripts/your-script.sh
- Verifikasi nama event benar (case-sensitive):
PostToolUse, bukanpostToolUse - Periksa pola matcher cocok dengan alat Anda:
"matcher": "Write|Edit"untuk operasi file - Konfirmkan tipe hook valid:
command,http,mcp_tool,prompt, atauagent
Troubleshooting MCP server
Server tidak dimulai:- Periksa command ada dan dapat dieksekusi
- Verifikasi semua jalur menggunakan variabel
${CLAUDE_PLUGIN_ROOT} - Periksa log MCP server:
claude --debugmenunjukkan kesalahan inisialisasi - Uji server secara manual di luar Claude Code
- Pastikan server dikonfigurasi dengan benar di
.mcp.jsonatauplugin.json - Verifikasi server mengimplementasikan protokol MCP dengan benar
- Periksa timeout koneksi di output debug
Kesalahan struktur direktori
Gejala: Plugin dimuat tetapi komponen (skills, agents, hooks) hilang. Struktur yang benar: Komponen harus berada di root plugin, bukan di dalam.claude-plugin/. Hanya plugin.json yang termasuk di .claude-plugin/.
.claude-plugin/, pindahkan ke root plugin.
Daftar periksa debug:
- Jalankan
claude --debugdan cari pesan “loading plugin” - Periksa bahwa setiap direktori komponen terdaftar di output debug
- Verifikasi izin file memungkinkan membaca file plugin
Referensi distribusi dan versioning
Manajemen versi
Claude Code menggunakan versi plugin sebagai cache key yang menentukan apakah pembaruan tersedia. Ketika Anda menjalankan/plugin update atau auto-update dipicu, Claude Code menghitung versi saat ini dan melewati pembaruan jika cocok dengan apa yang sudah terpasang.
Versi diselesaikan dari yang pertama dari ini yang diatur:
- Field
versiondalamplugin.jsonplugin - Field
versiondalam entri marketplace plugin dalammarketplace.json - Git commit SHA dari sumber plugin, untuk sumber
github,url,git-subdir, dan relative-path dalam marketplace yang dihosting git unknown, untuk sumbernpmatau direktori lokal yang tidak berada dalam repositori git
Jika Anda menggunakan versi eksplisit, ikuti semantic versioning (
MAJOR.MINOR.PATCH): naikkan MAJOR untuk perubahan breaking, MINOR untuk fitur baru, PATCH untuk perbaikan bug. Dokumentasikan perubahan dalam CHANGELOG.md.