agentsclimarketplace

Transition state

Skill evan-robles/assay/skills/transition_state

Locate the first-order saddle point (transition state) for a chemical reaction starting from a TS-guess geometry, with a frequency check confirming exactly one imaginary mode.From its SKILL.md

Install
npx -y skills add evan-robles/assay --skill transition_state

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.1 KB, as published. Nobody here has run it

Transition-State Search

[!IMPORTANT] Before running — confirm the level of theory; never guess. If the user did not specify --method (xtb | mopac | dft | hf) — and, where relevant, --functional/--basis/--tier, --solvent (or explicit gas phase), --charge, --mult — stop and ask the user (do not silently default or carry over the previous run's choice). The engine refuses a DFT/HF run that omits the consequential knobs unless you pass --accept-defaults. At launch, immediately give the user the live .out log path and offer tail -f — do not wait for the run to finish. (calculation-reporting-standards non-negotiables #10 and #9.)

Goal

Locate a first-order saddle point on the potential-energy surface starting from a TS-guess geometry, then verify it via a Hessian that the converged structure has exactly one imaginary frequency (the reaction-coordinate mode). This yields the geometry needed for an activation energy $\Delta E^{\ddagger}$ / $\Delta G^{\ddagger}$.

Instructions

  1. Parse arguments. If the .xyz guess is missing, stop and ask. If --method is missing, ask (default mopac, since every other backend requires Sella installed separately).
  2. Run the engine:
# Env: anl_env
python skills/transition_state/scripts/run.py guess.xyz --method mopac

Arguments (port from the engine ts subcommand):

  • .xyz path with the TS guess — required. For rotation barriers, a good guess is the energy-maximum frame of a conformational-analysis dihedral scan; otherwise build by hand.
  • --method {xtb,mopac,dft,hf} — required (ask if missing; default mopac).
  • --solvent <name>, --charge N, --mult N, --steps N (default 500).
  • --no-verify-freq — skip the post-TS frequency verification.
  • --out <path> (result JSON; default <stem>_ts_<method>.json in the run cwd).
  • DFT-only: --tier {fast,standard,accurate}, --functional <libxc>, --basis <name>. --density-fit enables RI density fitting (~3-10x faster SCF, ~0.1-0.8 mEh error); OFF by default — chemkit uses exact integrals (plain RKS/UKS, matching hand-run PySCF).
  • HF-only: --basis <name>.
  1. Read the result JSON, written to --out (default <stem>_ts_<method>.json in the run cwd). The engine also writes <basename>_ts_<method>.xyz with the converged TS geometry; copy it next to the user's input.
  2. Report: converged? and the optimizer status; heat of formation (kcal/mol, MOPAC only) and total energy (eV); the verification-frequency result — is this a valid TS? (yes iff verify_freq.n_imaginary_modes == 1), the imaginary frequency (cm⁻¹) of the reaction-coordinate mode, and the number of imaginary modes (flag explicitly if 0 = collapsed to a minimum, or >1 = higher-order saddle); the path to the saved TS xyz; and every warning from the result JSON, reproduced verbatim — none dropped, summarized, or paraphrased; if there are no warnings, say so.
  3. Recommend running intrinsic-reaction-coordinate next to confirm which reactant and product the TS connects. For publication geometries, re-refine the saddle with --method dft --tier fast (DFT/HF TS searches are 10–100× slower and benefit greatly from a high-quality guess). See also the composite reaction-profile skill.

Result reading (token-efficient, required): run with --out <path> --stdout path so stdout is a one-line pointer, then read back only the fields you need with jq (always include warnings and the convergence flag). Surface the live .out log path the moment the run starts so the user can tail -f it. See RESULT-READING.md.

Skill name / discovery. This skill's engine subcommand is ts; the names transition-state, ts-search are accepted aliases — any of them work. Do not invent flags: gas phase is the default (or --solvent none); there is no --phase/--environment flag, and the geometry is the positional argument, not --geometry/--xyz/--input. If unsure of the exact name or flags, run chemkit --list-skills or chemkit transition-state --help-json (or --help) to discover them instead of guessing.

Examples

# Env: anl_env
python skills/transition_state/scripts/run.py sn2_guess.xyz \
  --method mopac --charge -1 --steps 500

Then: "See examples/ for a validated example with literature comparison."

Constraints

  • Environment: # Env: anl_env required for every code block.
  • Backend / optimizer: --method mopac uses MOPAC's native TS keyword and needs no extra install. --method xtb, --method dft, and --method hf use the Sella saddle-search optimizer, which is not bundled — install once with pip install sella. If Sella is missing the task errors out immediately with a clear message.
  • Cost: DFT/HF TS searches are 10–100× slower than MOPAC; supply a high-quality guess and consider locating the saddle with mopac first, then refining at DFT.
  • Convergence: If the MOPAC TS does not converge, the input is likely too far from the saddle — run a conformational-analysis scan to find an energy maximum as a better guess.
  • Reporting policy: Never automatically provide experimental or literature data for comparison. Report only the values this calculation produced. Do not volunteer "accepted", measured, or reference values, and do not editorialize about agreement with experiment. Only include an experimental comparison if the user explicitly asks for one.
  • Install / availability: pyscf is required for --method dft/--method hf (pip install pyscf); MOPAC and xtb via conda install -c conda-forge mopac xtb.

References


Author: Evan S. Robles Contact: GitHub @evan-robles

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.