Vivid Figures gives an AI assistant 143 chart recipes and a fidelity rule
Lets AI generate scientific figures from your data: 108 recipes, vivid and understated styles, multiple color palettes, delivering both images and source code. Personal, non-commercial use only.
At a glance
- What is it?
- Vivid Figures is an Agent Skills package that tells an AI assistant how to pick and draw a scientific figure from your data, delivering PNG, PDF and plotting source. It leans hard on the model obeying its instructions, and its licence is personal and non-commercial only.
- Who is it for?
- Adopt Vivid Figures if you draw the same kinds of paper figures by hand and want the assistant to start from a working template rather than a blank script, and if personal non-commercial use covers your case. Do not adopt it for anything you plan to publish commercially, sell, or hand to a paid service, because the licence forbids modification, redistribution and paid use without written permission.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 24 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The card count moved three times in two days and the numbers disagree
The catalog is described in several different figures depending on which part of the readme you are looking at. The opening says 143 chart recipes and 3 complete combination templates. A later paragraph says 146 template cards covering 108 original recipes, 32 screenshot-recovered templates, three specific additions, and the 3 combination templates. The changelog then reports 141 cards and 143 previews on 2026-09-15, followed by 109 cards and 111 previews in the same day's format-conversion entry, then 146 cards and 148 previews on 2026-09-16.
Read that as a fast-moving project rather than an error, but it has a practical consequence. The five templates added on 2026-09-16 are explicitly not in the 2026-09-15 release package, and the release attached to that tag carries 143 high-resolution single charts and sixteen 3x3 grids. Someone who downloads the packaged skill gets a different set of templates from someone who clones the repository and reads the current cards, so the two routes are not interchangeable.
One more oddity: a changelog entry is dated 2026-09-17 while the last push to the default branch is 2026-09-16. Either the entry was written ahead of the commit or the dates sit in different time zones. What the dates do confirm is that this is a project days old in this form, not a settled library.
Choosing a chart takes three reads, not one
The selection procedure is the substance here, and it is prescribed rather than left to the model. The assistant first works out what the data is and what the figure is meant to communicate, then reads the description card, then looks at candidate finished images, and only then opens the complete recipe.
That ordering exists because a card is not the recipe. Cards live under `catalog/cards/` as markdown, and the built-in index at `catalog/index.html` gathers 146 cards and previews that can be searched by purpose, structure and data requirement, or filtered by tag. The full code arrives last, as the starting point to adapt.
The stated premise is that you should not have to know what a chart is called. You can hand over Excel, CSV or JSON and ask for a comparison that shows the difference clearly, and the assistant chooses the type. You can also name one directly, and the named examples in the readme are a ridgeline plot, a raincloud plot and a heatmap.
The coverage spreads past plain statistics. The recipe set includes performance comparisons, error distributions, convergence curves, confidence intervals, 3D surfaces, trajectories, maps, engineering plots, flowcharts and technical roadmaps. That breadth is why the Python dependency list runs to geopandas, libpysal and esda for spatial work alongside the usual numpy, pandas, scipy, statsmodels and sympy.
Seven palettes, one default, and a rule against simplifying
Colour comes from a single JSON palette file, and the selection is separate from the drawing guidance. The shared drawing instructions are maintained in common, so choosing a palette is the only style decision involved. Seven palettes ship: coral teal, olive apricot, blue pink, blue sky, soft forest, pastel girl and ocean breeze, with the first two and blue pink carrying 5 to 7 colours and the rest carrying 8.
Olive apricot is the default when you say nothing, and the assistant reuses an existing choice for follow-up images in the same task rather than restarting the decision. Each palette poster shows scatter clusters, violin distributions, stacked ridgelines and stacked colour blocks, so you can see the light fills, outlines and transparency layering before committing.
The posters are simulated data, and the readme says so. They show what a palette suits, not what your figure will look like.
The stronger instruction is the one about fidelity. Templates are to be started from the full recipe, keeping gradients, transparency layers and key graphic elements, and explicitly not to be flattened to a solid colour or reduced to an outline just to save lines of code. Fixing a figure means adjusting position, spacing and size first. Each card carries a list of what to preserve with source line numbers, plus the range of adaptation allowed.
What lands on disk is a figures directory with source, not a picture
Output goes into a `figures/` directory under your task folder, and it is three things rather than one: PNG for looking at, PDF for typesetting, and the plotting code so the figure can be reproduced and edited later. That last item is the reason to care. A chart delivered only as an image is a dead end the moment a reviewer asks for a different axis range.
The tooling behind that promise writes a complete working script, an original draft and a provenance record, and restoring a figure keeps the modifications already made to it. A shared check reports real differences in layers, canvas, fonts and annotation boxes rather than reporting that a script ran.
The acceptance criterion is stated against that failure mode. Final fidelity is judged by comparing against the reference image, not by treating a clean script exit as proof of correctness. There is also a rule about what the assistant may not invent: if the data has no repeated trials or no interval data, no confidence band gets added, and if the data cannot support an element the assistant is supposed to explain the adjustment instead of fabricating the input.
One 2026-09-17 entry describes staging the guidance by phase, full source write-out and restore for 143 main examples, a separate CLI for the complete combinations, and source-difference checking wired into the existing project check. The drawing implementation, palette values and previews were not touched by that pass.
Loading it needs Python 3.10, and sometimes Node, but no image API key
The base environment is Python 3.10 or newer plus the dependencies in `requirements.txt`. Cloning the repository needs Git, and running the bundled Bash check script needs Bash, which on Windows means the Git Bash that ships with Git for Windows. Node.js 22.6 or newer is recommended for the full catalog, and the optional capabilities are separate again: flowcharts, LaTeX technical figures, HTML, Mermaid and AI scene illustrations each need their own tooling, and an ordinary data figure does not require any of them.
The useful negative fact: a normal data figure needs no image generation API key. The assistant's own account and model connection still have to work, but nothing in the drawing path calls a paid image service.
Packaging follows the open Agent Skills specification, with a `SKILL.md` at the root using standard YAML metadata and a markdown body, other files loaded by relative path, and project configuration under `.vivid/`. Load the whole folder into an assistant that supports the spec and has file read and write, code execution and image viewing, then name the skill in your request:
用 vivid-figures-skill 读取 results.csv,比较不同方法的得分分布。
用珊瑚青绿配色。图型你来选,输出 PNG、PDF 和绘图源码。That request asks for the assistant to read a CSV, compare score distributions, pick the chart type, use the coral teal palette and emit all three outputs. Where the folder lives and how it is invoked is left to the client, and `host-adapter.md` covers the general host interface. Windows, macOS and Linux commands are in `docs/INSTALL.md`.
The licence forbids the commercial use a paper figure often serves
This is the constraint to read before anything else. Use is limited to personal, non-commercial purposes. Without prior written permission from the copyright holder you may not modify, adapt, do secondary development on, make derivative works of, redistribute, resell, offer as a paid service, or use it in any other commercial way. Third-party components keep their own licences.
The repository's licence field resolves to NOASSERTION rather than to a standard identifier, so automated tooling will not classify it, and the readme states the limits twice: once in a callout near the top and again in a usage-limits section at the bottom.
For a researcher, the line between personal and commercial is not obvious. A figure for a paper is a grey area rather than a clean one, and a figure inside a paid course or a consultancy deliverable is clearly outside. The restriction on modification is broader still, and it sits in tension with the package's own instruction to adapt templates to your data, which is the activity it exists to support.
Nothing in the readme describes a relicensing path or a commercial tier, and it does not name a contact for permission requests. The QQ group, Gitee issues and GitHub issues appear as feedback channels, not as a licensing contact, and this is not legal advice, so anyone with a real commercial question needs to read `LICENSE` and settle it with the copyright holder directly.
Editorial conclusion
Adopt Vivid Figures if you draw the same kinds of paper figures by hand and want the assistant to start from a working template rather than a blank script, and if personal non-commercial use covers your case. Do not adopt it for anything you plan to publish commercially, sell, or hand to a paid service, because the licence forbids modification, redistribution and paid use without written permission. Verify first that your assistant can read files, run Python and look at images, and check `docs/INSTALL.md` for the host-specific load step, since the package itself does not decide where it installs.
Frequently asked questions
What does Vivid Figures actually install?
It is an Agent Skills package with a `SKILL.md` at the root using standard YAML metadata and a markdown body, with other files loaded by relative path. Where the folder is installed and how it is invoked is decided by the specific client.
Do I need to know the chart type before asking for a figure?
No. The assistant is instructed to understand the data and the purpose first, then select a suitable chart type. You can also name a type directly, such as a ridgeline plot, a raincloud plot or a heatmap.
What files does Vivid Figures produce?
Output usually goes into a `figures/` directory under your task folder, containing PNG for preview, PDF for typesetting, and the plotting source code so the figure can be reproduced and modified. The tooling writes a complete working script, an original draft and a provenance record.
Can I use Vivid Figures commercially?
No. Use is limited to personal, non-commercial purposes, and modification, adaptation, secondary development, derivative works, redistribution, resale and paid service all require prior written permission from the copyright holder.
Does drawing a figure with Vivid Figures cost money for image generation?
No image generation API key is needed for ordinary data figures. You do need a working assistant account and model connection, and the optional capabilities such as Mermaid, LaTeX technical figures and AI illustrations need their own separate tooling.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/yjz211-vivid-figures-skill)