Drawbridge skill
A skill plus a local server: Claude Code draws flowcharts and architecture diagrams that appear live on an Excalidraw canvas.
- 73 ★ on the repository
- Last commit
Extended access
Why this level
- The skill makes the agent send requests to a local HTTP server.
- API authentication is not documented: an open port would let any network client alter canvases.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/drawbridgeDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The skill makes the agent send requests to a local HTTP server.
- API authentication is not documented: an open port would let any network client alter canvases.
This is third-party code. Review the repository files before installing.
What it does
Drawbridge is a Claude Code skill and a small diagram server. The agent sends simplified shape descriptions over HTTP, the server relays them over WebSocket to a browser, where Excalidraw turns them into full elements with font loading and text measurement. The diagram grows in front of the user. The skill teaches Claude the element format, a palette with semantic colors, sizing rules and font minimums, a drawing order for streaming, and PNG or SVG export. Sessions are keyed by the page URL hash and changes are kept in a log, so undo, clear and camera control are available through the API.
Who it is for. Developers who ask Claude Code to draw an architecture or dependency map and want to see the result at once, without exporting.
Good fit when
- You need a process flowchart the agent keeps drawing during the conversation.
- A multi-tier architecture is shown to a team on a shared canvas.
- A project dependency map is built and exported to PNG or SVG.
- A script or agent must publish a diagram over HTTP from a pipeline.
Not a fit when
- You need a Mermaid or PlantUML diagram, while the server draws on Excalidraw.
- A local Node.js server cannot be run.
- A diagram must be produced without a browser and without a human.
Example request
Draw a three-tier web application diagram on Drawbridge and add blocks as you explain.Limitations
Run the server yourself with `npm install`, `npm run build` and `npm start`: it listens on port 3062 for HTTP and 3061 for WebSocket, and any static server serves the frontend. Images dropped on the canvas do not survive a page reload until DigitalOcean Spaces storage is configured through the `DO_SPACES_*` variables. The API documents no authentication, so keep the port closed to the network. The repository has no license file, so terms of use are not defined.
How to disable. Delete `.claude/skills/drawbridge` from the project and stop the server. Remove the `data` folder with saved sessions separately.
FAQ
How do I add the skill to a project?
Create `.claude/skills/drawbridge` and copy `skills/SKILL.md` from the repository there. Claude then invokes the skill on diagram requests.
How do I open the canvas?
Open `http://localhost:3000/#my-session` after starting the frontend with `npx serve dist`. The part after the hash sets the session ID.
Which requests does the API accept?
`POST /api/session/:id/elements` replaces all elements, `append` adds new ones, `clear` wipes, `undo` reverts the last operation and `viewport` moves the camera.
Are diagrams persisted?
Yes, change history is written to a log in `DRAWBRIDGE_DATA_DIR`, `./data` by default. Images are stored separately and need Spaces configured.
Can the server run in a container?
Yes. `podman-compose up -d` builds and starts the server on port 5050, and a systemd service example covers autostart.
Discussion
No questions or reviews yet.
Related
SkillsExcaliself is a self-hosted Excalidraw whiteboard whose built-in MCP lets agents find, read, create and export drawings.
Excalidraw MCP
Excalidraw MCP App Server
MCP server that draws hand-drawn Excalidraw diagrams inside the chat: streaming render, fullscreen editing, export
About a hundred skills for Claude Code: meetings, research, publishing, TDD, Telegram, email and personal analytics
Claude Code Toolkit (robertguss)
Claude Code Toolkit
A set of Claude Code skills and hooks: brainstorming, worker-led project leadership, a wiki, and a book pipeline.
daymade Skills Marketplace
Claude Code Skills Marketplace
A plugin marketplace for Claude Code and Codex: documents, audio, GitHub, session history, finance, macOS and a hardened skill-creator
Second Brain Skills
Claude Code Second Brain Skills
A set of Claude Code skills for knowledge work: brand and voice, an MCP client, PPTX slides, Remotion video, SOPs and a skill creator
README in short
The repository includes an Express server, an Excalidraw frontend and the skill file. The author credits the projects the canvas is built on. The README documents the element format, palette, sizing rules, drawing order and complete diagram examples.
README badge
Original 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