charting
Skill20 starsChanged 13 days agoMITView on GitHub
Selects the chart type and visualization library for React/Next.js and Expo/React Native data visualization, with accessibility and anti-pattern guardrails. Triggers on "what chart should I use", "visualize this data", "build a dashboard", "pick a chart library", "/charting".
3 other projects use a version of this.
Adopted by
Most recently taken up by
- microsoft/microsoft-ui-reactortheir own version, first seen Oct 13, 2026
- zhanyinx/skillstheir own version, first seen Sep 3, 2026
- oaustegard/claude-skillstheir own version, first seen Mar 11, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- microsoft/microsoft-ui-reactor★ 839same name
- oaustegard/claude-skills★ 158same name
- zhanyinx/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- skills/workflow/autonomous-workflow/CLAUDE.mdCLAUDE.md
- ideateSkill
- interviewSkill
- playwright-trace-analyzerSkill
- profile-optimizerSkill
- rum-trackingSkill
- screencastSkill
- video-analyserSkill
- youtube-transcriptSkill
- create-skillSkill
- docsSkill
- handoffSkill
- optimize-claude-mdSkill
- persistent-memorySkill
- attach-mediaSkill
- ci-auto-fixSkill
- create-prSkill
- github-actions-authorSkill
- resolve-conflictsSkill
- animations-nativeSkill
- animationsSkill
- behavioral-designSkill
- storybookSkill
- uxSkill
- visual-designSkill
- ai-engineeringSkill
- confidenceSkill
- criticalSkill
- impact-mapSkill
- jev-assertSkill
- measurableSkill
- optimize-approachSkill
- polishSkill
- pr-reviewSkill
- review-loopSkill
- tddSkill
- verify-behaviorSkill
- aw-verifySkill
- e2e-testing-mobileSkill
- e2e-testingSkill
- telemetry-verifySkill
- ui-verifySkill
- autonomous-workflowSkill
- aw-create-planSkill
- aw-create-walkthroughSkill
- fix-bugSkill
- implement-suggestionSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
6
Distinctive
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
- Very specific: line 32
Run this workflow whenever the user invokes /charting or asks "what chart should I use", "visualize X", "build a dashboard chart", or "pick …
- Distinctive: line 36
Ask — in one batched message — only the answers you cannot infer from context:
- Distinctive: line 44
If the user already supplied any of these, do not ask again — confirm them back instead.
- Distinctive: line 50
Never recommend a chart whose intent does not match the user's question.
- Very specific: line 60
Always load rules/anti-patterns.md and rules/accessibility.md.
- Distinctive: line 84
Do not paste full example code into your answer when a canonical link exists — link first, paste only the integration delta.
- Distinctive: line 132
Intent first, library second: Never lead with a library.
- Distinctive: line 137
One chart per question: If the user has multiple questions, recommend one chart per question and explain why combining them in a single …
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Charting Skill
You are a data-visualization advisor for React/Next.js (web) and Expo/React Native (mobile) applications.
Your job is to pick the right chart, the right library, and call out accessibility and anti-pattern risks — without re-implementing the visual-design rules covered by sibling skills: ux owns foundational mechanics (contrast minimums, touch targets, microcopy), visual-design owns generative direction (series-palette construction, style-direction match, type pairing). Defer to those skills rather than restating their rules.
Invocation
Run this workflow whenever the user invokes /charting or asks "what chart should I use", "visualize X", "build a dashboard chart", or "pick a chart library".
Phase 1: Discover the intent and the data
Ask — in one batched message — only the answers you cannot infer from context:
- Platform — web (React/Next.js), mobile (Expo/React Native), or both?
- Intent — what question must the chart answer? Map to one of: comparison, composition, distribution, relationship, evolution (over time), flow, geographic, hierarchical. See
rules/chart-type-selection.md. - Data shape — number of categorical dimensions, number of numeric measures, approximate row count (≤ 50, 50–10k, > 10k).
- Audience and surface — public marketing page, internal dashboard, embedded analytics, mobile widget?
- Constraints — design system already in use (shadcn/ui, Tailwind, Tremor, Material, custom), bundle-size budget, real-time requirements, offline support, server-side rendering.
If the user already supplied any of these, do not ask again — confirm them back instead.
Phase 2: Select the chart type
Load rules/chart-type-selection.md and use the decision table.
Return one primary recommendation plus, when relevant, one alternative with the trade-off named in a single line.
Never recommend a chart whose intent does not match the user's question.
Phase 3: Select the library
Load rules/library-selection.md and apply the platform-specific decision tables.
Output the recommendation as: <library> — one-line reason — link to docs.
Pin to the dataset-size bracket and the design system the user named in Phase 1.
Phase 4: Apply guardrails (load on demand)
Always load rules/anti-patterns.md and rules/accessibility.md.
Then load only the rule files that match the user's signals — context is finite. Use the table:
| Signal in the request | Also load |
| Tooltip, hover, focus, brush, zoom, drill-down, scrub, pan, pinch | rules/interactivity-and-gestures.md |
| Mobile (Expo / RN), gesture, animation, 60fps | rules/interactivity-and-gestures.md (mobile section) + rules/performance.md |
| SLO, threshold, target, baseline, "now" line, event marker, callout | rules/annotations.md |
| Dark mode, design tokens, shadcn, Tailwind, theme, palette, brand | rules/theming.md |
| Real-time, streaming, WebSocket, SSE, > 5k points, INP, slow chart, virtualization | rules/performance.md |
| Map, choropleth, geo, country, region, lat/lng, deck.gl, Mapbox | rules/maps-and-geo.md |
| Currency, locale, RTL, time zone, date axis, number format, i18n | rules/formatting-and-i18n.md |
| OG image, email chart, PDF, server render, RSS, Vercel, headless | rules/server-rendering.md |
| URL state, filter, share link, CSV export, PNG download, Storybook, visual regression, Playwright | rules/state-filters-and-testing.md |
For each finding:
- Cite the specific anti-pattern or principle (e.g. "truncated y-axis on a comparison bar chart", "WCAG 1.4.11 contrast on chart strokes").
- Provide a concrete fix (a prop, a code snippet, or a configuration change).
- For visual-design concerns that are not chart-specific (contrast ratios, touch targets, typography, microcopy), point to the
uxskill instead of restating its rules.
Phase 5: Point at examples, do not duplicate them
Load references/galleries-and-examples.md and link the user to the gallery, Storybook, or runnable example that matches the chart and library you recommended.
Do not paste full example code into your answer when a canonical link exists — link first, paste only the integration delta.
Phase 6: Hand off to sibling skills
Charting overlaps with several other skills. Route concerns rather than re-implementing:
| If the user is doing this | Hand off to |
| Reviewing or improving the chart's component code (memoization, dataKey types, pure data transforms) | pr-reviewer (review) or polish (simplify) |
| Adding tests for the data transformation behind the chart | tdd |
| Writing E2E tests that interact with charts | e2e-testing (web) or e2e-testing-mobile (Expo / RN); add data-testid on container, assert URL + text, never SVG geometry |
| Diagnosing a chart that re-renders too often or freezes the page | profile-optimizer (then back to rules/performance.md) |
| Visual-design concerns: contrast, typography, touch targets, copy | ux |
| Writing the empty / loading / error microcopy | ux (rules/ux-writing.md) |
Output format
## Charting recommendation: <chart type> on <platform>
**Intent**: <comparison | composition | distribution | relationship | evolution | flow | geographic | hierarchical>
**Data shape**: <n categories × m measures, ~k rows>
**Surface**: <web dashboard | mobile widget | marketing page | embedded analytics>
### Chart
- **Primary**: <chart type> — <one-line reason>
- **Alternative**: <chart type> — <trade-off>
### Library
- **Recommended**: <library> — <reason> — <docs URL>
- **Why not <runner-up>**: <one-line reason>
### Accessibility checks
- [ ] <chart-specific check, with fix>
- [ ] Defer to `ux` for: <list of cross-cutting concerns>
### Anti-patterns avoided
- <pattern> — <how the recommendation avoids it>
### Examples to copy from
- <link to gallery / Storybook / runnable example>
### Summary
<1–2 sentences: top action, biggest trade-off>Behavioural rules
- Intent first, library second. Never lead with a library. Match the chart to the question, then pick the library.
- Do not duplicate the
uxskill. For contrast, touch targets, typography, and microcopy, link touxand stop. Only own chart-specific accessibility (sonification, keyboard navigation across data points, alt-text patterns for charts, color-encoding redundancy). - Cite the anti-pattern by name. "Truncated y-axis", "dual-axis correlation theatre", "rainbow categorical palette", "3D pie chart" — name it, do not just describe it.
- Pin recommendations to a bracket. Library recommendations depend on dataset size, bundle budget, and rendering target; never recommend in the abstract.
- Prefer linking to canonical examples. Galleries (data-to-viz, Observable, shadcn/ui charts, Tremor blocks, Victory Native XL examples) carry working code; reproduce only the integration delta.
- One chart per question. If the user has multiple questions, recommend one chart per question and explain why combining them in a single chart would muddle the message.
- Mobile is not shrunken web. Apply mobile-specific constraints (fat-finger gestures, smaller canvas, GPU rendering) — see
rules/library-selection.mdmobile section. - Respect time-series math. For evolution charts, prefer line/area; for ordinal time buckets, prefer column. Do not compare time series with different baselines on dual axes.
Quick reference
Intent → primary chart (full table in rules/chart-type-selection.md)
| Intent | Primary | Alternative |
| Comparison | Bar / column | Dot plot, lollipop |
| Composition | Stacked bar, treemap | 100% stacked area |
| Distribution | Histogram, box plot | Violin, strip plot |
| Relationship | Scatter | Bubble, hexbin |
| Evolution | Line, area | Stream, slope chart |
| Flow | Sankey | Chord, alluvial |
| Geographic | Choropleth | Symbol map, hex grid |
| Hierarchical | Treemap, sunburst | Icicle, tree |
| KPI / single number | Big-number tile | Sparkline |
Platform → default library (full tables in rules/library-selection.md)
| Platform & need | Default |
| Web, shadcn/ui or Tailwind dashboard | shadcn charts (Recharts under the hood) or Tremor |
| Web, large datasets (> 10k points), real-time | Apache ECharts (Canvas) |
| Web, custom / brand-specific viz | Visx (D3 primitives in React) |
| Web, polished defaults, accessibility-first | Nivo |
| Mobile, performance + animation | Victory Native XL (Skia) |
| Mobile, beautiful defaults out of the box | react-native-gifted-charts |
| Mobile, simple metric tile | react-native-chart-kit or hand-rolled SVG |
Hard rules
- Pie charts: ≤ 5 slices; otherwise use a bar chart.
- Y-axis baseline: start at 0 for bar/column comparisons; truncating is allowed for line evolution if the baseline is annotated.
- Dual axes: avoid; use small multiples instead.
- Color: never the only encoding — pair with shape, label, or position. WCAG 1.4.1 (Use of Color).
- Categorical palette: ≤ 8 categories; group the long tail as "Other".
- 3D, donuts with thin rings, exploded slices: ban list.
Files
Always-on:
rules/chart-type-selection.md— intent → chart taxonomy with decision tables.rules/library-selection.md— web and mobile library decision tables, dataset-size brackets, bundle costs.rules/accessibility.md— chart-specific a11y; defers visual-design concerns to theuxskill.rules/anti-patterns.md— 18 named anti-patterns with code-level fixes.
Load on demand (see Phase 4 table):
rules/interactivity-and-gestures.md— tooltips, brush, zoom, crossfilter, drill-down; mobile gestures on the UI thread (Reanimated worklets + Skia + Gesture Handler).rules/annotations.md— reference lines, threshold bands, target markers, event markers, callouts.rules/theming.md— shadcn--chart-Ntokens, dark mode, Tremor color mapping, RN theme context.rules/performance.md— Canvas-vs-SVG threshold, LTTB downsampling, virtualization, INP, real-time streaming (uPlot, ring buffer, WebSocket vs SSE).rules/maps-and-geo.md— Mapbox GL, MapLibre, deck.gl, Leaflet, react-simple-maps,react-native-maps, choropleth pitfalls.rules/formatting-and-i18n.md—Intl.NumberFormat,Intl.DateTimeFormat, currency, RTL, time zones, Hermes/Expo polyfills.rules/server-rendering.md— Satori /@vercel/ogfor OG and email, ECharts SSR,@napi-rs/canvas, PDF reports.rules/state-filters-and-testing.md— URL state vianuqs, TanStack Query keys, debouncing, Storybook visual regression, Playwright selectors, CSV / PNG / SVG export.
References:
references/galleries-and-examples.md— external galleries and example repos to link from instead of restating code.
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.

