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)
Перед кодом и до заполнения чеклиста вслепую:
- Собрать уже известное: режим (
создание|перенос|обновление),{Name},{code},{mod},{version}, есть ли legacy-путь, нужны ли settings / filter / public. - Если чего-то нет или расходится с каноном / reuse-first / docs — не угадывать. Вызвать skill grill-with-docs (он подключает
grilling+domain-modeling). - Формат вопросов: интервью, 1–2 вопроса за раунд, простым языком, без канцелярита.
- Типовые пробелы для гриля: режим; уникальность
mod/code; админ-only vs публичный фронт; настройки / права групп; фильтры таблиц; установка (install.xmlvs доп. SQL); миграция данных legacy; патчи core DLE; логирование. - Когда пробелов нет (или человек сказал «всё ясно» / «делай») — выйти из гриля и идти по канону + чеклисту.
- 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.phpPages/,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
Документация
| Предназначение | Ссылка |
|---|---|
| DevCraft Admin | https://github.com/DevCraftClub/mhdocs/tree/main/docs/dev/dle/devcraft_admin |
| Конституция PHP | https://github.com/DevCraftClub/mhdocs/tree/main/docs/instructions/constitution.md |
| Сайт документации | https://readme.devcraft.club |
| Readme Admin | https://readme.devcraft.club/dev/dle/devcraft_admin/ |
| DLE | https://dle-news.ru/extras/online/ |
| Metro UI | https://github.com/olton/metroui-docs/tree/master/src/content/docs |
| Cycle ORM | https://github.com/cycle/docs/tree/2.x/docs/en |
Чеклист
-
manifest.php -
settings.schema.php(если нужны настройки) -
changelog.data.php -
Pages/*.php -
Ajax/*Handler.php -
Controller/*(публичный слой + PHP-entryshow_*.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-страницы.