"Use OpenMM for molecular simulation workflows, force-field/model
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill openmm --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Openmm?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-openmm)More formats (shields.io, HTML) on the badges page.
---
name: openmm
description: "Use OpenMM for molecular simulation workflows, force-field/model
preparation, custom forces/integrators, platform/performance diagnostics, and
maintainer extension work."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT, GPL, LGPL
---
# OpenMM
Use this repo skill when a task involves OpenMM, the molecular simulation toolkit exposed through `openmm`, `openmm.app`, `openmm.unit`, C++ APIs, runtime platforms, plugins, or the OpenMM source tree.
## Quick Start
- Install OpenMM from the public package channel appropriate for the user's environment; for Python workflows, verify `import openmm, openmm.app, openmm.unit` before writing larger scripts.
- Run `scripts/openmm_reference_smoke.py` for a checkout-independent Reference-platform sanity check that constructs a tiny system, evaluates a `Context`, and reports available platforms.
- Read `references/environment-and-platform-facts.md` for package/version caveats, install extras, platform expectations, and safe verification commands.
- Read `references/openmm-capability-map.md` when routing a broad request across sub-skills.
- Read `references/troubleshooting.md` first for cross-cutting install/import, unit, platform, and workflow failures.
## Route by User Task
- Use `sub-skills/simulation-workflows/SKILL.md` for Python application-layer simulations: loading PDB/mmCIF, Amber, GROMACS, CHARMM, or Tinker inputs; creating `Simulation`; attaching reporters; minimizing; stepping; and checkpoint or XML-state restarts.
- Use `sub-skills/force-fields-modeling/SKILL.md` for `ForceField`, `Modeller`, bundled XML files, `createSystem()`, missing hydrogens, solvent/ions, membranes, residue template errors, parameterized file formats, and ffxml authoring.
- Use `sub-skills/custom-forces-integrators/SKILL.md` for `Custom*Force` classes, expression syntax, runtime parameters, tabulated functions, force groups, `CustomIntegrator`, and serialization-aware custom systems.
- Use `sub-skills/platforms-performance/SKILL.md` for `Reference`, `CPU`, `CUDA`, `OpenCL`, or `HIP` platform selection, `platformProperties`, precision/device/thread choices, plugin availability, benchmark interpretation, and performance diagnostics.
- Use `sub-skills/development-extensions/SKILL.md` for changing OpenMM itself: C++ API/implementation work, kernels, plugins, serialization proxies, Python wrapper generation, CMake builds, and focused native tests.
## Core Concepts
- `openmm.System` stores particles, constraints, forces, virtual sites, and periodic box information; most simulation errors trace back to mismatch among `System`, topology, positions, and force parameters.
- `openmm.Context` binds a `System`, an `Integrator`, and a `Platform`; changes to a `System` after `Context` creation usually require updating parameters in context or reinitializing.
- `openmm.app.Simulation(topology, system, integrator, platform=None, platformProperties=None, state=None)` is the high-level Python workflow object for most application scripts.
- `openmm.app.ForceField(*files)` creates `System` objects from topologies and bundled or custom XML; use `Modeller(topology, positions)` before `createSystem()` when the structure needs hydrogens, solvent, ions, membranes, or extra particles.
- Physical quantities should carry `openmm.unit` units, for example `300*kelvin`, `1/picosecond`, `0.004*picoseconds`, and `1*nanometer`.
- The `Reference` platform is slow but excellent for correctness smokes; `CPU`, `CUDA`, `OpenCL`, and `HIP` need environment-specific package/plugin/runtime support.
## Safe Working Pattern
1. Clarify whether the user is running a simulation, preparing a model, defining custom physics, diagnosing hardware/performance, or modifying OpenMM internals.
2. Route to the narrowest sub-skill and use its nearest references/scripts rather than writing a large one-off script from memory.
3. Start with a bounded smoke: import OpenMM, list platforms, build or load a tiny system, run 0-10 steps or one energy evaluation, and assert finite output.
4. Escalate to production settings only after topology, positions, `System`, integrator, reporter paths, and platform choice are validated.
5. For source-tree development, separate build-required/native tests from package-level Python smokes; do not assume a user has a compiled OpenMM build tree.
## Bundled Runtime Assets
- `references/repo-provenance.md` records the source commit, dirty state, package version facts, and evidence paths used to create this skill.
- `references/openmm-capability-map.md` maps natural OpenMM requests to sub-skill owners, evidence, and validation signals.
- `references/environment-and-platform-facts.md` summarizes install/import/platform facts verified during skill creation without exposing private environment paths.
- `references/troubleshooting.md` covers cross-cutting failures and points to sub-skill-specific troubleshooting files.
- `scripts/openmm_reference_smoke.py` is a safe, checkout-independent Reference-platform smoke test.
## Boundaries
- This skill is self-contained runtime guidance. It does not require the original OpenMM checkout to be available.
- Do not link future agents to original repo docs, examples, tests, scripts, or absolute local paths; use the bundled references and scripts here.
- Treat benchmarks, GPU runs, source builds, `ctest`, and wrapper generation as optional, environment-dependent workflows that require explicit user context.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!