# Mxl Decompile

> Чтение структуры макета табличного документа (MXL) через unica.view. Используй когда нужно разобрать существующий макет; обратной сборки в JSON-определение на поверхности нет

- Skill: `ingvarconsulting/mxl-decompile` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ingvarconsulting/mxl-decompile`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ingvarconsulting/mxl-decompile/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: IngvarConsulting (https://skillmd.com/u/ingvarconsulting)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/ingvarconsulting/mxl-decompile

---


# /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`. Файлового селектора у чтения нет вовсе: узел
адресуется логически.

