Agent skill

Bio Reporting Figure Export

by GPTomics in GPTomics/bioSkills

Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2.

MITAuto-check passedData & Analytics

Install Bio Reporting Figure Export

skills CLI
$ npx skills add GPTomics/bioSkills --skill bio-reporting-figure-export -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install GPTomics/bioSkills bio-reporting-figure-export --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/GPTomics/bioSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/reporting/figure-export .claude/skills/bio-reporting-figure-export && rm -rf skills-src

Use ~/.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/

Facts

Skill name
bio-reporting-figure-export
GitHub stars
1.2k
Used in
1 other repo
Token cost
~3.6k tokens
SKILL.md length
1,799 words
Files
3
Skills in repo
559
Repo updated
First seen
Licence
MIT

At a glance

Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2.

  • Works in 4 steps: Vector structure - axes, ticks, spines,… → Raster data layer - the dense part: a… → Type - every glyph. Editors need it to… → …
  • Preparing figures for journal submission
  • SKILL.md covers Version Compatibility, The Load-Bearing Idea: A…, The Hybrid Figure (rasterize… and Fonts: Keep the Text Editable, plus 10 more sections
  • Runs Python scripts from its folder; calls pip

What it does

Bio Reporting Figure Export is an agent skill from GPTomics/bioSkills. Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2. Use when preparing figures for journal submission, exporting a dense single-cell or GWAS plot without producing an unopenable vector file, or fixing fonts and colors that break in print.

Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `examples/publication_figures.py` and `usage-guide.md`).

It sits in Data & Analytics, covering Data visualization, Scientific writing and Bioinformatics. It works with Matplotlib. The repository describes itself as: a set of SKILLS.md for doing bioinformatics with agents like claude code. The licence is MIT.

When your agent uses it

  • Preparing figures for journal submission
  • Exporting a dense single-cell
  • GWAS plot without producing an unopenable vector file
  • Fixing fonts and colors that break in print

Example prompts

  • “Use the bio-reporting-figure-export skill to export publication-ready figures with the correct vector/raster split, embedded editable fonts…”
  • “/bio-reporting-figure-export”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Vector structure - axes, ticks, spines, gridlines, fit lines, error bars, annotations. Resolution-independent; must stay vector so the…
  2. Raster data layer - the dense part: a scatter with 10^5-10^7 points, a heatmap, a micrograph. Drawing a million points as a million vector…
  3. Type - every glyph. Editors need it to stay selectable text, not flattened paths or pixels baked into the raster.
  4. Color encoding - the data-to-color mapping. A scientific choice (perceptual uniformity, color-vision-deficiency safety, grayscale…

What it can do on your machine

Read from SKILL.md and the folder at commit d91ed3d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bio Reporting Figure Export loads about 3.6k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 1,799 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~102
When it runs · the whole SKILL.md, loaded when a task matches
~3.6k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from GPTomics/bioSkills at commit d91ed3d, republished under its MIT licence (© GPTomics). 1,799 words, ~3,620 tokens.

Download SKILL.mdSave it as .claude/skills/bio-reporting-figure-export/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
bio-reporting-figure-export
description
Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2. Use when preparing figures for journal submission, exporting a dense single-cell or GWAS plot without producing an unopenable vector file, or fixing fonts and colors that break in print.
tool_type
mixed
primary_tool
matplotlib
goal_approach_exempt
true

Version Compatibility

Reference examples tested with: matplotlib 3.8+, numpy 1.26+, ggplot2 3.5+, ggrastr 1.0+, ragg 1.2+

Before using code patterns, verify installed versions match. If versions differ:

  • Python: pip show matplotlib then help(matplotlib.figure.Figure.savefig); introspect matplotlib.rcParams if a key is renamed
  • R: packageVersion('ggplot2') then ?ggsave

If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying.

Publication-Ready Figure Export

"Export this figure for the journal" -> Save the plot so each part of it survives production: vector structure stays crisp, the dense data layer stays a reasonable file size, text stays editable, and color survives the print conversion.

  • Python: fig.savefig('fig.pdf', dpi=600) with publication rcParams set
  • R: ggsave('fig.pdf', width=89, units='mm', device=cairo_pdf)

The Load-Bearing Idea: A Figure Is Four Layers

A publication figure is not one object; it is four superimposed layers, and export means giving each the representation it needs:

  1. Vector structure - axes, ticks, spines, gridlines, fit lines, error bars, annotations. Resolution-independent; must stay vector so the typesetter can scale it to 89 mm without pixelation.
  2. Raster data layer - the dense part: a scatter with 10^5-10^7 points, a heatmap, a micrograph. Drawing a million points as a million vector circles makes a hundreds-of-MB PDF that crashes Illustrator. This layer wants to be pixels.
  3. Type - every glyph. Editors need it to stay selectable text, not flattened paths or pixels baked into the raster.
  4. Color encoding - the data-to-color mapping. A scientific choice (perceptual uniformity, color-vision-deficiency safety, grayscale survival) that also interacts with the RGB->CMYK conversion the journal performs without asking.

The expert move is the hybrid figure: rasterize only layer 2, keep layers 1 and 3 vector, embed editable fonts, and pick a colormap that survives CMYK and grayscale. Everything below serves that.

A reproducibility framing: a figure is a pure function of (data, code, theme, font availability). If any of those is unpinned, the figure is not reproducible.

The Hybrid Figure (rasterize only the dense layer)

The single most important export skill for single-cell (UMAP/tSNE) and GWAS (Manhattan) figures. A fully-vector million-point scatter is unopenable and gets rejected by the typesetter's RIP; rasterizing just the data layer keeps file size sane while axes and text stay crisp at any zoom.

python
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(3.5, 3.0))     # physical inches = the real size control
ax.scatter(x, y, s=2, rasterized=True, zorder=0)   # 10^6 points -> embedded raster
ax.plot(xfit, yfit, color='black', zorder=2)        # stays vector
ax.set_xlabel('UMAP1')                              # stays vector text
fig.savefig('fig.pdf', dpi=600)                     # dpi governs ONLY the rasterized layer

In a vector container, savefig(dpi=...) sets the resolution of the embedded raster patch and does nothing to the vector parts. ax.set_rasterization_zorder(0) rasterizes every artist below a z-order cleanly. In R use ggrastr::rasterise(geom_point(size=0.3), dpi=600) (wraps any geom since 0.2.0), keeping theme_* vector.

Fonts: Keep the Text Editable

The most common typesetter complaint about matplotlib PDFs is un-editable text. matplotlib's default pdf.fonttype is 3 (Type 3), which embeds glyphs as PostScript procedures that import into Illustrator as ungrouped paths and cannot be re-selected as text. Set 42 (TrueType, wrapped) so text stays selectable and editable. Fix it once, globally:

python
import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42      # TrueType, editable text in PDF
mpl.rcParams['ps.fonttype']  = 42      # same for EPS/PS
mpl.rcParams['svg.fonttype'] = 'none'  # SVG: emit real <text>, reference the font by name

Type 42/TrueType/Type 3 fonts are subsetted (only used glyphs embedded); Type 1 are not. With large glyph sets (CJK) Type 42 can bloat the PDF - a real tradeoff. svg.fonttype='none' keeps words editable in Inkscape/Illustrator but the viewer must have the font (else it substitutes); the default 'path' outlines every glyph (portable, uneditable). Default to editable text; only outline if a specific production desk asks.

In R, the base pdf() device has weak font handling and inconsistent cross-OS rendering; use cairo_pdf (embeds fonts and supports alpha). For raster, ragg::agg_png()/agg_tiff() render anti-aliased text better than cairo/base devices. Rule of thumb: showtext for vector devices, ragg for raster.

Color Space: The Author Works in RGB, Print Is CMYK

Screens are additive RGB; offset print is subtractive CMYK. matplotlib and ggplot2 author in RGB only - there is no honest path to a true CMYK figure from them. The journal's pipeline converts RGB->CMYK, and because the CMYK gamut is smaller than sRGB, saturated out-of-gamut colors shift: pure RGB blue (#0000FF) and vivid green/cyan come back muddier and darker on paper. The neon scatter that pops on screen can print gray.

What to do: pull colors slightly off full saturation (they survive conversion better); soft-proof downstream in Illustrator/Photoshop with a CMYK profile if it matters; and submit RGB - Nature, Science, Cell, and PLOS all explicitly want RGB, not CMYK, because their pipeline does the conversion and online is RGB anyway. If a legacy desk demands CMYK, convert downstream with an explicit profile and re-check that nothing shifted; do not fake it with a colorspace flag.

Transparency: EPS Has No Alpha

EPS/PostScript do not support alpha - matplotlib's PS backend renders partially-transparent artists as opaque, so an alpha-blended overplotted scatter loses its density information on EPS export. PDF and SVG support alpha natively; prefer them when transparency carries meaning. If a journal forces EPS and transparency is needed, rasterize that layer (rasterized=True) or re-encode density as hexbin/2D-KDE. savefig(transparent=True) makes the background transparent for slide overlays, not for print.

DPI Is Meaningless for Vector

A vector PDF has no inherent resolution; it renders sharp at any zoom. DPI governs only raster formats (PNG/TIFF) and the rasterized data layer inside a vector file. The real size control is the physical figure size in inches/mm - design at the journal's exact column width from the start; rescaling a 300-dpi raster to 200% halves its effective resolution. Font sizes are in points (1 pt = 1/72 in) independent of DPI.

The DPI tiers follow the IMAGE CLASS, because print reproduces tone via halftone dots (follow the target journal's own numbers; these are the common production convention):

Image classDPIWhy
Halftone / grayscale / color photo300continuous tone matches typical screen rulings
Combination (halftone + line/text)500-600thin lines and small type must not jag against toned background
Line art (pure black/white)1000-1200hard edges alias badly at low DPI - or keep it vector and DPI is moot

savefig.dpi is the file resolution; figure.dpi is the on-screen resolution. Independently of DPI, very thin strokes (below ~0.25 pt / 0.1 mm) can drop out or thicken unpredictably at the printer's RIP even in a vector file - keep hairlines at or above the journal's minimum line weight.

Format Decision

FormatTypeUse forAvoid for
PDFvector(+raster)default for most journals; hybrid figures; alpha works-
EPSvector(+raster)legacy journal requirementanything with alpha (flattened opaque)
SVGvectorweb; handoff to Illustrator/Inkscape for editingfinal print at some desks (support varies)
TIFF (LZW)raster, losslessprint production when a journal demands raster (Cell, PLOS)large vector-friendly line figures
PNGraster, losslessonline, previews, slides, README figuresprint where vector is accepted
JPEGraster, LOSSYphotographs onlyany figure with text/lines/edges (DCT ringing)

Never JPEG for line/text figures - block compression rings along high-contrast edges (gray halos on text, fringing on thin lines). For TIFF, use LZW (near-universal reader support) for 8-bit figures; use ZIP for 16-bit (LZW can inflate 16-bit files).

Show full SKILL.md (680 more words)Show less

Colormaps Are a Scientific Choice, Not Taste

Perceptually-uniform maps (viridis, cividis, magma, inferno, plasma) are constructed in CAM02-UCS so equal data steps map to equal perceived steps with monotonically increasing lightness - which is exactly why they survive grayscale and avoid inventing false gradients. cividis is additionally optimized so viewers with and without red-green color-vision deficiency see nearly the same image. By contrast, jet/rainbow has non-monotonic luminance that invents bright/dark bands the data does not have (false edges at yellow/cyan) and collapses to mush in grayscale - a correctness failure, not an aesthetic one.

  • Sequential map for ordered data; diverging map (with a meaningful midpoint) for signed data; a categorical CVD-safe palette for discrete classes - never a continuous rainbow for categories.
  • Use the Okabe-Ito 8-color Color Universal Design palette for categories. Red-green CVD affects up to ~8% of males (population-dependent), so add redundant encoding (shape + color, linetype + color, direct labels) so color is never the sole channel.
  • Run the grayscale-photocopy test: convert to grayscale and confirm the figure still reads.

Reproducible Export

  • Byte-stable PDFs: matplotlib stamps a CreationDate into every PDF, so two identical runs differ byte-for-byte (noisy git diffs). Pass metadata={'CreationDate': None} to savefig, or set the SOURCE_DATE_EPOCH env var, for deterministic output.
  • bbox_inches='tight' breaks exact widths. It recomputes the bounding box from drawn content, so output dimensions depend on tick-label lengths and the renderer's font metrics - the same script on two machines (different fonts) yields different-sized PDFs, and it can clip annotations. For camera-ready figures at an exact 89 mm, design to size with constrained_layout=True and save without bbox_inches='tight'; if cropping is unavoidable, pair it with explicit pad_inches.
  • Font-availability nondeterminism: Helvetica on a Mac vs DejaVu Sans on CI gives different glyph widths, line breaks, and (with tight bbox) different sizes. Pin the font or accept the default and don't crop-to-content.
  • Headless rendering: call matplotlib.use('Agg') before importing pyplot on a cluster/CI box, or just use the file backends, so no display is required.

Journal Specs (verify against the target journal at submission)

Specs change and vary by sub-journal; re-pull the target's author-guideline page. Snapshot, June 2026:

JournalWidthsMin DPIFormatsColor
Nature89 mm single / 183 mm double; <=170 mm tall300 photo, 600+ linevector AI/EPS/PDF preferred; TIFF rasterRGB
Science5.7 / 12.1 / 18.4 cm>=300 at final size; vector preferredIllustrator-openable vector; no PowerPointRGB (not CMYK)
Cell Press85 / 114 / 174 mm300 color, 500 grayscale, 1000 lineTIFF (LZW) or vectorRGB
PLOS789-2250 px wide; <=2625 px tall300-600 (do not exceed 600)TIFF or EPS only; flattened, LZW, no alpha/layersRGB or grayscale, 8-bit; no CMYK

PLOS is strictest (8-bit RGB/grayscale TIFF, no alpha channel, no layers). Cell's grayscale (500) and line (1000) tiers exceed the generic numbers - follow the journal's own.

Common Errors

SymptomCauseFix
Typesetter: "supply editable text"default Type 3 fontspdf.fonttype=42, ps.fonttype=42, svg.fonttype='none'
PDF won't open / hundreds of MBfully-vector dense scatterrasterize the data layer (rasterized=True / ggrastr::rasterise)
Colors muddy in printsaturated RGB out of CMYK gamutdesaturate slightly; soft-proof; submit RGB
Transparency gone on EPSEPS has no alpharasterize that layer, or use PDF/SVG, or hexbin
Figure not exactly 89 mmbbox_inches='tight' non-deterministic sizedesign to size + constrained_layout, drop tight bbox
Heatmap shows false bandsjet/rainbow non-monotonic luminanceviridis/cividis (sequential), diverging map for signed data
Noisy git diff on identical figurePDF CreationDate timestampmetadata={'CreationDate': None} or SOURCE_DATE_EPOCH
  • data-visualization/ggplot2-fundamentals - Building the plots in R
  • data-visualization/matplotlib-fundamentals - Building the plots in Python
  • data-visualization/multipanel-figures - Composing multi-panel layouts
  • data-visualization/color-palettes - Choosing perceptual and CVD-safe palettes
  • reporting/publication-tables - The table counterpart to figure export

References

  • Borland D, Taylor RM 2nd. Rainbow Color Map (Still) Considered Harmful. IEEE Comput Graph Appl. 2007;27(2):14-17. doi:10.1109/MCG.2007.323435
  • Nuñez JR, Anderton CR, Renslow RS. Optimizing colormaps with consideration for color vision deficiency to enable accurate interpretation of scientific data. PLoS ONE. 2018;13(7):e0199239. doi:10.1371/journal.pone.0199239
  • Okabe M, Ito K. Color Universal Design (CUD): how to make figures and presentations friendly to colorblind people. jfly.uni-koeln.de/color/ (8-color CVD-safe palette)
  • van der Walt S, Smith N. A Better Default Colormap for Matplotlib. SciPy 2015 (conference talk; viridis/magma/inferno/plasma constructed in CAM02-UCS). bids.github.io/colormap

© GPTomics, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in reporting/figure-export of GPTomics/bioSkills.

  • SKILL.md
  • examples/publication_figures.py
  • usage-guide.md

Open the folder on GitHubat commit d91ed3d

Used in 1 other repository

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 GPTomics/bioSkills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Bio Reporting Figure Export 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.

Bio Reporting Figure Export compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bio Reporting Figure Export this skillGPTomics/bioSkills1.2k1 repos~3.6kAutomated safety check: PassMIT
Scientific Figure MakingChenLiu-1996/figures4papers8.3k—~557Automated safety check: PassCustom licence
Biopython Phyloaipoch/medical-research-skills2k—~1.8kAutomated safety check: PassMIT
Bio Copy Number Cnv VisualizationFreedomIntelligence/OpenClaw-Medical-Skills3.1k—~2.6kAutomated safety check: PassNone
Academic PlottingOrchestra-Research/AI-Research-SKILLs13k2 repos~5.2kAutomated safety check: PassMIT
Bio Metagenomics VisualizationFreedomIntelligence/OpenClaw-Medical-Skills3.1k1 repos~1.8kAutomated safety check: PassNone

Similar skills

  • Scientific Figure Making

    ChenLiu-1996/figures4papers

    Covers publication-ready matplotlib figures for academic papers, slides, and reports—bars, trends, scatter, heatmaps, and multi-panel layouts—with this…

    8.3k GitHub stars~557 tokensUpdated 3 days ago
    Data & AnalyticsAuto-check passed
  • Biopython Phylo

    aipoch/medical-research-skills

    Use Bio.Phylo to read/write phylogenetic trees and perform visualization and statistics; use when tree parsing/conversion, pruning/rerooting, distance calculation, or plotting is required.

    2k GitHub stars~1.8k tokensUpdated 22 days ago
    Data & AnalyticsAuto-check passed
  • Bio Copy Number Cnv Visualization

    FreedomIntelligence/OpenClaw-Medical-Skills

    Visualize copy number profiles, segments, and compare across samples.

    3.1k GitHub stars~2.6k tokensUpdated 2 mo ago
    Data & AnalyticsAuto-check passed
  • Academic Plotting

    Orchestra-Research/AI-Research-SKILLs

    Generates publication-quality figures for ML papers from research context.

    13k GitHub starsUsed in 2 repos~5.2k tokens
    Data & AnalyticsAuto-check passed
  • Bio Metagenomics Visualization

    FreedomIntelligence/OpenClaw-Medical-Skills

    Visualize metagenomic profiles using R (phyloseq, microbiome) and Python (matplotlib, seaborn).

    3.1k GitHub starsUsed in 1 repo~1.8k tokens
    Data & AnalyticsAuto-check passed
  • Bio Hi C Analysis Hic Visualization

    FreedomIntelligence/OpenClaw-Medical-Skills

    Visualize Hi-C contact matrices, TADs, loops, and genomic features using matplotlib, cooltools, and HiCExplorer.

    3.1k GitHub starsUsed in 1 repo~2.2k tokens
    Research & ScienceAuto-check passed

More from GPTomics/bioSkills

All 559 skills in this repo
  • Bio Alignment Io

    GPTomics/bioSkills

    Read, write, and convert multiple sequence alignment files using Biopython Bio.AlignIO.

    1.2k GitHub starsUsed in 3 repos~4.9k tokens
    Auto-check passed
  • bioSkills Installer

    GPTomics/bioSkills

    Installs the bioSkills collection of 425 bioinformatics skills in one step, or only chosen categories, so sequencing, RNA-seq, single-cell and variant tasks get specialized help.

    1.2k GitHub starsUsed in 1 repo~789 tokens
    Auto-check passed
  • Bio Write Sequences

    GPTomics/bioSkills

    Write biological sequences to files (FASTA, FASTQ, GenBank, EMBL) using Biopython Bio.SeqIO.

    1.2k GitHub starsUsed in 3 repos~2.1k tokens
    Auto-check passed
  • Amplicon Primer Clipping

    GPTomics/bioSkills

    Soft- or hard-clips PCR primer footprints from aligned amplicon BAMs so primer bases stop masquerading as confirmed reference sequence.

    1.2k GitHub starsUsed in 2 repos~2.2k tokens
    Auto-check passed
  • Filters BAM alignments by FLAG bits, mapping quality and regions with samtools view or pysam, with recipes for common keep and drop cases.

    1.2k GitHub starsUsed in 2 repos~3.6k tokens
    Auto-check passed
  • Bio Alignment Indexing

    GPTomics/bioSkills

    Create and use BAI/CSI indices for BAM/CRAM files using samtools and pysam.

    1.2k GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check passed

Works with

Questions about Bio Reporting Figure Export

What does Bio Reporting Figure Export do?

Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2. Bio Reporting Figure Export is an agent skill from GPTomics/bioSkills. Exports publication-ready figures with the correct vector/raster split, embedded editable fonts, color-space-robust palettes, and journal-correct sizing and resolution in matplotlib and ggplot2.

When should I use Bio Reporting Figure Export?

Bio Reporting Figure Export fits situations like: preparing figures for journal submission; exporting a dense single-cell; GWAS plot without producing an unopenable vector file; fixing fonts and colors that break in print.

How do I install Bio Reporting Figure Export in Claude Code?

Run `npx skills add GPTomics/bioSkills --skill bio-reporting-figure-export -a claude-code`. Or copy the skill folder (reporting/figure-export in GPTomics/bioSkills) into .claude/skills/bio-reporting-figure-export in your project. Claude Code loads it when a task matches its description.

How do I install Bio Reporting Figure Export in Codex?

Run `npx skills add GPTomics/bioSkills --skill bio-reporting-figure-export -a codex`. Or copy the skill folder (reporting/figure-export in GPTomics/bioSkills) into .agents/skills/bio-reporting-figure-export in your project. Codex loads it when a task matches its description.

Can I use Bio Reporting Figure Export in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GPTomics/bioSkills --skill bio-reporting-figure-export -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bio-reporting-figure-export, .gemini/skills/bio-reporting-figure-export, .github/skills/bio-reporting-figure-export and .opencode/skills/bio-reporting-figure-export in your project.

What does Bio Reporting Figure Export need to run?

Going by SKILL.md and its folder, Bio Reporting Figure Export needs Python for the scripts in its folder and the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Bio Reporting Figure Export access the network?

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.

Is Bio Reporting Figure Export safe to install?

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. Review the folder before installing.

What licence does Bio Reporting Figure Export use?

Bio Reporting Figure Export is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bio Reporting Figure Export use?

About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Bio Reporting Figure Export?

Skills that share tags, products or a category with Bio Reporting Figure Export: Scientific Figure Making (ChenLiu-1996/figures4papers, 8.3k stars), Biopython Phylo (aipoch/medical-research-skills, 2k stars), Bio Copy Number Cnv Visualization (FreedomIntelligence/OpenClaw-Medical-Skills, 3.1k stars) and Academic Plotting (Orchestra-Research/AI-Research-SKILLs, 13k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bio Reporting Figure Export?

GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,217 GitHub stars. The repository holds 559 skills in this directory. The repository was last updated on August 15, 2026.

Source: GPTomics/bioSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.