Skip to content
Back to skills

Pr Lens Diagrams

ASecurity

Animated architecture and data-flow diagrams with PR Lens (@coldtea/pr-lens-cli): hand-write graph.json, validate it, render an animated SVG and record a seamless GIF/MP4 for chats (Telegram). Use when asked to draw a diagram, схему, архитектуру, связи сервисов или ботов, sequence/data-flow, animated diagram. Triggers: pr lens, prlens, диаграмма, схема, нарисуй, architecture diagram, data flow, animated svg, gif.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 14, 2026
ai-agentsgobashnodeexpressgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned October 14, 2026

npx -y skills add nordz0r/skills --skill pr-lens-diagrams --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pr Lens Diagrams?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pr Lens Diagrams
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nordz0r-pr-lens-diagrams/badge)](https://www.skillsdirectory.com/skills/nordz0r-pr-lens-diagrams)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pr-lens-diagrams
description: "Animated architecture and data-flow diagrams with PR Lens (@coldtea/pr-lens-cli): hand-write graph.json, validate it, render an animated SVG and record a seamless GIF/MP4 for chats (Telegram). Use when asked to draw a diagram, схему, архитектуру, связи сервисов или ботов, sequence/data-flow, animated diagram. Triggers: pr lens, prlens, диаграмма, схема, нарисуй, architecture diagram, data flow, animated svg, gif."
license: MIT
metadata:
  version: "1.0.0"
  author: "NorD (nordz0r)"
  platforms: "linux,macos"
  hermes:
    tags: [diagrams, pr-lens, architecture, data-flow, svg, gif]
---

# PR Lens diagrams

Russian version: [references/README.ru.md](references/README.ru.md).

[PR Lens](https://github.com/coldteadotai/pr-lens) (MIT, https://prlens.dev) renders a JSON graph document into a self-contained **animated SVG** (SMIL `<animateMotion>`, no scripts). A model key is only needed for `analyze` (graph from a git diff); for an arbitrary diagram the agent writes the JSON itself.

## Quick start

```bash
# deps: Node >= 20.11, npm, ffmpeg; Chromium is installed by the setup script
bash scripts/pr-lens-setup.sh                      # into $PR_LENS_HOME (default ~/.cache/pr-lens-diagrams)
bash scripts/pr-lens-build.sh my.graph.json out/   # → out/architecture.{svg,gif,mp4}, out/data-flow.{svg,gif,mp4}
```

- Start from `examples/bots.graph.json` (4 lanes, 12 nodes, 12 edges, 1 flow).
- The build validates, renders (`dark` by default; `light` or `both` as the 3rd arg), records frames with Playwright at `deviceScaleFactor: 2`, and encodes a non-dithered GIF and an MP4 (`crf 18`).
- Env: `PR_LENS_HOME`, `FPS` (20), `MIN_WIDTH` (1600), `PR_LENS_CLI_VERSION`, `PLAYWRIGHT_VERSION`.
- `npx skills add coldteadotai/pr-lens` crashes on Node 20 (`fs/promises` has no `glob`); not required. Version-matched docs: `npx pr-lens skill` / `npx pr-lens skill references` inside `$PR_LENS_HOME`.
- **Never publish without explicit user consent**: `pr-lens canvas push` puts the diagram on prlens.dev behind a view link anyone holding it can open.

## Document (schemaVersion 0.2.0)

Required: `schemaVersion, kind: "graph", title, lenses, provenance, lanes, nodes`; plus `edges`, `flows`.
- `provenance` is required even without a repo (dummy owner/name, 40-zero sha).
- `lanes` are **columns, left to right** by `order`; there is no "top" — the leftmost lane is the start.
- Node kinds: `service|app|module|function|route|job|queue|datastore|cache|external|ui|config|test|package|other`. Edge kinds: `call|http|rpc|event|queue|data|dependency|render|other`; `emphasis: normal|hero|muted`; `animated: true`.
- Use `delta: "unchanged"` everywhere for a plain diagram.
- `layout: { direction, laneOrder, rank }` are hints, never coordinates.

## How the animation works

1. Architecture: `animated` edges carry a dot (1.6 s). `hero` edges carry a 3-dot train (2.1 s, 0.7 s spacing) plus glow. Seamless loop = LCM(1.6, 0.7) = **11.2 s**.
2. Data-flow: add `"data-flow"` to `lenses` and `flows[]` (participants = node ids; messages `sync|async|return|self`). Steps light up in array order; loop length = `dur` in the SVG (7 steps → 9.8 s, max 16 s).
3. `walkthrough` and `payload` only play on a prlens.dev canvas.
4. Rasterizers (resvg, cairosvg, rsvg) ignore SMIL; capture in a browser with `pauseAnimations()` + `setCurrentTime(t)` (`scripts/record.mjs`).

## Beauty and quality lessons

- ≤ 10–12 nodes, ~12 edges. Merge similar things into group nodes; list members in `subtitle`. Express "everyone → X" in X's subtitle or via one aggregate node.
- 3–4 lanes, flow left → right (input → orchestrator → workers → output), no empty or overloaded lanes.
- One card per row: same-rank nodes in a lane are seated side by side, narrow and truncated. Give each node in a lane its own `layout.rank`. Rank is a floor (≥ predecessor + 1), so use a staircase 0,1,2,3…; rows are shared across lanes, so give linked neighbours the same rank for straight edges.
- Short labels: subtitle ~20 chars on a narrow card, ~45 on a wide one.
- `hero` only for 1–2 key paths; rare edges `muted`; no labels on obvious edges.
- Data-flow width ≈ 320 px per participant; keep ≤ 6–7 participants.
- Theme choice: 3rd arg `dark` (default, reads best in chats), `light`, or `both` (writes `<lens>-dark.*` and `<lens>-light.*`). Pick `both` when the target page switches themes (GitHub `<picture>`, nopaste, docs sites); match the reader's theme when only one image fits.
- Palette: `PALETTE=github` (default renderer colours, dark ground `#0d1117`, light `#ffffff`) or `PALETTE=nopaste` (paste.goldfinches.ru colours: dark `#212427`/accent `#8ab4f8`, light `#e6ddd2`/accent `#176b62`). Diff colours (added/modified/removed) are never changed.
- Record at DPR 2, CSS width ≥ viewBox width and ≥ 1600 px, 20 fps.
- GIF: `palettegen=max_colors=128:stats_mode=diff` + `paletteuse=dither=none:diff_mode=rectangle`, lanczos to CSS width (~1 MB for 11 s). MP4 at full 2x.
- Telegram and most chats don't animate SVG — send GIF/MP4. GitHub PR comments do show animated SVG.
- Before delivery, crop a GIF frame at 1:1 and look at it; downscaled previews hide blur.
- `render` output names carry a hash; the build copies them to stable `<lens>.svg`.

## Agent workflow

1. List the entities and group them down to 10–12 nodes. Decide which 1–2 paths are the main ones (`hero`).
2. Copy `examples/bots.graph.json` and edit it: `lanes`, `nodes` with a `layout.rank` staircase, `edges`, and `flows` if needed.
3. Run `bash scripts/pr-lens-build.sh graph.json out/`. If `validate` names a wrong field, fix it.
4. Check the frames: no truncated labels, no paired cards, no crossings. Adjust ranks and labels if needed.
5. Hand the user the GIF or MP4, the `graph.json` source and the SVG.

Files in this skill

  • SKILL.md5.8 KB
  • agents/openai.yaml239 B
  • examples/bots.graph.json8.9 KB
  • references/README.ru.md9.3 KB
  • scripts/pr-lens-build.sh3.6 KB
  • scripts/pr-lens-setup.sh997 B
  • scripts/record.mjs1.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.