$npx -y skills add Nikolay-Shirokov/cc-1c-skills --skill skd-decompileДекомпиляция схемы компоновки данных 1С (СКД) в JSON-черновик в формате skd-compile. Используй для scaffold нового отчёта по образцу или структурного рефакторинга. Не для точечных правок
| 1 | # /skd-decompile — JSON-черновик из Template.xml СКД |
| 2 | |
| 3 | Читает Template.xml и эмитит JSON в формате `skd-compile`. **Результат — черновик**, а не обратимое представление: см. раздел «Что получаешь». |
| 4 | |
| 5 | ## Когда использовать |
| 6 | |
| 7 | - **Scaffold нового отчёта по образцу** — взять существующий СКД, получить JSON, поправить и скомпилировать в новый. |
| 8 | - **Структурный рефакторинг** — переписать вариант, перерисовать шаблон, перебрать набор полей. |
| 9 | |
| 10 | ## Когда **не** использовать |
| 11 | |
| 12 | - **Точечные правки готового отчёта** (добавить поле, фильтр, итог, переименовать) → `/skd-edit`. Цикл «декомпиляция → правка JSON → компиляция» переписывает шаблон целиком, может терять непокрытые конструкции и даёт большой diff в исходниках. `/skd-edit` правит адресно, без полной реконструкции. |
| 13 | |
| 14 | ## Параметры |
| 15 | |
| 16 | | Параметр | Описание | |
| 17 | |----------|----------| |
| 18 | | `TemplatePath` | Путь к Template.xml (обязательный) | |
| 19 | | `OutputPath` | Путь к выходному JSON. Если не задан — JSON в stdout | |
| 20 | |
| 21 | ```powershell |
| 22 | powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-decompile.ps1" -TemplatePath "<Template.xml>" -OutputPath "<out.json>" |
| 23 | ``` |
| 24 | |
| 25 | ## Что получаешь |
| 26 | |
| 27 | JSON-черновик в формате `/skd-compile` — **не полное обратимое представление СКД**. На вход компилятору такой JSON напрямую может не пойти: в нём встречаются sentinel-узлы (маркер `__unsupported__`). |
| 28 | |
| 29 | - **Готовые узлы** — большая часть СКД (поля, параметры, шаблоны, варианты со structure/filter/order/conditionalAppearance и т.п.) ложится в JSON как обычные узлы DSL. |
| 30 | - **Sentinel-узлы** — места, где встретилась конструкция, которую декомпилятор не умеет выразить в DSL. JSON остаётся валидным, но компилятор откажется его собирать, пока sentinel не **заменён ручной реализацией** (явный raw `template`, прописанный appearance и т.п.) **или не удалён**, если в новом отчёте конструкция не нужна. Это намеренный барьер — чтобы непокрытое не уехало в финальный отчёт незамеченным. |
| 31 | - **`<basename>.warnings.md`** рядом с `OutputPath` — список всех sentinel-узлов с координатами в исходнике, по нему удобно обходить места под ручную доработку. |
| 32 | - **Критичные конструкции** (Picture cells, ХранилищеЗначения, вложенные схемы, не-СКД root) — скрипт падает с ненулевым кодом и сообщением в stderr; такой Template как образец не годится. |
| 33 | |
| 34 | ## Workflow |
| 35 | |
| 36 | 1. `/skd-decompile <Template.xml> -OutputPath draft.json` — получить черновик. |
| 37 | 2. Открыть `draft.warnings.md`, посмотреть, что не покрылось. |
| 38 | 3. Поправить JSON под задачу. Sentinel-узлы — заменить на ручную реализацию (через явный raw `template`, через ручное описание appearance и т.п.) либо удалить, если конструкция в новом отчёте не нужна. |
| 39 | 4. `/skd-compile -DefinitionFile draft.json -OutputPath new-Template.xml` — собрать обратно. |
| 40 | 5. `/skd-validate` + `/skd-info` — проверить. |