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 в SDK

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

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

Что такое plugins?

Plugins — это пакеты расширений Claude Code, которые могут включать:

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

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

Загрузка plugins

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

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: "./my-plugin" }]

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

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

Skills из plugins автоматически получают пространство имен с именем plugin, чтобы избежать конфликтов. При вызове как slash commands формат — 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 * 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);

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

Директория plugin должна содержать файл манифеста .claude-plugin/plugin.json. Она может опционально включать:

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

Для подробной информации о создании plugins см.:

  • Plugins — Полное руководство по разработке plugin
  • Plugins reference — Технические спецификации и схемы

Распространенные варианты использования

Разработка и тестирование

Загружайте plugins во время разработки без их глобальной установки:

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

Расширения, специфичные для проекта

Включайте plugins в репозиторий вашего проекта для согласованности в команде:

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

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

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

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

Troubleshooting

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

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

  1. Проверьте путь: Убедитесь, что путь указывает на корневую директорию plugin (содержащую .claude-plugin/)
  2. Проверьте plugin.json: Убедитесь, что ваш файл манифеста имеет корректный синтаксис JSON
  3. Проверьте разрешения файлов: Убедитесь, что директория plugin доступна для чтения

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

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

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

Проблемы с разрешением пути

Если относительные пути не работают:

  1. Проверьте рабочую директорию: Относительные пути разрешаются из вашей текущей рабочей директории
  2. Используйте абсолютные пути: Для надежности рассмотрите использование абсолютных путей
  3. Нормализуйте пути: Используйте утилиты пути для правильного построения путей

См. также

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