Guide · Agent skill
How to use the Pathway Enrichment Analysis agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The pathway-enrichment skill gives an AI agent a structured workflow for asking which biological pathways or gene sets your genes overlap more than chance would predict. It is aimed at bioinformaticians, students learning enrichment methods, and researchers who need a defensible analysis of differentially expressed, screen-hit or cluster-marker gene lists. After this guide you will know how to install the skill, phrase a request that triggers it, and check what it needs and what it does on your machine.
Quick start
- 1Download and unzip the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into .claude/skills/ inside a project. Upload it under Settings, Capabilities, Skills if you use the Claude apps.
- 2Install the Python packages. Create a Python 3.12 or newer environment and run the uv pip install line from the setup section, adding network access if you plan to use online services.
- 3Prepare your gene list. Export differentially expressed, hit or marker genes as a text file of symbols, and export the tested background genes as a second file. Match the organism and identifier type of your library.
- 4Ask for the analysis in plain language. Describe the input and goal, for example asking which pathways are over-represented in your DE genes, and name the organism and background file.
- 5Check the method and background. Confirm the agent chose ORA for a thresholded list or preranked GSEA for a ranked table, and that the background matches the genes you could detect.
- 6Review significant terms. Look at adjusted p-values and redundancy, and check that the enriched terms make biological sense for your experiment before drawing conclusions.
What an agent skill is and what this one makes the agent do
An agent skill is a folder of instructions, reference notes and scripts that an AI agent loads when a task matches the skill's description. This skill is for pathway and gene-set enrichment analysis on gene lists or ranked gene data, followed by interpretation of the results.
Once installed, the agent can take genes that changed in an experiment and work out which pathways, GO terms or gene sets they overlap. It chooses between a thresholded-list method (over-representation analysis, ORA) and a ranked-list method (preranked GSEA) depending on your input, helps choose a background gene universe, applies multiple-testing correction, and warns about common interpretation mistakes. It can also run a bundled Python script that performs these analyses locally or through the public Enrichr service.
- ORA on a thresholded list such as DE genes, screen hits or cluster markers
- Preranked GSEA on a full ranked table with a per-gene score
- Single-sample scoring with ssGSEA or GSVA
- Gene-ID mapping, redundancy reduction, dotplots and publication-ready tables
How to install the pathway-enrichment skill
Option 1 is a personal install. Download the ZIP of the skill from this page and unzip it into ~/.claude/skills/ so that the pathway-enrichment folder, which contains SKILL.md, sits inside that directory.
Option 2 is a project install. Unzip the same folder into the .claude/skills/ directory of the project you are working in. Only that project will load the skill.
Option 3 is the Claude apps. Upload the skill under Settings, then Capabilities, then Skills.
- Personal: ~/.claude/skills/
- Project: .claude/skills/ inside your project folder
- Claude apps: Settings → Capabilities → Skills
Install the Python packages the scripts need
The skill expects Python 3.12 or newer with gseapy, numpy, pandas and matplotlib. The source also lists optional packages for online mapping and catalogs: gprofiler-official, mygene and lxml. The setup line below comes from the skill's own instructions.
Network access is needed for online Enrichr, g:Profiler and MSigDB queries. Local GMT workflows can run without it, using gp.enrich() with a local GMT file as described in the skill's gseapy reference.
uv pip install gseapy==1.3.1 gprofiler-official==1.0.0 mygene==3.2.2 lxmlHow to trigger the skill with natural requests
You do not need special syntax. The skill is selected when your request matches its description. Plain requests that name the kind of analysis work well, and including the input file and organism helps the agent choose a method.
The skill's description lists phrases such as pathway analysis, enrichment analysis, GO enrichment, KEGG or Reactome pathways, GSEA, over-representation, functional annotation, and what pathways are my genes in.
- Run GO enrichment on the DE genes in deg_symbols.txt for human, background is the tested genes in tested_symbols.txt
- Do preranked GSEA on my DESeq2 results in deseq2_results.csv using the Hallmark sets
- What pathways are my genes in? Here is my list of cluster marker genes
- Which Reactome pathways are over-represented in these CRISPR screen hits?
Worked example: over-representation on a hit list
For a discrete list, the skill runs gp.enrichr() against chosen libraries and keeps terms with an adjusted p-value below 0.05. Gene symbols must match the library organism and identifier type, and the skill asserts that your hit list is a subset of the tested background.
The example below is the skill's own pattern. It uses the in-memory output by default and sorts significant terms by adjusted p-value.
import gseapy as gp
genes = [g.strip() for g in open('deg_symbols.txt') if g.strip()]
tested = [g.strip() for g in open('tested_symbols.txt') if g.strip()]
assert set(genes) <= set(tested)
enr = gp.enrichr(gene_list=genes, gene_sets=['MSigDB_Hallmark_2020', 'GO_Biological_Process_2026', 'KEGG_2026', 'Reactome_Pathways_2024'], organism='human', background=tested, outdir=None)
res = enr.results
sig = res[res['Adjusted P-value'] < 0.05].sort_values('Adjusted P-value')Worked example: preranked GSEA from DESeq2 output
For a full ranked list, the skill ranks genes by the DESeq2 test statistic rather than log2FoldChange, because the source says the statistic is more stable for low-count genes. It requires a signed Wald statistic and checks that the ranking is finite and has unique gene names. Do not use adjusted p-values or keep only significant genes for GSEA.
The skill runs permutation-based preranked GSEA with a fixed seed so p-values are reproducible, and sorts results by FDR q-value.
- Gene set size limits apply after intersection with the ranked genes
- Permutation count and seed are set in the script and can be changed in your request
import gseapy as gp
import pandas as pd
res = pd.read_csv('deseq2_results.csv', index_col=0)
rnk = res['stat'].dropna().sort_values(ascending=False, kind='stable')
pre = gp.prerank(rnk=rnk, gene_sets=['MSigDB_Hallmark_2020', 'GO_Biological_Process_2026'], organism='human', method='permutation', min_size=15, max_size=500, permutation_num=1000, seed=123, threads=4, ascending=None, outdir=None)
out = pre.res2d.sort_values('FDR q-val')What the skill needs and what it does on your machine
The skill runs scripts, specifically scripts/run_enrichment.py, and uses the network for online Enrichr, g:Profiler and MSigDB queries. Local GMT workflows are documented as working offline. Review the script before running it on sensitive data, and be aware that online queries send your gene list to those services.
The outputs are exploratory research statistics. The skill does not validate them for clinical or diagnostic use, and it performs no identifier conversion or orthology mapping. Gene-set libraries must match your organism and identifier namespace, or results will be wrong.
- Runs scripts: yes, including scripts/run_enrichment.py
- Uses network: yes, for online Enrichr, g:Profiler and MSigDB; not needed for local GMT workflows
- Not for clinical or diagnostic decisions
- Not for non-gene data, or organisms whose identifiers do not match the library
Tips for better results
Choose the method first. A thresholded list goes to ORA. A ranked table with scores goes to GSEA. Never threshold a list and then feed it to GSEA, because that discards the ranking GSEA depends on.
Set the background deliberately. For ORA, the background should be the genes you could have detected, not the whole genome. Ask the agent to explain the background it used.
Map gene IDs before analysis and keep the original spelling of symbols. Check that your library's namespace and organism match your data, since the skill does not convert IDs for you.
Ask the agent to reduce redundant terms and to report the library names it used, so the table is reproducible.
What people use it for
- Finding which GO biological processes are over-represented among differentially expressed genes from a PyDESeq2 or Scanpy analysis
- Running preranked GSEA on a full DESeq2 results table to see whether Hallmark sets shift up or down
- Identifying pathways enriched among CRISPR-screen hits or proteomics hits
- Scoring gene-set activity per sample or per cell with ssGSEA or GSVA
- Preparing a publication-ready enrichment table or dotplot with the library names and settings recorded
Frequently asked questions
How do I install the pathway-enrichment agent skill?
Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use or into .claude/skills/ in a project folder. In the Claude apps, upload it under Settings, then Capabilities, then Skills.
Is the pathway-enrichment skill free to use?
The skill is published under the MIT licence, as listed on this page. The Python packages it uses, including gseapy, are installed separately in your own environment.
What do I need to run it?
You need Python 3.12 or newer with gseapy, numpy, pandas and matplotlib. Optional packages gprofiler-official, mygene and lxml support online mapping and catalogs, and network access is needed for online Enrichr, g:Profiler and MSigDB queries.
Can it run offline?
Yes for local GMT workflows, which use gp.enrich() with a local GMT file and do not need network access. Online Enrichr, g:Profiler and MSigDB queries do require network access.
Should I use ORA or GSEA for my gene list?
Use ORA for a discrete hit list such as DE genes above a threshold. Use preranked GSEA when you have a full ranked list of genes with a score, because GSEA does not need a cutoff.
How is this different from the gget skill or a simple Enrichr lookup?
For quick single-gene or simple Enrichr lookups, the skill itself points to the gget skill as the lighter option. Use pathway-enrichment for full, defensible enrichment workflows with background choice and multiple-testing correction.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
This skill suits bioinformaticians and students who want a careful, method-aware enrichment workflow from DE, screen or cluster gene lists, and researchers preparing publication tables. Pick something lighter if you only need a quick single-gene or simple Enrichr lookup, and do not use it for clinical decisions or for organisms and identifiers that do not match the chosen library.
Download the skill