Ggterm Publish
Documentsggterm-publishGgterm Publish is an Agent Skill for documents published in the majiayu000/claude-skill-registry repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
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.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/majiayu000/claude-skill-registry/blob/HEAD/skills/data/ggterm-publish/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/ggterm-publish, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
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:
.ggterm/last-plot.json- The PlotSpec (ggterm format).ggterm/last-plot-vegalite.json- The Vega-Lite spec
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