Langsung ke konten utama
Plugins 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. Mencari untuk memasang plugins yang sudah ada? Lihat Temukan dan pasang plugins. Untuk spesifikasi teknis lengkap, lihat Referensi plugins.

Kapan menggunakan plugins vs konfigurasi standalone

Claude Code mendukung dua cara untuk menambahkan skills, agents, dan hooks kustom:
PendekatanNama skillTerbaik untuk
Standalone (direktori .claude/)/helloAlur kerja pribadi, kustomisasi khusus proyek, eksperimen cepat
Plugins (direktori dengan .claude-plugin/plugin.json)/plugin-name:helloBerbagi dengan rekan kerja, distribusi ke komunitas, rilis dengan versi, dapat digunakan kembali di seluruh proyek
Gunakan konfigurasi standalone ketika:
  • Anda menyesuaikan Claude Code untuk satu proyek
  • Konfigurasi bersifat pribadi dan tidak perlu dibagikan
  • Anda bereksperimen dengan skills atau hooks sebelum mengemas mereka
  • Anda menginginkan nama skill pendek seperti /hello atau /deploy
Gunakan plugins ketika:
  • Anda ingin berbagi fungsionalitas dengan tim atau komunitas Anda
  • Anda memerlukan skills/agents yang sama di seluruh beberapa proyek
  • Anda menginginkan kontrol versi dan pembaruan mudah untuk ekstensi Anda
  • Anda mendistribusikan melalui marketplace
  • Anda tidak keberatan dengan skills yang diberi namespace seperti /my-plugin:hello (namespace mencegah konflik antara plugins)
Mulai dengan konfigurasi standalone di .claude/ untuk iterasi cepat, kemudian konversi ke plugin ketika Anda siap untuk berbagi.

Quickstart

Quickstart 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.

Prasyarat

Jika Anda tidak melihat perintah /plugin, perbarui Claude Code ke versi terbaru. Lihat Troubleshooting untuk instruksi upgrade.

Buat plugin pertama Anda

1

Buat direktori plugin

Setiap plugin berada di direktorinya sendiri yang berisi manifest dan skills, agents, atau hooks Anda. Buat satu sekarang:
mkdir my-first-plugin
2

Buat manifest plugin

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.Buat direktori .claude-plugin di dalam folder plugin Anda:
mkdir my-first-plugin/.claude-plugin
Kemudian buat my-first-plugin/.claude-plugin/plugin.json dengan konten ini:
my-first-plugin/.claude-plugin/plugin.json
{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
FieldTujuan
namePengidentifikasi unik dan namespace skill. Skills diawali dengan ini (misalnya, /my-first-plugin:hello).
descriptionDitampilkan di plugin manager saat menjelajahi atau memasang plugins.
versionLacak rilis menggunakan semantic versioning.
authorOpsional. Membantu untuk atribusi.
Untuk field tambahan seperti homepage, repository, dan license, lihat skema manifest lengkap.
3

Tambahkan skill

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).Buat direktori skill di folder plugin Anda:
mkdir -p my-first-plugin/skills/hello
Kemudian buat my-first-plugin/skills/hello/SKILL.md dengan konten ini:
my-first-plugin/skills/hello/SKILL.md
---
description: Greet the user with a friendly message
disable-model-invocation: true
---

Greet the user warmly and ask how you can help them today.
4

Uji plugin Anda

Jalankan Claude Code dengan flag --plugin-dir untuk memuat plugin Anda:
claude --plugin-dir ./my-first-plugin
Setelah Claude Code dimulai, coba skill baru Anda:
/my-first-plugin:hello
Anda akan melihat Claude merespons dengan salam. Jalankan /help untuk melihat skill Anda terdaftar di bawah namespace plugin.
Mengapa namespace? Plugin skills selalu diberi namespace (seperti /greet:hello) untuk mencegah konflik ketika beberapa plugins memiliki skills dengan nama yang sama.Untuk mengubah awalan namespace, perbarui field name di plugin.json.
5

Tambahkan argumen skill

Buat skill Anda dinamis dengan menerima input pengguna. Placeholder $ARGUMENTS menangkap teks apa pun yang disediakan pengguna setelah nama skill.Perbarui file SKILL.md Anda:
my-first-plugin/skills/hello/SKILL.md
---
description: Greet the user with a personalized message
---

# Hello Skill

Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.
Jalankan /reload-plugins untuk mengambil perubahan, kemudian coba skill dengan nama Anda:
/my-first-plugin:hello Alex
Claude akan menyapa Anda dengan nama. Untuk lebih lanjut tentang meneruskan argumen ke skills, lihat Skills.
Anda telah berhasil membuat dan menguji plugin dengan komponen kunci ini:
  • Plugin manifest (.claude-plugin/plugin.json): menjelaskan metadata plugin Anda
  • Direktori skills (skills/): berisi skills kustom Anda
  • Argumen skill ($ARGUMENTS): menangkap input pengguna untuk perilaku dinamis
Flag --plugin-dir berguna untuk pengembangan dan pengujian. Ketika Anda siap untuk berbagi plugin Anda dengan orang lain, lihat Buat dan distribusikan marketplace plugin.

Ikhtisar struktur plugin

Anda telah membuat plugin dengan skill, tetapi plugins dapat mencakup banyak hal lagi: agents kustom, hooks, MCP servers, dan LSP servers.
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.
DirektoriLokasiTujuan
.claude-plugin/Root pluginBerisi manifest plugin.json (opsional jika komponen menggunakan lokasi default)
commands/Root pluginSkills sebagai file Markdown
agents/Root pluginDefinisi agent kustom
skills/Root pluginAgent Skills dengan file SKILL.md
hooks/Root pluginEvent handlers di hooks.json
.mcp.jsonRoot pluginKonfigurasi MCP server
.lsp.jsonRoot pluginKonfigurasi LSP server untuk code intelligence
settings.jsonRoot pluginSettings default yang diterapkan ketika plugin diaktifkan
Langkah berikutnya: Siap menambahkan lebih banyak fitur? Lompat ke Kembangkan plugins yang lebih kompleks untuk menambahkan agents, hooks, MCP servers, dan LSP servers. Untuk spesifikasi teknis lengkap dari semua komponen plugin, lihat Referensi plugins.

Kembangkan plugins yang lebih kompleks

Setelah Anda nyaman dengan plugins dasar, Anda dapat membuat ekstensi yang lebih canggih.

Tambahkan Skills ke plugin Anda

Plugins dapat mencakup Agent Skills untuk memperluas kemampuan Claude. Skills diinvokasi oleh model: Claude secara otomatis menggunakannya berdasarkan konteks tugas. Tambahkan direktori skills/ di root plugin Anda dengan folder Skill yang berisi file SKILL.md:
my-plugin/
├── .claude-plugin/
│   └── plugin.json
└── skills/
    └── code-review/
        └── SKILL.md
Setiap SKILL.md memerlukan frontmatter dengan field name dan description, diikuti dengan instruksi:
---
name: code-review
description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.
---

When reviewing code, check for:
1. Code organization and structure
2. Error handling
3. Security concerns
4. Test coverage
Setelah memasang plugin, jalankan /reload-plugins untuk memuat Skills. Untuk panduan authoring Skill lengkap termasuk progressive disclosure dan pembatasan tool, lihat Agent Skills.

Tambahkan LSP servers ke plugin Anda

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.
Plugin 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:
.lsp.json
{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}
Pengguna yang memasang plugin Anda harus memiliki binary language server yang diinstal di mesin mereka. Untuk opsi konfigurasi LSP lengkap, lihat LSP servers.

Kirim settings default dengan plugin Anda

Plugins dapat menyertakan file settings.json di root plugin untuk menerapkan konfigurasi default ketika plugin diaktifkan. Saat ini, hanya key agent yang didukung. Mengatur agent mengaktifkan salah satu custom agents plugin sebagai thread utama, menerapkan system prompt, pembatasan tool, dan modelnya. Ini memungkinkan plugin untuk mengubah perilaku Claude Code secara default ketika diaktifkan.
settings.json
{
  "agent": "security-reviewer"
}
Contoh 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.

Organisir plugins kompleks

Untuk plugins dengan banyak komponen, organisir struktur direktori Anda berdasarkan fungsionalitas. Untuk layout direktori lengkap dan pola organisasi, lihat Struktur direktori plugin.

Uji plugins Anda secara lokal

Gunakan flag --plugin-dir untuk menguji plugins selama pengembangan. Ini memuat plugin Anda secara langsung tanpa memerlukan instalasi.
claude --plugin-dir ./my-plugin
Ketika 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. Plugin marketplace yang dipaksa diaktifkan oleh managed settings adalah satu-satunya pengecualian dan tidak dapat ditimpa. Saat Anda membuat perubahan pada plugin Anda, jalankan /reload-plugins untuk mengambil pembaruan tanpa memulai ulang. Ini memuat ulang commands, skills, agents, hooks, plugin MCP servers, dan plugin LSP servers. Uji komponen plugin Anda:
  • Coba skills Anda dengan /plugin-name:skill-name
  • Periksa bahwa agents muncul di /agents
  • Verifikasi hooks bekerja seperti yang diharapkan
Anda dapat memuat beberapa plugins sekaligus dengan menentukan flag berkali-kali:
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

Debug masalah plugin

Jika plugin Anda tidak bekerja seperti yang diharapkan:
  1. Periksa struktur: Pastikan direktori Anda berada di root plugin, bukan di dalam .claude-plugin/
  2. Uji komponen secara individual: Periksa setiap command, agent, dan hook secara terpisah
  3. Gunakan alat validasi dan debugging: Lihat Alat debugging dan pengembangan untuk perintah CLI dan teknik troubleshooting

Bagikan plugins Anda

Ketika plugin Anda siap untuk dibagikan:
  1. Tambahkan dokumentasi: Sertakan README.md dengan instruksi instalasi dan penggunaan
  2. Versi plugin Anda: Gunakan semantic versioning di plugin.json Anda
  3. Buat atau gunakan marketplace: Distribusikan melalui plugin marketplaces untuk instalasi
  4. Uji dengan orang lain: Minta anggota tim menguji plugin sebelum distribusi yang lebih luas
Setelah plugin Anda berada di marketplace, orang lain dapat memasangnya menggunakan instruksi di Temukan dan pasang plugins.

Kirimkan plugin Anda ke marketplace resmi

Untuk mengirimkan plugin ke marketplace Anthropic resmi, gunakan salah satu formulir pengajuan in-app:
Untuk spesifikasi teknis lengkap, teknik debugging, dan strategi distribusi, lihat Referensi plugins.

Konversi konfigurasi yang ada ke plugins

Jika Anda sudah memiliki skills atau hooks di direktori .claude/ Anda, Anda dapat mengonversinya menjadi plugin untuk berbagi dan distribusi yang lebih mudah.

Langkah migrasi

1

Buat struktur plugin

Buat direktori plugin baru:
mkdir -p my-plugin/.claude-plugin
Buat file manifest di my-plugin/.claude-plugin/plugin.json:
my-plugin/.claude-plugin/plugin.json
{
  "name": "my-plugin",
  "description": "Migrated from standalone configuration",
  "version": "1.0.0"
}
2

Salin file yang ada

Salin konfigurasi yang ada ke direktori plugin:
# Copy commands
cp -r .claude/commands my-plugin/

# Copy agents (if any)
cp -r .claude/agents my-plugin/

# Copy skills (if any)
cp -r .claude/skills my-plugin/
3

Migrasi hooks

Jika Anda memiliki hooks di settings Anda, buat direktori hooks:
mkdir my-plugin/hooks
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:
my-plugin/hooks/hooks.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]
      }
    ]
  }
}
4

Uji plugin yang dimigrasikan

Muat plugin Anda untuk memverifikasi semuanya berfungsi:
claude --plugin-dir ./my-plugin
Uji setiap komponen: jalankan commands Anda, periksa agents muncul di /agents, dan verifikasi hooks dipicu dengan benar.

Apa yang berubah saat migrasi

Standalone (.claude/)Plugin
Hanya tersedia di satu proyekDapat dibagikan melalui marketplaces
File di .claude/commands/File di plugin-name/commands/
Hooks di settings.jsonHooks di hooks/hooks.json
Harus menyalin secara manual untuk berbagiPasang dengan /plugin install
Setelah migrasi, Anda dapat menghapus file asli dari .claude/ untuk menghindari duplikat. Versi plugin akan mengambil prioritas saat dimuat.

Langkah berikutnya

Sekarang bahwa Anda memahami sistem plugin Claude Code, berikut adalah jalur yang disarankan untuk tujuan yang berbeda:

Untuk pengguna plugin

Untuk pengembang plugin