About skd-decompile
skd-decompile reads a 1C Data Composition System Template.xml and emits a draft JSON in skd-compile format. It is intended for scaffolding reports from examples or structural refactoring, with unsupported constructs flagged for manual handling rather than silently treated as reversible output.
Key features
- 01Convert Template.xml to draft JSON
- 02Represent supported structures as DSL nodes
- 03Mark unsupported constructs with sentinels
- 04Write a warnings file with source coordinates
- 05Reject templates with critical unsupported structures
Use cases
- 01Scaffold a new report from an existing SKD example
- 02Refactor report variants and field sets
- 03Review uncovered constructs before recompiling
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ nikolay-shirokov/ cc-1c-skills --skill skd-decompileAfter installing, type/skd-decompilein Claude Code to confirm it loaded.
Bundled filesscripts/skd-decompile.ps1scripts/skd-decompile.py
Details
From the project README/skd-decompile — JSON-черновик из Template.xml СКД
Читает Template.xml и эмитит JSON в формате skd-compile. Результат — черновик, а не обратимое представление: см. раздел «Что получаешь».
Когда использовать
- Scaffold нового отчёта по образцу — взять существующий СКД, получить JSON, поправить и скомпилировать в новый.
- Структурный рефакторинг — переписать вариант, перерисовать шаблон, перебрать набор полей.
Когда не использовать
- Точечные правки готового отчёта (добавить поле, фильтр, итог, переименовать) →
/skd-edit. Цикл «декомпиляция → правка JSON → компиляция» переписывает шаблон целиком, может терять непокрытые конструкции и даёт большой diff в исходниках./skd-editправит адресно, без полной реконструкции.
Параметры
| Параметр | Описание |
|---|---|
TemplatePath | Путь к Template.xml (обязательный) |
OutputPath | Путь к выходному JSON. Если не задан — JSON в stdout |
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/skd-decompile.ps1" -TemplatePath "<Template.xml>" -OutputPath "<out.json>"
Что получаешь
JSON-черновик в формате /skd-compile — не полное обратимое представление СКД. На вход компилятору такой JSON напрямую может не пойти: в нём встречаются sentinel-узлы (маркер __unsupported__).
- Готовые узлы — большая часть СКД (поля, параметры, шаблоны, варианты со structure/filter/order/conditionalAppearance и т.п.) ложится в JSON как обычные узлы DSL.
- Sentinel-узлы — места, где встретилась конструкция, которую декомпилятор не умеет выразить в DSL. JSON остаётся валидным, но компилятор откажется его собирать, пока sentinel не заменён ручной реализацией (явный raw
template, прописанный appearance и т.п.) или не удалён, если в новом отчёте конструкция не нужна. Это намеренный барьер — чтобы непокрытое не уехало в финальный отчёт незамеченным. <basename>.warnings.mdрядом сOutputPath— список всех sentinel-узлов с координатами в исходнике, по нему удобно обходить места под ручную доработку.- Критичные конструкции (Picture cells, ХранилищеЗначения, вложенные схемы, не-СКД root) — скрипт падает с ненулевым кодом и сообщением в stderr; такой Template как образец не годится.
Workflow
/skd-decompile <Template.xml> -OutputPath draft.json— получить черновик.- Открыть
draft.warnings.md, посмотреть, что не покрылось. - Поправить JSON под задачу. Sentinel-узлы — заменить на ручную реализацию (через явный raw
template, через ручное описание appearance и т.п.) либо удалить, если конструкция в новом отчёте не нужна. /skd-compile -DefinitionFile draft.json -OutputPath new-Template.xml— собрать обратно./skd-validate+/skd-info— проверить.