Provides expert design guidance for creating truthful, clear, beautiful data visualizations. Focuses on **DESIGN DECISIONS ONLY**—chart selection, color strategy, visual encoding, and validation. Assumes data is accurate and prepared. Auto-activates when user mentions: data viz, dashboard, chart type, visualization, infographic
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: "data-visualization-designer"
description: "Provides expert design guidance for creating truthful, clear, beautiful data visualizations. Focuses on **DESIGN DECISIONS ONLY**—chart selection, color strategy, visual encoding, and validation. Assumes data is accurate and prepared. Auto-activates when user mentions: data viz, dashboard, chart type, visualization, infographic"
---
# Data Visualization Designer
## MANDATORY PRE-WORK CHECKLIST
**YOU MUST complete this checklist BEFORE applying this skill:**
**[ ] 1. Read Task Decomposition Override Section**
- **WHY**: Understand the PROHIBITED sequence (Implementation-First Antipattern)
- **WHY**: Understand the MANDATORY sequence (Design-Decision Framework with 4 critical decisions)
- **CONSEQUENCE**: Skipping = 30-50% redesign waste + accessibility failures + misleading visualizations
**[ ] 2. Acknowledge Output Format Requirement**
- **FORMAT REQUIRED**:
```
Data Viz Design Applied:
- Brief: [Purpose + Audience + Success metric]
- Chart Type: [Type] because [data structure + task]
- Color: [Sequential/Diverging/Categorical] palette, [redundant encoding method]
- Encoding: [Primary variable] → position, [Secondary] → [channel]
```
- **WHY**: Hook validation requires this exact format
- **CONSEQUENCE**: Missing acknowledgment = architecture violation
**[ ] 3. Identify Data Viz-Specific Requirements**
- **Chart Type Justification**: Chart MUST match data structure AND task (NOT aesthetics or "what looks cool")
- **Color Accessibility**: NO red-green only encoding, MUST use redundant channels (color + shape/pattern/label)
- **Truthfulness Validation**: Y-axis starts at zero (bar charts) OR clearly labeled, no truncated axes to exaggerate
- **Perceptual Hierarchy**: Position > Length > Angle > Area > Color (Cleveland & McGill research)
- **Colorblind Safe**: Blue-Orange or Blue-Yellow palettes, test with simulators
- **WHY**: Wrong chart type + color-only encoding + misleading axes = 83.5% viewer misinterpretation
- **CONSEQUENCE**: Ignoring = unusable visualization that actively misleads decision-makers
**[ ] 4. Check for Multi-Skill Compositions (v5.5.0)**
- **IF data-visualization-designer + design-excellence + diagram-drawing loaded**:
- YOU MUST apply all three skills in conjunction (not isolation)
- Composition: visual-design-excellence (3.2x quality improvement)
- This skill = data encoding decisions, design-excellence = aesthetics, diagram = Chart.js code
- **CONSEQUENCE**: Single-skill usage when composition available = suboptimal quality
**✅ ALL BOXES CHECKED = Ready to proceed to Task Decomposition Override**
**❌ SKIPPING THIS CHECKLIST = Claiming "Data Viz Design Applied" while creating misleading charts**
---
## Task Decomposition Override (v5.4.0)
When designing data visualizations, DO NOT use your default task decomposition.
### ❌ PROHIBITED SEQUENCE (Implementation-First Antipattern):
1. Jump straight to creating charts
2. Pick chart type based on aesthetics
3. Apply colors randomly
4. Add data and hope it works
5. Discover accessibility issues after completion
**Consequence**: Redesign waste (30-50% rework), accessibility failures, misleading visualizations, frustrated stakeholders.
### ✅ MANDATORY SEQUENCE (Design-Decision Framework):
**Phase 1: Design Decision** (Make 4 critical decisions)
1. **Establish Brief**:
- Reference: Skill "The Foundation: Four-Element Framework"
- Output: Purpose, audience, context, success metric documented
2. **Select Chart Type**:
- Reference: Skill "Chart Type Selection" + @data-visualization-designer/resources/perceptual-accuracy-research.md
- Output: Chart type with justification (comparison/relationship/distribution/composition)
3. **Design Color Strategy**:
- Reference: Skill "Color Strategy"
- Output: Palette type (sequential/diverging/categorical), colorblind-safe verification, redundant encoding plan
4. **Plan Visual Encoding**:
- Reference: @data-visualization-designer/resources/perceptual-accuracy-research.md
- Output: Which visual channels encode which variables (position > length > color)
**Output Acknowledgment After Phase 1:**
```
Data Viz Design Applied:
- Brief: [Purpose + Audience + Success metric]
- Chart Type: [Type] because [data structure + task]
- Color: [Sequential/Diverging/Categorical] palette, [redundant encoding method]
- Encoding: [Primary variable] → position, [Secondary] → [channel]
```
**Phase 2: Implementation** (Apply decisions)
5. Apply typography hierarchy (reference: @data-visualization-designer/resources/crap-principles-for-data.md)
6. Add strategic annotations (reference: @data-visualization-designer/resources/data-storytelling.md)
7. Optimize data-ink ratio (reference: @data-visualization-designer/resources/data-ink-optimization.md)
8. Implement design (hand off to diagram-drawing skill for Chart.js/D3.js code)
**Phase 3: Validation** (Verify quality)
9. Run truthfulness audit (reference: Skill "Critical Mistakes" - Fatal category)
10. Check accessibility (reference: Skill "Accessibility Requirements")
11. Validate against Quick Audit Checklist (reference: Skill "Quick Audit Before Publishing")
**IF you use ❌ sequence instead of ✅ sequence = ARCHITECTURE VIOLATION**
**Rationale**: Design decisions BEFORE implementation prevents 30-50% redesign waste. Establishes brief, justifies chart selection, ensures accessibility from start, enables validation against documented criteria. Quality guaranteed through checkable Phase 1 outputs.
---
## Language Standards (v5.4.0)
**YOU MUST use directive language throughout:**
- ✅ "YOU MUST use", "DO NOT use", "ALWAYS", "NEVER", "MANDATORY", "PROHIBITED"
- ❌ Never: "should", "consider", "might", "could", "try to"
**Enforcement**: Skills with weak language blocked by pre-tool-use-write.ts hook.
---
## The Foundation: Four-Element Framework
Every effective visualization requires these elements:
**Information** - Accurate, verified data (provided to you)
**Story** - The insight your visualization communicates
**Goal** - Specific purpose: persuade, enable decisions, communicate insights
**Visual Form** - How you encode meaning through visual channels (position, color, size, shape)
**YOU MUST establish all four elements before designing.** If any element is unclear, use AskUserQuestion tool to clarify. Missing elements create incomplete, ineffective visualizations.
### Brief Template
Answer these before starting:
**Purpose**: What specific question does this answer? What decision should it enable?
**Audience**: Who views this? Technical experts or general public? Visual literacy level?
**Context**: When/how will viewers access? Dashboard? Report? Publication? Mobile or desktop?
**Success Metric**: How do you know it succeeded? Comprehension in 5 seconds? Action taken? Decision made?
---
## Chart Type Selection
**YOU MUST match chart type to data structure and task, NOT aesthetics.**
### COMPARISON (How datasets differ)
**Few values (≤3)**: Bar/column chart
**Many values (4-10)**: Grouped bars or dot plot
**Many categories (>10)**: Horizontal bar chart (easier label reading)
**Time-based comparison**: Column chart
**❌ AVOID**: Pie charts (human vision terrible at comparing angles—10-30× less accurate than bars)
### RELATIONSHIP (How variables correspond)
**Two continuous variables**: Scatter plot
**Three dimensions**: Bubble chart (size = 3rd variable)
**Many comparisons**: Small multiples
**Correlation strength**: Scatter plot with regression line
**❌ AVOID**: Lines connecting scatter points (implies false temporal continuity)
### DISTRIBUTION (How data spreads)
**Single variable distribution**: Histogram or box plot
**Distribution over time**: Line chart
**Multiple distributions**: Small multiples or violin plots
**Pattern matrix**: Heatmap
**❌ AVOID**: 3D histograms (distorts perception), rainbow colormaps (creates false boundaries)
### COMPOSITION (Parts of whole)
**Static 2-5 categories**: Stacked bar chart (NOT pie)
**Changes over time**: Stacked area chart or waterfall
**Hierarchical data**: Treemap or sunburst
**Flow between categories**: Sankey diagram
**❌ AVOID**: Pie charts except rare cases (<5 categories, one slice >50%)
### Decision Matrix
| Data Structure | Task | Recommended Chart |
|----------------|------|-------------------|
| 1 categorical, 1 quantitative | Compare values | Bar chart |
| 2 categorical, 1 quantitative | Compare groups | Grouped/stacked bar |
| Time series, 1 metric | Show trend | Line chart |
| Time series, multiple metrics | Compare trends | Multiple lines or small multiples |
| 2 continuous variables | Correlation | Scatter plot |
| 1 continuous variable | Distribution | Histogram |
| Hierarchical categories | Part-whole | Treemap |
| Geographic data | Spatial patterns | Choropleth map |
---
## Color Strategy
**YOU MUST use color to serve a communication goal, NOT decoration.** Reserve saturated colors for emphasis.
### Choose Palette Type
**Sequential (single hue, light to dark)** - Ordered data
- **Use for**: Heatmaps, distributions, intensity, magnitude
- **Safe palettes**: Viridis, Blues, Grays, YlGnBu
- **❌ AVOID**: Rainbow/Jet (creates false boundaries, colorblind-hostile)
**Diverging (two sequences, neutral center)** - Meaningful midpoint
- **Use for**: Temperature anomalies, profit/loss, deviations from mean, +/- data
- **Safe palettes**: Blue-White-Orange, Green-White-Purple, RdBu
- **❌ AVOID**: Red-Green together (~8% of viewers can't distinguish)
**Categorical (distinct groups)** - Unrelated categories
- **Use for**: 2-7 categories maximum
- **Safe palette**: Orange, Blue, Green, Red, Purple, Yellow, Gray (in priority order)
- **❌ AVOID**: Too many colors (>7 overwhelms memory), similar hues (hard to distinguish)
### Accessibility Requirements (MANDATORY)
**YOU MUST implement ALL of these:**
1. **Never rely on color alone** → Add labels, patterns, shapes, or text
2. **Never red-green together** → ~8% of viewers (1 in 12 men) cannot distinguish
3. **Always check grayscale** → Visualization must work in black and white
4. **Always add redundant encoding** → Color + label, or color + pattern, or color + shape
**Colorblind-safe palettes**:
- Blue-Orange (most universal)
- Blue-Yellow
- Purple-Orange
- Viridis/Plasma (perceptually uniform, colorblind-friendly)
**Test your palette**: Use colorblind simulation tools (Coblis, Color Oracle) to verify.
---
## Typography & Visual Hierarchy
**Font Selection**:
- **YOU MUST use**: Sans-serif fonts for screen legibility (IBM Plex Sans, Space Grotesk, Source Sans 3, Fira Sans)
- **❌ DO NOT use**: Inter, Roboto, Arial, Helvetica (signals "AI slop"—generic AI-generated content)
- **Limit**: 2 fonts maximum (heading + body)
- **Weight**: Regular weight default (not light, not bold except emphasis)
**Size Hierarchy** (establish clear levels):
- **Title**: Largest, boldest (18-24pt, dominant message)
- **Axis labels**: Secondary (12-14pt)
- **Annotations**: Tertiary (10-12pt)
- **Minimum**: 12pt on screen, 10pt in print
**Apply CRAP Principles** (reference: @data-visualization-designer/resources/crap-principles-for-data.md):
- **Contrast**: Different elements very different (size, color, weight)
- **Repetition**: Same font/color/size for same element types (coherence)
- **Alignment**: Every element connects visually to another
- **Proximity**: Related items grouped close; unrelated separated
**Whitespace Strategy**: Strategic blank space directs attention and reduces cognitive load. DO NOT fear empty areas—they create breathing room.
---
## Visual Encoding Hierarchy
**Based on Cleveland & McGill perceptual accuracy research** (reference: @data-visualization-designer/resources/perceptual-accuracy-research.md):
### Perceptual Accuracy Ranking (Most to Least Accurate)
1. **Position along common scale** (X/Y axis) - **MOST ACCURATE**
2. **Position on non-aligned scales** (small multiples)
3. **Length** (bar heights)
4. **Angle** (pie slices) - 2-3× less accurate than position
5. **Area** (bubble size) - hard to judge, non-linear perception
6. **Volume** (3D objects) - highly inaccurate, distorted
7. **Color saturation** - **LEAST ACCURATE** for quantities
### Design Implications
**YOU MUST apply this hierarchy:**
- **Put most important comparisons in position along axis** (highest accuracy)
- **Use length for secondary comparisons** (bar charts, column charts)
- **Use color for emphasis or categorization** (NOT for precise quantities)
- **NEVER use 3D for non-spatial data** (distorts perception, reduces accuracy)
**Example**: Comparing sales across regions over time
- **Position**: Time on X-axis, sales on Y-axis (primary comparison)
- **Color**: Different regions (categorical distinction)
- **❌ NOT area**: Bubble size for sales (hard to judge precisely)
---
## Annotation & Storytelling
**Strategic annotations explain and guide** (reference: @data-visualization-designer/resources/data-storytelling.md).
### What to Annotate
**YOU MUST annotate**:
- **Outliers and anomalies** - Why is this point unusual?
- **Historical context** - Benchmarks, previous periods, goals
- **Key findings** - Insights you want highlighted
- **Methodology** - Data source, date range, limitations
**Keep concise**: One insight per annotation. Style consistently. Avoid over-annotation (more annotations than data points = clutter).
### Direct Labeling Strategy
**YOU MUST use direct labeling** instead of legends whenever possible:
- Integrate labels into visualization
- Eliminates need to match colors back to legend
- Reduces cognitive load
- Faster comprehension
**Example**: Label each line directly at endpoint instead of legend box.
### Title Conveys Insight
**❌ Descriptive title**: "Sales Over Time"
**✅ Insight-driven title**: "Sales Increased 60% in Q4"
**✅ Question-answering title**: "Which Products Drive Growth? Premium Segment"
**Title should communicate main takeaway** without requiring viewers to read the full chart.
---
## Critical Mistakes to Avoid
### ❌ FATAL (Directly Misleads Viewers)
**Truncated Y-Axes on Bar Charts**
- **What it is**: Y-axis doesn't start at zero, exaggerates differences
- **Impact**: 83.5% of viewers misinterpret magnitude (Cleveland & McGill)
- **Fix**: ALWAYS start bar chart Y-axes at zero, OR use broken axis indicator + clear labeling
**3D Effects (Non-Spatial Data)**
- **What it is**: Adding depth/perspective to charts representing non-spatial data
- **Impact**: Distorts through perspective (lie factor 1.5-2.0), rear values appear smaller
- **Fix**: NEVER use 3D for business/analytical data
**Red-Green Color Encoding**
- **What it is**: Using red and green as primary color distinction
- **Impact**: ~8% of viewers (1 in 12 men) see both as same muddy color
- **Fix**: Use Blue-Orange, Blue-Yellow, or other colorblind-safe palettes + redundant encoding
### ⚠️ SERIOUS (Significantly Reduce Effectiveness)
**Rainbow Colormap (Jet)**
- **What it is**: Rainbow gradient (red-orange-yellow-green-blue-purple)
- **Impact**: Creates false boundaries (bright yellow stripe), non-monotonic luminance, colorblind-hostile
- **Fix**: Replace with Viridis, Plasma, or Blue-White-Red diverging palette
**Color-Only Encoding**
- **What it is**: Information conveyed ONLY by color, no alternative
- **Impact**: Fails for colorblind viewers, grayscale printing, accessibility
- **Fix**: Add direct labels, patterns, shapes, or text (redundant encoding)
**Dual-Axis Charts (Incompatible Scales)**
- **What it is**: Two Y-axes with different scales on same chart
- **Impact**: Creates false correlation appearance, easily manipulated
- **Fix**: Use separate charts instead, OR ensure scales proportional + clearly labeled
**Pie Charts for Comparisons**
- **What it is**: Using pie charts to compare multiple values
- **Impact**: Human vision terrible at comparing angles (10-30× less accurate than bars)
- **Fix**: Use bar charts for comparison; pie only for showing one slice >50%
### 📊 MODERATE (Reduce Clarity)
**Too Many Colors** (>7)
- **Impact**: Overwhelms viewers, exceeds working memory capacity
- **Fix**: Reduce to 5-7 max, combine minor categories into "Other"
**Missing Context**
- **Impact**: No title, axis labels, data source, or date → viewers can't interpret or trust
- **Fix**: ALWAYS include title (conveys insight), axis labels (with units), source, date
**Chartjunk** (reference: @data-visualization-designer/resources/data-ink-optimization.md)
- **Impact**: Heavy gridlines, 3D effects, decorative backgrounds, ornamental fonts increase cognitive load
- **Fix**: Remove all non-data elements; maximize data-ink ratio
**Small Text**
- **Impact**: Below 12pt struggles for readability, excludes people with low vision
- **Fix**: Minimum 12pt (14pt+ optimal for accessibility)
---
## Quick Audit Before Publishing
**Run this 9-minute checklist before sharing any visualization:**
### Data Integrity (2 minutes)
- [ ] Bar chart Y-axis starts at zero OR clearly labeled if not
- [ ] No 3D effects on non-spatial data
- [ ] Dual axes proportional or clearly explained
- [ ] Data truthfully represented (no distortion)
### Design Quality (3 minutes)
- [ ] Title conveys insight (not just "Chart")
- [ ] Axis labels include units
- [ ] Color palette limited (max 5-7 categorical)
- [ ] No red-green together
- [ ] No color-only encoding (redundant encoding added)
- [ ] Grayscale readable
### Context (2 minutes)
- [ ] Title clear and insight-driven
- [ ] Legend present OR direct labels used
- [ ] Data source and date cited
- [ ] Sufficient context for interpretation
- [ ] Key findings/outliers explained
### Polish (2 minutes)
- [ ] Font professional sans-serif (IBM Plex Sans, Space Grotesk, Source Sans 3, NOT Inter/Roboto)
- [ ] Text minimum 12pt
- [ ] Alignment consistent (CRAP principles applied)
- [ ] Whitespace strategic
- [ ] No chartjunk (reference: data-ink-optimization.md)
**Total: 9 minutes. All checkboxes pass = ready to publish.**
---
## Integration
**Works Well With:**
- **Skill: design-excellence** - General typography anti-patterns, color theory, motion principles, background design (auto-activates together)
- **Skill: diagram-drawing** - Chart.js/D3.js technical implementation, export to PNG/SVG/PDF (auto-activates together)
- **Pattern: component_design** - UI component design patterns
**Typical Workflow**:
1. design-excellence auto-activates → General design principles (typography, color themes)
2. **data-visualization-designer auto-activates** → Chart selection, color strategy, validation
3. diagram-drawing auto-activates → Chart.js implementation code
**Separation of Concerns**:
- design-excellence = General design (not data-specific)
- **data-visualization-designer = Design decisions** (what chart, why, validation)
- diagram-drawing = Technical execution (Chart.js config, D3.js patterns)
---
## When to Load Resources
**CRAP principles deep-dive:**
- `@data-visualization-designer/resources/crap-principles-for-data.md` - Contrast, Repetition, Alignment, Proximity applied to charts/dashboards
**Perceptual accuracy research:**
- `@data-visualization-designer/resources/perceptual-accuracy-research.md` - Cleveland & McGill hierarchy, encoding decisions, science-backed design
**Data-ink optimization:**
- `@data-visualization-designer/resources/data-ink-optimization.md` - Tufte principles, chartjunk removal, maximizing data-ink ratio
**Storytelling techniques:**
- `@data-visualization-designer/resources/data-storytelling.md` - Annotation strategies, narrative arc, progressive disclosure
---
## Anti-Patterns to Avoid
**Chart Selection:**
- ❌ Pie charts for comparison tasks (use bar charts)
- ❌ 3D charts for non-spatial data (use 2D)
- ❌ Dual-axis with incompatible scales (use separate charts)
- ❌ Lines connecting non-temporal scatter points (remove lines)
**Color:**
- ❌ Red-green encoding (~8% can't distinguish)
- ❌ Rainbow/Jet colormap (creates false boundaries)
- ❌ Color-only encoding (add redundant labels/patterns)
- ❌ Too many colors (>7 overwhelms memory)
- ❌ Purple gradients on white (cliché "AI slop" pattern)
**Typography:**
- ❌ Inter, Roboto, Arial, Helvetica fonts (signals generic AI content)
- ❌ All text same size/weight (no hierarchy)
- ❌ Text below 12pt (readability issues)
- ❌ Ornamental fonts (reduces legibility)
**Truthfulness:**
- ❌ Truncated Y-axis without clear indication (misleads magnitude)
- ❌ 3D effects (distorts perception)
- ❌ Manipulated scales (exaggerates differences)
- ❌ Cherry-picked data ranges (hides context)
**Layout:**
- ❌ Missing axis labels/units (viewers can't interpret)
- ❌ No title or generic title (doesn't convey insight)
- ❌ No data source or date (can't verify or trust)
- ❌ Chartjunk (heavy gridlines, decorative backgrounds, borders)
- ❌ Pure white (#fff) or pure black (#000) backgrounds (use atmospheric gradients)
---
## Design Checklist
**Before implementing any visualization, verify all 8:**
1. ✓ **Brief Established** - Purpose, audience, context, success metric clear
2. ✓ **Chart Type Selected** - Matched to data structure and task, justified over alternatives
3. ✓ **Color Strategy Decided** - Palette type chosen (sequential/diverging/categorical), accessibility verified, redundant encoding planned
4. ✓ **Visual Hierarchy Clear** - Title dominant, axis labels secondary, annotations tertiary, whitespace strategic
5. ✓ **Encoding Optimized** - Most important variables in highest-accuracy channels (position > length > color)
6. ✓ **Annotations Complete** - Key insights highlighted, context provided, outliers explained
7. ✓ **Accessibility Verified** - No color-only encoding, grayscale works, no red-green, text ≥12pt, redundant encoding present
8. ✓ **Mistakes Avoided** - Passed Fatal/Serious/Moderate audit, 9-minute quick audit completed
**All 8 passing = ready to implement** (hand off to diagram-drawing skill for Chart.js/D3.js code).
---
## Core Principle
**Truthfulness > Beauty > Novelty**
**Always.**
Design emerges from understanding:
1. The data (structure, patterns, limitations)
2. The insight you want to communicate
3. The audience who needs to understand it
**Rush any of these = poor design. 80% effort → understanding. 20% effort → visual execution.**No comments yet. Be the first to comment!