← Item page
Link explainer · GitHub / Claude plugin

Chartwright for Tufte-style agent charts

A Claude plugin that packages Edward Tufte-inspired data-visualization review and rendering as three skills: route, assess, and render. The useful idea is not just “make charts prettier”; it is a workflow where agents critique chart integrity, pick a better genre, then emit inert SVG/HTML outputs with Tufte constraints baked in.

Repo: gnurio/tufte-vdqi-plugin Primary language: Python Stars at capture: 232 Created: 2026-05-02 Last pushed: 2026-05-25 License: not declared in repo metadata

Source: https://github.com/gnurio/tufte-vdqi-plugin

What it is

1. A Claude plugin, not a charting library

Installation is described through Claude Desktop / Cowork plugin flows. The repo contains .claude-plugin metadata and three skills under skills/, so the main product is agent behavior.

2. A Tufte ruleset encoded as skill memory

The skills point to a mirrored tufte-principles.md reference: nine scoring criteria, seven remedies, ten chart genres, chartjunk taxonomy, and named failure/exemplar catalogues.

3. A small executable renderer toolkit

Python scripts generate Tufte-style SVGs for time series, small multiples, quartile plots, and range-frame scatterplots, plus an HTML wrapper with vendored tufte-css.

Source map

PathRoleWhy it matters
.claude-plugin/plugin.jsonPlugin metadataNames the plugin tufte-vdqi, version 3.0.0, with data-visualization keywords.
skills/orchestrate-tufte-vdqi/SKILL.mdRouter skillDecides whether a user needs assessment, rendering, or both. Useful because it prevents every chart request from becoming a generic “make a line chart” response.
skills/assess-graphical-excellence/SKILL.mdCritique skillScores graphics, names chartjunk species, computes lie factor when relevant, and emits prioritized remedies with Tufte tags.
skills/render-tufte-chart/SKILL.mdOutput skillConstrains generated charts: honest proportions, range-frame axes, direct labels, minimal ink, no active SVG content.
skills/render-tufte-chart/scripts/*.pyExecutable chart generatorsProduces inert SVG/HTML artifacts rather than only verbal design advice.
todos/*.mdSecurity/quality backlogShows active hardening work, especially around SVG/HTML wrapper safety. Treat as promising but still maturing.

How the workflow is meant to run

STEP 01

User asks about a chart

“Is this misleading?”, “clean this up”, or “make a chart from this data.”

STEP 02

Router chooses path

orchestrate-tufte-vdqi routes to assessment, rendering, or assessment→rendering.

STEP 03

Assessment names faults

It checks lie factor, chartjunk, genre mismatch, data-ink ratio, typography, and uncertainty treatment.

STEP 04

Renderer builds artifact

Scripts emit SVG for Tufte-style line charts, small multiples, quartile plots, or range-frame scatterplots.

STEP 05

HTML wrapper packages it

wrap_html.py can create a shareable Tufte-css page and rejects active SVG constructs on CLI paths.

Fit for Ananth / Dab workflows

Best use: add as a reference pattern for Mission Control analytics, Daily Podcast Creator metrics, research summaries, and any Dab-generated “before/after” visual explanation where chart integrity matters more than dashboard gloss.

Mission Control analytics

Could help render calm, high-density cards for item throughput, link triage age, capture sources, or weekly focus drift without turning the Notice Board into a noisy dashboard.

Dab-generated reports

The critique skill is valuable as a preflight review: “does this chart lie?” before Dab publishes a graph into an artifact page.

Claude skill design

The repo is a good example of encoding specialized taste as skills plus runnable scripts. That pattern is directly relevant to Dab Improvements.

Maturity and caution flags

Fresh repo

Created in May 2026 and last pushed recently. Star count is healthy for a new niche plugin, but it is early-stage.

No release / no license metadata

GitHub reports no latest release and no license metadata. Before vendoring code into Dab systems, confirm the license from repo contents or ask the author.

Security backlog exists

The todos/ folder includes P1/P2 SVG/HTML hardening notes. That is a good sign of active review, but also means wrapper safety should be tested before trusting arbitrary input.

Important: do not feed untrusted SVG/HTML into this pipeline and assume it is fully sanitized. The project itself documents guard-bypass concerns around build_html() and active SVG constructs. Use only the trusted local renderers or run a separate sanitizer/review pass before publishing generated HTML inside Mission Control.

Practical adoption path

  1. Read-only trial: use the repo as an idea/reference first; do not install as a required Claude plugin until license and security posture are clearer.
  2. Extract the workflow: for Dab, the most reusable piece is the three-stage pattern: route → critique → render, with acceptance criteria attached to each chart.
  3. Pilot on one internal artifact: pick a non-sensitive Mission Control metric page and generate one Tufte-style SVG manually, then inspect output and mobile fit.
  4. If useful, create a Dab charting skill: adapt the concepts into Dab’s own skill, with stricter local sanitization and no dependency on Claude Desktop Cowork.

Bottom line

Chartwright is worth keeping in Link Triage as a substantial Dab Improvement seed. The repo is most valuable as a design pattern for specialized agent skills with executable artifacts, and secondarily as a possible chart-rendering helper. It should not be treated as production-safe infrastructure without license clarification and a security review of the SVG/HTML wrapper path.