CtrlK
BlogDocsLog inGet started
Tessl Logo

scvi-tools

Probabilistic single-cell RNA-seq with scvi-tools — scVI for a batch-corrected latent space, scANVI for semi-supervised label transfer, and Bayesian differential expression. Reach for this skill to integrate scRNA-seq batches, embed cells for clustering, transfer annotations from a reference onto a query, or score differentially expressed genes per cluster. For spatial deconvolution / mapping use the cell2location, DestVI, or Tangram methods instead.

69

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

71%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The body is a strong, dense practitioner guide: executable code with exact API spellings, high-value version-specific gotchas, and a symptom→fix troubleshooting table. Its main weaknesses are a dangling reference to a kernel.py that is not in the bundle (leaving h5ad_safe_obs undefined), a placeholdered remote recipe that is not copy-paste ready, duplicated content across the Gotchas and Troubleshooting tables, and no progressive disclosure of reference-grade material into separate files.

Suggestions

Ship kernel.py in scripts/ (or inline the h5ad_safe_obs definition in SKILL.md) — the Setup section, Gotchas, and Troubleshooting all depend on it, but no such file exists in the bundle, so exec(open(...)) fails and the obs-coercion fix is unusable as written.

Move the Modal remote-compute recipe (and optionally the DE output-column enumeration) into a reference file with a clearly signaled one-level link, keeping SKILL.md as a lean overview.

Merge the Gotchas and Troubleshooting tables into a single symptom→fix table — use_gpu, IORegistryError, and KeyError 'lfc_mean' currently appear in both, spending tokens twice on the same three errors.

DimensionReasoningScore

Conciseness

The body is dense and almost every token is version-specific, non-obvious knowledge (the vanilla-vs-change DE column trap, the ArrowStringArray write failure, the removed use_gpu kwarg) rather than concepts Claude already knows. It is not a 5 because the Gotchas and Troubleshooting tables repeat the same three errors (use_gpu TypeError, IORegistryError, KeyError 'lfc_mean') and the "This is a pure skill ... There is no host runtime and no LLM API" paragraph is environment meta-commentary that could be trimmed.

4 / 5

Actionability

The scVI, scANVI, and DE blocks are fully executable with exact kwargs and the exact output-column list, and the troubleshooting table maps concrete error strings to fixes. It is not a 5 because the Modal pipeline.py snippet is a placeholder ("# ... setup_anndata / scVI / scANVI / DE — see the recipe above ...", "paste the helper into THIS script (below)") and its h5ad_safe_obs call depends on a helper whose definition is nowhere in the skill — the referenced kernel.py does not exist in the bundle.

4 / 5

Workflow Clarity

The pipeline is clearly sequenced with inline ordering guards ("preserve raw BEFORE any normalize/log1p", stash counts layer, then setup_anndata → train → latent → neighbors/leiden in the Next footer), and the troubleshooting table supplies symptom→fix recovery paths. It is not a 5 because there is no explicit verification checkpoint (e.g., confirm out.h5ad exists and reads back after the remote GPU job, or check the embedding shape before downstream clustering); it is not a 3 because the sequence and error-recovery paths are explicit and the operations write new files rather than destructively modifying inputs.

4 / 5

Progressive Disclosure

Everything — the full DE output-column enumeration, the complete Modal remote recipe, and two dense tables — is inlined in a single ~170-line SKILL.md with no reference files, and the one bundle file the body depends on ("exec(open(\"scvi-tools/kernel.py\").read())") is absent from the bundle (no references/, scripts/, or assets/ exist), leaving the central h5ad_safe_obs helper as a dangling reference. It is not a 2 because section structure is clear and well-organized; it is not a 4 because a referenced path is broken and reference-grade material that belongs in separate files sits inline.

3 / 5

Total

15

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

This is an exemplary description: it names the domain and every concrete capability, provides an explicit "Reach for this skill to..." trigger clause with natural synonyms, and closes with a boundary sentence that steers the most confusable neighboring task (spatial deconvolution) to alternative tools. Both "what" and "when" are answered concretely with minimal conflict risk.

DimensionReasoningScore

Specificity

The description enumerates concrete capabilities — "scVI for a batch-corrected latent space, scANVI for semi-supervised label transfer, and Bayesian differential expression" — plus four concrete use actions ("integrate scRNA-seq batches, embed cells for clustering, transfer annotations from a reference onto a query, or score differentially expressed genes per cluster"), which is comprehensive coverage of what the skill does. It is not a 4 because there are no gaps in capability coverage: every function of the skill (embedding, integration, label transfer, DE) is named as a specific action.

5 / 5

Completeness

It explicitly answers "what" (three named capabilities) and "when" via an explicit trigger clause — "Reach for this skill to integrate scRNA-seq batches, embed cells for clustering, transfer annotations..., or score differentially expressed genes per cluster" — with concrete trigger phrases, and even adds an exclusion boundary ("For spatial deconvolution / mapping use the cell2location, DestVI, or Tangram methods instead"). It is not a 4 because the "when" is fully explicit with specific triggers rather than merely present.

5 / 5

Trigger Term Quality

Natural user phrasings are comprehensively covered with synonyms: "single-cell RNA-seq" / "scRNA-seq", "integrate ... batches", "clustering", "transfer annotations from a reference onto a query" / "label transfer", and "differentially expressed genes", alongside the tool names users would mention. It is not a 4 because both synonyms and task-oriented phrasings (not just tool jargon) are present, matching how a user would naturally phrase these needs.

5 / 5

Distinctiveness Conflict Risk

The skill occupies a clear niche (scvi-tools probabilistic scRNA-seq) with distinct triggers, and the closing boundary sentence actively routes the nearest overlapping use case (spatial deconvolution) to other methods, minimizing wrong-skill triggering. It is not a 4 because even the main overlap risk is explicitly disambiguated rather than left as a minor residual risk.

5 / 5

Total

20

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository
UnicomAI/wanwu
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.