Drawbridge — скилл
Скилл и локальный сервер: Claude Code рисует блок-схемы и архитектуру, а диаграммы растут на холсте Excalidraw в браузере.
- 73 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Скилл заставляет агента отправлять запросы на локальный HTTP-сервер.
- Аутентификация API не описана: открытый порт позволит любому клиенту сети менять холсты.
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/drawbridgeОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Скилл заставляет агента отправлять запросы на локальный HTTP-сервер.
- Аутентификация API не описана: открытый порт позволит любому клиенту сети менять холсты.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Drawbridge состоит из скилла для Claude Code и небольшого сервера диаграмм. Агент отправляет по HTTP упрощенные описания фигур, сервер передает их по WebSocket в браузер, где Excalidraw превращает их в полноценные элементы с подгрузкой шрифтов и измерением текста. Диаграмма растет на глазах у пользователя. Скилл обучает Claude формату элементов, палитре с осмысленными цветами, правилам размеров и минимальным шрифтам, порядку рисования для потокового вывода и выгрузке в PNG или SVG. Сессии определяются хешем адреса страницы, а история изменений хранится в журнале, поэтому доступны отмена, очистка и управление камерой через API.
Для кого. Разработчикам, которые просят Claude Code нарисовать архитектуру или карту зависимостей и хотят видеть результат сразу, без экспорта.
Подходит, если
- Нужна блок-схема процесса, которую агент дорисовывает по ходу беседы.
- Многоуровневую архитектуру показывают команде на общем холсте.
- Карту зависимостей проекта строят и выгружают в PNG или SVG.
- Скрипт или агент должен публиковать диаграмму по HTTP из пайплайна.
Не подходит, если
- Нужна диаграмма в формате Mermaid или PlantUML: сервер рисует на Excalidraw.
- Нет возможности запустить локальный сервер Node.js.
- Диаграмму требуется получить без браузера и без участия человека.
Пример запроса к агенту
Нарисуй схему трехуровневого веб-приложения на Drawbridge и добавляй блоки по мере объяснения.Ограничения
Сервер запускают самостоятельно: `npm install`, `npm run build` и `npm start`, он слушает порт 3062 для HTTP и 3061 для WebSocket, а фронтенд отдает любой статический сервер. Картинки, брошенные на холст, не переживают перезагрузку страницы, пока не настроено хранилище DigitalOcean Spaces через переменные `DO_SPACES_*`. Описания аутентификации API нет, поэтому порт лучше держать закрытым от сети. У репозитория нет файла лицензии, условия использования не заданы.
Как отключить. Удалите `.claude/skills/drawbridge` из проекта и остановите сервер. Папку `data` с сохраненными сессиями удалите отдельно.
Частые вопросы
Как подключить скилл к проекту?
Создайте каталог `.claude/skills/drawbridge` и скопируйте туда `skills/SKILL.md` из репозитория. После этого Claude сам вызывает скилл на просьбы о диаграммах.
Как открыть холст?
Откройте `http://localhost:3000/#my-session` после запуска фронтенда командой `npx serve dist`. Часть адреса после решетки задает идентификатор сессии.
Какие запросы принимает API?
`POST /api/session/:id/elements` заменяет все элементы, `append` добавляет новые, `clear` очищает, `undo` отменяет последнюю операцию, `viewport` двигает камеру.
Сохраняются ли диаграммы?
Да, история изменений пишется в журнал в каталоге `DRAWBRIDGE_DATA_DIR`, по умолчанию `./data`. Изображения хранятся отдельно и требуют настройки Spaces.
Можно ли запустить сервер в контейнере?
Да. Команда `podman-compose up -d` собирает и запускает сервер на порту 5050, а для автозапуска есть пример службы systemd.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыExcaliself — свой сервер доски Excalidraw: встроенный MCP дает агенту искать, читать, создавать и экспортировать схемы.
Excalidraw MCP
Excalidraw MCP App Server
MCP-сервер рисует диаграммы в стиле от руки Excalidraw прямо в чате: потоковая отрисовка, полноэкранное редактирование, экспорт
Около сотни скиллов для Claude Code: встречи и расшифровки, исследования, публикации, TDD, Telegram, почта и личная аналитика
Claude Code Toolkit (robertguss)
Claude Code Toolkit
Набор скиллов и хуков для Claude Code: брейншторм, ведение проекта воркерами, вики, конвейер книги.
Маркетплейс скиллов daymade
Claude Code Skills Marketplace
Маркетплейс плагинов для Claude Code и Codex: документы, аудио, GitHub, история сессий, финансы, macOS и доработанный skill-creator
Second Brain Skills
Claude Code Second Brain Skills
Набор скиллов для Claude Code под работу со знаниями: бренд и голос, клиент MCP, презентации PPTX, видео на Remotion, регламенты SOP и конструктор скиллов
Коротко о README
Репозиторий включает сервер на Express, фронтенд на Excalidraw и файл скилла. Автор благодарит проекты, на которых построен холст. В README описаны формат элементов, палитра, правила размеров, порядок рисования и полные примеры диаграмм.
Бейдж для README
Исходный SKILL.md
---
name: drawbridge
description: |
Generate Excalidraw diagrams with a hand-drawn aesthetic using Drawbridge.
Use when user asks for: flowcharts, dependency diagrams, project visualization,
task maps, or "make a diagram of this". Pushes elements to a live Excalidraw
canvas via HTTP API, or renders to PNG/SVG.
---
# Drawbridge Diagram Skill
Generate hand-drawn style diagrams as Excalidraw JSON. Uses the simplified element format with `convertToExcalidrawElements` handling all the heavy lifting (text measurement, container binding, arrow routing).
## Element Format (Simplified)
Only specify what matters. `convertToExcalidrawElements` fills in all required internal properties (groupIds, frameId, seeds, versions, etc.).
### Required Fields (all elements)
`type`, `id` (unique string), `x`, `y`
### Defaults (skip these)
strokeColor="#1e1e1e", backgroundColor="transparent", fillStyle="solid", strokeWidth=2, roughness=1, opacity=100
### Labeled Shapes (PREFERRED)
Add `label` to any shape for auto-centered text. No separate text elements needed:
```json
{ "type": "rectangle", "id": "r1", "x": 100, "y": 100, "width": 200, "height": 80,
"roundness": { "type": 3 }, "backgroundColor": "#a5d8ff", "fillStyle": "solid",
"label": { "text": "API Server", "fontSize": 20 } }
```
- Works on rectangle, ellipse, diamond
- Text auto-centers and container auto-resizes to fit
- Always include `"roundness": { "type": 3 }` for rounded corners
### Standalone Text (titles, annotations only)
```json
{ "type": "text", "id": "t1", "x": 150, "y": 50, "text": "System Architecture", "fontSize": 28 }
```
- `x` is the LEFT edge of the text
- To center text at position cx: `x = cx - (text.length * fontSize * 0.5) / 2`
- `textAlign` does NOT control horizontal position — it only affects multi-line wrapping
### Arrows
```json