executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
reactions-standardizationUse for RDKit reaction SMARTS/RXN workflows, product sanitization, MolStandardize cleanup/normalization/fragment/tautomer handling, R-group decomposition, stereochemistry/CIP practical workflows, and medicinal chemistry transformations. Route base molecule parsing to molecule-io-core and optional MMPA/Fraggle contrib workflows to contrib-utilities.
Independent GitHub snapshot · Automated classification · Original documentation governs
Use this sub-skill when a task asks an agent to transform molecules with reaction SMARTS, clean medicinal chemistry structures, choose parent fragments/charge forms, enumerate or canonicalize tautomers, decompose analog series into R-groups, or preserve/debug stereochemistry through these workflows.
rdkit.Chem.rdChemReactions or AllChem.ReactionFromSmarts.rdkit.Chem.MolStandardize.rdMolStandardize for cleanup, normalization, reionization, uncharging, fragment parents, charge parents, and tautomer enumeration.rdkit.Chem.rdRGroupDecomposition.RGroupDecompose against labeled or auto-labeled cores and interpret unmatched molecules.Chem.FindPotentialStereo and rdCIPLabeler.AssignCIPLabels.None checks, and generic sanitization basics: molecule-io-core.descriptors-fingerprints.conformers-drawing.Contrib/ utilities: contrib-utilities.repo-development.references/reactions.md for reaction SMARTS construction, running reactions, product handling, and stereochemistry behavior in reactions.references/standardization-rgroups-stereo.md for MolStandardize, R-group decomposition, tautomer, uncharging, fragment-parent, and CIP/stereo recipes.references/troubleshooting.md for invalid SMARTS, unsanitized products, unmatched cores, and parameter mistakes.scripts/standardize_react_smoke.py for a tiny standalone cleanup plus reaction SMARTS smoke test.molecule-io-core, then pass checked Mol objects into reaction or standardization code.Validate(), and match the exact reactant tuple arity required by the reaction.RunReactants() output as unsanitized candidate products: copy or select products deliberately, run Chem.SanitizeMol, and report failures with the product index and SMILES when possible.Cleanup, FragmentParent, ChargeParent, Uncharger, or tautomer canonicalization rather than applying every transform blindly.unmatched indices before trusting the R-group table.isomericSmiles=True, use mapped reaction atoms, assign CIP labels after final sanitization, and document whether a transform preserves, creates, destroys, or inverts a stereocenter.from rdkit import Chem
from rdkit.Chem import rdChemReactions
rxn = rdChemReactions.ReactionFromSmarts("[C:1]=[O:2]>>[C:1][O:2]")
products = rxn.RunReactants((Chem.MolFromSmiles("CC=O"),))
product = products[0][0]
Chem.SanitizeMol(product)
smiles = Chem.MolToSmiles(product, isomericSmiles=True)
from rdkit import Chem
from rdkit.Chem.MolStandardize import rdMolStandardize
mol = Chem.MolFromSmiles("CC(=O)[O-].[Na+]")
parent = rdMolStandardize.FragmentParent(mol)
uncharged = rdMolStandardize.Uncharger().uncharge(parent)
Run the bundled helper in an environment where RDKit is importable:
python scripts/standardize_react_smoke.py --smiles "CC(=O)[O-].[Na+]" --reactant "CC=O"
It asserts that cleanup and fragment-parent selection produce valid molecules, builds a tiny reaction SMARTS, sanitizes the first product, and prints canonical SMILES outputs. Use --bad-reaction to confirm invalid reaction SMARTS are reported cleanly.