canvaslisted
Install: claude install-skill nathanaday/atlas-obsidian
# Canvas
A canvas is a vault-scoped JSON Canvas document under `wiki/canvases/`. Reads
are read-only; every change goes through one plan of kind `canvas`.
## Syntax source
Prefer a separately installed `kepano/obsidian-skills` `json-canvas` skill for
format details. Otherwise read [references/canvas-spec.md](references/canvas-spec.md).
The open standard is [JSON Canvas 1.0](https://jsoncanvas.org/spec/1.0/).
## Scope
- Call `status` first. Store boards under `wiki/canvases/`; use
`wiki/canvases/main.canvas` only when the user did not name a board.
- `wiki/canvases/canvases.md` is an optional catalog. Update it only when a canvas
is created, renamed, or removed.
- Use vault-relative paths in `file` and `background`; reject absolute paths,
`..`, and `~`.
- Reference only files already inside the vault. Do not download or copy assets
here; a source enters through `wiki-ingest`.
- Use `link` nodes for HTTPS URLs only. Creating the node makes no request, but
Obsidian may fetch preview metadata from that host when it renders; say so.
Otherwise use a text node containing the URL.
## Read-only operations
For status or list requests, read the `.canvas` files and report node counts,
group labels, broken edge endpoints, and missing file targets. If the default
canvas is absent, say so and offer a creation preview; do not create it during
a status request.
## Draft a change
1. Read the whole canvas and any catalog target.
2. Preserve unknown JSON fields and existing