.agents/skills/chart-designer/SKILL.md
Design effective data visualizations and charts. Generate chart configurations for ECharts, Chart.js, and other libraries. Create dashboards and reports.
npx skillsauth add 305s/magicallesson chart-designerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
I help you design effective data visualizations by recommending the right chart types, generating configurations for popular charting libraries, and applying data visualization best practices.
What I can do:
What I cannot do:
Tell me:
I'll suggest:
I'll provide:
| Chart Type | Best For | Data Requirements | |------------|----------|-------------------| | Bar Chart | Comparing categories | Categories + values | | Grouped Bar | Multiple series comparison | Categories + multiple series | | Stacked Bar | Part-to-whole comparison | Categories + component values |
| Chart Type | Best For | Data Requirements | |------------|----------|-------------------| | Line Chart | Change over time | Time series data | | Area Chart | Cumulative trends | Time series (stacked optional) | | Sparkline | Compact trends | Simple time series |
| Chart Type | Best For | Data Requirements | |------------|----------|-------------------| | Histogram | Value distribution | Numeric values | | Box Plot | Distribution summary | Numeric values with quartiles | | Scatter Plot | Correlation | Two numeric variables |
| Chart Type | Best For | Data Requirements | |------------|----------|-------------------| | Pie Chart | Simple proportions (≤5 items) | Categories + percentages | | Donut Chart | Proportions with total | Categories + percentages | | Treemap | Hierarchical proportions | Hierarchical data + values |
| Chart Type | Best For | Data Requirements | |------------|----------|-------------------| | Funnel | Process stages/conversion | Stages + values | | Gauge | Single KPI vs target | Current value + target | | Heatmap | Matrix comparisons | Row + Column + Value | | Radar | Multi-dimensional comparison | Multiple metrics per item | | Sankey | Flow/transitions | Source + Target + Value |
What do you want to show?
│
├─ Comparison
│ ├─ Among items → Bar Chart
│ ├─ Over time → Line Chart
│ └─ Multiple series → Grouped/Stacked Bar
│
├─ Composition
│ ├─ Static → Pie/Donut (≤5) or Treemap
│ ├─ Over time → Stacked Area
│ └─ Hierarchical → Treemap/Sunburst
│
├─ Distribution
│ ├─ Single variable → Histogram
│ ├─ Multiple datasets → Box Plot
│ └─ Two variables → Scatter Plot
│
├─ Relationship
│ ├─ Two variables → Scatter Plot
│ ├─ Three variables → Bubble Chart
│ └─ Correlation matrix → Heatmap
│
└─ Flow/Process
├─ Sequential stages → Funnel
├─ Transitions → Sankey
└─ Single metric → Gauge
# Chart Design: [Title]
**Data Type**: [Description]
**Purpose**: [What story to tell]
**Recommended Chart**: [Chart type]
---
## Chart Configuration
### ECharts
```javascript
const option = {
title: {
text: 'Chart Title',
left: 'center'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Series 1', 'Series 2'],
bottom: 10
},
xAxis: {
type: 'category',
data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Series 1',
type: 'bar',
data: [120, 200, 150, 80, 70, 110]
},
{
name: 'Series 2',
type: 'line',
data: [100, 180, 160, 90, 80, 100]
}
]
};
const config = {
type: 'bar',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
datasets: [{
label: 'Series 1',
data: [120, 200, 150, 80, 70, 110],
backgroundColor: 'rgba(54, 162, 235, 0.8)'
}]
},
options: {
responsive: true,
plugins: {
title: {
display: true,
text: 'Chart Title'
}
}
}
};
#5470c6#91cc75#fac858#73c0deIf this doesn't work well, consider:
---
## ECharts Common Configurations
### Bar Chart
```javascript
{
xAxis: { type: 'category', data: categories },
yAxis: { type: 'value' },
series: [{
type: 'bar',
data: values,
itemStyle: { color: '#5470c6' }
}]
}
{
xAxis: { type: 'category', data: categories },
yAxis: { type: 'value' },
series: [{
type: 'line',
data: values,
smooth: true,
areaStyle: {} // for area chart
}]
}
{
series: [{
type: 'pie',
radius: ['40%', '70%'], // donut
data: [
{ value: 100, name: 'A' },
{ value: 200, name: 'B' }
]
}]
}
{
xAxis: { type: 'value' },
yAxis: { type: 'value' },
series: [{
type: 'scatter',
data: [[x1, y1], [x2, y2]],
symbolSize: 10
}]
}
#5470c6, #91cc75, #fac858, #ee6666, #73c0de, #3ba272, #fc8452, #9a60b4
#1f77b4, #aec7e8, #17becf, #9edae5, #6baed6, #c6dbef, #08519c, #3182bd
#ff7f0e, #ffbb78, #d62728, #ff9896, #e377c2, #f7b6d2, #bcbd22, #dbdb8d
#0077BB, #33BBEE, #009988, #EE7733, #CC3311, #EE3377, #BBBBBB
Built by the Claude Office Skills community. Contributions welcome!
tools
Automate customer support workflows with Zendesk ticket management, routing, and analytics
tools
Automate YouTube content workflows including video management, analytics, scheduling, and channel optimization
content-media
Create, edit, and manipulate Excel spreadsheets programmatically using openpyxl
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment