# Chemistry Tools

Computational chemistry tools including molecular structure, chemical reactions...

- Repository: https://github.com/beita6969/ScienceClaw (1024 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add beita6969/ScienceClaw --skill chemistry-tools -g -a claude-code -y`
Codex: `npx skills add beita6969/ScienceClaw --skill chemistry-tools -g -a codex -y`
Cursor: `npx skills add beita6969/ScienceClaw --skill chemistry-tools -g -a cursor -y`
Gemini CLI: `npx skills add beita6969/ScienceClaw --skill chemistry-tools -g -a gemini-cli -y`

## Description

Computational chemistry tools including molecular structure, chemical reactions, thermodynamics, spectroscopy analysis, and cheminformatics. Use when user works with chemical formulas, molecular structures, reaction balancing, thermodynamic calculations, or chemical databases (PubChem, ChemSpider). Triggers on "chemical structure", "molecular weight", "balance equation", "reaction", "thermodynamics", "spectroscopy", "SMILES", "PubChem", "chemical formula", "stoichiometry".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Chemistry Tools

Computational chemistry and cheminformatics. Venv: `source /Users/zhangmingda/clawd/.venv/bin/activate`

## Molecular Properties

```python
# Using RDKit if available, otherwise manual calculations
from sympy import symbols, Eq, solve

# Molecular weight calculation (manual)
ATOMIC_WEIGHTS = {
    'H': 1.008, 'He': 4.003, 'Li': 6.941, 'Be': 9.012, 'B': 10.81,
    'C': 12.011, 'N': 14.007, 'O': 15.999, 'F': 18.998, 'Ne': 20.180,
    'Na': 22.990, 'Mg': 24.305, 'Al': 26.982, 'Si': 28.086, 'P': 30.974,
    'S': 32.065, 'Cl': 35.453, 'Ar': 39.948, 'K': 39.098, 'Ca': 40.078,
    'Fe': 55.845, 'Cu': 63.546, 'Zn': 65.38, 'Br': 79.904, 'Ag': 107.868,
    'I': 126.904, 'Au': 196.967,
}

import re
def molecular_weight(formula):
    """Calculate MW from chemical formula like 'C6H12O6'"""
    elements = re.findall(r'([A-Z][a-z]?)(\d*)', formula)
    mw = sum(ATOMIC_WEIGHTS.get(el, 0) * (int(n) if n else 1) for el, n in elements)
    return mw

# Example
print(f"Glucose (C6H12O6): {molecular_weight('C6H12O6'):.3f} g/mol")
```

## Chemical Equation Balancing

```python
from sympy import Matrix, lcm

The rest: https://github.com/beita6969/ScienceClaw/blob/HEAD/skills/chemistry-tools/SKILL.md
