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 en el SDK

Cargue plugins personalizados para extender Claude Code con comandos, agentes, skills y hooks a través del Agent SDK

Los plugins le permiten extender Claude Code con funcionalidad personalizada que se puede compartir entre proyectos. A través del Agent SDK, puede cargar programáticamente plugins desde directorios locales para agregar comandos slash personalizados, agentes, skills, hooks y servidores MCP a sus sesiones de agente.

¿Qué son los plugins?

Los plugins son paquetes de extensiones de Claude Code que pueden incluir:

  • Skills: Capacidades invocadas por el modelo que Claude utiliza de forma autónoma (también se pueden invocar con /skill-name)
  • Agents: Subagentes especializados para tareas específicas
  • Hooks: Controladores de eventos que responden al uso de herramientas y otros eventos
  • MCP servers: Integraciones de herramientas externas a través del Model Context Protocol

Para obtener información completa sobre la estructura de plugins y cómo crear plugins, consulte Plugins.

Cargando plugins

Cargue plugins proporcionando sus rutas del sistema de archivos local en su configuración de opciones. El campo type debe ser "local", el único valor que acepta el SDK. Para usar un plugin distribuido a través de un marketplace o repositorio remoto, descárguelo primero y proporcione la ruta del directorio local. 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
}

Especificaciones de ruta

Las rutas de plugins pueden ser:

  • Rutas relativas: Se resuelven en relación con su directorio de trabajo actual (por ejemplo, "./plugins/my-plugin")
  • Rutas absolutas: Rutas completas del sistema de archivos (por ejemplo, "/home/user/plugins/my-plugin")

Verificando la instalación del plugin

Cuando los plugins se cargan correctamente, aparecen en el mensaje de inicialización del sistema. Puede verificar que sus 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"]
}
}

Usando skills de plugins

Los skills de los plugins se espacian automáticamente con el nombre del plugin para evitar conflictos. Cuando se invocan como comandos slash, el formato es 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);
}
}

Ejemplo completo

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.message.content);
}
}
}

runWithPlugin().catch(console.error);

Referencia de estructura de plugin

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
├── 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

Para obtener información detallada sobre cómo crear plugins, consulte:

Casos de uso comunes

Desarrollo y pruebas

Cargue plugins durante el desarrollo sin instalarlos globalmente:

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

Extensiones específicas del proyecto

Incluya plugins en su repositorio de proyecto para consistencia en todo el equipo:

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

Múltiples fuentes de plugins

Combine plugins de diferentes ubicaciones:

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

Troubleshooting

Plugin no se carga

Si su plugin no aparece en el mensaje de inicialización:

  1. Verifique la ruta: Asegúrese de que la ruta apunte al directorio raíz del plugin (que contiene .claude-plugin/)
  2. Valide plugin.json: Asegúrese de que su archivo de manifiesto tenga una sintaxis JSON válida
  3. Verifique los permisos de archivo: Asegúrese de que el directorio del plugin sea legible

Los skills no aparecen

Si los skills del plugin no funcionan:

  1. Use el espacio de nombres: Los skills del plugin requieren el formato plugin-name:skill-name cuando se invocan como comandos slash
  2. Verifique el mensaje de inicialización: Verifique que el skill aparezca en slash_commands con el espacio de nombres correcto
  3. Valide los archivos de skill: Asegúrese de que cada skill tenga un archivo SKILL.md en su propio subdirectorio bajo skills/ (por ejemplo, skills/my-skill/SKILL.md)

Problemas de resolución de ruta

Si las rutas relativas no funcionan:

  1. Verifique el directorio de trabajo: Las rutas relativas se resuelven desde su directorio de trabajo actual
  2. Use rutas absolutas: Para mayor confiabilidad, considere usar rutas absolutas
  3. Normalice las rutas: Use utilidades de ruta para construir rutas correctamente

Ver también