SpyBara
Go Premium

agent-sdk/plugins.md 2026-05-14 17:02 UTC to 2026-05-15 22:58 UTC

16 added, 10 removed.

2026
Sun 31 06:39 Sat 30 06:23 Fri 29 06:38 Thu 28 06:37 Wed 27 06:42 Tue 26 06:33 Sun 24 06:25 Sat 23 06:18 Fri 22 06:33 Thu 21 06:36 Wed 20 06:35 Tue 19 06:34 Mon 18 23:59 Sun 17 01:01 Fri 15 22:58 Thu 14 17:02 Wed 13 23:01 Tue 12 22:57 Mon 11 23:00 Sun 10 23:03 Sat 9 04:57 Fri 8 22:00 Thu 7 22:59 Tue 5 23:00 Mon 4 22:58 Sat 2 18:14 Fri 1 18:19

Plugins dalam SDK

Muat plugin kustom untuk memperluas Claude Code dengan perintah, agen, skills, dan hooks melalui Agent SDK

Plugins memungkinkan Anda memperluas Claude Code dengan fungsionalitas kustom yang dapat dibagikan di seluruh proyek. Melalui Agent SDK, Anda dapat secara terprogram memuat plugins dari direktori lokal untuk menambahkan slash commands kustom, agen, skills, hooks, dan server MCP ke sesi agen Anda.

Apa itu plugins?

Plugins adalah paket ekstensi Claude Code yang dapat mencakup:

  • Skills: Kemampuan yang dipanggil model yang digunakan Claude secara otonom (juga dapat dipanggil dengan /skill-name)
  • Agents: Subagen khusus untuk tugas-tugas tertentu
  • Hooks: Penanganan peristiwa yang merespons penggunaan alat dan peristiwa lainnya
  • MCP servers: Integrasi alat eksternal melalui Model Context Protocol

Untuk informasi lengkap tentang struktur plugin dan cara membuat plugins, lihat Plugins.

Memuat plugins

Muat plugins dengan menyediakan jalur sistem file lokal mereka dalam konfigurasi opsi Anda. Bidang type harus "local", satu-satunya nilai yang diterima SDK. Untuk menggunakan plugin yang didistribusikan melalui marketplace atau repositori jarak jauh, unduh terlebih dahulu dan sediakan jalur direktori lokal. SDK mendukung pemuatan beberapa plugins dari lokasi berbeda.

import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
prompt: "Hello",
options: {
plugins: [
{ type: "local", path: "./my-plugin" },
{ type: "local", path: "/absolute/path/to/another-plugin" }
]
}
})) {
// Plugin commands, agents, and other features are now available
}

Spesifikasi jalur

Jalur plugin dapat berupa:

  • Jalur relatif: Diselesaikan relatif terhadap direktori kerja saat ini (misalnya, "./plugins/my-plugin")
  • Jalur absolut: Jalur sistem file lengkap (misalnya, "/home/user/plugins/my-plugin")

Memverifikasi instalasi plugin

Ketika plugins dimuat dengan berhasil, mereka muncul dalam pesan inisialisasi sistem. Anda dapat memverifikasi bahwa plugins Anda tersedia:

import { query } from "@anthropic-ai/claude-agent-sdk";

for await (const message of query({
prompt: "Hello",
options: {
plugins: [{ type: "local", path: "./my-plugin" }]
}
})) {
if (message.type === "system" && message.subtype === "init") {
// Check loaded plugins
console.log("Plugins:", message.plugins);
// Example: [{ name: "my-plugin", path: "./my-plugin" }]

// Check available commands from plugins
console.log("Commands:", message.slash_commands);
// Example: ["/help", "/compact", "my-plugin:custom-command"]
}
}

Menggunakan plugin skills

Skills dari plugins secara otomatis diberi namespace dengan nama plugin untuk menghindari konflik. Ketika dipanggil sebagai slash commands, formatnya adalah plugin-name:skill-name.

import { query } from "@anthropic-ai/claude-agent-sdk";

// Load a plugin with a custom /greet skill
for await (const message of query({
prompt: "/my-plugin:greet", // Use plugin skill with namespace
options: {
plugins: [{ type: "local", path: "./my-plugin" }]
}
})) {
// Claude executes the custom greeting skill from the plugin
if (message.type === "assistant") {
console.log(message.message.content);
}
}

Contoh lengkap

Berikut adalah contoh lengkap yang mendemonstrasikan pemuatan dan penggunaan plugin:

import { query } from "@anthropic-ai/claude-agent-sdk";
import * as path from "path";

async function runWithPlugin() {
const pluginPath = path.join(__dirname, "plugins", "my-plugin");

console.log("Loading plugin from:", pluginPath);

for await (const message of query({
prompt: "What custom commands do you have available?",
options: {
plugins: [{ type: "local", path: pluginPath }],
maxTurns: 3
}
})) {
if (message.type === "system" && message.subtype === "init") {
console.log("Loaded plugins:", message.plugins);
console.log("Available commands:", message.slash_commands);
}

if (message.type === "assistant") {
console.log("Assistant:", message.message.content);
}
}
}

runWithPlugin().catch(console.error);

Referensi struktur plugin

Direktori plugin harus berisi file manifest .claude-plugin/plugin.json. Secara opsional dapat mencakup:

my-plugin/
├── .claude-plugin/
│   └── plugin.json          # Required: plugin manifest
├── skills/                   # Agent Skills (invoked autonomously or via /skill-name)
│   └── my-skill/
│       └── SKILL.md
├── commands/                 # Legacy: use skills/ instead
│   └── custom-cmd.md
├── agents/                   # Custom agents
│   └── specialist.md
├── hooks/                    # Event handlers
│   └── hooks.json
└── .mcp.json                # MCP server definitions

Untuk informasi terperinci tentang membuat plugins, lihat:

Kasus penggunaan umum

Pengembangan dan pengujian

Muat plugins selama pengembangan tanpa menginstalnya secara global:

plugins: [{ type: "local", path: "./dev-plugins/my-plugin" }];

Ekstensi khusus proyek

Sertakan plugins di repositori proyek Anda untuk konsistensi di seluruh tim:

plugins: [{ type: "local", path: "./project-plugins/team-workflows" }];

Sumber plugin ganda

Gabungkan plugins dari lokasi berbeda:

plugins: [
  { type: "local", path: "./local-plugin" },
  { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }
];

Troubleshooting

Plugin tidak dimuat

Jika plugin Anda tidak muncul dalam pesan init:

  1. Periksa jalurnya: Pastikan jalur menunjuk ke direktori root plugin (berisi .claude-plugin/)
  2. Validasi plugin.json: Pastikan file manifest Anda memiliki sintaks JSON yang valid
  3. Periksa izin file: Pastikan direktori plugin dapat dibaca

Skills tidak muncul

Jika plugin skills tidak berfungsi:

  1. Gunakan namespace: Plugin skills memerlukan format plugin-name:skill-name ketika dipanggil sebagai slash commands
  2. Periksa pesan init: Verifikasi bahwa skill muncul di slash_commands dengan namespace yang benar
  3. Validasi file skill: Pastikan setiap skill memiliki file SKILL.md di subdirektorinya sendiri di bawah skills/ (misalnya, skills/my-skill/SKILL.md)

Masalah resolusi jalur

Jika jalur relatif tidak berfungsi:

  1. Periksa direktori kerja: Jalur relatif diselesaikan dari direktori kerja saat ini Anda
  2. Gunakan jalur absolut: Untuk keandalan, pertimbangkan menggunakan jalur absolut
  3. Normalkan jalur: Gunakan utilitas jalur untuk membuat jalur dengan benar

Lihat juga