Help us improve
Share bugs, ideas, or general feedback.
From armory
Creates and critiques data visualizations using Edward Tufte's principles: high data-ink ratio, direct labels, range frames, and small multiples. Covers Recharts, Plotly, matplotlib, Chart.js, ECharts, D3, SVG, and HTML.
npx claudepluginhub mathews-tom/armory --plugin armoryHow this skill is triggered — by the user, by Claude, or both
Slash command
/armory:chart-clarityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and critique charts that make quantitative comparisons obvious without decorative chartjunk. This skill adapts Caylent's MIT-licensed `tufte-data-viz` skill into armory under the broader `chart-clarity` name. It applies Edward Tufte's core data visualization principles and adds screen-first requirements for accessibility, responsiveness, dark mode, progressive disclosure, and human-reada...
assets/showcase/before-after-animated.gifassets/showcase/before-after.pngassets/showcase/small-multiples.pngassets/showcase/tufte-accessible-scatter.pngassets/showcase/tufte-bar-chart.pngassets/showcase/tufte-dark-mode.pngassets/showcase/tufte-data-table.pngassets/showcase/tufte-light-dark.pngassets/showcase/tufte-line-chart.pngassets/showcase/tufte-slopegraph.pngassets/showcase/tufte-sparklines.pngevals/cases.yamlreferences/examples/chartjs-tufte-plugin.jsreferences/examples/echarts-tufte-theme.tsreferences/examples/matplotlib-tufte-annotated.pyreferences/examples/plotly-tufte-template.pyreferences/examples/recharts-tufte-bar.tsxreferences/examples/recharts-tufte-line.tsxreferences/examples/sparkline-inline.svgreferences/interactive-demo.htmlGuides chart selection for data relationships and generates Python visualization code with matplotlib, seaborn using professional styles, palettes, and accessibility principles.
Designs clear, accessible data visualizations with chart selection for comparisons/trends/distributions, styling principles, color palettes, responsiveness, and best practices.
Guides data visualization design principles including chart selection, color encoding, annotation strategies, accessibility, and Tufte's data-ink ratio.
Share bugs, ideas, or general feedback.
Create and critique charts that make quantitative comparisons obvious without decorative chartjunk. This skill adapts Caylent's MIT-licensed tufte-data-viz skill into armory under the broader chart-clarity name. It applies Edward Tufte's core data visualization principles and adds screen-first requirements for accessibility, responsiveness, dark mode, progressive disclosure, and human-readable numbers.
Use this skill whenever the user asks for a chart, graph, plot, dashboard visualization, sparkline, slopegraph, data table, or visualization review. It covers Recharts, ECharts, Chart.js, matplotlib, Plotly, seaborn, D3.js, SVG, and HTML.
| User need | Use chart-clarity | Use instead |
|---|---|---|
| Generate chart code in Recharts, Plotly, matplotlib, Chart.js, ECharts, D3, SVG, or HTML | Yes | — |
| Review an existing chart for misleading design, clutter, accessibility, or readability | Yes | — |
| Restyle dashboard charts while keeping the dashboard structure unchanged | Yes | ux-expert for broader dashboard UX |
| Build a static infographic or rich HTML artifact around charts | No | static-web-artifacts-builder |
| Design a slide deck or presentation using charts | No | html-presentation, marp-slides, or pptx |
| Design logos, posters, icons, or non-data visuals | No | concept-to-image or canvas-design |
Follow this order for every chart task.
references/rules/ unless the task compares multiple libraries.#fffff8) and intentional dark backgrounds (#151515). Avoid pure white and pure black.prefers-reduced-motion.$1.2M, 12,450, consistent precision, units stated once.Read one matching reference file for concrete implementation details:
| Library | Reference | Essential defaults |
|---|---|---|
| Recharts | references/rules/recharts.md | Hide grid, remove <Legend />, direct labels, no top/right axes, minimal tooltip |
| ECharts | references/rules/echarts.md | splitLine.show: false, legend.show: false, grid.show: false, endLabel |
| Chart.js | references/rules/chartjs.md | grid.display: false, plugins.legend.display: false, direct labels plugin |
| matplotlib/seaborn | references/rules/matplotlib.md | Hide top/right spines, set spine bounds, serif fonts, off-white figure background |
| Plotly | references/rules/plotly.md | showgrid=False, showlegend=False, plot_bgcolor='#fffff8', zeroline=False |
| D3/SVG/HTML | references/rules/svg-html.md | Minimal domains, no plot backgrounds, direct SVG text labels, accessible roles |
Cross-cutting references:
| Topic | Reference |
|---|---|
| Anti-pattern detection and one-line fixes | references/rules/anti-patterns.md |
| Accessibility, responsiveness, animation, dark mode | references/rules/interactive-and-accessible.md |
| Full palettes, font stacks, numeric typography | references/rules/typography-and-color.md |
| Small multiples, sparklines, slopegraphs | references/rules/small-multiples-sparklines.md |
| Working examples | references/examples/ |
| Interactive before/after demo, CDN-backed and reference-only | references/interactive-demo.html |
| Upstream license and provenance | references/upstream/ |
| Type | Default treatment |
|---|---|
| Line | 1.5-2px stroke, no dots unless fewer than seven points, direct label at endpoint, annotate notable events |
| Bar | Prefer horizontal bars for categories, sort descending, label values directly, use gray with one accent |
| Scatter | Small gray dots, highlight key cluster or outlier, add regression line only when analytically justified |
| Time series | Label events on the chart, compare against target or prior period, avoid dual axes |
| Small multiples | Same scale across panels, shared labels, no panel borders, direct panel titles |
| Sparkline | Word-sized, no axes or labels, min/max dots, endpoint value when useful |
| Table | Whitespace and thin rules, right-aligned numbers, no zebra striping, highlight meaningful outlier only |
| Slopegraph | Before/after endpoints labeled with names and values, gray slopes plus one highlight |
| Heatmap | Sequential or diverging palette, cell values where readable, companion table for accessibility |
Before presenting code or critique, verify:
#fffff8 or an intentional dark palette, not pure white or black.aria-label, nearby summary text, or data table.