Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF…

Apache-2.0Auto-check passedResearch & Science

Install Nvmolkit Usage

skills CLI
$ npx skills add NVIDIA-BioNeMo/bionemo-agent-toolkit --skill nvmolkit-usage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install NVIDIA-BioNeMo/bionemo-agent-toolkit nvmolkit-usage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/NVIDIA-BioNeMo/bionemo-agent-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/library-skills/nvmolkit-usage .claude/skills/nvmolkit-usage && rm -rf skills-src

Use ~/.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/

Facts

Skill name
nvmolkit-usage
GitHub stars
478
Token cost
~4.4k tokens
SKILL.md length
1,444 words
Files
3
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF…

  • The user is importing nvmolkit.
  • SKILL.md covers What nvMolKit is, Where nvMolKit does well, Runtime requirements and Verify the install before…, plus 5 more sections
  • Calls uv; reaches pytorch.org
  • Debugging an nvmolkit call

What it does

Nvmolkit Usage is an agent skill from NVIDIA-BioNeMo/bionemo-agent-toolkit. Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF optimization, TFD, conformer RMSD, Butina clustering, and substructure search. Use when the user is importing nvmolkit., debugging an nvmolkit call, choosing between nvMolKit and RDKit for a batched cheminformatics workflow, or wiring nvMolKit results into a torch/numpy pipeline. Out of scope: building nvMolKit from source.

Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `evals/evals.json` and `evals/trigger_evals.json`).

It sits in Research & Science, covering Drug discovery and cheminformatics and Embeddings. It works with RDKit, Python, NumPy and CUDA. The repository describes itself as: Turn any agent into a life science expert with NVIDIA BioNeMo skills. The licence is Apache-2.0.

When your agent uses it

  • The user is importing nvmolkit.
  • Debugging an nvmolkit call
  • Choosing between nvMolKit and RDKit for a batched cheminformatics workflow
  • Wiring nvMolKit results into a torch/numpy pipeline

Example prompts

  • “/nvmolkit-usage”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 2113472. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • uv

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • pytorch.org

    Also links to:

    • nvidia-bionemo.github.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Nvmolkit Usage loads about 4.4k tokens when it runs. Until then it costs about 135 tokens; SKILL.md has 1,444 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~135
When it runs · the whole SKILL.md, loaded when a task matches
~4.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from NVIDIA-BioNeMo/bionemo-agent-toolkit at commit 2113472, republished under its Apache-2.0 licence (© NVIDIA-BioNeMo). 1,444 words, ~4,423 tokens.

Download SKILL.mdSave it as .claude/skills/nvmolkit-usage/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
nvmolkit-usage
description
Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF optimization, TFD, conformer RMSD, Butina clustering, and substructure search. Use when the user is importing `nvmolkit.*`, debugging an `nvmolkit` call, choosing between nvMolKit and RDKit for a batched cheminformatics workflow, or wiring nvMolKit results into a torch/numpy pipeline. Out of scope: building nvMolKit from source.
license
Apache-2.0
metadata.owner
Kevin Boyd (@scal444)
metadata.risk_tier
skill

nvMolKit usage

What nvMolKit is

GPU-accelerated, batched implementations of common RDKit operations. APIs mirror RDKit where possible but are batch-oriented: they take lists of rdkit.Chem.Mol (or lists of fingerprints) and process them in parallel on one or more GPUs. nvMolKit links against RDKit at build time; inputs and outputs are real RDKit Mol objects.

Where nvMolKit does well

Reach for nvMolKit when:

  • The workload is a large batch of molecules processed together (typically thousands or more).
  • The metric is throughput / total wall time across the batch, not per-molecule latency.
  • The same operation is repeated identically across the batch (fingerprinting a library, embedding/minimizing many conformers, bulk pairwise similarity), so the GPU stays saturated.

Plain RDKit is usually the better choice for single-molecule one-offs or workflows that can't be expressed as a batch. nvMolKit is not meant to replace RDKit for those cases.

Runtime requirements

  • An NVIDIA GPU with compute capability 7.0 (V100) or higher
  • A CUDA driver compatible with CUDA 12.6+.
  • A working torch install with CUDA support (nvMolKit returns GPU tensors via torch's CUDA array interface).

If CUDA is unavailable, nvMolKit calls raise. There is no CPU fallback - if the user needs one, use RDKit directly for that path.

When helping with installation, make the user choose a PyTorch CUDA backend that the host driver supports before installing nvMolKit. nvMolKit's PyPI wheels are built with CUDA Toolkit 12.9 and depend on CUDA 12 runtime packages, but pip/uv can still select a CUDA 13 PyTorch wheel unless the install command says otherwise.

  • Conda: prefer conda-forge pytorch-gpu; pin cuda-version=12.6 or another CUDA version supported by the driver.
  • pip: send the user to the PyTorch install selector (https://pytorch.org/get-started/locally/) or previous-versions page (https://pytorch.org/get-started/previous-versions/) to install torch for a CUDA 12.x backend before installing nvMolKit.
  • uv: install nvMolKit with an explicit backend, e.g. uv pip install --torch-backend=cu128 nvmolkit.

Verify the install before writing real code

Run this once to confirm nvMolKit is importable and a GPU op works end to end:

python
import nvmolkit
import torch
from rdkit import Chem
from nvmolkit.fingerprints import MorganFingerprintGenerator

print("nvmolkit:", nvmolkit.__version__)
print("cuda available:", torch.cuda.is_available())
print("device count:", torch.cuda.device_count())

mols = [Chem.MolFromSmiles(smi) for smi in ["CCO", "c1ccccc1", "CC(=O)O"]]
fpgen = MorganFingerprintGenerator(radius=2, fpSize=1024)
result = fpgen.GetFingerprints(mols)
torch.cuda.synchronize()
fps = result.torch()
print("fps shape:", tuple(fps.shape), "dtype:", fps.dtype)
# Expected: shape (3, 32), dtype torch.int32  (1024 bits packed into 32 int32s per row)

If this fails, point the user at the install guide on the docs site rather than guessing - see "Going deeper" below.

Entry points

TaskModulePrimary entry point
Morgan fingerprintsnvmolkit.fingerprintsMorganFingerprintGenerator(radius, fpSize).GetFingerprints(mols)
Bulk Tanimoto / cosine similaritynvmolkit.similaritycrossTanimotoSimilarity(...), crossCosineSimilarity(...), plus *MemoryConstrained variants for results too large to fit in GPU memory
ETKDG conformer embeddingnvmolkit.embedMoleculesEmbedMolecules(molecules, params, confsPerMolecule, ...)
MMFF94 optimization (one-shot)nvmolkit.mmffOptimizationMMFFOptimizeMoleculesConfs(molecules, ...)
UFF optimization (one-shot)nvmolkit.uffOptimizationUFFOptimizeMoleculesConfs(molecules, ...)
Forcefield with custom options + constraintsnvmolkit.batchedForcefieldMMFFBatchedForcefield(mols, properties=..., nonBondedThreshold=..., ignoreInterfragInteractions=..., hardwareOptions=...), UFFBatchedForcefield(mols, vdwThreshold=..., ...). Per-molecule view ff[i] exposes add_distance_constraint, add_position_constraint, add_angle_constraint, add_torsion_constraint. Methods: .compute_energy(), .compute_gradients(), .minimize(maxIters, forceTol)
Pairwise conformer RMSDnvmolkit.conformerRmsdGetConformerRMSMatrix(mol), GetConformerRMSMatrixBatch(mols)
Torsion Fingerprint Deviation (TFD)nvmolkit.tfdGetTFDMatrix(mol), GetTFDMatrices(mols)
Butina clusteringnvmolkit.clusteringbutina(distance_matrix, cutoff) (precomputed matrix), fused_butina(fingerprints, cutoff) (memory-efficient, on-the-fly)
Substructure searchnvmolkit.substructurehasSubstructMatch, countSubstructMatches, getSubstructMatches
Hardware tuning (batch size, GPU IDs)nvmolkit.typesHardwareOptions(...) passed to ETKDG / MMFF / UFF
Optional autotuning of HardwareOptionsnvmolkit.autotunetune_embed_molecules, tune_mmff_optimize, tune_uff_optimize, tune_batched_forcefield. Requires the optuna package

Result types and execution model

Two return shapes carry GPU-resident output, depending on what the operation produces.

AsyncGpuResult

Used by operations that return a single flat tensor (fingerprints, similarity matrices, RMSD/TFD vectors, Butina inputs). Key behaviors:

  • Asynchronous. The kernel may not have completed when the call returns.
  • result.torch() returns a zero-copy torch.Tensor on the GPU. Caller is responsible for synchronizing before reading values on the host.
  • result.numpy() synchronizes and returns a CPU numpy array.
  • Exposes __cuda_array_interface__, so it can be passed directly into other nvMolKit functions (e.g. fingerprints → similarity) with no host round-trip.
CUDA stream control

A subset of the AsyncGpuResult-returning APIs accept an optional stream: torch.cuda.Stream | None = None argument so callers can submit nvMolKit work to a non-default stream and overlap it with their own kernels. When omitted, the call uses the current torch stream.

APIs that take a stream argument:

  • MorganFingerprintGenerator.GetFingerprints
  • crossTanimotoSimilarity, crossCosineSimilarity, and their *MemoryConstrained variants
  • butina, fused_butina
  • GetConformerRMSMatrix, GetConformerRMSMatrixBatch

Other APIs (ETKDG, MMFF/UFF optimization, TFD, substructure search) are synchronous to the caller — no stream plumbing needed.

Typical pattern:

python
import torch
from rdkit import Chem
from nvmolkit.fingerprints import MorganFingerprintGenerator
from nvmolkit.similarity import crossTanimotoSimilarity

stream = torch.cuda.Stream()
fpgen = MorganFingerprintGenerator(radius=2, fpSize=1024)
mols = [Chem.MolFromSmiles(smi) for smi in ["CCO", "c1ccccc1", "CC(=O)O"]]

with torch.cuda.stream(stream):
    fps = fpgen.GetFingerprints(mols, stream=stream)
    sim = crossTanimotoSimilarity(fps, stream=stream)
stream.synchronize()
print(sim.torch())
Device3DResult

Used by ETKDG embedding and MMFF/UFF optimization (one-shot and BatchedForcefield) when called with output=CoordinateOutput.DEVICE. The GPU-resident equivalent of writing conformers back to Mol objects. Fields:

  • values: AsyncGpuResult of shape (total_atoms, 3) float64. Concatenated conformer coordinates in CSR-style layout.
  • atom_starts, mol_indices, conf_indices: AsyncGpuResult int32 buffers describing the layout (values[atom_starts[i]:atom_starts[i+1]] is conformer i's atoms).
  • energies, converged: AsyncGpuResult buffers populated only for MMFF/UFF minimization (not for plain ETKDG).
  • gpu_id: device the buffers live on. The targetGpu argument on each API picks this; targetGpu=-1 uses the default consolidation device.
  • .per_molecule() returns nested list[list[torch.Tensor]] of per-conformer views; .dense(pad_value=nan) materializes a padded (n_mols, max_confs, max_atoms, 3) tensor.

The default mode (CoordinateOutput.RDKIT_CONFORMERS) still writes optimized coordinates back into each Mol and returns Python lists of energies/convergence flags. Reach for CoordinateOutput.DEVICE when chaining downstream GPU work (e.g. ETKDG → MMFF → similarity scoring) without host round-trips.

Configuration

Two configuration objects expose the GPU/CPU knobs.

HardwareOptions (ETKDG, MMFF, UFF)

from nvmolkit.types import HardwareOptions. Passed via hardwareOptions= to EmbedMolecules, MMFFOptimizeMoleculesConfs, UFFOptimizeMoleculesConfs, and the BatchedForcefield constructors. Every field has an "auto" sentinel; the defaults are usually fine.

FieldTypeDefaultMeaning
preprocessingThreadsint-1 (all visible CPUs)CPU threads for preprocessing
batchSizeint-1 (auto-tuned)Number of conformers per GPU batch
batchesPerGpuint-1 (auto)Concurrent batches per GPU; must be >0 or -1
gpuIdslist[int][] (all visible GPUs)Specific device ordinals to target

Passing a gpuIds entry for a device that isn't visible raises RuntimeError: invalid device ordinal. For finding good values automatically across a representative sample, see nvmolkit.autotune (requires the optuna extra); each tune_* function returns a TuneResult whose best_config is a fully-populated HardwareOptions ready to pass back into the real call.

HardwareOptions round-trips through to_dict() / from_dict() for persisting tuned configs to disk.

Show full SKILL.md (512 more words)Show less

from nvmolkit.substructure import SubstructSearchConfig. Passed via config= to hasSubstructMatch, countSubstructMatches, and getSubstructMatches.

FieldTypeDefaultMeaning
batchSizeint1024(target, query) pairs per GPU batch
workerThreadsint-1 (auto)GPU runner threads per GPU
preprocessingThreadsint-1 (auto)CPU threads for preprocessing
maxMatchesint0 (unlimited)Max matches returned per (target, query) pair
uniquifyboolFalseDrop duplicate matches that differ only in atom enumeration order
gpuIdslist[int] | NoneNone (current device only)Specific device ordinals to target

Substructure search currently does not support chirality-aware matching, enhanced stereochemistry, or other advanced RDKit SubstructMatchParameters options.

Recipes

Morgan fingerprints + bulk Tanimoto similarity
python
import torch
from rdkit import Chem
from nvmolkit.fingerprints import MorganFingerprintGenerator
from nvmolkit.similarity import crossTanimotoSimilarity

smiles = ["CCO", "CCN", "c1ccccc1", "CC(=O)O", "CCOCC"]
mols = [Chem.MolFromSmiles(smi) for smi in smiles]

fpgen = MorganFingerprintGenerator(radius=2, fpSize=1024)
fps = fpgen.GetFingerprints(mols)

sim = crossTanimotoSimilarity(fps)
torch.cuda.synchronize()
print(sim.torch())

Inputs are list[Mol]. Output of GetFingerprints is an AsyncGpuResult wrapping an (n_mols, fpSize / 32) int32 tensor of packed bits. Pass it straight into crossTanimotoSimilarity for an (n, n) similarity matrix; pass two fingerprint sets for an (n, m) cross-matrix. For sets too large to materialize on the GPU, use crossTanimotoSimilarityMemoryConstrained (chunked compute, returns numpy on CPU).

ETKDG conformer embedding
python
from rdkit.Chem import AddHs, MolFromSmiles
from rdkit.Chem.rdDistGeom import ETKDGv3
from nvmolkit.embedMolecules import EmbedMolecules

mols = [AddHs(MolFromSmiles(smi)) for smi in ["C1CCCCC1", "C1CCCCC2CCCCC12", "COO"]]
params = ETKDGv3()
params.useRandomCoords = True

EmbedMolecules(mols, params, confsPerMolecule=10, maxIterations=-1)

for mol in mols:
    print(mol.GetNumConformers())

Inputs are list[Mol], sanitized and with hydrogens added (AddHs). Conformers are added in-place. params.useRandomCoords must be True - nvMolKit's ETKDG only supports random-coord initialization. A handful of niche EmbedParameters options are not supported (bounds matrices, custom CPCI, coord maps, separate-fragment embedding); the Features section of the docs site lists the full restrictions.

MMFF94 minimization of a batch of conformers
python
from rdkit.Chem import AddHs, MolFromSmiles
from rdkit.Chem.rdDistGeom import ETKDGv3
from nvmolkit.embedMolecules import EmbedMolecules
from nvmolkit.mmffOptimization import MMFFOptimizeMoleculesConfs

mols = [AddHs(MolFromSmiles(smi)) for smi in ["CCO", "CCN", "c1ccccc1"]]
params = ETKDGv3(); params.useRandomCoords = True
EmbedMolecules(mols, params, confsPerMolecule=5)

energies = MMFFOptimizeMoleculesConfs(mols, maxIters=500)
for mol, mol_energies in zip(mols, energies):
    print(mol.GetNumConformers(), mol_energies)

Inputs are list[Mol] with conformers already populated (typically by ETKDG, RDKit's EmbedMultipleConfs, or a prior nvMolKit call). Coordinates are updated in place; the return is list[list[float]] of optimized energies aligned with the input molecule order and conformer index. UFF is identical in shape: swap in from nvmolkit.uffOptimization import UFFOptimizeMoleculesConfs.

If any input molecule is None or lacks MMFF/UFF atom types, the call raises ValueError. The exception's args[1] is a dict with keys "none" and "no_params" listing the offending indices - useful for filtering a noisy input set.

Conformer RMSD and Butina clustering
python
import torch
from rdkit import Chem
from rdkit.Chem.rdDistGeom import EmbedMultipleConfs
from nvmolkit.clustering import butina
from nvmolkit.conformerRmsd import GetConformerRMSMatrixBatch

mols = [Chem.AddHs(Chem.MolFromSmiles(smi)) for smi in ["CCCCCC", "c1ccccc1"]]
for mol in mols:
    EmbedMultipleConfs(mol, numConfs=10)

# Remove hydrogens after embedding for heavy-atom RMSD.
heavy_mols = [Chem.RemoveHs(mol) for mol in mols]

# Default RMSD output is RDKit-compatible condensed lower-triangle form.
condensed = GetConformerRMSMatrixBatch(heavy_mols)

# Butina expects a square distance matrix, so request square GPU tensors.
square = GetConformerRMSMatrixBatch(heavy_mols, output_format="square")
clusters = [butina(distance_matrix, cutoff=0.5).torch() for distance_matrix in square]

torch.cuda.synchronize()
for mol_clusters in clusters:
    print(mol_clusters.cpu().tolist())

GetConformerRMSMatrix(mol) and GetConformerRMSMatrixBatch(mols) default to output_format="condensed", returning AsyncGpuResult objects that wrap RDKit-style flat vectors of length N * (N - 1) // 2. Use output_format="square" when chaining into butina() or any other API that expects an N x N distance matrix. Both forms live on the GPU; call .numpy() on condensed results or synchronize before moving square tensors to the CPU.

Custom forcefield options + constraints (BatchedForcefield)

Reach for MMFFBatchedForcefield / UFFBatchedForcefield instead of the one-shot MMFFOptimizeMoleculesConfs / UFFOptimizeMoleculesConfs when you need any of:

  • Custom maxIters / forceTol per call
  • Per-molecule nonBondedThreshold (MMFF) or vdwThreshold (UFF), or per-molecule ignoreInterfragInteractions
  • Per-molecule MMFFMolProperties objects (e.g. MMFF94s vs MMFF94)
  • Distance, position, angle, or torsion constraints
  • Standalone compute_energy() / compute_gradients() without minimization
python
from rdkit.Chem import AddHs, MolFromSmiles
from rdkit.Chem.rdDistGeom import EmbedMultipleConfs
from nvmolkit.batchedForcefield import MMFFBatchedForcefield

mols = [AddHs(MolFromSmiles(smi)) for smi in ["CCO", "CCCCCC"]]
for mol in mols:
    EmbedMultipleConfs(mol, numConfs=5)

ff = MMFFBatchedForcefield(
    mols,
    nonBondedThreshold=[100.0, 20.0],
    ignoreInterfragInteractions=True,
)

ff[0].add_position_constraint(0, max_displ=0.1, force_constant=50.0)
ff[1].add_distance_constraint(0, 4, relative=False, min_len=1.8, max_len=2.2, force_constant=25.0)

energies, converged = ff.minimize(maxIters=500, forceTol=1e-4)
for mol, mol_energies, mol_converged in zip(mols, energies, converged):
    print(mol.GetNumConformers(), mol_energies, mol_converged)

All conformers of each input molecule are minimized in one batch. Constraints attached via ff[i].add_*_constraint(...) apply to every conformer of molecule i; constraint setters mark the wrapper dirty and the native forcefield rebuilds on the next call. Pass output=CoordinateOutput.DEVICE to .minimize(...) to keep optimized coordinates on the GPU (Device3DResult) instead of writing them back into RDKit conformers. UFF is the same shape: UFFBatchedForcefield(mols, vdwThreshold=..., ...).

Going deeper

© NVIDIA-BioNeMo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in library-skills/nvmolkit-usage of NVIDIA-BioNeMo/bionemo-agent-toolkit.

  • SKILL.md
  • evals/evals.json
  • evals/trigger_evals.json

Open the folder on GitHubat commit 2113472

Compare with similar skills

Nvmolkit Usage 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.

Nvmolkit Usage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Nvmolkit Usage this skillNVIDIA-BioNeMo/bionemo-agent-toolkit478—~4.4kAutomated safety check: PassApache-2.0
MolfeatK-Dense-AI/scientific-agent-skills48k1 repos~2.4kAutomated safety check: NotesApache-2.0
Nvmolkit UsageNVIDIA/skills3.5k1 repos~4.8kAutomated safety check: PassApache-2.0
DiffDock Molecular DockingK-Dense-AI/scientific-agent-skills48k1 repos~3kAutomated safety check: NotesMIT
TorchdrugK-Dense-AI/scientific-agent-skills48k1 repos~3kAutomated safety check: NotesApache-2.0
RDKit Descriptors and Fingerprintsjinzhezenggroup/computational-chemistry-agent-skills1481 repos~2.3kAutomated safety check: PassLGPL-3.0

Similar skills

  • Molfeat

    K-Dense-AI/scientific-agent-skills

    Featurizes small molecules with Molfeat for QSAR/QSPR, chemical similarity, virtual screening, and molecular ML.

    48k GitHub starsUsed in 1 repo~2.4k tokens
    Research & ScienceAuto-check: notes
  • Nvmolkit Usage

    NVIDIA/skills

    Official

    A skill your agent uses when writing or debugging nvMolKit Python code for GPU-accelerated RDKit fingerprints, similarity, conformers, clustering, and molecular searches.

    3.5k GitHub starsUsed in 1 repo~4.8k tokens
    Research & ScienceAuto-check passed
  • DiffDock Molecular Docking

    K-Dense-AI/scientific-agent-skills

    Predicts how small molecules bind to a protein with DiffDock, covering batch docking, pose ranking by confidence and checks on the results; not for binding affinity.

    48k GitHub starsUsed in 1 repo~3k tokens
    Research & ScienceAuto-check: notes
  • Torchdrug

    K-Dense-AI/scientific-agent-skills

    Builds and troubleshoots TorchDrug 0.2.1 workflows for molecular graphs, property prediction, self-supervised pretraining, molecule generation, retrosynthesis, protein representation learning, and…

    48k GitHub starsUsed in 1 repo~3k tokens
    Research & ScienceAuto-check: notes
  • RDKit Descriptors and Fingerprints

    jinzhezenggroup/computational-chemistry-agent-skills

    Computes RDKit physicochemical descriptors and molecular fingerprints from SMILES through a uv-run CLI script that skips and logs invalid molecules.

    148 GitHub starsUsed in 1 repo~2.3k tokens
    Research & ScienceAuto-check passed
  • Pixi Environment Builder

    xuzhougeng/wisp-science

    A skill your agent uses when creating, migrating, or debugging pixi environments, especially for scientific Python, bioinformatics, single-cell analysis, CUDA/PyTorch, Jupyter/VS Code kernels…

    1k GitHub stars~3.7k tokensUpdated today
    Research & ScienceAuto-check passed

More from NVIDIA-BioNeMo/bionemo-agent-toolkit

All 14 skills in this repo
  • Complexa Binder Design

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    Run a complete protein binder design campaign with NVIDIA Proteina-Complexa: resolve a target structure and hotspots from a name/sequence/PDB, co-design binder sequence+structure with reward-guided…

    478 GitHub stars~3.1k tokensUpdated yesterday
    Auto-check: notes
  • Parabricks

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    Route NVIDIA Parabricks pbrun tools, assess GPU/runtime readiness, and provide version-aware command guidance for FASTQ/BAM processing, RNA-seq, variant calling, BAM QC, and GVCF workflows.

    478 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Protein Binder Design

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    Orchestrate an end-to-end de novo protein binder design campaign against a protein target by composing BioNeMo NIM skills.

    478 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check: notes
  • Cuequivariance

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    Build and debug cuEquivariance irreps, custom Irrep subclasses, Clebsch-Gordan tensor products, and equivariant or segmented polynomials.

    478 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Genomics Workflow Acceleration

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    A skill your agent uses when accelerating existing genomics workflows with NVIDIA Parabricks, improving runtime or price/performance, converting pipeline steps to GPUs, or comparing CPU and GPU…

    478 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Complexa Design

    NVIDIA-BioNeMo/bionemo-agent-toolkit

    End-to-end Proteina-Complexa design pipeline driver. An agent skill from NVIDIA-BioNeMo/bionemo-agent-toolkit.

    478 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check: notes

Questions about Nvmolkit Usage

What does Nvmolkit Usage do?

Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF…. Nvmolkit Usage is an agent skill from NVIDIA-BioNeMo/bionemo-agent-toolkit. Write code that calls the installed nvMolKit Python API for GPU-accelerated, batched RDKit-style operations - Morgan fingerprints, Tanimoto/cosine similarity, ETKDG conformer embedding, MMFF/UFF optimization, TFD, conformer RMSD, Butina clustering, and substructure search.

When should I use Nvmolkit Usage?

Nvmolkit Usage fits situations like: the user is importing nvmolkit; debugging an nvmolkit call; choosing between nvMolKit and RDKit for a batched cheminformatics workflow; wiring nvMolKit results into a torch/numpy pipeline.

How do I install Nvmolkit Usage in Claude Code?

Run `npx skills add NVIDIA-BioNeMo/bionemo-agent-toolkit --skill nvmolkit-usage -a claude-code`. Or copy the skill folder (library-skills/nvmolkit-usage in NVIDIA-BioNeMo/bionemo-agent-toolkit) into .claude/skills/nvmolkit-usage in your project. Claude Code loads it when a task matches its description.

How do I install Nvmolkit Usage in Codex?

Run `npx skills add NVIDIA-BioNeMo/bionemo-agent-toolkit --skill nvmolkit-usage -a codex`. Or copy the skill folder (library-skills/nvmolkit-usage in NVIDIA-BioNeMo/bionemo-agent-toolkit) into .agents/skills/nvmolkit-usage in your project. Codex loads it when a task matches its description.

Can I use Nvmolkit Usage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NVIDIA-BioNeMo/bionemo-agent-toolkit --skill nvmolkit-usage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nvmolkit-usage, .gemini/skills/nvmolkit-usage, .github/skills/nvmolkit-usage and .opencode/skills/nvmolkit-usage in your project.

What does Nvmolkit Usage need to run?

Going by SKILL.md and its folder, Nvmolkit Usage needs the command-line tools its instructions call (uv). Our summary lists: Python 3.

Does Nvmolkit Usage access the network?

SKILL.md names 2 domains. In commands or code: pytorch.org; the agent is likely to contact it when it follows the instructions. As links in the text: nvidia-bionemo.github.io. This is read from the text; nothing was executed.

Is Nvmolkit Usage safe to install?

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.

What licence does Nvmolkit Usage use?

Nvmolkit Usage is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Nvmolkit Usage use?

About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Nvmolkit Usage?

Skills that share tags, products or a category with Nvmolkit Usage: Molfeat (K-Dense-AI/scientific-agent-skills, 48k stars), Nvmolkit Usage (NVIDIA/skills, 3.5k stars), DiffDock Molecular Docking (K-Dense-AI/scientific-agent-skills, 48k stars) and Torchdrug (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.

Who maintains Nvmolkit Usage?

NVIDIA-BioNeMo (a GitHub organization) maintains it in NVIDIA-BioNeMo/bionemo-agent-toolkit, which has 478 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

Source: NVIDIA-BioNeMo/bionemo-agent-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.