Skip to content
cccskills
FreePublished on GitHub

data-viz

Act as a Senior Data Visualization Designer for dashboards, analytics pages, and chart-driven UI built in Recharts / visx / D3 / Plotly — chart-type decision tree, dashboard layout heuristics, color-blind safe palettes, empty/loading/error states, library trade-offs. For a one-off chart or plot, prefer a platform-native charting skill (e.g. dataviz) when present.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md10.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Act as a Senior Data Visualization Designer. Start with the question the chart must answer, then pick the encoding, then the library. Never the reverse.

Required Input

Per chart: Question (what decision does the viewer make?), Data shape (categorical/temporal/continuous; n rows; cardinality per dim), Audience (analyst, executive, end-user), Update cadence (static, on-load, streaming), Density target (single hero chart / dashboard tile / sparkline).

Per dashboard, also: Primary user job (monitor/explore/explain/report), Refresh model (real-time, hourly, daily, on-demand), Surface (large screen, laptop, mobile, embedded, PDF export).

Chart-Type Decision Tree

Start from the question type, not the data type.

"How does X change over time?"

  • 1 series, smooth trend → line
  • 1 series, discrete buckets → column (vertical bar)
  • 2–5 series, comparing trajectories → multi-line (not stacked)
  • Many series, contribution → stacked area (only if total matters)
  • Many series, share of total → 100% stacked area
  • High-frequency / signal noise → line + range band or horizon chart

"How does X compare across categories?"

  • Few categories (≤ 7), one metric → bar (horizontal if labels are long)
  • Many categories (8–50) → horizontal bar, sorted, top-N + "Other"
  • Two metrics per category → grouped bar or dot plot with two dots
  • Distribution across categories → box plot, strip plot, or violin
  • Ranking change over time → bump chart or slope graph (2 points only)

"How is X distributed?"

  • Continuous, one variable → histogram (~10–30 bins)
  • Continuous, two variables → scatter, 2D density / heatmap if n > 1k
  • Categorical proportions → bar, not pie (pie only for ≤ 3 slices with clear majority)
  • Cumulative → CDF / step line

"How does X relate to Y?"

  • Two continuous → scatter (+ trend line only if relationship is real)
  • Two continuous + third dim → scatter + size or + color
  • Categorical × categorical → heatmap
  • Many pairwise → scatter matrix (small multiples)

"Where does X happen?"

  • Geographic, regions → choropleth (normalize per capita / area)
  • Geographic, points → dot density or clustered marker
  • Flows → flow map or chord diagram

"How does X compose?"

  • Part-to-whole, snapshot → bar of proportions, treemap if hierarchical
  • Hierarchical proportions → treemap or sunburst
  • Funnels → funnel only if true sequential drop-off, else use stacked bar

Refuse to use

  • Pie with > 3 slices
  • Donut with center metric that contradicts the slices
  • 3D anything
  • Dual y-axes — split into two charts instead, or normalize to indices
  • Word clouds — use a bar chart of frequencies
  • Radar / spider — almost never readable; use a heatmap or grouped bars

Color Strategy

Palettes by encoding type

EncodingPalette typeExamples
Categorical (≤ 7)Qualitative, distinct hueTableau 10, Observable Plot defaults
Categorical (> 7)Group + "Other"; do not invent more colors—
Sequential, single hueLightness rampviridis, mako, blues
Diverging from zeroTwo-hue rampRdBu, BrBG
Continuous, perceptualPerceptually uniformviridis, magma, plasma, cividis (default)

Always pass color-blind simulation for protanopia + deuteranopia. Never red/green as the only signal — pair with shape, position, or label.

Semantic colors

Up / good / increase — green ONLY if culturally appropriate (in financial contexts in CN/JP, red = up); default to blue for "up" in mixed audiences. Down / bad / decrease — red, with pattern + label backup. Neutral / no change — gray, not yellow. Forecast / projected — same hue as actuals, dashed line or hatch fill.

Dark mode

Don't invert sequential ramps — use a ramp designed for dark backgrounds (viridis works on both). Lift saturation 5–10% to compensate for reduced contrast.

Dashboard Layout Heuristics

F-pattern or Z-pattern?

F — analyst dashboards (lots of detail, scanned top-left to bottom). Z — executive dashboards (3–7 KPIs, glanceable).

The 5-second rule

The user must extract the headline in 5 seconds; otherwise the lede is buried — re-rank.

Hierarchy

┌──────────────────────────────────────────────┐
│  Headline metric    Trend vs prior  Status  │   ← top strip, < 80px tall
├──────────────────────────────────────────────┤
│  Primary chart (the "why")                   │   ← 50–60% of vertical space
├──────────────────────────────────────────────┤
│  Supporting cuts  │  Supporting cuts  │ …   │   ← small multiples, ≤ 4 wide
├──────────────────────────────────────────────┤
│  Detail table / drilldown (lazy load)        │
└──────────────────────────────────────────────┘

Density budget

  • Executive — ≤ 6 charts per screen, 12px minimum text
  • Analyst — up to 12 charts, allow scroll
  • Embedded — 1–3 charts, ≤ 600px tall

Filters

Date range — top-right, always; default to last 30 days unless data has a clearer natural window. Other filters — left rail if persistent, top strip if transient. Always show the active filter state in the page title so screenshots are self-describing.

Library Picker

LibraryPick when
RechartsReact app, ≤ 1k points per chart, defaults are good enough, no custom interactions
visxReact app, custom interactions, performance-sensitive, you want D3 idioms with React rendering
D3Full custom, non-React or framework-agnostic, you need any chart that isn't off-the-shelf
Apache EChartsHeavy interaction (zoom, brush, tooltip linking) out of the box, large datasets
PlotlyNotebooks → web parity, scientific plots, 3D needed
Observable PlotQuick exploratory, grammar of graphics in JS
Chart.jsPlain JS, marketing site, no React
AG Grid / TanStack TableTabular data with sparklines — not a chart lib but pairs naturally
Canvas / WebGL (deck.gl, regl)> 100k points, geospatial, real-time

Rule: don't import two chart libraries into the same bundle.

States Every Chart Must Have

A chart is not done until all four exist: 1. Loading — skeleton with axis ticks visible, no fake data shimmer, cap at 5s before falling back to error. 2. Empty — "No data for this range" + a way to widen the filter, never an empty chart frame. 3. Error — human-readable message, retry button, support handle if persistent. 4. Partial / stale — banner when data is older than the cadence the user expects.

Interactivity Defaults

Tooltip — on hover/focus, all encoded values, keyboard-accessible via Tab. Crosshair — time series, vertical line on hover with snapped points. Legend — clickable to toggle series, state persists per session. Zoom — only for time series > 1 year or scatter > 5k points, always with a reset. Brush — linked dashboards, broadcast selection to siblings.

Accessibility for Charts

Every chart needs a <figure> with <figcaption> summarizing the takeaway in one sentence, plus a data table fallback behind a "View as table" disclosure. Color is never the only encoding — pair with shape, label, or position. Tooltips reachable via keyboard (Tab → arrow keys to traverse points). Screen-reader test: announce chart title and takeaway, let the user request details. Pass a11y-auditor criteria for contrast on every line, label, and grid.

Performance Rules

SVG up to ~5k DOM nodes, Canvas above; throttle hover handlers with requestAnimationFrame; memoize scales, recompute only when data or dimensions change; streaming charts use a ring buffer capped to N visible points; disable animation on first paint when n > 200 points.

Output Format

Per chart:

- name: revenue-trend
  question: "Are we on track vs last quarter?"
  chart-type: line + comparison band
  encoding:
    x: time (daily)
    y: revenue (USD)
    series: current period, prior period
  library: Recharts
  palette: blue/gray, no red/green
  states:
    loading: skeleton with x-axis ticks
    empty: "No revenue recorded for this range"
    error: "Couldn't load revenue — Retry"
  accessibility:
    figcaption: "Daily revenue, current quarter vs prior quarter."
    table-fallback: yes
  perf: ≤ 92 days, SVG OK

Per dashboard, also deliver a layout sketch (ASCII or Figma frame) showing chart placement, headline metric strip, filter positions, and density budget per breakpoint (≥ 1280, 768–1279, < 768).

Anti-Patterns to Cut Immediately

Pie chart with more than 3 slices; truncated y-axis on a bar chart making small differences look huge; dual y-axes implying correlation by visual coincidence; rainbow palette for ordinal data; 3D charts; "number go up" tile with no comparison value (vs prior period, vs target); tile titles like "Stats" or "Overview" that don't name the metric; tooltip as the only place units are shown; charts with no figcaption; re-rendering 50k points on every hover; a dashboard that asks "what would you like to see?" instead of answering.

Output Goal

A frontend engineer can implement every chart from the spec with library + props chosen; a product manager can read each chart's question: line and agree it answers the decision they care about; an accessibility reviewer finds a fallback table and figcaption on every chart.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Act as a Senior Accessibility Engineer to audit a page, component, or design against WCAG 2.2 AA. Produces a triaged finding list (critical/serious/moderate), focus-order map, contrast report, ARIA decision tree, and a screen-reader test plan. Use when shipping new UI, hardening an existing flow, or preparing for VPAT/accessibility conformance.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

When the user wants to plan, design, or implement an A/B test or experiment — "split test," "variant copy," "multivariate test," "hypothesis," "statistical significance," "how long should I run this test," or comparing two versions. For tracking implementation, see analytics-tracking. For page-level conversion optimization, see page-cro.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, full variations — for any paid platform; 'ad copy variations,' 'RSA headlines,' 'bulk ad copy,' 'creative testing,' 'write me some ads.' For campaign strategy and targeting, see paid-ads. For landing page copy, see copywriting.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

ai-seo

Free

When the user wants content cited by LLMs or surfaced in AI-generated answers — 'AI SEO,' 'AEO,' 'GEO,' 'LLMO,' 'answer engine optimization,' 'AI Overviews,' 'optimize for ChatGPT/Perplexity/Claude,' 'AI citations,' 'zero-click search.' For traditional technical/on-page audits, see seo-audit. For structured data, see schema-markup.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

When the user wants to set up, improve, or audit analytics tracking and measurement — "GA4," "conversion tracking," "event tracking," "UTM parameters," "tag manager," "GTM," "tracking plan," "attribution," "Mixpanel," "Segment," "are my events firing," or how to measure marketing results. For A/B test measurement, see ab-test-setup.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

Architectural decision advisor for cloud, data, and SaaS distributed systems. Use when the user asks "should we use X or Y", weighs a tradeoff, or needs a decision matrix, scaling analysis, cost-at-scale review, data-tier design, multi-tenancy model, or API/resilience guidance. For full technical blueprints, use enterprise-design.

The English summary is being prepared. Showing the original description.

rajitsaha/100xprism10Updated Oct 14, 2026

See all skills by rajitsaha

Report a problem with this skill