Agent skill

Aizynthfinder Retrosynthesis

by jaechang-hits in jaechang-hits/SciAgent-Skills

AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI.

MITAuto-check passedResearch & Science

Install Aizynthfinder Retrosynthesis

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

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

GitHub CLI
$ gh skill install jaechang-hits/SciAgent-Skills aizynthfinder-retrosynthesis --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/aizynthfinder-retrosynthesis .claude/skills/aizynthfinder-retrosynthesis && 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
aizynthfinder-retrosynthesis
GitHub stars
374
Token cost
~5k tokens
SKILL.md length
1,540 words
Files
1
Skills in repo
169
Repo updated
First seen
Licence
MIT

At a glance

AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI.

  • Works in 7 steps: Get the Models and Stock → Write or Adjust config.yml → Validate the Target SMILES → …
  • Synthesis route planning
  • SKILL.md covers Overview, When to Use, Prerequisites and Quick Start, plus 7 more sections
  • Calls conda and python

What it does

Aizynthfinder Retrosynthesis is an agent skill from jaechang-hits/SciAgent-Skills. AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI. Monte Carlo tree search guided by a template-based neural expansion policy recursively disconnects a target SMILES until precursors are found in a purchasable stock. Covers config.yml (v4 format), aizynthcli batch screening, the AiZynthFinder/AiZynthExpander Python API, one-step disconnections, custom stocks via smiles2stock, scorers, Retro/breadth-first/DFPN search alternatives, and reading output.json.gz / trees.json. Use for…

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Research & Science, covering Drug discovery and cheminformatics. It works with Python and 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 MIT.

When your agent uses it

  • Synthesis route planning
  • Synthesizability screening
  • Building-block/precursor search

Example prompts

  • “/aizynthfinder-retrosynthesis”

Requirements

  • Python 3

Workflow steps

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

  1. Get the Models and Stock
  2. Write or Adjust config.yml
  3. Validate the Target SMILES
  4. Run the Tree Search
  5. Build Routes and Read Statistics
  6. Inspect and Render Routes
  7. Batch Screen with aizynthcli

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:

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

    • molecularai.github.io
    • github.com
    • doi.org
    • pypi.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

Aizynthfinder Retrosynthesis loads about 5k tokens when it runs. Until then it costs about 186 tokens; SKILL.md has 1,540 words of instructions outside code blocks.

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

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 MIT licence (© jaechang-hits). 1,540 words, ~4,956 tokens.

Download SKILL.mdSave it as .claude/skills/aizynthfinder-retrosynthesis/SKILL.md (or your agent's skills folder).
name
aizynthfinder-retrosynthesis
description
AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI. Monte Carlo tree search guided by a template-based neural expansion policy recursively disconnects a target SMILES until precursors are found in a purchasable stock. Covers config.yml (v4 format), aizynthcli batch screening, the AiZynthFinder/AiZynthExpander Python API, one-step disconnections, custom stocks via smiles2stock, scorers, Retro*/breadth-first/DFPN search alternatives, and reading output.json.gz / trees.json. Use for synthesis route planning, synthesizability screening, and building-block/precursor search. For reaction barriers use neb-irc-activation-energy; for 2D reaction scheme drawing use rdkit-chemdraw-cdxml.
license
MIT

AiZynthFinder Retrosynthesis

Overview

AiZynthFinder performs computer-aided synthesis planning (CASP): a search algorithm — Monte Carlo tree search by default — recursively disconnects a target molecule into precursors, guided by a neural expansion policy that ranks known reaction templates. The search terminates when all precursors are found in a stock (a set of purchasable building blocks) or the maximum depth is reached. Output is a ranked set of reaction trees plus per-target statistics (is_solved, step count, precursors in/out of stock).

Version covered: 4.4.1 (Python 3.10–3.12). The v4 config format differs substantially from v2/v3 as described in the 2020 paper — never copy a config from an old blog post without translating it.

When to Use

  • Planning a synthesis route for a designed or purchased target molecule
  • Screening a compound library for synthesizability before committing to make-on-demand
  • Finding purchasable precursors or building blocks that lead to a scaffold
  • Ranking design ideas by route length and by how many precursors fall outside a catalogue
  • Enumerating the first retro step only — plausible disconnections without a full tree
  • Testing whether a specific bond can be made disconnection-aware (break_bonds) in a route
  • Comparing solve rate across two building-block catalogues for the same target set
  • Use torchdrug instead when training a retrosynthesis model rather than running route search
  • For forward reaction barriers and transition states use neb-irc-activation-energy; for drawing the resulting scheme use rdkit-chemdraw-cdxml

Prerequisites

  • Python packages: aizynthfinder (4.4.x), rdkit, pandas
  • Data requirements: a stock file (InChIKeys), a trained expansion policy (ONNX model + template CSV), optionally a filter policy
  • Environment: Python 3.10–3.12. Default runtime is onnxruntime; TensorFlow is not needed unless serving remote models or loading legacy .hdf5 Keras models.

Check before installing — aizynthcli, download_public_data, and smiles2stock ship with the package and may already be on PATH inside a pixi/conda env. Inside a pixi project, invoke them as pixi run aizynthcli ....

bash
command -v aizynthcli || {
  conda create "python>=3.10,<3.13" -n aizynth-env -y
  conda activate aizynth-env
  python -m pip install "aizynthfinder[all]"
}

[all] adds molbloom (bloom-filter stocks), pymongo, route-distances (route clustering), scipy, and timeout-decorator. Drop it for a lighter install; add [tf] only for TF-serving or .hdf5 models.

Quick Start

python
from aizynthfinder.aizynthfinder import AiZynthFinder

finder = AiZynthFinder(configfile="config.yml")
finder.stock.select("zinc")
finder.expansion_policy.select("uspto")

finder.target_smiles = "Cc1cccc(c1N(CC(=O)Nc2ccc(cc2)c3ncon3)C(=O)C4CCS(=O)(=O)CC4)C"
finder.tree_search()
finder.build_routes()                    # required before touching finder.routes

stats = finder.extract_statistics()
print(f"solved={stats['is_solved']} steps={stats['number_of_steps']} "
      f"routes={stats['number_of_routes']} time={stats['search_time']:.1f}s")
finder.routes[0]["image"].save("route_top.png")

Workflow

Step 1: Get the Models and Stock

download_public_data fetches the public USPTO models and the ZINC stock subset (several hundred MB, from zenodo.org and figshare.com) and writes a ready-to-use config.yml.

bash
# Skip if the folder already holds the models — this is a large download.
test -f my_folder/config.yml || download_public_data my_folder

ls my_folder
# uspto_model.onnx              uspto_templates.csv.gz
# uspto_ringbreaker_model.onnx  uspto_ringbreaker_templates.csv.gz
# uspto_filter_model.onnx       zinc_stock.hdf5
# config.yml
Step 2: Write or Adjust config.yml

The list short-cut means "template-based strategy, model first, templates second, defaults elsewhere". The same short-cut works for a single filter model path and a single stock file path.

yaml
# config.yml — minimal
expansion:
  uspto:
    - uspto_model.onnx
    - uspto_templates.csv.gz
stock:
  zinc: zinc_stock.hdf5
yaml
# config.yml — explicit form, the settings that matter in practice
search:
  algorithm: mcts
  algorithm_config:
    C: 1.4
    use_prior: True
    prune_cycles_in_search: True
    search_rewards: ["state score"]
  max_transforms: 6
  iteration_limit: 100
  time_limit: 120
  return_first: false
  exclude_target_from_stock: True
expansion:
  uspto:
    type: template-based
    model: uspto_model.onnx
    template: uspto_templates.csv.gz
    template_column: retro_template
    cutoff_cumulative: 0.995
    cutoff_number: 50
    use_rdchiral: True
filter:
  uspto:
    type: quick-filter
    model: uspto_filter_model.onnx
    filter_cutoff: 0.05
stock:
  zinc:
    type: inchiset
    path: zinc_stock.hdf5
post_processing:
  min_routes: 5
  max_routes: 25
  all_routes: False

Values can be pulled from the environment: iteration_limit: ${ITERATION_LIMIT}.

Step 3: Validate the Target SMILES

An unparseable target burns the whole time limit before failing. Check first.

python
from rdkit import Chem

smiles = "Cc1cccc(c1N(CC(=O)Nc2ccc(cc2)c3ncon3)C(=O)C4CCS(=O)(=O)CC4)C"
mol = Chem.MolFromSmiles(smiles)
assert mol is not None, f"invalid SMILES: {smiles}"
smiles = Chem.MolToSmiles(mol)           # canonicalize
print(f"{smiles}  heavy_atoms={mol.GetNumHeavyAtoms()}")

select() picks which loaded policies and stocks are active. AiZynthFinder also accepts configdict=<dict> instead of a file — the cleanest way to sweep parameters without writing YAML.

python
from aizynthfinder.aizynthfinder import AiZynthFinder

finder = AiZynthFinder(configfile="config.yml")
finder.stock.select("zinc")
finder.expansion_policy.select("uspto")
finder.filter_policy.select("uspto")     # optional; prunes implausible reactions

finder.target_smiles = smiles
search_time = finder.tree_search()
print(f"search finished in {search_time:.1f}s")
Step 5: Build Routes and Read Statistics

build_routes() extracts reaction trees from the search graph. Nothing in finder.routes exists until it is called.

python
finder.build_routes()
stats = finder.extract_statistics()

for key in ("is_solved", "number_of_steps", "number_of_routes",
            "number_of_precursors", "number_of_precursors_in_stock",
            "search_time", "first_solution_time"):
    print(f"{key:32s} {stats[key]}")

print("not in stock:", stats["precursors_not_in_stock"])
Step 6: Inspect and Render Routes

finder.routes is a RouteCollection. Show two or three distinct routes, not only the top-scored one.

python
routes = finder.routes
print(f"{len(routes)} routes, scores: {routes.scores}")

for i in range(min(3, len(routes))):
    tree = routes.reaction_trees[i]
    leafs = [m.smiles for m in tree.leafs()]
    print(f"route {i}: solved={tree.is_solved} "
          f"steps={len(list(tree.reactions()))} branched={tree.is_branched()}")
    print(f"  precursors: {leafs}")
    routes.images[i].save(f"route_{i:02d}.png")

routes.jsons[0]                          # JSON string for the top route
Step 7: Batch Screen with aizynthcli

For hundreds or thousands of targets, use the CLI rather than a Python loop — --nproc splits the input across processes.

bash
# One SMILES per line in smiles.txt
aizynthcli --config config.yml --smiles smiles.txt \
           --policy uspto --stocks zinc \
           --nproc 8 --checkpoint checkpoint.json.gz \
           --output output.json.gz --log_to_file
python
import pandas as pd

data = pd.read_json("output.json.gz", orient="table")
print(f"solve rate: {data.is_solved.mean():.1%}  n={len(data)}")
print(data.loc[data.is_solved, "number_of_steps"].value_counts().sort_index())
print(data.loc[~data.is_solved, ["target", "precursors_not_in_stock"]].head())

Key Parameters

ParameterDefaultRange / OptionsEffect
search.time_limit12030–1800 (s)Wall-clock budget per target. Raise this first when nothing solves.
search.iteration_limit10050–1000MCTS iterations per target; whichever of time/iterations hits first ends the search.
search.max_transforms63–10Maximum tree depth (longest route). Deeper searches cost quadratically more.
search.return_firstFalseTrue/FalseStop at the first solved route — fast synthesizability yes/no, poor route quality.
search.exclude_target_from_stockTrueTrue/FalseKeep True or a purchasable target returns an empty route.
search.algorithm_config.C1.40.5–3.0UCB exploration/exploitation balance; higher explores more disconnections.
search.algorithm_config.search_rewards["state score"]any scorer namesScorers driving the search; pair with search_rewards_weights for multi-objective.
expansion.cutoff_number5010–100Templates applied per expansion. Widens branching and slows search — tune after the time limit.
expansion.cutoff_cumulative0.9950.95–0.999Cumulative policy probability retained before truncating the template list.
expansion.template_columnretro_templatecolumn nameMust match the template file; a mismatch yields silently empty expansions.
filter.filter_cutoff0.050.0–0.5Feasibility threshold; raising it prunes harder and can make targets unsolvable.
post_processing.max_routes255–100Routes extracted after the search; all_routes: True returns every solved route.

Key Concepts

The route score is not a quality score

The state score reflects the fraction of solved precursors and the route length. It was designed to guide the tree search and is largely indiscriminate about whether a route is chemically sensible. Solved routes score near 1.0, unsolved ones typically below 0.8. Never present top_score as a confidence or feasibility measure.

Solve rate is set by the stock and the template library, not the algorithm

The public ZINC subset is far smaller than commercial catalogues; in the original comparison, adding Enamine building blocks found routes for 10 more compounds out of 100. Swapping USPTO for a Reaxys-derived policy changed which compounds solved rather than uniformly improving them. Findability tracks synthetic complexity — an unsolved target means "not found under this stock, this policy, and this budget", not "unsynthesizable".

Reference performance from the paper (100 random ChEMBL compounds, single CPU + single GPU): 55 solved, mean search time 38.7 s, mean time to first solution 7.1 s, mean 2.4 steps and 2.7 precursors.

No conditions are predicted

Reagents, solvents, temperatures, and yields are outside scope. A predicted route is a hypothesis for a chemist to evaluate.

Show full SKILL.md (650 more words)Show less
Scorers

Loaded automatically: state score, number of reactions, number of pre-cursors, number of pre-cursors in stock. Also available in aizynthfinder.context.scoring: average template occurrence, sum of prices, route cost, max transform, broken bonds, fraction in stock, fraction in source, fraction of intermediates in <stock>, stock availability, reaction class membership, reaction class-rank score, delta-SC score, route similarity, plus CombinedScorer and DeepSetScorer. Scorers are addressed by their string name both in search.algorithm_config.search_rewards and in post_processing.route_scorer (which falls back to search_rewards when unset).

Search algorithms

Set search.algorithm to a class path to replace MCTS: Retro* (aizynthfinder.search.retrostar.search_tree.SearchTree), breadth-first (aizynthfinder.search.breadth_first.search_tree.SearchTree), DFPN (aizynthfinder.search.dfpn.search_tree.SearchTree).

Choosing an entry point
User intentUse
One or a few molecules, wants routes and imagesPython API (AiZynthFinder)
Hundreds or thousands of moleculesaizynthcli with a SMILES file and --nproc
Interactive exploration by a chemistaizynthapp (Jupyter GUI)
Only the first retro stepAiZynthExpander — far cheaper than a full tree search

Common Recipes

Recipe: One-Step Disconnections Only

When to use: the user wants plausible first disconnections, not a full route to purchasable material.

python
import pandas as pd
from aizynthfinder.aizynthfinder import AiZynthExpander

expander = AiZynthExpander(configfile="config.yml")
expander.expansion_policy.select("uspto")
expander.filter_policy.select("uspto")   # annotates feasibility only; does not prune

reactions = expander.do_expansion(smiles)

reactants = [[m.smiles for m in tup[0].reactants[0]] for tup in reactions]
metadata = pd.DataFrame([rxn.metadata for tup in reactions for rxn in tup])
print(f"{len(reactions)} disconnections; metadata fields: {list(metadata.columns)}")
print(metadata.head())   # template info, policy probability, filter feasibility
Recipe: Build a Custom Stock from a Catalogue

When to use: the ZINC subset is not the catalogue you actually buy from. Stock files must hold pre-computed InChIKeys, not SMILES — smiles2stock does the conversion.

bash
# one SMILES per line
smiles2stock --files enamine_bb.smi inhouse.smi --output my_stock.hdf5
smiles2stock --files enamine_bb.smi --output my_db --target mongo   # MongoDB target
yaml
stock:
  enamine:
    type: inchiset
    path: my_stock.hdf5
  stop_criteria:
    price: 10
    counts:
      C: 10

inchiset also reads a CSV with an inchi_key column or a plain single-column text file. For a rule-based stock, subclass StockQueryMixin and implement __contains__(self, mol) over a Molecule, then point stock: type: at the importable class path.

Recipe: Multiple Expansion Policies and Disconnection-Aware Search

When to use: ring-forming disconnections are being missed (add RingBreaker), or a specific bond must be broken.

yaml
expansion:
  uspto:
    - uspto_model.onnx
    - uspto_templates.csv.gz
  ringbreaker:
    - uspto_ringbreaker_model.onnx
    - uspto_ringbreaker_templates.csv.gz
  multi_expansion_strategy:
    type: aizynthfinder.context.policy.MultiExpansionStrategy
    expansion_strategies: [uspto, ringbreaker]
    additive_expansion: True
search:
  break_bonds: [[1, 2], [3, 4]]     # atom-index pairs in the target
  break_bonds_operator: and         # "and" = all must break, "or" = any
  algorithm_config:
    search_rewards: ["state score", "broken bonds"]

Select it with aizynthcli --policy multi_expansion_strategy .... Bond indices depend on the target's atom ordering — derive them from the canonical SMILES you actually pass in and confirm the atom map with the user.

Recipe: Re-rank Routes and Render from a Saved Batch Run

When to use: the batch already ran, and you want a different ranking or images without re-searching.

python
import pandas as pd
from aizynthfinder.analysis import RouteSelectionArguments
from aizynthfinder.reactiontree import ReactionTree

# Widen route extraction, then re-rank by a different scorer
finder.build_routes(RouteSelectionArguments(nmin=5, nmax=50, return_all=True))
finder.routes.compute_scores(finder.scorers["number of reactions"])
finder.routes.rescore(finder.scorers["number of pre-cursors in stock"])

# Render routes stored in a batch output file
data = pd.read_json("output.json.gz", orient="table")
for i, tree in enumerate(data.trees.values[0]):
    ReactionTree.from_dict(tree).to_image().save(f"target0_route{i:03d}.png")

Expected Outputs

  • output.json.gz — batch results, one row per target; read with pd.read_json(..., orient="table"). Columns: target, search_time, first_solution_time, first_solution_iteration, number_of_nodes, max_transforms, max_children, number_of_routes, number_of_solved_routes, top_score, is_solved, number_of_steps, number_of_precursors, number_of_precursors_in_stock, precursors_in_stock, precursors_not_in_stock, precursors_availability, policy_used_counts, profiling, stock_info, top_scores, trees
  • trees.json — route trees for a single-SMILES CLI run (statistics go to the terminal)
  • checkpoint.json.gz — processed targets, so a crashed batch resumes; cat_aizynth_output concatenates several output files
  • route_*.png — rendered reaction trees from RouteCollection.images or ReactionTree.to_image()

Report is_solved, step count, and the precursors that fell outside stock. For a library screen report solve rate and the step-count distribution.

Troubleshooting

ProblemCauseSolution
PolicyException: number of templates does not agree with the output dimensions of the modelModel and template file come from different releasesRe-pair them; the ringbreaker model needs ringbreaker templates
Templates load but every expansion is emptyWrong template_columnDefault is retro_template. CSV templates are read with sep="\t", index_col=0 — a comma-separated file parses silently wrong
Nothing is ever in stockStock file holds SMILES, not InChIKeysRebuild with smiles2stock --files x.smi --output stock.hdf5
Target reported solved immediately with an empty routeThe target itself is in stockSet search.exclude_target_from_stock: True
Every search hits the time limit unsolvedBudget or branching too tight/wideRaise time_limit/iteration_limit first; then lower cutoff_number or max_transforms; return_first: True if any solution suffices
Config with top-level policy: / properties: keys failsPre-v4 formatTranslate to expansion: / filter: / search:
--nproc produces fewer output files than expectedOne shard failed and aborted concatenationCheck the per-process aizynthcli*.log files
finder.routes is empty or raisesbuild_routes() was not calledAlways call build_routes() after tree_search()
Clustering or distance_to unavailableroute-distances missingInstall the [all] extra
ImportError on TensorFlowAssuming the TF backendDefault runtime is onnxruntime; only use_remote_models or .hdf5 Keras models need [tf]

References

© jaechang-hits, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/structural-biology-drug-discovery/aizynthfinder-retrosynthesis of jaechang-hits/SciAgent-Skills.

Open the folder on GitHubat commit 82c862c

Compare with similar skills

Aizynthfinder Retrosynthesis 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.

Aizynthfinder Retrosynthesis compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aizynthfinder Retrosynthesis this skilljaechang-hits/SciAgent-Skills374—~5kAutomated safety check: PassMIT
DiffDock Molecular DockingK-Dense-AI/scientific-agent-skills48k1 repos~3kAutomated safety check: NotesMIT
Edu Chem Reactionwy51ai/edulab1.4k—~1.2kAutomated safety check: PassApache-2.0
Rowanlamm-mit/scienceclaw2464 repos~3.1kAutomated safety check: WarnProprietary
Coot Rdkitpemsley/coot168—~981Automated safety check: PassGPL-3.0
RDKit Cheminformaticsdavila7/claude-code-templates33k14 repos~5kAutomated safety check: PassMIT

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

    wy51ai/edulab

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

    1.4k GitHub stars~1.2k tokensUpdated yesterday
    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
  • RDKit Cheminformatics

    davila7/claude-code-templates

    Guides molecular work with RDKit in Python: reading SMILES and SDF, sanitization, descriptors, fingerprints, substructure and similarity search, reactions and coordinates.

    33k GitHub starsUsed in 14 repos~5k tokens
    Research & ScienceAuto-check passed
  • RDKit Conformer Generator

    jinzhezenggroup/computational-chemistry-agent-skills

    Generates 3D molecular conformers from SMILES strings or files with RDKit, keeps the lowest-energy one per molecule, and falls back to 2D coordinates when embedding fails.

    148 GitHub stars~2.4k tokensUpdated 2 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 Aizynthfinder Retrosynthesis

What does Aizynthfinder Retrosynthesis do?

AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI. Aizynthfinder Retrosynthesis is an agent skill from jaechang-hits/SciAgent-Skills. AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI.

When should I use Aizynthfinder Retrosynthesis?

Aizynthfinder Retrosynthesis fits situations like: synthesis route planning; synthesizability screening; building-block/precursor search.

How do I install Aizynthfinder Retrosynthesis in Claude Code?

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

How do I install Aizynthfinder Retrosynthesis in Codex?

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

Can I use Aizynthfinder Retrosynthesis 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 aizynthfinder-retrosynthesis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aizynthfinder-retrosynthesis, .gemini/skills/aizynthfinder-retrosynthesis, .github/skills/aizynthfinder-retrosynthesis and .opencode/skills/aizynthfinder-retrosynthesis in your project.

What does Aizynthfinder Retrosynthesis need to run?

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

Does Aizynthfinder Retrosynthesis access the network?

SKILL.md names 4 domains. As links in the text: molecularai.github.io, github.com, doi.org and pypi.org. This is read from the text; nothing was executed.

Is Aizynthfinder Retrosynthesis 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 Aizynthfinder Retrosynthesis use?

Aizynthfinder Retrosynthesis 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 Aizynthfinder Retrosynthesis use?

About 5k tokens (SKILL.md is roughly 20k 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 Aizynthfinder Retrosynthesis?

Skills that share tags, products or a category with Aizynthfinder Retrosynthesis: DiffDock Molecular Docking (K-Dense-AI/scientific-agent-skills, 48k stars), Edu Chem Reaction (wy51ai/edulab, 1.4k stars), Rowan (lamm-mit/scienceclaw, 246 stars) and Coot Rdkit (pemsley/coot, 168 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aizynthfinder Retrosynthesis?

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.