xdto-compile — скилл для Claude Code: что делает и как установить
Собирает пакет XDTO 1С из XSD и добавляет его в исходники конфигурации. Пригодится для обмена, интеграций и веб-сервисов.
/plugin marketplace add Nikolay-Shirokov/cc-1c-skills
/plugin install 1c-skills@cc-1c-skillsЧто делает xdto-compile
Скилл принимает XML-схему через -XsdPath или -Xsd, затем создаёт XDTOPackages/<Имя>.xml, Ext/Package.bin и запись в Configuration.xml. Имя, синоним и комментарий можно взять из xs:appinfo или задать параметрами. Флаг -Force разрешает перезапись существующего пакета.
Внутри используется PowerShell-скрипт, а результат можно проверить командами /xdto-info, /xdto-decompile и /xdto-validate. Скилл выводит предупреждения, когда конструкции XSD переносятся приближённо: например, xs:choice упрощается до последовательности, а кратность частицы не сохраняется.
xs:include игнорируется, поэтому включаемую схему нужно собрать отдельным пакетом и заменить include на import. Для импортируемых namespace сначала собирают зависимости, иначе платформа может молча подменить тип на xs:anyType.
Какие задачи решает
- собрать пакет XDTO из файла XSD
- добавить пакет в
Configuration.xml - задать имя и синоним объекта через схему
- проверить разрешение типов между пакетами
- пересобрать изменённую схему с
-Force
Примеры запросов агенту
- Собери пакет XDTO из
bank.xsdв каталогеsrcс именем «ОбменСБанком». - Выполни
/xdto-compile -XsdPath <файл> -OutputDir <каталог-исходников>и разберись с предупреждениями. - Пересобери пакет из
fss.xsdвsrc, разрешив перезапись через-Force.
Как установить xdto-compile
1Через маркетплейс плагинов
/plugin marketplace add Nikolay-Shirokov/cc-1c-skills/plugin install 1c-skills@cc-1c-skillsКоманда ставит плагин 1c-skills целиком, со всеми его скиллами
2Через Skills CLI (Vercel)
npx skills add Nikolay-Shirokov/cc-1c-skills --skill xdto-compile -a claude-code3Вручную: положить файлы
~/.claude/skills/xdto-compile/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/xdto-compile/
1Через Skills CLI (Vercel)
npx skills add Nikolay-Shirokov/cc-1c-skills --skill xdto-compile -a codex2Вручную: положить файлы
.agents/skills/xdto-compile/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/xdto-compile/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Nikolay-Shirokov/cc-1c-skills xdto-compile2Вручную: положить файлы
.github/skills/xdto-compile/SKILL.mdКомандой платформы
gemini skills install https://github.com/Nikolay-Shirokov/cc-1c-skills --path .claude/skills/xdto-compileВручную: положить файлы
.devin/skills/xdto-compile/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о xdto-compile
Как установить xdto-compile в Claude Code?
Добавь маркетплейс командой /plugin marketplace add Nikolay-Shirokov/cc-1c-skills, затем установи плагин командой /plugin install 1c-skills@cc-1c-skills.
Что делает xdto-compile?
Скилл строит пакет XDTO 1С из XML-схемы и регистрирует его в исходниках конфигурации. Он также сообщает о конструкциях XSD, которые пришлось упростить.
Что произойдёт с xs:include и xs:import?
xs:include не переносится: схему нужно собрать отдельным пакетом и заменить его на import. Импорт разрешается по namespace среди пакетов конфигурации или расширения.
Исходный текст
SKILL.md · MIT
---
name: xdto-compile
description: Создание пакета XDTO 1С из XML-схемы (XSD). Используй когда нужно добавить в конфигурацию пакет XDTO — под обмен, интеграцию, веб-сервис или внешний XML-формат
argument-hint: -XsdPath <файл.xsd>|-Xsd <схема> -OutputDir <каталог-исходников> [-Name <имя>] [-Synonym <синоним>] [-Comment <текст>] [-Force]
allowed-tools:
- Bash
- Read
- Glob
---
# /xdto-compile — Создание пакета XDTO из XML-схемы
Собирает пакет XDTO по XML-схеме: `XDTOPackages/<Имя>.xml`,
`XDTOPackages/<Имя>/Ext/Package.bin` и регистрацию в `Configuration.xml`.
Вход — обычная XML-схема, писать её нужно так же, как для любого другого инструмента.
## Параметры
| Параметр | Обязательный | Описание |
|----------|--------------|----------|
| `XsdPath` | один из двух | Путь к файлу XML-схемы. Псевдоним — `-Path` |
| `Xsd` | один из двух | Схема строкой, вместо `-XsdPath` |
| `OutputDir` | да | Каталог исходников конфигурации или расширения — там, где лежит `Configuration.xml` |
| `Name` | нет | Имя объекта метаданных. По умолчанию — из `xs:appinfo`, иначе имя файла XSD, санированное под идентификатор 1С |
| `Synonym` | нет | Синоним (строка). По умолчанию — из `xs:appinfo`, иначе имя пакета. Для нескольких языков задавай синоним в схеме, блоком `xs:appinfo` |
| `Comment` | нет | Комментарий. По умолчанию — из `xs:appinfo` |
| `Force` | нет | Перезаписать существующий пакет. Без него навык откажется затирать уже собранный пакет |
```powershell
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-compile.ps1" -XsdPath "<схема.xsd>" -OutputDir "<каталог-исходников>"
```
Примеры:
```powershell
... -XsdPath bank.xsd -OutputDir src -Name ОбменСБанком -Synonym "Обмен с банком"
... -XsdPath fss.xsd -OutputDir src -Force
```
## Читай предупреждения
XSD выразительнее модели XDTO. Всё, что не переносится один в один, навык переносит
приближённо и **пишет об этом**:
```
Предупреждения (2) — конструкции XSD без точного соответствия в модели XDTO:
! Документ : вложенная xs:choice уплощена в последовательность — выбор одного из вариантов не сохранён
! Документ : кратность на вложенной частице (<xs:sequence minOccurs/maxOccurs>) не выражается в модели XDTO
```
Такое сообщение означает, что пакет собран, но схема упрощена. Если упрощение
недопустимо — меняй схему (например, разноси варианты `xs:choice` по разным типам),
а не игнорируй.
Что переносится приближённо: вложенные `xs:sequence`/`xs:choice` (уплощаются в плоский
список свойств), `xs:all` (становится последовательностью), кратность на частице,
`substitutionGroup`, `xs:key`/`keyref`/`unique`, `xs:redefine`.
`xs:group` и `xs:attributeGroup` раскрываются по ссылке — их содержимое попадает в тип.
`xs:include` игнорируется: зависимости в XDTO разрешаются только по namespace,
поэтому включаемую схему нужно собрать отдельным пакетом и заменить `include` на `import`.
## Посмотреть, что получилось
Модель пакета лежит в `Ext/Package.bin`. Несмотря на расширение, это текстовый XML,
но читать его напрямую обычно незачем: состав собранного пакета показывает
`/xdto-info`, а полную схему — `/xdto-decompile`.
## Зависимости между пакетами
`<xs:import namespace="…"/>` разрешается по namespace среди пакетов конфигурации
или расширения. Если пакета с таким пространством имён нет, платформа при загрузке
молча подменит тип на `xs:anyType` — без ошибки. Собирай сначала зависимости, потом
зависящий пакет, и проверяй результат через `/xdto-validate`.
Какие пакеты уже собраны, видно в `ChildObjects` файла `Configuration.xml`.
## Что XSD выразить не может
Две вещи модель XDTO умеет, а XML Schema — нет: `nillable` у атрибута и `qualified`
у отдельного свойства. Они пишутся атрибутами из пространства имён модели:
```xml
<xs:attribute name="Представление" type="xs:string"
xmlns:xdto="http://v8.1c.ru/8.1/xdto" xdto:nillable="true"/>
```
Схема остаётся валидной — валидаторы такие атрибуты игнорируют. Полный список
и таблица соответствий XSD ↔ XDTO — в [xsd-reference.md](xsd-reference.md).
Свойства объекта метаданных можно задать прямо в схеме:
```xml
<xs:annotation>
<xs:appinfo>
<xdto:package xmlns:xdto="http://v8.1c.ru/8.1/xdto">
<xdto:name>ОбменСБанком</xdto:name>
<xdto:synonym lang="ru">Обмен с банком</xdto:synonym>
</xdto:package>
</xs:appinfo>
</xs:annotation>
```
## Типичный workflow
1. Получить XSD от контрагента (или выгрузить схему существующего пакета: `/xdto-decompile`)
2. `/xdto-compile -XsdPath <файл> -OutputDir <каталог-исходников>` — прочитать предупреждения
3. `/xdto-validate <каталог-исходников>/XDTOPackages/<Имя>` — убедиться, что типы разрешились
4. `/db-load-xml` + `/db-update`
Правка существующего пакета: точечно — `/xdto-edit`; переработать схему целиком —
`/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
© Nikolay Shirokov · MIT · Nikolay-Shirokov/cc-1c-skills