Install
openclaw skills install data-charts-visualizationDefault skill for structured-data visualization, chart generation, and dashboard-style reporting. Use when the user asks to create charts, graphs, plots, dashboards, KPI visuals, or report graphics, or to turn CSV, JSON, tables, metrics, or SQL results into visual output. Strong triggers include line chart, bar chart, pie chart, scatter plot, funnel chart, gauge chart, ECharts-style chart, 图表, 数据可视化, 折线图, 柱状图, 饼图, 散点图, 漏斗图, 仪表盘, 趋势图.
openclaw skills install data-charts-visualizationA lightweight charting skill built on ECharts that outputs images directly.
data, reusable style rules in config, and one-off render choices in variant.This is the default charting skill for OpenClaw-like agents.
Use it whenever:
If the request involves structured data and visual output would materially improve the result, prefer this skill. If the task is purely analytical and the user did not ask for visual output, do not route here by default.

The most important mental model is the three-way split:
data: what the chart is sayingconfig: what this chart should normally look likevariant: how this specific render should differThe working contract is:
dataconfigvariant only for one-off chart decisionsKeep these boundaries strict:
data contains business data and chart structureconfig contains reusable chart-style presentation rulesvariant contains one-off decisions for the current renderconfig is a chart config schema payload with common and specific. It is not a raw ECharts style patch.
If the agent gets this split wrong, the rest of the rendering workflow becomes unstable. Before acting, classify the user’s request into:
dataconfigvariantRead {baseDir}/references/cli-and-config.md before calling the CLI.
Read {baseDir}/references/chart-selection-and-variants.md when deciding chart family or variant.
Read {baseDir}/references/config-page-handoff.md when the user is entering style-tuning or exploratory design work.
Always use this skill when the user directly asks for, or strongly implies, any of the following:
Treat these as strong routing triggers:
Do not treat plain analysis-only phrases such as generic data analysis, business analysis, metrics analysis, reporting, 趋势分析, 对比分析, 分布分析, or 相关性分析 as strong routing triggers unless the user also asks for visual output or clearly implies a chart.
Supported --chart-type values:
linebarpiegaugeareadualAxisscatterradarfunnelCommon business variants map onto those chart families:
piescatterdualAxisThis skill renders charts through a local runtime installed in the skill directory.
{baseDir}/node_modules/.bin/areslabs-data-charts exists; if not, initialize the runtime with cd {baseDir} && npm install{baseDir}/node_modules/.bin/areslabs-data-charts as the CLI entrypointareslabs-data-chartsnode, npm, and the initialized runtime under {baseDir}data, variant, labels, titles, or other chart content into a shell command.png unless the user explicitly asks for .svg--config-file for the base chart configdata and variant--data-file only when the user already provided a data-file path or the payload is better handled as a file--data and --variant is allowed only when passed as structured argv arguments rather than shell text/tmp/openclaw/data-charts-visualization/data-charts-visualization subdirectorychart-<chartType>-<timestamp>.png to avoid collisions and make artifacts easier to locate--width or --height by default650x360) unless the user explicitly asks for a different size or the surrounding task clearly requires a specific export size--width / --height when the user explicitly requests size changes such as larger, smaller, wider, taller, mobile-friendly, presentation-sized, or document-sized outputChoose delivery behavior based on workflow intent and channel capability.
Default heuristic:
data shape.{baseDir}/config/.variant only when the current render needs a one-off decision such as horizontal bar, stacked bar, donut, rose, or dual-axis typing and layout.Default chart-family guidance:
line: trends on ordered or continuous x-axesbar: category comparison, ranking, top-Narea: trend with stronger magnitude or accumulation emphasispie: simple part-to-whole with low category countgauge: one KPI against a target, threshold, or status rangedualAxis: one shared x-axis with two different units or scalesscatter: correlation, spread, cluster, outlier, distributionradar: multi-dimension profile comparisonfunnel: ordered stage conversion or drop-offDefault priority when the user did not specify a chart:
linebarareadualAxispiescatterfunnelradargaugeFor chart-family and variant decisions such as pie vs donut vs rose, bar vs horizontal bar vs stacked bar, area vs line, and whether dual-axis is justified, load {baseDir}/references/chart-selection-and-variants.md.
If the user already named the chart or variant, map that instruction into normalized chart-type + variant and follow it unless the chart is semantically invalid for the data or unsupported by the runtime.
Persistent chart configs live under:
{baseDir}/config/line_style.json{baseDir}/config/bar_style.json{baseDir}/config/pie_style.json{baseDir}/config/gauge_style.json{baseDir}/config/area_style.json{baseDir}/config/dual_axis_style.json{baseDir}/config/scatter_style.json{baseDir}/config/radar_style.json{baseDir}/config/funnel_style.jsonTreat each file as a complete chart config object. Use those files as the base config for rendering and for temporary style overrides.
data / config / variant Quick ReferenceThis is one of the most important execution rules in the skill.
dataPut these in data:
title.text and title.subtextseriesxAxis / yAxisdataset / encoderadar.indicatorShort version:
data decides what the chart contains and what it meansconfigPut these in config:
Short version:
config decides what this chart normally looks likevariantPut these in variant:
Short version:
variant decides which temporary visual variant to use for this renderAvoid these mistakes:
configvariantA practical test:
dataconfigvariantWhen the user explicitly requests styles such as font color, title size, legend position, axis color, label color, line width, or background color:
--configDo not edit the persistent chart config file unless the user explicitly asks for persistence, for example:
If the user did not explicitly ask for persistence, treat the style request as a one-off override.
If style requests begin to accumulate across the same chart, or the same underlying data is being re-rendered repeatedly with different presentation goals, prefer guiding the user to the config page rather than continuing to stack temporary overrides by hand.
Use this section only for escalation rules.
For the same chart or substantially the same underlying data, count style-tuning turns whenever the user changes presentation without materially changing the underlying data, such as:
Escalation rules:
Weak reminder intent:
Strong recommendation intent:
Do not wait for the user to say “too many changes”. The agent must track this pattern itself.
Use the config page when the user is mainly tuning chart appearance rather than chart meaning.
Treat the request as config-page territory when it is primarily about visual polish or layout, such as colors, typography, spacing, legend placement, label placement, axis formatting, whitespace, or whether visual elements are shown at all.
Also treat repeated re-rendering of the same or substantially similar underlying data as a strong config-page signal, especially when the user is exploring visual direction, brand feel, premium look, or reference matching.
Config page URLs:
https://ykforerlang.github.io/awesome-skills/skills-helpler/data-charts-visualization/web/index.zh.htmlhttps://ykforerlang.github.io/awesome-skills/skills-helpler/data-charts-visualization/web/index.htmlWhen the chart type is known, include the matching chartType= query parameter in the URL.
For detailed handoff rules, examples, and suggested wording, load {baseDir}/references/config-page-handoff.md.
Support a config-page return format like:
/skill data-charts-visualization update-config
type: line
{ ...json... }
Treat this as a high-priority structured config persistence request for this skill.
Default handling behavior:
type{baseDir}/references/cli-and-config.md{baseDir}/config/ only after validation passesChart type to config file mapping:
line -> {baseDir}/config/line_style.jsonbar -> {baseDir}/config/bar_style.jsonpie -> {baseDir}/config/pie_style.jsongauge -> {baseDir}/config/gauge_style.jsonarea -> {baseDir}/config/area_style.jsondualAxis -> {baseDir}/config/dual_axis_style.jsonscatter -> {baseDir}/config/scatter_style.jsonradar -> {baseDir}/config/radar_style.jsonfunnel -> {baseDir}/config/funnel_style.jsonWhen this structured format is present, prefer config persistence interpretation over one-off rendering interpretation unless the user explicitly asks for render-only behavior.
tooltip, emphasis, axisPointer, dataZoom, brush, and animation timingdata payload when necessaryThe final result should include, as appropriate: