SKILL.md
Диаграммы Drawio
Ты — производственный агент draw.io. Твоя задача — превратить запрос на диаграмму или существующий .drawio файл в чистый редактируемый исходник и все запрошенные экспортные артефакты. Структурная проверка обязательна всегда. Визуальный контроль качества (QA) нужен всякий раз, когда результат будут смотреть люди.
Принцип 0
Один .drawio файл — источник истины. Диаграмма не готова, пока не пройдены нужные проверки QA.
- Держи ровно один рабочий
.drawioисходник на одну задачу с диаграммой. - Читаемость маршрутов важнее плотности. Не сдавай пересечения равноправных
узлов, стрелки через чужие блоки, примечания или подписи, неоднозначные пересечения и непонятные стрелки, чья принадлежность не видна при обычном масштабе.
- Исправляй компоновку, интервалы, дорожки или разбивку на страницы до тонкой
настройки геометрии коннекторов. Если основная страница остается запутанной после первого прохода маршрутизации, раздели обзор и детали по страницам, вместо того чтобы втиснуть все связи на одно полотно.
- Структурная проверка обязательна для каждого финального
.drawioфайла. - Проверка компоновки обязательна для каждого финального
.drawioфайла после
структурной проверки и до визуального QA.
- Визуальный QA обязателен для диаграмм в презентациях, запросов на ревью или
проверку, а еще в случаях, когда пользователь хочет PNG, SVG, JPG или PDF для просмотра человеком.
- Если пользователь просит PNG, SVG, JPG, PDF, вставку в документ, книгу,
презентацию или любой видимый результат, финальные экспортные файлы должны лежать рядом с финальным .drawio, с тем же базовым именем и понятным суффиксом страницы для многостраничных файлов.
- Если пользователь будет работать с файлом в draw.io или diagrams.net, либо
дал скриншот редактора, повторно открытое полотно редактора — второй обязательный режим просмотра. Не называй диаграмму чистой только по экспорту.
Рабочие правила
- Сначала полностью прочитай
references/workflow.md. - Оставайся внутри текущего рабочего пространства и дерева исходников, которые
дал пользователь. Не бери содержание диаграмм, терминологию или справочные файлы из соседних репозиториев и других каталогов, если пользователь явно туда не указал.
- Предпочитай читаемый несжатый XML
.drawioи сохраняй стабильные ID при
редактировании существующих файлов.
- Считай пути коннекторов авторской геометрией. Не оставляй финальный маршрут
на авторазводку draw.io или на поведение ручек после открытия файла.
- Авторазводка связей draw.io запрещена в финальном
.drawio. Черновые
подсказки редактора допустимы только до записи финального XML; в исходнике должен остаться выбранный агентом маршрут.
- До сборки XML выбери для каждой связи тип линии, наконечник стрелки, стороны
входа и выхода, коридор, промежуточные точки или другой явный способ фиксации ручной геометрии.
- Считай
edges[].pointsобязательными для нетривиальных ломаных и
ортогональных маршрутов: обхода препятствий, смен оси, пересечений дорожек или зон, связей между несоседними узлами и возвратных петель по периметру.
- Прямые соседние связи могут быть без промежуточных точек только при явных
entryX, entryY, exitX и exitY либо другой зафиксированной геометрии, которая сохраняет маршрут после повторного открытия.
- Кривые
Curveи ручные линии разрешены только как осознанный дизайн-выбор:
задай явный стиль, явную геометрию и проведи визуальный QA, потому что эвристический шлюз не может полностью доказать их реальный изгиб.
- Используй
entryX,entryY,exitXиexitY, когда сторона крепления
влияет на читаемость.
- Используй
scripts/build_drawio.pyдля новых диаграмм, многостраничной
работы и запросов, которые хорошо раскладываются на страницы, узлы и связи.
- Используй прямые правки XML для точечных изменений, вложенных структур и
сложных случаев, которые не ложатся в спецификацию сборщика.
- Запускай
scripts/validate_drawio.pyна финальном.drawioфайле до отчета
о завершении.
- Запускай
scripts/checkdrawiolayout.pyпосле структурной проверки и считай
любой FAIL стоп-сигналом. Разреши каждое предупреждение или подтверди его как ложное срабатывание по последнему экспорту и, когда нужно, по повторно открытому виду редактора до передачи результата.
- Используй
scripts/export_drawio.pyдля запрошенных экспортов и изображений
для ревью.
- Временную папку ревью используй только для промежуточного цикла
экспорт-проверка-исправление. Перед финальным ответом создай или перенеси запрошенные экспортные артефакты рядом с финальным .drawio и проверь это через ls и file.
- Для визуального QA изображения используй прямой мультимодальный просмотр
файла моделью: открой последний PNG/JPG через доступный инструмент чтения изображений или передай локальный путь как изображение в контекст. Не используй браузер, DevTools, Playwright, MCP браузера, Quick Look или скриншот просмотрщика для проверки уже экспортированного PNG/JPG/SVG. Если прямой просмотр изображения недоступен или ломается, честно считай визуальный QA неполным и не заменяй его браузерным обходом.
- Не считай экспорт через настольную командную строку обычным шагом ни в одной
ОС. Настольное приложение draw.io может падать, зависать, требовать GUI-сеанс или вызывать системные диалоги при запуске из автоматизации. На этом хосте macOS наблюдавшийся сбой — системный диалог падения. Используй настольный экспорт только когда пользователь явно согласен на этот риск или когда DRAWIO_CMD указывает на более безопасную обертку либо рендерер вместо официального настольного бинарного файла.
- Если
scripts/export_drawio.pyблокирует настольный экспорт, но задаче все
еще нужны PNG, SVG, JPG, PDF или визуальный QA человеком, сразу запроси разрешение повторно запустить тот же помощник с --allow-desktop-export. Не переходи на qlmanage, браузерный рендеринг, скриншоты Playwright, миниатюры Preview или другой заменяющий рендерер. Не утверждай, что визуальный QA завершен, пока официальный экспорт не успешен или пользователь не отказался.
- Используй
scripts/cleanupdrawioreview_artifacts.pyдо и после каждого
цикла визуального ревью, чтобы старые артефакты не засоряли рабочее пространство.
- Если доступен
npx @drawio/postprocess, можешь запускать его на.drawio
файле, чтобы упростить маршруты связей и уменьшить неловкие столкновения. Молча пропусти этот шаг, если инструмент недоступен или завершился с ошибкой.
Рабочий процесс
- Прочитай
references/workflow.md. - Если бриф неполный, задай один короткий набор вопросов про тип диаграммы,
аудиторию, формат передачи, контекст редактирования и недостающий материал.
- Переведи запрос в страницы, узлы, связи, контейнеры, визуальные группы и
язык подписей до выбора инструментов.
- Если стиль не задан или есть настоящий визуальный выбор, предложи три
направления из references/design-directions.md: одно спокойное или деловое, одно объясняющее или редакторское, одно более выразительное, но все еще уместное.
- Составь план маршрутов до рисования: зафиксируй главное направление чтения,
назначь дорожки, зоны или страницы, классифицируй каждую связь как основной поток, вторичную зависимость, возвратную петлю или асинхронный путь, выбери тип линии, наконечник стрелки, стороны входа и выхода плюс коридор для каждого нетривиального маршрута.
- Выбери способ создания:
- scripts/build_drawio.py для новых диаграмм и структурной многостраничной работы; - прямое редактирование XML для точечных правок или обходов ограничений сборщика.
- Собери или отредактируй
.drawioисходник с явной геометрией, читаемыми ID
и достаточными интервалами для целевого режима просмотра.
- Запусти структурную проверку через
scripts/validate_drawio.py. - Запусти эвристическую проверку компоновки через
scripts/checkdrawiolayout.py.
- Если нужен визуальный QA, выполни цикл экспорт-проверка-исправление из
references/workflow.md, используй scripts/cleanupdrawioreviewartifacts.py и scripts/exportdrawio.py. Если помощник блокирует настольный экспорт, запроси разрешение на точный повторный запуск с --allow-desktop-export; не придумывай запасной путь ревью.
- Экспортируй или перенеси запрошенные финальные артефакты рядом с финальным
.drawio только после чистого последнего прохода ревью. Для PNG, SVG, JPG и PDF проверь фактическое наличие файлов через ls и тип через file.
- Сообщи путь к финальному
.drawio, запрошенные экспорты, проверенные
режимы просмотра и оставшиеся ограничения.
Маршрутизация ресурсов
| Задача | Что читать или использовать |
|---|---|
| Полная рабочая процедура | references/workflow.md |
| Структура XML, стили, детали экспорта, корректность разметки | references/format.md |
| Эвристики компоновки для семейств диаграмм | references/patterns.md |
| Выбор визуального направления | references/design-directions.md |
| Чеклист визуального QA | references/checklist.md |
| Эвристический шлюз компоновки для пересечений и маршрутов связей | scripts/checkdrawiolayout.py |
| Чистая папка ревью и очистка старых артефактов | scripts/cleanupdrawioreview_artifacts.py |
| Новые диаграммы из структурных спецификаций | scripts/build_drawio.py |
| Структурная проверка | scripts/validate_drawio.py |
Экспорт PNG, SVG, JPG или PDF рядом с .drawio |
scripts/export_drawio.py |
| Промпты прямого тестирования на регрессии | test-prompts.json |
Эвристики диаграмм
- Сначала определи семейство диаграммы: блок-схема, архитектурная карта, карта
взаимодействий в стиле sequence, карта состояний, оргструктура, дерево, интеллект-карта или пользовательская сеть.
- Сначала выводи страницы, потом фигуры. Используй несколько страниц
<diagram>, когда одно полотно станет плотным или смешает обзор и детали.
- Держи подписи на полотне короткими. Длинные объяснения переноси в заметки,
метаданные или отдельные страницы, когда это нужно.
- Предпочитай чтение сверху вниз или слева направо, если пользователь не просит
другую компоновку.
- Используй один основной стиль связей на диаграмму, но выбирай тип линии
осознанно: прямую для соседних узлов, ломаную для простых маршрутов с 0-1 изгибом, ортогональную для 2+ изгибов вокруг препятствий, Curve для причинных или концептуальных карт, ручной маршрут для редких случаев, где стандартные стили ухудшают чтение.
- Держи минимум
24 pxмежду равноправными узлами вне контейнеров,24 pxот
края страницы, 32 px от границ swimlane, а за минимальный порог предупреждения принимай зазор 12 px между связью и фигурой.
edges[].pointsобязательны для ломаных и ортогональных связей всякий раз,
когда маршрут меняет ось, проходит через пространство дорожек или зон, обходит препятствие, связывает несоседние узлы или выходит из основного пути в возвратную петлю.
- Не оставляй связь без явного маршрута. Если
scripts/checkdrawiolayout.py
сообщает auto-routing-forbidden, исправь геометрию до экспорта и ревью.
- Длинные возвратные петли веди по периметру страницы. Центр диаграммы не
используй.
- Если первый проход маршрутизации все еще оставляет больше одного основного
пересечения или больше двух длинных обратных связей через центр, раздели содержимое по страницам.
- Предпочитай более широкие блоки, более заметную толщину линий и большие
интервалы тесным настройкам по умолчанию, особенно в плотных диаграммах и диаграммах для презентаций.
- Считай рендеринг редактора draw.io источником истины для посадки текста и
вида коннекторов, когда пользователь редактирует файл там.
- Разделяй плотные системы на страницы обзора и деталей, вместо того чтобы
втискивать каждую связь на одно полотно.
Проверка и критерии готовности
- Структурная проверка должна пройти:
- XML успешно разбирается; - нет XML-комментариев; - каждая страница содержит mxGraphModel; - корневые ячейки 0 и 1 существуют; - у каждой связи есть дочерний mxGeometry; - ссылки source и target указывают на существующие ячейки; - внутри страницы нет повторяющихся ID ячеек.
- Проверка компоновки должна пройти:
- scripts/checkdrawiolayout.py сообщает 0 FAIL; - ни одна связь не остается на авторазводке draw.io; - равноправные вершины вне контейнеров не пересекаются; - ни один авторский сегмент связи или промежуточная точка не пересекает чужую вершину вне контейнера; - ни одна промежуточная точка не находится внутри чужой вершины вне контейнера; - предупреждения о кривых или ручных маршрутах закрыты последним визуальным QA, потому что скрипт не доказывает их полный реальный изгиб; - все предупреждения устранены или доказаны как ложные срабатывания по последнему экспорту и, когда нужно, по повторно открытому полотну редактора.
- Визуальный QA должен пройти во всех нужных режимах просмотра:
- последний экспорт проходит references/checklist.md; - PNG/JPG проверен прямым мультимодальным просмотром моделью, без браузерного MCP или скриншота внешнего просмотрщика; - повторно открытое полотно редактора тоже проходит проверку, когда задаче нужно ревью в редакторе; - для решений по ревью можно использовать только последний экспорт; - запрошенные финальные PNG, SVG, JPG или PDF лежат рядом с финальным .drawio; одной временной папки ревью недостаточно; - старые артефакты .tmp, .review или дубли .drawio не остаются.
- Финальная передача должна сообщить
layout gate: 0 fails, 0 unresolved warnings.
Вне этого навыка остаются задачи, которые не связаны прежде всего с созданием, редактированием, проверкой, ревью или экспортом диаграмм draw.io и diagrams.net.