МОДУЛЬ 07/УРОК

Плагины

Плагины Claude Code

В этой папке собраны законченные примеры плагинов, которые объединяют несколько возможностей Claude Code в цельные, готовые к установке пакеты.

Обзор

Плагины Claude Code - это готовые наборы настроек (slash commands, subagents, MCP-серверы и hooks), устанавливаемые одной командой. Это механизм расширения самого высокого уровня: он объединяет несколько возможностей в единые пакеты, которыми удобно делиться.

Архитектура плагина

graph TB A["Plugin"] B["Slash Commands"] C["Subagents"] D["MCP Servers"] E["Hooks"] F["Configuration"] A -->|bundles| B A -->|bundles| C A -->|bundles| D A -->|bundles| E A -->|bundles| F

Процесс загрузки плагинов

sequenceDiagram participant User participant Claude as Claude Code participant Plugin as Plugin Marketplace participant Install as Installation participant SlashCmds as Slash Commands participant Subagents participant MCPServers as MCP Servers participant Hooks participant Tools as Configured Tools User->>Claude: /plugin install pr-review Claude->>Plugin: Download plugin manifest Plugin-->>Claude: Return plugin definition Claude->>Install: Extract components Install->>SlashCmds: Configure Install->>Subagents: Configure Install->>MCPServers: Configure Install->>Hooks: Configure SlashCmds-->>Tools: Ready to use Subagents-->>Tools: Ready to use MCPServers-->>Tools: Ready to use Hooks-->>Tools: Ready to use Tools-->>Claude: Plugin installed ✅

Маркетплейс не требуется (v2.1.157+): плагины, размещённые в директориях .claude/skills, теперь автоматически загружаются без маркетплейса. Создайте каркас нового плагина командой claude plugin init <name>.

Типы плагинов и распространение

TypeScopeSharedAuthorityExamples
OfficialGlobalAll usersAnthropicPR Review, Security Guidance
CommunityPublicAll usersCommunityDevOps, Data Science
OrganizationInternalTeam membersCompanyInternal standards, tools
PersonalIndividualSingle userDeveloperCustom workflows

Структура манифеста плагина

Манифест плагина оформляется в формате JSON в файле .claude-plugin/plugin.json:

json
{
  "name": "my-first-plugin",
  "description": "A greeting plugin",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  },
  "homepage": "https://example.com",
  "repository": "https://github.com/user/repo",
  "license": "MIT"
}

Пример структуры плагина

CODE
my-plugin/
├── .claude-plugin/
│   └── plugin.json       # Manifest (name, description, version, author)
├── commands/             # Skills as Markdown files
│   ├── task-1.md
│   ├── task-2.md
│   └── workflows/
├── agents/               # Custom agent definitions
│   ├── specialist-1.md
│   ├── specialist-2.md
│   └── configs/
├── skills/               # Agent Skills with SKILL.md files
│   ├── skill-1.md
│   └── skill-2.md
├── hooks/                # Event handlers in hooks.json
│   └── hooks.json
├── .mcp.json             # MCP server configurations
├── .lsp.json             # LSP server configurations for code intelligence
├── bin/                  # Executables added to Bash tool's PATH while plugin is enabled
├── settings.json         # Default settings applied when plugin is enabled (currently only `agent` key supported)
├── themes/               # Optional: ship custom Claude Code themes (v2.1.118+)
├── templates/
│   └── issue-template.md
├── scripts/
│   ├── helper-1.sh
│   └── helper-2.py
├── docs/
│   ├── README.md
│   └── USAGE.md
└── tests/
    └── plugin.test.js

Настройка LSP-сервера

Плагины могут включать поддержку Language Server Protocol (LSP) для интеллектуального анализа кода в реальном времени. LSP-серверы предоставляют диагностику, навигацию по коду и информацию о символах прямо во время работы.

Где размещается конфигурация:

  • файл .lsp.json в корневом каталоге плагина
  • встроенный ключ lsp в plugin.json

Описание полей

FieldRequiredDescription
commandYesLSP server binary (must be in PATH)
extensionToLanguageYesMaps file extensions to language IDs
argsNoCommand-line arguments for the server
transportNoCommunication method: stdio (default) or socket
envNoEnvironment variables for the server process
initializationOptionsNoOptions sent during LSP initialization
settingsNoWorkspace configuration passed to the server
workspaceFolderNoOverride the workspace folder path
startupTimeoutNoMaximum time (ms) to wait for server startup
shutdownTimeoutNoMaximum time (ms) for graceful shutdown
restartOnCrashNoAutomatically restart if the server crashes
maxRestartsNoMaximum restart attempts before giving up

Примеры конфигураций

Go (gopls):

json
{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}

Python (pyright):

json
{
  "python": {
    "command": "pyright-langserver",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".py": "python",
      ".pyi": "python"
    }
  }
}

TypeScript:

json
{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescriptreact",
      ".js": "javascript",
      ".jsx": "javascriptreact"
    }
  }
}

Доступные LSP-плагины

В официальном marketplace доступны преднастроенные LSP-плагины:

PluginLanguageServer BinaryInstall Command
pyright-lspPythonpyright-langserverpip install pyright
typescript-lspTypeScript/JavaScripttypescript-language-servernpm install -g typescript-language-server typescript
rust-lspRustrust-analyzerInstall via rustup component add rust-analyzer

Возможности LSP

После настройки LSP-серверы предоставляют:

  • Мгновенную диагностику - ошибки и предупреждения появляются сразу после правок
  • Навигацию по коду - переход к определению, поиск ссылок и реализаций
  • Всплывающие подсказки - сигнатуры типов и документация при наведении
  • Список символов - просмотр символов в текущем файле или во всём workspace

Каталог bin/ в PATH

При включении плагина его каталог bin/ добавляется в начало PATH сессии. Любой поставляемый там исполняемый файл можно вызвать напрямую из инструмента Bash по имени - указывать полный путь не требуется.

bash
# In a plugin layout:
my-plugin/
├── plugin.json
└── bin/
    └── my-tool          # executable file (chmod +x)

# Inside a Claude Code session with the plugin enabled:
$ my-tool --help

Используйте это для вспомогательных CLI-утилит, которые hooks, skills или команды внутри того же плагина будут вызывать через shell. Пометьте файлы как исполняемые в репозитории плагина (chmod +x) - git сохраняет этот флаг.

Настройки плагина (v2.1.83+)

Плагины могут объявлять в манифесте настраиваемые пользователем параметры через userConfig. Значения, помеченные как sensitive: true, хранятся в системном keychain, а не в открытом виде в файлах настроек:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "userConfig": {
    "apiKey": {
      "description": "API key for the service",
      "sensitive": true
    },
    "region": {
      "description": "Deployment region",
      "default": "us-east-1"
    }
  }
}

Постоянные данные плагина (${CLAUDE_PLUGIN_DATA}) (v2.1.78+)

Плагины имеют доступ к каталогу для хранения постоянного состояния через переменную окружения ${CLAUDE_PLUGIN_DATA}. Этот каталог уникален для каждого плагина и сохраняется между сессиями, что делает его пригодным для кешей, баз данных и иных постоянных данных:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "command": "node ${CLAUDE_PLUGIN_DATA}/track-usage.js"
      }
    ]
  }
}

Каталог создаётся автоматически при установке плагина. Файлы, размещённые в нём, сохраняются до удаления плагина.

Фоновые мониторы (v2.1.105)

Плагины могут регистрировать фоновые мониторы, которые автоматически включаются при старте сессии или при вызове skill плагина. Добавьте в манифест плагина ключ верхнего уровня monitors:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "monitors": [
    {
      "command": "tail -f /var/log/app.log",
      "trigger": "session_start"
    }
  ]
}

Поле trigger принимает:

  • &quot;session_start&quot; - активирует монитор автоматически при старте сессии
  • &quot;skill_invoke&quot; - активирует монитор при вызове skill плагина

Под капотом мониторы используют тот же инструмент Monitor, передавая строки stdout как события, на которые Claude может реагировать.

Встроенный плагин через настройки (source: &#39;settings&#39;) (v2.1.80+)

Плагины можно объявлять прямо в файлах настроек как записи marketplace, используя поле source: &#39;settings&#39;. Это позволяет встроить определение плагина напрямую, без отдельного репозитория или marketplace:

json
{
  "pluginMarketplaces": [
    {
      "name": "inline-tools",
      "source": "settings",
      "plugins": [
        {
          "name": "quick-lint",
          "source": "./local-plugins/quick-lint"
        }
      ]
    }
  ]
}

Настройки плагина

Плагины могут поставляться с файлом settings.json, задающим конфигурацию по умолчанию. На данный момент поддерживается ключ agent, который указывает агента основного потока для плагина:

json
{
  "agent": "agents/specialist-1.md"
}

Если плагин содержит settings.json, его значения по умолчанию применяются при установке. Пользователи могут переопределить эти настройки в конфигурации своего проекта или в пользовательской конфигурации.

Автономный подход vs подход с плагином

ApproachCommand NamesConfigurationBest For
Standalone/helloManual setup in CLAUDE.mdPersonal, project-specific
Plugins/plugin-name:helloAutomated via plugin.jsonSharing, distribution, team use
Используйте отдельные slash commands для быстрых личных сценариев. Используйте плагины, когда нужно объединить несколько возможностей, поделиться с командой или опубликовать для распространения.

Вызов через пробел (v2.1.136+): slash commands плагина также работают с пробелом - /myplugin review разрешается в канонический /myplugin:review. Обе формы допустимы; форма с двоеточием считается канонической и рекомендуется в скриптах.

Обнаружение skills/ (v2.1.136+): наличие поля skills в plugin.json больше не скрывает стандартную директорию skills/ плагина. Skills, объявленные в обоих местах, объединяются, так что в plugin.json можно перечислить лишь несколько ключевых, не теряя остальные.

Плагины с SKILL.md в корне (v2.1.142+): плагин, у которого есть SKILL.md на верхнем уровне и нет поддиректории skills/, сам представляется как один skill - плагин является skill'ом. Это дополнительный вариант, а не замена директории skills/ или поля skills в plugin.json; используйте его для небольших плагинов с одним skill, где отдельная структура каталогов не даёт никаких преимуществ.

Практические примеры

Пример 1: плагин для ревью PR

Файл: .claude-plugin/plugin.json

json
{
  "name": "pr-review",
  "version": "1.0.0",
  "description": "Complete PR review workflow with security, testing, and docs",
  "author": {
    "name": "Anthropic"
  },
  "repository": "https://github.com/your-org/pr-review",
  "license": "MIT"
}

Файл: commands/review-pr.md

markdown
---
name: Review PR
description: Start comprehensive PR review with security and testing checks
---

# PR Review

This command initiates a complete pull request review including:

1. Security analysis
2. Test coverage verification
3. Documentation updates
4. Code quality checks
5. Performance impact assessment

Файл: agents/security-reviewer.md

yaml
---
name: security-reviewer
description: Security-focused code review
tools: Read, Grep, Bash
---

# Security Reviewer

Specializes in finding security vulnerabilities:
- Authentication/authorization issues
- Data exposure
- Injection attacks
- Secure configuration

Установка:

bash
/plugin install pr-review

# Result:
# ✅ 3 slash commands installed
# ✅ 3 subagents configured
# ✅ 2 MCP servers connected
# ✅ 4 hooks registered
# ✅ Ready to use!

Пример 2: DevOps-плагин

Компоненты:

CODE
devops-automation/
├── commands/
│   ├── deploy.md
│   ├── rollback.md
│   ├── status.md
│   └── incident.md
├── agents/
│   ├── deployment-specialist.md
│   ├── incident-commander.md
│   └── alert-analyzer.md
├── mcp/
│   ├── github-config.json
│   ├── kubernetes-config.json
│   └── prometheus-config.json
├── hooks/
│   ├── pre-deploy.js
│   ├── post-deploy.js
│   └── on-error.js
└── scripts/
    ├── deploy.sh
    ├── rollback.sh
    └── health-check.sh

Пример 3: Плагин для документации

Входящие в комплект компоненты:

CODE
documentation/
├── commands/
│   ├── generate-api-docs.md
│   ├── generate-readme.md
│   ├── sync-docs.md
│   └── validate-docs.md
├── agents/
│   ├── api-documenter.md
│   ├── code-commentator.md
│   └── example-generator.md
├── mcp/
│   ├── github-docs-config.json
│   └── slack-announce-config.json
└── templates/
    ├── api-endpoint.md
    ├── function-docs.md
    └── adr-template.md

Маркетплейс плагинов

Официальный каталог плагинов под управлением Anthropic - anthropics/claude-plugins-official; он автоматически регистрируется при первом интерактивном запуске. Администраторы корпоративных тарифов также могут создавать приватные маркетплейсы плагинов для внутреннего распространения.

Существует и маркетплейс сообщества - anthropics/claude-plugins-community, где размещаются сторонние плагины, прошедшие автоматическую проверку и аудит безопасности со стороны Anthropic; в каталоге каждый из них закреплён за конкретным commit SHA. В отличие от официального маркетплейса, этот нужно добавлять вручную:

bash
/plugin marketplace add anthropics/claude-plugins-community

# Then install from it using the claude-community marketplace name
/plugin install <plugin-name>@claude-community
graph TB A["Plugin Marketplace"] B["Official<br/>anthropics/claude-plugins-official"] C["Community<br/>Marketplace"] D["Enterprise<br/>Private Registry"] A --> B A --> C A --> D B -->|Categories| B1["Development"] B -->|Categories| B2["DevOps"] B -->|Categories| B3["Documentation"] C -->|Search| C1["DevOps Automation"] C -->|Search| C2["Mobile Dev"] C -->|Search| C3["Data Science"] D -->|Internal| D1["Company Standards"] D -->|Internal| D2["Legacy Systems"] D -->|Internal| D3["Compliance"] style A fill:#e1f5fe,stroke:#333,color:#333 style B fill:#e8f5e9,stroke:#333,color:#333 style C fill:#f3e5f5,stroke:#333,color:#333 style D fill:#fff3e0,stroke:#333,color:#333

Настройка Marketplace

Корпоративные и продвинутые пользователи могут управлять поведением marketplace через настройки:

SettingDescription
extraKnownMarketplacesAdd additional marketplace sources beyond the defaults
strictKnownMarketplacesControl which marketplaces users are allowed to add (managed-only)
blockedMarketplacesAdmin-managed blocklist of marketplaces (supports hostPattern / pathPattern regex fields since v2.1.119)
deniedPluginsAdmin-managed blocklist to prevent specific plugins from being installed

Принудительное применение (v2.1.117+): blockedMarketplaces и strictKnownMarketplaces применяются при каждом событии жизненного цикла плагина - install, update, refresh и autoupdate, - а не только при первом добавлении. strictKnownMarketplaces доступен только в managed-режиме.

Пример blockedMarketplaces с regex по host/path (v2.1.119):

json
{
  "blockedMarketplaces": [
    {
      "hostPattern": "^evil\\.example\\.com$",
      "pathPattern": "^/marketplaces/.*"
    }
  ]
}

Дополнительные возможности маркетплейса

  • Строка поиска по маркетплейсу (v2.1.172): при просмотре плагинов маркетплейса в /plugin строка поиска позволяет фильтровать плагины по названию или ключевому слову - удобно для крупных маркетплейсов, где прокручивать весь список долго.
  • Тайм-аут git по умолчанию: увеличен с 30 до 120 секунд для крупных репозиториев плагинов.
  • Пользовательские npm-реестры: плагины могут указывать собственные URL npm-реестров для разрешения зависимостей.
  • Закрепление версий: фиксация плагинов на конкретных версиях для воспроизводимых окружений.
  • Прогноз стоимости контекста в панели обзора (v2.1.143): обозреватель маркетплейса /plugin показывает для каждого плагина прогнозируемую стоимость контекста в токенах за один ход - сумму всегда загружаемых skills, hooks и дескрипторов MCP-серверов. Это помогает оценить последствия установки плагина заранее. Тот же прогноз доступен после установки через claude plugin details <name>.

Пример строки в обзоре со столбцом стоимости:

text
NAME              VERSION   AUTHOR     CTX/TURN   DESCRIPTION
code-reviewer     1.2.0     anthropic  +1,420     Multi-agent PR review
devops-toolkit    0.4.1     acme       +3,180     SRE playbooks, on-call helpers
docs-helper       0.9.0     community  +610       Doc-style guide enforcement

Схема определения marketplace

Marketplace'ы плагинов описываются в файле .claude-plugin/marketplace.json:

json
{
  "name": "my-team-plugins",
  "owner": "my-org",
  "plugins": [
    {
      "name": "code-standards",
      "source": "./plugins/code-standards",
      "description": "Enforce team coding standards",
      "version": "1.2.0",
      "author": "platform-team"
    },
    {
      "name": "deploy-helper",
      "source": {
        "source": "github",
        "repo": "my-org/deploy-helper",
        "ref": "v2.0.0"
      },
      "description": "Deployment automation workflows"
    }
  ]
}
FieldRequiredDescription
nameYesMarketplace name in kebab-case
ownerYesOrganization or user who maintains the marketplace
pluginsYesArray of plugin entries
plugins[].nameYesPlugin name (kebab-case)
plugins[].sourceYesPlugin source (path string or source object)
plugins[].descriptionNoBrief plugin description
plugins[].versionNoSemantic version string
plugins[].authorNoPlugin author name
plugins[].renamesNoMaps a former plugin name to its current name (or null if removed) so users migrate automatically (v2.1.193)
plugins[].displayNameNoHuman-readable name shown in the UI; not used for lookup (v2.1.143)
plugins[].defaultEnabledNoIf false, the plugin installs disabled until the user opts in (v2.1.154)

Типы источников плагинов

Плагины можно получать из нескольких источников:

SourceSyntaxExample
Relative pathString path"./plugins/my-plugin"
GitHub{ "source": "github", "repo": "owner/repo" }{ "source": "github", "repo": "acme/lint-plugin", "ref": "v1.0" }
Git URL{ "source": "url", "url": "..." }{ "source": "url", "url": "https://git.internal/plugin.git" }
Git subdirectory{ "source": "git-subdir", "url": "...", "path": "..." }{ "source": "git-subdir", "url": "https://github.com/org/monorepo.git", "path": "packages/plugin" }
npm{ "source": "npm", "package": "..." }{ "source": "npm", "package": "@acme/claude-plugin", "version": "^2.0" }
pip{ "source": "pip", "package": "..." }{ "source": "pip", "package": "claude-data-plugin", "version": ">=1.0" }
Источники GitHub и git поддерживают опциональные поля ref (ветка/тег) и sha (хеш коммита) для фиксации версии.

В список зарезервированных имён marketplace теперь входят first-party-plugins и healthcare (v2.1.205) - они закреплены за официальным использованием и не могут быть заняты пользовательским marketplace.

Способы распространения

GitHub (рекомендуется):

bash
# Users add your marketplace
/plugin marketplace add owner/repo-name

Другие git-сервисы (требуется полный URL):

bash
/plugin marketplace add https://gitlab.com/org/marketplace-repo.git

Приватные репозитории: поддерживаются через git credential helpers или токены в переменных окружения. У пользователей должен быть доступ на чтение к репозиторию.

Публикация в официальном маркетплейсе: отправляйте плагины в модерируемый Anthropic маркетплейс для более широкого распространения через claude.ai/settings/plugins/submit или platform.claude.com/plugins/submit.

Управление маркетплейсами

bash
# Marketplace CLI commands
claude plugin marketplace add <source>       # Add marketplace (GitHub, URL, local)
claude plugin marketplace update [name]      # Refresh catalog index
claude plugin marketplace remove <name>      # Remove marketplace
claude plugin marketplace list               # List configured marketplaces

Важно: команда marketplace update обновляет только каталог плагинов (список доступных для установки). Она НЕ обновляет уже установленные плагины. Чтобы обновить конкретный установленный плагин, используйте plugin update <name>.

Строгий режим

Определяет, как описания плагинов из marketplace взаимодействуют с локальными файлами plugin.json:

SettingBehavior
strict: true (default)Local plugin.json is authoritative; marketplace entry supplements it
strict: falseMarketplace entry is the entire plugin definition
Ограничения на уровне организации с strictKnownMarketplaces:
ValueEffect
---------------
Not setNo restrictions - users can add any marketplace
Empty array []Lockdown - no marketplaces allowed
Array of patternsAllowlist - only matching marketplaces can be added
json
{
  "strictKnownMarketplaces": [
    "my-org/*",
    "github.com/trusted-vendor/*"
  ]
}

Внимание: в строгом режиме с strictKnownMarketplaces пользователи могут устанавливать плагины только из маркетплейсов, включённых в allowlist. Это удобно в корпоративных средах, где требуется контролируемое распространение плагинов.

Установка и жизненный цикл плагинов

graph LR A["Discover"] -->|Browse| B["Marketplace"] B -->|Select| C["Plugin Page"] C -->|View| D["Components"] D -->|Install| E["/plugin install"] E -->|Extract| F["Configure"] F -->|Activate| G["Use"] G -->|Check| H["Update"] H -->|Available| G G -->|Done| I["Disable"] I -->|Later| J["Enable"] J -->|Back| G

Сравнение возможностей плагинов

FeatureSlash CommandSkillSubagentPlugin
InstallationManual copyManual copyManual configOne command
Setup Time5 minutes10 minutes15 minutes2 minutes
BundlingSingle fileSingle fileSingle fileMultiple
VersioningManualManualManualAutomatic
Team SharingCopy fileCopy fileCopy fileInstall ID
UpdatesManualManualManualAuto-available
DependenciesNoneNoneNoneMay include
MarketplaceNoNoNoYes
DistributionRepositoryRepositoryRepositoryMarketplace

CLI-команды для плагинов

Все операции с плагинами доступны в виде CLI-команд:

bash
claude plugin install <name>@<marketplace>   # Install from a marketplace
claude plugin uninstall <name>               # Remove a plugin
claude plugin update <name>                  # Update installed plugin to latest version
claude plugin list                           # List installed plugins
claude plugin enable <name>                  # Enable a disabled plugin
claude plugin disable <name>                 # Disable a plugin
claude plugin validate                       # Validate plugin structure
claude plugin tag <version>                  # Create a release git tag with version validation (v2.1.118+)
claude plugin prune                          # Remove orphaned auto-installed plugin dependencies (v2.1.121+)
claude plugin uninstall <name> --prune       # Uninstall and cascade-clean orphaned dependencies (v2.1.121+)
claude plugin details <name>                 # Show inventory + projected per-turn token cost (v2.1.139+)

Пример: claude plugin tag v0.3.0 проверяет формат версии, создаёт соответствующий git-тег и является рекомендуемым способом выпуска релизов плагина для распространения.

claude plugin prune полезен после установки или удаления плагинов из marketplace, которые притянули собственные зависимости, - он удаляет все автоматически установленные плагины, родительский плагин которых уже был удалён. plugin uninstall --prune выполняет тот же каскад за один шаг.

Контроль зависимостей (v2.1.143): claude plugin disable <name> завершится с ошибкой, если от целевого плагина всё ещё зависит другой включённый плагин (это нарушило бы граф зависимостей). claude plugin enable <name> принудительно включает транзитивные зависимости после одного запроса подтверждения, вместо того чтобы требовать отдельного включения для каждой. Используйте claude plugin prune, чтобы вычистить зависимости, зависимые от которых плагины были впоследствии удалены.

claude plugin details <name> (v2.1.139+)

claude plugin details <name> выводит полный перечень компонентов плагина - skills, hooks, MCP servers, LSP servers, background monitors, slash commands - а также прогнозируемую стоимость в токенах на один ход (и на один вызов). Используйте команду, чтобы оценить «вес» плагина перед его внедрением, особенно на моделях с ограниченным контекстом.

Пример вывода (сокращённо):

text
plugin: code-reviewer (1.2.0)
skills:        3      hooks: 2      mcp: 1      lsp: 0      monitors: 0
commands:      /review, /security-review
projected ctx: +1,420 tokens per turn  ·  +9,800 tokens per /review invocation

LSP-серверы были добавлены в панель сведений в версии v2.1.142. См. также прогнозируемую стоимость контекста в панели обзора маркетплейса (v2.1.143), описанную в разделе Plugin Marketplace.

Способы установки

Из маркетплейса

bash
/plugin install plugin-name
# or from CLI:
claude plugin install plugin-name@marketplace-name

Включение / отключение (с автоопределением области действия)

bash
/plugin enable plugin-name
/plugin disable plugin-name

Интерфейс /plugin отображает неиспользуемые плагины, чтобы их можно было удалить (v2.1.187+). Включение и отключение также работают, если поле name в plugin.json плагина отличается от имени соответствующей записи в маркетплейсе (v2.1.195+).

Просмотр установленных плагинов (v2.1.163)

Проверьте, какие плагины активны в текущей сессии:

bash
/plugin list             # all installed plugins
/plugin list --enabled   # only enabled plugins
/plugin list --disabled  # only disabled plugins

Локальный плагин (для разработки)

bash
# CLI flag for local testing (repeatable for multiple plugins)
claude --plugin-dir ./path/to/plugin
claude --plugin-dir ./plugin-a --plugin-dir ./plugin-b

# --plugin-dir also accepts a .zip archive path (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# Fetch a plugin .zip archive from a URL for the current session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Из Git-репозитория

bash
/plugin install github:username/repo

Автообновление

Claude Code может автоматически обновлять маркетплейсы и установленные из них плагины при запуске.

Marketplace TypeAuto-Update DefaultHow to Toggle
Official (claude-plugins-official)✅ Enabled/plugin → Marketplaces → Select
Third-party / Local❌ DisabledSame UI path
При запуске автообновления Claude Code:
  1. Обновляет каталог marketplace
  2. Обновляет установленные плагины до последних версий
  3. Показывает уведомление с предложением выполнить /reload-plugins

Переменные окружения

VariableEffect
DISABLE_AUTOUPDATER=1Disable all auto-updates (Claude Code + plugins)
DISABLE_AUTOUPDATER=1 + FORCE_AUTOUPDATE_PLUGINS=1Keep plugin updates, disable Claude Code updates
CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1(v2.1.141+) Force claude plugin install to clone GitHub plugin sources over HTTPS instead of SSH, even when an SSH remote is available. Use in CI runners or containers without SSH keys.
bash
# Disable all auto-updates
export DISABLE_AUTOUPDATER=1

# Keep plugin auto-updates only
export DISABLE_AUTOUPDATER=1
export FORCE_AUTOUPDATE_PLUGINS=1

# CI runner without SSH keys - force HTTPS for plugin installs
export CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1
claude plugin install code-reviewer@anthropic

Загрузка плагинов в удалённых сессиях (v2.1.179): В версии v2.1.179 улучшена производительность загрузки плагинов в удалённых сессиях, благодаря чему плагины становятся доступны быстрее при подключении.

Когда создавать плагин

graph TD A["Should I create a plugin?"] A -->|Need multiple components| B{"Multiple commands<br/>or subagents<br/>or MCPs?"} B -->|Yes| C["✅ Create Plugin"] B -->|No| D["Use Individual Feature"] A -->|Team workflow| E{"Share with<br/>team?"} E -->|Yes| C E -->|No| F["Keep as Local Setup"] A -->|Complex setup| G{"Needs auto<br/>configuration?"} G -->|Yes| C G -->|No| D

Сценарии использования плагинов

Use CaseRecommendationWhy
Team Onboarding✅ Use PluginInstant setup, all configurations
Framework Setup✅ Use PluginBundles framework-specific commands
Enterprise Standards✅ Use PluginCentral distribution, version control
Quick Task Automation❌ Use CommandOverkill complexity
Single Domain Expertise❌ Use SkillToo heavy, use skill instead
Specialized Analysis❌ Use SubagentCreate manually or use skill
Live Data Access❌ Use MCPStandalone, don't bundle

Тестирование плагина

Перед публикацией протестируйте плагин локально с помощью флага CLI --plugin-dir (его можно указывать несколько раз для разных плагинов):

bash
claude --plugin-dir ./my-plugin
claude --plugin-dir ./my-plugin --plugin-dir ./another-plugin

# --plugin-dir accepts .zip archives in addition to directories (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# --plugin-url fetches a plugin .zip from a URL for this session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Запускает Claude Code с загруженным плагином, что позволяет:

  • Проверить доступность всех slash-команд
  • Убедиться в корректной работе subagents и agents
  • Проверить, что MCP-серверы подключаются без ошибок
  • Проверить срабатывание hooks
  • Проверить настройки LSP-серверов
  • Выявить возможные ошибки конфигурации

Hot-Reload

Плагины поддерживают горячую перезагрузку в процессе разработки. При изменении файлов плагина Claude Code способен автоматически обнаруживать эти изменения. Также можно принудительно выполнить перезагрузку командой:

bash
/reload-plugins

Это приводит к повторному считыванию всех манифестов плагинов, команд, агентов, skills, hooks и конфигураций MCP/LSP без перезапуска сессии.

Управляемые настройки для плагинов

Администраторы могут управлять поведением плагинов в рамках всей организации с помощью управляемых настроек:

SettingDescription
enabledPluginsAllowlist of plugins that are enabled by default
deniedPluginsBlocklist of plugins that cannot be installed
extraKnownMarketplacesAdd additional marketplace sources beyond the defaults
strictKnownMarketplacesRestrict which marketplaces users are allowed to add (managed-only; enforced on every plugin lifecycle event since v2.1.117)
blockedMarketplacesBlocklist of marketplaces; enforced on every plugin lifecycle event since v2.1.117; supports hostPattern / pathPattern regex fields since v2.1.119
allowedChannelPluginsControl which plugins are permitted per release channel
Эти настройки можно применять на уровне организации через управляемые конфигурационные файлы; они имеют приоритет над настройками уровня пользователя.

Безопасность плагинов

Субагенты плагинов запускаются в изолированной песочнице (sandbox). Следующие ключи frontmatter запрещены в определениях субагентов плагинов:

  • hooks - субагенты не могут регистрировать обработчики событий
  • mcpServers - субагенты не могут настраивать MCP-серверы
  • permissionMode - субагенты не могут переопределять модель разрешений

Это гарантирует, что плагины не смогут повысить привилегии или изменить окружение хоста за пределами объявленной области действия.

Публикация плагина

Шаги публикации:

  1. Создайте структуру плагина со всеми компонентами
  2. Напишите манифест .claude-plugin/plugin.json
  3. Создайте README.md с документацией
  4. Протестируйте локально командой claude --plugin-dir ./my-plugin
  5. Пометьте релиз с помощью claude plugin tag v0.3.0 (v2.1.118+) - команда проверяет строку версии и создаёт соответствующий git-тег
  6. Отправьте плагин в marketplace
  7. Дождитесь ревью и одобрения
  8. Плагин публикуется в marketplace
  9. Пользователи могут установить его одной командой

Пример заявки на публикацию:

markdown
# PR Review Plugin

## Description
Complete PR review workflow with security, testing, and documentation checks.

## What's Included
- 3 slash commands for different review types
- 3 specialized subagents
- GitHub and CodeQL MCP integration
- Automated security scanning hooks

## Installation
```bash
Текущая дата: вторник, 4 августа 2026 г.

<query>
/plugin install pr-review
</query>

Features

✅ Security analysis ✅ Test coverage checking ✅ Documentation verification ✅ Code quality assessment ✅ Performance impact analysis

Usage

bash
Текущая дата: вторник, 4 августа 2026 г.

<query>
/review-pr
/check-security
/check-tests
</query>

Requirements

  • Claude Code 2.1+
  • GitHub access
  • CodeQL (optional)
CODE
## Plugin против ручной настройки

**Ручная настройка (2+ часа):**
- Устанавливать slash-команды по одной
- Создавать subagents по отдельности
- Настраивать MCP отдельно
- Настраивать hooks вручную
- Всё документировать
- Делиться с командой (в надежде, что они всё настроят правильно)

**С плагином (2 минуты):**
```bash
/plugin install pr-review
# ✅ Everything installed and configured
# ✅ Ready to use immediately
# ✅ Team can reproduce exact setup

Лучшие практики

Что делать ✅

  • Используйте понятные, говорящие имена плагинов
  • Пишите полноценный README
  • Соблюдайте правила версионирования (semver)
  • Тестируйте все компоненты вместе
  • Чётко документируйте требования
  • Приводите примеры использования
  • Реализуйте обработку ошибок
  • Проставляйте подходящие теги для поиска
  • Поддерживайте обратную совместимость
  • Делайте плагины сфокусированными и целостными
  • Покрывайте код тестами
  • Документируйте все зависимости

Чего не делать ❌

  • Не объединяйте в одном плагине несвязанные возможности
  • Не хардкодьте учётные данные
  • Не пренебрегайте тестированием
  • Не забывайте про документацию
  • Не плодите дублирующие плагины
  • Не игнорируйте версионирование
  • Не усложняйте зависимости между компонентами
  • Не забывайте корректно обрабатывать ошибки

Инструкции по установке

Установка из marketplace

  1. Просмотр доступных плагинов:

    bash
    /plugin list
    
  2. Просмотр информации о плагине:

    bash
    /plugin info plugin-name
    
  3. Установка плагина:

    bash
    /plugin install plugin-name
    

Установка из локального пути

bash
/plugin install ./path/to/plugin-directory

Установка из GitHub

bash
/plugin install github:username/repo

Просмотр установленных плагинов

bash
/plugin list --installed

Обновление плагина

bash
/plugin update plugin-name

Отключение/включение плагина

bash
# Temporarily disable
/plugin disable plugin-name

# Re-enable
/plugin enable plugin-name

Удаление плагина

bash
/plugin uninstall plugin-name

Связанные концепции

Следующие возможности Claude Code работают совместно с плагинами:

  • Slash Commands - отдельные команды, входящие в состав плагинов
  • Memory - постоянный контекст для плагинов
  • Skills - предметная экспертиза, которую можно упаковать в плагины
  • Subagents - специализированные агенты, подключаемые как компоненты плагина
  • MCP Servers - интеграции по протоколу Model Context Protocol в составе плагинов
  • Hooks - обработчики событий, запускающие сценарии плагинов

Полный пример рабочего процесса

Полный рабочий процесс плагина PR Review

CODE
1. User: /review-pr

2. Plugin executes:
   ├── pre-review.js hook validates git repo
   ├── GitHub MCP fetches PR data
   ├── security-reviewer subagent analyzes security
   ├── test-checker subagent verifies coverage
   └── performance-analyzer subagent checks performance

3. Results synthesized and presented:
   ✅ Security: No critical issues
   ⚠️  Testing: Coverage 65% (recommend 80%+)
   ✅ Performance: No significant impact
   📝 12 recommendations provided

Устранение неполадок

Плагин не устанавливается

  • Проверьте совместимость версии Claude Code: /version
  • Проверьте синтаксис plugin.json с помощью JSON-валидатора
  • Проверьте подключение к интернету (для удалённых плагинов)
  • Проверьте права доступа: ls -la plugin/

Компоненты не загружаются

  • Убедитесь, что пути в plugin.json соответствуют фактической структуре каталогов
  • Проверьте права доступа к файлам: chmod +x scripts/
  • Проверьте синтаксис файлов компонентов
  • Посмотрите логи: /plugin debug plugin-name

Не удаётся подключиться к MCP

  • Убедитесь, что переменные окружения заданы корректно
  • Проверьте, установлен ли MCP server и работает ли он корректно
  • Протестируйте подключение к MCP отдельно с помощью /mcp test
  • Проверьте конфигурацию MCP в каталоге mcp/

Команды недоступны после установки

  • Убедитесь, что плагин успешно установлен: /plugin list --installed
  • Проверьте, включён ли плагин: /plugin status plugin-name
  • Перезапустите Claude Code: выполните exit и откройте заново
  • Проверьте, нет ли конфликтов имён с уже существующими командами

Проблемы с выполнением hook’ов

  • Убедитесь, что у файлов hook’ов выставлены корректные права доступа
  • Проверьте синтаксис hook’ов и имена событий
  • Изучите логи hook’ов для подробностей об ошибках
  • По возможности протестируйте hook’и вручную

Дополнительные ресурсы


Последнее обновление: 4 августа 2026 г. Версия Claude Code: 2.1.220 Источники:

ЛОКАЛЬНАЯ ОТМЕТКА · БЕЗ ПРОВЕРКИ
cc-learnМОДУЛЬ 07
МОДУЛЬ 07/УРОК

Плагины

Плагины Claude Code

В этой папке собраны законченные примеры плагинов, которые объединяют несколько возможностей Claude Code в цельные, готовые к установке пакеты.

Обзор

Плагины Claude Code - это готовые наборы настроек (slash commands, subagents, MCP-серверы и hooks), устанавливаемые одной командой. Это механизм расширения самого высокого уровня: он объединяет несколько возможностей в единые пакеты, которыми удобно делиться.

Архитектура плагина

graph TB A["Plugin"] B["Slash Commands"] C["Subagents"] D["MCP Servers"] E["Hooks"] F["Configuration"] A -->|bundles| B A -->|bundles| C A -->|bundles| D A -->|bundles| E A -->|bundles| F

Процесс загрузки плагинов

sequenceDiagram participant User participant Claude as Claude Code participant Plugin as Plugin Marketplace participant Install as Installation participant SlashCmds as Slash Commands participant Subagents participant MCPServers as MCP Servers participant Hooks participant Tools as Configured Tools User->>Claude: /plugin install pr-review Claude->>Plugin: Download plugin manifest Plugin-->>Claude: Return plugin definition Claude->>Install: Extract components Install->>SlashCmds: Configure Install->>Subagents: Configure Install->>MCPServers: Configure Install->>Hooks: Configure SlashCmds-->>Tools: Ready to use Subagents-->>Tools: Ready to use MCPServers-->>Tools: Ready to use Hooks-->>Tools: Ready to use Tools-->>Claude: Plugin installed ✅

Маркетплейс не требуется (v2.1.157+): плагины, размещённые в директориях .claude/skills, теперь автоматически загружаются без маркетплейса. Создайте каркас нового плагина командой claude plugin init <name>.

Типы плагинов и распространение

TypeScopeSharedAuthorityExamples
OfficialGlobalAll usersAnthropicPR Review, Security Guidance
CommunityPublicAll usersCommunityDevOps, Data Science
OrganizationInternalTeam membersCompanyInternal standards, tools
PersonalIndividualSingle userDeveloperCustom workflows

Структура манифеста плагина

Манифест плагина оформляется в формате JSON в файле .claude-plugin/plugin.json:

json
{
  "name": "my-first-plugin",
  "description": "A greeting plugin",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  },
  "homepage": "https://example.com",
  "repository": "https://github.com/user/repo",
  "license": "MIT"
}

Пример структуры плагина

CODE
my-plugin/
├── .claude-plugin/
│   └── plugin.json       # Manifest (name, description, version, author)
├── commands/             # Skills as Markdown files
│   ├── task-1.md
│   ├── task-2.md
│   └── workflows/
├── agents/               # Custom agent definitions
│   ├── specialist-1.md
│   ├── specialist-2.md
│   └── configs/
├── skills/               # Agent Skills with SKILL.md files
│   ├── skill-1.md
│   └── skill-2.md
├── hooks/                # Event handlers in hooks.json
│   └── hooks.json
├── .mcp.json             # MCP server configurations
├── .lsp.json             # LSP server configurations for code intelligence
├── bin/                  # Executables added to Bash tool's PATH while plugin is enabled
├── settings.json         # Default settings applied when plugin is enabled (currently only `agent` key supported)
├── themes/               # Optional: ship custom Claude Code themes (v2.1.118+)
├── templates/
│   └── issue-template.md
├── scripts/
│   ├── helper-1.sh
│   └── helper-2.py
├── docs/
│   ├── README.md
│   └── USAGE.md
└── tests/
    └── plugin.test.js

Настройка LSP-сервера

Плагины могут включать поддержку Language Server Protocol (LSP) для интеллектуального анализа кода в реальном времени. LSP-серверы предоставляют диагностику, навигацию по коду и информацию о символах прямо во время работы.

Где размещается конфигурация:

  • файл .lsp.json в корневом каталоге плагина
  • встроенный ключ lsp в plugin.json

Описание полей

FieldRequiredDescription
commandYesLSP server binary (must be in PATH)
extensionToLanguageYesMaps file extensions to language IDs
argsNoCommand-line arguments for the server
transportNoCommunication method: stdio (default) or socket
envNoEnvironment variables for the server process
initializationOptionsNoOptions sent during LSP initialization
settingsNoWorkspace configuration passed to the server
workspaceFolderNoOverride the workspace folder path
startupTimeoutNoMaximum time (ms) to wait for server startup
shutdownTimeoutNoMaximum time (ms) for graceful shutdown
restartOnCrashNoAutomatically restart if the server crashes
maxRestartsNoMaximum restart attempts before giving up

Примеры конфигураций

Go (gopls):

json
{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}

Python (pyright):

json
{
  "python": {
    "command": "pyright-langserver",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".py": "python",
      ".pyi": "python"
    }
  }
}

TypeScript:

json
{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescriptreact",
      ".js": "javascript",
      ".jsx": "javascriptreact"
    }
  }
}

Доступные LSP-плагины

В официальном marketplace доступны преднастроенные LSP-плагины:

PluginLanguageServer BinaryInstall Command
pyright-lspPythonpyright-langserverpip install pyright
typescript-lspTypeScript/JavaScripttypescript-language-servernpm install -g typescript-language-server typescript
rust-lspRustrust-analyzerInstall via rustup component add rust-analyzer

Возможности LSP

После настройки LSP-серверы предоставляют:

  • Мгновенную диагностику - ошибки и предупреждения появляются сразу после правок
  • Навигацию по коду - переход к определению, поиск ссылок и реализаций
  • Всплывающие подсказки - сигнатуры типов и документация при наведении
  • Список символов - просмотр символов в текущем файле или во всём workspace

Каталог bin/ в PATH

При включении плагина его каталог bin/ добавляется в начало PATH сессии. Любой поставляемый там исполняемый файл можно вызвать напрямую из инструмента Bash по имени - указывать полный путь не требуется.

bash
# In a plugin layout:
my-plugin/
├── plugin.json
└── bin/
    └── my-tool          # executable file (chmod +x)

# Inside a Claude Code session with the plugin enabled:
$ my-tool --help

Используйте это для вспомогательных CLI-утилит, которые hooks, skills или команды внутри того же плагина будут вызывать через shell. Пометьте файлы как исполняемые в репозитории плагина (chmod +x) - git сохраняет этот флаг.

Настройки плагина (v2.1.83+)

Плагины могут объявлять в манифесте настраиваемые пользователем параметры через userConfig. Значения, помеченные как sensitive: true, хранятся в системном keychain, а не в открытом виде в файлах настроек:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "userConfig": {
    "apiKey": {
      "description": "API key for the service",
      "sensitive": true
    },
    "region": {
      "description": "Deployment region",
      "default": "us-east-1"
    }
  }
}

Постоянные данные плагина (${CLAUDE_PLUGIN_DATA}) (v2.1.78+)

Плагины имеют доступ к каталогу для хранения постоянного состояния через переменную окружения ${CLAUDE_PLUGIN_DATA}. Этот каталог уникален для каждого плагина и сохраняется между сессиями, что делает его пригодным для кешей, баз данных и иных постоянных данных:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "command": "node ${CLAUDE_PLUGIN_DATA}/track-usage.js"
      }
    ]
  }
}

Каталог создаётся автоматически при установке плагина. Файлы, размещённые в нём, сохраняются до удаления плагина.

Фоновые мониторы (v2.1.105)

Плагины могут регистрировать фоновые мониторы, которые автоматически включаются при старте сессии или при вызове skill плагина. Добавьте в манифест плагина ключ верхнего уровня monitors:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "monitors": [
    {
      "command": "tail -f /var/log/app.log",
      "trigger": "session_start"
    }
  ]
}

Поле trigger принимает:

  • &quot;session_start&quot; - активирует монитор автоматически при старте сессии
  • &quot;skill_invoke&quot; - активирует монитор при вызове skill плагина

Под капотом мониторы используют тот же инструмент Monitor, передавая строки stdout как события, на которые Claude может реагировать.

Встроенный плагин через настройки (source: &#39;settings&#39;) (v2.1.80+)

Плагины можно объявлять прямо в файлах настроек как записи marketplace, используя поле source: &#39;settings&#39;. Это позволяет встроить определение плагина напрямую, без отдельного репозитория или marketplace:

json
{
  "pluginMarketplaces": [
    {
      "name": "inline-tools",
      "source": "settings",
      "plugins": [
        {
          "name": "quick-lint",
          "source": "./local-plugins/quick-lint"
        }
      ]
    }
  ]
}

Настройки плагина

Плагины могут поставляться с файлом settings.json, задающим конфигурацию по умолчанию. На данный момент поддерживается ключ agent, который указывает агента основного потока для плагина:

json
{
  "agent": "agents/specialist-1.md"
}

Если плагин содержит settings.json, его значения по умолчанию применяются при установке. Пользователи могут переопределить эти настройки в конфигурации своего проекта или в пользовательской конфигурации.

Автономный подход vs подход с плагином

ApproachCommand NamesConfigurationBest For
Standalone/helloManual setup in CLAUDE.mdPersonal, project-specific
Plugins/plugin-name:helloAutomated via plugin.jsonSharing, distribution, team use
Используйте отдельные slash commands для быстрых личных сценариев. Используйте плагины, когда нужно объединить несколько возможностей, поделиться с командой или опубликовать для распространения.

Вызов через пробел (v2.1.136+): slash commands плагина также работают с пробелом - /myplugin review разрешается в канонический /myplugin:review. Обе формы допустимы; форма с двоеточием считается канонической и рекомендуется в скриптах.

Обнаружение skills/ (v2.1.136+): наличие поля skills в plugin.json больше не скрывает стандартную директорию skills/ плагина. Skills, объявленные в обоих местах, объединяются, так что в plugin.json можно перечислить лишь несколько ключевых, не теряя остальные.

Плагины с SKILL.md в корне (v2.1.142+): плагин, у которого есть SKILL.md на верхнем уровне и нет поддиректории skills/, сам представляется как один skill - плагин является skill'ом. Это дополнительный вариант, а не замена директории skills/ или поля skills в plugin.json; используйте его для небольших плагинов с одним skill, где отдельная структура каталогов не даёт никаких преимуществ.

Практические примеры

Пример 1: плагин для ревью PR

Файл: .claude-plugin/plugin.json

json
{
  "name": "pr-review",
  "version": "1.0.0",
  "description": "Complete PR review workflow with security, testing, and docs",
  "author": {
    "name": "Anthropic"
  },
  "repository": "https://github.com/your-org/pr-review",
  "license": "MIT"
}

Файл: commands/review-pr.md

markdown
---
name: Review PR
description: Start comprehensive PR review with security and testing checks
---

# PR Review

This command initiates a complete pull request review including:

1. Security analysis
2. Test coverage verification
3. Documentation updates
4. Code quality checks
5. Performance impact assessment

Файл: agents/security-reviewer.md

yaml
---
name: security-reviewer
description: Security-focused code review
tools: Read, Grep, Bash
---

# Security Reviewer

Specializes in finding security vulnerabilities:
- Authentication/authorization issues
- Data exposure
- Injection attacks
- Secure configuration

Установка:

bash
/plugin install pr-review

# Result:
# ✅ 3 slash commands installed
# ✅ 3 subagents configured
# ✅ 2 MCP servers connected
# ✅ 4 hooks registered
# ✅ Ready to use!

Пример 2: DevOps-плагин

Компоненты:

CODE
devops-automation/
├── commands/
│   ├── deploy.md
│   ├── rollback.md
│   ├── status.md
│   └── incident.md
├── agents/
│   ├── deployment-specialist.md
│   ├── incident-commander.md
│   └── alert-analyzer.md
├── mcp/
│   ├── github-config.json
│   ├── kubernetes-config.json
│   └── prometheus-config.json
├── hooks/
│   ├── pre-deploy.js
│   ├── post-deploy.js
│   └── on-error.js
└── scripts/
    ├── deploy.sh
    ├── rollback.sh
    └── health-check.sh

Пример 3: Плагин для документации

Входящие в комплект компоненты:

CODE
documentation/
├── commands/
│   ├── generate-api-docs.md
│   ├── generate-readme.md
│   ├── sync-docs.md
│   └── validate-docs.md
├── agents/
│   ├── api-documenter.md
│   ├── code-commentator.md
│   └── example-generator.md
├── mcp/
│   ├── github-docs-config.json
│   └── slack-announce-config.json
└── templates/
    ├── api-endpoint.md
    ├── function-docs.md
    └── adr-template.md

Маркетплейс плагинов

Официальный каталог плагинов под управлением Anthropic - anthropics/claude-plugins-official; он автоматически регистрируется при первом интерактивном запуске. Администраторы корпоративных тарифов также могут создавать приватные маркетплейсы плагинов для внутреннего распространения.

Существует и маркетплейс сообщества - anthropics/claude-plugins-community, где размещаются сторонние плагины, прошедшие автоматическую проверку и аудит безопасности со стороны Anthropic; в каталоге каждый из них закреплён за конкретным commit SHA. В отличие от официального маркетплейса, этот нужно добавлять вручную:

bash
/plugin marketplace add anthropics/claude-plugins-community

# Then install from it using the claude-community marketplace name
/plugin install <plugin-name>@claude-community
graph TB A["Plugin Marketplace"] B["Official<br/>anthropics/claude-plugins-official"] C["Community<br/>Marketplace"] D["Enterprise<br/>Private Registry"] A --> B A --> C A --> D B -->|Categories| B1["Development"] B -->|Categories| B2["DevOps"] B -->|Categories| B3["Documentation"] C -->|Search| C1["DevOps Automation"] C -->|Search| C2["Mobile Dev"] C -->|Search| C3["Data Science"] D -->|Internal| D1["Company Standards"] D -->|Internal| D2["Legacy Systems"] D -->|Internal| D3["Compliance"] style A fill:#e1f5fe,stroke:#333,color:#333 style B fill:#e8f5e9,stroke:#333,color:#333 style C fill:#f3e5f5,stroke:#333,color:#333 style D fill:#fff3e0,stroke:#333,color:#333

Настройка Marketplace

Корпоративные и продвинутые пользователи могут управлять поведением marketplace через настройки:

SettingDescription
extraKnownMarketplacesAdd additional marketplace sources beyond the defaults
strictKnownMarketplacesControl which marketplaces users are allowed to add (managed-only)
blockedMarketplacesAdmin-managed blocklist of marketplaces (supports hostPattern / pathPattern regex fields since v2.1.119)
deniedPluginsAdmin-managed blocklist to prevent specific plugins from being installed

Принудительное применение (v2.1.117+): blockedMarketplaces и strictKnownMarketplaces применяются при каждом событии жизненного цикла плагина - install, update, refresh и autoupdate, - а не только при первом добавлении. strictKnownMarketplaces доступен только в managed-режиме.

Пример blockedMarketplaces с regex по host/path (v2.1.119):

json
{
  "blockedMarketplaces": [
    {
      "hostPattern": "^evil\\.example\\.com$",
      "pathPattern": "^/marketplaces/.*"
    }
  ]
}

Дополнительные возможности маркетплейса

  • Строка поиска по маркетплейсу (v2.1.172): при просмотре плагинов маркетплейса в /plugin строка поиска позволяет фильтровать плагины по названию или ключевому слову - удобно для крупных маркетплейсов, где прокручивать весь список долго.
  • Тайм-аут git по умолчанию: увеличен с 30 до 120 секунд для крупных репозиториев плагинов.
  • Пользовательские npm-реестры: плагины могут указывать собственные URL npm-реестров для разрешения зависимостей.
  • Закрепление версий: фиксация плагинов на конкретных версиях для воспроизводимых окружений.
  • Прогноз стоимости контекста в панели обзора (v2.1.143): обозреватель маркетплейса /plugin показывает для каждого плагина прогнозируемую стоимость контекста в токенах за один ход - сумму всегда загружаемых skills, hooks и дескрипторов MCP-серверов. Это помогает оценить последствия установки плагина заранее. Тот же прогноз доступен после установки через claude plugin details <name>.

Пример строки в обзоре со столбцом стоимости:

text
NAME              VERSION   AUTHOR     CTX/TURN   DESCRIPTION
code-reviewer     1.2.0     anthropic  +1,420     Multi-agent PR review
devops-toolkit    0.4.1     acme       +3,180     SRE playbooks, on-call helpers
docs-helper       0.9.0     community  +610       Doc-style guide enforcement

Схема определения marketplace

Marketplace'ы плагинов описываются в файле .claude-plugin/marketplace.json:

json
{
  "name": "my-team-plugins",
  "owner": "my-org",
  "plugins": [
    {
      "name": "code-standards",
      "source": "./plugins/code-standards",
      "description": "Enforce team coding standards",
      "version": "1.2.0",
      "author": "platform-team"
    },
    {
      "name": "deploy-helper",
      "source": {
        "source": "github",
        "repo": "my-org/deploy-helper",
        "ref": "v2.0.0"
      },
      "description": "Deployment automation workflows"
    }
  ]
}
FieldRequiredDescription
nameYesMarketplace name in kebab-case
ownerYesOrganization or user who maintains the marketplace
pluginsYesArray of plugin entries
plugins[].nameYesPlugin name (kebab-case)
plugins[].sourceYesPlugin source (path string or source object)
plugins[].descriptionNoBrief plugin description
plugins[].versionNoSemantic version string
plugins[].authorNoPlugin author name
plugins[].renamesNoMaps a former plugin name to its current name (or null if removed) so users migrate automatically (v2.1.193)
plugins[].displayNameNoHuman-readable name shown in the UI; not used for lookup (v2.1.143)
plugins[].defaultEnabledNoIf false, the plugin installs disabled until the user opts in (v2.1.154)

Типы источников плагинов

Плагины можно получать из нескольких источников:

SourceSyntaxExample
Relative pathString path"./plugins/my-plugin"
GitHub{ "source": "github", "repo": "owner/repo" }{ "source": "github", "repo": "acme/lint-plugin", "ref": "v1.0" }
Git URL{ "source": "url", "url": "..." }{ "source": "url", "url": "https://git.internal/plugin.git" }
Git subdirectory{ "source": "git-subdir", "url": "...", "path": "..." }{ "source": "git-subdir", "url": "https://github.com/org/monorepo.git", "path": "packages/plugin" }
npm{ "source": "npm", "package": "..." }{ "source": "npm", "package": "@acme/claude-plugin", "version": "^2.0" }
pip{ "source": "pip", "package": "..." }{ "source": "pip", "package": "claude-data-plugin", "version": ">=1.0" }
Источники GitHub и git поддерживают опциональные поля ref (ветка/тег) и sha (хеш коммита) для фиксации версии.

В список зарезервированных имён marketplace теперь входят first-party-plugins и healthcare (v2.1.205) - они закреплены за официальным использованием и не могут быть заняты пользовательским marketplace.

Способы распространения

GitHub (рекомендуется):

bash
# Users add your marketplace
/plugin marketplace add owner/repo-name

Другие git-сервисы (требуется полный URL):

bash
/plugin marketplace add https://gitlab.com/org/marketplace-repo.git

Приватные репозитории: поддерживаются через git credential helpers или токены в переменных окружения. У пользователей должен быть доступ на чтение к репозиторию.

Публикация в официальном маркетплейсе: отправляйте плагины в модерируемый Anthropic маркетплейс для более широкого распространения через claude.ai/settings/plugins/submit или platform.claude.com/plugins/submit.

Управление маркетплейсами

bash
# Marketplace CLI commands
claude plugin marketplace add <source>       # Add marketplace (GitHub, URL, local)
claude plugin marketplace update [name]      # Refresh catalog index
claude plugin marketplace remove <name>      # Remove marketplace
claude plugin marketplace list               # List configured marketplaces

Важно: команда marketplace update обновляет только каталог плагинов (список доступных для установки). Она НЕ обновляет уже установленные плагины. Чтобы обновить конкретный установленный плагин, используйте plugin update <name>.

Строгий режим

Определяет, как описания плагинов из marketplace взаимодействуют с локальными файлами plugin.json:

SettingBehavior
strict: true (default)Local plugin.json is authoritative; marketplace entry supplements it
strict: falseMarketplace entry is the entire plugin definition
Ограничения на уровне организации с strictKnownMarketplaces:
ValueEffect
---------------
Not setNo restrictions - users can add any marketplace
Empty array []Lockdown - no marketplaces allowed
Array of patternsAllowlist - only matching marketplaces can be added
json
{
  "strictKnownMarketplaces": [
    "my-org/*",
    "github.com/trusted-vendor/*"
  ]
}

Внимание: в строгом режиме с strictKnownMarketplaces пользователи могут устанавливать плагины только из маркетплейсов, включённых в allowlist. Это удобно в корпоративных средах, где требуется контролируемое распространение плагинов.

Установка и жизненный цикл плагинов

graph LR A["Discover"] -->|Browse| B["Marketplace"] B -->|Select| C["Plugin Page"] C -->|View| D["Components"] D -->|Install| E["/plugin install"] E -->|Extract| F["Configure"] F -->|Activate| G["Use"] G -->|Check| H["Update"] H -->|Available| G G -->|Done| I["Disable"] I -->|Later| J["Enable"] J -->|Back| G

Сравнение возможностей плагинов

FeatureSlash CommandSkillSubagentPlugin
InstallationManual copyManual copyManual configOne command
Setup Time5 minutes10 minutes15 minutes2 minutes
BundlingSingle fileSingle fileSingle fileMultiple
VersioningManualManualManualAutomatic
Team SharingCopy fileCopy fileCopy fileInstall ID
UpdatesManualManualManualAuto-available
DependenciesNoneNoneNoneMay include
MarketplaceNoNoNoYes
DistributionRepositoryRepositoryRepositoryMarketplace

CLI-команды для плагинов

Все операции с плагинами доступны в виде CLI-команд:

bash
claude plugin install <name>@<marketplace>   # Install from a marketplace
claude plugin uninstall <name>               # Remove a plugin
claude plugin update <name>                  # Update installed plugin to latest version
claude plugin list                           # List installed plugins
claude plugin enable <name>                  # Enable a disabled plugin
claude plugin disable <name>                 # Disable a plugin
claude plugin validate                       # Validate plugin structure
claude plugin tag <version>                  # Create a release git tag with version validation (v2.1.118+)
claude plugin prune                          # Remove orphaned auto-installed plugin dependencies (v2.1.121+)
claude plugin uninstall <name> --prune       # Uninstall and cascade-clean orphaned dependencies (v2.1.121+)
claude plugin details <name>                 # Show inventory + projected per-turn token cost (v2.1.139+)

Пример: claude plugin tag v0.3.0 проверяет формат версии, создаёт соответствующий git-тег и является рекомендуемым способом выпуска релизов плагина для распространения.

claude plugin prune полезен после установки или удаления плагинов из marketplace, которые притянули собственные зависимости, - он удаляет все автоматически установленные плагины, родительский плагин которых уже был удалён. plugin uninstall --prune выполняет тот же каскад за один шаг.

Контроль зависимостей (v2.1.143): claude plugin disable <name> завершится с ошибкой, если от целевого плагина всё ещё зависит другой включённый плагин (это нарушило бы граф зависимостей). claude plugin enable <name> принудительно включает транзитивные зависимости после одного запроса подтверждения, вместо того чтобы требовать отдельного включения для каждой. Используйте claude plugin prune, чтобы вычистить зависимости, зависимые от которых плагины были впоследствии удалены.

claude plugin details <name> (v2.1.139+)

claude plugin details <name> выводит полный перечень компонентов плагина - skills, hooks, MCP servers, LSP servers, background monitors, slash commands - а также прогнозируемую стоимость в токенах на один ход (и на один вызов). Используйте команду, чтобы оценить «вес» плагина перед его внедрением, особенно на моделях с ограниченным контекстом.

Пример вывода (сокращённо):

text
plugin: code-reviewer (1.2.0)
skills:        3      hooks: 2      mcp: 1      lsp: 0      monitors: 0
commands:      /review, /security-review
projected ctx: +1,420 tokens per turn  ·  +9,800 tokens per /review invocation

LSP-серверы были добавлены в панель сведений в версии v2.1.142. См. также прогнозируемую стоимость контекста в панели обзора маркетплейса (v2.1.143), описанную в разделе Plugin Marketplace.

Способы установки

Из маркетплейса

bash
/plugin install plugin-name
# or from CLI:
claude plugin install plugin-name@marketplace-name

Включение / отключение (с автоопределением области действия)

bash
/plugin enable plugin-name
/plugin disable plugin-name

Интерфейс /plugin отображает неиспользуемые плагины, чтобы их можно было удалить (v2.1.187+). Включение и отключение также работают, если поле name в plugin.json плагина отличается от имени соответствующей записи в маркетплейсе (v2.1.195+).

Просмотр установленных плагинов (v2.1.163)

Проверьте, какие плагины активны в текущей сессии:

bash
/plugin list             # all installed plugins
/plugin list --enabled   # only enabled plugins
/plugin list --disabled  # only disabled plugins

Локальный плагин (для разработки)

bash
# CLI flag for local testing (repeatable for multiple plugins)
claude --plugin-dir ./path/to/plugin
claude --plugin-dir ./plugin-a --plugin-dir ./plugin-b

# --plugin-dir also accepts a .zip archive path (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# Fetch a plugin .zip archive from a URL for the current session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Из Git-репозитория

bash
/plugin install github:username/repo

Автообновление

Claude Code может автоматически обновлять маркетплейсы и установленные из них плагины при запуске.

Marketplace TypeAuto-Update DefaultHow to Toggle
Official (claude-plugins-official)✅ Enabled/plugin → Marketplaces → Select
Third-party / Local❌ DisabledSame UI path
При запуске автообновления Claude Code:
  1. Обновляет каталог marketplace
  2. Обновляет установленные плагины до последних версий
  3. Показывает уведомление с предложением выполнить /reload-plugins

Переменные окружения

VariableEffect
DISABLE_AUTOUPDATER=1Disable all auto-updates (Claude Code + plugins)
DISABLE_AUTOUPDATER=1 + FORCE_AUTOUPDATE_PLUGINS=1Keep plugin updates, disable Claude Code updates
CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1(v2.1.141+) Force claude plugin install to clone GitHub plugin sources over HTTPS instead of SSH, even when an SSH remote is available. Use in CI runners or containers without SSH keys.
bash
# Disable all auto-updates
export DISABLE_AUTOUPDATER=1

# Keep plugin auto-updates only
export DISABLE_AUTOUPDATER=1
export FORCE_AUTOUPDATE_PLUGINS=1

# CI runner without SSH keys - force HTTPS for plugin installs
export CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1
claude plugin install code-reviewer@anthropic

Загрузка плагинов в удалённых сессиях (v2.1.179): В версии v2.1.179 улучшена производительность загрузки плагинов в удалённых сессиях, благодаря чему плагины становятся доступны быстрее при подключении.

Когда создавать плагин

graph TD A["Should I create a plugin?"] A -->|Need multiple components| B{"Multiple commands<br/>or subagents<br/>or MCPs?"} B -->|Yes| C["✅ Create Plugin"] B -->|No| D["Use Individual Feature"] A -->|Team workflow| E{"Share with<br/>team?"} E -->|Yes| C E -->|No| F["Keep as Local Setup"] A -->|Complex setup| G{"Needs auto<br/>configuration?"} G -->|Yes| C G -->|No| D

Сценарии использования плагинов

Use CaseRecommendationWhy
Team Onboarding✅ Use PluginInstant setup, all configurations
Framework Setup✅ Use PluginBundles framework-specific commands
Enterprise Standards✅ Use PluginCentral distribution, version control
Quick Task Automation❌ Use CommandOverkill complexity
Single Domain Expertise❌ Use SkillToo heavy, use skill instead
Specialized Analysis❌ Use SubagentCreate manually or use skill
Live Data Access❌ Use MCPStandalone, don't bundle

Тестирование плагина

Перед публикацией протестируйте плагин локально с помощью флага CLI --plugin-dir (его можно указывать несколько раз для разных плагинов):

bash
claude --plugin-dir ./my-plugin
claude --plugin-dir ./my-plugin --plugin-dir ./another-plugin

# --plugin-dir accepts .zip archives in addition to directories (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# --plugin-url fetches a plugin .zip from a URL for this session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Запускает Claude Code с загруженным плагином, что позволяет:

  • Проверить доступность всех slash-команд
  • Убедиться в корректной работе subagents и agents
  • Проверить, что MCP-серверы подключаются без ошибок
  • Проверить срабатывание hooks
  • Проверить настройки LSP-серверов
  • Выявить возможные ошибки конфигурации

Hot-Reload

Плагины поддерживают горячую перезагрузку в процессе разработки. При изменении файлов плагина Claude Code способен автоматически обнаруживать эти изменения. Также можно принудительно выполнить перезагрузку командой:

bash
/reload-plugins

Это приводит к повторному считыванию всех манифестов плагинов, команд, агентов, skills, hooks и конфигураций MCP/LSP без перезапуска сессии.

Управляемые настройки для плагинов

Администраторы могут управлять поведением плагинов в рамках всей организации с помощью управляемых настроек:

SettingDescription
enabledPluginsAllowlist of plugins that are enabled by default
deniedPluginsBlocklist of plugins that cannot be installed
extraKnownMarketplacesAdd additional marketplace sources beyond the defaults
strictKnownMarketplacesRestrict which marketplaces users are allowed to add (managed-only; enforced on every plugin lifecycle event since v2.1.117)
blockedMarketplacesBlocklist of marketplaces; enforced on every plugin lifecycle event since v2.1.117; supports hostPattern / pathPattern regex fields since v2.1.119
allowedChannelPluginsControl which plugins are permitted per release channel
Эти настройки можно применять на уровне организации через управляемые конфигурационные файлы; они имеют приоритет над настройками уровня пользователя.

Безопасность плагинов

Субагенты плагинов запускаются в изолированной песочнице (sandbox). Следующие ключи frontmatter запрещены в определениях субагентов плагинов:

  • hooks - субагенты не могут регистрировать обработчики событий
  • mcpServers - субагенты не могут настраивать MCP-серверы
  • permissionMode - субагенты не могут переопределять модель разрешений

Это гарантирует, что плагины не смогут повысить привилегии или изменить окружение хоста за пределами объявленной области действия.

Публикация плагина

Шаги публикации:

  1. Создайте структуру плагина со всеми компонентами
  2. Напишите манифест .claude-plugin/plugin.json
  3. Создайте README.md с документацией
  4. Протестируйте локально командой claude --plugin-dir ./my-plugin
  5. Пометьте релиз с помощью claude plugin tag v0.3.0 (v2.1.118+) - команда проверяет строку версии и создаёт соответствующий git-тег
  6. Отправьте плагин в marketplace
  7. Дождитесь ревью и одобрения
  8. Плагин публикуется в marketplace
  9. Пользователи могут установить его одной командой

Пример заявки на публикацию:

markdown
# PR Review Plugin

## Description
Complete PR review workflow with security, testing, and documentation checks.

## What's Included
- 3 slash commands for different review types
- 3 specialized subagents
- GitHub and CodeQL MCP integration
- Automated security scanning hooks

## Installation
```bash
Текущая дата: вторник, 4 августа 2026 г.

<query>
/plugin install pr-review
</query>

Features

✅ Security analysis ✅ Test coverage checking ✅ Documentation verification ✅ Code quality assessment ✅ Performance impact analysis

Usage

bash
Текущая дата: вторник, 4 августа 2026 г.

<query>
/review-pr
/check-security
/check-tests
</query>

Requirements

  • Claude Code 2.1+
  • GitHub access
  • CodeQL (optional)
CODE
## Plugin против ручной настройки

**Ручная настройка (2+ часа):**
- Устанавливать slash-команды по одной
- Создавать subagents по отдельности
- Настраивать MCP отдельно
- Настраивать hooks вручную
- Всё документировать
- Делиться с командой (в надежде, что они всё настроят правильно)

**С плагином (2 минуты):**
```bash
/plugin install pr-review
# ✅ Everything installed and configured
# ✅ Ready to use immediately
# ✅ Team can reproduce exact setup

Лучшие практики

Что делать ✅

  • Используйте понятные, говорящие имена плагинов
  • Пишите полноценный README
  • Соблюдайте правила версионирования (semver)
  • Тестируйте все компоненты вместе
  • Чётко документируйте требования
  • Приводите примеры использования
  • Реализуйте обработку ошибок
  • Проставляйте подходящие теги для поиска
  • Поддерживайте обратную совместимость
  • Делайте плагины сфокусированными и целостными
  • Покрывайте код тестами
  • Документируйте все зависимости

Чего не делать ❌

  • Не объединяйте в одном плагине несвязанные возможности
  • Не хардкодьте учётные данные
  • Не пренебрегайте тестированием
  • Не забывайте про документацию
  • Не плодите дублирующие плагины
  • Не игнорируйте версионирование
  • Не усложняйте зависимости между компонентами
  • Не забывайте корректно обрабатывать ошибки

Инструкции по установке

Установка из marketplace

  1. Просмотр доступных плагинов:

    bash
    /plugin list
    
  2. Просмотр информации о плагине:

    bash
    /plugin info plugin-name
    
  3. Установка плагина:

    bash
    /plugin install plugin-name
    

Установка из локального пути

bash
/plugin install ./path/to/plugin-directory

Установка из GitHub

bash
/plugin install github:username/repo

Просмотр установленных плагинов

bash
/plugin list --installed

Обновление плагина

bash
/plugin update plugin-name

Отключение/включение плагина

bash
# Temporarily disable
/plugin disable plugin-name

# Re-enable
/plugin enable plugin-name

Удаление плагина

bash
/plugin uninstall plugin-name

Связанные концепции

Следующие возможности Claude Code работают совместно с плагинами:

  • Slash Commands - отдельные команды, входящие в состав плагинов
  • Memory - постоянный контекст для плагинов
  • Skills - предметная экспертиза, которую можно упаковать в плагины
  • Subagents - специализированные агенты, подключаемые как компоненты плагина
  • MCP Servers - интеграции по протоколу Model Context Protocol в составе плагинов
  • Hooks - обработчики событий, запускающие сценарии плагинов

Полный пример рабочего процесса

Полный рабочий процесс плагина PR Review

CODE
1. User: /review-pr

2. Plugin executes:
   ├── pre-review.js hook validates git repo
   ├── GitHub MCP fetches PR data
   ├── security-reviewer subagent analyzes security
   ├── test-checker subagent verifies coverage
   └── performance-analyzer subagent checks performance

3. Results synthesized and presented:
   ✅ Security: No critical issues
   ⚠️  Testing: Coverage 65% (recommend 80%+)
   ✅ Performance: No significant impact
   📝 12 recommendations provided

Устранение неполадок

Плагин не устанавливается

  • Проверьте совместимость версии Claude Code: /version
  • Проверьте синтаксис plugin.json с помощью JSON-валидатора
  • Проверьте подключение к интернету (для удалённых плагинов)
  • Проверьте права доступа: ls -la plugin/

Компоненты не загружаются

  • Убедитесь, что пути в plugin.json соответствуют фактической структуре каталогов
  • Проверьте права доступа к файлам: chmod +x scripts/
  • Проверьте синтаксис файлов компонентов
  • Посмотрите логи: /plugin debug plugin-name

Не удаётся подключиться к MCP

  • Убедитесь, что переменные окружения заданы корректно
  • Проверьте, установлен ли MCP server и работает ли он корректно
  • Протестируйте подключение к MCP отдельно с помощью /mcp test
  • Проверьте конфигурацию MCP в каталоге mcp/

Команды недоступны после установки

  • Убедитесь, что плагин успешно установлен: /plugin list --installed
  • Проверьте, включён ли плагин: /plugin status plugin-name
  • Перезапустите Claude Code: выполните exit и откройте заново
  • Проверьте, нет ли конфликтов имён с уже существующими командами

Проблемы с выполнением hook’ов

  • Убедитесь, что у файлов hook’ов выставлены корректные права доступа
  • Проверьте синтаксис hook’ов и имена событий
  • Изучите логи hook’ов для подробностей об ошибках
  • По возможности протестируйте hook’и вручную

Дополнительные ресурсы


Последнее обновление: 4 августа 2026 г. Версия Claude Code: 2.1.220 Источники:

ЛОКАЛЬНАЯ ОТМЕТКА · БЕЗ ПРОВЕРКИ
ПРЕДЫДУЩИЙHooks
СЛЕДУЮЩИЙCheckpoints and Rewind