figure-plot is a lightweight plotting skill for turning AI/ML experiment results into publication-quality static figures.
It is designed for agent workflows where the user provides:
- a
.csv,.xlsx, or.jsonresult file - a pasted Markdown table or CSV block
- or a natural-language description of experiment results
The skill then guides the agent to:
- inspect the data first
- choose the correct chart family
- generate a small deterministic plotting script
- export both
PDFandPNG - inspect the rendered figure and revise if needed
This project is intentionally optimized for academic paper figures, not for dashboards or interactive charting.
The current version includes defaults and workflow guidance for six common research figure families:
comparison-barablation-bartraining-curvehyperparam-heatmapbox-runsscatter-tradeoff
The style contract is academic and conservative by default:
matplotlib+seaborn- white background
- restrained palette
- vector-friendly export
pdf.fonttype = 42andps.fonttype = 42
figure-plot/
├── SKILL.md
├── README.md
├── README_ZH.md
├── LICENSE
├── Makefile
├── .gitignore
├── agents/
│ └── openai.yaml
├── examples/
│ ├── comparison_results.csv
│ ├── generate_comparison_bar.py
│ ├── training_curve_results.csv
│ ├── generate_training_curve.py
│ ├── ablation_results.csv
│ ├── generate_ablation_bar.py
│ ├── heatmap_results.csv
│ ├── generate_hyperparam_heatmap.py
│ └── output/
│ ├── comparison_bar_example.png
│ └── comparison_bar_example.pdf
├── references/
│ ├── plot-presets.md
│ ├── style-guide.md
│ ├── data-patterns.md
│ └── troubleshooting.md
└── scripts/
├── install-skill.sh
├── check-deps.sh
├── self-test.sh
└── release-test.sh
- SKILL.md: trigger description, workflow, plot selection logic, style contract, and review checklist
- references/plot-presets.md: chart-family defaults and code skeletons
- references/style-guide.md: academic rc params, muted palette, paper sizing guidance
- references/data-patterns.md: common pandas reshape / aggregation patterns
- references/troubleshooting.md: common matplotlib / seaborn issues and fixes
- examples/comparison_results.csv: a real sample input table
- examples/generate_comparison_bar.py: a deterministic example plotting script
- examples/training_curve_results.csv: sample curve data with confidence bands
- examples/ablation_results.csv: sample ablation table
- examples/heatmap_results.csv: sample hyperparameter grid
- scripts/install-skill.sh: one-command install into
~/.claude/skills
./scripts/check-deps.shRequired packages:
matplotlibseabornpandasnumpy
Recommended packages:
scipyopenpyxl
make testmake test-releasemake exampleThis writes the comparison-bar and training-curve examples:
examples/output/comparison_bar_example.pdfexamples/output/comparison_bar_example.pngexamples/output/training_curve_example.pdfexamples/output/training_curve_example.png
To generate all committed example families:
make example-allThis also produces:
examples/output/ablation_bar_example.pdfexamples/output/ablation_bar_example.pngexamples/output/hyperparam_heatmap_example.pdfexamples/output/hyperparam_heatmap_example.png
To copy this skill into the default Claude skills directory:
./scripts/install-skill.shTo install into a custom skills root:
./scripts/install-skill.sh /path/to/skillsOr:
CLAUDE_SKILLS_HOME=/path/to/skills ./scripts/install-skill.shThe repository includes committed example renders produced from the example CSV files:
| Comparison Bar | Training Curve |
|---|---|
![]() |
![]() |
The repository also includes:
examples/output/ablation_bar_example.pngexamples/output/hyperparam_heatmap_example.png
Typical requests that should trigger this skill:
- "Plot this ablation table as a paper-quality bar chart."
- "Turn this CSV into a comparison figure for NeurIPS."
- "Draw a training curve with error bands from these results."
- "Visualize the hyperparameter sensitivity heatmap."
- "Make a camera-ready figure from this results table."
The intended workflow is:
- inspect the input data before plotting
- ask one clarifying question if the chart type is ambiguous
- choose the simplest chart that matches the claim
- write explicit plotting code instead of relying on hidden defaults
- export both
pdfandpng - inspect the
pngrender before reporting completion
This project deliberately avoids:
- interactive plotting libraries by default
- decorative dashboards
- bright or neon palettes
- guessing chart types from vague prose
- The test scripts force a headless-safe Matplotlib backend so they run cleanly on macOS and other non-GUI environments.
- The scripts also isolate Matplotlib cache directories to avoid writable-cache issues during automated runs.
- The repository currently focuses on the skill contract and validation scripts; it does not yet include packaging metadata such as marketplace UI descriptors.
Useful commands:
git status
make test
make test-release
make example
make example-all
./scripts/install-skill.shThis repository now includes:
- release configuration for tag-based GitHub Releases with generated notes
- label configuration for repository labels
- label sync workflow to apply the configured labels
If you modify chart defaults or export rules, rerun both test targets before pushing.

