L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Design et création · SKILL.md

chart-image

chart-image

Generate publication-quality chart images from data. Supports line, bar, area, point, candlestick, pie/donut, heatmap, multi-series, and stacked charts. Use when visualizing data, creating graphs, plotting time series, or generating chart images for reports/alerts. Designed for Fly.io/VPS deployments - no native compilation, no Puppeteer, no browser require…

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: chart-image version: 1.1.0 description: Generate publication-quality chart images from data. Supports line, bar, area, point, candlestick, pie/donut, heatmap, multi-series, and stacked charts. Use when visualizing data, creating graphs, plotting time series, or generating chart images for reports/alerts. Designed for Fly.io/VPS deployments - no native compilation, no Puppeteer, no browser required. Pure Node.js with prebuilt binaries. provides:

  • capability: chart-generation methods: [lineChart, barChart, areaChart, pieChart, candlestickChart, heatmap]

Chart Image Generator

Generate PNG chart images from data using Vega-Lite. Perfect for headless server environments.

Why This Skill?

Built for Fly.io / VPS / Docker deployments:

  • ✅ No native compilation - Uses Sharp with prebuilt binaries (unlike canvas which requires build tools)
  • ✅ No Puppeteer/browser - Pure Node.js, no Chrome download, no headless browser overhead
  • ✅ Lightweight - ~15MB total dependencies vs 400MB+ for Puppeteer-based solutions
  • ✅ Fast cold starts - No browser spinup delay, generates charts in <500ms
  • ✅ Works offline - No external API calls (unlike QuickChart.io)

Setup (one-time)

cd /data/clawd/skills/chart-image/scripts && npm install

Quick Usage

node /data/clawd/skills/chart-image/scripts/chart.mjs \
  --type line \
  --data '[{"x":"10:00","y":25},{"x":"10:30","y":27},{"x":"11:00","y":31}]' \
  --title "Price Over Time" \
  --output chart.png

Chart Types

Line Chart (default)

node chart.mjs --type line --data '[{"x":"A","y":10},{"x":"B","y":15}]' --output line.png

Bar Chart

node chart.mjs --type bar --data '[{"x":"A","y":10},{"x":"B","y":15}]' --output bar.png

Area Chart

node chart.mjs --type area --data '[{"x":"A","y":10},{"x":"B","y":15}]' --output area.png

Pie / Donut Chart

# Pie
node chart.mjs --type pie --data '[{"category":"A","value":30},{"category":"B","value":70}]' \
  --category-field category --y-field value --output pie.png

# Donut (with hole)
node chart.mjs --type donut --data '[{"category":"A","value":30},{"category":"B","value":70}]' \
  --category-field category --y-field value --output donut.png

Candlestick Chart (OHLC)

node chart.mjs --type candlestick \
  --data '[{"x":"Mon","open":100,"high":110,"low":95,"close":105}]' \
  --open-field open --high-field high --low-field low --close-field close \
  --title "Stock Price" --output candle.png

Heatmap

node chart.mjs --type heatmap \
  --data '[{"x":"Mon","y":"Week1","value":5},{"x":"Tue","y":"Week1","value":8}]' \
  --color-value-field value --color-scheme viridis \
  --title "Activity Heatmap" --output heatmap.png

Multi-Series Line Chart

Compare multiple trends on one chart:

node chart.mjs --type line --series-field "market" \
  --data '[{"x":"Jan","y":10,"market":"A"},{"x":"Jan","y":15,"market":"B"}]' \
  --title "Comparison" --output multi.png

Stacked Bar Chart

node chart.mjs --type bar --stacked --color-field "category" \
  --data '[{"x":"Mon","y":10,"category":"Work"},{"x":"Mon","y":5,"category":"Personal"}]' \
  --title "Hours by Category" --output stacked.png

Volume Overlay (Dual Y-axis)

Price line with volume bars:

node chart.mjs --type line --volume-field volume \
  --data '[{"x":"10:00","y":100,"volume":5000},{"x":"11:00","y":105,"volume":3000}]' \
  --title "Price + Volume" --output volume.png

Sparkline (mini inline chart)

node chart.mjs --sparkline --data '[{"x":"1","y":10},{"x":"2","y":15}]' --output spark.png

Sparklines are 80x20 by default, transparent, no axes.

Options Reference

Basic Options

OptionDescriptionDefault
--typeChart type: line, bar, area, point, pie, donut, candlestick, heatmapline
--dataJSON array of data points-
--outputOutput file pathchart.png
--titleChart title-
--widthWidth in pixels600
--heightHeight in pixels300

Axis Options

OptionDescriptionDefault
--x-fieldField name for X axisx
--y-fieldField name for Y axisy
--x-titleX axis labelfield name
--y-titleY axis labelfield name
--x-typeX axis type: ordinal, temporal, quantitativeordinal
--y-domainY scale as "min,max"auto

Visual Options

OptionDescriptionDefault
--colorLine/bar color#e63946
--darkDark mode themefalse
--svgOutput SVG instead of PNGfalse
--color-schemeVega color scheme (category10, viridis, etc.)-

Alert/Monitor Options

OptionDescriptionDefault
--show-changeShow +/-% change annotation at last pointfalse
--focus-changeZoom Y-axis to 2x data rangefalse
--focus-recent NShow only last N data pointsall
--show-valuesLabel min/max peak pointsfalse

Multi-Series/Stacked Options

OptionDescriptionDefault
--series-fieldField for multi-series line charts-
--stackedEnable stacked bar modefalse
--color-fieldField for stack/color categories-

Candlestick Options

OptionDescriptionDefault
--open-fieldOHLC open fieldopen
--high-fieldOHLC high fieldhigh
--low-fieldOHLC low fieldlow
--close-fieldOHLC close fieldclose

Pie/Donut Options

OptionDescriptionDefault
--category-fieldField for pie slice categoriesx
--donutRender as donut (with center hole)false

Heatmap Options

OptionDescriptionDefault
--color-value-fieldField for heatmap intensityvalue
--y-category-fieldY axis category fieldy

Volume Overlay Options

OptionDescriptionDefault
--volume-fieldField for volume bars (enables dual-axis)-
--volume-colorColor for volume bars#4a5568

Annotation Options

OptionDescriptionDefault
--annotationStatic text annotation-
--annotationsJSON array of event markers-

Alert-Style Chart (recommended for monitors)

node chart.mjs --type line --data '[...]' \
  --title "Iran Strike Odds (48h)" \
  --show-change --focus-change --show-values --dark \
  --output alert.png

For recent action only:

node chart.mjs --type line --data '[hourly data...]' \
  --focus-recent 4 --show-change --focus-change --dark \
  --output recent.png

Timeline Annotations

Mark events on the chart:

node chart.mjs --type line --data '[...]' \
  --annotations '[{"x":"14:00","label":"News broke"},{"x":"16:30","label":"Press conf"}]' \
  --output annotated.png

Temporal X-Axis

For proper time series with date gaps:

node chart.mjs --type line --x-type temporal \
  --data '[{"x":"2026-01-01","y":10},{"x":"2026-01-15","y":20}]' \
  --output temporal.png

Use --x-type temporal when X values are ISO dates and you want spacing to reflect actual time gaps (not evenly spaced).

Theme Selection

Use --dark for dark mode. Auto-select based on time:

  • Night (20:00-07:00 local): --dark
  • Day (07:00-20:00 local): light mode (default)

Piping Data

echo '[{"x":"A","y":1},{"x":"B","y":2}]' | node chart.mjs --output out.png

Custom Vega-Lite Spec

For advanced charts:

node chart.mjs --spec my-spec.json --output custom.png

Updated: 2026-02-02 - Added x-type temporal, documented all chart types

Skills enregistrées