SpyBara
Go Premium

agent-sdk/plugins.md 2026-09-09 22:58 UTC to 2026-09-10 23:00 UTC

This page contains 61 additions and 92 deletions.

2026
Thu 10 23:00 Mon 14 22:58 Fri 25 23:58

Plugins в SDK

Загружайте пользовательские plugins для расширения Claude Code с помощью skills, agents, hooks и MCP серверов через Agent SDK

Plugins позволяют расширить Claude Code пользовательской функциональностью, которая может быть общей для нескольких проектов. Через Agent SDK вы можете программно загружать plugins из локальных директорий, чтобы добавить возможности к сеансам вашего agent. Plugin может включать:

  • Skills: возможности, которые Claude вызывает автономно, когда это уместно. Вы также можете вызвать skill plugin напрямую с помощью /plugin-name:skill-name.
  • Agents: специализированные подагенты для конкретных задач
  • Hooks: обработчики событий, которые реагируют на использование инструментов и другие события
  • MCP серверы: интеграции внешних инструментов через Model Context Protocol

Для полной информации о структуре plugin и способах создания plugins см. Plugins.

Загрузка plugins

Загружайте plugins, предоставляя пути их локальной файловой системы в конфигурации параметров. Поле type должно быть "local", это единственное значение, которое принимает SDK. SDK поддерживает загрузку нескольких plugins из разных мест.

Чтобы использовать plugin, распространяемый через marketplace или удаленный репозиторий, сначала загрузите его и предоставьте путь локальной директории. Для структуры директории, которая требуется plugin, см. справочник структуры plugin ниже.

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
}

Спецификации путей

Пути plugins могут быть:

  • Относительные пути: разрешаются относительно вашей текущей рабочей директории (например, "./plugins/my-plugin")
  • Абсолютные пути: полные пути файловой системы (например, "/home/user/plugins/my-plugin")

Проверка установки plugin

Когда plugins загружаются успешно, они появляются в системном сообщении инициализации. Вы можете проверить, что ваши plugins доступны:

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: "/absolute/path/to/my-plugin" }]

// Plugin skills appear with the plugin name as a prefix
console.log("Skills:", message.skills);
// Example: ["my-plugin:greet"]

// Plugin commands use the same prefix, and skills appear here too
console.log("Commands:", message.slash_commands);
// Example: ["compact", "context", "my-plugin:custom-command", "my-plugin:greet"]
}
}

Использование plugin skills

Skills из plugins автоматически получают пространство имен с именем plugin, чтобы избежать конфликтов. Для прямого вызова отправьте /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);
}
}

Полный пример

Вот полный пример, демонстрирующий загрузку и использование plugin:

import { query } from "@anthropic-ai/claude-agent-sdk";
import { fileURLToPath } from "node:url";

async function runWithPlugin() {
const pluginPath = fileURLToPath(new URL("./plugins/my-plugin", import.meta.url));

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 skills:", message.skills);
console.log("Available commands:", message.slash_commands);
}

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

runWithPlugin().catch(console.error);

Справочник структуры plugin

Директория plugin обычно содержит файл манифеста .claude-plugin/plugin.json. Манифест является опциональным. Когда он опущен, Claude Code автоматически обнаруживает компоненты из структуры директории. Директория может включать:

my-plugin/
├── .claude-plugin/
│   └── plugin.json          # Plugin manifest (optional, components auto-discovered without it)
├── skills/                   # Agent Skills (invoked autonomously or via /plugin-name:skill-name)
│   └── my-skill/
│       └── SKILL.md
├── commands/                 # Skills as flat .md files
│   └── custom-cmd.md
├── agents/                   # Custom agents
│   └── specialist.md
├── hooks/                    # Event handlers
│   └── hooks.json
└── .mcp.json                # MCP server definitions

Несколько источников plugin

Объединяйте plugins из разных мест:

import * as os from "node:os";
import * as path from "node:path";

plugins: [
  { type: "local", path: "./local-plugin" },
  {
    type: "local",
    path: path.join(os.homedir(), ".claude", "custom-plugins", "shared-plugin")
  }
];

Troubleshooting

Plugin не загружается

Если ваш plugin не появляется в сообщении инициализации:

  1. Проверьте путь: убедитесь, что путь указывает на корневую директорию plugin, родительскую директорию skills/, agents/, hooks/, commands/ или .claude-plugin/
  2. Проверьте plugin.json: если ваш plugin включает манифест, убедитесь, что он имеет корректный синтаксис JSON
  3. Проверьте разрешения файлов: убедитесь, что директория plugin доступна для чтения
  4. Подтвердите существование директории: SDK пропускает несуществующий путь, и plugin не появляется в списке plugins сообщения инициализации

Skills не появляются

Если skills plugin не работают:

  1. Используйте пространство имен: вызывайте skills plugin как /plugin-name:skill-name
  2. Проверьте сообщение инициализации: убедитесь, что skill появляется в списке skills с правильным пространством имен
  3. Проверьте файлы skill: убедитесь, что каждый skill имеет файл SKILL.md в собственной поддиректории под skills/, например skills/my-skill/SKILL.md

См. также

  • Plugins - Полное руководство по разработке plugin
  • Plugins reference - Технические спецификации
  • Commands - Отправка команд в SDK
  • Subagents - Работа со специализированными agents
  • Skills - Использование Agent Skills