Skip to main content

diagram

Build a Tidal Diagrams diagram from a natural-language prompt and hand it to the running app as a clickable deep-link. Use when the user types /diagram <description> or asks to create/build/draw a diagram in the tidal-diagrams app.

Jump to install

Source facts

Repository
Liquid4All/tidal-diagrams
Last source activity
June 29, 2026 at 15:14
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
diagram
description
Build a Tidal Diagrams diagram from a natural-language prompt and hand it to the running app as a clickable deep-link. Use when the user types /diagram <description> or asks to create/build/draw a diagram in the tidal-diagrams app.
# /diagram — prompt → diagram in the Tidal Diagrams app Turn the user's description into a **quick-text** diagram, encode it into a deep-link, and print the link. When the user opens it, the running app loads the diagram (decoded by `src/diagram/urlLoad.ts`, laid out fresh via the same path as Mermaid import). ## Steps 1. **Author quick-text** from the user's prompt using the syntax below. Aim for a clear, well-grouped diagram — pick a sensible `direction`, give nodes real labels, use shapes (`#db`, `#pill`) and groups where they add meaning. 2. **Build the link** by piping the quick-text into the encoder script. Give it a short title: ```bash # The encoder is bundled with this skill. Pick the path that exists: # • installed as a plugin → "$CLAUDE_PLUGIN_ROOT/scripts/diagram-link.mjs" # • working inside the tidal-diagrams repo → scripts/diagram-link.mjs ENC="${CLAUDE_PLUGIN_ROOT:+$CLAUDE_PLUGIN_ROOT/}scripts/diagram-link.mjs" printf '%s' "$QUICKTEXT" | node "$ENC" --title "Checkout flow" ``` - **Target host** is resolved automatically: installed as a plugin it points at the hosted app (`https://tidal-diagrams.vercel.app`) — so the user just opens the link, nothing to run locally. Working in this repo it points at `http://localhost:5173` (pass `--port <n>` / `$TIDAL_PORT` if the dev server moved; start it with `npm run dev` if it isn't up). Override either with `--host <url>` or `$TIDAL_HOST`. - **Direction**: prefer a `direction LR` line in the quick-text. The `--direction LR|TB|RL|BT` flag is a convenience override for the whole diagram. - **Aspect / dimensions**: pass `--aspect 4:3` (also `16:9`, `1.5`) to bias the layout so the content bounding box approximates that ratio. This is *best-effort* — dagre never wraps ranks, so a long linear chain keeps its shape; branching diagrams respond well. If the user wants a specific ratio, prefer a `direction` that suits it (wide ratios → `LR`, tall → `TB`) and add branching where natural. 3. **Show the result**: print the quick-text in a code block (so the user can read/tweak it) followed by the link on its own line, e.g. `Open: <url>`. The link is long — that's expected. If the app is already open in the browser, opening the link in that same tab swaps in the new diagram live (the app also listens for `hashchange`). ## Quick-text syntax (cheat-sheet) ``` direction LR # flow direction: LR | TB | RL | BT (also right/down/left/up) Node Label # a card (default shape) Service / detail line # two-line card: title / mono subtitle Database #db # cylinder shape Gateway #pill # pill shape Cache #outline # surface: #solid | #outline | #ghost Queue @q # explicit id with @id (so edges can reference it) Group Name: # group header; indent the lines under it to nest Worker A Worker B A -> B # arrow A --> B is the same A ..> B # dotted arrow A <-> B # bidirectional A <..> B bidirectional dotted A -- B # plain line, no arrow A -> |label| B # labelled edge (also A ..> |retries| B) A, B -> C, D # fan-out: every left node connects to every right node // a comment line ``` Notes: - Reference a node in an edge by its label text (its id is the slugged title) or by an explicit `@id`. - Quote a label to keep punctuation literal: `"Auth (OAuth2)"`. - Keep it to flowchart-style nodes/edges/groups. Sequence diagrams use a different syntax and are imported separately, not via this command. ## Example Prompt: *"a checkout flow with payment retries"* Quick-text: ``` direction LR Cart #pill Checkout Payment / Stripe #db Order Service Cart -> Checkout Checkout -> |charge| Payment Payment ..> |retry| Checkout Checkout -> |on success| Order Service ``` Then run the encoder with `--title "Checkout flow"` and share the printed URL. > Label placement matters: the label goes **right after the operator** — > `A -> |label| B`, not `A -> B |label|`. The latter folds the label into B's name.
View on GitHub