Claude-skill-registry ggterm-publish
Export terminal plots to publication-quality formats (PNG, SVG, PDF, HTML). Use when the user wants to save, export, publish, or create a high-quality version of a plot.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ggterm-publish" ~/.claude/skills/majiayu000-claude-skill-registry-ggterm-publish && rm -rf "$T"
manifest:
skills/data/ggterm-publish/SKILL.mdsource content
Publication Export with ggterm
Export terminal plots to publication-quality formats using Vega-Lite.
Prerequisites
The Vega-Lite CLI tools must be installed:
npm install -g vega-lite vega-cli canvas
How It Works
When a plot is created with the CLI, ggterm saves:
- The PlotSpec (ggterm format).ggterm/last-plot.json
- The Vega-Lite spec.ggterm/last-plot-vegalite.json
Export Commands
To PNG (Raster)
npx vl2png .ggterm/last-plot-vegalite.json > plot.png
To SVG (Vector)
npx vl2svg .ggterm/last-plot-vegalite.json > plot.svg
To PDF
npx vl2pdf .ggterm/last-plot-vegalite.json > plot.pdf
To HTML (Interactive)
cat > plot.html << 'EOF' <!DOCTYPE html> <html> <head> <script src="https://cdn.jsdelivr.net/npm/vega@5"></script> <script src="https://cdn.jsdelivr.net/npm/vega-lite@5"></script> <script src="https://cdn.jsdelivr.net/npm/vega-embed@6"></script> </head> <body> <div id="vis"></div> <script> const spec = SPEC_PLACEHOLDER; vegaEmbed('#vis', spec); </script> </body> </html> EOF # Replace placeholder with actual spec bun -e " const spec = require('./.ggterm/last-plot-vegalite.json'); const html = require('fs').readFileSync('plot.html', 'utf-8'); const result = html.replace('SPEC_PLACEHOLDER', JSON.stringify(spec, null, 2)); require('fs').writeFileSync('plot.html', result); "
Custom Dimensions
To export with different dimensions, modify the Vega-Lite spec first:
bun -e " const spec = require('./.ggterm/last-plot-vegalite.json'); spec.width = 800; spec.height = 600; require('fs').writeFileSync('.ggterm/last-plot-vegalite.json', JSON.stringify(spec, null, 2)); " npx vl2png .ggterm/last-plot-vegalite.json > plot-large.png
Workflow
- User creates a terminal plot using
/ggterm-plot - User asks to export it for publication
- This skill exports to the requested format
Troubleshooting
If vl2png/vl2svg fail, ensure dependencies are installed:
npm install -g vega-lite vega-cli canvas
On macOS, canvas may require additional setup:
brew install pkg-config cairo pango libpng jpeg giflib librsvg npm install -g canvas --build-from-source
$ARGUMENTS