Алгоритм
Шаг 1 — Определить паттерн (P1–P4)
Прочитай references/patterns.md и выбери паттерн по описанию пользователя:
| Паттерн | Реквизит | Когда |
|---|---|---|
| P1 | встроенный Файлы |
произвольные вложения без ограничений по типу/количеству |
| P2 | ДвоичныйОбъект.Ссылка? |
ровно один файл (скан, логотип, один обязательный документ) |
| P3 | Массив<ДвоичныйОбъект.Ссылка> |
именованная категория файлов с лимитами и/или фильтром |
| P4 | несколько реквизитов P3 | объект с несколькими категориями документов |
Шаг 2 — Анализ объекта (параллельно с шагом 1)
Вызови скилл xbsl-form-info:
python3 .claude/skills/xbsl-form-info/scripts/form_info.py --name <ИмяОбъекта> --root .
Используй результат:
- object_path — путь к папке подсистемы
- object_file — имя YAML-файла объекта (object_path/object_file)
- fields — проверь конфликт имён реквизитов (для P2–P4)
- existing_forms — найди YAML форм для шага 5
Если скрипт вернул error — сообщи пользователю и остановись.
Шаг 3 — UUID
- P1: UUID не нужен
- P2 или P3: вызови скилл
xbsl-uuid→ 1 UUID - P4: вызови скилл
xbsl-uuid→ N UUID (по количеству новых реквизитов)
Шаг 4 — Обновить YAML объекта (только P2–P4)
Открой object_path/object_file. Добавь новые реквизиты в конец секции Реквизиты.
Шаблоны из references/patterns.md:
- P2: реквизит ДвоичныйОбъект.Ссылка?
- P3: реквизит Массив<ДвоичныйОбъект.Ссылка>
- P4: несколько реквизитов P3
Для P1 шаг 4 пропустить — реквизит Файлы уже присутствует в объекте.
Шаг 5 — Обновить форму
Найди YAML-файл формы из existing_forms["ФормаОбъекта"].
Если форма не найдена: сообщи пользователю и предложи сначала вызвать скилл xbsl-form-add.
Если форма найдена: добавь компонент СписокФайлов по шаблону из references/patterns.md.
Место вставки — в конец Содержимое формы (после последнего поля/группы, перед закрытием блока).
Шаг 6 — Итог
Перечисли изменённые файлы: - P1: только файл формы - P2–P4: файл объекта + файл формы