DevCraft Документации
Помощь в разработкеSkills

Create DevCraft plugin v200.4.1

Полный текст skill создания, переноса и обновления сателлита DevCraft Admin.

Project skill в host: .cursor/skills/create-devcraft-plugin/SKILL.md. Ниже — полное содержимое (интервью, канон, чеклист). Промпт для копирования в чат также в Справочнике ИИ.

Файл агента: .cursor/skills/create-devcraft-plugin/SKILL.md (host: dle210.test / зеркало). Режимы: создание | перенос (MH Admin / legacy → DevCraft) | обновление.

YAML description: создавать, переносить или обновлять сателлит DLE для DevCraft Admin (manifest, Pages/Ajax, install.xml, локали). Если требования неясны — сначала интервью grill-with-docs (1–2 вопроса за раунд).

Интервью (MUST)

Перед кодом и до заполнения чеклиста вслепую:

  1. Собрать уже известное: режим (создание | перенос | обновление), {Name}, {code}, {mod}, {version}, есть ли legacy-путь, нужны ли settings / filter / public.
  2. Если чего-то нет или расходится с каноном / reuse-first / docs — не угадывать. Вызвать skill grill-with-docs (он подключает grilling + domain-modeling).
  3. Формат вопросов: интервью, 1–2 вопроса за раунд, простым языком, без канцелярита.
  4. Типовые пробелы для гриля: режим; уникальность mod/code; админ-only vs публичный фронт; настройки / права групп; фильтры таблиц; установка (install.xml vs доп. SQL); миграция данных legacy; патчи core DLE; логирование.
  5. Когда пробелов нет (или человек сказал «всё ясно» / «делай») — выйти из гриля и идти по канону + чеклисту.
  6. ADR/glossary из grill-with-docs — только если grilling/domain-modeling этого требуют; не плодить docs без нужды (Constitution XI).

После интервью (или если всё уже ясно) — следовать канону буквально.

Канон модуля

Ты разрабатываешь модуль для DLE на базе DevCraft Admin.

ПолеСмысл
Режимсоздание | перенос (legacy/MH Admin → DevCraft) | обновление
{Name}Имя каталога / Identity MODULE
{code}Тег конфигурации (латиница, _ / -, напр. dle_connections)
{mod}Обычно = {code}; без лишних дефисов и подчёркиваний сверх канона
{version}Например 200.1.0

Дерево devcraft/src/modules/{Name}/:

  • manifest.php, settings.schema.php (если есть настройки), changelog.data.php
  • Pages/, Ajax/, Services/, Controller/ (публичный слой: классы + PHP-entry для include), templates/*.twig, Public/
  • при фильтрах таблиц: Filter/*.filter.schema.php
  • точка входа DLE admin: engine/inc/{inc}.php
require_once DLEPlugins::Check(ROOT_DIR . '/devcraft/init.php');
DevCraft\Core\Application::instance()->runAdmin(moduleDir: '{Name}');

Публичный include (канон): Controller/show_{slug}.php — без engine/modules/devcraft/.

{include file="devcraft/src/modules/{Name}/Controller/show_{slug}.php?…"}

DLE в пути вырезает .. — только путь от корня сайта. В engine/ — только необходимое (admin glue + патчи с маркерами); не засорять дерево DLE.

Обязательные правила

  • PSR-4: DevCraft\Modules\{Name}\ → devcraft/src/modules/{Name}/
  • Identity: MODULE = {Name} (каталог), CODE = {code}
  • Все require / include проектных файлов через DLEPlugins::Check()
  • Комментарии, PHPDoc и строки UI на русском; вывод человеку через __()
  • HTML админки только в Twig (Metro UI); публичный HTML в templates/{skin}/devcraft/{module}/*.tpl
  • AJAX только через devcraft/ajax.php — не создавать engine/ajax/{mod}.php
  • Обработчики реализуют AjaxHandlerInterface, возвращают JsonResponse или FileResponse
  • Загрузка файлов: DevCraft.Ajax.postMultipart + DevCraft\Core\Http\UploadedFile
  • Настройки: settings.schema.php (FormSchemaBuilder); конфиг в devcraft/config/{code}.json
  • manifest.php: mod, code, meta, menu, ajax, changelog; пункт dashboard/index для AdminLinkResolver
  • Патчи DLE (plugins_files): оборачивать // DevCraft {Name}: start … // DevCraft {Name}: end
  • install.xml: needplugin=DevCraft Admin; предпочтительно PluginPresenter::export после записи в БД
  • DevCraft Admin ≥ 200.4.0; AdminLink::page(name, action, pageClass, icon, mod) — 5-й аргумент mod обязателен для сателлитов
  • assets.js подключать после devcraft.js; ajax.controller = 'admin'; URL: devcraft/ajax.php?mod={mod}&controller=admin&method=...
  • Слои Service / Repository / Controller / Entity / DTO; persistence через Cycle ORM; без devcraft/bin
  • После новых PHP-файлов: composer dump-autoload в devcraft/
  • Локали: devcraft/locales/{locale}/{code}.xliff (можно пустой каркас)

Перенос: не копировать legacy engine/ajax и приёмы MH Admin; reuse API DevCraft; mhadmin — только как эталон поведения.

Обновление: минимальный diff; не ломать mod/code; дописать changelog.data.php.

Стек: PHP ≥ 8.3 | DevCraft Admin ≥ 200.4.0 | DLE ≥ 20.0

Документация

Чеклист

  • manifest.php
  • settings.schema.php (если нужны настройки)
  • changelog.data.php
  • Pages/*.php
  • Ajax/*Handler.php
  • Controller/* (публичный слой + PHP-entry show_*.php при include)
  • templates/*.twig
  • Public/ (icon и т.п.)
  • Filter/*.filter.schema.php (если нужны фильтры)
  • engine/inc/{inc}.php (admin glue; без лишних файлов в engine/)
  • install.xml (export) + локали в devcraft/locales/
  • composer dump-autoload

Детали в гайдах Admin: начало работы, конституция, CRUD-страницы.

См. также

На этой странице