Untuk tutorial praktis dan penggunaan praktis, lihat Plugin. Untuk manajemen plugin di seluruh tim dan komunitas, lihat Marketplace plugin.
Referensi ini menyediakan spesifikasi teknis lengkap untuk sistem plugin Claude Code, termasuk skema komponen, perintah CLI, dan alat pengembangan.

Referensi komponen plugin

Bagian ini mendokumentasikan empat jenis komponen yang dapat disediakan oleh plugin.

Perintah

Plugin menambahkan perintah slash kustom yang terintegrasi dengan mulus dengan sistem perintah Claude Code. Lokasi: direktori commands/ di root plugin Format file: File Markdown dengan frontmatter Untuk detail lengkap tentang struktur perintah plugin, pola pemanggilan, dan fitur, lihat Perintah plugin.

Agen

Plugin dapat menyediakan subagen khusus untuk tugas-tugas spesifik yang dapat dipanggil Claude secara otomatis ketika sesuai. Lokasi: direktori agents/ di root plugin Format file: File Markdown yang menjelaskan kemampuan agen Struktur agen:
---
description: Apa yang dikhususkan oleh agen ini
capabilities: ["tugas1", "tugas2", "tugas3"]
---

# Nama Agen

Deskripsi detail tentang peran agen, keahlian, dan kapan Claude harus memanggilnya.

## Kemampuan
- Tugas spesifik yang dikuasai agen
- Kemampuan khusus lainnya
- Kapan menggunakan agen ini vs yang lain

## Konteks dan contoh
Berikan contoh kapan agen ini harus digunakan dan jenis masalah apa yang dipecahkannya.
Titik integrasi:
  • Agen muncul di antarmuka /agents
  • Claude dapat memanggil agen secara otomatis berdasarkan konteks tugas
  • Agen dapat dipanggil secara manual oleh pengguna
  • Agen plugin bekerja bersama agen Claude bawaan

Hook

Plugin dapat menyediakan penangan event yang merespons event Claude Code secara otomatis. Lokasi: hooks/hooks.json di root plugin, atau inline di plugin.json Format: Konfigurasi JSON dengan pencocokan event dan aksi Konfigurasi hook:
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"
          }
        ]
      }
    ]
  }
}
Event yang tersedia:
  • PreToolUse: Sebelum Claude menggunakan alat apa pun
  • PostToolUse: Setelah Claude menggunakan alat apa pun
  • UserPromptSubmit: Ketika pengguna mengirimkan prompt
  • Notification: Ketika Claude Code mengirim notifikasi
  • Stop: Ketika Claude mencoba berhenti
  • SubagentStop: Ketika subagen mencoba berhenti
  • SessionStart: Di awal sesi
  • SessionEnd: Di akhir sesi
  • PreCompact: Sebelum riwayat percakapan dipadatkan
Jenis hook:
  • command: Menjalankan perintah shell atau skrip
  • validation: Memvalidasi konten file atau status proyek
  • notification: Mengirim peringatan atau pembaruan status

Server MCP

Plugin dapat menggabungkan server Model Context Protocol (MCP) untuk menghubungkan Claude Code dengan alat dan layanan eksternal. Lokasi: .mcp.json di root plugin, atau inline di plugin.json Format: Konfigurasi server MCP standar Konfigurasi server MCP:
{
  "mcpServers": {
    "plugin-database": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
      "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
      "env": {
        "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"
      }
    },
    "plugin-api-client": {
      "command": "npx",
      "args": ["@company/mcp-server", "--plugin-mode"],
      "cwd": "${CLAUDE_PLUGIN_ROOT}"
    }
  }
}
Perilaku integrasi:
  • Server MCP plugin dimulai secara otomatis ketika plugin diaktifkan
  • Server muncul sebagai alat MCP standar di toolkit Claude
  • Kemampuan server terintegrasi dengan mulus dengan alat Claude yang ada
  • Server plugin dapat dikonfigurasi secara independen dari server MCP pengguna

Skema manifest plugin

File plugin.json mendefinisikan metadata dan konfigurasi plugin Anda. Bagian ini mendokumentasikan semua field dan opsi yang didukung.

Skema lengkap

{
  "name": "plugin-name",
  "version": "1.2.0",
  "description": "Deskripsi singkat plugin",
  "author": {
    "name": "Nama Penulis",
    "email": "[email protected]",
    "url": "https://github.com/author"
  },
  "homepage": "https://docs.example.com/plugin",
  "repository": "https://github.com/author/plugin",
  "license": "MIT",
  "keywords": ["keyword1", "keyword2"],
  "commands": ["./custom/commands/special.md"],
  "agents": "./custom/agents/",
  "hooks": "./config/hooks.json",
  "mcpServers": "./mcp-config.json"
}

Field wajib

FieldTipeDeskripsiContoh
namestringPengenal unik (kebab-case, tanpa spasi)"deployment-tools"

Field metadata

FieldTipeDeskripsiContoh
versionstringVersi semantik"2.1.0"
descriptionstringPenjelasan singkat tujuan plugin"Alat otomasi deployment"
authorobjectInformasi penulis{"name": "Tim Dev", "email": "[email protected]"}
homepagestringURL dokumentasi"https://docs.example.com"
repositorystringURL kode sumber"https://github.com/user/plugin"
licensestringPengenal lisensi"MIT", "Apache-2.0"
keywordsarrayTag penemuan["deployment", "ci-cd"]

Field path komponen

FieldTipeDeskripsiContoh
commandsstring|arrayFile/direktori perintah tambahan"./custom/cmd.md" atau ["./cmd1.md"]
agentsstring|arrayFile agen tambahan"./custom/agents/"
hooksstring|objectPath konfigurasi hook atau konfigurasi inline"./hooks.json"
mcpServersstring|objectPath konfigurasi MCP atau konfigurasi inline"./mcp.json"

Aturan perilaku path

Penting: Path kustom melengkapi direktori default - tidak menggantikannya.
  • Jika commands/ ada, itu dimuat sebagai tambahan dari path perintah kustom
  • Semua path harus relatif terhadap root plugin dan dimulai dengan ./
  • Perintah dari path kustom menggunakan aturan penamaan dan namespace yang sama
  • Beberapa path dapat ditentukan sebagai array untuk fleksibilitas
Contoh path:
{
  "commands": [
    "./specialized/deploy.md",
    "./utilities/batch-process.md"
  ],
  "agents": [
    "./custom-agents/reviewer.md",
    "./custom-agents/tester.md"
  ]
}

Variabel lingkungan

${CLAUDE_PLUGIN_ROOT}: Berisi path absolut ke direktori plugin Anda. Gunakan ini di hook, server MCP, dan skrip untuk memastikan path yang benar terlepas dari lokasi instalasi.
{
  "hooks": {
    "PostToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PLUGIN_ROOT}/scripts/process.sh"
          }
        ]
      }
    ]
  }
}

Struktur direktori plugin

Layout plugin standar

Plugin lengkap mengikuti struktur ini:
enterprise-plugin/
├── .claude-plugin/           # Direktori metadata
│   └── plugin.json          # Wajib: manifest plugin
├── commands/                 # Lokasi perintah default
│   ├── status.md
│   └──  logs.md
├── agents/                   # Lokasi agen default
│   ├── security-reviewer.md
│   ├── performance-tester.md
│   └── compliance-checker.md
├── hooks/                    # Konfigurasi hook
│   ├── hooks.json           # Konfigurasi hook utama
│   └── security-hooks.json  # Hook tambahan
├── .mcp.json                # Definisi server MCP
├── scripts/                 # Skrip hook dan utilitas
│   ├── security-scan.sh
│   ├── format-code.py
│   └── deploy.js
├── LICENSE                  # File lisensi
└── CHANGELOG.md             # Riwayat versi
Direktori .claude-plugin/ berisi file plugin.json. Semua direktori lain (commands/, agents/, hooks/) harus berada di root plugin, bukan di dalam .claude-plugin/.

Referensi lokasi file

KomponenLokasi DefaultTujuan
Manifest.claude-plugin/plugin.jsonFile metadata wajib
Perintahcommands/File markdown perintah slash
Agenagents/File markdown subagen
Hookhooks/hooks.jsonKonfigurasi hook
Server MCP.mcp.jsonDefinisi server MCP

Alat debugging dan pengembangan

Perintah debugging

Gunakan claude --debug untuk melihat detail pemuatan plugin:
claude --debug
Ini menunjukkan:
  • Plugin mana yang sedang dimuat
  • Kesalahan apa pun dalam manifest plugin
  • Registrasi perintah, agen, dan hook
  • Inisialisasi server MCP

Masalah umum

MasalahPenyebabSolusi
Plugin tidak memuatplugin.json tidak validValidasi sintaks JSON
Perintah tidak munculStruktur direktori salahPastikan commands/ di root, bukan di .claude-plugin/
Hook tidak aktifSkrip tidak dapat dieksekusiJalankan chmod +x script.sh
Server MCP gagal${CLAUDE_PLUGIN_ROOT} hilangGunakan variabel untuk semua path plugin
Kesalahan pathPath absolut digunakanSemua path harus relatif dan dimulai dengan ./

Referensi distribusi dan versioning

Manajemen versi

Ikuti semantic versioning untuk rilis plugin:

## Lihat juga

- [Plugin](/id/docs/claude-code/plugins) - Tutorial dan penggunaan praktis
- [Marketplace plugin](/id/docs/claude-code/plugin-marketplaces) - Membuat dan mengelola marketplace
- [Perintah slash](/id/docs/claude-code/slash-commands) - Detail pengembangan perintah
- [Subagen](/id/docs/claude-code/sub-agents) - Konfigurasi dan kemampuan agen
- [Hook](/id/docs/claude-code/hooks) - Penanganan event dan otomasi
- [MCP](/id/docs/claude-code/mcp) - Integrasi alat eksternal
- [Pengaturan](/id/docs/claude-code/settings) - Opsi konfigurasi untuk plugin