XBSL Skills AI-инструменты для 1С:Элемент
Скилл

xbsl-init

Инициализация нового проекта 1С:Элемент (XBSL) с нуля. Используй этот скилл когда пользователь хочет создать новый проект: создаёт корректную структуру папок, Проект.yaml, Проект.xbsl и Подсистема.yaml по эталонному формату. Вызывай при запросах «создай проект», «новый проект», «инициализируй проект», «init проект», «с нуля». Работает даже если в репозитории уже есть другие проекты. НЕ для: создания объектов метаданных, добавления форм, движений по регистрам.

Инициализация проекта 1С:Элемент

Перед созданием Проект.xbsl прочитай docs/xbsl-spec.md.

Шаг 0: Собери параметры

Из запроса пользователя определи:

Параметр Обязательный Дефолт
Поставщик Да
ИмяПроекта Да
Представление Нет {ИмяПроекта}
ИмяПодсистемы Нет Основное
Версия Нет 1.0
РежимСовместимости Нет 9.0
ВидПроекта Нет — (только если явно “библиотека”)

Если Поставщик или ИмяПроекта не указаны — спроси пользователя.

Примечание: если проект использует библиотеки — РежимСовместимости должен совпадать со всеми библиотеками.

Режим совместимости не равен версии технологии

РежимСовместимости — параметр проекта в Проект.yaml. Его формат — <major>.<minor>, например 9.1. technology-version — отдельный параметр приложения в облаке; он содержит точную сборку, например 9.2.9-12.

  • Если пользователь явно указал режим, сохраняй его без подмены.
  • Не выводи РежимСовместимости из technology-version и не сравнивай их полные строки: пара 9.1 и 9.2.9-12 сама по себе не является доказанным конфликтом.
  • До создания файлов проверь формат режима отдельно. При несоответствии <major>.<minor> остановись с диагностикой xbsl-init.compatibility_mode_format. Сборщик xbsl-deploy/scripts/build.py повторяет эту fail-closed проверку до создания .xasm.
  • Корректный формат не доказывает, что конкретный режим поддержан. Проверяй допустимость отдельно по документации выбранной технологии или ответу платформы. Если платформа отклонила режим, покажи оба значения и точную ошибку, затем запроси явное решение. Не изменяй Проект.yaml автоматически.

Шаг 1: Проверь конфликт

Убедись, что проект с таким именем ещё не существует:

find . -name "Проект.yaml" -not -path "*/.claude/*"

Если найден файл в директории {Поставщик}/{ИмяПроекта}/ — сообщи об этом и остановись.

Шаг 2: Сгенерируй UUID

Вызови скилл xbsl-uuid с N=1. Сохрани результат как {ПроектУИД}.

Шаг 3: Создай файлы

Создай три файла:

{Поставщик}/{ИмяПроекта}/Проект.yaml

Ид: {ПроектУИД}
Представление: "{Представление}"
Версия: {Версия}
Поставщик: {Поставщик}
Имя: {ИмяПроекта}
ПредставлениеПоставщика: "{Поставщик}"
РежимСовместимости: {РежимСовместимости}
ЯзыкиЛокализации: [Русский]
ЯзыкПоУмолчанию: Русский
ЯзыкРазработки: Русский

Важно: не добавляй поле ВидЭлемента — его нет в Проект.yaml.

Если пользователь создаёт библиотеку — добавь строку после Ид: yaml ВидПроекта: Библиотека

{Поставщик}/{ИмяПроекта}/Проект.xbsl

// @НастройкаПриложения(Ид = "НастройкаПриложения", Номер = 1)
// метод НастройкаПриложения(НоваяВерсия: Версия)
// TODO Раскомментируйте метод и вставьте код обработчика. Метод с таким Ид будет выполнен только один раз!
// ;

// @ОбновлениеПроекта(Ид = "КонвертацияДанных", Номер = 1)
// метод КонвертацияДанных(ИсходнаяВерсия: Версия, ЦелеваяВерсия: Версия)
// TODO Раскомментируйте метод и вставьте код обработчика. Метод с таким Ид будет выполнен только один раз!
// ;

{Поставщик}/{ИмяПроекта}/{ИмяПодсистемы}/Подсистема.yaml

Интерфейс:
    ВключатьВАвтоИнтерфейс: Истина

Шаг 4: Выведи итог

Сообщи пользователю созданные пути:

Проект создан:
  {Поставщик}/{ИмяПроекта}/Проект.yaml
  {Поставщик}/{ИмяПроекта}/Проект.xbsl
  {Поставщик}/{ИмяПроекта}/{ИмяПодсистемы}/Подсистема.yaml

Если создавалось обычное приложение:

Следующий шаг: создай объекты метаданных через xbsl-meta-add

Если создавалась библиотека (ВидПроекта: Библиотека):

⚠️ Библиотека: этот проект нельзя развернуть как самостоятельное приложение —
платформа не поддерживает деплой библиотек. Библиотека подключается через
`Импорт` в другой проект.

Следующий шаг: добавь объекты через xbsl-meta-add, затем подключи библиотеку
к нужному приложению через поле `Импорт` в Подсистема.yaml или .xbsl файле.