Molecode
AtomFlow-AI/MoleCode
A skill your agent uses for deterministic molecule understanding, graph-level editing, generation, and validation with MoleCode — an explicit Mermaid graph in which every atom and bond is a typed…
Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds.
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/chemical-structure-converter .claude/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .claude/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converterType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/chemical-structure-converter .agents/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .agents/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/chemical-structure-converter .cursor/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .cursor/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/chemical-structure-converter--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/chemical-structure-converter .gemini/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .gemini/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converterInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/chemical-structure-converter .github/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .github/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/chemical-structure-converter .opencode/skills/chemical-structure-converter && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "chemical-structure-converter" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/chemical-structure-converter into .opencode/skills/chemical-structure-converter/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "chemical-structure-converter", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
chemical-structure-converterConvert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds.
Chemical Structure Converter is an agent skill from LeoYeAI/openclaw-master-skills. Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds. Supports structure validation, identifier interconversion, and cheminformatics data preparation for drug discovery and chemical research workflows.
Its SKILL.md is about 7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `_meta.json` and `scripts/main.py`).
It sits in Research & Science, covering Drug discovery and cheminformatics. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteBashEditFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pubchem.ncbi.nlm.nih.govchemspider.comopensmiles.orginchi-trust.orgrdkit.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Chemical Structure Converter loads about 7k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 1,841 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Bash, EditAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,841 words, ~6,984 tokens.
.claude/skills/chemical-structure-converter/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Interconvert between different chemical structure representations including IUPAC names, SMILES strings, molecular formulas, and common names. Essential for cheminformatics workflows, database standardization, and compound registration in drug discovery and chemical research.
Key Capabilities:
✅ Use this skill when:
❌ Do NOT use when:
Related Skills:
chemical-storage-sorter, adme-property-predictormolecular-docking-predictor, bio-ontology-mapperUpstream Skills:
chemical-storage-sorter: Classify chemicals by hazard group before storage registrationadme-property-predictor: Convert structures to standardized formats before ADME predictionsafety-data-sheet-reader: Extract chemical names from SDS for structure lookupDownstream Skills:
molecular-docking-predictor: Convert compound libraries to 3D structures for dockingbio-ontology-mapper: Map chemical structures to standardized ontologies (ChEBI, PubChem)lab-inventory-tracker: Register standardized chemical identifiers in inventoryComplete Workflow:
Literature/Patent → chemical-structure-converter → adme-property-predictor → molecular-docking-predictor → Hit SelectionConvert chemical structures between different representation formats for database interoperability.
from scripts.main import ChemicalStructureConverter
converter = ChemicalStructureConverter()
# Convert compound name to all available identifiers
chemical_name = "aspirin"
data = converter.name_to_identifiers(chemical_name)
if data:
print(f"Compound: {chemical_name}")
print(f"IUPAC Name: {data['iupac']}")
print(f"SMILES: {data['smiles']}")
print(f"Formula: {data['formula']}")
print(f"Molecular Weight: {data['mw']} g/mol")
# Output:
# Compound: aspirin
# IUPAC Name: 2-acetoxybenzoic acid
# SMILES: CC(=O)Oc1ccccc1C(=O)O
# Formula: C9H8O4
# Molecular Weight: 180.16 g/molSupported Conversions:
| From → To | Method | Use Case |
|---|---|---|
| Name → SMILES | Database lookup | Literature to database |
| SMILES → IUPAC | Structure recognition | Machine to human readable |
| IUPAC → SMILES | Name parsing | Chemical registration |
| SMILES → Formula | Atom counting | Quick MW calculation |
Best Practices:
Common Issues and Solutions:
Issue: Compound not in local database
Issue: Multiple valid SMILES for same compound
Validate SMILES syntax to ensure structural integrity before computational processing.
from scripts.main import ChemicalStructureConverter
converter = ChemicalStructureConverter()
# Validate SMILES strings
smiles_examples = [
"CC(=O)Oc1ccccc1C(=O)O", # Aspirin - valid
"CCO", # Ethanol - valid
"C(=O", # Invalid - unclosed parenthesis
"C1CCCCC", # Invalid - unclosed ring
]
for smiles in smiles_examples:
is_valid, message = converter.validate_smiles(smiles)
status = "✅ Valid" if is_valid else "❌ Invalid"
print(f"{smiles:<30} {status}: {message}")
# Output:
# CC(=O)Oc1ccccc1C(=O)O ✅ Valid: Valid SMILES syntax
# CCO ✅ Valid: Valid SMILES syntax
# C(=O ❌ Invalid: Mismatched parentheses
# C1CCCCC ❌ Invalid: Ring closure errorValidation Checks:
| Check | Description | Example Error |
|---|---|---|
| Parentheses | Matching ( and ) | C(=O - missing closing |
| Brackets | Matching [ and ] | [Na+ - missing closing |
| Ring closures | Matching digits | C1CC - ring not closed |
| Atom validity | Recognized elements | @ - invalid character |
| Valence | Chemical validity | C(C)(C)(C)(C)C - 5 bonds to C |
Best Practices:
Common Issues and Solutions:
Issue: Valid syntax but chemically impossible
Issue: Tautomeric ambiguity
Process multiple chemical structures simultaneously for database standardization.
from scripts.main import ChemicalStructureConverter
converter = ChemicalStructureConverter()
# Batch process compound list
compound_list = [
"aspirin",
"caffeine",
"glucose",
"ethanol",
"unknown_compound"
]
results = []
for compound in compound_list:
data = converter.name_to_identifiers(compound)
if data:
results.append({
'name': compound,
'iupac': data['iupac'],
'smiles': data['smiles'],
'formula': data['formula'],
'mw': data['mw']
})
else:
print(f"⚠️ Warning: '{compound}' not found in database")
# Display results table
print("\n" + "="*80)
print(f"{'Name':<20} {'Formula':<15} {'MW':<10} {'SMILES'}")
print("="*80)
for r in results:
print(f"{r['name']:<20} {r['formula']:<15} {r['mw']:<10.2f} {r['smiles'][:40]}")Best Practices:
Common Issues and Solutions:
Issue: Synonym confusion
Issue: Mixture or salt forms
Extract molecular formulas and calculate basic properties from SMILES or names.
from scripts.main import ChemicalStructureConverter
converter = ChemicalStructureConverter()
# Analyze compound properties
compounds = ["aspirin", "caffeine", "glucose"]
print("Molecular Properties:")
print("-" * 70)
print(f"{'Compound':<15} {'Formula':<12} {'MW (g/mol)':<12} {'Heavy Atoms'}")
print("-" * 70)
for name in compounds:
data = converter.name_to_identifiers(name)
if data:
# Count heavy atoms (non-hydrogen) from formula
formula = data['formula']
heavy_atoms = sum(int(c) for c in formula if c.isdigit())
if heavy_atoms == 0: # Single atoms like C, O
heavy_atoms = len([c for c in formula if c.isupper()])
print(f"{name:<15} {data['formula']:<12} {data['mw']:<12.2f} {heavy_atoms}")Calculated Properties:
| Property | Calculation | Use Case |
|---|---|---|
| Molecular Weight | Sum of atomic weights | Dosing, filtering |
| Heavy Atoms | Non-hydrogen atoms | Size estimation |
| Formula | Atom count from structure | Database indexing |
| Rotatable Bonds | Count rotatable bonds | Flexibility index |
Best Practices:
Common Issues and Solutions:
Issue: Hydrates and solvates
Standardize chemical representations for database consistency.
from scripts.main import ChemicalStructureConverter
def standardize_compound_entry(name: str, converter) -> dict:
"""
Standardize compound entry with all identifiers.
Returns standardized entry or None if not found.
"""
data = converter.name_to_identifiers(name)
if not data:
return None
# Create standardized entry
standardized = {
'common_name': name.lower(),
'iupac_name': data['iupac'],
'smiles': data['smiles'],
'inchi': f"InChI=1S/{data['formula']}", # Placeholder
'molecular_formula': data['formula'],
'molecular_weight': data['mw'],
'standardized_date': '2026-02-09',
'source': 'local_database'
}
return standardized
# Example usage
converter = ChemicalStructureConverter()
entry = standardize_compound_entry("aspirin", converter)
if entry:
print("Standardized Entry:")
for key, value in entry.items():
print(f" {key}: {value}")Standardization Rules:
| Rule | Standard Form | Example |
|---|---|---|
| Common names | Lowercase | "aspirin" not "Aspirin" |
| IUPAC | Full systematic name | "2-acetoxybenzoic acid" |
| SMILES | Canonical | No stereochemistry if unspecified |
| Formula | Hill system | C, H, then alphabetical |
Best Practices:
Common Issues and Solutions:
Issue: Multiple valid representations
Prepare chemical data for import into cheminformatics databases.
import json
from scripts.main import ChemicalStructureConverter
def prepare_database_import(compound_names: list, converter) -> list:
"""
Prepare compound list for database import.
Returns list of standardized database records.
"""
records = []
for name in compound_names:
data = converter.name_to_identifiers(name)
if data:
record = {
'compound_id': f"CMPD_{len(records)+1:04d}",
'common_name': name,
'iupac_name': data['iupac'],
'smiles': data['smiles'],
'molecular_formula': data['formula'],
'molecular_weight': data['mw'],
'status': 'active'
}
records.append(record)
else:
print(f"⚠️ Skipped: {name} (not in database)")
return records
# Generate database import file
converter = ChemicalStructureConverter()
compounds = ["aspirin", "caffeine", "glucose", "ethanol"]
db_records = prepare_database_import(compounds, converter)
# Export to JSON for database import
with open('chemical_database_import.json', 'w') as f:
json.dump(db_records, f, indent=2)
print(f"\nExported {len(db_records)} compounds to database import file")Database Schema Example:
CREATE TABLE compounds (
compound_id VARCHAR(20) PRIMARY KEY,
common_name VARCHAR(255),
iupac_name VARCHAR(500),
smiles VARCHAR(1000),
molecular_formula VARCHAR(50),
molecular_weight DECIMAL(10,4),
created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Best Practices:
Common Issues and Solutions:
Issue: Character encoding problems
From compound names to standardized database:
# Step 1: Convert single compound
python scripts/main.py --name aspirin
# Step 2: Validate SMILES
python scripts/main.py --smiles "CC(=O)Oc1ccccc1C(=O)O" --validate
# Step 3: Convert IUPAC to SMILES
python scripts/main.py --iupac "ethanol"
# Step 4: List available compounds
python scripts/main.py --listPython API Usage:
from scripts.main import ChemicalStructureConverter
import pandas as pd
def process_compound_library(
compound_list: list,
output_file: str = "compound_library.csv"
) -> pd.DataFrame:
"""
Process compound library for cheminformatics analysis.
Args:
compound_list: List of compound names
output_file: Output CSV filename
Returns:
DataFrame with standardized compound data
"""
converter = ChemicalStructureConverter()
records = []
not_found = []
print("Processing compound library...")
print("="*60)
for compound in compound_list:
data = converter.name_to_identifiers(compound)
if data:
records.append({
'name': compound,
'iupac': data['iupac'],
'smiles': data['smiles'],
'formula': data['formula'],
'mw': data['mw']
})
print(f"✅ {compound}")
else:
not_found.append(compound)
print(f"❌ {compound} - not found")
print("="*60)
# Create DataFrame
df = pd.DataFrame(records)
# Export to CSV
df.to_csv(output_file, index=False)
print(f"\nExported {len(df)} compounds to {output_file}")
if not_found:
print(f"\n⚠️ {len(not_found)} compounds not found:")
for comp in not_found:
print(f" - {comp}")
return df
# Process library
library = ["aspirin", "caffeine", "glucose", "ethanol", "unknown_drug"]
df = process_compound_library(library, "my_library.csv")
print("\nLibrary Summary:")
print(f"Total compounds: {len(df)}")
print(f"Average MW: {df['mw'].mean():.2f} g/mol")
print(f"MW range: {df['mw'].min():.2f} - {df['mw'].max():.2f} g/mol")Expected Output Files:
chemical_data/
├── compound_library.csv # Standardized compound data
├── missing_compounds.txt # List of compounds not found
├── database_import.json # JSON format for database import
└── validation_report.txt # SMILES validation resultsScenario: Converting compound names from publications to SMILES for database entry.
{
"task": "literature_to_database",
"source": "Journal article compound list",
"input_format": "Common names and IUPAC",
"output_format": "SMILES for database",
"volume": "50 compounds",
"quality_check": "Validate all SMILES"
}Workflow:
Output Example:
Literature Conversion Results:
Total compounds: 50
Successfully converted: 47 (94%)
Manual review needed: 3
- Compound_23: ambiguous name
- Compound_31: salt form unclear
- Compound_45: stereochemistry unspecified
Database ready: 47 compounds exportedScenario: Preparing compound library for virtual screening pipeline.
{
"task": "virtual_screening_prep",
"library_size": "10,000 compounds",
"source_formats": ["SDF", "SMILES", "MOL"],
"target_format": "Canonical SMILES",
"requirements": [
"Validate all structures",
"Remove duplicates",
"Calculate properties",
"Flag reactive groups"
]
}Workflow:
Output Example:
Virtual Screening Library Preparation:
Input: 10,000 compounds
After validation: 9,847 (153 invalid SMILES removed)
After deduplication: 9,520 (327 duplicates removed)
Property Distribution:
MW range: 150-650 Da
Average MW: 387.5 Da
MW < 500: 8,234 compounds (86%)
Ready for docking: 9,520 compoundsScenario: Extracting and standardizing compounds from patent text.
{
"task": "patent_extraction",
"source": "US Patent with IUPAC names",
"compounds": "25 specific compounds",
"challenge": "Complex IUPAC names",
"output": "SMILES for SAR analysis"
}Workflow:
Output Example:
Patent Compound Extraction:
Patent: US10,XXX,XXX
Compounds extracted: 25
Successfully converted: 22 (88%)
Novel compounds identified: 3
- Compound A: New scaffold
- Compound B: Known scaffold, new substitution
- Compound C: Prodrug of known compound
SAR Table Generated: 22 compounds × 5 propertiesScenario: Standardizing existing chemical inventory with mixed naming.
{
"task": "inventory_cleanup",
"current_state": "Mixed naming conventions",
"compounds": "500 chemicals",
"issues": [
"Inconsistent naming",
"Missing SMILES",
"Duplicate entries"
]
}Workflow:
Output Example:
Inventory Cleanup Results:
Original entries: 500
Unique compounds: 487 (13 duplicates removed)
Standardization:
- Common names standardized: 487
- SMILES added: 423
- IUPAC names added: 487
- MW calculated: 487
Data Quality Improvement:
Completeness: 65% → 100%
Consistency: 40% → 98%Pre-Conversion:
During Conversion:
Post-Conversion:
Database Import:
Input Data Issues:
❌ Ambiguous names → Multiple compounds match name
❌ Mixtures and salts → Complex structures unclear
❌ Stereochemistry omitted → Racemic vs pure unclear
❌ Hydrates vs anhydrous → Different molecular weights
Conversion Errors:
❌ Invalid SMILES → Unbalanced parentheses or brackets
❌ Loss of stereochemistry → Chiral centers become racemic
❌ Tautomeric ambiguity → Keto/enol forms differ
❌ Aromaticity errors → Kekulé vs aromatic forms
Database Issues:
❌ Duplicate entries → Same compound multiple times
❌ Character encoding → Special characters corrupted
❌ Missing fields → Required data not populated
❌ Inconsistent formatting → Mixed naming conventions
Problem: Compound not found in database
Problem: SMILES validation fails
Problem: Stereochemistry lost in conversion
Problem: Multiple SMILES for same compound
Problem: Molecular weight mismatch
Available in references/ directory:
External Resources:
Located in scripts/ directory:
main.py - Chemical structure conversion and validation engineSMILES Notation:
C = aliphatic carbonc = aromatic carbon= = double bond# = triple bond() = branching[] = explicit valence/charge@ = anticlockwise (S)@@ = clockwise (R)IUPAC Naming:
Molecular Formula (Hill System):
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--name, -n | string | - | No | Compound name |
--smiles, -s | string | - | No | SMILES string |
--iupac, -i | string | - | No | IUPAC name |
--validate | flag | - | No | Validate SMILES syntax |
--list, -l | flag | - | No | List available compounds |
# Convert by compound name
python scripts/main.py --name aspirin
# Convert SMILES to IUPAC
python scripts/main.py --smiles "CC(=O)Oc1ccccc1C(=O)O"
# Validate SMILES
python scripts/main.py --smiles "CCO" --validate
# List all compounds
python scripts/main.py --list| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python script executed locally | Low |
| Network Access | No external API calls | Low |
| File System Access | No file access | Low |
| Data Exposure | No sensitive data | Low |
# Python 3.7+
# No additional packages required (uses standard library)Last Updated: 2026-02-09
Skill ID: 185
Version: 2.0 (K-Dense Standard)
© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in skills/chemical-structure-converter of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Chemical Structure Converter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Chemical Structure Converter this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~7k | Automated safety check: Notes | MIT | |
| MolecodeAtomFlow-AI/MoleCode | 306 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Drug DiscoveryTommy-yw/RunbookHermes | 546 | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| DiffDock Molecular DockingK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3k | Automated safety check: Notes | MIT | |
| Biomedical Analysis Dispatchxjtulyc/MedgeClaw | 617 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Biopipelineslocbp-uzh/biopipelines | 109 | — | ~2.4k | Automated safety check: Pass | MIT |
AtomFlow-AI/MoleCode
A skill your agent uses for deterministic molecule understanding, graph-level editing, generation, and validation with MoleCode — an explicit Mermaid graph in which every atom and bond is a typed…
Tommy-yw/RunbookHermes
Pharmaceutical research assistant for drug discovery workflows.
K-Dense-AI/scientific-agent-skills
Predicts how small molecules bind to a protein with DiffDock, covering batch docking, pose ranking by confidence and checks on the results; not for binding affinity.
xjtulyc/MedgeClaw
Routes bioinformatics, drug discovery, clinical and multi-omics tasks from a chat interface to Claude Code sessions running K-Dense scientific skills, with a live dashboard per task.
locbp-uzh/biopipelines
Design and run computational protein and ligand workflows on a GPU: binder and enzyme design, de novo backbone generation, inverse folding and sequence redesign, structure prediction, protein-ligand…
wu-yc/LabClaw
Retrieves chemical compound information from PubChem and ChEMBL with disambiguation, cross-referencing, and quality assessment.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Categories
Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds. Chemical Structure Converter is an agent skill from LeoYeAI/openclaw-master-skills. Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds.
Chemical Structure Converter fits situations like: tasks that involve Drug discovery and cheminformatics.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a claude-code`. Or copy the skill folder (skills/chemical-structure-converter in LeoYeAI/openclaw-master-skills) into .claude/skills/chemical-structure-converter in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a codex`. Or copy the skill folder (skills/chemical-structure-converter in LeoYeAI/openclaw-master-skills) into .agents/skills/chemical-structure-converter in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/chemical-structure-converter, .gemini/skills/chemical-structure-converter, .github/skills/chemical-structure-converter and .opencode/skills/chemical-structure-converter in your project.
Going by SKILL.md and its folder, Chemical Structure Converter needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Bash, Edit.
SKILL.md names 5 domains. As links in the text: pubchem.ncbi.nlm.nih.gov, chemspider.com, opensmiles.org, inchi-trust.org and rdkit.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Chemical Structure Converter is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 7k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Chemical Structure Converter: Molecode (AtomFlow-AI/MoleCode, 306 stars), Drug Discovery (Tommy-yw/RunbookHermes, 546 stars), DiffDock Molecular Docking (K-Dense-AI/scientific-agent-skills, 48k stars) and Biomedical Analysis Dispatch (xjtulyc/MedgeClaw, 617 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.