$npx -y skills add gnurio/tufte-vdqi-plugin --skill orchestrate-tufte-vdqiRouter for the Tufte data-visualization toolkit. Use whenever someone has a chart or data-visualization request and you are not sure which Tufte skill to use — it decides between assessing an existing graphic, producing a new one, or fixing a cluttered/misleading one, and chains
| 1 | # Orchestrate Tufte VDQI |
| 2 | |
| 3 | You are the router. Read the request, decide the intent, and invoke the right |
| 4 | skill. You are doing this by understanding, not by matching keywords — the |
| 5 | previous version was a brittle keyword function and it is gone. |
| 6 | |
| 7 | ## The toolkit (three skills + one VDQI-sourced reference) |
| 8 | |
| 9 | - `assess-graphical-excellence` — evaluate an existing graphic against the nine |
| 10 | criteria, name the chartjunk species present (moiré / dreaded grid / duck / |
| 11 | decoration), compute the lie factor and compare it to VDQI's catalogue |
| 12 | (NYT MPG 14.8, TIME barrel 59.4, etc.), check whether the data deserves a |
| 13 | different *genre* (table for ≤20 numbers, small multiples for many series, |
| 14 | range frame instead of bordered scatter), and emit prioritised fixes tagged |
| 15 | with remedy (B1–B7), genre to switch to (C1–C10), anti-pattern resemblance, |
| 16 | and exemplar to emulate. The default when intent is unclear. |
| 17 | - `render-tufte-chart` — produce an actual chart file. Ships per-genre scripts: |
| 18 | `render_line_svg.py` (time-series C10), `small_multiples.py` (C5), |
| 19 | `quartile_plot.py` (C1), `range_frame.py` (C2, optional C3 dot-dash |
| 20 | marginals), plus `wrap_html.py` for a tufte-css HTML page. The only skill |
| 21 | that outputs a chart. |
| 22 | - `references/tufte-principles.md` (mirrored into both skills) — the canonical |
| 23 | Tufte knowledge, source-grounded to VDQI with page citations: Part A nine |
| 24 | criteria with numeric anchors, Part B seven remedies, Part C ten chart |
| 25 | genres with construction recipes, Part D chartjunk taxonomy, Part E |
| 26 | named-failure catalogue (13 dissected real-world graphics with metrics), |
| 27 | Part F named-exemplar catalogue (14 praised graphics with copyable moves), |
| 28 | Part G compact quantitative defaults. |
| 29 | |
| 30 | ## Routing |
| 31 | |
| 32 | - **Evaluate / critique** ("is this chart any good?", "what's wrong with this?", |
| 33 | "is this misleading?") → `assess-graphical-excellence`. |
| 34 | - **Design / build / produce** ("make me a Tufte chart of…", "design a clean |
| 35 | time-series", "produce the chart") → `render-tufte-chart`. If the data is |
| 36 | currency across multiple years, deflate it first (remedy B7) before rendering. |
| 37 | - **Fix / declutter an existing chart** ("clean this up", "too cluttered") → |
| 38 | chain: `assess-graphical-excellence` to diagnose and list remedies, then |
| 39 | `render-tufte-chart` to rebuild honoring them. The assessment's remedy tags |
| 40 | (B1–B7) are the instructions render follows. |
| 41 | - **Unsure** → start with `assess-graphical-excellence`. |
| 42 | |
| 43 | ## Why this shape |
| 44 | |
| 45 | Earlier this toolkit had ten skills. Benchmarking showed most encoded a single |
| 46 | Tufte idea the model already applies, so separate routing targets only added |
| 47 | latency and risk. Assessment and rendering are the two actions that genuinely |
| 48 | benefit from a skill. The depth that makes the skills non-generic lives in the |
| 49 | principles reference — specifically Parts C–F, the source-grounded genre |
| 50 | playbook, chartjunk taxonomy, named-failure library, and named-exemplar |
| 51 | library quoted from VDQI by page. Without those, the skills regress to |
| 52 | "Claude paraphrasing Tufte from memory"; with them, the model has Tufte's |
| 53 | specific vocabulary and worked numbers to reach for. |