12 июля 2026

Команда /dr-plugin — система плагинов Datarim

Как /dr-plugin управляет опциональными расширениями Datarim: двухуровневая архитектура манифестов, bootstrap datarim-core, симлинк-установка и поэтапный план для enable/disable и отката.

Datarim поставляется с фиксированным набором скилов, агентов, команд и шаблонов. Система плагинов делает этот набор расширяемым без изменения базовой установки. /dr-plugin — CLI для управления этими расширениями.

Все субкоманды реализованы: list (при первом запуске инициализирует запись datarim-core), enable, disable, sync и doctor. Отложено только подключение плагина по git-URL; сейчас enable принимает абсолютный путь.

Двухуровневая архитектура манифестов

Каждый плагин содержит статический манифест — plugin-storage/<id>/plugin.yaml — зафиксированный вместе с исходными файлами плагина в его собственном репозитории. Этот манифест описывает содержимое плагина и его требования. Второй, рантаймовый манифест находится в datarim/enabled-plugins.md внутри рабочего пространства и фиксирует, какие плагины активны для данного проекта. Два уровня намеренно разделены: статический манифест путешествует с плагином; рантаймовый манифест принадлежит рабочему пространству.

Сторонние плагины устанавливаются как симлинки из datarim/plugin-storage/<id>/ в рантайм проекта, .datarim-runtime/local/{skills,agents,commands,templates}/<plugin-id>/; в домашний каталог ничего не пишется. Подход с симлинками означает, что исходный код плагина хранится в одном месте, а рантайм подхватывает его из стандартного пути загрузки.

datarim-core при первом запуске

Первый запуск /dr-plugin list инициализирует запись datarim-core. Текущий поставляемый набор Datarim — все скилы, агенты, команды и шаблоны, установленные вместе с фреймворком — регистрируется как единый защищённый плагин. Его нельзя отключить. Это делает границу между ядром и сторонними компонентами явной с самого начала.

Базовая реализация — POSIX-совместимый bash-скрипт в scripts/dr-plugin.sh, совместимый с bash 3.2 и выше. Валидация ID плагина требует kebab-case-идентификаторов длиной до тридцати двух символов. Валидация источника принимает абсолютные пути и HTTPS-URL; встроенные учётные данные и последовательности path-traversal отклоняются.

Коды возврата и переменные окружения

Код 0 означает успех. Код 1 — ошибка валидации или конфликт. Код 2 — ошибка ввода-вывода или файловой системы. Код 3 — блокировка захвачена параллельным вызовом. Код 64 — ошибка использования: нераспознанная субкоманда или отсутствующий аргумент.

Две переменные окружения позволяют переопределять параметры при тестировании: DR_PLUGIN_WORKSPACE указывает на альтернативный корень рабочего пространства, DR_PLUGIN_RUNTIME_ROOT задаёт корень для симлинков — по умолчанию ${DATARIM_RUNTIME}/local, и он должен совпадать с рантаймом проекта. Наборы тестов (77+ случаев и четыре проверки покрытия) проходят на macOS bash 3.2 и Linux bash 5.

Дорожная карта

Фазы A3–D завершены: enable и disable с первоначальным заполнением инвентаря datarim-core, механизм overrides: с предварительным сканированием конфликтов, снимки и откат через sync, а также doctor, который теперь выполняет десять диагностических проверок. Фаза A4 — подключение плагина прямо по git-URL — пока отложена.

О расширении фреймворка сегодня — в посте /dr-addskill. Общая картина фреймворка — в посте что такое Datarim.