draw-on-canvas
Skill0 starsChanged 46 days agoMITView on GitHub
Draw diagrams, flowcharts, mind maps, timelines, kanban boards and sticky-note walls on a Nemi Canvas board, and read or rearrange an existing board. Use when the user wants something drawn, sketched, mapped or laid out visually in Nemi, or asks what a board says.
In this repository9 other files it gives its agents.
- build-sheetsSkill
- convert-and-editSkill
- nemi-basicsSkill
- organize-filesSkill
- plan-with-calendarSkill
- read-and-extractSkill
- run-formsSkill
- share-and-collectSkill
- write-docsSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Every element is { type, x, y, w, h, ...
- Distinctive: line 33
Check the returned snapshot: elements that were invalid are dropped.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Nemi Canvas
A Canvas board is an infinite whiteboard. Through this connection a board is a flat list of elements drawn in order; later elements draw on top.
Elements
Every element is { type, x, y, w, h, ... } in world pixels, y growing downwards.
| type | use for | notes |
rect | boxes, steps, cards | radius rounds corners (default 6) |
ellipse | start and end nodes, emphasis | |
text | titles, labels | fontSize 8 to 96 (default 16), bold, align |
sticky | notes, ideas, kanban cards | fill is the note colour |
arrow | flow, cause and effect | x, y is the start; w, h is the delta to the end (may be negative); bend curves it |
line | connectors without direction, dividers | same geometry as arrow |
draw | freehand | points as [dx, dy] relative to x, y; avoid unless asked |
Common fields: stroke (hex, default #1e1e1e), fill (hex, or transparent, the default), strokeWidth (1 to 12, default 2), text (a shape's label, up to 4000 characters), dash (solid, dashed, dotted), opacity (0.05 to 1), angle (degrees). Leave id out on new elements; ids are assigned. At most 2000 elements per board.
Every update replaces the whole board
canvas_update with elements replaces everything. To change a board:
canvas_get(leaveinclude_strokesfalse unless you must keep freehand drawings; if the board hasdrawelements you must set it true, or they are lost).- Edit the list: keep every existing element, with its id, exactly as it was unless you are changing it.
canvas_updatewith the complete list.- Check the returned snapshot: elements that were invalid are dropped.
Cards that point at files, documents, links or sheet data (file, docref, embed, sheetdata) come back from canvas_get; send them back unchanged.
Lay it out on a grid
Boards look deliberate when everything sits on a grid. Use these numbers unless the content needs more room:
- Box: 200 x 80, text inside via
text,filla light colour,strokea darker one of the same hue. - Gap: 80 between boxes horizontally, 60 vertically.
- Title: a
textelement at the top left,fontSize32,boldtrue. - Arrows: from the middle of one box's edge to the middle of the next. For a box at (x, y, w, h) flowing right to the next at (x2, y2): start (x + w, y + h/2), delta (x2 - (x + w), (y2 + h2/2) - (y + h/2)).
Patterns:
- Flowchart: steps left to right or top to bottom, decisions as
ellipseor a rotatedrectwith two labelled outgoing arrows. - Mind map: the central idea in the middle, branches on a circle around it, sub-ideas further out;
lineconnectors. - Timeline: a long horizontal
line, events as small boxes alternating above and below, dates intext. - Kanban: column headers as
text,stickycards stacked beneath each (200 x 120, gap 20). - Retro or brainstorm wall: one
stickycolour per category, with atextlegend.
Soft colours read well together: yellow #FFF3B0, green #D9F2C4, blue #D6E8FF, pink #FFD9E6, purple #E6DDFF, orange #FFE0C2, with dark text.
Create
canvas_createwith atitle.- Work out every coordinate first, then
canvas_updatewith the whole element list in one call. - Reply with what you drew in a sentence. If the client shows the board, do not describe it element by element.
Read
canvas_get and read the text and sticky elements to know what the board says. Group what you find by position (columns, clusters) when summarising a wall of notes.
Delete
canvas_delete is permanent. Confirm first.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

