chart-tufte
Skill34 starsChanged 23 days agoMITView on GitHub
Post-build grader for a rendered quantitative chart, grounded in Edward Tufte's The Visual Display of Quantitative Information: strips chartjunk, checks the lie factor, picks the right genre, and names failures from the VDQI catalogue. Not a chart builder. Runs as the last step of /visual-explainer when the page has a chart, or on demand (\"grade this chart\", \"is this chart honest\").
In this repository21 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- add-agentSkill
- build-listSkill
- councilSkill
- design-precheckSkill
- document-exportSkill
- handoverSkill
- index-memorySkill
- log-decisionSkill
- mcp-debugSkill
- meeting-prepSkill
- memory-debtSkill
- merge-contactsSkill
- morning-briefSkill
- post-callSkill
- reflectSkill
- setupSkill
- system-auditSkill
- tasksSkill
- visual-explainerSkill
- weekly-reviewSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Comparability: if multiple panels: same y-scale where comparison matters.
- Distinctive: line 44
B2: erase non-data ink: remove borders, drop gridlines, kill the legend if direct labelling fits.
- Distinctive: line 47
B5: name the failure: if the chart resembles a VDQI named failure (NYT MPG 14.8, TIME barrel 59.4, LA Times shrinking-doctor 2.8, USA Today …
- Distinctive: line 49
B7: deflate currency over time: if plotting dollars across years, deflate to a common year (state which) before plotting.
- Distinctive: line 60
C8: stem-and-leaf table: when the goal is the actual numbers, not the shape.
- Distinctive: line 61
C9: table: when ≤20 numbers and structure matters.
- Very specific: line 85
If the verdict is not ship, revise the chart and re-grade before emitting.
- Very specific: line 92
Grade the rendered chart: run this rubric over the rendered HTML/SVG before the page is saved.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Chart Tufte
A chart is good when it shows the data, helps the viewer reason about it, and does not lie. Tufte spent a career formalising this. This skill collapses his principles into a self-grade pass that runs on any chart the assistant is about to emit.
Read references/vdqi-catalogue.md first when grading. It holds the named-failures library (NYT MPG 14.8, TIME barrel 59.4, etc.) and the named-exemplars library (Minard, Marey, Playfair, Snow). The catalogue is what makes assessment diagnostic instead of generic.
When to invoke
- After building: as the last step of
/visual-explainerwhenever the page holds a quantitative chart (bar, line, scatter, area, dot, range-frame); that skill's steps call for it. Skip for diagrams (architecture, sequence, flow); those are different beasts. - Explicitly:
/chart-tufte <chart-spec>to score a chart produced elsewhere.
The rubric (run before emitting)
Score each on 0-10. Stop and revise if any score drops below 5.
- Data-ink ratio: does every pixel of ink represent data? Borders, gridlines, redundant legends are non-data ink. Target: tend toward 1.0; typical for default-styled charts is 0.1-0.2 (VDQI p.136).
- Lie factor:
(visual change %) / (data change %). Acceptable range 0.95-1.05. Cite a VDQI named failure if it is worse: TIME's barrel chart hit 59.4, NYT's MPG hit 14.8. - Data density: numbers per square inch. Below 0.15 is overwrought (a single bar showing one number is the canonical sin). High-density alternatives: small multiples, range-frame scatters, tables.
- Chartjunk count: does the chart contain any of the four named species?
- Moiré: vibrating cross-hatch patterns.
- The dreaded grid: gridlines drawn darker than the data.
- The duck: visual gimmick that overwhelms the data (3D pies, gradient-shaded bars).
- Decoration: clip art, icons, mascots in the chart frame. Each chartjunk species costs points.
- Genre fit: is this the right shape for this data?
- ≤20 numbers → table, not chart
- Many series → small multiples (one panel per series)
- 2 quantitative variables → range-frame scatter (axis only spans data min-max)
- Distribution → quartile plot, not bar of mean
- Time series → thin line + direct endpoint labels, no legend
- Dimensionality discipline: does the chart use more dimensions than the data has? A 3D pie chart on 1D data is dishonest by construction. Penalise.
- Direct labelling: are series labelled at their endpoint or inline, not via a separate legend? Legends force the reader's eye to bounce.
- Range-frame discipline: does the axis span only the data range, not 0 to some arbitrary max?
- Comparability: if multiple panels: same y-scale where comparison matters; different scales only when local shape is the question.
Remedies (when the rubric flags problems)
- B1: fix lie factor: redraw with proportional scaling. State the new lie factor in the chart caption.
- B2: erase non-data ink: remove borders, drop gridlines, kill the legend if direct labelling fits.
- B3: increase data density: switch to small multiples if you have ≥3 panels of comparable data.
- B4: pick the right genre (see C1-C10 below).
- B5: name the failure: if the chart resembles a VDQI named failure (NYT MPG 14.8, TIME barrel 59.4, LA Times shrinking-doctor 2.8, USA Today 3D bar chart, Playfair's wheat decline), say so before showing.
- B6: fix dimensionality: 1D data → 1D chart; never 3D unless the third dimension is in the data.
- B7: deflate currency over time: if plotting dollars across years, deflate to a common year (state which) before plotting. Failing to do this is a silent lie factor.
Genre playbook (C1-C10)
- C1: quartile plot for distributions (5-number summary, no whiskers gimmick).
- C2: range-frame scatter for two quantitative variables (axes span data range only).
- C3: dot-dash marginals on a range frame to show density on each axis.
- C4: paired bars for two-group comparison on one categorical axis.
- C5: small multiples for many series (1 panel per series, same x-axis, often same y-axis).
- C6: sparkline for inline time series at word-scale.
- C7: slopegraph for before/after comparison across many categories.
- C8: stem-and-leaf table when the goal is the actual numbers, not the shape.
- C9: table when ≤20 numbers and structure matters.
- C10: thin line chart for time series, direct endpoint label, no legend, no gridlines.
Exemplars to emulate
- Minard's Napoleon's March (1869): six variables, one image, time + space + temperature + casualties.
- Playfair's wheat-vs-wages (1822): currency deflated, dual y-axis used honestly.
- Modern NYT inflation charts: direct labels, no gridlines, deflated currency.
- Tufte's own sparkline-in-prose pattern: chart as part of the sentence.
Output
A six-line block:
Tufte self-grade
Data-ink ratio: 7/10
Lie factor: 1.02 (acceptable; not in catalogue)
Chartjunk: 0 species
Genre fit: C10 (thin line), correct for the data
Verdict: ship
Notes: (any remedies applied during pass)If the verdict is not ship, revise the chart and re-grade before emitting.
Integration with visual-explainer
/visual-explainer calls this skill after it builds the page (its "Grade any chart" step). Two things to do there:
- Check the genre: name the Tufte genre (C1-C10) the chart should be, and whether the built chart matches it. The visual palette is a separate choice; never let styling pick the genre.
- Grade the rendered chart: run this rubric over the rendered HTML/SVG before the page is saved. If any score is below 5, revise. Do not save on
verdict != ship.
VDQI page references (for citations)
- Data-ink ratio definition + targets: p.93, 136
- Lie factor formula + named failures: pp.55-80
- Chartjunk taxonomy (moiré / grid / duck / decoration): pp.107-121
- Small multiples: pp.170-175
- Range frame: pp.130-133
- Sparklines (later book Beautiful Evidence, but cited in the canon)
Edward Tufte, The Visual Display of Quantitative Information, 2nd ed., Graphics Press, 2001.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

