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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

> **Важно:** не добавляй поле `ВидЭлемента` — его нет в `Проект.yaml`.
>
> Если пользователь создаёт **библиотеку** — добавь строку после `Ид`:
> ```yaml
> ВидПроекта: Библиотека
> ```

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

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

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

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

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

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

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

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

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

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

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