json-canvas

This skill provides instructions and structural guidelines for creating, editing, and validating Obsidian .canvas files according to the JSON Canvas 1.0 specification.

42.0K
Installs
4
Use cases
5/10
Quality

Is json-canvas safe to install?

Review before installing

Review before installing: our audit of json-canvas's source files found 0 shell commands, 0 external URLs, file reads and writes (medium risk). Every command and URL listed appears verbatim in the skill's source. The skill involves reading and writing local .canvas files. It does not execute shell commands or perform network requests.

How we audit skills: our security review methodology.

Who is this skill for?

Users working with Obsidian canvas files who need to programmatically generate or modify visual canvases, mind maps, or flowcharts.

What can you do with it?

  • Creating new .canvas files with nodes and edges
  • Adding text, file, link, or group nodes to existing canvases
  • Connecting nodes with edges
  • Validating canvas file structure and ID integrity

How good is this skill?

Quality score: 5/10. The skill documentation is comprehensive, providing clear structural requirements, validation checklists, and specific examples for all node types.

What does the skill file contain?

SKILL.md
# JSON Canvas Skill

## File Structure

A canvas file (`.canvas`) contains two top-level arrays following the [JSON Canvas Spec 1.0](https://jsoncanvas.org/spec/1.0/):

```json
{
  "nodes": [],
  "edges": []
}
```

- `nodes` (optional): Array of node objects
- `edges` (optional): Array of edge objects connecting nodes

## Common Workflows

### 1. Create a New Canvas

1. Create a `.canvas` file with the base structure `{"nodes": [], "edges": []}`
2. Generate unique 16-character hex IDs for each node (e.g., `"6f0ad84f44ce9c17"`)
3. Add nodes with required fields: `id`, `type`, `x`, `y`, `width`,...

Frequently asked questions

What file format does this skill use?

It uses the JSON Canvas 1.0 specification, which stores data in .canvas files containing nodes and edges arrays.

How are node identifiers generated?

Nodes require unique 16-character lowercase hexadecimal strings.

What node types are supported?

Supported types are text, file, link, and group.

How should I handle line breaks in text nodes?

Use the \n escape sequence within the JSON string.

Data sourced from kepano/obsidian-skills on GitHub. Install counts from skills.sh. The summary and security audit are derived from the skill's source files: every command and URL listed appears verbatim in the source.

Related skills