Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/scverse/decoupler/datanpx skills add scverse/decoupler --skill datagit clone --depth 1 https://github.com/scverse/decouplerWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00220 | $0.01789 |
| Opus 5 | $0.00110 | $0.00894 |
| Sonnet 5 | $0.00044 | $0.00358 |
| Haiku 4.5 | $0.00022 | $0.00179 |
Grade A, and why
decoupler scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.
decoupler
decoupler estimates biological activities (transcription factors, pathways, gene
sets) from omics data. You give it a data matrix (observations × features, e.g.
cells × genes) and a prior-knowledge network (which features belong to which
biological program), and it returns an enrichment score per observation per
program — all methods sharing one unified interface. Part of scverse; works
directly on AnnData, pandas.DataFrame, or raw matrices.
This skill is a router. Each topic below has a detailed reference file with exact signatures and footguns. Read the relevant reference before writing code — do not rely on memory of the API, because results are written to different places depending on the input type and several methods have non-obvious defaults.
Two cross-cutting concepts (read these first if unsure)
-
The unified method call — every method is called the same way:
dc.mt.<method>(data, net, tmin=5, ...). Covers the accepted input types (AnnData / DataFrame /[matrix, obs, var]list), the shared arguments (tmin,raw,layer,empty,bsize), and the big footguns: input must be normalized (e.g. log1p), not raw counts, andnetmust be a long-formatsource/target/weighttable. -
Where the results go — the return type depends on the input type. AnnData → written in place into
.obsm["score_<method>"](and.obsm["padj_<method>"]if the method tests), returnsNone. DataFrame / list → returns an(es, pv)tuple (pvisNonefor non-testing methods). Read scores back out of an AnnData withdc.pp.get_obsm. This is the #1 thing agents get wrong.
Task → reference file
| If the task is… | Read |
|---|---|
| starting from scratch — set up an end-to-end run (load data → get a net → score → rank → plot) | references/getting-started.md |
how to call a method, what data/net formats are accepted, tmin/raw/layer semantics |
references/calling-convention.md |
where scores land and how to read them back (.obsm vs (es, pv) tuple, get_obsm) |
references/io-and-outputs.md |
| choosing and configuring a method — ulm/mlm/ora/gsea/gsva/aucell/viper/zscore/waggr/mdt/udt + their kwargs | references/methods.md |
getting prior knowledge — TF regulons (CollecTRI, DoRothEA), pathways (PROGENy), gene sets (MSigDB hallmarks), OmniPath, .gmt, organism translation |
references/priors.md |
| preprocessing — pseudobulk from single cell, expression/sample filtering, layers, spatial kNN | references/preprocessing.md |
| running many methods at once and combining them into a consensus | references/multi-method.md |
| ranking activity scores by group/ordering and plotting them (barplot, dotplot, volcano, network) or overlaying them on a UMAP / spatial H&E via scanpy | references/ranking-and-plotting.md |
| benchmarking methods/nets against a perturbation ground truth | references/benchmarking.md |
using a bundled example dataset (dc.ds.*) — and whether its .X is raw counts or already normalized |
references/datasets.md |
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/benchmarking.md 2.4 KB
- references/calling-convention.md 4.1 KB
- references/datasets.md 4.5 KB
- references/getting-started.md 2.8 KB
- references/io-and-outputs.md 3.4 KB
- references/methods.md 4.0 KB
- references/multi-method.md 2.6 KB
- references/preprocessing.md 2.9 KB
- references/priors.md 3.1 KB
- references/ranking-and-plotting.md 6.5 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 86 lines · 220 tokens per session scan A adcc7f625de2
decoupler is a skill published in the GitHub repository scverse/decoupler (292 stars, last pushed 6d ago), licensed BSD-3-Clause. It adds 220 tokens to every session and 1,789 once invoked, about $0.0011 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
cellxgene-census-query
Query CZ CELLxGENE Census (61M+ cells). Filter by cell type/tissue/disease, retrieve expression data, and integrate with scanpy/PyTorch for population-scale single-cell analysis. Use this skill when: (1) Querying single-cell expression data by cell type, tissue, or disease, (2) Exploring available single-cell datasets…
single-cell-scrna-seq-analysis-scanpy
Complete single-cell RNA-seq analysis workflow built on Scanpy and AnnData. Use this skill when: (1) Loading diverse single-cell data formats (10X, h5ad, CSV), (2) Performing quality control and filtering, (3) Normalization, dimensionality reduction, and clustering, (4) Marker gene identification and cell type…
Bulk RNAseq differential expression (DeSeq2)
Core DESeq2 workflow for RNA-seq differential expression analysis with count data.
Single-Cell RNA-seq Core Analysis (Seurat)
Complete workflow for single-cell RNA-seq analysis using Seurat v5. Process raw data through quality control, normalization, clustering, and cell type annotation with publication-ready visualizations.
Weighted Gene Co-expression Network Analysis (WGCNA)
Build weighted gene co-expression networks to identify modules of coordinately expressed genes and discover hub genes that may be key regulators. This workflow uses WGCNA (Weighted Gene Co-expression Network Analysis) to group genes into modules based on their expression patterns across samples, then correlates these…
Gene Regulatory Network Inference (pySCENIC)
Infer gene regulatory networks (GRNs) de novo from single-cell RNA-seq data using pySCENIC. This workflow discovers transcription factor (TF) regulons directly from expression patterns and calculates cell-level TF activity scores.