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/k-dense-ai/scientific-agent-skills/anndatanpx skills add K-Dense-AI/scientific-agent-skills --skill anndatagit clone --depth 1 https://github.com/K-Dense-AI/scientific-agent-skillsWhat 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.00063 | $0.03235 |
| Opus 5 | $0.00032 | $0.01618 |
| Sonnet 5 | $0.00013 | $0.00647 |
| Haiku 4.5 | $0.00006 | $0.00324 |
Grade A, and why
anndata 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.
Copies of this mod
8 near-identical copies found in the catalogue:
- anndata — 100% identical, 4 lines differ
- anndata — 100% identical, 4 lines differ
- anndata — 91% identical, 71 lines differ
- anndata — 89% identical, 71 lines differ
- anndata — 89% identical, 71 lines differ
- anndata — 89% identical, 71 lines differ
- anndata — 88% identical, 71 lines differ
- anndata — 88% identical, 37 lines differ
How it starts
The opening of the file, as written. The whole thing — 432 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AnnData
Overview
AnnData is a Python package for handling annotated data matrices, storing experimental measurements (X) alongside observation metadata (obs), variable metadata (var), and multi-dimensional annotations (obsm, varm, obsp, varp, uns). Originally designed for single-cell genomics through Scanpy, it now serves as a general-purpose framework for any annotated data requiring efficient storage, manipulation, and analysis.
When to Use This Skill
Use this skill when:
- Creating, reading, or writing AnnData objects
- Working with h5ad, zarr, or other genomics data formats
- Performing single-cell RNA-seq analysis
- Managing large datasets with sparse matrices or backed mode
- Concatenating multiple datasets or experimental batches
- Subsetting, filtering, or transforming annotated data
- Integrating with scanpy, scvi-tools, or other scverse ecosystem tools
Installation
Requires Python 3.11+. Current stable release: 0.12.16 (released 2026-05-18).
uv pip install "anndata==0.12.16"
# Lazy I/O and dask-backed operations
uv pip install "anndata[dask,lazy]==0.12.16"
# Development / docs (contributors)
uv pip install "anndata[dev,test,doc]==0.12.16"
Use unpinned installs only when intentionally tracking the latest compatible release.
Current API notes:
- Use
anndata.iofor non-nativeread_*andwrite_*helpers. Top-levelanndata.read_h5adandanndata.read_zarrremain supported. - Avoid deprecated APIs:
ad.read,AnnData.concatenate(),AnnData.*_keys(), andanndata.__version__. Preferad.read_h5ad,ad.concat, mapping.keys(), andimportlib.metadata.version("anndata"). - Treat
anndata.experimentalAPIs as useful but unstable. Prefer them for large-data workflows only when their current caveats are acceptable.
Quick Start
Creating an AnnData object
import anndata as ad
import numpy as np
import pandas as pd
# Minimal creation
X = np.random.rand(100, 2000) # 100 cells × 2000 genes
adata = ad.AnnData(X)
# With metadata
obs = pd.DataFrame({
'cell_type': ['T cell', 'B cell'] * 50,
'sample': ['A', 'B'] * 50
}, index=[f'cell_{i}' for i in range(100)])
var = pd.DataFrame({
'gene_name': [f'Gene_{i}' for i in range(2000)]
}, index=[f'ENSG{i:05d}' for i in range(2000)])
adata = ad.AnnData(X=X, obs=obs, var=var)
What ships with it
5 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.
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 · 432 lines · 63 tokens per session scan A c7c326d42419
anndata is a skill published in the GitHub repository K-Dense-AI/scientific-agent-skills (40,390 stars, last pushed yesterday), licensed MIT. It adds 63 tokens to every session and 3,235 once invoked, about $0.0003 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
discovery-toolbox
A routed repertoire of 90 scientific thinking operators for biological research agents - visual reasoning, detectability and information budgets, search reframing, causal identification, competing explanations, observation and selection processes, pipeline artifact diagnosis, effort allocation, and confirmation…
alphafold-pocket-evaluator
Parses AlphaFold2 PDB files, computes per-residue pLDDT confidence scores, and evaluates Solvent Accessible Surface Area (SASA) of active site pockets.
pydeseq2-bulk-rna
Automated negative binomial differential gene expression analysis, log2 fold-change calculation, p-value adjustment (FDR), and Volcano plot generation.
scanpy-sc-analyzer
Autonomous single-cell RNA-seq quality control filtering, Harmony batch-effect correction, Leiden clustering, UMAP visualization, and marker gene annotation.
card-amr-profiler
Scans bacterial genome assemblies against CARD (Comprehensive Antibiotic Resistance Database) and ResFinder to map drug-class resistance heatmaps.
diffdock-virtual-screener
Runs DiffDock generative diffusion models for blind protein-ligand docking against AlphaFold structures and ranks candidates by confidence scores.