chart-designer — Claude Code skill: charts and dashboards
Picks a chart type for your data and hands back ready configs for ECharts and Chart.js. Useful when you need a dashboard or report, not a hand-drawn graph.
npx skills add claude-office-skills/skills --skill chart-designer -a claude-codeWhat chart-designer does
The skill asks what your data looks like and what story it should tell, then suggests a chart type. You get a config back: JSON for ECharts, an object for Chart.js, setup notes for an Excel chart. Colour palette and font sizes for title, labels and axes come along with it.
Inside are selection tables grouped by task: comparing categories, trends over time, distribution, part-to-whole, funnel, gauge, heatmap, Sankey. A decision tree walks from the question you want to answer to the chart that fits. Each entry lists the data it needs — a pie chart wants categories and percentages, and no more than five items.
The skill does not render anything. It produces a config you paste into your own tooling. It also does not read your data; you describe it. Some of the work depends on the office-mcp MCP server with its create_chart, read_xlsx and create_xlsx tools — without it, Excel chart specs and spreadsheet reading will not run.
What it helps with
- pick a chart type that fits the data
- get a working ECharts or Chart.js config
- plan a dashboard layout
- choose a palette and font sizes
- write an Excel chart spec
Example prompts for the agent
- I have monthly revenue across three channels for a year, I need a chart for a leadership report
- Generate an ECharts config for a conversion funnel by stage
- What data does a heatmap need, and is it the right pick here
How to install chart-designer
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill chart-designer -a claude-code2Manually: put the files in place
~/.claude/skills/chart-designer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/chart-designer/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill chart-designer -a codex2Manually: put the files in place
.agents/skills/chart-designer/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill chart-designer -a cursor2Manually: put the files in place
.cursor/skills/chart-designer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills chart-designer2Manually: put the files in place
.github/skills/chart-designer/SKILL.md1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill chart-designer -a gemini-cli2Platform CLI
gemini skills install https://github.com/claude-office-skills/skills --path chart-designerManually: put the files in place
.devin/skills/chart-designer/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill chart-designer -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about chart-designer
How do I install chart-designer in Claude?
Run npx skills add claude-office-skills/skills --skill chart-designer -a claude-code. The skill lands in ~/.claude/skills/chart-designer/SKILL.md.
What does chart-designer do?
It recommends a chart type for your data and generates configurations for ECharts, Chart.js and Excel. It also suggests colours and styling.
Does the skill render charts itself?
No. It returns a config you paste into your own library or tool. It does not read your data either — you describe it.
Source text
SKILL.md · MIT
---
# ═══════════════════════════════════════════════════════════════════════════════
# CLAUDE OFFICE SKILL - Chart Designer
# ═══════════════════════════════════════════════════════════════════════════════
name: chart-designer
description: "Design effective data visualizations and charts. Generate chart configurations for ECharts, Chart.js, and other libraries. Create dashboards and reports."
version: "1.0.0"
author: claude-office-skills
license: MIT
category: visualization
tags:
- chart
- data-visualization
- echarts
- dashboard
- analytics
department: Data/Analytics
models:
recommended:
- claude-sonnet-4
- claude-opus-4
compatible:
- claude-3-5-sonnet
- gpt-4
- gpt-4o
mcp:
server: office-mcp
tools:
- create_chart
- read_xlsx
- create_xlsx
capabilities:
- chart_selection
- data_visualization
- dashboard_design
- configuration_generation
- best_practices
languages:
- en
- zh
related_skills:
- data-analysis
- infographic
- report-generator
---
# Chart Designer Skill
## Overview
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:**
- Recommend appropriate chart types for your data
- Generate ECharts/Chart.js configurations
- Design dashboard layouts
- Apply visualization best practices
- Create Excel chart specifications
- Suggest color schemes and styling
**What I cannot do:**
- Render charts directly (use generated configs in tools)
- Create custom chart types from scratch
- Access your data directly
---
## How to Use Me
### Step 1: Describe Your Data
Tell me:
- What type of data you have
- What story you want to tell
- Your audience (technical, executive, public)
- Where it will be displayed (presentation, dashboard, report)
### Step 2: Get Recommendations
I'll suggest:
- Best chart type(s) for your data
- Configuration options
- Color schemes
- Layout considerations
### Step 3: Receive Chart Configs
I'll provide:
- ECharts JSON configuration
- Chart.js configuration
- Excel chart setup instructions
- CSS/styling recommendations
---
## Chart Selection Guide
### Comparison Charts
| 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 |
### Trend Charts
| 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 |
### Distribution Charts
| 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 |
### Part-to-Whole Charts
| 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 |
### Specialized Charts
| 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 |
---
## Decision Tree
```
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
```
---
## Output Format
```markdown
# 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]
}
]
};
```
### Chart.js
```javascript
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'
}
}
}
};
```
---
## Styling Recommendations
### Color Palette
- Primary: `#5470c6`
- Secondary: `#91cc75`
- Accent: `#fac858`
- Neutral: `#73c0de`
### Typography
- Title: 16px, bold
- Labels: 12px, regular
- Axis: 11px, light
---
## Best Practices Applied
1. [Practice 1]
2. [Practice 2]
3. [Practice 3]
---
## Alternative Charts
If this doesn't work well, consider:
1. [Alternative 1] - when [condition]
2. [Alternative 2] - when [condition]
```
---
## ECharts Common Configurations
### Bar Chart
```javascript
{
xAxis: { type: 'category', data: categories },
yAxis: { type: 'value' },
series: [{
type: 'bar',
data: values,
itemStyle: { color: '#5470c6' }
}]
}
```
### Line Chart
```javascript
{
xAxis: { type: 'category', data: categories },
yAxis: { type: 'value' },
series: [{
type: 'line',
data: values,
smooth: true,
areaStyle: {} // for area chart
}]
}
```
### Pie Chart
```javascript
{
series: [{
type: 'pie',
radius: ['40%', '70%'], // donut
data: [
{ value: 100, name: 'A' },
{ value: 200, name: 'B' }
]
}]
}
```
### Scatter Plot
```javascript
{
xAxis: { type: 'value' },
yAxis: { type: 'value' },
series: [{
type: 'scatter',
data: [[x1, y1], [x2, y2]],
symbolSize: 10
}]
}
```
---
## Color Palettes
### Professional
```
#5470c6, #91cc75, #fac858, #ee6666, #73c0de, #3ba272, #fc8452, #9a60b4
```
### Cool
```
#1f77b4, #aec7e8, #17becf, #9edae5, #6baed6, #c6dbef, #08519c, #3182bd
```
### Warm
```
#ff7f0e, #ffbb78, #d62728, #ff9896, #e377c2, #f7b6d2, #bcbd22, #dbdb8d
```
### Accessible (colorblind-friendly)
```
#0077BB, #33BBEE, #009988, #EE7733, #CC3311, #EE3377, #BBBBBB
```
---
## Best Practices
### Data Ink Ratio
- Remove unnecessary gridlines
- Minimize chart junk
- Let data be the focus
### Clarity
- Clear, descriptive titles
- Labeled axes with units
- Appropriate precision (not too many decimals)
### Comparison
- Start y-axis at zero for bar charts
- Use consistent scales for comparison
- Sort data logically
### Color
- Use color purposefully
- Consider colorblind users
- Don't use too many colors (≤7)
### Interaction
- Tooltips for details
- Zoom for dense data
- Drill-down for hierarchies
---
## Tips for Better Charts
1. **Know your audience** - technical vs. executive
2. **Start with the question** - what are you trying to answer?
3. **Choose the right chart** - don't force data into wrong formats
4. **Simplify** - less is more
5. **Label clearly** - assume viewers have no context
6. **Test with real users** - is the message clear?
7. **Consider accessibility** - colors, contrast, alt text
---
## Limitations
- Cannot render charts directly
- Configuration may need adjustment for specific tools
- Complex custom visualizations may require code
- Real-time data requires additional setup
---
*Built by the Claude Office Skills community. Contributions welcome!*
© claude-office-skills · MIT · claude-office-skills/skills