skills/mcp.dessn.ai/dessn-board

dessn-board

Installation
SKILL.md

Boards on Dessn

A board is read by someone who wasn't in the chat. It says what it is in a title, each frame is named for what it shows, arrows say what moves the person on, and nothing overlaps or is cut off. Board writes spend no credits; every sign-in can make them (a read-only API key can't).

The tools

  • dessn_pages_create({ project, title, private?, key }) → the page's id and url. No project yet: newProject: '<a name>' in place of project makes one whose Library is Dessn's starter app (newProject.starter: a small React app; a frame of it at a new route, from: { surface: '/' }, route: '/pricing', plays once you write its page; refused STARTER_COPYING for its first ~40 s, so send it again), or answers the one made before for that name. HTML frames (from: { html }) are drawn, for visuals. Connecting their own code (newProject.connectCode) replaces this starter in the same project; their pages stay (a starter still being made isn't ready to replace yet).
  • dessn_nodes_create({ page, key, items, diagram? }) writes a batch in order: frame (from a Library screen { surface: <id, link or route> }, or a copy { frame, copy: true }), note (html: h1, h2, p, li, small, code, or Markdown; w, h: 'auto'), text, image (an uploaded asset), arrow (from, to, label, dashed, heads), section. Every item but an arrow takes x, y or a position: { rightOf | leftOf | below | above: <id or an earlier item's key>, gap?, align? }, which slides past what is already there. Give items their own key so later items and arrows can name them. dryRun: true answers where each would land and writes nothing.
  • dessn_nodes_arrange({ page, as, ids | root | groups }): row, column, grid (perRow), flow (follows the arrows from root, widening gaps to hold each label), sections (groups: [{ heading, description?, ids }]: a heading over each group's grid).
  • dessn_nodes_update({ page, key, changes }): move, resize, rename, re-route a frame (route), edit a note (expectedRevision from its last read), re-label an arrow. size: { h: 'fit' } makes a frame as tall as its page, so nothing below the first screen is cut off (up to 4,000 px).
  • dessn_canvas_screenshot({ target: <page link>, region: 'fit' | { x, y, w, h } | { nodeId } }) pictures the board as the person will see it; fresh: { waitMs } waits for new frames' pictures first (they land 12 s to about 2 minutes after a frame is made).
  • Each write's key makes a retry safe: the same key and input answer the first answer. A batch past ~40 s answers status: 'working': call again with the same key for the rest.
  • dessn_program_run({ page, code }) runs one JavaScript program against the board (canvas.*, dessn_guide topic program): it pays when many writes depend on what earlier ones answered (a frame's height, then the notes under it; arrows in an order read off the board); a batch you can write after one read is quicker as dessn_nodes_create.

Every field: dessn_guide topic board.

What goes on a board, and what plays

Installs
90
First Seen
6 days ago