Продолжение чистки после перечитывания глазами модели, которая применяет навык. - из раздела ограничений убраны доли по корпусу ERP. Это результат исследования, а не то, что помогает применять навык: модель работает с конкретным макетом, а не с популяцией, и числа стареют. Перечень того, что теряется при round-trip, остался списком; замеры живут в материалах кампании; - фраза про ошибки короткой формы была вырвана из контекста: шла после списка ограничений, начиналась с символа в кавычках, и до самого конца было непонятно, что речь про отказ. Плюс в один ряд попало разнородное — три случая про сам шорткат и переполнение columns, которое к короткой форме не привязано. Переписано правилами: маркеру нужно, что продолжать; объектный элемент не несёт col; элементов не больше columns. Поведение при нарушении — одной фразой в конце; - в SKILL.md ключевые правила шли вперемешку по уровням (страница, ячейка, строка, ячейка, область). Пересобраны сверху вниз: документ → область → строка → ячейка; - буллет про namedAreas сокращён: обнаружимость ключа даёт карта структуры, а из правил там неочевидно только отсутствие ключа type. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.8 KiB
name, description, argument-hint, allowed-tools
| name | description | argument-hint | allowed-tools | ||||
|---|---|---|---|---|---|---|---|
| mxl-compile | Компиляция табличного документа (MXL) из JSON-определения. Используй когда нужно создать макет печатной формы | <JsonPath> <OutputPath> |
|
/mxl-compile — Компилятор макета из DSL
Принимает компактное JSON-определение макета и генерирует корректный Template.xml для табличного документа 1С. Claude описывает что нужно (области, параметры, стили), скрипт обеспечивает корректность XML (палитры, индексы, объединения, namespace).
Использование
/mxl-compile <JsonPath> <OutputPath>
Параметры
| Параметр | Обязательный | Описание |
|---|---|---|
| JsonPath | да | Путь к JSON-определению макета |
| OutputPath | да | Путь для генерации Template.xml |
Команда
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/mxl-compile.ps1" -JsonPath "<путь>.json" -OutputPath "<путь>/Template.xml"
Рабочий процесс
- Написать JSON-определение (Write tool) → файл
.json - Вызвать
/mxl-compileдля генерации Template.xml - Вызвать
/mxl-validateдля проверки корректности - Вызвать
/mxl-infoдля верификации структуры
Если макет создаётся по изображению (скриншот, скан печатной формы) — сначала вызвать /img-grid для наложения сетки, по ней определить границы колонок и пропорции, затем использовать "Nx" ширины + "page" для автоматического расчёта размеров.
JSON-схема DSL
Ниже — компактная структура и ключевые правила, достаточные для типового макета. Полные таблицы полей (все свойства шрифтов, стилей, ячеек), развёрнутый пример и ограничения формата — в reference/dsl-spec.md; нужны не всегда, читать по необходимости.
Краткая структура:
{ columns, page, defaultWidth, columnWidths,
fonts: { name: { face, size, bold, italic, underline, strikeout } },
styles: { name: { font, align, valign, border, borderWidth, wrap, format } },
areas: [{ name, rows: [{ height, rowStyle, cells: [
{ col, span, rowspan, style, param, detail, text, template }
]}]}],
namedAreas: [{ name, rows, cols }]
}
Ключевые правила:
page— формат страницы ("A4-landscape","A4-portrait"или число). Автоматически вычисляетdefaultWidthиз суммы пропорций"Nx"nameу области вareasнеобязателен: область без имени — просто кусок сетки, именованной она не станетnamedAreas— области, которые не описываются диапазоном подряд идущих строк: полоса колонок, прямоугольник, ячейка. Тип не указывается, он следует из того, какие оси заданыrowStyle— автозаполнение пустот стилем (рамки по всей ширине)emptyв строке — шорткат для N подряд пустых строк ({ "empty": 3 }= три{})- Строку можно писать массивом ячеек — позиция из порядка,
colне нужен:"текст","{Имя}"— параметр,">"— продолжить ячейку слева,"|"— сверху,null— пропуск колонки col— 1-based позиция колонкиrowspan— объединение строк вниз (rowStyle учитывает занятые ячейки)- Тип заполнения определяется автоматически:
param→ Parameter,text→ Text,template→ Template
Двухуровневая шапка массивами:
"rows": [
["Вид", "Остаток", ">", "Итог"],
["|", "начало", "конец", "|"],
["{Вид}", "{Нач}", "{Кон}", "{Итог}"]
]