Hybrid-Engine Data Analysis
code-yeongyu/oh-my-openagent
Analyzes CSV, Parquet and JSON data with DuckDB, Polars, numpy and matplotlib, preferring a persistent kernel over repeated one-shot processes.
A skill your agent uses to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames).
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install EvoScientist/EvoSkills paper-figures --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/paper-figures .claude/skills/paper-figures && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .claude/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figuresType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install EvoScientist/EvoSkills paper-figures --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/paper-figures .agents/skills/paper-figures && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .agents/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install EvoScientist/EvoSkills paper-figures --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/paper-figures .cursor/skills/paper-figures && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .cursor/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/EvoScientist/EvoSkills.git --path skills/paper-figures--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install EvoScientist/EvoSkills paper-figures --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/paper-figures .gemini/skills/paper-figures && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .gemini/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install EvoScientist/EvoSkills paper-figuresInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/paper-figures .github/skills/paper-figures && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .github/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add EvoScientist/EvoSkills --skill paper-figures -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install EvoScientist/EvoSkills paper-figures --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/EvoScientist/EvoSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/paper-figures .opencode/skills/paper-figures && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "paper-figures" agent skill from https://github.com/EvoScientist/EvoSkills/tree/main/skills/paper-figures into .opencode/skills/paper-figures/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper-figures", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
paper-figuresA skill your agent uses to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames).
Paper Figures is an agent skill from EvoScientist/EvoSkills. Use this skill to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames). It renders numerical data into formal scientific visualizations—including scatter, line, bar, pie, ring, bubble, tornado, KDE, violin, box, heatmap, histogram, and area charts, plus composite multi-panel figures that combine these types in a single image—for scholarly manuscripts. Only trigger when the final deliverable is an individual image file. Do not use for…
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/chart-types.md`, `references/publication-style.md` and `scripts/validate_figure.py`).
It sits in Data & Analytics, covering Data visualization, Diagrams and DataFrames. It works with Matplotlib, Streamlit and Plotly. The repository describes itself as: 🧬 Extend EvoScientist with Installable Skill & Knowledge Packs. The licence is Apache-2.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9a9f8cf. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
write_fileedit_fileread_filethink_toolexecuteFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonpipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Paper Figures loads about 4.4k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 258 tokens; SKILL.md has 2,107 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from EvoScientist/EvoSkills at commit 9a9f8cf, republished under its Apache-2.0 licence (© EvoScientist). 2,107 words, ~4,401 tokens.
.claude/skills/paper-figures/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.A structured approach to producing publication-ready chart figures (PNG) from tabular data plus a natural-language description, using matplotlib.
Inputs the agent will receive:
Output (always):
plot.py that:matplotlibplt.savefig(..., dpi=300, bbox_inches="tight")plot.png next to it (the script is run and the PNG produced — do not stop at the script).Verification artifacts (write when filesystem access is available):
figure-spec.md — the compact figure specification extracted before coding.audit.md — the post-render audit checklist and any repairs made.final-status.md — one visible status label: PASSED, PASSED_WITH_WARNINGS, REPAIRED, or FAILED_NEEDS_HANDOFF.Output directory:
path/to/dir/"), write plot.py and plot.png inside that directory. Create the directory if it does not exist.plot.py and plot.png. Repeated runs on different inputs go to different directories, not different filenames — this keeps the script reference inside the PNG's neighbourhood stable and makes batch comparison easy.Dependencies: pip install matplotlib pandas numpy scipy (also listed in requirements.txt at the skill root). Install into the environment the user is working in.
Step 1: Plan Figure -> verify: description/data ambiguity handled
Step 2: Inspect the data
Step 3: Write figure-spec.md -> verify: figure-spec.md has all required fields
Step 4: Pick the matplotlib idiom
Step 5: Apply publication-style defaults
Step 6: Write the script and run it -> verify: plot.py runs and plot.png exists
Step 7: Audit the result -> verify: chart matches spec, data, and description;
repair and re-audit until it does; final-status.md is honestTreat the workflow as a small validation protocol, not a one-shot drawing task. The chart is done only after the audit passes or after you explicitly mark the remaining gap.
Use exactly one final status:
| Status | Meaning |
|---|---|
PASSED | The figure matches the requested chart type, data fields, scales, labels, series, legend, annotations, and output contract. |
PASSED_WITH_WARNINGS | The figure is usable and faithful to the request, but a minor style/layout mismatch remains and is named in audit.md. |
REPAIRED | The first render failed at least one audit item, the script was revised, and the repaired render now passes. |
FAILED_NEEDS_HANDOFF | A required field, chart semantics, package dependency, or visual requirement could not be verified or repaired. Name the exact blocker. |
Do not award PASSED because the script ran. Running only proves the PNG exists; it does not prove the figure matches the request.
Before writing any code, identify from the description:
ax.twinx() / ax.twiny()) when two series share an x but have different y-units, and dual / broken axes when ranges span very different magnitudes.If the description references quantities ("around 200", "just above 0"), use those as sanity checks against the CSV — descriptions are paraphrased, the CSV is authoritative.
A few patterns that show up repeatedly:
fig.text or similar; matplotlib has no clean subtitle API and ad-hoc subtitles tend to drift in alignment and style.If the request has a blocking ambiguity that changes the chart semantics (for example, two possible y variables or an unclear unit conversion), ask one specific question. If the ambiguity is only stylistic, choose the simpler option and record it in figure-spec.md.
Read the first ~10 rows and the column names before writing the plot code. The description gives semantic intent; the CSV gives the structural truth. When they disagree about column names, trust the CSV.
For multi-series data, check whether the data is long-form (one row per (series, x, y)) or wide-form (one column per series). Pivot or melt as needed.
figure-spec.mdBefore coding, write a compact Markdown spec. It is the contract the audit will check. Use this shape:
# Figure Spec
- chart_type:
- data_sources:
- rows_in_scope:
- data_columns:
- x_axis:
- field:
- label:
- unit:
- scale:
- range:
- y_axis:
- field:
- label:
- unit:
- scale:
- range:
- additional_axes:
- series_or_categories:
- category_order:
- color_mapping:
- size_mapping:
- legend:
- required_annotations:
- forbidden_elements:
- layout_constraints:
- source_note:
- assumptions:Rules:
scale must be explicit for every numeric axis (linear, log, symlog, etc.).forbidden_elements must include visual elements that are tempting but not requested, such as regression lines, diagonal reference lines, all-point labels, extra size legends, or aggregation.category_order must preserve the description order when one is given. Otherwise preserve data order unless sorting is explicitly requested.assumptions.See references/chart-types.md for a per-type recipe (one short matplotlib snippet per supported chart type). Read it when you need the right idiom for an unfamiliar type, or to refresh on a tricky one (tornado, ring, KDE).
See references/publication-style.md for size, fonts, palette, DPI, and savefig conventions. Apply these every time unless the description explicitly contradicts them.
python plot.py.When scripts/validate_figure.py is available, run it after rendering (the script path is relative to this skill's directory):
python scripts/validate_figure.py --output-dir <output-dir> --spec <output-dir>/figure-spec.mdRe-read the description against your code and the data. Visual inspection of the PNG by the agent is unreliable, so verify structurally instead:
ax.tick_params(length=0), set_xticks([]), or hid an axis spine, can you justify it against the description? Default state is "ticks visible" — hiding them silently is a defect.ax.set_xlim / ax.set_ylim must include them. Tight framing that crops a named feature off the chart is a defect — equivalent to silent data dropping.Treat anything missing as a defect and fix the script.
Record the audit in audit.md:
# Figure Audit
- script_ran: yes/no
- png_exists: yes/no
- chart_type_matches_spec: pass/fail
- data_columns_match_spec: pass/fail
- axis_scales_match_spec: pass/fail
- labels_units_match_spec: pass/fail
- series_category_order_match_spec: pass/fail
- legend_complete_and_uncropped: pass/fail
- annotations_match_spec: pass/fail
- forbidden_elements_absent: pass/fail
- obvious_text_overlap_or_clipping: pass/fail
- repairs_made:
- remaining_warnings:
- final_status:If any required item fails, revise plot.py, re-run it, and re-run the audit. Do not mark the task complete while a required item is failed. If a required item cannot be satisfied because the input is contradictory or a dependency is unavailable, set final_status: FAILED_NEEDS_HANDOFF and state the exact reason.
Priority order:
Publication styling must not change the chart semantics. Do not add visual elements for polish unless the description asks for them or figure-spec.md justifies them.
Hard-code nothing that the user did not ask for. Read data from the provided path; do not synthesize numbers when a CSV exists. The same plot.py should regenerate the same PNG on any machine with matplotlib.
Descriptions can be paraphrased or rounded. When wording conflicts with the CSV, plot what the CSV says, but match the narrative shape (peak locations, trends, orderings) the description implies — a mismatch is a strong signal that you mis-parsed the data.
A single plt.savefig(...) at the end. Do not litter intermediate plt.show() calls (they block in headless environments). No multi-figure scripts unless explicitly asked.
plt.plot / plt.bar is fine for a single Axes. The moment you need subplots, twin axes, or per-axes styling, switch to fig, ax = plt.subplots(...) and call methods on ax. Mixing the two on one figure leads to brittle code.
If the description names colors ("blue for low, orange for high"), use them — they encode meaning in the reader's eye. Otherwise default to a perceptually-uniform palette (tab10 is fine for categoricals; viridis for sequential).
Grids, ticks, frames, and annotations should aid reading. Drop chart-junk by default: hide the top/right spines (ax.spines[['top','right']].set_visible(False)) for most plots, enable a light y-grid only when comparing magnitudes.
tight_layout() will happily crop the title against the top of the axes. Set "axes.titlepad": 10 in the rcParams block (see publication-style.md) or pass pad=10 to ax.set_title(...). A title that touches the axis is the single most common "looks unfinished" tell in a generated figure.
The deliverable is a single PNG. When the description calls for multiple sub-plots (a main chart with side panels, a 2×2 comparison grid, a chart plus an inset), compose them in one figure via fig.add_gridspec(...) and a single savefig. Don't emit multiple PNGs; the eval harness consumes one. See chart-types.md → multi-panel composition.
When matplotlib already ships a helper for a layout, annotation, or formatting task — inset_axes for sub-axes anchored to data, gridspec for panel composition, bar_label for per-bar value annotations, tight_layout / constrained_layout for margin resolution, ticker.FuncFormatter for axis label formatting — use it instead of computing positions, transforms, or text placements by hand. The high-level helpers survive figure resizes, DPI changes, and downstream subplots_adjust calls; manual coordinate transforms break the moment the layout shifts. If you find yourself writing pixel arithmetic or chaining ax.transData / ax.transAxes manually, stop and look for the built-in first.
A "tornado chart" in the description may technically be a horizontal grouped bar chart (positive/negative bars per category). Read the shape the description implies before picking the recipe — and verify against the data layout.
Descriptions say "around 200" when the value is 187.4. Plot 187.4. Only deviate from the CSV if it is clearly wrong (e.g. unit mismatch the description corrects).
Every time you tweak rcParams for one plot, you create a one-off look that's hard to compare across figures. Apply the publication defaults from publication-style.md consistently — only override per-figure when the description demands it.
| Topic | Reference File | When to Use |
|---|---|---|
| Chart-type recipes | chart-types.md | Need the right matplotlib idiom for a specific chart type |
| Publication style | publication-style.md | Setting figure size, fonts, palette, DPI, savefig |
© EvoScientist, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in skills/paper-figures of EvoScientist/EvoSkills.
Open the folder on GitHubat commit 9a9f8cf
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in EvoScientist/EvoSkills, which our catalogue first saw on October 7, 2026.
Paper Figures next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Paper Figures this skillEvoScientist/EvoSkills | 476 | 1 repos | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Hybrid-Engine Data Analysiscode-yeongyu/oh-my-openagent | 70k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Create Static Vizowid/etl | 159 | — | ~8.3k | Automated safety check: Pass | MIT | |
| Analytics Data AnalysisMindrally/skills | 269 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| SeabornK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.4k | Automated safety check: Notes | BSD-3-Clause | |
| MatplotlibzLanqing/codex-claude-academic-skills | 4.7k | 17 repos | ~2.9k | Automated safety check: Pass | MIT |
code-yeongyu/oh-my-openagent
Analyzes CSV, Parquet and JSON data with DuckDB, Polars, numpy and matplotlib, preferring a persistent kernel over repeated one-shot processes.
owid/etl
Build or refresh an OWID static visualization end to end — resolve what data it needs from an old static viz image, an indicator, or a grapher chart; check both the ETL catalog and the producer's…
Mindrally/skills
Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib, seaborn, and Jupyter notebooks.
K-Dense-AI/scientific-agent-skills
Creates Seaborn statistical visualizations with pandas integration for distributions, relationships, categorical comparisons, regression displays, pair plots, and heatmaps.
zLanqing/codex-claude-academic-skills
Low-level plotting library for full customization. An agent skill from zLanqing/codex-claude-academic-skills.
mims-harvard/OptimusKG
Create publication figures with matplotlib/seaborn/plotly. An agent skill from mims-harvard/OptimusKG.
EvoScientist/EvoSkills
A skill your agent uses whenever the user submits a non-trivial mathematical claim that needs a rigorous proof or audit.
EvoScientist/EvoSkills
Iterative code refinement through plan → code → evaluate → refine cycles.
EvoScientist/EvoSkills
Guides pre-writing planning for academic papers with 4 structured steps: story design (task-challenge-insight-contribution-advantage), experiment planning (comparisons + ablations), figure design…
EvoScientist/EvoSkills
Generates structured literature survey reports from collected papers using a multi-stage pipeline: outline generation (query-type adaptive) → draft survey → section-by-section expansion → summary…
EvoScientist/EvoSkills
Find and read academic papers (S2 + arXiv). An agent skill from EvoScientist/EvoSkills.
EvoScientist/EvoSkills
A skill your agent uses for creating or refining an academic slide deck and the talk built around it: structuring a conference talk, thesis defense, lab meeting, or paper-to-slides deck; deciding…
Works with
Categories
A skill your agent uses to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames). Paper Figures is an agent skill from EvoScientist/EvoSkills. Use this skill to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames).
Paper Figures fits situations like: produce standalone; publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs; the final deliverable is an individual image file; interactive dashboards.
Run `npx skills add EvoScientist/EvoSkills --skill paper-figures -a claude-code`. Or copy the skill folder (skills/paper-figures in EvoScientist/EvoSkills) into .claude/skills/paper-figures in your project. Claude Code loads it when a task matches its description.
Run `npx skills add EvoScientist/EvoSkills --skill paper-figures -a codex`. Or copy the skill folder (skills/paper-figures in EvoScientist/EvoSkills) into .agents/skills/paper-figures in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add EvoScientist/EvoSkills --skill paper-figures -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/paper-figures, .gemini/skills/paper-figures, .github/skills/paper-figures and .opencode/skills/paper-figures in your project.
Going by SKILL.md and its folder, Paper Figures needs Python for the scripts in its folder and the command-line tools its instructions call (python and pip). Our summary lists: Python 3. Its frontmatter pre-approves these tools: write_file, edit_file, read_file, think_tool, execute.
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Paper Figures is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Paper Figures: Hybrid-Engine Data Analysis (code-yeongyu/oh-my-openagent, 70k stars), Create Static Viz (owid/etl, 159 stars), Analytics Data Analysis (Mindrally/skills, 269 stars) and Seaborn (K-Dense-AI/scientific-agent-skills, 48k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
EvoScientist (a GitHub organization) maintains it in EvoScientist/EvoSkills, which has 476 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on September 30, 2026.
Source: EvoScientist/EvoSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.