Re-layout existing Obsidian Canvas nodes using 6 spatial algorithms: grid (galleries, mood boards), dagre (flowcharts, org charts), radial (mind maps), force-directed (knowledge graphs), linear (timelines), and auto-detect. Preserves group membership, snaps to 20px grid, refits zones around content. Triggers on: canvas layout, re-layout canvas, arrange canvas, auto-layout, organize canvas, fix canvas layout, canvas grid, canvas dagre.
Read ../canvas/references/layout-algorithms.md for algorithm details and selection guide.
Read ../canvas/references/performance-guide.md for node limits.
/canvas list to show options).auto detection.python3 scripts/canvas_layout.py [canvas_path] [algorithm] [options]
python3 scripts/canvas_validate.py [canvas_path] to confirm valid output.When the user says /canvas layout auto or doesn't specify an algorithm, use the auto-detection in the script. It analyzes edge density, node types, and connection patterns.
For explicit requests, map user intent to algorithm:
| User says | Algorithm | Options |
|---|---|---|
| "organize these images" | grid | --sort-by type |
| "make a grid" | grid | |
| "flowchart layout" | dagre | --direction TB |
| "left to right flow" | dagre | --direction LR |
| "mind map layout" | radial | |
| "expand from [node]" | radial | --center [node-id] |
| "untangle this" | force | |
| "spread out the nodes" | force | |
| "make a timeline" | linear | --axis horizontal |
| "vertical sequence" | linear | --axis vertical |
| "auto-layout" | auto | |
| "fix the layout" | auto |
Pass algorithm-specific options to the script:
--columns N (override auto-detection), --sort-by type|size--direction TB|LR|BT|RL--center node-id (override auto-detection of hub node)--iterations N (default 100, reduce to 50 for 50+ nodes)--axis horizontal|verticalAdd --dry-run to preview without writing.
When a canvas has more than 30 nodes, dispatch the canvas-layout agent instead of running the script directly. The agent can:
.bak already exists, use .bak2, .bak3, etc.