/form-decompile - Декомпилятор формы в DSL

SkillDev tools

Turns the XML file behind a 1C managed form into an editable JSON draft, so an existing form can be read and changed instead of rebuilt from scratch. Once added, the AI can take any Form.xml file and convert it into a draft in the /form-compile format. That gives a clear starting point for analyzing or reworking the form.

Available today. Use it from your connected AI after setup.

Add the skill, then give the AI the Form.xml of the form you want to work with. It will return a JSON draft in the /form-compile format ready for analysis or edits.

Then ask your AI: use the /form-decompile - Декомпилятор формы в DSL skill

What your AI can do with it

  • Decompile a 1C managed form from its Form.xml file
  • Convert Form.xml into a JSON draft
  • Return the form in the /form-compile format
  • Extract a structured description of an existing form
  • Prepare an existing form for analysis or further editing

What this skill tells your AI

The instructions your AI receives, as published by desko77/cursor-1c-skills in skills/1c-form-decompile/SKILL.md and read by ahel’s review.

Принимает Form.xml управляемой формы 1С (формат выгрузки Конфигуратора) и генерирует JSON-определение в формате скила 1c-form-compile (спецификация: docs/form-dsl-spec.md). Обратная операция к /form-compile.

Результат - ЧЕРНОВИК, а не гарантированный lossless round-trip. Конструкции, которые DSL не выражает, помечаются ключом _todo (массив строк-пояснений) на уровне элемента и/или корня JSON и дублируются предупреждением [TODO] в консоль. Перед скармливанием результата /form-compile просмотреть черновик и разрешить все _todo.

Использование

/form-decompile <Form.xml> [output.json]

Параметры

ПараметрОбязательныйОписание
InputFileдаПуть к Form.xml (выгрузка Конфигуратора, UTF-8, допустим BOM)
OutputFileнетПуть для JSON. По умолчанию рядом с входным: <имя>.form.json

Команда

powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "<путь>/Form.xml" [-OutputFile "<путь>.json"]

Альтернатива (Python, тот же алгоритм):

python skills/1c-form-decompile/scripts/form-decompile.py -InputFile "<путь>/Form.xml" [-OutputFile "<путь>.json"]

Коды возврата

КодЗначение
0Успех (JSON записан; наличие _todo кодом возврата не считается ошибкой)
1Ошибка: файл не найден, XML не разбирается, корневой элемент не <Form>
2Неверные аргументы (python-версия, argparse)

Что переносится в DSL

  • Заголовок формы, свойства формы (скалярные), обработчики событий формы
  • Исключенные стандартные команды (excludedCommands)
  • Дерево элементов: group, input, check, label, labelField, table (с колонками), pages, page, button, picture, picField, calendar, cmdBar, popup
  • События элементов: если имя обработчика совпадает с автоименованием /form-compile - только on, иначе on + handlers
  • Реквизиты: тип (shorthand: string(N), decimal(D,F[,nonneg]), date, ссылочные CatalogRef.X, платформенные, составные через " | "), main, savedData, колонки ValueTable, настройки DynamicList (mainTable, dynamicDataRead, manualQuery)
  • Параметры формы (имя, тип, key)
  • Команды формы (action, title, shortcut, picture, representation)

Ограничения - черновик и маркеры _todo

В _todo уходит (JSON при этом создается, код возврата 0):

  • Типы элементов вне списка выше (RadioButtonField, ChartField, SpreadSheetDocumentField, PlannerField и др.) - в дерево ставится заглушка {"name": ..., "_todo": [...]}
  • Условное оформление (ConditionalAppearance), командный интерфейс (CommandInterface), содержимое командной панели формы
  • Свойства элементов, не описанные в form-dsl-spec.md (цвета, шрифты, layout-тонкости) - каждое отдельной строкой с именем и значением
  • Текст запроса динамического списка (DSL хранит только mainTable), настройки реквизита вне DynamicList
  • Видимость по ролям (UserVisible/Value), мультиязычные заголовки (берется ru или первый язык), v8:TypeSet / v8:TypeId в типах

Служебные companion-элементы (ContextMenu, ExtendedTooltip, AutoCommandBar таблиц, SearchStringAddition и др.) не переносятся - /form-compile генерирует их заново; непустое содержимое такого элемента помечается в _todo.

Не предназначен для точечной правки одного поля живой формы: цикл декомпиляция -> правка JSON -> перекомпиляция перезаписывает Form.xml целиком и теряет непереносимые конструкции. Для точечных правок - /form-edit.

Рабочий процесс

  1. Claude вызывает /form-decompile для получения JSON из Form.xml
  2. Claude просматривает _todo и решает каждый пункт (переносит вручную, упрощает или сознательно отбрасывает), затем удаляет ключи _todo
  3. Claude модифицирует JSON (добавляет поля, меняет структуру)
  4. Claude вызывает /form-compile для генерации нового Form.xml
  5. Claude вызывает /form-validate для проверки

Примеры

Декомпиляция с выводом рядом с исходником (получится Form.form.json):

powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "src/DataProcessors/Загрузка/Forms/Форма/Ext/Form.xml"

Декомпиляция в явный файл:

powershell.exe -NoProfile -File skills/1c-form-decompile/scripts/form-decompile.ps1 -InputFile "C:/dump/Форма/Ext/Form.xml" -OutputFile "C:/work/форма-черновик.json"

JSON-схема DSL

Полная спецификация формата: docs/form-dsl-spec.md (прочитать через ). Справка по потреблению DSL - skills/1c-form-compile/SKILL.md.

Signals

GitHub stars
57
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c-form-decompile-desko77
Source
github.com/desko77/cursor-1c-skills