Scanpy Single-Cell Analysis
davila7/claude-code-templates
Walks through single-cell RNA-seq analysis with Scanpy: loading .h5ad and 10X data, QC, normalization, PCA and UMAP, Leiden clustering, marker genes and cell type annotation.
Load when ranking spatial cluster markers or comparing two spatial groups in spatial transcriptomics.
$ npx skills add TianGzlab/OmicsClaw --skill spatial-de -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TianGzlab/OmicsClaw spatial-de --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/TianGzlab/OmicsClaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/spatial/spatial-de .claude/skills/spatial-de && 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 "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .claude/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-deType 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 TianGzlab/OmicsClaw --skill spatial-de -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TianGzlab/OmicsClaw spatial-de --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TianGzlab/OmicsClaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/spatial/spatial-de .agents/skills/spatial-de && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .agents/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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 TianGzlab/OmicsClaw --skill spatial-de -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TianGzlab/OmicsClaw spatial-de --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TianGzlab/OmicsClaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/spatial/spatial-de .cursor/skills/spatial-de && 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 "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .cursor/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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/TianGzlab/OmicsClaw.git --path skills/spatial/spatial-de--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 TianGzlab/OmicsClaw --skill spatial-de -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TianGzlab/OmicsClaw spatial-de --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TianGzlab/OmicsClaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/spatial/spatial-de .gemini/skills/spatial-de && 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 "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .gemini/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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 TianGzlab/OmicsClaw spatial-deInstalls 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 TianGzlab/OmicsClaw --skill spatial-de -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TianGzlab/OmicsClaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/spatial/spatial-de .github/skills/spatial-de && 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 "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .github/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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 TianGzlab/OmicsClaw --skill spatial-de -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TianGzlab/OmicsClaw spatial-de --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TianGzlab/OmicsClaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/spatial/spatial-de .opencode/skills/spatial-de && 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 "spatial-de" agent skill from https://github.com/TianGzlab/OmicsClaw/tree/main/skills/spatial/spatial-de into .opencode/skills/spatial-de/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spatial-de", 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.
spatial-deLoad when ranking spatial cluster markers or comparing two spatial groups in spatial transcriptomics.
Spatial De is an agent skill from TianGzlab/OmicsClaw. Load when ranking spatial cluster markers or comparing two spatial groups in spatial transcriptomics. Skip when the data is single-cell (use sc-de); bulk (use bulkrna-de); spatially variable expression discovery (use spatial-genes).
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `r_visualization/README.md`, `references/methodology.md` and `references/output_contract.md`).
It sits in Research & Science, covering Bioinformatics. It works with AnnData and Scanpy. The repository describes itself as: Conversational & memory-enabled AI research partner for multi-omics analysis. CLI + Desktop App (installers in Releases). From biological idea to full research paper. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6fbd79f. It shows what the files ask for, not the result of running them.
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.
Ships script files (Python and R), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Spatial De loads about 1.7k tokens when it runs, and up to ~5.9k if it reads all its reference files. Until then it costs about 61 tokens; SKILL.md has 568 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); files beside SKILL.md are not scanned.
The full file from TianGzlab/OmicsClaw at commit 6fbd79f, republished under its MIT licence (© TianGzlab). 568 words, ~1,716 tokens.
.claude/skills/spatial-de/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.The user has a preprocessed spatial transcriptomics AnnData (Visium /
Xenium / MERFISH / Slide-seq) and wants either (a) cluster-marker
ranking via Scanpy wilcoxon / t-test, or (b) replicate-aware
two-group condition DE via pydeseq2 pseudobulk. The wrapper exposes
the official Scanpy filter controls and PyDESeq2 GLM controls directly,
and refuses to fabricate replicates — pseudobulk requires a real
sample_key.
<!-- AUTO-GENERATED from skill.yaml (interface) — do not edit by hand. Regenerate: python scripts/generate_skill_md.py <skill_dir> -->
Inputs
.h5adX normalised, PCA/neighbours present)Outputs
tables/de_full.csvtables/de_plot_points.csvtables/de_run_summary.csvtables/de_significant.csvtables/de_spatial_points.csvtables/de_umap_points.csvtables/group_de_metrics.csvtables/markers_top.csvtables/sample_counts_by_group.csvtables/skipped_sample_groups.csvtables/top_de_hits.csvfigures/de_effect_burden_spatial.pngfigures/de_effect_burden_umap.pngfigures/de_group_spatial_context.pngfigures/de_marker_dotplot.pngfigures/de_marker_heatmap.pngfigures/de_pvalue_distribution.pngfigures/de_top_hits_barplot.pngfigures/de_volcano.pngfigures/group_de_burden.pngfigures/sample_counts_by_group.pngfigures/skipped_sample_groups.pngprocessed.h5adreport.mdresult.jsonsaves_h5ad)--demo, run spatial-preprocess first (raises RuntimeError at spatial_de.py:1370 if upstream script missing).X = log_normalized; pydeseq2 needs counts).rank_genes_groups and (default-on) the official filter_rank_genes_groups post-filter.pydeseq2: pseudobulk by sample_key × group, drop bins below --min-cells-per-sample / --min-counts-per-gene, fit PyDESeq2 GLM. If the same biological sample is in both groups, auto-switch to paired design ~ sample_id + condition.processed.h5ad, tables, figure_data/manifest.json, report.md, result.json, and reproducibility script.pydeseq2 requires --sample-key distinct from --groupby. Hard-fails at spatial_de.py:1455 with "--sample-key and --groupby must be different for pydeseq2". Default sample_key is sample_id; if the user's grouping column happens to be the same name, swap one.pydeseq2 requires explicit --group1 and --group2. Hard-fails at spatial_de.py:1458 (the --demo path bypasses this by picking the first two groups it finds). Other methods treat them as optional (cluster-vs-rest if absent).adata.X is logged but not blocked. When pydeseq2 cannot find layers["counts"] or adata.raw, spatial_de.py:1684-1686 falls through to adata.X with a warning that says verbatim "If adata.X is log-normalized, pseudobulk DE will be statistically invalid." Verify result.json["summary"]["expression_source"] after every pseudobulk run; do not assume the warning blocked the run.skills/spatial/_lib/de.py:485-506 (_choose_pydeseq2_design): the wrapper switches the DESeq2 formula to ~ sample_id + condition only when at least 2 distinct sample_id values appear in both groups AND each side of the resulting paired split retains ≥2 cells; otherwise it stays unpaired (~ condition). Check result.json["summary"]["paired_design"] (also surfaced at spatial_de.py:454); if the run was unintentionally paired (e.g. the user merged samples by accident), the LFC interpretation changes.result.json's skipped-sample summary (each row carries sample_id, condition, reason, n_cells per spatial_de.py:1198). When pydeseq2 reports few DEGs, inspect this list before assuming biological null.filter_markers is cluster-style only. The --filter-markers post-filter (default on) enforces the min_in_group_fraction / min_fold_change / max_out_group_fraction triplet from scanpy.tl.filter_rank_genes_groups — appropriate for cluster markers, but for a --group1 vs --group2 contrast it can drop genuine effect genes whose between-condition cell coverage is low. Pass --no-filter-markers for two-group condition comparisons.# Demo: 200-spot synthetic Visium with three domains
python omicsclaw.py run spatial-de --demo
# Default exploratory cluster-marker discovery
python omicsclaw.py run spatial-de \
--input processed.h5ad --output results/ \
--groupby leiden --method wilcoxon
# Replicate-aware condition contrast via PyDESeq2 pseudobulk
python omicsclaw.py run spatial-de \
--input processed.h5ad --output results/ \
--method pydeseq2 --groupby condition \
--group1 treated --group2 control \
--sample-key sample_id \
--min-cells-per-sample 10 --min-counts-per-gene 10references/parameters.md — every CLI flag and per-method tuning hintreferences/methodology.md — Scanpy wilcoxon / t-test paths, PyDESeq2 GLM details, design validation, dependenciesreferences/output_contract.md — Visualization Contract (4 gallery roles) + Output Structurereferences/r_visualization.md — R customization layer reading figure_data/; templates live in r_visualization/spatial-preprocess (upstream prerequisite), spatial-domains (upstream cluster discovery), spatial-genes (sibling: spatially variable gene discovery, not group-DE), spatial-condition (sibling: condition comparison without a per-cluster slice — use spatial-de --method pydeseq2 when you also need a groupby cluster context), sc-de / bulkrna-de (same-question DE for the other two data modalities)© TianGzlab, MIT. 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 10 other files (references) in skills/spatial/spatial-de of TianGzlab/OmicsClaw.
Open the folder on GitHubat commit 6fbd79f
Spatial De 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 |
|---|---|---|---|---|---|---|
| Spatial De this skillTianGzlab/OmicsClaw | 161 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Scanpy Single-Cell Analysisdavila7/claude-code-templates | 32k | 16 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Anndatadavila7/claude-code-templates | 32k | 12 repos | ~2.5k | Automated safety check: Pass | MIT | |
| ScanpyK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~5.1k | Automated safety check: Pass | BSD-3-Clause | |
| Cellxgene CensusK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.4k | Automated safety check: Notes | MIT | |
| Omics ToolsDrugClaw/DrugClaw | 125 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
davila7/claude-code-templates
Walks through single-cell RNA-seq analysis with Scanpy: loading .h5ad and 10X data, QC, normalization, PCA and UMAP, Leiden clustering, marker genes and cell type annotation.
davila7/claude-code-templates
This skill should be used when working with annotated data matrices in Python, particularly for single-cell genomics analysis, managing experimental measurements with metadata, or handling…
K-Dense-AI/scientific-agent-skills
Performs Scanpy single-cell RNA-seq QC, normalization, HVG selection, PCA/UMAP/t-SNE, clustering, exploratory marker ranking, pseudobulk preparation, visualization, and Seurat or…
K-Dense-AI/scientific-agent-skills
Queries the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data.
DrugClaw/DrugClaw
Omics and single-cell workflow guide for AnnData, Scanpy-style dataset profiling, PyDESeq2-oriented count checks, pysam alignment inspection, and pyOpenMS mass-spectrometry summaries.
jaechang-hits/SciAgent-Skills
Annotated matrices for single-cell genomics. An agent skill from jaechang-hits/SciAgent-Skills.
TianGzlab/OmicsClaw
Load when removing batch effects from a multi-cohort bulk RNA-seq dataset using ComBat (R or Python implementation).
TianGzlab/OmicsClaw
Load when discovering gene co-expression modules and hub genes in a bulk RNA-seq cohort via WGCNA-style soft-thresholded networks.
TianGzlab/OmicsClaw
Load when comparing gene expression between two conditions in bulk RNA-seq count data.
TianGzlab/OmicsClaw
Load when estimating cell-type proportions in bulk RNA-seq samples from a single-cell or signature-matrix reference.
TianGzlab/OmicsClaw
Load when running pathway / GO term enrichment on a bulk RNA-seq DE result list.
TianGzlab/OmicsClaw
Load when converting gene identifiers between Ensembl, Entrez, and HGNC symbol in a bulk RNA-seq count matrix.
Categories
Load when ranking spatial cluster markers or comparing two spatial groups in spatial transcriptomics. Spatial De is an agent skill from TianGzlab/OmicsClaw. Load when ranking spatial cluster markers or comparing two spatial groups in spatial transcriptomics.
Spatial De fits situations like: tasks that involve Bioinformatics.
Run `npx skills add TianGzlab/OmicsClaw --skill spatial-de -a claude-code`. Or copy the skill folder (skills/spatial/spatial-de in TianGzlab/OmicsClaw) into .claude/skills/spatial-de in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TianGzlab/OmicsClaw --skill spatial-de -a codex`. Or copy the skill folder (skills/spatial/spatial-de in TianGzlab/OmicsClaw) into .agents/skills/spatial-de 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 TianGzlab/OmicsClaw --skill spatial-de -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spatial-de, .gemini/skills/spatial-de, .github/skills/spatial-de and .opencode/skills/spatial-de in your project.
Going by SKILL.md and its folder, Spatial De needs Python and R for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
Spatial De is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k 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 4.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Spatial De: Scanpy Single-Cell Analysis (davila7/claude-code-templates, 32k stars), Anndata (davila7/claude-code-templates, 32k stars), Scanpy (K-Dense-AI/scientific-agent-skills, 48k stars) and Cellxgene Census (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.
TianGzlab (a GitHub organization) maintains it in TianGzlab/OmicsClaw, which has 161 GitHub stars. The repository holds 95 skills in this directory. The repository was last updated on July 28, 2026.
Source: TianGzlab/OmicsClaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.