Agent skill

Bio Single Cell Cell Annotation

by GPTomics in GPTomics/bioSkills

Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference.

MITAuto-check passedResearch & Science

Install Bio Single Cell Cell Annotation

skills CLI
$ npx skills add GPTomics/bioSkills --skill bio-single-cell-cell-annotation -a claude-code

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

GitHub CLI
$ gh skill install GPTomics/bioSkills bio-single-cell-cell-annotation --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/single-cell/cell-annotation .claude/skills/bio-single-cell-cell-annotation && 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-single-cell-cell-annotation
GitHub stars
1.2k
Used in
1 other repo
Token cost
~3.1k tokens
SKILL.md length
1,219 words
Files
4
Skills in repo
559
Repo updated
First seen
Licence
MIT

At a glance

Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference.

  • Annotating cell types from a reference atlas
  • SKILL.md covers Version Compatibility, Governing principle, Choosing an annotation method and Normalization requirements…, plus 9 more sections
  • Runs Python and R scripts from its folder; calls pip
  • Pretrained model

What it does

Bio Single Cell Cell Annotation is an agent skill from GPTomics/bioSkills. Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference. Use when annotating cell types from a reference atlas or pretrained model, transferring labels onto a query, assessing prediction confidence and rejection, or triaging whether an unexpected cluster is a novel type versus a doublet, low-quality, or batch artifact.

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

It sits in Research & Science, covering Bioinformatics. It works with Python. 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

  • Annotating cell types from a reference atlas
  • Pretrained model
  • Transferring labels onto a query
  • Assessing prediction confidence and rejection

Example prompts

  • “/bio-single-cell-cell-annotation”

Requirements

  • Python 3

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 and R), 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 Single Cell Cell Annotation loads about 3.1k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 1,219 words of instructions outside code blocks.

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

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,219 words, ~3,069 tokens.

Download SKILL.mdSave it as .claude/skills/bio-single-cell-cell-annotation/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
bio-single-cell-cell-annotation
description
Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference. Use when annotating cell types from a reference atlas or pretrained model, transferring labels onto a query, assessing prediction confidence and rejection, or triaging whether an unexpected cluster is a novel type versus a doublet, low-quality, or batch artifact.
tool_type
mixed
primary_tool
CellTypist

Version Compatibility

Reference examples tested with: scanpy 1.10+, Seurat 5.0+, celltypist 1.6+

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

  • Python: pip show <package> then help(module.function) to check signatures
  • R: packageVersion('<pkg>') then ?function_name to verify parameters

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

Automated Reference-Based Cell Annotation

"Annotate my cells from a reference" -> Transfer labels from an annotated reference or pretrained model onto query cells, with a calibrated confidence/rejection step.

  • Python: celltypist.annotate() (pretrained LR) or scvi-tools scANVI label transfer
  • R: SingleR() (correlation to a reference) or RunAzimuth() (anchor-based mapping)

Governing principle

An annotation is a HYPOTHESIS, not a measurement. Reference-based annotators are closed-world: every query cell is forced toward the nearest label the reference contains, so a genuinely novel state gets the nearest wrong label - often with high apparent confidence. Reproducible is not the same as correct; an automated label inherits the reference's annotation errors, granularity, and tissue/donor/disease scope, and propagates them at scale wearing the authority of "automated." Markers are context-dependent. A marker gene is a conditional statement: "marker X = type Y" means "in this tissue, platform, and processing, X enriches in Y relative to these other cells." A marker in blood may be expressed broadly in tumor; "canonical confirmation" using the same markers that defined the type is circular (recovering the prior, not new evidence). Treat reference labels and marker catalogs (PanglaoDB, CellMarker) as priors to be triangulated, never ground truth. Before naming a new cell type, triage the four-way confusion in decreasing frequency: (1) doublets - two cell types summed, co-expressing mutually exclusive lineage markers; (2) low-quality/dying - high mito %, low gene count, ambient-dominated; (3) batch/technical - the cluster maps to one sample/lane/chemistry; (4) ambient-RNA contamination (SoupX/CellBender). Only after excluding all four is "novel cell type" admissible. The field is littered with "novel populations" that were doublets or stress artifacts.

This skill covers automated reference transfer. Manual marker discovery and hand-labeling live in single-cell/markers-annotation; the two are complementary - automate a first pass, confirm with markers, reserve expert curation for the final label and ambiguous populations.

Choosing an annotation method

MethodModelReferenceWorldUse whenFails when
CellTypistLogistic regression (pretrained)Pretrained immune/cross-tissue modelsClosed (+probability)Immune/PBMC, fast first pass, no R neededInput not log1p CP10K-normalized; query far from training distribution
SingleRSpearman correlation to referencecelldex bulk or single-cell refsClosed (+pruning)Bulk reference available, R workflow, per-cell scoringStrong platform/chemistry shift vs reference; forces nearest label
AzimuthSupervised PCA + anchor mappingCurated Seurat atlases (PBMC, lung...)Closed (+mapping.score)A curated Azimuth reference matches the tissueNo matching reference; locked to provided atlases
scANVI / scArchesSemi-supervised VAEAnnotated atlas + raw countsClosed (+latent uncertainty)Strong query batch vs reference; mapping onto a large atlasTraining cost/hyperparameters; raw counts required
scmapNearest reference centroid/cellSingle-cell referenceOpen (explicit unassigned)An explicit rejection category is neededCoarser resolution; threshold tuning
LLM (GPTCelltype)Prompted from top markersNone (uses marker list)Open-ishFast hypothesis from a marker tableHallucination, non-reproducible, never sees expression

No method escapes the closed-world limit except by an explicit reject/unassigned bin. When methods compete, verify current best practice and reference availability against installed docs before committing.

Normalization requirements (silent-failure risk)

ToolRequired inputWrong input symptom
CellTypistlog1p-normalized to 10,000 counts/cell (CP10K)Confident but degraded/wrong labels, no error
SingleRlog-normalized expression (logcounts)Distorted correlations
scANVI/scArchesRAW counts in a layerModel trains on the wrong likelihood
Azimuthraw counts (SCTransform applied internally)Mapping QC degrades

CellTypist (Python)

Goal: Transfer labels from a pretrained model with cluster-level smoothing and a probability for rejection.

Approach: Normalize the query to CP10K log1p (the model's expected input), run annotate with majority_voting to reassign each over-clustered subgroup to its dominant label, then keep a per-cell confidence for filtering.

python
import scanpy as sc
import celltypist
from celltypist import models

adata = sc.read_h5ad('clustered.h5ad')
adata.X = adata.layers['counts'].copy()
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)

models.download_models(model='Immune_All_Low.pkl')
predictions = celltypist.annotate(adata, model='Immune_All_Low.pkl', majority_voting=True)
adata = predictions.to_adata()

adata.obs['cell_type'] = adata.obs['majority_voting']
adata.obs['uncertain'] = adata.obs['conf_score'] < 0.5

SingleR (R)

Goal: Assign each cell by correlation to a reference and prune low-confidence calls.

Approach: Score each cell's Spearman correlation to reference profiles (per-label score is the 0.8 quantile), assign the max, fine-tune, then prune cells whose delta (assigned-label score minus median) falls >3 MADs below the delta distribution.

r
library(SingleR)
library(celldex)
library(SingleCellExperiment)

sce <- as.SingleCellExperiment(seurat_obj)
ref <- celldex::HumanPrimaryCellAtlasData()

pred <- SingleR(test = sce, ref = ref, labels = ref$label.main, de.method = 'classic', fine.tune = TRUE)
seurat_obj$SingleR <- pred$labels
seurat_obj$SingleR_pruned <- pred$pruned.labels

plotScoreHeatmap(pred)
plotDeltaDistribution(pred)

Use de.method='classic' for bulk references and de.method='wilcox' for single-cell references. Cells pruned to NA are the rejection set; inspect the delta distribution rather than trusting a hard score cutoff.

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

Azimuth (R/Seurat)

Goal: Map a query onto a curated reference atlas and transfer hierarchical labels with a mapping score.

Approach: Project query cells onto the supervised reference embedding via anchors, transfer l1/l2/l3 labels, and gate by mapping.score and prediction.score.

r
library(Seurat)
library(Azimuth)

seurat_obj <- RunAzimuth(seurat_obj, reference = 'pbmcref')
seurat_obj$azimuth <- seurat_obj$predicted.celltype.l2
seurat_obj$azimuth_low_conf <- seurat_obj$predicted.celltype.l2.score < 0.7

Rejection thresholds (calibrate, do not port)

ToolRejection signalDefault-ish
SingleRdelta + pruneScores(nmads=3)3 MADs below delta distribution
CellTypistconf_score / p_thres0.5
scmapmax similarity< 0.7 unassigned
Azimuth/scANVImapping.score / latent uncertaintyinspect per dataset

A hard universal probability cutoff is not principled across models - inspect the score distribution and calibrate per dataset.

Triage an unexpected cluster (before claiming novelty)

Goal: Decide whether a poorly-mapped cluster is a novel type or an artifact.

Approach: A whole cluster scoring low (vs scattered low-confidence cells) suggests "not in reference"; rule out doublets, low-quality, batch, and ambient before annotating de novo.

python
import numpy as np

cluster_conf = adata.obs.groupby('leiden')['conf_score'].median()
suspect = cluster_conf[cluster_conf < 0.5].index.tolist()

qc = adata.obs.groupby('leiden')[['pct_counts_mt', 'n_genes_by_counts', 'predicted_doublet']].mean()
print(qc.loc[suspect])
batch_purity = adata.obs.groupby('leiden')['sample'].agg(lambda s: s.value_counts(normalize=True).max())
print(batch_purity.loc[suspect])

High mito or low gene count flags low-quality; doublet rate or co-expressed exclusive lineages flags doublets; near-1 batch purity flags a technical artifact. Only a low-confidence, QC-clean, batch-mixed cluster with coherent de-novo markers is a novel-type candidate.

Validate predictions with markers

Goal: Confirm transferred labels against canonical markers (triangulation, not proof).

Approach: Dot-plot lineage markers grouped by predicted label and check the expected on/off pattern; disagreement between automated calls and markers flags cells to re-examine.

r
canonical <- c('CD3D', 'CD8A', 'MS4A1', 'CD14', 'FCGR3A', 'NKG7', 'FCER1A')
DotPlot(seurat_obj, features = canonical, group.by = 'SingleR') + Seurat::RotatedAxis()

Common Errors

SymptomCauseFix
Confident labels that contradict canonical markersClosed-world: novel/absent state forced to nearest labelAdd a reject bin; annotate de novo; do not trust labels outside the reference's domain
CellTypist labels degrade silentlyQuery not CP10K log1p normalizedNormalize to target_sum=1e4 then log1p before annotate
CellTypist returns confident but nonsensical labelsGene-ID space mismatch (query var_names are Ensembl IDs vs symbol-based model); few genes matchedSet var_names to gene symbols; check the matched-gene fraction reported by annotate before trusting labels
Reference labels look wrong everywherePlatform/chemistry shift vs reference (domain shift)Use a batch-modeling mapper (scANVI/scArches) or a matched reference
"Novel cell type" turns out artifactualDoublet / low-quality / batch / ambient not excludedRun the four-way triage before claiming novelty
Fine labels (CD4 Tcm vs Tem) unstableGranularity finer than data or reference supportsAnnotate hierarchically; report coarse labels confidently, fine as hypotheses
Two tools disagree on the same cellsDifferent references/granularityReport consensus + flag disagreements as ambiguous; curate manually
  • markers-annotation - Manual marker discovery and hand-labeling that complements automated transfer
  • clustering - Cluster cells before annotating
  • preprocessing - Normalize correctly for each annotator's expected input
  • batch-integration - Reference mapping vs de-novo integration; closed-world caveats
  • differential-abundance - Test whether annotated cell-type proportions changed between conditions
  • pathway-analysis/go-enrichment - Functionally characterize a de-novo / novel population

References

  • Aran et al. 2019, Nat Immunol 20:163-172 - SingleR correlation-based reference annotation with delta-based pruning.
  • Dominguez Conde et al. 2022, Science 376:eabl5197 - CellTypist logistic-regression cross-tissue immune annotation.
  • Hao et al. 2021, Cell 184(13):3573-3587 - Azimuth / weighted-NN reference mapping and label transfer.
  • Xu et al. 2021, Mol Syst Biol 17(1):e9620 - scANVI semi-supervised annotation with calibrated uncertainty.
  • Kiselev, Yiu & Hemberg 2018, Nat Methods 15:359-362 - scmap projection with an explicit unassigned category.
  • Hou & Ji 2024, Nat Methods 21(8):1462-1465 - GPT-4 / GPTCelltype marker-based annotation and its hallucination/reproducibility caveats.

© 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 3 other files in single-cell/cell-annotation of GPTomics/bioSkills.

  • SKILL.md
  • examples/celltypist_annotation.py
  • examples/singler_annotation.R
  • 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 Single Cell Cell Annotation 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 Single Cell Cell Annotation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bio Single Cell Cell Annotation this skillGPTomics/bioSkills1.2k1 repos~3.1kAutomated safety check: PassMIT
Alphagenome Single Variant Analysisgoogle-deepmind/science-skills3.2k2 repos~3kAutomated safety check: NotesApache-2.0
13C Metabolic Flux AnalysisK-Dense-AI/scientific-agent-skills48k1 repos~3.2kAutomated safety check: PassMIT
Singlecell Qcxuzhougeng/wisp-science1k—~1.6kAutomated safety check: PassAGPL-3.0
Trackplotygidtu/trackplot109—~1.9kAutomated safety check: PassBSD-3-Clause
UniProt Database Accessdavila7/claude-code-templates33k14 repos~1.7kAutomated safety check: PassMIT

Similar skills

  • Alphagenome Single Variant Analysis

    google-deepmind/science-skills

    Analyzes genetic variant effects on gene expression (RNA-seq), chromatin accessibility (DNASE), histone marks (ChIP), and transcription factors using the AlphaGenome API.

    3.2k GitHub starsUsed in 2 repos~3k tokens
    Research & ScienceAuto-check: notes
  • 13C Metabolic Flux Analysis

    K-Dense-AI/scientific-agent-skills

    Estimates reaction fluxes inside cells from steady-state carbon-13 labeling data with a bundled mfapy-based solver, and reports which fluxes the data pin down.

    48k GitHub starsUsed in 1 repo~3.2k tokens
    Research & ScienceAuto-check passed
  • Singlecell Qc

    xuzhougeng/wisp-science

    A skill your agent uses when designing, reviewing, or implementing single-cell RNA-seq QC in Python or R with a human-in-the-loop, data-driven approach.

    1k GitHub stars~1.6k tokensUpdated today
    Research & ScienceAuto-check passed
  • Trackplot

    ygidtu/trackplot

    Generate sashimi-style genome visualization plots (coverage, line, heatmap, IGV read-by-read, HiC, circRNA, motif) from BAM/bigWig/depth/HiC inputs.

    109 GitHub stars~1.9k tokensUpdated 13 days ago
    Research & ScienceAuto-check passed
  • UniProt Database Access

    davila7/claude-code-templates

    Queries the UniProt REST API directly to search proteins, fetch FASTA sequences, map IDs between databases and read Swiss-Prot and TrEMBL entries.

    33k GitHub starsUsed in 14 repos~1.7k tokens
    Research & ScienceAuto-check passed
  • End-to-end 10x Visium spatial transcriptomics analysis workflow with staged execution and human review gates.

    101 GitHub stars~1.4k tokensUpdated 1 mo ago
    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 Single Cell Cell Annotation

What does Bio Single Cell Cell Annotation do?

Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference. Bio Single Cell Cell Annotation is an agent skill from GPTomics/bioSkills. Automated reference-based cell type annotation for single-cell RNA-seq using CellTypist, SingleR, Azimuth, scANVI, and scmap to transfer labels from a reference.

When should I use Bio Single Cell Cell Annotation?

Bio Single Cell Cell Annotation fits situations like: annotating cell types from a reference atlas; pretrained model; transferring labels onto a query; assessing prediction confidence and rejection.

How do I install Bio Single Cell Cell Annotation in Claude Code?

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

How do I install Bio Single Cell Cell Annotation in Codex?

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

Can I use Bio Single Cell Cell Annotation 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-single-cell-cell-annotation -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-single-cell-cell-annotation, .gemini/skills/bio-single-cell-cell-annotation, .github/skills/bio-single-cell-cell-annotation and .opencode/skills/bio-single-cell-cell-annotation in your project.

What does Bio Single Cell Cell Annotation need to run?

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

Does Bio Single Cell Cell Annotation 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 Single Cell Cell Annotation 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 Single Cell Cell Annotation use?

Bio Single Cell Cell Annotation 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 Single Cell Cell Annotation use?

About 3.1k tokens (SKILL.md is roughly 12k 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 Single Cell Cell Annotation?

Skills that share tags, products or a category with Bio Single Cell Cell Annotation: Alphagenome Single Variant Analysis (google-deepmind/science-skills, 3.2k stars), 13C Metabolic Flux Analysis (K-Dense-AI/scientific-agent-skills, 48k stars), Singlecell Qc (xuzhougeng/wisp-science, 1k stars) and Trackplot (ygidtu/trackplot, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bio Single Cell Cell Annotation?

GPTomics (a GitHub organization) maintains it in GPTomics/bioSkills, which has 1,218 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.