Чтение структуры макета табличного документа (MXL) через unica.view. Используй когда нужно разобрать существующий макет; обратной сборки в JSON-определение на поверхности нет
Installs into .claude/skills of the current project.
Are you the author of Mxl Decompile?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ingvarconsulting-mxl-decompile)
---
name: mxl-decompile
description: Чтение структуры макета табличного документа (MXL) через unica.view. Используй когда нужно разобрать существующий макет; обратной сборки в JSON-определение на поверхности нет
allowed-tools:
- Bash
- Read
- Write
- Glob
---
# /mxl-decompile — Декомпилятор макета в DSL
## MCP routing
- Preferred path: use MCP `unica` tool `unica.view` по адресу макета.
- Не зови внутренние адаптеры напрямую: они спрятаны за MCP `unica`.
- Чтение не меняет исходники: `view` отвечает проекцией узла и его ревизией.
Макет — узел логического дерева: `<набор>:<Вид>.<Имя>.Template.<Макет>`. Узел
макета отдаёт именованные области, параметры и наборы колонок; ветвь `Area`
раскрывает одну область, а её тело — ячейки. Файлового селектора у чтения нет;
путь, пришедший снаружи (из диффа, лога сборки), переводит в адрес аварийный
`unica.resolve`.
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {
"at": "main:Report.Продажи.Template.ПФ_MXL_Продажи"
}
}
}
```
Одна область — адресом её ветви:
```json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "unica.view",
"arguments": {
"at": "main:Report.Продажи.Template.ПФ_MXL_Продажи.Area.Шапка"
}
}
}
```
## Чего на поверхности нет
Обратной сборки макета в JSON-определение DSL **нет**: `view` отвечает своей
проекцией узла, а не форматом, который принимал бы обратный компилятор. DSL
ниже остаётся описанием формата для чтения, а не выходом инструмента. Если
задача требует ровно такого JSON — сообщи это как пробел контракта Unica MCP.
Правка макета идёт через `unica.apply` (`mxl.set`), см. `mxl-compile`.
## JSON-схема DSL
Полная спецификация формата: **`../../references/specs/mxl-dsl-spec.md`** (прочитать через Read tool).
## Генерация имён
Скрипт автоматически генерирует осмысленные имена:
- **Шрифты**: `default`, `bold`, `header`, `small`, `italic` — или описательные имена по свойствам
- **Стили**: `bordered`, `bordered-center`, `bold-right`, `border-top` и т.д. — по комбинации свойств
## Детектирование `rowStyle`
Если в строке есть пустые ячейки (без параметров/текста) и все они имеют одинаковый формат — этот формат распознаётся как `rowStyle`, а пустые ячейки исключаются из вывода.
## Адрес, а не путь
Имя набора даёт `unica.view {}`, адрес по имени объекта —
`unica.search {corpus: "names"}`, а путь, найденный иначе, переводит в адрес
аварийный `unica.resolve`. Файлового селектора у чтения нет вовсе: узел
адресуется логически.