editing-whiteboardslisted
Install: claude install-skill yishan-io/yishan-mono
# Editing Whiteboards
Use this skill when a user asks you to draw on, add to, or change a Yishan whiteboard file (`.excalidraw`). The whiteboard tab renders an Excalidraw canvas from the file's JSON. You edit the JSON directly with your normal file tools; the canvas picks the change up from disk.
## The File Format
A `.excalidraw` file is one JSON object:
```json
{
"type": "excalidraw",
"version": 2,
"source": "yishan",
"elements": [],
"appState": {},
"files": {}
}
```
- `elements` — the drawing objects (shapes, text, arrows). Array order is z-order: later elements render on top of earlier ones.
- `appState` — scene settings. The app persists only `viewBackgroundColor`, `gridSize`, `gridStep`, and `gridModeEnabled`. Transient fields (`scrollX`, `scrollY`, `zoom`, `selectedElementIds`, `selectionElement`, `editingGroupId`, `editingTextElement`, `editingLinearElement`) are stripped on save — never set them, never rely on them.
- `files` — embedded images, keyed by the image element's `id` (see Images).
- `source` — always keep `"yishan"`.
## Element Invariants (follow these, always)
1. **Ids are unique and stable.** Never reuse an id and never change an existing element's id — other elements reference ids (`boundElements`, `containerId`, image `files` keys).
2. **Edit surgically.** Read the file, change only the fields you intend, and preserve everything else. Never regenerate the whole file from a guess — unknown fields you drop can break references.
3. **Bu