Семейство репозиториев
Решение
Поддерживать nuckty как семейство проектов с общими правилами в nuckty-codestyle. Ядро отвечает за nuckty build; команды, возможности обработки контента и библиотеки блоков поставляются отдельными расширениями.
Контекст
Пользователям нужны разные возможности. Сайту без проверки HTML и публикации по FTP не нужны валидатор и клиент FTP в зависимостях ядра.
Альтернативы
Один пакет. Установку и выпуск проще согласовать, но необязательные зависимости входят в каждую установку.
Несколько пакетов в монорепозитории. Пакеты можно выпускать независимо; для этого нужен общий процесс версионирования и публикации.
Независимые репозитории без общих правил. Выпуски разделены, но язык, документация API и правила проверок могут расходиться.
Аргумент
Отдельные пакеты изолируют необязательные зависимости: basic-ftp относится к расширению FTP, vnu-jar — к валидации, sharp — к конвертации изображений. В ядре остаются инструменты сборки Markdown, CSS и JavaScript.
Общий контракт расширений предоставляет пять фасадов: pipeline, markdown, levels, commands и document. Пакет может использовать несколько фасадов. Локальные AGENTS.md ссылаются на общий свод правил и добавляют требования проекта.
Последствия
Проект сохраняет собственную историю и цикл выпуска, используя общий контракт. Если существующих фасадов достаточно, новую возможность можно добавить без изменения ядра; новый контракт ядра всё же требует его правки.
Публикация пакета не добавляет страницу документации автоматически. Страницу нужно включить в каталог расширений и карту сайта документации. Запланированные имена репозиториев не подтверждают, что публичные репозитории или пакеты уже опубликованы.