CLI for rendering charts in terminals from numeric text data. chartli turns plain numbers into terminal charts. ascii, spark, bars, columns, heatmap, unicode, braille, svg.
$ npx -y skills add ahmadawais/chartli --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: ahmadawais/chartli
What's inside


CLI for rendering charts in terminals from numeric text data. chartli turns plain numbers into terminal charts. ascii, spark, bars, columns, heatmap, unicode, braille, svg.
Run instantly:
npx chartli --help
Or install globally:
npm i -g chartli
Install the repository skill for agents:
npx skills add ahmadawais/chartli
Quick start:
npx chartli
npx chartli --help
npx chartli [file] [options]
Usage: chartli [options] [file]
Render terminal charts from numeric data
Arguments:
file Input file (reads from stdin if not provided)
Options:
-v, --version Output the version number
-t, --type <type> Chart type: svg, ascii, unicode, braille, spark, bars,
columns, heatmap (default: "ascii")
-w, --width <number> Chart width
-h, --height <number> Chart height
-m, --mode <mode> SVG mode: circles or lines (default: "circles")
--x-axis-label <label> Title to render for the x-axis
--y-axis-label <label> Title to render for the y-axis
--x-labels <labels> Comma-separated labels for x-axis ticks or row labels
--series-labels <labels>
Comma-separated labels for plotted series or categories
--data-labels Show raw values near plotted data when supported
--first-column-x Treat the first numeric column as x labels instead of a
plotted series
--help Display help for command
--x-axis-label and --y-axis-label to add axis titles.--x-labels for explicit tick labels.--series-labels to replace generic labels like S1 and C1.--data-labels to print raw values on or near the plotted data where the renderer supports it.--first-column-x when the first numeric column is a domain like day, month, or year.With --first-column-x, chartli will:
Example:
pnpm chartli examples/assets/core-single-series.txt -t ascii -w 24 -h 8 --first-column-x --data-labels
pnpm chartli examples/assets/core-multi-series.txt -t columns -h 8 --first-column-x --series-labels sales,costs,profit --x-axis-label Metrics --y-axis-label Value --data-labels
pnpm chartli examples/assets/weekly-signups.txt -t ascii -w 28 -h 8 --first-column-x --data-labels
signups
91 โ โ 87
โ 91 โ
โ 73
โ โ 68
66.5 โ 58 โ
โ โ 49
โ42 โ
42 โโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1 2 3 4 5 6 7
day
pnpm chartli examples/assets/weekly-metrics.txt -t columns -h 8 --first-column-x --x-axis-label Metrics --y-axis-label Count --data-labels
Count
176 29 10
โ
โ
โ
โ
โ โ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโ
visits trials paid
Metrics
pnpm chartli examples/assets/weekly-signups.txt -t svg -m lines -w 320 -h 120 --first-column-x --data-labels | sed -n '/^<?xml/,$p' > examples/assets/output/weekly-signups-chart.svg
This writes examples/assets/output/weekly-signups-chart.svg.
asciisparkbarscolumnsheatmapunicodebraillesvgexamples/assets/core-single-series.txtexamples/assets/core-multi-series.txtexamples/assets/image-data.txtexamples/assets/image-single-series.txtexamples/assets/image-columns-variant.txtexamples/assets/weekly-signups.txtexamples/assets/weekly-metrics.txtpnpm chartli examples/assets/image-data.txt -t ascii -w 24 -h 8
day=โ sales=โ costs=โ profit=โ
1.00 โ โ
โ
โ โ โ
โ โ โ
0.50 โ โ โ
โ โ โ โ
โ โ โ
0.00 โโ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโ
pnpm chartli examples/assets/image-data.txt -t spark
day โโโโโ
โ
sales โโโโโ
โ
costs โโโโโโ
profit โโโโโโ
pnpm chartli examples/assets/image-data.txt -t bars -w 28
day |โโโโโโโโโโโโโโโโโโโ | 0.67
sales |โโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 1.00
costs |โโโโโโโโโโโโโโโ | 0.53
profit |โโโโโโโโโโโโโโโโโโโโโโโ | 0.83
pnpm chartli examples/assets/image-data.txt -t columns -h 8
โ
โ โ
โ โ
โ โ โ
โ โ โ โ
โ โ โ โ
โ โ โ โ
โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
day sales costs profit
pnpm chartli examples/assets/image-columns-variant.txt -t columns -h 8
โ โ
โ โ โ
โ โ โ
โ โ โ โ
โ โ โ โ
โ โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
day sales costs profit
pnpm chartli examples/assets/image-data.txt -t heatmap
day sales costs profit
R01
R02 โ โ โ โ
R03 โ โ โ โ
R04 โ โ โ โ
R05 โ โ โ โ
R06 โ โ โ โ
pnpm chartli examples/assets/image-data.txt -t unicode
day sales costs profit
โ
โ โ โ
โ
โ โ โ โ โ โ
โโ โโโ โโ โ โ
โโโ โ โโโ โ โโ โ โ โ
โโโโ โ โโโ โโโโ โ โ โ
โโโโโ โโ
โโโ โโโโโ โโโโโ
โโโโโ โโโโโ โโโโโ โโโโโ
pnpm chartli examples/assets/image-data.txt -t braille -w 16 -h 6
profit
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
โกโ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
pnpm chartli examples/assets/image-data.txt -t svg -m lines -w 320 -h 120 | sed -n '/^<?xml/,$p' > examples/assets/output/image-chart.svg
<?xml version='1.0'?>
<svg xmlns='http://www.w3.org/2000/svg' width='650' height='120' version='1.1'>
<polyline ... />
<polyline ... />
<polyline ... />
<polyline ... />
</svg>
All examples are data-file driven from examples/assets/.
examples/assets/core-single-series.txtexamples/assets/core-multi-series.txtexamples/assets/image-data.txtexamples/assets/image-single-series.txtexamples/assets/image-columns-variant.txtexamples/assets/weekly-signups.txtexamples/assets/weekly-metrics.txtexamples/assets/output/pnpm chartli examples/assets/core-single-series.txt -t ascii -w 24 -h 8pnpm chartli examples/assets/core-multi-series.txt -t sparkpnpm chartli examples/assets/core-multi-series.txt -t bars -w 28pnpm chartli examples/assets/core-multi-series.txt -t columns -h 8pnpm chartli examples/assets/core-multi-series.txt -t heatmappnpm chartli examples/assets/core-multi-series.txt -t unicodepnpm chartli examples/assets/core-single-series.txt -t braille -w 16 -h 6pnpm chartli examples/assets/core-multi-series.txt -t svg -m lines -w 320 -h 120 | sed -n '/^<?xml/,$p' > examples/assets/output/core-chart.svgpnpm chartli examples/assets/image-data.txt -t ascii -w 24 -h 8pnpm chartli examples/assets/image-data.txt -t sparkpnpm chartli examples/assets/image-data.txt -t bars -w 28pnpm chartli examples/assets/image-data.txt -t columns -h 8pnpm chartli examples/assets/image-columns-variant.txt -t columns -h 8pnpm chartli examples/assets/image-data.txt -t heatmappnpm chartli examples/assets/image-data.txt -t unicodepnpm chartli examples/assets/image-data.txt -t braille -w 16 -h 6pnpm chartli examples/assets/image-data.txt -t svg -m lines -w 320 -h 120 | sed -n '/^<?xml/,$p' > examples/assets/output/image-chart.svgpnpm chartli examples/assets/weekly-signups.txt -t ascii -w 28 -h 8 --first-column-x --data-labelspnpm chartli examples/assets/weekly-metrics.txt -t columns -h 8 --first-column-x --x-axis-label Metrics --y-axis-label Count --data-labelspnpm chartli examples/assets/weekly-signups.txt -t svg -m lines -w 320 -h 120 --first-column-x --data-labels | sed -n '/^<?xml/,$p' > examples/assets/output/weekly-signups-chart.svgpnpm run example:kitchen-sinkpnpm run example:image-set:kitchen-sinkpnpm run example:labeled:kitchen-sinkpnpm run example:all-kitchen-sinkImage-set chart run:
pnpm run example:image-set:kitchen-sink
Core + image run:
pnpm run example:all-kitchen-sink
Apache-2.0 by Ahmad Awais built with Command Code.
.commandcode/
taste/
taste.md
.github/
chartli.jpg
qasai/
chartlip.jpg
raw.jpg
raw.png
rawsop.png
v1.png
workflows/
release-rust.yml
.gitignore
biome.json
CHANGELOG.md
examples/
assets/
core-multi-series.txt
core-single-series.txt
image-columns-variant.txt
image-data.txt
image-single-series.txt
output/
core-chart.svg
image-chart.svg
weekly-signups-chart.svg
weekly-metrics.txt
weekly-signups.txt
README.md
package.json
pnpm-lock.yaml
README.md
rust/
.commandcode/
taste/
taste.md
Cargo.lock
Cargo.toml
deploy.md
npm/
bin/
chartlir.js
package.json
README.md
src/
banner.rs
charts/
ascii.rs
bars.rs
braille.rs
columns.rs
heatmap.rs
mod.rs
spark.rs
svg.rs
unicode.rs
main.rs
normalize.rs
skills/
chartli/
SKILL.md
src/
commands/
chart.ts
index.ts
utils/
ascii.ts
banner.ts
bars.ts
braille.ts
chart-annotations.ts
columns.ts
heatmap.ts
normalize.ts
spark.ts
svg.ts
unicode.ts
tests/
ascii.test.ts
braille.test.ts
extra-charts.test.ts
normalize.test.ts
svg.test.ts
unicode.test.ts
tsconfig.json
tsup.config.ts
vitest.config.tsFAQ
chartli is a Claude Code plugin with 1 hand-picked skill for data work, indexed on Flowy. Install it with the command on its page. It includes chartli. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.