Skip to content
Conduit

skill

elbow

Draws editorial diagrams as SVG from a small JSON view, with orthogonal, rule-checked connectors and an agent skill so AI agents draw faster with fewer tokens.

daniell0gda/elbowcommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/daniell0gda/elbow itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 26, 2026

elbow

Draws diagrams as editorial SVG in the diagram-design style: layered layout, orthogonal connectors with rounded elbows, masked labels, bridges where lines cross, and a legend. The six connector rules are checked on every render.

A model chooses the content and a few typed parameters. elbow does all the geometry in about 1 ms.

Previews

SequenceFlow
StateTree
FishboneKanban
UML classVenn

The example inputs are in tests/.

Diagram types

Set kind to one of these.

kindUse it forLayout
flowSteps, services and the connections between themLayered, left to right, with technical node tags
sequenceMessages between actors, in time orderLifelines in node order, with activation bars
stateStates and the transitions between themLayered
treeHierarchies, such as an org chartLayered, top down; sync edges drawn as data
erEntities and the relationships between themLayered; fields from Name (id, name, …), cardinality from 1:N labels
swimlaneSteps grouped by owner or teamOne lane per group
nestedGroups inside groupsRings in rings
layersA stack of layers, such as an architecture stackFull-width bands, numbered from the bottom
dependencyWhat depends on whatTop down, with fan-in badges; a cycle is the accent
timelineEvents, releases or milestones in timeDots on a baseline, Name (date); groups are periods
processA business process by role, with handoffsRole lanes, steps numbered per rank
loopA cycle or flywheelStations clockwise on a ring; the first store is the hub
pyramid, funnelRanked levels, or stages that narrowLayers, top first
vennOverlapping sets and what they shareTwo or three circles; groups are the sets
fishboneThe causes of one problemEffect, categories and sub-causes as bones
kanbanWork items by statusColumns Name (WIP limit), cards Title (ticket · owner)
journeyOne person's stages and feelingsA sentiment curve, Stage (feeling, touchpoint)
story-mapUser activities and stories, by releaseActivity backbone over release slices
uml-classClasses and their relationshipsClass boxes Name (+ attr: T, + op(): R)
deploymentWhere software runsHosts Name (POD, image v1, x3) in dashed zones
medallionData tiers a dataset is promoted throughTier cards Tier (bucket; tool; format; writer)
org-chartWho owns what and who reports to whomOwners over reports on bus connectors
db-schemaTables, typed columns and foreign keysTables schema.table (col type PK, …), keys row to row
quadrantItems sorted by two criteriaA two-by-two grid; axis words from an A vs B title
wardleyA value chain by evolutionComponents Name (stage) on the evolution axis

--best can choose another direction when it scores better.

Usage

cargo build --release
target\release\elbow.exe view.json --best --out diagram.html --report
target\release\elbow.exe view.json --variants            # every candidate with its score
target\release\elbow.exe view.json --params '{"direction": "down", "theme": "dark"}' --out diagram.svg

--best renders a grid of parameter sets and keeps the best score. --report prints the rule violations and the measures (crossings, bends, unclear labels, area) to stderr.

Input

{
  "number": 1,
  "title": "Login with Google",
  "kind": "sequence",
  "nodes": [{"id": "browser", "label": "Browser (web app)", "shape": "client", "focal": false}],
  "edges": [{"source": "browser", "target": "google", "label": "redirect", "style": "sync", "focal": false}],
  "groups": [{"id": "team", "label": "Team", "members": ["browser"]}]
}
  • kind: one of the diagram types.
  • shape: service, database, queue, cache, actor, external, client, state, decision, note.
  • style: sync, async, data, transition, dependency.
  • A trailing (…) in a node label becomes its sublabel. In a swimlane, groups become lanes.
  • focal marks the 1–2 elements the reader should look at first; a node or an edge.
  • selected (ids) and pointed (one id) mark nodes, edges or sections. Every node, edge and section is a [data-id] group, so a page can select and point at it.

Parameters

direction (right, down), node_gap, min_channel, track_gap, uniform_rank_size, ordering_sweeps, theme (light, dark), legend.

Benchmark

Against an agent that draws the same diagram by hand with diagram-design (details):

Hand-drawnelbow
Agent tokens, 4 diagrams318,079197,033 (38% fewer)
Agent time, 4 diagrams439 s91 s (4.8x faster)
Model output, 14 diagrams53,880 tokens of SVG7,102 tokens of JSON (7.6x less)
Render time—16–41 ms per diagram with --best

Sequence and flow diagrams come out as clean as the hand-drawn ones; nested and swimlane layouts still have more crossings than a careful hand drawing.

Use with an AI agent

skills/elbow-diagram is an Agent Skill that teaches an agent to draw with elbow: which kind to pick, how to write the view and its label conventions, how to read the report, and a script that puts several diagrams on one page. Copy the folder into your agent's skills folder, or point the agent at its SKILL.md. Agents working in this repo start from AGENTS.md.

Tests

cargo test --release
cargo run --release --example stress 500 --best

Credits

The editorial look follows the diagram-design skill by Cathryn Lavery. Credit for the visual style goes to that project.

↑↓ navigate openesc close