$npx -y skills add AlekseiUL/sprut-agent-kit --skill excalidrawСоздание схем и диаграмм в Excalidraw для Obsidian. Use when user says 'сделай схему', 'нарисуй диаграмму', 'excalidraw', 'схема в obsidian', 'визуализация'.
| 1 | --- |
| 2 | name: excalidraw |
| 3 | description: "Создание схем и диаграмм в Excalidraw для Obsidian. Use when user says 'сделай схему', 'нарисуй диаграмму', 'excalidraw', 'схема в obsidian', 'визуализация'." |
| 4 | --- |
| 5 | |
| 6 | # Excalidraw Skill — Создание схем для Obsidian |
| 7 | |
| 8 | **Триггеры:** "сделай схему", "нарисуй диаграмму", "excalidraw", "схема в obsidian", "визуализация" |
| 9 | |
| 10 | --- |
| 11 | |
| 12 | ## Важно! Формат Excalidraw в Obsidian |
| 13 | |
| 14 | Obsidian Excalidraw плагин использует **сжатый формат** `compressed-json` (LZ-string). |
| 15 | Обычный JSON в code block **НЕ РАБОТАЕТ** — схема откроется как текст! |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## Как создавать схему |
| 20 | |
| 21 | ### Шаг 1: Использовать генератор |
| 22 | |
| 23 | Запустить скрипт `scripts/gen_excalidraw_v2.js` как шаблон или создать новый: |
| 24 | |
| 25 | ```bash |
| 26 | node scripts/gen_excalidraw_v2.js > "obsidian/Название.excalidraw.md" |
| 27 | ``` |
| 28 | |
| 29 | ### Шаг 2: Структура файла |
| 30 | |
| 31 | ```markdown |
| 32 | --- |
| 33 | excalidraw-plugin: parsed |
| 34 | tags: [excalidraw, тема] |
| 35 | --- |
| 36 | |
| 37 | # Excalidraw Data |
| 38 | |
| 39 | ## Text Elements |
| 40 | Текст блока 1 ^id1 |
| 41 | |
| 42 | Текст блока 2 ^id2 |
| 43 | |
| 44 | %% |
| 45 | ## Drawing |
| 46 | \`\`\`compressed-json |
| 47 | [сжатый JSON через lz-string] |
| 48 | \`\`\` |
| 49 | %% |
| 50 | ``` |
| 51 | |
| 52 | ### Шаг 3: Привязка текста к блокам (КРИТИЧНО!) |
| 53 | |
| 54 | **Текст ОБЯЗАТЕЛЬНО должен быть привязан к контейнеру!** |
| 55 | |
| 56 | На прямоугольнике: |
| 57 | ```json |
| 58 | { |
| 59 | "type": "rectangle", |
| 60 | "id": "box1", |
| 61 | "boundElements": [{ "type": "text", "id": "box1-text" }] |
| 62 | } |
| 63 | ``` |
| 64 | |
| 65 | На тексте: |
| 66 | ```json |
| 67 | { |
| 68 | "type": "text", |
| 69 | "id": "box1-text", |
| 70 | "containerId": "box1" |
| 71 | } |
| 72 | ``` |
| 73 | |
| 74 | **Без этой связи текст НЕ отображается внутри блоков!** |
| 75 | |
| 76 | --- |
| 77 | |
| 78 | ## Скрипт-генератор |
| 79 | |
| 80 | Путь: `scripts/gen_excalidraw_v2.js` |
| 81 | |
| 82 | Использует: |
| 83 | - `lz-string` для сжатия (npm install lz-string) |
| 84 | - Helper функции для создания блоков с привязанным текстом |
| 85 | |
| 86 | ### Основные функции: |
| 87 | |
| 88 | ```javascript |
| 89 | // Блок с текстом внутри |
| 90 | createBox(id, x, y, width, height, strokeColor, bgColor, text, fontSize) |
| 91 | |
| 92 | // Отдельный текст (заголовки) |
| 93 | createText(id, x, y, text, fontSize, color) |
| 94 | |
| 95 | // Стрелка |
| 96 | createArrow(id, x, y, dx, dy, color) |
| 97 | ``` |
| 98 | |
| 99 | --- |
| 100 | |
| 101 | ## Стиль схем для владельца |
| 102 | |
| 103 | ### Цвета фона |
| 104 | - Чёрный фон: `#000000` |
| 105 | - Тёмно-серый блок: `#111827` |
| 106 | - Очень тёмный: `#0f0f23` |
| 107 | |
| 108 | ### Цвета акцентов |
| 109 | - Зелёный (успех, поток): `#22c55e` / bg `#14532d` |
| 110 | - Оранжевый (warning, Gateway): `#f97316` / bg `#7c2d12` |
| 111 | - Фиолетовый (API, premium): `#a855f7` / bg `#581c87` |
| 112 | - Синий (user, channels): `#3b82f6` / bg `#1e3a8a` |
| 113 | - Индиго (агент): `#4338ca` / bg `#312e81` |
| 114 | - Серый (контейнеры): `#374151` / bg `#111827` |
| 115 | |
| 116 | ### Шрифты |
| 117 | - Заголовок: 24-28px |
| 118 | - Секции: 20px |
| 119 | - Блоки: 13-14px |
| 120 | - Подписи стрелок: 12px |
| 121 | |
| 122 | ### Язык |
| 123 | - Всё на русском |
| 124 | - Понятные описания |
| 125 | - Эмодзи для визуальных якорей ( 👤 ⚡ 🤖 📁 🔑) |
| 126 | |
| 127 | --- |
| 128 | |
| 129 | ## Чеклист перед созданием |
| 130 | |
| 131 | 1. ✅ Установлен lz-string: `npm install lz-string` |
| 132 | 2. ✅ Используется gen_excalidraw_v2.js или аналог |
| 133 | 3. ✅ Текст привязан через containerId + boundElements |
| 134 | 4. ✅ Файл имеет расширение `.excalidraw.md` |
| 135 | 5. ✅ Frontmatter: `excalidraw-plugin: parsed` |
| 136 | 6. ✅ Секция `## Text Elements` с `^id` для каждого текста |
| 137 | 7. ✅ Секция `## Drawing` с `compressed-json` |
| 138 | |
| 139 | --- |
| 140 | |
| 141 | ## Открытие в Obsidian |
| 142 | |
| 143 | ```bash |
| 144 | open "obsidian://open?vault=obsidian&file=Название.excalidraw" |
| 145 | ``` |
| 146 | |
| 147 | Если открывается как текст: |
| 148 | - Правый клик → "Open as Excalidraw drawing" |
| 149 | - Или кнопка переключения режима в углу |
| 150 | |
| 151 | --- |
| 152 | |
| 153 | ## Примеры рабочих схем |
| 154 | |
| 155 | - `obsidian/Agent - Architecture.excalidraw.md` — архитектура системы |
| 156 | - `obsidian/Агенты OpenClaw.excalidraw.md` — агентская система |
| 157 | |
| 158 | --- |
| 159 | |
| 160 | *Создано: 2026-02-03* |