Medicinal chemistry filters for compound triage. An agent skill from jaechang-hits/SciAgent-Skills.

Apache-2.0Auto-check passedResearch & Science

Install Medchem

skills CLI
$ npx skills add jaechang-hits/SciAgent-Skills --skill medchem -a claude-code

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

GitHub CLI
$ gh skill install jaechang-hits/SciAgent-Skills medchem --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/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/structural-biology-drug-discovery/medchem .claude/skills/medchem && 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
medchem
GitHub stars
374
Token cost
~4.4k tokens
SKILL.md length
1,002 words
Files
2 (incl. references)
Skills in repo
169
Repo updated
First seen
Licence
Apache-2.0

At a glance

Medicinal chemistry filters for compound triage. An agent skill from jaechang-hits/SciAgent-Skills.

  • Works in 8 steps: Drug-Likeness Rules → Structural Alert Filters → Chemical Groups → …
  • Tasks that involve Drug discovery and cheminformatics
  • SKILL.md covers Overview, When to Use, Prerequisites and Quick Start, plus 8 more sections
  • Calls pip

What it does

Medchem is an agent skill from jaechang-hits/SciAgent-Skills. Medicinal chemistry filters for compound triage. Drug-likeness rules (Lipinski Ro5, Veber, Oprea, CNS, leadlike, REOS, Golden Triangle, Ro3), structural alerts (PAINS, NIBR, Lilly Demerits), chemical group detectors, complexity metrics, and filter composition query language. Built on RDKit/datamol. For hit-to-lead filtering, library design, ADMET pre-screening. For molecular I/O use rdkit-cheminformatics or datamol.

Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/rules_catalog.md`).

It sits in Research & Science, covering Drug discovery and cheminformatics. It works with RDKit. The repository describes itself as: 197 bioinformatics & life science skills for Claude Code and AI agents — BixBench 92.0% accuracy. RNA-seq, single-cell, drug discovery, proteomics, and more. Powers OmicsHorizon. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Drug discovery and cheminformatics

Example prompts

  • “/medchem”

Requirements

  • Python 3

Workflow steps

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

  1. Drug-Likeness Rules
  2. Structural Alert Filters
  3. Chemical Groups
  4. Named Catalogs
  5. Molecular Complexity
  6. Property Constraints
  7. Query Language
  8. Functional API & Utilities

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

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

    • medchem-docs.datamol.io
    • github.com

    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

Medchem loads about 4.4k tokens when it runs, and up to ~6.2k if it reads all its reference files. Until then it costs about 107 tokens; SKILL.md has 1,002 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~107
When it runs · the whole SKILL.md, loaded when a task matches
~4.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.2k

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 passed

The automated check found no risky patterns in SKILL.md.

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from jaechang-hits/SciAgent-Skills at commit 82c862c, republished under its Apache-2.0 licence (© jaechang-hits). 1,002 words, ~4,423 tokens.

Download SKILL.mdSave it as .claude/skills/medchem/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
medchem
description
Medicinal chemistry filters for compound triage. Drug-likeness rules (Lipinski Ro5, Veber, Oprea, CNS, leadlike, REOS, Golden Triangle, Ro3), structural alerts (PAINS, NIBR, Lilly Demerits), chemical group detectors, complexity metrics, and filter composition query language. Built on RDKit/datamol. For hit-to-lead filtering, library design, ADMET pre-screening. For molecular I/O use rdkit-cheminformatics or datamol.
license
Apache-2.0

Medchem

Overview

Medchem is a Python library for molecular filtering and prioritization in drug discovery. It provides hundreds of established medicinal chemistry rules, structural alerts, and chemical group detectors to triage compound libraries at scale. All filters support parallel execution and return structured results.

When to Use

  • Applying drug-likeness rules (Lipinski, Veber, Oprea, CNS, REOS) to compound libraries
  • Filtering molecules by structural alerts (PAINS, NIBR, Lilly Demerits)
  • Detecting specific chemical groups (hinge binders, Michael acceptors, reactive groups)
  • Calculating molecular complexity metrics (Bertz, Whitlock, Barone)
  • Applying custom property constraints (MW, LogP, TPSA, rotatable bonds)
  • Composing complex multi-rule filter queries with Boolean logic
  • For SMILES/SDF parsing, descriptors, and fingerprints use rdkit-cheminformatics
  • For high-level molecular manipulation use datamol-cheminformatics

Prerequisites

bash
pip install medchem datamol

Medchem depends on RDKit and datamol. All molecule inputs are RDKit Chem.Mol objects; use datamol.to_mol() to convert from SMILES.

Quick Start

python
import datamol as dm
import medchem as mc

# Convert SMILES to molecules
smiles_list = ["CC(=O)OC1=CC=CC=C1C(=O)O", "c1ccccc1N", "O=C(O)c1ccccc1"]
mols = [dm.to_mol(s) for s in smiles_list]

# Apply Rule of Five + structural alerts in one pass
rule_filter = mc.rules.RuleFilters(rule_list=["rule_of_five"])
alert_filter = mc.structural.CommonAlertsFilters()

rule_results = rule_filter(mols=mols, n_jobs=-1)
alert_results = alert_filter(mols=mols, n_jobs=-1)

print(f"Rule results: {rule_results}")
print(f"Alert results: {[r['has_alerts'] for r in alert_results]}")

Core API

1. Drug-Likeness Rules

Apply established medicinal chemistry rules via mc.rules. Individual rules return bool; RuleFilters applies multiple rules in batch.

python
import medchem as mc

# Single rule on a SMILES string
passes = mc.rules.basic_rules.rule_of_five("CC(=O)OC1=CC=CC=C1C(=O)O")
print(f"Passes Ro5: {passes}")  # True

# Available individual rules:
# rule_of_five, rule_of_three, rule_of_oprea, rule_of_cns,
# rule_of_leadlike_soft, rule_of_leadlike_strict, rule_of_veber,
# rule_of_reos, rule_of_drug, golden_triangle, pains_filter
python
import datamol as dm
import medchem as mc

# Batch application with RuleFilters
mols = [dm.to_mol(s) for s in smiles_list]
rfilter = mc.rules.RuleFilters(
    rule_list=["rule_of_five", "rule_of_oprea", "rule_of_cns"]
)
results = rfilter(mols=mols, n_jobs=-1, progress=True)
# Returns list of dicts: [{"rule_of_five": True, "rule_of_oprea": False, ...}, ...]
print(f"First molecule: {results[0]}")
2. Structural Alert Filters

Detect problematic structural patterns via mc.structural. Three filter sets cover different scope and stringency.

python
import datamol as dm
import medchem as mc

mol = dm.to_mol("c1ccc(N)cc1")
mols = [dm.to_mol(s) for s in smiles_list]

# Common Alerts — general structural alerts from ChEMBL / literature
alert_filter = mc.structural.CommonAlertsFilters()
has_alerts, details = alert_filter.check_mol(mol)  # single molecule
batch_results = alert_filter(mols=mols, n_jobs=-1, progress=True)
# Each result: {"has_alerts": bool, "alert_details": [...], "num_alerts": int}
print(f"Alerts: {batch_results[0]}")
python
import medchem as mc

# NIBR Filters — Novartis industrial filter set (returns bool list)
nibr_filter = mc.structural.NIBRFilters()
nibr_results = nibr_filter(mols=mols, n_jobs=-1)
print(f"NIBR pass: {nibr_results}")  # [True, False, ...]

# Lilly Demerits — 275 patterns, molecules rejected at >100 demerits
lilly_filter = mc.structural.LillyDemeritsFilters()
lilly_results = lilly_filter(mols=mols, n_jobs=-1)
# Each result: {"demerits": int, "passes": bool, "matched_patterns": [...]}
print(f"Lilly: {lilly_results[0]}")
3. Chemical Groups

Detect specific functional group motifs via mc.groups.ChemicalGroup.

Predefined groups: hinge_binders, phosphate_binders, michael_acceptors, reactive_groups.

python
import medchem as mc

# Check for kinase hinge binders and Michael acceptors
group = mc.groups.ChemicalGroup(
    groups=["hinge_binders", "michael_acceptors"]
)

has_matches = group.has_match(mols)        # List[bool]
match_info = group.get_matches(mols[0])    # {group_name: [(atom_indices), ...]}
all_matches = group.get_all_matches(mols)  # List[Dict]
print(f"Has hinge binder: {has_matches}")

# Custom SMARTS patterns
custom = mc.groups.ChemicalGroup(
    groups=["reactive_groups"],
    custom_smarts={"trifluoromethyl_ketone": "[C;H0](=O)C(F)(F)F"}
)
4. Named Catalogs

Access curated chemical structure catalogs via mc.catalogs.

Available catalogs: functional_groups, protecting_groups, reagents, fragments.

python
import medchem as mc

catalog = mc.catalogs.NamedCatalogs.get("functional_groups")
matches = catalog.get_matches(mol)
print(f"Functional group matches: {matches}")
5. Molecular Complexity

Calculate synthetic accessibility proxies via mc.complexity.

Methods: bertz (topological), whitlock, barone.

python
import datamol as dm
import medchem as mc

mol = dm.to_mol("CC(=O)OC1=CC=CC=C1C(=O)O")

# Single molecule complexity
score = mc.complexity.calculate_complexity(mol, method="bertz")
print(f"Bertz complexity: {score:.1f}")

# Batch filtering by complexity threshold
cfilter = mc.complexity.ComplexityFilter(max_complexity=500, method="bertz")
results = cfilter(mols=mols, n_jobs=-1)
print(f"Passes complexity: {results}")  # List[bool]
6. Property Constraints

Apply custom property-based constraints via mc.constraints.Constraints.

python
import medchem as mc

constraints = mc.constraints.Constraints(
    mw_range=(200, 500),
    logp_range=(-2, 5),
    tpsa_max=140,
    rotatable_bonds_max=10,
    hbd_max=5,
    hba_max=10,
    rings_range=(1, 5),
    aromatic_rings_max=3,
)
results = constraints(mols=mols, n_jobs=-1)
# Each result: {"passes": bool, "violations": ["mw_range", ...]}
print(f"Violations: {results[0]}")
7. Query Language

Compose complex filter logic with Boolean expressions via mc.query.

python
import medchem as mc

# Parse a query combining rules, alerts, and property checks
query = mc.query.parse("rule_of_five AND NOT common_alerts")
results = query.apply(mols=mols, n_jobs=-1)  # List[bool]
print(f"Passing: {sum(results)}/{len(results)}")

# More complex queries
q2 = mc.query.parse("rule_of_cns AND complexity < 400")
q3 = mc.query.parse("(rule_of_five OR rule_of_oprea) AND NOT pains_filter")
q4 = mc.query.parse("mw > 200 AND mw < 500 AND logp < 5")
8. Functional API & Utilities

Shortcut functions in mc.functional and utilities in mc.utils.

python
import medchem as mc

# Functional API — one-liner filters
nibr_ok = mc.functional.nibr_filter(mols=mols, n_jobs=-1)    # List[bool]
alerts = mc.functional.common_alerts_filter(mols=mols, n_jobs=-1)
lilly = mc.functional.lilly_demerits_filter(mols=mols, n_jobs=-1)

# Utilities
standardized = mc.utils.standardize_mol(mol)  # sanitize, neutralize charges
batch_out = mc.utils.batch_process(
    mols=mols, func=mc.complexity.calculate_complexity,
    n_jobs=-1, progress=True, batch_size=100
)

Key Concepts

Rule Thresholds Quick Reference
RuleMWLogPHBDHBARotBondsTPSAOther
Ro5 (Lipinski)≤500≤5≤5≤10———
Veber————≤10≤140—
Oprea (lead)200-350-2 to 4——≤7—Rings ≤4
Leadlike Soft250-450-3 to 4——≤10——
Leadlike Strict200-350-2 to 3.5——≤7—Rings 1-3
CNS≤450-1 to 5≤2——≤90—
REOS200-500-5 to 50-50-10———
Ro3 (fragment)≤300≤3≤3≤3≤3≤60—
Golden Triangle200-50*LogP+400-2 to 5—————
Rule of DrugRo5 + Veber + no PAINS
Filter Selection by Discovery Stage
StageRecommended FiltersRationale
Initial screeningRo5, PAINS, Common AlertsBroad triage, remove obvious liabilities
Hit-to-leadOprea or Leadlike Soft, NIBR, LillyLead-like space, industrial filters
Lead optimizationRule of Drug, Leadlike Strict, ComplexityStrict drug-likeness + synthetic feasibility
CNS targetsRule of CNS, TPSA ≤90, HBD ≤2BBB permeability requirements
Fragment-basedRo3, low complexity (≤250)Fragments have "room to grow"
Rules Are Guidelines, Not Absolutes

~10% of marketed drugs violate Ro5. Exceptions are common for natural products, antibiotics, PROTACs, and prodrugs. Always combine rule-based filtering with domain expertise and target-class knowledge. Different modalities (oral, IV, topical) and target classes (kinases, GPCRs, ion channels) have distinct optimal property spaces.

Common Workflows

Workflow 1: Compound Library Triage

Full pipeline from raw SMILES to filtered drug-like candidates.

python
import pandas as pd
import datamol as dm
import medchem as mc

# Load compound library
df = pd.read_csv("compounds.csv")
mols = [dm.to_mol(s) for s in df["smiles"]]
print(f"Input: {len(mols)} molecules")

# Step 1: Drug-likeness rules
rfilter = mc.rules.RuleFilters(rule_list=["rule_of_five", "rule_of_veber"])
rule_results = rfilter(mols=mols, n_jobs=-1, progress=True)

# Step 2: Structural alerts
alert_filter = mc.structural.CommonAlertsFilters()
alert_results = alert_filter(mols=mols, n_jobs=-1, progress=True)

# Step 3: Combine results
df["passes_rules"] = [all(r.values()) for r in rule_results]
df["has_alerts"] = [r["has_alerts"] for r in alert_results]
df["drug_like"] = df["passes_rules"] & ~df["has_alerts"]

filtered = df[df["drug_like"]]
print(f"Output: {len(filtered)} drug-like molecules ({len(filtered)/len(df)*100:.1f}%)")
filtered.to_csv("filtered_compounds.csv", index=False)
Workflow 2: Lead Optimization Filter Cascade

Apply progressively stricter filters with detailed reporting.

python
import datamol as dm
import medchem as mc
import pandas as pd

mols = [dm.to_mol(s) for s in smiles_list]

# Cascade: rules → structural alerts → complexity → Lilly demerits
filters = [
    ("Leadlike Strict", mc.rules.RuleFilters(rule_list=["rule_of_leadlike_strict"])),
    ("NIBR Alerts", mc.structural.NIBRFilters()),
    ("Complexity ≤400", mc.complexity.ComplexityFilter(max_complexity=400)),
    ("Lilly Demerits", mc.structural.LillyDemeritsFilters()),
]

surviving = list(range(len(mols)))
for name, filt in filters:
    results = filt(mols=[mols[i] for i in surviving], n_jobs=-1)
    # Handle different result formats
    if isinstance(results[0], dict):
        passed = [i for i, r in zip(surviving, results)
                  if r.get("passes", not r.get("has_alerts", True))]
    else:
        passed = [i for i, r in zip(surviving, results) if r]
    print(f"{name}: {len(surviving)} → {len(passed)}")
    surviving = passed

print(f"Final candidates: {len(surviving)} / {len(mols)}")

Key Parameters

ParameterModuleDefaultRangeEffect
rule_listRuleFilters—See rules tableWhich drug-likeness rules to apply
n_jobsAll filters1-1 to NParallel workers (-1 = all cores)
progressAll filtersFalseboolShow progress bar
max_complexityComplexityFilter—0-1000+Bertz complexity threshold
methodcalculate_complexity"bertz"bertz/whitlock/baroneComplexity metric
mw_rangeConstraintsNonetuple(float, float)Molecular weight range (Da)
logp_rangeConstraintsNonetuple(float, float)LogP range
tpsa_maxConstraintsNone0-200+Max topological polar surface area
groupsChemicalGroup—list of namesPredefined chemical groups to detect
custom_smartsChemicalGroupNonedictCustom SMARTS patterns {name: SMARTS}
Show full SKILL.md (428 more words)Show less

Best Practices

  1. Start broad, then narrow: Apply permissive filters first (Ro5, PAINS), then progressively tighten (NIBR, Lilly, complexity) as the pipeline narrows the candidate set.

  2. Always use parallelization: For libraries >1000 molecules, set n_jobs=-1 to use all CPU cores.

  3. Combine rules with structural alerts: Rules check physicochemical properties; alerts check substructure patterns. Both are needed for robust triage.

  4. Anti-pattern — blind filtering: Do not blindly reject everything that fails Ro5. Consider the target class and modality before filtering.

  5. Anti-pattern — ignoring prodrugs: Prodrugs intentionally violate standard rules. Flag them as exceptions rather than filtering them out.

  6. Document filtering decisions: Track which molecules were removed and why for reproducibility and regulatory compliance.

  7. Validate with known actives: Run your filter cascade on known active compounds for your target to estimate false-positive rate.

Common Recipes

Recipe: DataFrame Integration
python
import pandas as pd
import datamol as dm
import medchem as mc

df = pd.read_csv("molecules.csv")
df["mol"] = df["smiles"].apply(dm.to_mol)

rfilter = mc.rules.RuleFilters(rule_list=["rule_of_five", "rule_of_cns"])
results = rfilter(mols=df["mol"].tolist(), n_jobs=-1)

df["passes_ro5"] = [r["rule_of_five"] for r in results]
df["passes_cns"] = [r["rule_of_cns"] for r in results]
filtered = df[df["passes_ro5"] & df["passes_cns"]]
print(f"CNS drug-like: {len(filtered)}")
Recipe: Combining with ML Scoring
python
import medchem as mc

# Rule-based pre-filter
rule_results = mc.rules.RuleFilters(rule_list=["rule_of_five"])(mols, n_jobs=-1)
filtered_mols = [mol for mol, r in zip(mols, rule_results) if r["rule_of_five"]]

# ML model scoring on filtered set (reduces compute cost)
ml_scores = ml_model.predict(filtered_mols)
candidates = [mol for mol, score in zip(filtered_mols, ml_scores) if score > 0.8]
print(f"ML-scored candidates: {len(candidates)}")
Recipe: Custom SMARTS Group Screening
python
import medchem as mc

# Define project-specific warheads for covalent inhibitor screening
custom_warheads = {
    "acrylamide": "[C;H1](=O)[CH]=[CH2]",
    "vinyl_sulfonamide": "[NH]S(=O)(=O)[CH]=[CH2]",
    "chloroacetamide": "ClCC(=O)N",
}

group = mc.groups.ChemicalGroup(groups=[], custom_smarts=custom_warheads)
has_warhead = group.has_match(mols)
warhead_mols = [mol for mol, match in zip(mols, has_warhead) if match]
print(f"Covalent warhead candidates: {len(warhead_mols)}")

Troubleshooting

ProblemCauseSolution
None in molecule listInvalid SMILES in inputPre-filter: mols = [m for m in mols if m is not None]
All molecules fail Ro5Library is fragment-like or PPI spaceUse rule_of_three or rule_of_leadlike_soft instead
No PAINS alerts foundMolecules are simple/fragment-likeExpected — PAINS patterns target screening-hit-size molecules
Lilly demerits all >100Highly functionalized moleculesCheck individual patterns; consider raising threshold or using NIBR instead
Slow processingLarge library without parallelizationSet n_jobs=-1 for parallel execution
ImportError: medchemMissing dependencypip install medchem datamol (requires RDKit)
Query parse errorInvalid query syntaxCheck operators: AND, OR, NOT, comparisons: <, >, ==
Inconsistent result formatsDifferent filter classes return different typesCheck docs: RuleFilters → dict, NIBRFilters → bool, LillyDemeritsFilters → dict

Bundled Resources

references/rules_catalog.md

Complete catalog of all medicinal chemistry rules and structural alert filters with literature references, threshold criteria, chemical group patterns, custom SMARTS examples, and stage-specific filter selection guidelines. API function signatures were consolidated into Core API code blocks above.

  • rdkit-cheminformatics — Low-level cheminformatics: SMILES/SDF parsing, descriptors, fingerprints, substructure search
  • datamol-cheminformatics — High-level molecular manipulation: standardization, scaffolds, fragmentation, 3D conformers
  • pubchem-compound-search — Database queries: retrieve compound properties and bioactivity data for validation

References

  • Lipinski CA et al. Adv Drug Deliv Rev (1997) 23:3-25 — Rule of Five
  • Veber DF et al. J Med Chem (2002) 45:2615-2623 — Veber rules
  • Oprea TI et al. J Chem Inf Comput Sci (2001) 41:1308-1315 — Lead-likeness
  • Baell JB & Holloway GA. J Med Chem (2010) 53:2719-2740 — PAINS filters
  • Congreve M et al. Drug Discov Today (2003) 8:876-877 — Rule of Three
  • Johnson TW et al. J Med Chem (2009) 52:5487-5500 — Golden Triangle
  • Walters WP & Murcko MA. Adv Drug Deliv Rev (2002) 54:255-271 — REOS
  • Official docs: https://medchem-docs.datamol.io/
  • GitHub: https://github.com/datamol-io/medchem

© jaechang-hits, Apache-2.0. 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 1 other file (references) in skills/structural-biology-drug-discovery/medchem of jaechang-hits/SciAgent-Skills.

  • SKILL.md
  • references/rules_catalog.md

Open the folder on GitHubat commit 82c862c

Compare with similar skills

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

Medchem compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Medchem this skilljaechang-hits/SciAgent-Skills374—~4.4kAutomated safety check: PassApache-2.0
DiffDock Molecular DockingK-Dense-AI/scientific-agent-skills48k1 repos~3kAutomated safety check: NotesMIT
Biopipelineslocbp-uzh/biopipelines109—~2.4kAutomated safety check: PassMIT
Edu Chem Reactionwy51ai/edulab1.4k—~1.2kAutomated safety check: PassApache-2.0
RDKit Cheminformatics Practicesaiming-lab/AutoResearchClaw15k—~708Automated safety check: PassMIT
Rowanlamm-mit/scienceclaw2464 repos~3.1kAutomated safety check: WarnProprietary

Similar skills

  • 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
  • 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
  • Edu Chem Reaction

    wy51ai/edulab

    把一个化学反应做成自包含的微观 3D 交互演示网页:左/上为 Three.js 可交互分子动画 (拖滑块看断键·成键·原子重组,分步高亮),右为 KaTeX 反应方程 + 分步讲解 + 原子守恒计数 + 可选能量-反应进程曲线。支持三入口——给定文字反应/方程、随机出题、上传图片识别后演示。

    1.4k GitHub stars~1.2k tokensUpdated yesterday
    Research & ScienceAuto-check passed
  • RDKit Cheminformatics Practices

    aiming-lab/AutoResearchClaw

    Reference guide for working with molecules in RDKit: reading SMILES and SDF files, computing descriptors and fingerprints, and searching substructures.

    15k GitHub stars~708 tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Rowan

    lamm-mit/scienceclaw

    Cloud-based quantum chemistry platform with Python API. An agent skill from lamm-mit/scienceclaw.

    246 GitHub starsUsed in 4 repos~3.1k tokens
    Research & ScienceAuto-check: warnings
  • Coot Rdkit

    pemsley/coot

    RDKit molecular manipulation and visualization within Coot's Python environment.

    168 GitHub stars~981 tokensUpdated 3 days ago
    Research & ScienceAuto-check passed

More from jaechang-hits/SciAgent-Skills

All 169 skills in this repo
  • Neb Irc Activation Energy

    jaechang-hits/SciAgent-Skills

    NEB-IRC activation energy pipeline for reaction barriers using GFN2-xTB and pysisyphus.

    374 GitHub stars~4k tokensUpdated 12 days ago
    Auto-check passed
  • Molecular Visualization 3dmol

    jaechang-hits/SciAgent-Skills

    3Dmol.js WebGL molecular visualization emitted as self-contained HTML.

    374 GitHub stars~3.2k tokensUpdated 12 days ago
    Auto-check passed
  • Cobrapy Metabolic Modeling

    jaechang-hits/SciAgent-Skills

    Constraint-based (COBRA) analysis of genome-scale metabolic models: FBA, FVA, knockouts, flux sampling, production envelopes, gapfilling, media optimization.

    374 GitHub starsUsed in 1 repo~4.9k tokens
    Auto-check passed
  • Rdkit Chemdraw Cdxml

    jaechang-hits/SciAgent-Skills

    Read, write, and edit ChemDraw CDX/CDXML files with RDKit's rdkit.Chem.rdChemDraw plus direct XML editing, always paired with a rendered PNG.

    374 GitHub stars~6.9k tokensUpdated 12 days ago
    Auto-check passed
  • Pubmed Database

    jaechang-hits/SciAgent-Skills

    Programmatic PubMed access via NCBI E-utilities REST API. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed
  • Sciagent Skill Creator

    jaechang-hits/SciAgent-Skills

    Scaffold a new SciAgent-Skills entry. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub stars~2.3k tokensUpdated 12 days ago
    Auto-check passed

Works with

Questions about Medchem

What does Medchem do?

Medicinal chemistry filters for compound triage. An agent skill from jaechang-hits/SciAgent-Skills. Medchem is an agent skill from jaechang-hits/SciAgent-Skills. Medicinal chemistry filters for compound triage.

When should I use Medchem?

Medchem fits situations like: tasks that involve Drug discovery and cheminformatics.

How do I install Medchem in Claude Code?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill medchem -a claude-code`. Or copy the skill folder (skills/structural-biology-drug-discovery/medchem in jaechang-hits/SciAgent-Skills) into .claude/skills/medchem in your project. Claude Code loads it when a task matches its description.

How do I install Medchem in Codex?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill medchem -a codex`. Or copy the skill folder (skills/structural-biology-drug-discovery/medchem in jaechang-hits/SciAgent-Skills) into .agents/skills/medchem in your project. Codex loads it when a task matches its description.

Can I use Medchem 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 jaechang-hits/SciAgent-Skills --skill medchem -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/medchem, .gemini/skills/medchem, .github/skills/medchem and .opencode/skills/medchem in your project.

What does Medchem need to run?

Going by SKILL.md and its folder, Medchem needs the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Medchem access the network?

SKILL.md names 2 domains. As links in the text: medchem-docs.datamol.io and github.com. This is read from the text; nothing was executed.

Is Medchem safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Medchem use?

Medchem is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Medchem use?

About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.

What are the alternatives to Medchem?

Skills that share tags, products or a category with Medchem: DiffDock Molecular Docking (K-Dense-AI/scientific-agent-skills, 48k stars), Biopipelines (locbp-uzh/biopipelines, 109 stars), Edu Chem Reaction (wy51ai/edulab, 1.4k stars) and RDKit Cheminformatics Practices (aiming-lab/AutoResearchClaw, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Medchem?

jaechang-hits (a GitHub user) maintains it in jaechang-hits/SciAgent-Skills, which has 374 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 29, 2026.

Source: jaechang-hits/SciAgent-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.