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

xbsl-init

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

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

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

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

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

Параметр Обязательный Дефолт
Поставщик Да —
ИмяПроекта Да —
Представление Нет {ИмяПроекта}
ИмяПодсистемы Нет Основное
Версия Нет 1.0
РежимСовместимости Нет 10.0
ВидПроекта Нет приложение; для библиотеки или расширения укажи явно
РасширяемыеПроекты Нет отсутствуют (универсальное расширение)
ПользовательскиеСоглашения Нет отсутствуют

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

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

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

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

  • Если пользователь явно указал режим, сохраняй его без подмены.
  • Если режим не указан, для нового проекта с целевой платформой 10.0 используй 10.0. Это дефолт скилла, а не утверждение о дефолте платформы. Справочник 10.0 подтверждает режим РежимСовместимости.Версия10_0.
  • Не выводи РежимСовместимости из 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 ВидПроекта: Библиотека

Если создаётся расширение для Element 10.0 — добавь ВидПроекта: Расширение после Ид. Для универсального расширения не добавляй РасширяемыеПроекты: оно содержит только собственные подсистемы. Для расширения конкретного проекта добавь к Проект.yaml список по подтверждённому формату: yaml РасширяемыеПроекты: - Поставщик: acme Имя: ОсновноеПриложение Версии: От: Версия: 1.0 До: Версия: 2.0 Включать: Ложь Уточни у пользователя имена расширяемых проектов и нужный диапазон, если запрос подразумевает изменение существующих объектов. Не выдумывай версии. Если расширяемых проектов несколько, для подсистемы-расширения обязательно укажи РасширяемаяПодсистема; для универсального расширения не создавай подсистему-расширение. Для неё используется файл Подсистема.Расширение.yaml; свойства самой расширяемой подсистемы менять нельзя. Проверяй тип добавляемых элементов по перечню в ограничениях расширений 10.0. Структура расширения 10.0.

Пользовательские соглашения (target 10.0+)

Свойство ПользовательскиеСоглашения опционально для проекта приложения. По схеме проекта 10.0 это массив значений Ссылка|Ресурс: ссылка может быть абсолютной или относительной к клиентскому приложению; файл должен иметь формат txt, pdf или html. При входе и самостоятельной регистрации платформа показывает ссылку на соглашение внизу формы. Проекту с ВидПроекта: Библиотека свойство задавать нельзя.

Не добавляй поле в стандартный scaffold и не записывай пустой массив. Если пользователь просит соглашение по ссылке, получи адрес и наименование, затем добавь языковую запись для ЯзыкПоУмолчанию:

ПользовательскиеСоглашения:
  - Вид: Ссылка
    Русский:
      Наименование: Условия использования
      Значение: https://example.com/terms

Для соглашения из файла помести txt, pdf или html в каталог ресурсов подсистемы. Файл должен быть виден из описания проекта, поэтому задай область видимости ВПроекте. Проверенный пример для файла Основное/Ресурсы/Соглашение.txt:

# Проект.yaml
ПользовательскиеСоглашения:
  - Вид: Ресурс
    Русский:
      Наименование: Условия использования
      Значение: Основное::Соглашение.txt
# Основное/Ресурсы/Ресурсы.yaml
ОбластьВидимости: ВПроекте

Ресурсы.yaml — специальное описание ресурсов: поле ВидЭлемента в нём не указывай. Ключ Русский в обоих примерах соответствует ЯзыкПоУмолчанию: Русский; соглашение без записи на языке по умолчанию платформа отклоняет. При другом языке по умолчанию проверь его языковое поле в целевой версии. Оба примера прошли создание и запуск отдельного приложения в Element 10.0.2-19, затем были выгружены через Console API без изменения YAML. После добавления соглашений повторно валидируй Проект.yaml и сборку на целевой технологии. Новое в 10.0, ресурсы проекта.

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

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

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

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

Для расширения эта подсистема собственная, а не подсистема-расширение.

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

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

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

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

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

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

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

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

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

Если создавалось расширение (ВидПроекта: Расширение):

Сообщи, что проект расширения имеет отдельный жизненный цикл: собери его в среде разработки Element 10.0, затем подключи сборку на вкладке «Расширение» в форме обновления нужного приложения. Проверь наличие и версии всех РасширяемыеПроекты; порядок расширений влияет на применение изменений и обработчики обновления. Скрипт xbsl-deploy/scripts/build.py пока не создаёт архив расширения: формат его выгрузки не описан в документации 10.0. Управление расширениями.