agentleFS
DangoSysDangoSys/skills/canvas-client/SKILL.md

canvas-client

Skill1 starsChanged 2 months agoApache-2.0View on GitHub

Build or review the Singular canvas, graph snapshot, event stream, and floating agent or group chat windows.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    Use for the web surface only.

    line 8
  2. Distinctive:

    Do not add a shared helper package or duplicate snapshot/SSE authority without a demonstrated need.

    line 17
  3. Distinctive:

    Keep traditional linear chat and the canvas as parallel first-class modes.

    line 21
  4. Distinctive:

    Keep client injection and host plugins separate.

    line 38
  5. Distinctive:

    Use the existing Harness session identifiers to open agent transcripts.

    line 39
  6. Distinctive:

    Do not hide loading, recovery, or runtime failure behind a fallback node or fake status.

    line 45
  7. Distinctive:

    Verify at desktop and narrow widths that nodes, group boundaries, and floating windows do not overlap incoherently.

    line 49

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Canvas Client

Use for the web surface only. Singular is delivered as separate client plugins; they communicate with DOM events and never become a second graph authority.

Plugin boundaries

  • canvas owns the sidebar entry, graph snapshot/SSE lifecycle, canvas surface, and explicit four-direction viewport expansion tools.
  • node renders every agent and group boundary from the snapshot. Agent-provided node geometry and shape are authoritative; missing geometry is an error.
  • connect renders only persisted graph edges.
  • sticky owns movable, minimizable, closable windows and clears them when the canvas closes.
  • chat owns session conversation windows. report and human create their own sticky content. bubble owns the short notification queue and node focus action.
  • Do not add a shared helper package or duplicate snapshot/SSE authority without a demonstrated need.

Surface

  • Keep traditional linear chat and the canvas as parallel first-class modes.
  • Enter the canvas through the existing sidebar.footer.action slot; do not add a fixed corner launcher to the page body.
  • Render every agent node, including agents inside groups. Render group boundaries as visual grouping, not as a black-box replacement node.
  • Support multiple root graphs in one canvas view.
  • Clicking the root opens its agent chat; the first user prompt is sent there.
  • Clicking an agent opens that agent's independent chat. Clicking a group boundary opens the group's shared chat.
  • Chat windows are independent floating notes: multiple may coexist, move, stick to a location, minimize, and close. These are UI-state operations only.
  • Assistant and user message content belongs to the session chat window. Never mirror it into the notification queue.
  • The notification queue contains only short host-emitted status notices such as task completion or failure. Clicking a notice clears that node's unread marker and focuses the node on the canvas.
  • Show router status and group membership without adding controls that create, delete, reconnect, or reorder graph entities.
  • Node position, dimensions, and shape are selected by the agent that creates the node and arrive in the graph snapshot. The canvas never auto-layouts or persists viewport changes as graph mutations.
  • Expansion tools change only the local viewport plane; they do not modify graph records.

Host/client split

  • Host code exposes strict snapshot, graph event, session chat, notification, and message command routes using existing web-server and Cordis lifecycle patterns.
  • The snapshot is the read source for the UI. Events invalidate or update that snapshot; the browser does not infer graph truth from optimistic local edits.
  • Keep client injection and host plugins separate. Register every route, listener, and resource under an effect disposer.
  • Use the existing Harness session identifiers to open agent transcripts. Use a group transcript id for a shared room; do not merge it into a member session.

Error behavior

  • Non-2xx responses, malformed snapshots, unknown event kinds, and closed sessions are visible errors. Do not show an empty canvas or substitute a stale snapshot.
  • Reject graph mutation requests from the client. Chat and window-state commands are the only human actions in the first version.
  • Do not hide loading, recovery, or runtime failure behind a fallback node or fake status.

Client checks

Verify at desktop and narrow widths that nodes, group boundaries, and floating windows do not overlap incoherently. Exercise multiple windows, minimize/restore, close/reopen, nested groups, multiple roots, stream reconnect, and a full page reload against persisted state.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.