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 nell'SDK

Carica plugin personalizzati per estendere Claude Code con comandi, agenti, skills e hooks tramite l'Agent SDK

I plugin ti permettono di estendere Claude Code con funzionalità personalizzate che possono essere condivise tra i progetti. Attraverso l'Agent SDK, puoi caricare programmaticamente i plugin da directory locali per aggiungere comandi slash personalizzati, agenti, skills, hooks e server MCP alle tue sessioni di agente.

Cosa sono i plugin?

I plugin sono pacchetti di estensioni di Claude Code che possono includere:

  • Skills: Capacità richiamate dal modello che Claude utilizza autonomamente (possono anche essere richiamate con /skill-name)
  • Agents: Subagenti specializzati per compiti specifici
  • Hooks: Gestori di eventi che rispondono all'uso degli strumenti e ad altri eventi
  • MCP servers: Integrazioni di strumenti esterni tramite Model Context Protocol

Per informazioni complete sulla struttura dei plugin e su come creare plugin, vedi Plugins.

Caricamento dei plugin

Carica i plugin fornendo i loro percorsi del file system locale nella configurazione delle opzioni. Il campo type deve essere "local", l'unico valore che l'SDK accetta. Per utilizzare un plugin distribuito tramite un marketplace o un repository remoto, scaricalo prima e fornisci il percorso della directory locale. L'SDK supporta il caricamento di più plugin da posizioni diverse.

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
}

Specifiche dei percorsi

I percorsi dei plugin possono essere:

  • Percorsi relativi: Risolti rispetto alla tua directory di lavoro corrente (ad esempio, "./plugins/my-plugin")
  • Percorsi assoluti: Percorsi completi del file system (ad esempio, "/home/user/plugins/my-plugin")

Verifica dell'installazione del plugin

Quando i plugin si caricano correttamente, appaiono nel messaggio di inizializzazione del sistema. Puoi verificare che i tuoi plugin siano disponibili:

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"]
}
}

Utilizzo delle skills dei plugin

Le skills dai plugin vengono automaticamente associate allo spazio dei nomi del plugin per evitare conflitti. Quando richiamate come comandi slash, il formato è 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);
}
}

Esempio completo

Ecco un esempio completo che dimostra il caricamento e l'utilizzo dei 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);

Riferimento della struttura del plugin

Una directory di plugin deve contenere un file manifest .claude-plugin/plugin.json. Può facoltativamente includere:

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

Per informazioni dettagliate sulla creazione di plugin, vedi:

Casi d'uso comuni

Sviluppo e test

Carica i plugin durante lo sviluppo senza installarli globalmente:

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

Estensioni specifiche del progetto

Includi i plugin nel tuo repository di progetto per la coerenza a livello di team:

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

Più fonti di plugin

Combina i plugin da posizioni diverse:

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

Troubleshooting

Plugin non caricato

Se il tuo plugin non appare nel messaggio di init:

  1. Controlla il percorso: Assicurati che il percorso punti alla directory radice del plugin (contenente .claude-plugin/)
  2. Valida plugin.json: Assicurati che il tuo file manifest abbia una sintassi JSON valida
  3. Controlla i permessi dei file: Assicurati che la directory del plugin sia leggibile

Skills non appaiono

Se le skills dei plugin non funzionano:

  1. Usa lo spazio dei nomi: Le skills dei plugin richiedono il formato plugin-name:skill-name quando richiamate come comandi slash
  2. Controlla il messaggio di init: Verifica che la skill appaia in slash_commands con lo spazio dei nomi corretto
  3. Valida i file delle skills: Assicurati che ogni skill abbia un file SKILL.md nella sua sottodirectory sotto skills/ (ad esempio, skills/my-skill/SKILL.md)

Problemi di risoluzione dei percorsi

Se i percorsi relativi non funzionano:

  1. Controlla la directory di lavoro: I percorsi relativi vengono risolti dalla tua directory di lavoro corrente
  2. Usa percorsi assoluti: Per l'affidabilità, considera l'utilizzo di percorsi assoluti
  3. Normalizza i percorsi: Usa le utility dei percorsi per costruire i percorsi correttamente

Vedi anche