// two Claude Code Agent Skills · computational chemistry

The router that refuses
plausible-wrong methods.

Method selection that picks the right method for the system — not for whatever you happened to type. Honest limits over silent fallbacks. EMT on an organic returns plausible nonsense, so it gets caught before you ever see it.

// MIT · active development — rough edges expected

method-selection trace // request in · backend out

> Run NVT MD on a 5000-atom organic system at 300 K.

  • ├─REJECTEDEMTwrong physics for organics
  • ├─REJECTEDGFN2-xTBpast the ~1k-atom size cliff
  • └─SELECTEDMACE-OFFpure-organic foundation model

CONTRACT cross-validate vs GFN2-xTB every 1 ps · abort if MAE_F > 100 meV/Å

One request, routed in the open.

No black box. The skill walks the decision out loud — what it rejects, what it selects, and the reason you can audit. Here is request 3, line by line.

claude -p · routing trace
  1. $ claude -p "Run 1 ns of explicit-solvent MD on a ligand in water"
  2. · loading skill ase-chemist · check_env.py … [SUMMARY] ambertools, tblite ok
  3. > REJECT GFN2-xTB — too slow for ns-scale solvated MD
  4. > SELECT Amber + GAFF2 AM1-BCC → tleap → pmemd · min → heat → density → prod
  5. > hand off to amber-chemist — restart · T-REMD · MMPBSA

Seven backends. Eight honest ceilings.

Most ceilings are about chemistry or scope, not size — they live in the Ceiling column below. The one place raw size decides the route is the xTB → MACE handoff, plotted here.

FIG 1 The one size cliff: GFN2-xTB hands off to MACE near ~1k atoms. Every boundary drawn here is documented; other backends are bounded by chemistry, not size.
Backend Route when Ceiling Skill
EMT quick metallic answers (Al, Cu, Ag, Au, Ni, Pd, Pt + H/C/N/O) wrong physics for organics — no bonds broken ase-chemist
Lennard-Jones toy systems, noble gases, methodology training no real chemistry ase-chemist
TIP3P pure-water MD where rigid O–H bonds matter water only ase-chemist
GFN2-xTB via tblite default for organic / main-group impractical past ~1k atoms ase-chemist
MACE MP-0 + OFF past the xTB size cliff (~1–2k atoms) ~1–2k atoms on a 40 GB GPU; mandatory cross-validation ase-chemist
Amber + GAFF2 small-molecule production explicit-solvent MD GAFF2 small molecules only (a carve-out) ase-chemist
Gaussian DFT publication-grade SP / Opt / Freq + thermochem license-gated; no method/basis defaults ase-chemist
Amber deep restart/extend, T-REMD, implicit GB, MMPBSA, cpptraj small organics; biopolymers deferred amber-chemist

The guardrail that earns MACE its place.

ML potentials produce plausible-but-wrong potential-energy surfaces that users cannot spot. So every MACE MD run validates against GFN2-xTB every 1 ps and aborts if force MAE exceeds 100 meV/Å. Opt-out is per-run — never the default. That contract is the whole reason the router is willing to recommend MACE at all.

  • cadence validate every 1 ps
  • threshold abort above 100 meV/Å
  • reference GFN2-xTB
FIG 2 · SCHEMATIC How the abort fires. The 100 meV/Å threshold is real; the trace is illustrative, not measured data.
abort · MAE_F > 100 meV/Å aborted 100 low force MAE simulation time →

Two skills, loaded on demand.

Markdown contracts plus Python scripts. Not a library, not a service — Claude Code loads them based on what you asked for.

ase-chemist // atomistic / molecular · ASE

Seven backends behind one method-selection router. Geometry optimization, molecular dynamics, single-point observables, trajectory analysis, structure building, and vibrations.

  • ├─ optimize — BFGS / FIRE / LBFGS
  • ├─ MD — NVE / NVT-Langevin / NVT-Nosé–Hoover
  • ├─ observables — energy, forces, dipole, HOMO–LUMO, Mulliken, Wiberg
  • ├─ analysis — RMSD / RMSF / RDF / energy drift
  • ├─ build — molecules, bulk crystals, Pt(111) slabs + adsorbates
  • └─ vibrations — Hessian / ZPE
ase-chemist docs →
amber-chemist // Amber-native · MD-first

Single-replica MD with restart and extend, configurable stages, restraints, barostats, and explicit or implicit GB solvent. T-REMD is a first-class capability.

  • ├─ stages — min → heat → density → prod
  • ├─ solvent — TIP3P / OPC / SPCE / TIP4P-Ew or implicit GB
  • ├─ barostats — Berendsen / Monte Carlo
  • ├─ T-REMD — auto ladder, exchange-rate report, demux
  • ├─ analysis — cpptraj RMSD / RMSF / RDF / hbond / radgyr
  • └─ scoring — esander SP, MMPBSA / MMGBSA, alanine scan
amber-chemist docs →

// a third openmm-chemist sibling is planned — no timeline.

Install.

check_env.py ends with a one-line [SUMMARY] of exactly which workflows your box can run right now. The skill recommends a method that's actually installed — it never asks you to install Gaussian when EMT or LJ would do.

// ase-chemist core

conda install -c conda-forge ase tblite-python mdanalysis matplotlib numpy
python ase-chemist/scripts/check_env.py

# optional: pip install mace-torch        (MACE; CUDA recommended)
# optional: conda install -c conda-forge ambertools   (GAFF2 carve-out)
# Gaussian is license-gated (https://gaussian.com/)

// amber-chemist core

conda install -c conda-forge ambertools
python amber-chemist/scripts/check_env.py

# T-REMD needs MPI builds:
#   pmemd.MPI / pmemd.cuda.MPI