docs(xdto): устранить противоречие «как править пакет» между навыками

На один и тот же вопрос четыре инструкции отвечали по-разному: decompile
объявлял себя «основным способом менять пакет», edit сам себя занижал
до варианта для маленьких пакетов, compile про edit не упоминал вовсе,
а workflow валидатора его не знал. Модель получала бы разный ответ
в зависимости от того, на какой файл попала, причём два из них уводили
от единственного навыка, созданного ровно для этой задачи.

Единое правило проведено через все четыре: точечная правка — xdto-edit;
переработка схемы целиком или знакомство с ней — decompile → compile.
Заодно в decompile добавлена развилка на xdto-info, чтобы разграничить
«нужна схема» и «нужна сводка для кода».

Мелочи: грамматика в xdto-edit, служебное значение -Mode auto убрано
из таблицы параметров (пользователь его не пишет), описан флаг [до N].

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-26 12:58:07 +03:00
co-authored by Claude Opus 5
parent a146fc1467
commit 1d49c16a67
5 changed files with 16 additions and 11 deletions
+2 -1
View File
@@ -102,4 +102,5 @@ XSD выразительнее модели XDTO. Всё, что не перен
3. `/xdto-validate <каталог-исходников>/XDTOPackages/<Имя>` — убедиться, что типы разрешились
4. `/db-load-xml` + `/db-update`
Правка существующего пакета: `/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
Правка существующего пакета: точечно — `/xdto-edit`; переработать схему целиком —
`/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
+6 -3
View File
@@ -30,12 +30,15 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-decompile.ps1"
... -PackagePath src/XDTOPackages/ОбменСБанком -OutFile bank.xsd
```
## Правка пакета
## Переработка схемы целиком
`/xdto-decompile` → правка XSD → `/xdto-compile -Force` возвращает пакет без потерь,
включая имя, синоним и комментарий объекта метаданных — они выгружаются
в `xs:annotation/xs:appinfo`. Это основной способ менять существующий пакет:
отдельных операций правки не нужно, схема читается и правится целиком.
в `xs:annotation/xs:appinfo`.
Этот путь нужен, когда схему меняют широко или сначала надо разобраться, как она
устроена. Чтобы поправить одно свойство, схему целиком читать не нужно — `/xdto-edit`.
Если нужна не схема, а сводка «что присвоить и что обязательно», — `/xdto-info`.
В схеме могут встретиться атрибуты с префиксом `xdto:` — так записано то, что
XML Schema выразить не может (например `nillable` у атрибута). Схема при этом остаётся
+4 -4
View File
@@ -10,11 +10,11 @@ allowed-tools:
# /xdto-edit — Точечное редактирование пакета XDTO
Меняет один элемент пакета, не требуя читать и переписывать всю схему. Для больших
Меняет один элемент пакета, не требуя читать и переписывать всю схему — для больших
пакетов (`EnterpriseData` — около мегабайта) это единственный практичный путь.
Для маленького пакета проще связка `/xdto-decompile` → правка XSD → `/xdto-compile -Force`:
она даёт тот же результат и позволяет видеть схему целиком.
Если нужно переработать схему целиком или сперва разобраться, как она устроена, —
`/xdto-decompile` → правка XSD → `/xdto-compile -Force`.
## Параметры
@@ -78,7 +78,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-edit.ps1" -Pac
`set-namespace` меняет `targetNamespace`, все внутренние ссылки на собственные типы
и `<Namespace>` объекта метаданных. Пакеты, импортирующие старое пространство имён,
**не изменяются** — при версионировании они и должны продолжать смотреть на прежнее.
Навык их перечислит; если правка не версионная, поправь их импорты сами.
Навык их перечислит; если правка не версионная, поправь их импорты сам.
После правки автоматически запускается `/xdto-validate` — отключается через `-NoValidate`.
+3 -2
View File
@@ -23,7 +23,7 @@ allowed-tools:
| `Package` | нет | Выбрать пакет по имени объекта метаданных |
| `Name` | нет | Имя типа. Без выбранного пакета ищется по всей конфигурации |
| `Depth` | нет | Глубина разузлования вложенных объектов. По умолчанию 1 |
| `Mode` | нет | `used-by` — кто ссылается на тип. По умолчанию `auto` |
| `Mode` | нет | `used-by` показать, кто ссылается на тип |
| `Limit` / `Offset` | нет | Пагинация. По умолчанию 150 строк |
| `OutFile` | нет | Записать результат в файл (UTF-8 BOM) |
@@ -79,7 +79,8 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-info.ps1" -Pac
- **`объект X`** — свойству нужно присвоить вложенный объект XDTO, а не значение.
Раскрыть его состав — `-Depth 2` и больше.
- **`[обязательный]`** — без заполнения запись XML не пройдёт. Непомеченное свойство
необязательно. `[список]` — коллекция, заполняется через `.Добавить()`.
необязательно. `[список]` — коллекция, заполняется через `.Добавить()`;
`[до N]` — коллекция с ограничением сверху.
- **`← СуммаТип`** — исходное имя типа из схемы; слева от стрелки уже развёрнутое значение.
- **`[значение элемента]`** — свойство хранит собственное значение элемента,
остальные свойства такого типа лежат в атрибутах XML.
+1 -1
View File
@@ -39,6 +39,6 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/xdto-validate.ps1"
## Типичный workflow
1. `/xdto-compile` или правка через `/xdto-decompile``/xdto-compile -Force`
1. `/xdto-compile`, `/xdto-edit` или переработка через `/xdto-decompile``/xdto-compile -Force`
2. `/xdto-validate <путь>` — до загрузки в базу
3. `/db-load-xml` + `/db-update`