A Claude Code skill that turns "make me a chart" into a Tufte-compliant chart. Distilled from the three foundational books by Edward R. Tufte.
$ npx -y skills add aref-vc/tufte-claude-skill --agent claude-code
A Claude Code skill that turns "make me a chart" into a Tufte-compliant chart. Distilled from the three foundational books by Edward R. Tufte.
Clone into your Claude Code skills directory:
git clone https://github.com/aref-vc/tufte-claude-skill.git ~/.claude/skills/tufte
That's it. Claude Code auto-loads the skill on next launch. To verify, run /tufte or ask Claude to "make a chart of anything."
To update later:
cd ~/.claude/skills/tufte && git pull
To uninstall:
rm -rf ~/.claude/skills/tufte
Tufte gives the three-book taxonomy himself on page 9 of Visual Explanations:
Together they yield the ten principles this skill applies.
Tufte's own five-line summary from VDQI p.105:
Above all else show the data. Maximize the data-ink ratio. Erase non-data-ink. Erase redundant data-ink. Revise and edit.
When you ask Claude to make, design, critique, or improve any chart, the skill activates automatically. It then:
principles.md to recall the ten rules.chart-selection.md based on your data shape and goal — not from what's familiar or what the library makes easy.kill-list.md — removes the things that don't belong (3D, pie, dual-axis, rainbow scales, frame boxes, redundant legends).checklist.md as a final pass before declaring it done.Default strictness: Tufte by default, override per chart on request ("I need a pie because the CFO wants one" → comply, but note the alternative).
A printable reference covering principles, lie-factor formula, chart-selection table, kill list, color rules, and the 12-item checklist. Open cheatsheet.html in a browser or print cheatsheet.pdf.

Nine pairs comparing typical AI/BI default output (left) to Tufte-applied output (right). The full interactive gallery is at before-after.html — open in any browser. Six pairs inlined here:

3D bars with a six-color rainbow legend become a sorted dot plot with direct labels. The reader ranks in two seconds instead of decoding a key.

A line chart trapped in a frame box (with gridlines, legend, axis title, chart title) becomes a sparkline plus the current value plus two endpoint labels. Same data, ~80% less ink.

Four KPI tiles with giant numbers and decorative icons become a compact table with value, sparkline (10-month trend), and delta-to-target. One accent color flags the metric that's off-target.

Clustered bars (two colors, ten bars to mentally pair up) become a slopegraph. Each line's slope is the change. Steepest gainer and only decliner read instantly without decoding a legend.

A 3D tapered funnel chart (where the visual taper exaggerates the drop-off) becomes horizontal bars sized by share of stage 1, with retention percentage printed per step. The worst step is annotated.

A rainbow heatmap (where viewers guess if yellow is more than green) becomes a sequential single-hue table with numbers printed in every cell and a sparkline showing each cohort's decay shape.
The other three pairs in the gallery: part-to-whole (pie → sorted table), distribution (rainbow histogram → strip plot with quantile markers), geographic (rainbow choropleth → sequential single-hue with annotations).
The skill auto-activates on any of these:
/tufte or mentioning Tufte by nameIt does not activate for:
Just ask. The skill loads automatically and produces a Tufte-compliant chart:
Make a chart of monthly revenue for the last 12 months
You'll get a sparkline with the current value, two endpoint labels, no frame box, no legend.
Tell Claude which output you want:
| Say | You'll get |
|---|---|
| "as inline SVG" or no preference | Self-contained HTML/SVG, single file |
| "in React" or "with Recharts" | Recharts component with Tufte theme |
| "with D3" | D3-in-React (for dot plots, slopegraphs, custom small multiples) |
If you specifically need something on the kill list:
Make a pie chart of revenue mix — the CFO wants a pie
Claude will produce the pie, but include a one-line comment noting the Tufte alternative (a sorted table). You stay in control.
Paste your chart code or screenshot and say:
Apply Tufte to this
Claude will identify violations (frame box, gridlines, gradient fills, redundant legend, wrong sort), and produce a rewritten version.
| File | Purpose |
|---|---|
SKILL.md | Trigger description + skill index (loaded by Claude) |
principles.md | The ten rules, with Tufte's exact quotes |
chart-selection.md | Data + goal → chart type decision table |
kill-list.md | What to remove from any chart |
before-after.html | Nine side-by-side comparisons (open in browser) |
checklist.md | 12-item pre-publish check |
cheatsheet.html / cheatsheet.pdf | One-page printable reference |
presets/html-svg.md | Style tokens + working SVG templates (sparkline, dot plot, line, small multiples, sparkline-in-table) |
presets/react.md | Recharts theme + D3-in-React patterns (slopegraph, dot plot, what-to-never-import list) |
~/.claude/skills/weasyprint (pip install weasyprint)Pull requests welcome. Useful additions:
Open an issue first for anything that adds a new chart type to the decision table — let's discuss the rule before adding it.
MIT. Use it, modify it, ship it.
The skill content is original; quotations from Tufte's books are used under fair-use for educational reference and are attributed inline.
The principles of information design are universal — like mathematics — and are not tied to unique features of a particular language or culture.
— Edward R. Tufte, Envisioning Information, p. 10
tufte-claude-skill is a Claude Code plugin with 1 hand-picked skill, indexed on Flowy in the Data category. Install it with the command on its page. It includes tufte-claude-skill. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it