/dr-plugin
Управление opt-in плагинами: list, enable, disable, sync, doctor
Обзор
/dr-plugin — CLI plugin-системы Datarim, представленная в v1.23.0 (<TASK-ID>). Управляет opt-in набором skills, agents, commands и templates за пределами встроенного datarim-core. Плагины opt-in по дизайну: ничего не подгружается, пока оператор явно не включит — это держит AI-контекст лёгким и dependency graph детерминированным.
Плагины — локальные директории (или git URL в будущей фазе) формата {plugin-id}/{plugin.yaml, skills/, agents/, commands/, templates/}. CLI создаёт симлинки в рантайм проекта, .datarim-runtime/local/{category}/{plugin-id}/, с namespace-изоляцией (в домашний каталог ничего не пишется), опциональная root-position установка через поле overrides:. Активный набор хранится в datarim/enabled-plugins.md — единственный source of truth.
Использование
# Активные + bootstrap на первом запуске
/dr-plugin list
# Включить локальный plugin (абсолютный путь)
/dr-plugin enable /path/to/my-plugin
# Отключить активный plugin (удалит symlinks + manifest entry)
/dr-plugin disable my-plugin
# Отключить / вернуть встроенную политику, включённую по умолчанию (только tombstone)
/dr-plugin disable tdd-enforcement
/dr-plugin enable tdd-enforcement
# Реконсиляция runtime ↔ manifest (идемпотентно)
/dr-plugin sync
# 10 проверок здоровья; --fix авто-чинит sync-fixable
/dr-plugin doctor
/dr-plugin doctor --fix
Контракт plugin source
Каталог plugin source должен содержать plugin.yaml минимум с полями:
schema_version: 1
id: my-plugin # kebab-case, [a-z][a-z0-9-]{0,31}
title: My Plugin
version: 0.1.0
author: ...
license: MIT
description: ...
categories:
- skills
- commands
overrides: # опционально — root-position install
- my-shadow-skill.md
depends_on: # опционально — другие plugin id
- some-other-plugin
Проверки doctor (10)
- manifest-syntax — обязательные scalar-поля, валидные ID (error)
- inventory-consistency — declared symlinks присутствуют (error, --fix → sync)
- broken-symlinks — target symlink-а отсутствует (error, --fix → sync)
- orphan-files — runtime-файлы не в inventory (warning, --fix → sync)
- override-integrity — overrides должны быть в file_inventory (error, --fix → sync)
- dependency-graph — DFS детекция cycle/dangling (error)
- git-state — uncommitted manifest в git-репо (warning)
- snapshot-cleanup — snapshots старше 30 дней (warning, --fix → purge)
- skill-registry — frontmatter
name:совпадает с basename (warning) — закрывает Skill-tool resolution gap при некорректном frontmatter - disabled-defaults — раздел-tombstone
## Disabled Defaultsдля встроенных политик, включённых по умолчанию (например,tdd-enforcement), отсутствует или корректен (warning; при ошибке состояние и так откатывается к более строгой политике)
Exit-коды
0— clean1— только warnings2— найдены errors3— concurrent invocation (lock держит другой процесс)64— usage error
Безопасность
Каждый enable снимает tarball-snapshot runtime/ + manifest.md до применения изменений. При mid-apply сбое restore_from_snapshot атомарно откатывает. FIFO cap DR_PLUGIN_SNAPSHOT_MAX=50; age-based purge через DR_PLUGIN_SNAPSHOT_AGE_DAYS=30. Path traversal, embedded credentials в URL, CRLF в YAML — отклоняются на validation gate. Critical-core overrides (evolution, datarim-system, pre-archive-check) — warning на stderr, но allow: оператор решает.
Поставляемые плагины
Репозиторий фреймворка поставляет эти плагины в plugins/. Ни один из них не входит в 28 core-команд.
dr-orchestrate— раннер в терминальной панели для/dr-orchestrate: tmux-драйвер, семантический резолвер, бот-транспорт и audit-бэкенды.dr-jev-control— опциональная проектная маршрутизация Jev для Claude Code, Codex и Cursor с полом против деструктивных команд и kill switch.tdd-enforcement— метаданные без кода, включён по умолчанию: переключатель строгого test-first для workspace.dr-fleet-evolution— Bash-цикл, улучшающий стартовые fleet-скиллы по сигналам исполнения за fail-closed гейтами.controller-continuation(v3.1.0+) — рабочая точка входа/dr-continue-checkpointдля проектов со своим внешним контроллером. Возобновляет ровно записанную стадию по ресурсам контроллера, доступным только на чтение, с сохранением production HOLD. Подключайте с read-only монтирования фреймворка, а не через enable внутри недоверенного workspace. Только Linux; на других платформах — отказcontinuation_unsupported_platform.
Когда плагины vs local/ overlay
- Personal additions для одного чекаута проекта →
.datarim-runtime/local/{skills,agents,commands,templates}/(gitignored overlay; loader policy: local wins на name conflict). - Shareable extensions версионируемые как единое целое, распространяемые директорией или репо →
/dr-plugin enable.
Отчёт о результате
Перед сообщением человеку применяется Human Outcome Reporting. Объясняются изменение для пользователя, исходные условия, проверки и доказательства, а также открытые ограничения. Итог этапа не означает завершения всей задачи. Точные протоколы и технические записи сохраняются. Для повторного объяснения без продолжения работы — /dr-explain.