Los plugins te permiten extender Claude Code con funcionalidad personalizada que puede compartirse entre proyectos. A través del Agent SDK, puedes cargar programáticamente plugins desde directorios locales para agregar comandos de barra diagonal personalizados, agentes, habilidades, hooks y servidores MCP a tus sesiones de agente.
Los plugins son paquetes de extensiones de Claude Code que pueden incluir:
Para obtener información completa sobre la estructura de plugins y cómo crear plugins, consulta Plugins.
Carga plugins proporcionando sus rutas del sistema de archivos local en tu configuración de opciones. El SDK admite cargar múltiples plugins desde diferentes ubicaciones.
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
}Las rutas de plugins pueden ser:
"./plugins/my-plugin")"/home/user/plugins/my-plugin")La ruta debe apuntar al directorio raíz del plugin (el directorio que contiene .claude-plugin/plugin.json).
Cuando los plugins se cargan correctamente, aparecen en el mensaje de inicialización del sistema. Puedes verificar que tus plugins estén disponibles:
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"]
}
}Los comandos de los plugins se espacian automáticamente con el nombre del plugin para evitar conflictos. El formato es plugin-name:command-name.
import { query } from "@anthropic-ai/claude-agent-sdk";
// Load a plugin with a custom /greet command
for await (const message of query({
prompt: "/my-plugin:greet", // Use plugin command with namespace
options: {
plugins: [{ type: "local", path: "./my-plugin" }]
}
})) {
// Claude executes the custom greeting command from the plugin
if (message.type === "assistant") {
console.log(message.content);
}
}Si instalaste un plugin a través de la CLI (por ejemplo, /plugin install my-plugin@marketplace), aún puedes usarlo en el SDK proporcionando su ruta de instalación. Verifica ~/.claude/plugins/ para plugins instalados por CLI.
Aquí hay un ejemplo completo que demuestra la carga y el uso de plugins:
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.content);
}
}
}
runWithPlugin().catch(console.error);Un directorio de plugin debe contener un archivo de manifiesto .claude-plugin/plugin.json. Opcionalmente puede incluir:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Required: plugin manifest
├── commands/ # Custom slash commands
│ └── custom-cmd.md
├── agents/ # Custom agents
│ └── specialist.md
├── skills/ # Agent Skills
│ └── my-skill/
│ └── SKILL.md
├── hooks/ # Event handlers
│ └── hooks.json
└── .mcp.json # MCP server definitionsPara obtener información detallada sobre la creación de plugins, consulta:
Carga plugins durante el desarrollo sin instalarlos globalmente:
plugins: [
{ type: "local", path: "./dev-plugins/my-plugin" }
]Incluye plugins en tu repositorio de proyecto para consistencia en todo el equipo:
plugins: [
{ type: "local", path: "./project-plugins/team-workflows" }
]Combina plugins de diferentes ubicaciones:
plugins: [
{ type: "local", path: "./local-plugin" },
{ type: "local", path: "~/.claude/custom-plugins/shared-plugin" }
]Si tu plugin no aparece en el mensaje de inicialización:
.claude-plugin/)Si los comandos del plugin no funcionan:
plugin-name:command-nameslash_commands con el espacio de nombres correctocommands/Si las rutas relativas no funcionan: