Agent skill

Chemical Structure Converter

by LeoYeAI in LeoYeAI/openclaw-master-skills

Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds.

MITAuto-check: notesResearch & Science

Install Chemical Structure Converter

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill chemical-structure-converter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills chemical-structure-converter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
chemical-structure-converter
GitHub stars
2.2k
Token cost
~7k tokens
SKILL.md length
1,841 words
Files
3 (incl. scripts)
Skills in repo
1,235
Repo updated
First seen
Licence
MIT

At a glance

Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds.

  • Works in 6 steps: Multi-Format Chemical Identifier… → SMILES String Validation → Batch Structure Processing → …
  • Tasks that involve Drug discovery and cheminformatics
  • SKILL.md covers When to Use, Integration with Other Skills, Core Capabilities and Complete Workflow Example, plus 13 more sections
  • Runs Python scripts from its folder; calls python

What it does

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.

When your agent uses it

  • Tasks that involve Drug discovery and cheminformatics

Example prompts

  • “/chemical-structure-converter”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Write, Bash, Edit

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Multi-Format Chemical Identifier Conversion
  2. SMILES String Validation
  3. Batch Structure Processing
  4. Molecular Formula and Properties
  5. Structure Standardization
  6. Chemical Database Integration

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash
    • Edit

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • pubchem.ncbi.nlm.nih.gov
    • chemspider.com
    • opensmiles.org
    • inchi-trust.org
    • rdkit.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~7k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash, Edit

Automated 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.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,841 words, ~6,984 tokens.

Download SKILL.mdSave it as .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.
name
chemical-structure-converter
description
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.
allowed-tools
Read, Write, Bash, Edit
license
MIT
metadata.skill-author
AIPOCH

Chemical Structure Converter

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:

  • Multi-Format Conversion: Convert between IUPAC names, SMILES, InChI, and molecular formulas
  • SMILES Validation: Validate SMILES syntax for structural correctness
  • Batch Processing: Process multiple compounds for database standardization
  • Identifier Lookup: Retrieve all available identifiers for known compounds
  • Structure Standardization: Normalize chemical representations for consistency

When to Use

✅ Use this skill when:

  • Standardizing chemical databases with mixed naming conventions
  • Preparing compound libraries for virtual screening or cheminformatics analysis
  • Converting structures from publications (IUPAC names) to machine-readable formats (SMILES)
  • Validating SMILES strings before using in computational chemistry tools
  • Registering new compounds in chemical inventory systems
  • Matching compounds across different databases with different identifier types
  • Creating structure-activity relationship (SAR) tables with consistent formatting

❌ Do NOT use when:

  • Needing 3D structure generation or conformer search → Use molecular modeling software (RDKit, OpenBabel)
  • Performing quantum chemistry calculations → Use Gaussian, ORCA, or similar packages
  • Working with reaction schemes or multi-step synthesis → Use reaction planning tools
  • Requiring patent structure searching → Use specialized patent databases (SciFinder, STN)
  • Converting biological sequences (DNA, protein) → Use bioinformatics tools
  • Needing spectral data prediction (NMR, MS) → Use specialized prediction software

Related Skills:

  • 上游 (Upstream): chemical-storage-sorter, adme-property-predictor
  • 下游 (Downstream): molecular-docking-predictor, bio-ontology-mapper

Integration with Other Skills

Upstream Skills:

  • chemical-storage-sorter: Classify chemicals by hazard group before storage registration
  • adme-property-predictor: Convert structures to standardized formats before ADME prediction
  • safety-data-sheet-reader: Extract chemical names from SDS for structure lookup

Downstream Skills:

  • molecular-docking-predictor: Convert compound libraries to 3D structures for docking
  • bio-ontology-mapper: Map chemical structures to standardized ontologies (ChEBI, PubChem)
  • lab-inventory-tracker: Register standardized chemical identifiers in inventory

Complete Workflow:

Literature/Patent → chemical-structure-converter → adme-property-predictor → molecular-docking-predictor → Hit Selection

Core Capabilities

1. Multi-Format Chemical Identifier Conversion

Convert chemical structures between different representation formats for database interoperability.

python
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/mol

Supported Conversions:

From → ToMethodUse Case
Name → SMILESDatabase lookupLiterature to database
SMILES → IUPACStructure recognitionMachine to human readable
IUPAC → SMILESName parsingChemical registration
SMILES → FormulaAtom countingQuick MW calculation

Best Practices:

  • ✅ Use canonical SMILES for database storage (ensures uniqueness)
  • ✅ Validate conversions with known reference compounds
  • ✅ Preserve stereochemistry during conversions (use @/@@ in SMILES)
  • ✅ Check tautomeric forms - different representations may exist

Common Issues and Solutions:

Issue: Compound not in local database

  • Symptom: Returns "Unknown structure" for valid compounds
  • Solution: Use external databases (PubChem, ChemSpider APIs) for lookup; add common compounds to local database

Issue: Multiple valid SMILES for same compound

  • Symptom: Different SMILES strings represent same molecule
  • Solution: Use canonical SMILES generation (requires RDKit or similar)
2. SMILES String Validation

Validate SMILES syntax to ensure structural integrity before computational processing.

python
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 error

Validation Checks:

CheckDescriptionExample Error
ParenthesesMatching ( and )C(=O - missing closing
BracketsMatching [ and ][Na+ - missing closing
Ring closuresMatching digitsC1CC - ring not closed
Atom validityRecognized elements@ - invalid character
ValenceChemical validityC(C)(C)(C)(C)C - 5 bonds to C

Best Practices:

  • ✅ Always validate SMILES before using in downstream tools
  • ✅ Check for aromaticity (lowercase c,n,o in SMILES)
  • ✅ Verify stereochemistry (@ symbols for chirality)
  • ✅ Use explicit hydrogens when ambiguity exists

Common Issues and Solutions:

Issue: Valid syntax but chemically impossible

  • Symptom: SMILES passes validation but structure is unrealistic
  • Solution: Use chemical validation tools (RDKit SanitizeMol) for deeper checks

Issue: Tautomeric ambiguity

  • Symptom: Keto/enol forms represented differently
  • Solution: Use tautomer canonicalization if consistency required
3. Batch Structure Processing

Process multiple chemical structures simultaneously for database standardization.

python
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:

  • ✅ Process in batches of 100-1000 for large databases
  • ✅ Log missing compounds for manual review
  • ✅ Export to CSV for Excel/chemoinformatics tools
  • ✅ Include CAS numbers when available for verification

Common Issues and Solutions:

Issue: Synonym confusion

  • Symptom: Same compound listed multiple times with different names
  • Solution: Use SMILES as unique key; deduplicate by structure

Issue: Mixture or salt forms

  • Symptom: Structures with counterions or multiple components
  • Solution: Process main component; flag mixtures for special handling
4. Molecular Formula and Properties

Extract molecular formulas and calculate basic properties from SMILES or names.

python
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:

PropertyCalculationUse Case
Molecular WeightSum of atomic weightsDosing, filtering
Heavy AtomsNon-hydrogen atomsSize estimation
FormulaAtom count from structureDatabase indexing
Rotatable BondsCount rotatable bondsFlexibility index

Best Practices:

  • ✅ Include salt forms in MW calculation if relevant
  • ✅ Check isotopic labeling for specialized applications
  • ✅ Calculate elemental composition for combustion analysis
  • ✅ Use exact mass for mass spectrometry applications

Common Issues and Solutions:

Issue: Hydrates and solvates

  • Symptom: Different MW for hydrate vs anhydrous forms
  • Solution: Always specify form (e.g., "caffeine anhydrous")
5. Structure Standardization

Standardize chemical representations for database consistency.

python
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:

RuleStandard FormExample
Common namesLowercase"aspirin" not "Aspirin"
IUPACFull systematic name"2-acetoxybenzoic acid"
SMILESCanonicalNo stereochemistry if unspecified
FormulaHill systemC, H, then alphabetical

Best Practices:

  • ✅ Use consistent naming across entire database
  • ✅ Include CAS numbers when available
  • ✅ Track version history of structure assignments
  • ✅ Validate against PubChem for known compounds

Common Issues and Solutions:

Issue: Multiple valid representations

  • Symptom: Same compound has different standard forms
  • Solution: Define canonicalization rules; use chemical validation
6. Chemical Database Integration

Prepare chemical data for import into cheminformatics databases.

python
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:

sql
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:

  • ✅ Use unique compound IDs for internal tracking
  • ✅ Index SMILES column for substructure searching
  • ✅ Include source information for data provenance
  • ✅ Validate before import to prevent duplicates

Common Issues and Solutions:

Issue: Character encoding problems

  • Symptom: Special characters in IUPAC names corrupted
  • Solution: Use UTF-8 encoding; escape special characters

Complete Workflow Example

From compound names to standardized database:

bash
# 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 --list

Python API Usage:

python
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 results

Common Patterns

Pattern 1: Literature to Database Conversion

Scenario: Converting compound names from publications to SMILES for database entry.

json
{
  "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:

  1. Extract compound names from publication
  2. Look up each compound in converter
  3. Validate generated SMILES
  4. Check for missing compounds
  5. Manual lookup for missing entries
  6. Export to database import format
  7. Review and correct any errors

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 exported
Pattern 2: Cheminformatics Pipeline Preparation

Scenario: Preparing compound library for virtual screening pipeline.

json
{
  "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:

  1. Load compound library from various sources
  2. Convert all to SMILES format
  3. Validate SMILES syntax
  4. Remove duplicates by canonical SMILES
  5. Calculate molecular properties (MW, formula)
  6. Filter by drug-like properties if needed
  7. Export standardized library

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 compounds
Pattern 3: Patent Compound Extraction

Scenario: Extracting and standardizing compounds from patent text.

json
{
  "task": "patent_extraction",
  "source": "US Patent with IUPAC names",
  "compounds": "25 specific compounds",
  "challenge": "Complex IUPAC names",
  "output": "SMILES for SAR analysis"
}

Workflow:

  1. Extract IUPAC names from patent text
  2. Parse names using converter
  3. Generate SMILES for each
  4. Validate structures
  5. Create SAR table with consistent formatting
  6. Compare with known compounds
  7. Flag novel structures

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 properties
Pattern 4: Inventory Database Cleanup

Scenario: Standardizing existing chemical inventory with mixed naming.

json
{
  "task": "inventory_cleanup",
  "current_state": "Mixed naming conventions",
  "compounds": "500 chemicals",
  "issues": [
    "Inconsistent naming",
    "Missing SMILES",
    "Duplicate entries"
  ]
}

Workflow:

  1. Export current inventory to CSV
  2. Parse compound names
  3. Convert all to standard format
  4. Identify duplicates by SMILES
  5. Merge duplicate records
  6. Add missing SMILES
  7. Import cleaned data back

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%

Show full SKILL.md (721 more words)Show less

Quality Checklist

Pre-Conversion:

  • Verify compound names are spelled correctly
  • Check for stereochemical information (R/S, E/Z)
  • Note salt forms and hydrates
  • Identify any ambiguous or generic names
  • Prepare list of expected compounds for validation

During Conversion:

  • Validate all generated SMILES
  • Check stereochemistry preservation
  • Verify molecular formulas match expected
  • Confirm molecular weights reasonable
  • Flag any compounds not found in database

Post-Conversion:

  • Review all conversions for accuracy
  • Manually verify random sample (5-10%)
  • Check for duplicate structures
  • Validate unique compound IDs
  • Export in required format

Database Import:

  • Test import with small subset first
  • Verify foreign key constraints
  • Check character encoding (UTF-8)
  • Validate required fields populated
  • Create backup before bulk import

Common Pitfalls

Input Data Issues:

  • ❌ Ambiguous names → Multiple compounds match name

    • ✅ Use CAS numbers or specific synonyms
  • ❌ Mixtures and salts → Complex structures unclear

    • ✅ Specify components or use main active compound
  • ❌ Stereochemistry omitted → Racemic vs pure unclear

    • ✅ Specify stereochemistry explicitly
  • ❌ Hydrates vs anhydrous → Different molecular weights

    • ✅ Always specify form in compound name

Conversion Errors:

  • ❌ Invalid SMILES → Unbalanced parentheses or brackets

    • ✅ Always validate SMILES after generation
  • ❌ Loss of stereochemistry → Chiral centers become racemic

    • ✅ Check @ symbols preserved in SMILES
  • ❌ Tautomeric ambiguity → Keto/enol forms differ

    • ✅ Use canonical tautomers for consistency
  • ❌ Aromaticity errors → Kekulé vs aromatic forms

    • ✅ Use consistent aromatic representation

Database Issues:

  • ❌ Duplicate entries → Same compound multiple times

    • ✅ Deduplicate by canonical SMILES
  • ❌ Character encoding → Special characters corrupted

    • ✅ Use UTF-8 encoding throughout
  • ❌ Missing fields → Required data not populated

    • ✅ Validate all required fields present
  • ❌ Inconsistent formatting → Mixed naming conventions

    • ✅ Apply standardization rules uniformly

Troubleshooting

Problem: Compound not found in database

  • Symptoms: Returns None for valid compound name
  • Causes:
    • Database limited to common compounds
    • Name variation not recognized
    • Very new or obscure compound
  • Solutions:
    • Try alternative names or synonyms
    • Use external database (PubChem API)
    • Manually create entry for novel compounds

Problem: SMILES validation fails

  • Symptoms: Valid-looking SMILES rejected
  • Causes:
    • Unbalanced brackets/parentheses
    • Invalid atom symbols
    • Ring closure errors
  • Solutions:
    • Check for typos in SMILES
    • Use SMILES visualization tool to debug
    • Generate SMILES from structure drawing

Problem: Stereochemistry lost in conversion

  • Symptoms: Chiral compound becomes achiral
  • Causes:
    • Stereochemistry not specified in input
    • Conversion tool ignores stereochemistry
    • Wrong SMILES format used
  • Solutions:
    • Use isomeric SMILES with @ symbols
    • Check input has stereochemical info
    • Use tools that preserve stereochemistry

Problem: Multiple SMILES for same compound

  • Symptoms: Same compound has different SMILES strings
  • Causes:
    • Different tautomeric forms
    • Different aromatic representations
    • Different starting atoms
  • Solutions:
    • Use canonical SMILES generation
    • Normalize tautomers
    • Use InChI for unique identification

Problem: Molecular weight mismatch

  • Symptoms: Calculated MW differs from expected
  • Causes:
    • Salt form included/excluded
    • Isotopic composition different
    • Hydrate form
  • Solutions:
    • Specify exact compound form
    • Check formula calculation
    • Use exact mass for precision work

References

Available in references/ directory:

  • (No reference files currently available for this skill)

External Resources:


Scripts

Located in scripts/ directory:

  • main.py - Chemical structure conversion and validation engine

Chemical Identifier Quick Reference

SMILES Notation:

  • C = aliphatic carbon
  • c = aromatic carbon
  • = = double bond
  • # = triple bond
  • () = branching
  • [] = explicit valence/charge
  • @ = anticlockwise (S)
  • @@ = clockwise (R)

IUPAC Naming:

  • Use systematic nomenclature
  • Specify stereochemistry (R/S, E/Z)
  • Include salt forms when relevant
  • Indicate hydration state

Molecular Formula (Hill System):

  • C first, then H, then alphabetical
  • Example: C6H12O6 (glucose)

Parameters

ParameterTypeDefaultRequiredDescription
--name, -nstring-NoCompound name
--smiles, -sstring-NoSMILES string
--iupac, -istring-NoIUPAC name
--validateflag-NoValidate SMILES syntax
--list, -lflag-NoList available compounds

Usage

Basic Usage
bash
# 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 Assessment

Risk IndicatorAssessmentLevel
Code ExecutionPython script executed locallyLow
Network AccessNo external API callsLow
File System AccessNo file accessLow
Data ExposureNo sensitive dataLow

Security Checklist

  • No hardcoded credentials or API keys
  • No file system access
  • Input validation for chemical identifiers
  • Output does not expose sensitive information
  • Error messages sanitized
  • Script execution in sandboxed environment

Prerequisites

bash
# Python 3.7+
# No additional packages required (uses standard library)

Evaluation Criteria

Success Metrics
  • Successfully converts between chemical formats
  • Validates SMILES syntax
  • Retrieves compound information by name
  • Lists available compounds
Test Cases
  1. Name Lookup: Aspirin → Returns SMILES, IUPAC, formula
  2. SMILES Conversion: Valid SMILES → IUPAC name
  3. Validation: Invalid SMILES → Error message

Lifecycle Status

  • Current Stage: Active
  • Next Review Date: 2026-03-09
  • Known Issues: Limited compound database (mock data)
  • Planned Improvements:
    • Integrate with PubChem API
    • Add 2D/3D structure generation
    • Expand compound database

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

Files

SKILL.md and 2 other files (scripts) in skills/chemical-structure-converter of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • _meta.json
  • scripts/main.py

Open the folder on GitHubat commit e5199b5

Compare with similar skills

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.

Chemical Structure Converter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Chemical Structure Converter this skillLeoYeAI/openclaw-master-skills2.2k—~7kAutomated safety check: NotesMIT
MolecodeAtomFlow-AI/MoleCode306—~1.9kAutomated safety check: PassMIT
Drug DiscoveryTommy-yw/RunbookHermes5461 repos~2.3kAutomated safety check: PassMIT
DiffDock Molecular DockingK-Dense-AI/scientific-agent-skills48k1 repos~3kAutomated safety check: NotesMIT
Biomedical Analysis Dispatchxjtulyc/MedgeClaw6171 repos~2kAutomated safety check: PassNone
Biopipelineslocbp-uzh/biopipelines109—~2.4kAutomated safety check: PassMIT

Similar skills

  • 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…

    306 GitHub stars~1.9k tokensUpdated 4 mo ago
    Research & ScienceAuto-check passed
  • Drug Discovery

    Tommy-yw/RunbookHermes

    Pharmaceutical research assistant for drug discovery workflows.

    546 GitHub starsUsed in 1 repo~2.3k tokens
    Research & ScienceAuto-check passed
  • DiffDock Molecular Docking

    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.

    48k GitHub starsUsed in 1 repo~3k tokens
    Research & ScienceAuto-check: notes
  • 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.

    617 GitHub starsUsed in 1 repo~2k tokens
    Research & ScienceAuto-check passed
  • Biopipelines

    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…

    109 GitHub stars~2.4k tokensUpdated 10 days ago
    Research & ScienceAuto-check passed
  • Retrieves chemical compound information from PubChem and ChEMBL with disambiguation, cross-referencing, and quality assessment.

    1.1k GitHub starsUsed in 2 repos~2.3k tokens
    Research & ScienceAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,200 skills in this repo
  • DevOps Pipeline Management

    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.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    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.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    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.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    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.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    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.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    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.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Chemical Structure Converter

What does Chemical Structure Converter do?

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.

When should I use Chemical Structure Converter?

Chemical Structure Converter fits situations like: tasks that involve Drug discovery and cheminformatics.

How do I install Chemical Structure Converter in Claude Code?

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.

How do I install Chemical Structure Converter in Codex?

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.

Can I use Chemical Structure Converter in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Chemical Structure Converter need to run?

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.

Does Chemical Structure Converter access the network?

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.

Is Chemical Structure Converter safe to install?

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.

What licence does Chemical Structure Converter use?

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.

How many tokens does Chemical Structure Converter use?

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.

What are the alternatives to Chemical Structure Converter?

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.

Who maintains Chemical Structure Converter?

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.