From claude-superskills
Creates and edits Obsidian Canvas (.canvas) files for infinite visual workspaces with note cards, text, files, embeds, and groups to map ideas and link notes spatially.
npx claudepluginhub ericgandrade/claude-superskills --plugin claude-superskillsThis skill uses the workspace's default tool permissions.
This skill creates and edits Obsidian Canvas files (`.canvas`) — a native Obsidian feature that provides an infinite, freeform visual workspace. Canvas is fundamentally different from both Mermaid diagrams (structured graph DSL) and Excalidraw (hand-drawn sketches): it is a spatial navigation interface for your vault, where notes become draggable cards that preserve their full content and linki...
Creates and edits Obsidian JSON Canvas (.canvas) files with nodes, edges, groups for mind maps, flowcharts, and infinite visual diagrams.
Create and edit Obsidian JSON Canvas (.canvas) files with nodes, edges, groups for mind maps, flowcharts, project boards, and visual note organization.
Manages Obsidian canvas JSON files: creates visual boards, adds images/text cards/PDFs/wiki pages with zone auto-positioning. Integrates /banana images. Use /canvas commands.
Share bugs, ideas, or general feedback.
This skill creates and edits Obsidian Canvas files (.canvas) — a native Obsidian feature that provides an infinite, freeform visual workspace. Canvas is fundamentally different from both Mermaid diagrams (structured graph DSL) and Excalidraw (hand-drawn sketches): it is a spatial navigation interface for your vault, where notes become draggable cards that preserve their full content and linking behavior.
On a Canvas, you can place:
.md files in the vaultCanvas files are JSON with .canvas extension. They are rendered natively by Obsidian with no plugins required (available since Obsidian 1.1.0).
Invoke this skill when:
Do NOT use this skill when:
excalidraw-diagram insteadmermaid-diagram insteadobsidian-links insteadCanvas files are JSON with the extension .canvas. Structure:
{
"nodes": [
{
"id": "node-1",
"type": "text",
"x": -200,
"y": -100,
"width": 250,
"height": 100,
"text": "Card content here"
},
{
"id": "node-2",
"type": "file",
"file": "Projects/Project Alpha.md",
"x": 100,
"y": -100,
"width": 300,
"height": 200
},
{
"id": "group-1",
"type": "group",
"x": -250,
"y": -150,
"width": 600,
"height": 300,
"label": "Group Label",
"color": "1"
}
],
"edges": [
{
"id": "edge-1",
"fromNode": "node-1",
"fromSide": "right",
"toNode": "node-2",
"toSide": "left",
"label": "Connection label"
}
]
}
| Type | Description | Required Fields |
|---|---|---|
text | Floating rich text (Markdown) | text, x, y, width, height |
file | Embedded vault note or file | file (vault-relative path), x, y, width, height |
link | Embedded webpage iframe | url, x, y, width, height |
group | Colored grouping box | x, y, width, height, label (optional), color (optional) |
Edges connect any two nodes with a labeled arrow:
{
"id": "edge-1",
"fromNode": "source-node-id",
"fromSide": "bottom",
"toNode": "target-node-id",
"toSide": "top",
"label": "Arrow label",
"color": "4",
"fromEnd": "none",
"toEnd": "arrow"
}
Side values: top, bottom, left, right
End values: none (no arrowhead), arrow (filled triangle)
Colors: 1 red, 2 orange, 3 yellow, 4 green, 5 cyan, 6 purple — or "#hex" for custom
Obsidian Canvas uses a named color palette for nodes and edges:
| Code | Color Name | Typical Use |
|---|---|---|
"1" | Red | Urgent / critical items |
"2" | Orange | In-progress / active |
"3" | Yellow | Ideas / to-review |
"4" | Green | Done / approved |
"5" | Cyan | Reference / resources |
"6" | Purple | Personal / goals |
Central concept node surrounded by related notes:
(0, 0) with larger dimensions (300×150)Use for: topic MOC, project overview, concept exploration
Multiple vertical columns, each representing a category or status:
Use for: Kanban boards, area-of-life dashboards, comparison views
Cards arranged left to right or top to bottom with arrows:
Use for: project roadmaps, process documentation, sequential thinking
Groups of cards inside larger group boxes:
group nodes to visually bound clustersUse for: multi-project dashboards, domain + subdomain mapping
find <vault-root> -name "*.md" | grep -i "<search-term>"
find <vault-root> -name "*.canvas"
Classify the user's intent:
| User goal | Layout pattern |
|---|---|
| "Overview of all my projects" | Column or hub-and-spoke |
| "Visual workspace for this research topic" | Hub-and-spoke or freeform |
| "Map out the relationships between these concepts" | Hub-and-spoke with edges |
| "Brainstorm dashboard" | Column layout with text cards |
| "See my notes on X side by side" | Grid layout with file cards |
| "Project planning board" | Column layout (Kanban-style) |
Before writing JSON, plan the positions:
Standard card dimensions:
Write the complete .canvas JSON file. Ensure:
file references use vault-relative paths (no leading /)fromNode and toNode values reference existing node IDsOutput the complete JSON in a fenced code block. Then instruct the user to:
<Name>.canvas in the Obsidian vault.md files from the file explorer onto the canvasNEVER:
file path that does not exist in the vault without noting it as a placeholderid values — all node and edge IDs must be uniquefromNode or toNode that is not in the nodes arrayALWAYS:
.canvasfile nodes (no absolute paths)project-alpha-card, inbox-group)Project Dashboard.canvas)Example 1: Project dashboard with three columns
User: "Create a canvas dashboard showing my three active projects: Project Alpha, Initiative X, and Research Sprint, each as a file card in their own column."
Output: Canvas JSON with three file cards, one group per column with a label, and consistent vertical alignment. Filename suggestion: Active Projects Dashboard.canvas.
Example 2: Hub-and-spoke concept map
User: "Create a canvas with 'Product Strategy' at the center, linked to six surrounding note cards: Vision, ICP, Positioning, Pricing, GTM, and Roadmap."
Output: Canvas JSON with a central text card for Product Strategy, six file cards placed around it at consistent angles, and six arrows pointing outward from center. Color-coded edges by theme.
Example 3: Brainstorming canvas
User: "Create a blank brainstorming canvas for our Q3 planning session with four groups: Now, Next, Later, and Ideas. Add a title card at the top."
Output: Canvas JSON with one wide text card at the top as title, and four color-coded group boxes arranged in a 2×2 grid below. Groups are empty — ready for cards to be dropped in during the session.
Example 4: Research deep-dive workspace
User: "Build a canvas for my deep research on remote work trends. Place the main note 'Remote Work Research.md' at center, and add empty text cards around it for: Key Statistics, Opposing Views, Supporting Evidence, Open Questions."
Output: Canvas JSON with the central file card and four surrounding text cards with placeholder content and labeled headings. Edges pointing from the central card to each surrounding card.
Example 5: Obsidian canvas Kanban board
User: "Create a Kanban canvas with four status columns: Backlog, In Progress, Review, Done. Add three card placeholders in Backlog."
Output: Canvas JSON with four vertical group columns, three text cards in the Backlog column with placeholder task text, and appropriate color coding (gray for Backlog, orange for In Progress, yellow for Review, green for Done).