{"id":"0d9d88fb-c92f-447e-a7ac-34854dc5af97","entityType":"agent","slug":"clawhub-zbc0315-synomega","name":"Synomega Skill","canonicalUrl":"https://www.xpersona.co/agent/clawhub-zbc0315-synomega","canonicalPath":"/agent/clawhub-zbc0315-synomega","generatedAt":"2026-10-10T21:48:25.372Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":null},"description":"Retrosynthesis, reaction prediction, and synthesizability for organic molecules, using the synomega Python package (pip install synomega) — runs locally, works out of the box. Six capabilities: single-step retrosynthesis (product → reactants, candidate disconnections), single-step forward reaction prediction / reaction outcome (reactants → product), multi-step route planning down to purchasable building blocks, a continuous synthesizability / makeability score (SynScore), reaction-plausibility screening, and multi-component evolution (growing a forward synthesis network from a set of reactants, e.g. one-pot / multicomponent chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable name) and asks how to make / synthesize it, whether it can be made or how hard, how to rank molecules by ease of synthesis, what reactants give a target, what product a set of reactants gives, a reaction outcome, or how a reactant mixture evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and reaction-prediction tasks. Safety judgments for hazardous, controlled, or otherwise dual-use compounds are deferred to the host's safety policy (see \"Safety boundary / dual-use\" below).","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170n9q9jf63zng4je4m7vaafh84dkwy:synomega","sourceUrl":"https://clawhub.ai/zbc0315/synomega","homepage":"https://clawhub.ai/zbc0315/skills/synomega","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/zbc0315/synomega","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/zbc0315/skills/synomega","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Synomega Skill technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":null},"stars":null,"forks":null,"downloads":1307,"packageName":null,"latestVersion":"1.8.1","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T17:57:27.961Z","lastCrawledAt":"2026-10-10T17:57:27.961Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T17:57:27.961Z","lastVerifiedAt":null,"highlights":[{"version":"1.8.1","createdAt":"2026-08-29T13:11:02.675Z","changelog":"Add --library {zinc,molport} built-in commercial-library switch to plan/score; require synomega>=0.9.4 (RunReactants ring-fix + composable stock).","fileCount":6,"zipByteSize":13345},{"version":"1.8.0","createdAt":"2026-08-27T06:43:39.824Z","changelog":"plan/score: add --forward-consistency (round-trip forward filter). Full feature set: single-step/forward/plan/score/evolve.","fileCount":6,"zipByteSize":12947},{"version":"1.7.0","createdAt":"2026-08-27T06:39:25.034Z","changelog":"plan/score: add --forward-consistency (round-trip forward filter, prunes single-step branching)","fileCount":6,"zipByteSize":8620},{"version":"1.6.1","createdAt":"2026-08-20T17:02:38.239Z","changelog":"Broaden description for discovery; add tags and topics","fileCount":6,"zipByteSize":12459},{"version":"1.6.0","createdAt":"2026-08-20T16:09:29.056Z","changelog":"Overhaul: cover all six capabilities (single-step, forward, plan, score, plausibility, evolve); score defaults to the recommended simplify model","fileCount":6,"zipByteSize":12543},{"version":"1.5.0","createdAt":"2026-08-20T12:52:58.882Z","changelog":"Add forward prediction and multi-component evolution (synomega 0.8.0)","fileCount":6,"zipByteSize":11359},{"version":"1.4.4","createdAt":"2026-07-27T03:04:53.755Z","changelog":"- The synthesizability score in the Python API and output is now named SynScore (`score`) with a new formula; requires synomega >= 0.6.0. - The previous `bb_coverage` field is still available but is no longer the main synthesizability metric. - Documentation and examples updated to reflect the change from `bb_coverage` to the new `score`. - Removed the `skill-card.md` file.","fileCount":6,"zipByteSize":9874},{"version":"1.4.3","createdAt":"2026-07-26T15:49:41.827Z","changelog":"- Added documentation for the new simplification-constrained single-step model (`simplify=True`), which enables faster planning by restricting predictions to fragmentation disconnections. - Noted the additional model download for the simplification-constrained option. - Removed the skill-card.md file, streamlining documentation. - SKILL.md updated to include usage instructions for the new model and clarifies its requirements.","fileCount":6,"zipByteSize":9793}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170n9q9jf63zng4je4m7vaafh84dkwy:synomega","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s170n9q9jf63zng4je4m7vaafh84dkwy:synomega` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/zbc0315/synomega before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:48:25.355Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zbc0315-synomega/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":null},"readme":"Skill: Synomega Skill\n\nOwner: zbc0315\n\nSummary: Retrosynthesis, reaction prediction, and synthesizability for organic molecules, using the synomega Python package (pip install synomega) — runs locally, works out of the box. Six capabilities: single-step retrosynthesis (product → reactants, candidate disconnections), single-step forward reaction prediction / reaction outcome (reactants → product), multi-step route planning down to purchasable building blocks, a continuous synthesizability / makeability score (SynScore), reaction-plausibility screening, and multi-component evolution (growing a forward synthesis network from a set of reactants, e.g. one-pot / multicomponent chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable name) and asks how to make / synthesize it, whether it can be made or how hard, how to rank molecules by ease of synthesis, what reactants give a target, what product a set of reactants gives, a reaction outcome, or how a reactant mixture evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and reaction-prediction tasks. Safety judgments for hazardous, controlled, or otherwise dual-use compounds are deferred to the host's safety policy (see \"Safety boundary / dual-use\" below).\n\nTags: cheminformatics:1.6.1, chemistry:1.6.1, latest:1.8.1, rdkit:1.6.1, reaction-prediction:1.6.1, retrosynthesis:1.6.1\n\nVersion history:\n\nv1.8.1 | 2026-08-29T13:11:02.675Z | user\n\nAdd --library {zinc,molport} built-in commercial-library switch to plan/score; require synomega>=0.9.4 (RunReactants ring-fix + composable stock).\n\nv1.8.0 | 2026-08-27T06:43:39.824Z | user\n\nplan/score: add --forward-consistency (round-trip forward filter). Full feature set: single-step/forward/plan/score/evolve.\n\nv1.7.0 | 2026-08-27T06:39:25.034Z | user\n\nplan/score: add --forward-consistency (round-trip forward filter, prunes single-step branching)\n\nv1.6.1 | 2026-08-20T17:02:38.239Z | user\n\nBroaden description for discovery; add tags and topics\n\nv1.6.0 | 2026-08-20T16:09:29.056Z | user\n\nOverhaul: cover all six capabilities (single-step, forward, plan, score, plausibility, evolve); score defaults to the recommended simplify model\n\nv1.5.0 | 2026-08-20T12:52:58.882Z | user\n\nAdd forward prediction and multi-component evolution (synomega 0.8.0)\n\nv1.4.4 | 2026-07-27T03:04:53.755Z | auto\n\n- The synthesizability score in the Python API and output is now named SynScore (`score`) with a new formula; requires synomega >= 0.6.0.\n- The previous `bb_coverage` field is still available but is no longer the main synthesizability metric.\n- Documentation and examples updated to reflect the change from `bb_coverage` to the new `score`.\n- Removed the `skill-card.md` file.\n\nv1.4.3 | 2026-07-26T15:49:41.827Z | auto\n\n- Added documentation for the new simplification-constrained single-step model (`simplify=True`), which enables faster planning by restricting predictions to fragmentation disconnections.\n- Noted the additional model download for the simplification-constrained option.\n- Removed the skill-card.md file, streamlining documentation.\n- SKILL.md updated to include usage instructions for the new model and clarifies its requirements.\n\nv1.4.2 | 2026-07-26T11:54:15.652Z | user\n\nSQP-1: add dual-use/safety-boundary section and narrow activation scope; SQP-2: prominent first-run network+download warning\n\nv1.4.1 | 2026-07-26T04:47:27.436Z | user\n\nPlausibility screening now OFF by default (benchmarks: no top-k gain, adds latency); set SYNOMEGA_PLAUSIBILITY=1 to enable.\n\nv1.4.0 | 2026-07-25T15:22:25.449Z | user\n\nScreen single-step predictions with the dual-tower reaction-plausibility filter (default on, threshold 0.4); single-step/plan/score drop implausible disconnections; single-step output gains a plausibility field.\n\nv1.3.1 | 2026-07-25T03:41:05.937Z | user\n\nDisplay brand as SynOmega in docs.\n\nv1.3.0 | 2026-07-24T13:17:46.393Z | user\n\nZero-config: the default model + stock now auto-download on first use (synomega 0.3.0). No SYNOMEGA_MODEL/STOCK setup required.\n\nv1.2.0 | 2026-07-24T12:13:36.708Z | user\n\nAdd --exclude-target (synomega 0.2.0): treat the target as not purchasable even if it is a catalogue molecule.\n\nv1.1.0 | 2026-07-24T10:46:51.714Z | user\n\nPackage-based: uses the synomega PyPI package locally (Python API + CLI + a helper loading a local model/stock) instead of a hosted API.\n\nv1.0.0 | 2026-07-24T10:41:36.491Z | user\n\nInitial release: single-step prediction, multi-step planning, synthesizability scoring over the synomega HTTP API + local package.\n\nArchive index:\n\nArchive v1.8.1: 6 files, 13345 bytes\n\nFiles: LICENSE (1064b), README.md (3382b), scripts/synomega_run.py (12600b), skill-card.md (2653b), SKILL.md (13597b), _meta.json (127b)\n\nFile v1.8.1:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis, reaction prediction, and synthesizability for organic molecules,\n  using the synomega Python package (pip install synomega) — runs locally, works\n  out of the box. Six capabilities: single-step retrosynthesis (product → reactants,\n  candidate disconnections), single-step forward reaction prediction / reaction\n  outcome (reactants → product), multi-step route planning down to purchasable\n  building blocks, a continuous synthesizability / makeability score (SynScore),\n  reaction-plausibility screening, and multi-component evolution (growing a forward\n  synthesis network from a set of reactants, e.g. one-pot / multicomponent\n  chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable\n  name) and asks how to make / synthesize it, whether it can be made or how hard,\n  how to rank molecules by ease of synthesis, what reactants give a target, what\n  product a set of reactants gives, a reaction outcome, or how a reactant mixture\n  evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and\n  reaction-prediction tasks. Safety judgments for hazardous, controlled, or\n  otherwise dual-use compounds are deferred to the host's safety policy (see\n  \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/),\n[docs](https://zbc0315.github.io/synomega/)) for organic small-molecule reactions.\nIt exposes **six capabilities** behind one install:\n\n| # | Capability | Direction | Helper command |\n|---|---|---|---|\n| 1 | **Single-step retrosynthesis** | product → reactants | `single-step` |\n| 2 | **Single-step forward prediction** | reactants → product | `forward` |\n| 3 | **Multi-step route planning** | target → route to purchasable stock | `plan` |\n| 4 | **Synthesizability score (SynScore)** | target → 0–1 makeability | `score` |\n| 5 | **Reaction-plausibility screening** | filter single-step candidates | env toggle |\n| 6 | **Multi-component evolution** | reactant set → forward synthesis network | `evolve` |\n\nIt runs entirely locally. **It works out of the box** — the pretrained models and\nbuilding-block stock download automatically on first use, so there is nothing to\ntrain or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> call automatically reaches out to a **remote mirror** (USTC GitLab and/or GitHub)\n> and downloads the model(s) and stock — **a few hundred MB** — into\n> `~/.cache/synomega`. Nothing else phones home, but this first fetch does.\n> Controls: pre-fetch with `synomega download`; change the cache dir with\n> `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR` (`ustc` or `github`). In\n> **air-gapped, bandwidth-limited, privacy-sensitive, or reproducibility-critical**\n> environments, pre-fetch (or point at a local model/stock) and treat the download\n> as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]>=0.9.4\"    # neural D-MPNN backend (torch) — recommended\nsynomega download              # optional: pre-fetch the default assets\n```\n\nRequires Python ≥ 3.10.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for every operation — no configuration, it\ndownloads what it needs on first call. Always pass a valid **SMILES** (dot-separate\nmultiple molecules).\n\n```bash\n# 1. single-step retrosynthesis — \"what reacts to give X?\"\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n\n# 2. forward prediction — \"what do these reactants give?\"\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n\n# 3. multi-step route planning — \"how do I make X?\"\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\n\n# 4. synthesizability score — \"can X be made / how hard?\"  (simplify model by default)\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\n\n# 6. multi-component evolution — grow a forward synthesis network\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n(Capability 5, reaction plausibility, is an env toggle applied to the others — see\nbelow.)\n\n## The six capabilities\n\n### 1. Single-step retrosynthesis — `single-step`\n\nGiven a **product**, rank one-step disconnections into candidate **reactants**.\n\n```bash\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nOutput: `{\"target\", \"predictions\": [{\"rank\", \"reactants\": [SMILES,...], \"score\"\n(0–1, higher = more likely), \"plausibility\" (null unless screening is on),\n\"template_id\"}]}`. Present the top few disconnections.\n\n### 2. Single-step forward prediction — `forward`\n\nGiven **reactants**, rank the likely **products**. Uses a separate forward model.\n\n```bash\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n```\n\nOutput: `{\"reactants\", \"products\": [{\"rank\", \"product\" (SMILES), \"score\" (0–1\nforward probability), \"template_id\"}]}`. Template-based (product top-1 ≈ 0.64):\ntreat products as candidates, not guarantees.\n\n### 3. Multi-step route planning — `plan`\n\nSearch an AND-OR graph for a full route from the **target** down to purchasable\nbuilding blocks.\n\n```bash\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --simplify   # cheaper search\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --library molport  # MolPort stock\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --forward-consistency\n```\n\nOutput: `{\"target\", \"algorithm\", \"solved\" (bool — a fully-purchasable route\nexists), \"routes\": [route tree, best first]}`. Each route tree nests\n`reactants → product` recursively until every leaf is an in-stock building block;\nread it top-down. Options: `--algorithm {retrostar,mcts,bfs}`, `--max-routes`,\n`--exclude-target`, `--simplify`, `--forward-consistency` (with `--forward-top-k`,\ndefault 3 — keep a single-step candidate only if its retro template is in the\nforward model's top-k for its reactants; prunes forward-implausible disconnections).\n\n### 4. Synthesizability score (SynScore) — `score`\n\nScore a **target** 0–1 for how makeable it is, for ranking a set of molecules.\nRuns one route search internally, then folds it into a score.\n\n```bash\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --original   # unconstrained model\n```\n\nOutput (a `MoleculeReport` dict): the headline is **`score`** = `1/(U+1)**U`, where\n`U` is the number of the best route's starting materials that are **not**\npurchasable. Solved (U=0) → 1.0; U=1 → 0.5; U=2 → 0.11; no route → 0. Also:\n`solved`, `bb_coverage` (fraction of leaves purchasable), `min_steps`,\n`num_leaves`, `num_purchasable_leaves`. Use `score` to rank candidates; use\n`solved` to compare against published solve-rate. **Defaults to the\nsimplification-constrained model @ expansion width 10** (synomega's recommended\nscoring config); `--original` reverts to the unconstrained model.\n\n### 5. Reaction-plausibility screening — env toggle\n\nAn optional **mapping-free dual-tower model** scores how likely each single-step\ncandidate's `reactants → target` actually happens, and **drops** implausible ones\n(it only removes wrong disconnections, never re-ranks the rest). It applies to\n`single-step`, `plan`, and `score` alike. **Off by default** — it does not improve\ntop-k recall and adds latency.\n\n```bash\nSYNOMEGA_PLAUSIBILITY=1 SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4 \\\n  python scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nWhen on, each `single-step` prediction gains a `plausibility` field (0–1). In\nPython: `synomega.load_default_planner(plausibility=True, plausibility_threshold=0.4)`.\n\n### 6. Multi-component evolution — `evolve`\n\nFrom a set of starting **reactants**, repeatedly pick two molecules from a growing\npool, run the forward model, and add products back — growing a forward **synthesis\nnetwork**. Good for exploring multi-component / one-pot chemistry.\n\n```bash\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" \\\n  --max-depth 3 --score-threshold 0.01 --top 20\n```\n\nOutput: `{\"reactants\", \"stats\", \"num_molecules\", \"num_reaction_edges\",\n\"molecules\": [{\"smiles\", \"total_score\", \"depth\", \"step_score\", \"parents\",\n\"template_id\"}]}`. Each molecule's `total_score` = `min(parent totals) × step\nprobability` (starting reactants = 1.0); `depth` is the synthesis-tree depth.\nOptions: `--forward-top-k` (products per pair), `--frontier-width` (cap fan-out for\nmany reactants), `--top` (how many products to report). In Python,\n`MultiComponentEvolution(...).evolve([...])` also supports `mode=\"disk\"` (SQLite)\nfor reactant sets whose intermediates do not fit in RAM.\n\n## Common options\n\n- **`--library {zinc,molport}`** (`plan`, `score`): pick which built-in commercial\n  building-block set counts as \"purchasable\" — `zinc` (default) or `molport` (a\n  MolPort in-stock reagent set, better coverage of medicinal-chemistry starting\n  materials). Ignored when `SYNOMEGA_STOCK` points at your own catalogue.\n- **`--exclude-target`** (`plan`, `score`): treat the target as *not* purchasable\n  even if it is itself in the stock, so a catalogue molecule is not reported as\n  trivially solved in zero steps. Use it for \"how would you actually make X\" about\n  a possibly-buyable molecule.\n- **`--simplify`** (`plan`) / **`--original`** (`score`): the\n  simplification-constrained single-step model proposes only *fragmentation*\n  disconnections (split into ≥2 precursors) and reaches stock with fewer\n  expansions. `score` uses it by default; `plan` uses the original model unless you\n  pass `--simplify`.\n\n## Python API\n\n```python\nimport synomega\n\nplanner = synomega.load_default_planner()              # default model + stock (downloads once)\n\n# 1. single-step retro\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 3. multi-step plan\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved); print(result.best_route.describe())\n\n# 4. synthesizability score (recommended entry — simplify model @ k=10)\nscorer = synomega.load_default_scorer()\nprint(scorer.score(\"CC(=O)Nc1ccccc1O\").as_dict())\n\n# 2 + 6. forward + evolution\nfrom synomega.forward import ForwardTemplateGNN, MultiComponentEvolution\nfwd = ForwardTemplateGNN.default()\nfor pred in fwd.predict(\"CC(=O)O.NCc1ccccc1\", top_k=5):\n    print(pred.score, pred.product)\nevo = MultiComponentEvolution(fwd, max_depth=3, score_threshold=0.01)\nres = evo.evolve([\"CC(=O)c1ccccc1\", \"C=O\", \"CNC\"]); print(res.describe()); res.close()\n```\n\nSwitch the built-in commercial library, or compose libraries, in Python:\n\n```python\nfrom synomega.stock import InMemoryStock, resolve_stock\nplanner = synomega.load_default_planner(stock=InMemoryStock.molport())   # or .zinc()\nmine = InMemoryStock.from_file(\"my_catalogue.smi\")\ncombined = InMemoryStock.zinc() | mine                                    # union (supplement)\nstock = resolve_stock(\"molport\", user_stock=mine, mode=\"supplement\")     # declarative form\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`,\n`SYNOMEGA_STOCK` (+ `SYNOMEGA_STOCK_KEYS=1` for a precomputed `.keys` file), and\n`SYNOMEGA_FORWARD_MODEL` (the helper reads them), or build the objects directly\nwith `TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- Larger `--max-depth` / `--max-steps` / `--top-k` finds more but is slower; start\n  at the defaults (depth 5, top-k 10).\n- The first call downloads a few hundred MB — expect a one-time delay. In Python,\n  build the planner/model once and reuse it; loading takes a few seconds.\n- Match the tool to the question: making X → `plan`/`score`; what makes X →\n  `single-step`; what do these give → `forward`; explore a reactant mixture →\n  `evolve`.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Docs:    https://zbc0315.github.io/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.8.1:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis and reaction-prediction toolkit on PyPI\n([docs](https://zbc0315.github.io/synomega/)). It teaches Claude Code, OpenClaw and\nother coding agents to use the `synomega` Python package across its **six\ncapabilities**: single-step retrosynthesis (product → reactants), single-step\nforward prediction (reactants → product), multi-step route planning, a continuous\n**synthesizability score** (SynScore), reaction-plausibility screening, and\nmulti-component evolution (growing a forward synthesis network from a set of\nreactants).\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n- \"What product do acetic acid and benzylamine give?\"\n- \"Evolve a forward network from acetophenone + formaldehyde + dimethylamine.\"\n\nOr call the bundled helper directly (one JSON-printing command per capability):\n\n```bash\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10     # product -> reactants\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5    # reactants -> product\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5  # multi-step route\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5  # synthesizability (SynScore)\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n`plan` and `score` take `--exclude-target` (treat the target as not purchasable\neven if it is a catalogue molecule, so it is not trivially \"solved\" in zero steps).\nReaction-plausibility screening is an env toggle: `SYNOMEGA_PLAUSIBILITY=1`. See\n`SKILL.md` for the full option list and output shapes.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any capability (single-step / forward / plan / score / evolve), prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.8.1:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.8.1\",\n  \"publishedAt\": 1788009062675\n}\n\nFile v1.8.1:skill-card.md\n\n## Description:\n\nSynOmega Skill helps agents use the local synomega Python package for retrosynthesis, reaction prediction, multi-step synthesis planning, synthesizability scoring, plausibility screening, and multi-component reaction evolution for organic molecules.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, chemists, and cheminformatics practitioners use this skill to ask an agent for synthesis planning, reaction outcome prediction, route scoring, and local command guidance around organic small molecules. It is intended for benign chemistry workflows and defers hazardous or controlled-compound decisions to the host safety policy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Manual installation commands in the artifact can fetch executable code from mutable remote URLs without integrity checks.\n\nMitigation: Use the ClawHub install path; if installing manually, pin a reviewed commit and verify the provided file hashes before use.\n\nRisk: The Python dependency and first-use model or stock downloads can affect privacy-sensitive, bandwidth-limited, air-gapped, or reproducibility-critical environments.\n\nMitigation: Run the dependency in a dedicated environment, pin requirements, and pre-fetch or mirror model assets before deployment.\n\nRisk: Retrosynthesis and route-planning outputs can be dual-use for hazardous, controlled, or otherwise high-risk compounds.\n\nMitigation: Apply the host safety policy before giving operational synthesis guidance and require additional review for high-risk targets.\n\n## Reference(s):\n\n- [SynOmega documentation](https://zbc0315.github.io/synomega/)\n- [SynOmega package on PyPI](https://pypi.org/project/synomega/)\n- [Synomega Skill on ClawHub](https://clawhub.ai/zbc0315/skills/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell command snippets and JSON-producing helper commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The bundled helper script prints JSON for retrosynthesis, forward prediction, planning, scoring, and multi-component evolution operations.]\n\n## Skill Version(s):\n\n1.8.1 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.8.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.8.0: 6 files, 12947 bytes\n\nFiles: LICENSE (1064b), README.md (3382b), scripts/synomega_run.py (11738b), skill-card.md (2891b), SKILL.md (12712b), _meta.json (127b)\n\nFile v1.8.0:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis, reaction prediction, and synthesizability for organic molecules,\n  using the synomega Python package (pip install synomega) — runs locally, works\n  out of the box. Six capabilities: single-step retrosynthesis (product → reactants,\n  candidate disconnections), single-step forward reaction prediction / reaction\n  outcome (reactants → product), multi-step route planning down to purchasable\n  building blocks, a continuous synthesizability / makeability score (SynScore),\n  reaction-plausibility screening, and multi-component evolution (growing a forward\n  synthesis network from a set of reactants, e.g. one-pot / multicomponent\n  chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable\n  name) and asks how to make / synthesize it, whether it can be made or how hard,\n  how to rank molecules by ease of synthesis, what reactants give a target, what\n  product a set of reactants gives, a reaction outcome, or how a reactant mixture\n  evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and\n  reaction-prediction tasks. Safety judgments for hazardous, controlled, or\n  otherwise dual-use compounds are deferred to the host's safety policy (see\n  \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/),\n[docs](https://zbc0315.github.io/synomega/)) for organic small-molecule reactions.\nIt exposes **six capabilities** behind one install:\n\n| # | Capability | Direction | Helper command |\n|---|---|---|---|\n| 1 | **Single-step retrosynthesis** | product → reactants | `single-step` |\n| 2 | **Single-step forward prediction** | reactants → product | `forward` |\n| 3 | **Multi-step route planning** | target → route to purchasable stock | `plan` |\n| 4 | **Synthesizability score (SynScore)** | target → 0–1 makeability | `score` |\n| 5 | **Reaction-plausibility screening** | filter single-step candidates | env toggle |\n| 6 | **Multi-component evolution** | reactant set → forward synthesis network | `evolve` |\n\nIt runs entirely locally. **It works out of the box** — the pretrained models and\nbuilding-block stock download automatically on first use, so there is nothing to\ntrain or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> call automatically reaches out to a **remote mirror** (USTC GitLab and/or GitHub)\n> and downloads the model(s) and stock — **a few hundred MB** — into\n> `~/.cache/synomega`. Nothing else phones home, but this first fetch does.\n> Controls: pre-fetch with `synomega download`; change the cache dir with\n> `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR` (`ustc` or `github`). In\n> **air-gapped, bandwidth-limited, privacy-sensitive, or reproducibility-critical**\n> environments, pre-fetch (or point at a local model/stock) and treat the download\n> as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\nsynomega download              # optional: pre-fetch the default assets\n```\n\nRequires Python ≥ 3.10.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for every operation — no configuration, it\ndownloads what it needs on first call. Always pass a valid **SMILES** (dot-separate\nmultiple molecules).\n\n```bash\n# 1. single-step retrosynthesis — \"what reacts to give X?\"\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n\n# 2. forward prediction — \"what do these reactants give?\"\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n\n# 3. multi-step route planning — \"how do I make X?\"\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\n\n# 4. synthesizability score — \"can X be made / how hard?\"  (simplify model by default)\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\n\n# 6. multi-component evolution — grow a forward synthesis network\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n(Capability 5, reaction plausibility, is an env toggle applied to the others — see\nbelow.)\n\n## The six capabilities\n\n### 1. Single-step retrosynthesis — `single-step`\n\nGiven a **product**, rank one-step disconnections into candidate **reactants**.\n\n```bash\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nOutput: `{\"target\", \"predictions\": [{\"rank\", \"reactants\": [SMILES,...], \"score\"\n(0–1, higher = more likely), \"plausibility\" (null unless screening is on),\n\"template_id\"}]}`. Present the top few disconnections.\n\n### 2. Single-step forward prediction — `forward`\n\nGiven **reactants**, rank the likely **products**. Uses a separate forward model.\n\n```bash\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n```\n\nOutput: `{\"reactants\", \"products\": [{\"rank\", \"product\" (SMILES), \"score\" (0–1\nforward probability), \"template_id\"}]}`. Template-based (product top-1 ≈ 0.64):\ntreat products as candidates, not guarantees.\n\n### 3. Multi-step route planning — `plan`\n\nSearch an AND-OR graph for a full route from the **target** down to purchasable\nbuilding blocks.\n\n```bash\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --simplify   # cheaper search\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --forward-consistency\n```\n\nOutput: `{\"target\", \"algorithm\", \"solved\" (bool — a fully-purchasable route\nexists), \"routes\": [route tree, best first]}`. Each route tree nests\n`reactants → product` recursively until every leaf is an in-stock building block;\nread it top-down. Options: `--algorithm {retrostar,mcts,bfs}`, `--max-routes`,\n`--exclude-target`, `--simplify`, `--forward-consistency` (with `--forward-top-k`,\ndefault 3 — keep a single-step candidate only if its retro template is in the\nforward model's top-k for its reactants; prunes forward-implausible disconnections).\n\n### 4. Synthesizability score (SynScore) — `score`\n\nScore a **target** 0–1 for how makeable it is, for ranking a set of molecules.\nRuns one route search internally, then folds it into a score.\n\n```bash\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --original   # unconstrained model\n```\n\nOutput (a `MoleculeReport` dict): the headline is **`score`** = `1/(U+1)**U`, where\n`U` is the number of the best route's starting materials that are **not**\npurchasable. Solved (U=0) → 1.0; U=1 → 0.5; U=2 → 0.11; no route → 0. Also:\n`solved`, `bb_coverage` (fraction of leaves purchasable), `min_steps`,\n`num_leaves`, `num_purchasable_leaves`. Use `score` to rank candidates; use\n`solved` to compare against published solve-rate. **Defaults to the\nsimplification-constrained model @ expansion width 10** (synomega's recommended\nscoring config); `--original` reverts to the unconstrained model.\n\n### 5. Reaction-plausibility screening — env toggle\n\nAn optional **mapping-free dual-tower model** scores how likely each single-step\ncandidate's `reactants → target` actually happens, and **drops** implausible ones\n(it only removes wrong disconnections, never re-ranks the rest). It applies to\n`single-step`, `plan`, and `score` alike. **Off by default** — it does not improve\ntop-k recall and adds latency.\n\n```bash\nSYNOMEGA_PLAUSIBILITY=1 SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4 \\\n  python scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nWhen on, each `single-step` prediction gains a `plausibility` field (0–1). In\nPython: `synomega.load_default_planner(plausibility=True, plausibility_threshold=0.4)`.\n\n### 6. Multi-component evolution — `evolve`\n\nFrom a set of starting **reactants**, repeatedly pick two molecules from a growing\npool, run the forward model, and add products back — growing a forward **synthesis\nnetwork**. Good for exploring multi-component / one-pot chemistry.\n\n```bash\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" \\\n  --max-depth 3 --score-threshold 0.01 --top 20\n```\n\nOutput: `{\"reactants\", \"stats\", \"num_molecules\", \"num_reaction_edges\",\n\"molecules\": [{\"smiles\", \"total_score\", \"depth\", \"step_score\", \"parents\",\n\"template_id\"}]}`. Each molecule's `total_score` = `min(parent totals) × step\nprobability` (starting reactants = 1.0); `depth` is the synthesis-tree depth.\nOptions: `--forward-top-k` (products per pair), `--frontier-width` (cap fan-out for\nmany reactants), `--top` (how many products to report). In Python,\n`MultiComponentEvolution(...).evolve([...])` also supports `mode=\"disk\"` (SQLite)\nfor reactant sets whose intermediates do not fit in RAM.\n\n## Common options\n\n- **`--exclude-target`** (`plan`, `score`): treat the target as *not* purchasable\n  even if it is itself in the stock, so a catalogue molecule is not reported as\n  trivially solved in zero steps. Use it for \"how would you actually make X\" about\n  a possibly-buyable molecule.\n- **`--simplify`** (`plan`) / **`--original`** (`score`): the\n  simplification-constrained single-step model proposes only *fragmentation*\n  disconnections (split into ≥2 precursors) and reaches stock with fewer\n  expansions. `score` uses it by default; `plan` uses the original model unless you\n  pass `--simplify`.\n\n## Python API\n\n```python\nimport synomega\n\nplanner = synomega.load_default_planner()              # default model + stock (downloads once)\n\n# 1. single-step retro\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 3. multi-step plan\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved); print(result.best_route.describe())\n\n# 4. synthesizability score (recommended entry — simplify model @ k=10)\nscorer = synomega.load_default_scorer()\nprint(scorer.score(\"CC(=O)Nc1ccccc1O\").as_dict())\n\n# 2 + 6. forward + evolution\nfrom synomega.forward import ForwardTemplateGNN, MultiComponentEvolution\nfwd = ForwardTemplateGNN.default()\nfor pred in fwd.predict(\"CC(=O)O.NCc1ccccc1\", top_k=5):\n    print(pred.score, pred.product)\nevo = MultiComponentEvolution(fwd, max_depth=3, score_threshold=0.01)\nres = evo.evolve([\"CC(=O)c1ccccc1\", \"C=O\", \"CNC\"]); print(res.describe()); res.close()\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`,\n`SYNOMEGA_STOCK` (+ `SYNOMEGA_STOCK_KEYS=1` for a precomputed `.keys` file), and\n`SYNOMEGA_FORWARD_MODEL` (the helper reads them), or build the objects directly\nwith `TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- Larger `--max-depth` / `--max-steps` / `--top-k` finds more but is slower; start\n  at the defaults (depth 5, top-k 10).\n- The first call downloads a few hundred MB — expect a one-time delay. In Python,\n  build the planner/model once and reuse it; loading takes a few seconds.\n- Match the tool to the question: making X → `plan`/`score`; what makes X →\n  `single-step`; what do these give → `forward`; explore a reactant mixture →\n  `evolve`.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Docs:    https://zbc0315.github.io/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.8.0:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis and reaction-prediction toolkit on PyPI\n([docs](https://zbc0315.github.io/synomega/)). It teaches Claude Code, OpenClaw and\nother coding agents to use the `synomega` Python package across its **six\ncapabilities**: single-step retrosynthesis (product → reactants), single-step\nforward prediction (reactants → product), multi-step route planning, a continuous\n**synthesizability score** (SynScore), reaction-plausibility screening, and\nmulti-component evolution (growing a forward synthesis network from a set of\nreactants).\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n- \"What product do acetic acid and benzylamine give?\"\n- \"Evolve a forward network from acetophenone + formaldehyde + dimethylamine.\"\n\nOr call the bundled helper directly (one JSON-printing command per capability):\n\n```bash\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10     # product -> reactants\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5    # reactants -> product\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5  # multi-step route\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5  # synthesizability (SynScore)\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n`plan` and `score` take `--exclude-target` (treat the target as not purchasable\neven if it is a catalogue molecule, so it is not trivially \"solved\" in zero steps).\nReaction-plausibility screening is an env toggle: `SYNOMEGA_PLAUSIBILITY=1`. See\n`SKILL.md` for the full option list and output shapes.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any capability (single-step / forward / plan / score / evolve), prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.8.0:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.8.0\",\n  \"publishedAt\": 1787813019824\n}\n\nFile v1.8.0:skill-card.md\n\n## Description:\n\nSynomega Skill helps agents use the local synomega Python package for retrosynthesis, forward reaction prediction, route planning, synthesizability scoring, reaction-plausibility screening, and multi-component reaction-network exploration for organic molecules.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, chemists, and agent users use this skill to ask synthesis-planning and reaction-prediction questions from valid SMILES inputs, including how to make a target molecule, whether it is likely synthesizable, what reactants could produce it, or how a reactant mixture may evolve. The skill delegates safety decisions for hazardous, controlled, or dual-use chemistry to the host policy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill installs a local Python chemistry package and may download pretrained model and stock data on first use.\n\nMitigation: In bandwidth-limited, air-gapped, privacy-sensitive, or reproducibility-critical environments, prefetch assets, pin a trusted mirror, or configure local SYNOMEGA_MODEL and SYNOMEGA_STOCK paths before use.\n\nRisk: Retrosynthesis and route-planning capabilities can be dual-use for hazardous, controlled, or otherwise restricted compounds.\n\nMitigation: Apply the host safety policy before providing operational synthesis assistance, and avoid automatically producing actionable routes for high-risk targets.\n\nRisk: Reaction predictions and synthesis routes are model-generated candidates rather than guaranteed laboratory outcomes.\n\nMitigation: Treat predicted products, scores, and routes as decision-support outputs that require expert review and validation.\n\n## Reference(s):\n\n- [SynOmega documentation](https://zbc0315.github.io/synomega/)\n- [SynOmega package on PyPI](https://pypi.org/project/synomega/)\n- [SynOmega toolkit source](https://github.com/zbc0315/synomega)\n- [SynOmega skill source](https://github.com/zbc0315/synomega-skill)\n- [ClawHub skill page](https://clawhub.ai/zbc0315/skills/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell command examples and JSON-producing helper outputs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs are candidate chemistry predictions and route-planning guidance; generated plans should be reviewed before operational use.]\n\n## Skill Version(s):\n\n1.8.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.8.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.7.0: 6 files, 8620 bytes\n\nFiles: _meta.json (127b), LICENSE (1064b), README.md (2570b), scripts/synomega_run.py (6046b), skill-card.md (2066b), SKILL.md (6623b)\n\nFile v1.7.0:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis with the synomega Python package (pip install synomega) —\n  single-step reactant prediction, multi-step route planning, and a continuous\n  synthesizability score (bb-coverage) for a target molecule given as SMILES. Use\n  this whenever the user asks whether or how a molecule can be synthesized, wants\n  candidate disconnections/reactants, wants a full synthesis route down to\n  purchasable building blocks, or wants to rank/score molecules by makeability.\n---\n\n# synomega\n\nsynomega is a **Python package** ([PyPI](https://pypi.org/project/synomega/))\nthat turns a target molecule (SMILES) into synthesis routes and a **continuous\nsynthesizability score**. Three layers behind one interface: single-step\nprediction → AND-OR graph search → synthesizability scoring.\n\nThis skill runs synomega locally. There is no service to call — everything is\n`pip install synomega` plus a trained model and a building-block file.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"   # neural D-MPNN backend (torch); needs a checkpoint\n# pip install synomega        # core only: rdkit + numpy + template-rule backend\n```\n\nRequires Python ≥ 3.10.\n\n## What you need besides the package\n\nsynomega ships the *framework*, not the weights. To make predictions you supply:\n\n1. **A trained model run directory** (`SYNOMEGA_MODEL`) — contains `best.pt` +\n   `config.yaml` (a D-MPNN template classifier).\n2. **A building-block stock file** (`SYNOMEGA_STOCK`) — the purchasable molecules\n   a route may end on. Either a raw `.smi` catalogue, or a precomputed\n   `.keys` file (set `SYNOMEGA_STOCK_KEYS=1`), built once with\n   `synomega build-stock`.\n\nPoint the helper script and examples at them via environment variables:\n\n```bash\nexport SYNOMEGA_MODEL=/path/to/run           # trained run directory\nexport SYNOMEGA_STOCK=/path/to/stock.keys.gz # building blocks\nexport SYNOMEGA_STOCK_KEYS=1                  # 1 if a .keys file, 0 for raw .smi\nexport SYNOMEGA_DEVICE=cpu                    # or cuda:0\n```\n\nIf the user has not supplied a model + stock, say so and ask for them — do not\nfabricate chemistry.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` loads the model + stock from those env vars and prints\nJSON for any of the three operations. No arguments to wire up:\n\n```bash\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\npython scripts/synomega_run.py plan        \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --forward-consistency\n```\n\n`plan` and `score` also accept `--forward-consistency` (Python:\n`forward_consistency=True`), which prunes each single-step candidate by a round-trip\ncheck — keep it only if its retro template is in the forward model's top-k\n(`--forward-top-k`, default 3) for those reactants. It drops forward-implausible\ndisconnections, shrinking the search's branching; off by default (downloads the r20\nforward model on first use).\n\n`plan` and `score` accept `--exclude-target` (Python: `exclude_target=True`),\nwhich treats the target as *not* purchasable even if it is itself in the stock —\nso a catalogue molecule is not reported as trivially solved in zero steps. Default\noff; use it when the user asks \"how would you actually make X\" about a molecule\nthat may be commercially available.\n\n## The three operations (Python API)\n\n```python\nfrom synomega import Planner, SynthesizabilityScorer\nfrom synomega.singlestep import TemplateGNN\nfrom synomega.stock import InMemoryStock\n\nmodel   = TemplateGNN.from_pretrained(\"path/to/run\", device=\"cpu\")\nstock   = InMemoryStock.from_keys_file(\"stock.keys.gz\")   # or .from_file(\"cat.smi\")\nplanner = Planner(model, stock, algorithm=\"retrostar\")\n\n# 1) Single-step — \"what reacts to give X?\"\nfor p in model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)          # ranked reactant sets\n\n# 2) Multi-step — \"how do I make X?\"\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved)\nprint(result.best_route.describe())      # step-by-step route\n\n# 3) Synthesizability score — \"can X be made / how hard?\"\nscorer = SynthesizabilityScorer(planner)\nr = scorer.score(\"CC(=O)Nc1ccccc1O\", max_steps=5)\nprint(r.bb_coverage, r.min_steps, r.solved)\n```\n\n## The CLI\n\n```bash\n# one-time: turn a vendor catalogue into a fast InChIKey stock file\nsynomega build-stock --catalogue catalogue.smi.gz --out stock.keys.gz\n\n# route planning for one target\nsynomega plan  --target \"CC(=O)Nc1ccccc1O\" --model \"$SYNOMEGA_MODEL\" \\\n               --stock \"$SYNOMEGA_STOCK\" --stock-is-keys --max-steps 5\n\n# synthesizability over a list of targets -> JSON report\nsynomega score --targets targets.smi --model \"$SYNOMEGA_MODEL\" \\\n               --stock \"$SYNOMEGA_STOCK\" --stock-is-keys --max-steps 5 --out report.json\n```\n\n(There is no `single-step` CLI subcommand — use the Python API or the helper\nscript for that.)\n\n## How to read the output\n\n- **single-step** → ranked `Prediction`s; each has `.reactants` (a tuple of\n  SMILES) and `.score` (higher = more likely). Present the top few disconnections.\n- **plan** → a route tree. Read it top-down: the target decomposes into the\n  reactants that make it, recursively, until every leaf is a purchasable building\n  block. `result.best_route.describe()` prints it as numbered steps.\n- **score** → the headline is **`bb_coverage`** (0–1): the fraction of the best\n  route's leaves that are purchasable. It is *continuous*, so 0.8 (a near-miss)\n  is meaningfully better than 0.0 — use it to rank candidates, not just to split\n  solved/unsolved. Also report `solved` (a fully-purchasable route exists) and\n  `min_steps` (reactions in the shortest solved route).\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- `algorithm` ∈ {`retrostar` (default), `mcts`, `bfs`}. Larger `max_depth` /\n  `max_steps` finds more but is slower; start at 5.\n- Loading the model is slow (seconds) — in Python, build `model`/`planner` once\n  and reuse across molecules; the helper script loads per call.\n\n## Try it online\n\nThere is a hosted demo of the same engine (draw a molecule, see routes and the\nscore) — useful for a human to eyeball results, not needed by this skill.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.7.0:README.md\n\n# synomega-skill\n\nAn agent **Skill** for [synomega](https://github.com/zbc0315/synomega) — the\nretrosynthesis toolkit on PyPI. It teaches Claude Code, OpenClaw and other coding\nagents to use the `synomega` Python package: predict single-step disconnections,\nplan multi-step routes, and compute a continuous **synthesizability score** for a\nmolecule given as SMILES.\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\nexport SYNOMEGA_MODEL=/path/to/run           # a trained run directory\nexport SYNOMEGA_STOCK=/path/to/stock.keys.gz # building blocks\nexport SYNOMEGA_STOCK_KEYS=1                  # 1 if a .keys file, 0 for raw .smi\n```\n\nsynomega ships the framework, not the weights — you supply a model checkpoint and\na stock file. See the [synomega docs](https://github.com/zbc0315/synomega).\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n\nOr call the bundled helper directly:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` take `--exclude-target` to treat the target as not\npurchasable even if it is itself a catalogue molecule (so it is not trivially\n\"solved\" in zero steps). Default off.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any of the three operations, prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.7.0:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.7.0\",\n  \"publishedAt\": 1787812765034\n}\n\nFile v1.7.0:skill-card.md\n\n## Description:\n\nSynomega Skill helps agents run the local synomega Python package for single-step retrosynthesis, multi-step route planning, and synthesizability scoring from molecular SMILES.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nExternal developers and chemistry-focused users use this skill to ask an agent for candidate reactants, synthesis routes to purchasable building blocks, and makeability scores for target molecules represented as SMILES.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Chemistry output can be incorrect or unsupported if the model checkpoint or building-block stock is missing, outdated, or untrusted.\n\nMitigation: Use trusted SYNOMEGA_MODEL and SYNOMEGA_STOCK inputs, ask the user for them when absent, and avoid fabricating chemistry.\n\nRisk: Forward-consistency mode may fetch an additional model on first use.\n\nMitigation: Enable forward-consistency only when intended and review local network and dependency policy before first use.\n\n## Reference(s):\n\n- [synomega package on PyPI](https://pypi.org/project/synomega/)\n- [synomega toolkit documentation](https://github.com/zbc0315/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with inline shell and Python examples, plus JSON output from the helper script.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Runs locally; the helper requires SYNOMEGA_MODEL and SYNOMEGA_STOCK and prints JSON for retrosynthesis, route planning, or scoring operations.]\n\n## Skill Version(s):\n\n1.7.0 (source: server release metadata and _meta.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.7.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.6.1: 6 files, 12459 bytes\n\nFiles: LICENSE (1064b), README.md (3382b), scripts/synomega_run.py (10563b), skill-card.md (2275b), SKILL.md (12421b), _meta.json (127b)\n\nFile v1.6.1:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis, reaction prediction, and synthesizability for organic molecules,\n  using the synomega Python package (pip install synomega) — runs locally, works\n  out of the box. Six capabilities: single-step retrosynthesis (product → reactants,\n  candidate disconnections), single-step forward reaction prediction / reaction\n  outcome (reactants → product), multi-step route planning down to purchasable\n  building blocks, a continuous synthesizability / makeability score (SynScore),\n  reaction-plausibility screening, and multi-component evolution (growing a forward\n  synthesis network from a set of reactants, e.g. one-pot / multicomponent\n  chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable\n  name) and asks how to make / synthesize it, whether it can be made or how hard,\n  how to rank molecules by ease of synthesis, what reactants give a target, what\n  product a set of reactants gives, a reaction outcome, or how a reactant mixture\n  evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and\n  reaction-prediction tasks. Safety judgments for hazardous, controlled, or\n  otherwise dual-use compounds are deferred to the host's safety policy (see\n  \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/),\n[docs](https://zbc0315.github.io/synomega/)) for organic small-molecule reactions.\nIt exposes **six capabilities** behind one install:\n\n| # | Capability | Direction | Helper command |\n|---|---|---|---|\n| 1 | **Single-step retrosynthesis** | product → reactants | `single-step` |\n| 2 | **Single-step forward prediction** | reactants → product | `forward` |\n| 3 | **Multi-step route planning** | target → route to purchasable stock | `plan` |\n| 4 | **Synthesizability score (SynScore)** | target → 0–1 makeability | `score` |\n| 5 | **Reaction-plausibility screening** | filter single-step candidates | env toggle |\n| 6 | **Multi-component evolution** | reactant set → forward synthesis network | `evolve` |\n\nIt runs entirely locally. **It works out of the box** — the pretrained models and\nbuilding-block stock download automatically on first use, so there is nothing to\ntrain or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> call automatically reaches out to a **remote mirror** (USTC GitLab and/or GitHub)\n> and downloads the model(s) and stock — **a few hundred MB** — into\n> `~/.cache/synomega`. Nothing else phones home, but this first fetch does.\n> Controls: pre-fetch with `synomega download`; change the cache dir with\n> `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR` (`ustc` or `github`). In\n> **air-gapped, bandwidth-limited, privacy-sensitive, or reproducibility-critical**\n> environments, pre-fetch (or point at a local model/stock) and treat the download\n> as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\nsynomega download              # optional: pre-fetch the default assets\n```\n\nRequires Python ≥ 3.10.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for every operation — no configuration, it\ndownloads what it needs on first call. Always pass a valid **SMILES** (dot-separate\nmultiple molecules).\n\n```bash\n# 1. single-step retrosynthesis — \"what reacts to give X?\"\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n\n# 2. forward prediction — \"what do these reactants give?\"\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n\n# 3. multi-step route planning — \"how do I make X?\"\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\n\n# 4. synthesizability score — \"can X be made / how hard?\"  (simplify model by default)\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\n\n# 6. multi-component evolution — grow a forward synthesis network\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n(Capability 5, reaction plausibility, is an env toggle applied to the others — see\nbelow.)\n\n## The six capabilities\n\n### 1. Single-step retrosynthesis — `single-step`\n\nGiven a **product**, rank one-step disconnections into candidate **reactants**.\n\n```bash\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nOutput: `{\"target\", \"predictions\": [{\"rank\", \"reactants\": [SMILES,...], \"score\"\n(0–1, higher = more likely), \"plausibility\" (null unless screening is on),\n\"template_id\"}]}`. Present the top few disconnections.\n\n### 2. Single-step forward prediction — `forward`\n\nGiven **reactants**, rank the likely **products**. Uses a separate forward model.\n\n```bash\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n```\n\nOutput: `{\"reactants\", \"products\": [{\"rank\", \"product\" (SMILES), \"score\" (0–1\nforward probability), \"template_id\"}]}`. Template-based (product top-1 ≈ 0.64):\ntreat products as candidates, not guarantees.\n\n### 3. Multi-step route planning — `plan`\n\nSearch an AND-OR graph for a full route from the **target** down to purchasable\nbuilding blocks.\n\n```bash\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --simplify   # cheaper search\n```\n\nOutput: `{\"target\", \"algorithm\", \"solved\" (bool — a fully-purchasable route\nexists), \"routes\": [route tree, best first]}`. Each route tree nests\n`reactants → product` recursively until every leaf is an in-stock building block;\nread it top-down. Options: `--algorithm {retrostar,mcts,bfs}`, `--max-routes`,\n`--exclude-target`, `--simplify`.\n\n### 4. Synthesizability score (SynScore) — `score`\n\nScore a **target** 0–1 for how makeable it is, for ranking a set of molecules.\nRuns one route search internally, then folds it into a score.\n\n```bash\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --original   # unconstrained model\n```\n\nOutput (a `MoleculeReport` dict): the headline is **`score`** = `1/(U+1)**U`, where\n`U` is the number of the best route's starting materials that are **not**\npurchasable. Solved (U=0) → 1.0; U=1 → 0.5; U=2 → 0.11; no route → 0. Also:\n`solved`, `bb_coverage` (fraction of leaves purchasable), `min_steps`,\n`num_leaves`, `num_purchasable_leaves`. Use `score` to rank candidates; use\n`solved` to compare against published solve-rate. **Defaults to the\nsimplification-constrained model @ expansion width 10** (synomega's recommended\nscoring config); `--original` reverts to the unconstrained model.\n\n### 5. Reaction-plausibility screening — env toggle\n\nAn optional **mapping-free dual-tower model** scores how likely each single-step\ncandidate's `reactants → target` actually happens, and **drops** implausible ones\n(it only removes wrong disconnections, never re-ranks the rest). It applies to\n`single-step`, `plan`, and `score` alike. **Off by default** — it does not improve\ntop-k recall and adds latency.\n\n```bash\nSYNOMEGA_PLAUSIBILITY=1 SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4 \\\n  python scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nWhen on, each `single-step` prediction gains a `plausibility` field (0–1). In\nPython: `synomega.load_default_planner(plausibility=True, plausibility_threshold=0.4)`.\n\n### 6. Multi-component evolution — `evolve`\n\nFrom a set of starting **reactants**, repeatedly pick two molecules from a growing\npool, run the forward model, and add products back — growing a forward **synthesis\nnetwork**. Good for exploring multi-component / one-pot chemistry.\n\n```bash\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" \\\n  --max-depth 3 --score-threshold 0.01 --top 20\n```\n\nOutput: `{\"reactants\", \"stats\", \"num_molecules\", \"num_reaction_edges\",\n\"molecules\": [{\"smiles\", \"total_score\", \"depth\", \"step_score\", \"parents\",\n\"template_id\"}]}`. Each molecule's `total_score` = `min(parent totals) × step\nprobability` (starting reactants = 1.0); `depth` is the synthesis-tree depth.\nOptions: `--forward-top-k` (products per pair), `--frontier-width` (cap fan-out for\nmany reactants), `--top` (how many products to report). In Python,\n`MultiComponentEvolution(...).evolve([...])` also supports `mode=\"disk\"` (SQLite)\nfor reactant sets whose intermediates do not fit in RAM.\n\n## Common options\n\n- **`--exclude-target`** (`plan`, `score`): treat the target as *not* purchasable\n  even if it is itself in the stock, so a catalogue molecule is not reported as\n  trivially solved in zero steps. Use it for \"how would you actually make X\" about\n  a possibly-buyable molecule.\n- **`--simplify`** (`plan`) / **`--original`** (`score`): the\n  simplification-constrained single-step model proposes only *fragmentation*\n  disconnections (split into ≥2 precursors) and reaches stock with fewer\n  expansions. `score` uses it by default; `plan` uses the original model unless you\n  pass `--simplify`.\n\n## Python API\n\n```python\nimport synomega\n\nplanner = synomega.load_default_planner()              # default model + stock (downloads once)\n\n# 1. single-step retro\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 3. multi-step plan\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved); print(result.best_route.describe())\n\n# 4. synthesizability score (recommended entry — simplify model @ k=10)\nscorer = synomega.load_default_scorer()\nprint(scorer.score(\"CC(=O)Nc1ccccc1O\").as_dict())\n\n# 2 + 6. forward + evolution\nfrom synomega.forward import ForwardTemplateGNN, MultiComponentEvolution\nfwd = ForwardTemplateGNN.default()\nfor pred in fwd.predict(\"CC(=O)O.NCc1ccccc1\", top_k=5):\n    print(pred.score, pred.product)\nevo = MultiComponentEvolution(fwd, max_depth=3, score_threshold=0.01)\nres = evo.evolve([\"CC(=O)c1ccccc1\", \"C=O\", \"CNC\"]); print(res.describe()); res.close()\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`,\n`SYNOMEGA_STOCK` (+ `SYNOMEGA_STOCK_KEYS=1` for a precomputed `.keys` file), and\n`SYNOMEGA_FORWARD_MODEL` (the helper reads them), or build the objects directly\nwith `TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- Larger `--max-depth` / `--max-steps` / `--top-k` finds more but is slower; start\n  at the defaults (depth 5, top-k 10).\n- The first call downloads a few hundred MB — expect a one-time delay. In Python,\n  build the planner/model once and reuse it; loading takes a few seconds.\n- Match the tool to the question: making X → `plan`/`score`; what makes X →\n  `single-step`; what do these give → `forward`; explore a reactant mixture →\n  `evolve`.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Docs:    https://zbc0315.github.io/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.6.1:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis and reaction-prediction toolkit on PyPI\n([docs](https://zbc0315.github.io/synomega/)). It teaches Claude Code, OpenClaw and\nother coding agents to use the `synomega` Python package across its **six\ncapabilities**: single-step retrosynthesis (product → reactants), single-step\nforward prediction (reactants → product), multi-step route planning, a continuous\n**synthesizability score** (SynScore), reaction-plausibility screening, and\nmulti-component evolution (growing a forward synthesis network from a set of\nreactants).\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n- \"What product do acetic acid and benzylamine give?\"\n- \"Evolve a forward network from acetophenone + formaldehyde + dimethylamine.\"\n\nOr call the bundled helper directly (one JSON-printing command per capability):\n\n```bash\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10     # product -> reactants\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5    # reactants -> product\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5  # multi-step route\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5  # synthesizability (SynScore)\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n`plan` and `score` take `--exclude-target` (treat the target as not purchasable\neven if it is a catalogue molecule, so it is not trivially \"solved\" in zero steps).\nReaction-plausibility screening is an env toggle: `SYNOMEGA_PLAUSIBILITY=1`. See\n`SKILL.md` for the full option list and output shapes.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any capability (single-step / forward / plan / score / evolve), prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.6.1:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.6.1\",\n  \"publishedAt\": 1787245358239\n}\n\nFile v1.6.1:skill-card.md\n\n## Description:\n\nRetrosynthesis, reaction prediction, and synthesizability for organic molecules using the local SynOmega Python package.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, researchers, and chemistry-focused agents use this skill to evaluate organic molecules, predict reaction outcomes, plan retrosynthetic routes, score synthesizability, and explore multi-component reaction networks from SMILES inputs.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The first use downloads large model and stock assets and stores them in a local cache.\n\nMitigation: Prefetch assets explicitly, set SYNOMEGA_CACHE to an approved location, or point SYNOMEGA_MODEL and SYNOMEGA_STOCK at approved local assets in private, air-gapped, or reproducibility-sensitive environments.\n\nRisk: Retrosynthesis and reaction prediction can be dual-use for hazardous, controlled, or operational synthesis requests.\n\nMitigation: Apply the host safety policy before producing route plans, procurement-relevant details, or other operational assistance for high-risk compounds.\n\n## Reference(s):\n\n- [SynOmega package](https://pypi.org/project/synomega/)\n- [SynOmega documentation](https://zbc0315.github.io/synomega/)\n- [SynOmega toolkit source](https://github.com/zbc0315/synomega)\n- [ClawHub skill page](https://clawhub.ai/zbc0315/skills/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance, JSON]\n\n**Output Format:** [Markdown guidance with shell commands and JSON outputs from the helper script]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs are candidate chemistry predictions and route-planning results; they require host safety-policy review for hazardous, controlled, or operational synthesis requests.]\n\n## Skill Version(s):\n\n1.6.1 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.6.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.6.0: 6 files, 12543 bytes\n\nFiles: LICENSE (1064b), README.md (3382b), scripts/synomega_run.py (10563b), skill-card.md (2716b), SKILL.md (12153b), _meta.json (127b)\n\nFile v1.6.0:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis and forward reaction prediction with the synomega Python package\n  (pip install synomega) — single-step retrosynthesis (product → reactants),\n  single-step forward prediction (reactants → product), multi-step route planning\n  down to purchasable building blocks, a continuous synthesizability score\n  (SynScore), reaction-plausibility screening, and multi-component evolution\n  (growing a forward synthesis network from a set of reactants). Use this for\n  legitimate retrosynthesis and cheminformatics tasks — when the user gives a\n  specific molecule (as SMILES or a resolvable name) and asks for candidate\n  disconnections/reactants, a full synthesis route, a makeability score to rank\n  molecules, the likely product of given reactants, or how a set of starting\n  materials evolves into products. Safety judgments for hazardous, controlled, or\n  otherwise dual-use compounds are deferred to the host's safety policy (see\n  \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/),\n[docs](https://zbc0315.github.io/synomega/)) for organic small-molecule reactions.\nIt exposes **six capabilities** behind one install:\n\n| # | Capability | Direction | Helper command |\n|---|---|---|---|\n| 1 | **Single-step retrosynthesis** | product → reactants | `single-step` |\n| 2 | **Single-step forward prediction** | reactants → product | `forward` |\n| 3 | **Multi-step route planning** | target → route to purchasable stock | `plan` |\n| 4 | **Synthesizability score (SynScore)** | target → 0–1 makeability | `score` |\n| 5 | **Reaction-plausibility screening** | filter single-step candidates | env toggle |\n| 6 | **Multi-component evolution** | reactant set → forward synthesis network | `evolve` |\n\nIt runs entirely locally. **It works out of the box** — the pretrained models and\nbuilding-block stock download automatically on first use, so there is nothing to\ntrain or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> call automatically reaches out to a **remote mirror** (USTC GitLab and/or GitHub)\n> and downloads the model(s) and stock — **a few hundred MB** — into\n> `~/.cache/synomega`. Nothing else phones home, but this first fetch does.\n> Controls: pre-fetch with `synomega download`; change the cache dir with\n> `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR` (`ustc` or `github`). In\n> **air-gapped, bandwidth-limited, privacy-sensitive, or reproducibility-critical**\n> environments, pre-fetch (or point at a local model/stock) and treat the download\n> as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\nsynomega download              # optional: pre-fetch the default assets\n```\n\nRequires Python ≥ 3.10.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for every operation — no configuration, it\ndownloads what it needs on first call. Always pass a valid **SMILES** (dot-separate\nmultiple molecules).\n\n```bash\n# 1. single-step retrosynthesis — \"what reacts to give X?\"\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n\n# 2. forward prediction — \"what do these reactants give?\"\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n\n# 3. multi-step route planning — \"how do I make X?\"\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\n\n# 4. synthesizability score — \"can X be made / how hard?\"  (simplify model by default)\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\n\n# 6. multi-component evolution — grow a forward synthesis network\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n(Capability 5, reaction plausibility, is an env toggle applied to the others — see\nbelow.)\n\n## The six capabilities\n\n### 1. Single-step retrosynthesis — `single-step`\n\nGiven a **product**, rank one-step disconnections into candidate **reactants**.\n\n```bash\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nOutput: `{\"target\", \"predictions\": [{\"rank\", \"reactants\": [SMILES,...], \"score\"\n(0–1, higher = more likely), \"plausibility\" (null unless screening is on),\n\"template_id\"}]}`. Present the top few disconnections.\n\n### 2. Single-step forward prediction — `forward`\n\nGiven **reactants**, rank the likely **products**. Uses a separate forward model.\n\n```bash\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n```\n\nOutput: `{\"reactants\", \"products\": [{\"rank\", \"product\" (SMILES), \"score\" (0–1\nforward probability), \"template_id\"}]}`. Template-based (product top-1 ≈ 0.64):\ntreat products as candidates, not guarantees.\n\n### 3. Multi-step route planning — `plan`\n\nSearch an AND-OR graph for a full route from the **target** down to purchasable\nbuilding blocks.\n\n```bash\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --simplify   # cheaper search\n```\n\nOutput: `{\"target\", \"algorithm\", \"solved\" (bool — a fully-purchasable route\nexists), \"routes\": [route tree, best first]}`. Each route tree nests\n`reactants → product` recursively until every leaf is an in-stock building block;\nread it top-down. Options: `--algorithm {retrostar,mcts,bfs}`, `--max-routes`,\n`--exclude-target`, `--simplify`.\n\n### 4. Synthesizability score (SynScore) — `score`\n\nScore a **target** 0–1 for how makeable it is, for ranking a set of molecules.\nRuns one route search internally, then folds it into a score.\n\n```bash\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --original   # unconstrained model\n```\n\nOutput (a `MoleculeReport` dict): the headline is **`score`** = `1/(U+1)**U`, where\n`U` is the number of the best route's starting materials that are **not**\npurchasable. Solved (U=0) → 1.0; U=1 → 0.5; U=2 → 0.11; no route → 0. Also:\n`solved`, `bb_coverage` (fraction of leaves purchasable), `min_steps`,\n`num_leaves`, `num_purchasable_leaves`. Use `score` to rank candidates; use\n`solved` to compare against published solve-rate. **Defaults to the\nsimplification-constrained model @ expansion width 10** (synomega's recommended\nscoring config); `--original` reverts to the unconstrained model.\n\n### 5. Reaction-plausibility screening — env toggle\n\nAn optional **mapping-free dual-tower model** scores how likely each single-step\ncandidate's `reactants → target` actually happens, and **drops** implausible ones\n(it only removes wrong disconnections, never re-ranks the rest). It applies to\n`single-step`, `plan`, and `score` alike. **Off by default** — it does not improve\ntop-k recall and adds latency.\n\n```bash\nSYNOMEGA_PLAUSIBILITY=1 SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4 \\\n  python scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\nWhen on, each `single-step` prediction gains a `plausibility` field (0–1). In\nPython: `synomega.load_default_planner(plausibility=True, plausibility_threshold=0.4)`.\n\n### 6. Multi-component evolution — `evolve`\n\nFrom a set of starting **reactants**, repeatedly pick two molecules from a growing\npool, run the forward model, and add products back — growing a forward **synthesis\nnetwork**. Good for exploring multi-component / one-pot chemistry.\n\n```bash\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" \\\n  --max-depth 3 --score-threshold 0.01 --top 20\n```\n\nOutput: `{\"reactants\", \"stats\", \"num_molecules\", \"num_reaction_edges\",\n\"molecules\": [{\"smiles\", \"total_score\", \"depth\", \"step_score\", \"parents\",\n\"template_id\"}]}`. Each molecule's `total_score` = `min(parent totals) × step\nprobability` (starting reactants = 1.0); `depth` is the synthesis-tree depth.\nOptions: `--forward-top-k` (products per pair), `--frontier-width` (cap fan-out for\nmany reactants), `--top` (how many products to report). In Python,\n`MultiComponentEvolution(...).evolve([...])` also supports `mode=\"disk\"` (SQLite)\nfor reactant sets whose intermediates do not fit in RAM.\n\n## Common options\n\n- **`--exclude-target`** (`plan`, `score`): treat the target as *not* purchasable\n  even if it is itself in the stock, so a catalogue molecule is not reported as\n  trivially solved in zero steps. Use it for \"how would you actually make X\" about\n  a possibly-buyable molecule.\n- **`--simplify`** (`plan`) / **`--original`** (`score`): the\n  simplification-constrained single-step model proposes only *fragmentation*\n  disconnections (split into ≥2 precursors) and reaches stock with fewer\n  expansions. `score` uses it by default; `plan` uses the original model unless you\n  pass `--simplify`.\n\n## Python API\n\n```python\nimport synomega\n\nplanner = synomega.load_default_planner()              # default model + stock (downloads once)\n\n# 1. single-step retro\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 3. multi-step plan\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved); print(result.best_route.describe())\n\n# 4. synthesizability score (recommended entry — simplify model @ k=10)\nscorer = synomega.load_default_scorer()\nprint(scorer.score(\"CC(=O)Nc1ccccc1O\").as_dict())\n\n# 2 + 6. forward + evolution\nfrom synomega.forward import ForwardTemplateGNN, MultiComponentEvolution\nfwd = ForwardTemplateGNN.default()\nfor pred in fwd.predict(\"CC(=O)O.NCc1ccccc1\", top_k=5):\n    print(pred.score, pred.product)\nevo = MultiComponentEvolution(fwd, max_depth=3, score_threshold=0.01)\nres = evo.evolve([\"CC(=O)c1ccccc1\", \"C=O\", \"CNC\"]); print(res.describe()); res.close()\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`,\n`SYNOMEGA_STOCK` (+ `SYNOMEGA_STOCK_KEYS=1` for a precomputed `.keys` file), and\n`SYNOMEGA_FORWARD_MODEL` (the helper reads them), or build the objects directly\nwith `TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- Larger `--max-depth` / `--max-steps` / `--top-k` finds more but is slower; start\n  at the defaults (depth 5, top-k 10).\n- The first call downloads a few hundred MB — expect a one-time delay. In Python,\n  build the planner/model once and reuse it; loading takes a few seconds.\n- Match the tool to the question: making X → `plan`/`score`; what makes X →\n  `single-step`; what do these give → `forward`; explore a reactant mixture →\n  `evolve`.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Docs:    https://zbc0315.github.io/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.6.0:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis and reaction-prediction toolkit on PyPI\n([docs](https://zbc0315.github.io/synomega/)). It teaches Claude Code, OpenClaw and\nother coding agents to use the `synomega` Python package across its **six\ncapabilities**: single-step retrosynthesis (product → reactants), single-step\nforward prediction (reactants → product), multi-step route planning, a continuous\n**synthesizability score** (SynScore), reaction-plausibility screening, and\nmulti-component evolution (growing a forward synthesis network from a set of\nreactants).\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n- \"What product do acetic acid and benzylamine give?\"\n- \"Evolve a forward network from acetophenone + formaldehyde + dimethylamine.\"\n\nOr call the bundled helper directly (one JSON-printing command per capability):\n\n```bash\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10     # product -> reactants\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5    # reactants -> product\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5  # multi-step route\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5  # synthesizability (SynScore)\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n`plan` and `score` take `--exclude-target` (treat the target as not purchasable\neven if it is a catalogue molecule, so it is not trivially \"solved\" in zero steps).\nReaction-plausibility screening is an env toggle: `SYNOMEGA_PLAUSIBILITY=1`. See\n`SKILL.md` for the full option list and output shapes.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any capability (single-step / forward / plan / score / evolve), prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.6.0:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.6.0\",\n  \"publishedAt\": 1787242169056\n}\n\nFile v1.6.0:skill-card.md\n\n## Description:\n\nRetrosynthesis and forward reaction prediction with the synomega Python package for single-step retrosynthesis, forward prediction, multi-step route planning, synthesizability scoring, reaction-plausibility screening, and multi-component evolution.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, researchers, and chemistry-focused agents use this skill to run local SynOmega workflows for legitimate retrosynthesis, reaction prediction, route planning, synthesizability ranking, and forward reaction network exploration from SMILES inputs.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: First use may download a few hundred MB of model and stock data from remote mirrors into the SynOmega cache.\n\nMitigation: Prefetch assets from trusted mirrors, set cache and mirror controls explicitly, or point the skill at local model and stock files in controlled, air-gapped, privacy-sensitive, or reproducibility-critical environments.\n\nRisk: Retrosynthesis and route planning can be dual-use for hazardous, controlled, or otherwise restricted compounds.\n\nMitigation: Apply the host safety policy before producing operational synthesis assistance, and decline or escalate requests involving dangerous or regulated targets when required.\n\nRisk: Predicted reactions, routes, scores, and products are model candidates rather than guaranteed chemistry.\n\nMitigation: Treat outputs as ranked hypotheses for expert review, especially before procurement, lab execution, or safety-sensitive decisions.\n\n## Reference(s):\n\n- [SynOmega package](https://pypi.org/project/synomega/)\n- [SynOmega documentation](https://zbc0315.github.io/synomega/)\n- [SynOmega toolkit source](https://github.com/zbc0315/synomega)\n- [SynOmega skill source](https://github.com/zbc0315/synomega-skill)\n- [ClawHub skill page](https://clawhub.ai/zbc0315/skills/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON command output]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The bundled helper prints JSON for retrosynthesis, forward prediction, route planning, scoring, and evolution operations.]\n\n## Skill Version(s):\n\n1.6.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.6.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.5.0: 6 files, 11359 bytes\n\nFiles: LICENSE (1064b), README.md (2581b), scripts/synomega_run.py (9297b), skill-card.md (2659b), SKILL.md (10498b), _meta.json (127b)\n\nFile v1.5.0:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis and forward reaction prediction with the synomega Python package\n  (pip install synomega) — single-step reactant prediction, multi-step route\n  planning, a synthesizability score (SynScore), forward product prediction, and\n  multi-component evolution (growing a forward synthesis network from a set of\n  reactants). Use this for legitimate retrosynthesis and cheminformatics tasks —\n  when the user gives a specific molecule (as SMILES or a resolvable name) and asks\n  for candidate disconnections/reactants, a full synthesis route down to\n  purchasable building blocks, a makeability score to rank molecules, the likely\n  product of given reactants, or how a set of starting materials evolves into\n  products. Safety judgments for hazardous, controlled, or otherwise dual-use\n  compounds are deferred to the host's safety policy (see \"Safety boundary /\n  dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/))\nthat turns a target molecule (SMILES) into synthesis routes and a **continuous\nsynthesizability score**. Three layers behind one interface: single-step\nprediction → AND-OR graph search → synthesizability scoring.\n\nIt runs entirely locally. **It works out of the box** — the default pretrained\nmodel and building-block stock are downloaded automatically on first use, so\nthere is nothing to train or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> prediction (or `synomega.load_default_planner()`) automatically reaches out to\n> a **remote mirror** (USTC GitLab and/or GitHub) and downloads the default model\n> and stock — **a few hundred MB** — into `~/.cache/synomega`. Nothing else phones\n> home, but this first fetch does. Controls: pre-fetch with `synomega download`;\n> change the cache dir with `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR`\n> (`ustc` or `github`). In **air-gapped, bandwidth-limited, privacy-sensitive, or\n> reproducibility-critical** environments, pre-fetch (or point at a local\n> model/stock) and treat the download as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\n```\n\nRequires Python ≥ 3.10.\n\n## First run downloads the model + stock (automatic)\n\nThe wheel ships only code. The first prediction downloads the default model and\nstock (a few hundred MB) into `~/.cache/synomega`. You can pre-fetch them:\n\n```bash\nsynomega download\n```\n\nDownloads come from the nearest mirror, auto-selected by latency (a USTC GitLab\nregistry, fast in China; and GitHub). Force one with `SYNOMEGA_MIRROR=ustc` or\n`SYNOMEGA_MIRROR=github`; change the cache dir with `SYNOMEGA_CACHE`.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for any of the three operations. No\nconfiguration — it downloads the default model/stock on first call:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3\n```\n\n`plan` and `score` accept `--exclude-target` (Python: `exclude_target=True`),\nwhich treats the target as *not* purchasable even if it is itself in the stock —\nso a catalogue molecule is not reported as trivially solved in zero steps. Use it\nwhen the user asks \"how would you actually make X\" about a possibly-buyable\nmolecule. Default off.\n\n## Reaction-plausibility screening (off by default)\n\nAn optional **mapping-free dual-tower reaction-plausibility model** can screen\nevery single-step prediction — for `single-step`, `plan`, and `score` alike —\nscoring how likely each candidate's reactants actually give the target and\n**dropping** implausible disconnections (it only removes wrong reactions, never\nre-ranks the rest). It is **off by default**: it does not improve top-k accuracy\nand adds latency. Enable it to prune obviously-wrong candidates from the list.\n\nEnable/tune with env vars: `SYNOMEGA_PLAUSIBILITY=1` turns it on;\n`SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4` sets the drop threshold. When on, each\n`single-step` prediction gains a `plausibility` field (0–1). In the Python API:\n`synomega.load_default_planner(plausibility=True)`.\n\n## Simplification-constrained model (off by default)\n\nAn alternative single-step model restricted to **simplifying (fragmentation)\ndisconnections** — those that split the target into two or more precursors —\nreaches purchasable material with fewer search expansions at matched solvability\n(faster planning). Enable it in the Python API with\n`synomega.load_default_planner(simplify=True)` or load it directly with\n`TemplateGNN.simplify()`; it downloads on first use like the default model.\nRequires `synomega >= 0.5.0`.\n\n## Forward prediction & multi-component evolution (synomega ≥ 0.8.0)\n\nTwo forward-direction operations, both driven by a forward reaction-prediction\nmodel (reuses the template library; downloads its own checkpoint on first use):\n\n- **`forward`** — given reactants, rank the likely **products**.\n  `python scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5`.\n  Output: ranked `products`, each with `product` (SMILES), `score` (forward\n  probability), and `template_id`.\n- **`evolve`** — **multi-component evolution**: from a set of starting reactants,\n  repeatedly pick two molecules from a growing pool, run the forward model, and\n  add products back — growing a forward **synthesis network**.\n  `python scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01`.\n  Each molecule carries a `total_score` (`min(parent totals) × step probability`;\n  starting reactants = 1.0) and a synthesis-tree `depth`. Output: `stats`,\n  `num_molecules`, and the top product `molecules` by total score. Use `--top` to\n  set how many to report, and `--frontier-width` to cap fan-out for many\n  reactants. In Python, `MultiComponentEvolution(...).evolve([...])` supports\n  `mode=\"disk\"` (SQLite) for reactant sets whose intermediates do not fit in RAM.\n\nBoth are **predictions, not guarantees** — the forward model is template-based\n(product top-1 ≈ 0.64), so treat the network as candidate chemistry to inspect,\nnot verified routes.\n\n## Python API\n\n```python\nimport synomega\n\n# one ready-to-use planner backed by the default model + stock (downloads once)\nplanner = synomega.load_default_planner()          # device=\"cpu\" by default\n\n# 1) Single-step — \"what reacts to give X?\"\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 2) Multi-step — \"how do I make X?\"\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved)\nprint(result.best_route.describe())\n\n# 3) Synthesizability score — \"can X be made / how hard?\"\nfrom synomega import SynthesizabilityScorer\nr = SynthesizabilityScorer(planner).score(\"CC(=O)Nc1ccccc1O\", max_steps=5)\nprint(r.score, r.bb_coverage, r.min_steps, r.solved)\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`\nand `SYNOMEGA_STOCK` (the helper reads them), or build the objects directly with\n`TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## How to read the output\n\n- **single-step** → ranked `Prediction`s; each has `.reactants` (a tuple of\n  SMILES) and `.score` (higher = more likely). Present the top few disconnections.\n- **plan** → a route tree. Read it top-down: the target decomposes into the\n  reactants that make it, recursively, until every leaf is a purchasable building\n  block. `result.best_route.describe()` prints it as numbered steps.\n- **score** → the headline is **`score`** = `1/(U+1)**U` (0–1), where `U` is the\n  number of the best route's starting materials that are *not* purchasable. A\n  solved target (U=0) scores 1.0; the score falls off sharply as more building\n  blocks are missing (U=1 → 0.5, U=2 → 0.11; no route → 0), cleanly separating a\n  solved target, one missing a few materials, and one missing many. Use it to rank\n  candidates. Also reported: `bb_coverage` (fraction of leaves purchasable),\n  `solved` (a fully-purchasable route exists), and `min_steps` (reactions in the\n  shortest solved route). Requires `synomega >= 0.6.0`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- `algorithm` ∈ {`retrostar` (default), `mcts`, `bfs`}. Larger `max_depth` /\n  `max_steps` finds more but is slower; start at 5.\n- The first call downloads a few hundred MB — expect a one-time delay. Loading the\n  model also takes a few seconds; in Python, build `planner` once and reuse it.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Docs:    https://zbc0315.github.io/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.5.0:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis toolkit on PyPI. It teaches Claude Code, OpenClaw and other coding\nagents to use the `synomega` Python package: predict single-step disconnections,\nplan multi-step routes, and compute a continuous **synthesizability score** for a\nmolecule given as SMILES.\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n\nOr call the bundled helper directly:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` take `--exclude-target` to treat the target as not\npurchasable even if it is itself a catalogue molecule (so it is not trivially\n\"solved\" in zero steps). Default off.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any of the three operations, prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.5.0:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.5.0\",\n  \"publishedAt\": 1787230378882\n}\n\nFile v1.5.0:skill-card.md\n\n## Description:\n\nSynomega Skill helps agents use the local synomega Python package for retrosynthesis, synthesizability scoring, forward product prediction, and multi-component reaction-network exploration from SMILES inputs.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, cheminformatics users, and chemistry-focused agents use this skill to evaluate whether molecules can be synthesized, propose candidate retrosynthesis routes, rank single-step disconnections, predict likely products from reactants, and explore forward reaction networks. The skill is intended for legitimate chemistry workflows and defers hazardous or controlled-compound decisions to the host safety policy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: First use may download large pretrained model and stock files from remote mirrors and cache them locally.\n\nMitigation: In restricted, air-gapped, regulated, or reproducibility-sensitive environments, prefetch approved assets or configure local model and stock paths before use.\n\nRisk: Retrosynthesis and forward prediction can be dual-use when applied to hazardous, controlled, or weaponizable compounds.\n\nMitigation: Apply the host safety policy before generating actionable synthesis routes and require additional review or refusal for high-risk targets.\n\nRisk: Predicted routes, scores, products, and reaction networks are candidate outputs rather than verified chemistry.\n\nMitigation: Treat outputs as decision-support material and require qualified chemistry review before operational use.\n\n## Reference(s):\n\n- [Synomega Skill on ClawHub](https://clawhub.ai/zbc0315/skills/synomega)\n- [SynOmega Python Package](https://pypi.org/project/synomega/)\n- [SynOmega Documentation](https://zbc0315.github.io/synomega/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance, json]\n\n**Output Format:** [Markdown guidance with shell commands, Python examples, configuration notes, and JSON helper output]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires valid SMILES inputs; helper execution may download and cache pretrained models and stock files on first use.]\n\n## Skill Version(s):\n\n1.5.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.5.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.4.4: 6 files, 9874 bytes\n\nFiles: LICENSE (1064b), README.md (2581b), scripts/synomega_run.py (6222b), skill-card.md (2363b), SKILL.md (8604b), _meta.json (127b)\n\nFile v1.4.4:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis with the synomega Python package (pip install synomega) —\n  single-step reactant prediction, multi-step route planning, and a\n  synthesizability score (SynScore) for a target molecule given as SMILES. Use\n  this for legitimate retrosynthesis and cheminformatics tasks — when the user\n  gives a specific molecule (as SMILES or a resolvable name) and asks for\n  candidate disconnections/reactants, a full synthesis route down to purchasable\n  building blocks, or a makeability score to rank molecules. Safety judgments for\n  hazardous, controlled, or otherwise dual-use compounds are deferred to the\n  host's safety policy (see \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/))\nthat turns a target molecule (SMILES) into synthesis routes and a **continuous\nsynthesizability score**. Three layers behind one interface: single-step\nprediction → AND-OR graph search → synthesizability scoring.\n\nIt runs entirely locally. **It works out of the box** — the default pretrained\nmodel and building-block stock are downloaded automatically on first use, so\nthere is nothing to train or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> prediction (or `synomega.load_default_planner()`) automatically reaches out to\n> a **remote mirror** (USTC GitLab and/or GitHub) and downloads the default model\n> and stock — **a few hundred MB** — into `~/.cache/synomega`. Nothing else phones\n> home, but this first fetch does. Controls: pre-fetch with `synomega download`;\n> change the cache dir with `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR`\n> (`ustc` or `github`). In **air-gapped, bandwidth-limited, privacy-sensitive, or\n> reproducibility-critical** environments, pre-fetch (or point at a local\n> model/stock) and treat the download as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\n```\n\nRequires Python ≥ 3.10.\n\n## First run downloads the model + stock (automatic)\n\nThe wheel ships only code. The first prediction downloads the default model and\nstock (a few hundred MB) into `~/.cache/synomega`. You can pre-fetch them:\n\n```bash\nsynomega download\n```\n\nDownloads come from the nearest mirror, auto-selected by latency (a USTC GitLab\nregistry, fast in China; and GitHub). Force one with `SYNOMEGA_MIRROR=ustc` or\n`SYNOMEGA_MIRROR=github`; change the cache dir with `SYNOMEGA_CACHE`.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for any of the three operations. No\nconfiguration — it downloads the default model/stock on first call:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` accept `--exclude-target` (Python: `exclude_target=True`),\nwhich treats the target as *not* purchasable even if it is itself in the stock —\nso a catalogue molecule is not reported as trivially solved in zero steps. Use it\nwhen the user asks \"how would you actually make X\" about a possibly-buyable\nmolecule. Default off.\n\n## Reaction-plausibility screening (off by default)\n\nAn optional **mapping-free dual-tower reaction-plausibility model** can screen\nevery single-step prediction — for `single-step`, `plan`, and `score` alike —\nscoring how likely each candidate's reactants actually give the target and\n**dropping** implausible disconnections (it only removes wrong reactions, never\nre-ranks the rest). It is **off by default**: it does not improve top-k accuracy\nand adds latency. Enable it to prune obviously-wrong candidates from the list.\n\nEnable/tune with env vars: `SYNOMEGA_PLAUSIBILITY=1` turns it on;\n`SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4` sets the drop threshold. When on, each\n`single-step` prediction gains a `plausibility` field (0–1). In the Python API:\n`synomega.load_default_planner(plausibility=True)`.\n\n## Simplification-constrained model (off by default)\n\nAn alternative single-step model restricted to **simplifying (fragmentation)\ndisconnections** — those that split the target into two or more precursors —\nreaches purchasable material with fewer search expansions at matched solvability\n(faster planning). Enable it in the Python API with\n`synomega.load_default_planner(simplify=True)` or load it directly with\n`TemplateGNN.simplify()`; it downloads on first use like the default model.\nRequires `synomega >= 0.5.0`.\n\n## Python API\n\n```python\nimport synomega\n\n# one ready-to-use planner backed by the default model + stock (downloads once)\nplanner = synomega.load_default_planner()          # device=\"cpu\" by default\n\n# 1) Single-step — \"what reacts to give X?\"\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 2) Multi-step — \"how do I make X?\"\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved)\nprint(result.best_route.describe())\n\n# 3) Synthesizability score — \"can X be made / how hard?\"\nfrom synomega import SynthesizabilityScorer\nr = SynthesizabilityScorer(planner).score(\"CC(=O)Nc1ccccc1O\", max_steps=5)\nprint(r.score, r.bb_coverage, r.min_steps, r.solved)\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`\nand `SYNOMEGA_STOCK` (the helper reads them), or build the objects directly with\n`TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## How to read the output\n\n- **single-step** → ranked `Prediction`s; each has `.reactants` (a tuple of\n  SMILES) and `.score` (higher = more likely). Present the top few disconnections.\n- **plan** → a route tree. Read it top-down: the target decomposes into the\n  reactants that make it, recursively, until every leaf is a purchasable building\n  block. `result.best_route.describe()` prints it as numbered steps.\n- **score** → the headline is **`score`** = `1/(U+1)**U` (0–1), where `U` is the\n  number of the best route's starting materials that are *not* purchasable. A\n  solved target (U=0) scores 1.0; the score falls off sharply as more building\n  blocks are missing (U=1 → 0.5, U=2 → 0.11; no route → 0), cleanly separating a\n  solved target, one missing a few materials, and one missing many. Use it to rank\n  candidates. Also reported: `bb_coverage` (fraction of leaves purchasable),\n  `solved` (a fully-purchasable route exists), and `min_steps` (reactions in the\n  shortest solved route). Requires `synomega >= 0.6.0`.\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- `algorithm` ∈ {`retrostar` (default), `mcts`, `bfs`}. Larger `max_depth` /\n  `max_steps` finds more but is slower; start at 5.\n- The first call downloads a few hundred MB — expect a one-time delay. Loading the\n  model also takes a few seconds; in Python, build `planner` once and reuse it.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.4.4:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis toolkit on PyPI. It teaches Claude Code, OpenClaw and other coding\nagents to use the `synomega` Python package: predict single-step disconnections,\nplan multi-step routes, and compute a continuous **synthesizability score** for a\nmolecule given as SMILES.\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n\nOr call the bundled helper directly:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` take `--exclude-target` to treat the target as not\npurchasable even if it is itself a catalogue molecule (so it is not trivially\n\"solved\" in zero steps). Default off.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any of the three operations, prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.4.4:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.4.4\",\n  \"publishedAt\": 1785121493755\n}\n\nFile v1.4.4:skill-card.md\n\n## Description: <br>\nSynomega Skill helps agents use the local synomega Python package to predict single-step reactants, plan multi-step retrosynthesis routes, and compute SynScore for target molecules provided as SMILES. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zbc0315](https://clawhub.ai/user/zbc0315) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nDevelopers, cheminformatics practitioners, and chemistry users use this skill to ask an agent for legitimate retrosynthesis support: candidate reactants, route planning to purchasable building blocks, or makeability scoring for a molecule. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: First use downloads model and stock files, which may be unsuitable for controlled, offline, privacy-sensitive, or reproducibility-critical environments. <br>\nMitigation: Prefetch or provide local model and stock files, pin trusted sources, configure cache and mirror settings, and treat network downloads as explicit opt-in. <br>\nRisk: Retrosynthesis route planning can provide operational assistance for hazardous, controlled, or otherwise regulated compounds. <br>\nMitigation: Apply the host safety policy and require additional review before producing synthesis routes for high-risk targets. <br>\n\n\n## Reference(s): <br>\n- [SynOmega package on PyPI](https://pypi.org/project/synomega/) <br>\n- [SynOmega toolkit source](https://github.com/zbc0315/synomega) <br>\n- [ClawHub skill page](https://clawhub.ai/zbc0315/skills/synomega) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Code, Configuration, JSON] <br>\n**Output Format:** [Markdown guidance with shell and Python examples; the helper script prints JSON for score, plan, and single-step operations.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [First use may download model and stock files unless local paths are configured.] <br>\n\n## Skill Version(s): <br>\n1.4.4 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.4.4:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.4.3: 6 files, 9793 bytes\n\nFiles: LICENSE (1064b), README.md (2581b), scripts/synomega_run.py (6222b), skill-card.md (2412b), SKILL.md (8365b), _meta.json (127b)\n\nFile v1.4.3:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis with the synomega Python package (pip install synomega) —\n  single-step reactant prediction, multi-step route planning, and a continuous\n  synthesizability score (bb-coverage) for a target molecule given as SMILES. Use\n  this for legitimate retrosynthesis and cheminformatics tasks — when the user\n  gives a specific molecule (as SMILES or a resolvable name) and asks for\n  candidate disconnections/reactants, a full synthesis route down to purchasable\n  building blocks, or a makeability score to rank molecules. Safety judgments for\n  hazardous, controlled, or otherwise dual-use compounds are deferred to the\n  host's safety policy (see \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/))\nthat turns a target molecule (SMILES) into synthesis routes and a **continuous\nsynthesizability score**. Three layers behind one interface: single-step\nprediction → AND-OR graph search → synthesizability scoring.\n\nIt runs entirely locally. **It works out of the box** — the default pretrained\nmodel and building-block stock are downloaded automatically on first use, so\nthere is nothing to train or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> prediction (or `synomega.load_default_planner()`) automatically reaches out to\n> a **remote mirror** (USTC GitLab and/or GitHub) and downloads the default model\n> and stock — **a few hundred MB** — into `~/.cache/synomega`. Nothing else phones\n> home, but this first fetch does. Controls: pre-fetch with `synomega download`;\n> change the cache dir with `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR`\n> (`ustc` or `github`). In **air-gapped, bandwidth-limited, privacy-sensitive, or\n> reproducibility-critical** environments, pre-fetch (or point at a local\n> model/stock) and treat the download as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\n```\n\nRequires Python ≥ 3.10.\n\n## First run downloads the model + stock (automatic)\n\nThe wheel ships only code. The first prediction downloads the default model and\nstock (a few hundred MB) into `~/.cache/synomega`. You can pre-fetch them:\n\n```bash\nsynomega download\n```\n\nDownloads come from the nearest mirror, auto-selected by latency (a USTC GitLab\nregistry, fast in China; and GitHub). Force one with `SYNOMEGA_MIRROR=ustc` or\n`SYNOMEGA_MIRROR=github`; change the cache dir with `SYNOMEGA_CACHE`.\n\n## Fastest path: the bundled helper\n\n`scripts/synomega_run.py` prints JSON for any of the three operations. No\nconfiguration — it downloads the default model/stock on first call:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` accept `--exclude-target` (Python: `exclude_target=True`),\nwhich treats the target as *not* purchasable even if it is itself in the stock —\nso a catalogue molecule is not reported as trivially solved in zero steps. Use it\nwhen the user asks \"how would you actually make X\" about a possibly-buyable\nmolecule. Default off.\n\n## Reaction-plausibility screening (off by default)\n\nAn optional **mapping-free dual-tower reaction-plausibility model** can screen\nevery single-step prediction — for `single-step`, `plan`, and `score` alike —\nscoring how likely each candidate's reactants actually give the target and\n**dropping** implausible disconnections (it only removes wrong reactions, never\nre-ranks the rest). It is **off by default**: it does not improve top-k accuracy\nand adds latency. Enable it to prune obviously-wrong candidates from the list.\n\nEnable/tune with env vars: `SYNOMEGA_PLAUSIBILITY=1` turns it on;\n`SYNOMEGA_PLAUSIBILITY_THRESHOLD=0.4` sets the drop threshold. When on, each\n`single-step` prediction gains a `plausibility` field (0–1). In the Python API:\n`synomega.load_default_planner(plausibility=True)`.\n\n## Simplification-constrained model (off by default)\n\nAn alternative single-step model restricted to **simplifying (fragmentation)\ndisconnections** — those that split the target into two or more precursors —\nreaches purchasable material with fewer search expansions at matched solvability\n(faster planning). Enable it in the Python API with\n`synomega.load_default_planner(simplify=True)` or load it directly with\n`TemplateGNN.simplify()`; it downloads on first use like the default model.\nRequires `synomega >= 0.5.0`.\n\n## Python API\n\n```python\nimport synomega\n\n# one ready-to-use planner backed by the default model + stock (downloads once)\nplanner = synomega.load_default_planner()          # device=\"cpu\" by default\n\n# 1) Single-step — \"what reacts to give X?\"\nfor p in planner.model.predict(\"CC(=O)Nc1ccccc1O\", top_k=10):\n    print(p.score, p.reactants)\n\n# 2) Multi-step — \"how do I make X?\"\nresult = planner.plan(\"CC(=O)Nc1ccccc1O\", max_depth=5)\nprint(result.solved)\nprint(result.best_route.describe())\n\n# 3) Synthesizability score — \"can X be made / how hard?\"\nfrom synomega import SynthesizabilityScorer\nr = SynthesizabilityScorer(planner).score(\"CC(=O)Nc1ccccc1O\", max_steps=5)\nprint(r.bb_coverage, r.min_steps, r.solved)\n```\n\nTo use your own checkpoint/stock instead of the defaults, set `SYNOMEGA_MODEL`\nand `SYNOMEGA_STOCK` (the helper reads them), or build the objects directly with\n`TemplateGNN.from_pretrained(...)` / `InMemoryStock.from_keys_file(...)`.\n\n## How to read the output\n\n- **single-step** → ranked `Prediction`s; each has `.reactants` (a tuple of\n  SMILES) and `.score` (higher = more likely). Present the top few disconnections.\n- **plan** → a route tree. Read it top-down: the target decomposes into the\n  reactants that make it, recursively, until every leaf is a purchasable building\n  block. `result.best_route.describe()` prints it as numbered steps.\n- **score** → the headline is **`bb_coverage`** (0–1): the fraction of the best\n  route's leaves that are purchasable. It is *continuous*, so 0.8 (a near-miss)\n  is meaningfully better than 0.0 — use it to rank candidates, not just to split\n  solved/unsolved. Also report `solved` (a fully-purchasable route exists) and\n  `min_steps` (reactions in the shortest solved route).\n\n## Rules for the agent\n\n- Always pass a valid **SMILES**. If the user gives a name, resolve it first (or ask).\n- `algorithm` ∈ {`retrostar` (default), `mcts`, `bfs`}. Larger `max_depth` /\n  `max_steps` finds more but is slower; start at 5.\n- The first call downloads a few hundred MB — expect a one-time delay. Loading the\n  model also takes a few seconds; in Python, build `planner` once and reuse it.\n\n## Safety boundary / dual-use\n\nRetrosynthesis is inherently dual-use: the same route-planning that helps\nlegitimate chemistry can also apply to hazardous, controlled, or otherwise\nregulated compounds. This skill does **not** itself decide what is permissible —\nthat judgment is **deferred to the host's safety policy**, which takes precedence\nover any request handled here.\n\n- **Educational vs. operational.** General, educational, or conceptual discussion\n  of chemistry (what a reaction class is, why a molecule is hard to make) is\n  different from **actionable procurement/route assistance** (concrete steps,\n  quantities, sourcing) for a specific hazardous or controlled target. Treat the\n  latter with far more caution.\n- **High-risk targets need extra review.** For compounds that are toxic,\n  explosive, weaponizable, controlled, or otherwise clearly high-risk, do not\n  produce an operational synthesis plan on autopilot — defer to the host safety\n  policy and any required additional review before proceeding.\n- **When unsure, ask or decline.** If a request looks like it seeks a usable route\n  to a dangerous or restricted substance, surface the concern rather than\n  silently planning it. Normal, benign retrosynthesis and makeability scoring are\n  unaffected.\n\n## Links\n\n- Package: https://pypi.org/project/synomega/\n- Source:  https://github.com/zbc0315/synomega\n- This skill: https://github.com/zbc0315/synomega-skill\n\nFile v1.4.3:README.md\n\n# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis toolkit on PyPI. It teaches Claude Code, OpenClaw and other coding\nagents to use the `synomega` Python package: predict single-step disconnections,\nplan multi-step routes, and compute a continuous **synthesizability score** for a\nmolecule given as SMILES.\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n\nOr call the bundled helper directly:\n\n```bash\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --exclude-target\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10\n```\n\n`plan` and `score` take `--exclude-target` to treat the target as not\npurchasable even if it is itself a catalogue molecule (so it is not trivially\n\"solved\" in zero steps). Default off.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definition (frontmatter + instructions) |\n| `scripts/synomega_run.py` | loads model + stock from env vars, runs any of the three operations, prints JSON |\n\n## Related\n\n- Toolkit: https://github.com/zbc0315/synomega · https://pypi.org/project/synomega/\n- Online demo (browser instance): synomega-web\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nFile v1.4.3:_meta.json\n\n{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.4.3\",\n  \"publishedAt\": 1785080981827\n}\n\nFile v1.4.3:skill-card.md\n\n## Description: <br>\nRetrosynthesis helper for legitimate cheminformatics tasks using the synomega Python package, including single-step reactant prediction, multi-step route planning, and synthesizability scoring for target molecules provided as SMILES. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zbc0315](https://clawhub.ai/user/zbc0315) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nDevelopers, chemistry researchers, and cheminformatics users can use this skill to ask an agent for candidate disconnections, synthesis route plans, or makeability scores for specific target molecules. The host safety policy remains responsible for deciding whether requests involving hazardous, controlled, or dual-use compounds are allowed. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: First use may download a few hundred MB of model and stock data into a local cache. <br>\nMitigation: Prefetch the data, set a controlled cache location, or use local model and stock files in bandwidth-limited, air-gapped, privacy-sensitive, or reproducibility-critical environments. <br>\nRisk: Retrosynthesis can provide operational route assistance for hazardous, controlled, or otherwise dual-use compounds. <br>\nMitigation: Apply the host safety policy before planning routes or providing actionable assistance for high-risk targets, and decline or escalate requests that appear unsafe. <br>\n\n\n## Reference(s): <br>\n- [Synomega package on PyPI](https://pypi.org/project/synomega/) <br>\n- [SynOmega Skill on ClawHub](https://clawhub.ai/zbc0315/skills/synomega) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON-producing helper commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Helper commands can output JSON for single-step predictions, route plans, and synthesizability scores.] <br>\n\n## Skill Version(s): <br>\n1.4.3 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.4.3:LICENSE\n\nMIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.4.2: 6 files, 9722 bytes\n\nFiles: LICENSE (1064b), README.md (2581b), scripts/synomega_run.py (6222b), skill-card.md (2709b), SKILL.md (7841b), _meta.json (127b)\n\nFile v1.4.2:SKILL.md\n\n---\nname: synomega\ndescription: >-\n  Retrosynthesis with the synomega Python package (pip install synomega) —\n  single-step reactant prediction, multi-step route planning, and a continuous\n  synthesizability score (bb-coverage) for a target molecule given as SMILES. Use\n  this for legitimate retrosynthesis and cheminformatics tasks — when the user\n  gives a specific molecule (as SMILES or a resolvable name) and asks for\n  candidate disconnections/reactants, a full synthesis route down to purchasable\n  building blocks, or a makeability score to rank molecules. Safety judgments for\n  hazardous, controlled, or otherwise dual-use compounds are deferred to the\n  host's safety policy (see \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/))\nthat turns a target molecule (SMILES) into synthesis routes and a **continuous\nsynthesizability score**. Three layers behind one interface: single-step\nprediction → AND-OR graph search → synthesizability scoring.\n\nIt runs entirely locally. **It works out of the box** — the default pretrained\nmodel and building-block stock are downloaded automatically on first use, so\nthere is nothing to train or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> prediction (or `synomega.load_default_planner()`) automatically reaches out to\n> a **remote mirror** (USTC GitLab and/or GitHub) and downloads the default model\n> and stock — **a few hundred MB** — into `~/.cache/synomega`. Nothing else phones\n> home, but this first fetch does. Controls: pre-fetch with `synomega download`;\n> change the cache dir with `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR`\n> (`ustc` or `github`). In **air-gapped, bandwidth-limited, privacy-sensitive, or\n> reproducibility-critical** environments, pre-fetch (or point at a local\n> model/stock) and treat the download as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]\"    # neural D-MPNN backend (torch) — recommended\n```\n\nRequires Python ≥ 3.10.\n\n## First run downloads the model + stock (automatic)\n\nThe wheel ships only code. The first prediction downloads the default model and\nstock (a few hundred MB) into `~/.cache/synomega`. You can pre-fetch them:\n\n```bash\nsynomega download\n```\n\nDownloads come from the nearest mirror, auto-selected by latency (a USTC GitLab\nregistr\n\nArchive v1.4.1: 6 files, 8584 bytes\n\nFiles: LICENSE (1064b), README.md (2581b), scripts/synomega_run.py (6222b), skill-card.md (2245b), SKILL.md (5601b), _meta.json (127b)","readmeExcerpt":"Skill: Synomega Skill Owner: zbc0315 Summary: Retrosynthesis, reaction prediction, and synthesizability for organic molecules, using the synomega Python package (pip install synomega) — runs locally, works out of the box. Six capabilities: single-step retrosynthesis (product → reactants, candidate disconnections), single-step forward reaction prediction / reaction outcome (reactants → product), multi-step route plann","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"pip install \"synomega[gnn]>=0.9.4\"    # neural D-MPNN backend (torch) — recommended\nsynomega download              # optional: pre-fetch the default assets"},{"language":"bash","snippet":"# 1. single-step retrosynthesis — \"what reacts to give X?\"\npython scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10\n\n# 2. forward prediction — \"what do these reactants give?\"\npython scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5\n\n# 3. multi-step route planning — \"how do I make X?\"\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\n\n# 4. synthesizability score — \"can X be made / how hard?\"  (simplify model by default)\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\n\n# 6. multi-component evolution — grow a forward synthesis network\npython scripts/synomega_run.py evolve \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01"},{"language":"bash","snippet":"python scripts/synomega_run.py single-step \"CC(=O)Nc1ccccc1O\" --top-k 10"},{"language":"bash","snippet":"python scripts/synomega_run.py forward \"CC(=O)O.NCc1ccccc1\" --top-k 5"},{"language":"bash","snippet":"python scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --max-depth 5\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --simplify   # cheaper search\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --library molport  # MolPort stock\npython scripts/synomega_run.py plan \"CC(=O)Nc1ccccc1O\" --forward-consistency"},{"language":"bash","snippet":"python scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --max-steps 5\npython scripts/synomega_run.py score \"CC(=O)Nc1ccccc1O\" --original   # unconstrained model"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: synomega\ndescription: >-\n  Retrosynthesis, reaction prediction, and synthesizability for organic molecules,\n  using the synomega Python package (pip install synomega) — runs locally, works\n  out of the box. Six capabilities: single-step retrosynthesis (product → reactants,\n  candidate disconnections), single-step forward reaction prediction / reaction\n  outcome (reactants → product), multi-step route planning down to purchasable\n  building blocks, a continuous synthesizability / makeability score (SynScore),\n  reaction-plausibility screening, and multi-component evolution (growing a forward\n  synthesis network from a set of reactants, e.g. one-pot / multicomponent\n  chemistry). Use this whenever the user gives a molecule (as SMILES or a resolvable\n  name) and asks how to make / synthesize it, whether it can be made or how hard,\n  how to rank molecules by ease of synthesis, what reactants give a target, what\n  product a set of reactants gives, a reaction outcome, or how a reactant mixture\n  evolves — i.e. for retrosynthesis, synthesis planning, cheminformatics, and\n  reaction-prediction tasks. Safety judgments for hazardous, controlled, or\n  otherwise dual-use compounds are deferred to the host's safety policy (see\n  \"Safety boundary / dual-use\" below).\n---\n\n# SynOmega\n\nSynOmega is a **Python package** ([PyPI](https://pypi.org/project/synomega/),\n[docs](https://zbc0315.github.io/synomega/)) for organic small-molecule reactions.\nIt exposes **six capabilities** behind one install:\n\n| # | Capability | Direction | Helper command |\n|---|---|---|---|\n| 1 | **Single-step retrosynthesis** | product → reactants | `single-step` |\n| 2 | **Single-step forward prediction** | reactants → product | `forward` |\n| 3 | **Multi-step route planning** | target → route to purchasable stock | `plan` |\n| 4 | **Synthesizability score (SynScore)** | target → 0–1 makeability | `score` |\n| 5 | **Reaction-plausibility screening** | filter single-step candidates | env toggle |\n| 6 | **Multi-component evolution** | reactant set → forward synthesis network | `evolve` |\n\nIt runs entirely locally. **It works out of the box** — the pretrained models and\nbuilding-block stock download automatically on first use, so there is nothing to\ntrain or configure.\n\n> ⚠️ **Network + disk notice (first use downloads a few hundred MB).** The first\n> call automatically reaches out to a **remote mirror** (USTC GitLab and/or GitHub)\n> and downloads the model(s) and stock — **a few hundred MB** — into\n> `~/.cache/synomega`. Nothing else phones home, but this first fetch does.\n> Controls: pre-fetch with `synomega download`; change the cache dir with\n> `SYNOMEGA_CACHE`; pick a mirror with `SYNOMEGA_MIRROR` (`ustc` or `github`). In\n> **air-gapped, bandwidth-limited, privacy-sensitive, or reproducibility-critical**\n> environments, pre-fetch (or point at a local model/stock) and treat the download\n> as an explicit opt-in rather than a surprise.\n\n## Install\n\n```bash\npip install \"synomega[gnn]>=0."},{"path":"README.md","content":"# SynOmega Skill\n\nAn agent **Skill** for [SynOmega](https://github.com/zbc0315/synomega) — the\nretrosynthesis and reaction-prediction toolkit on PyPI\n([docs](https://zbc0315.github.io/synomega/)). It teaches Claude Code, OpenClaw and\nother coding agents to use the `synomega` Python package across its **six\ncapabilities**: single-step retrosynthesis (product → reactants), single-step\nforward prediction (reactants → product), multi-step route planning, a continuous\n**synthesizability score** (SynScore), reaction-plausibility screening, and\nmulti-component evolution (growing a forward synthesis network from a set of\nreactants).\n\nThe skill runs synomega **locally** — `pip install synomega` plus a trained model\nand a building-block file. It does not depend on any hosted service.\n\n## Install\n\n**OpenClaw / ClawHub**\n\n```bash\nclawhub install synomega\n```\n\n**Claude Code (manual)**\n\n```bash\nmkdir -p ~/.claude/skills/synomega\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/SKILL.md \\\n  -o ~/.claude/skills/synomega/SKILL.md\ncurl -fsSL https://raw.githubusercontent.com/zbc0315/synomega-skill/main/scripts/synomega_run.py \\\n  -o ~/.claude/skills/synomega/synomega_run.py\n```\n\n## Prerequisites\n\n```bash\npip install \"synomega[gnn]\"        # the package (neural backend)\n```\n\nThat's it — **it works out of the box**. The default pretrained model and\nbuilding-block stock download automatically on first use (into\n`~/.cache/synomega`); run `synomega download` to pre-fetch them. Downloads come\nfrom the nearest mirror (USTC GitLab in China, or GitHub), auto-selected by\nlatency. To use your own checkpoint/stock instead, set `SYNOMEGA_MODEL` /\n`SYNOMEGA_STOCK`.\n\n## Use\n\nAsk your agent things like:\n\n- \"Can *paracetamol* be synthesized? How hard?\"\n- \"Propose a synthesis route for `CC(=O)Nc1ccccc1O`.\"\n- \"What reactants could give this molecule in one step?\"\n- \"What product do acetic acid and benzylamine give?\"\n- \"Evolve a forward network from acetophenone + formaldehyde + dimethylamine.\"\n\nOr call the bundled helper directly (one JSON-printing command per capability):\n\n```bash\npython scripts/synomega_run.py single-step  \"CC(=O)Nc1ccccc1O\" --top-k 10     # product -> reactants\npython scripts/synomega_run.py forward      \"CC(=O)O.NCc1ccccc1\" --top-k 5    # reactants -> product\npython scripts/synomega_run.py plan         \"CC(=O)Nc1ccccc1O\" --max-depth 5  # multi-step route\npython scripts/synomega_run.py score        \"CC(=O)Nc1ccccc1O\" --max-steps 5  # synthesizability (SynScore)\npython scripts/synomega_run.py evolve       \"CC(=O)c1ccccc1.C=O.CNC\" --max-depth 3 --score-threshold 0.01\n```\n\n`plan` and `score` take `--exclude-target` (treat the target as not purchasable\neven if it is a catalogue molecule, so it is not trivially \"solved\" in zero steps).\nReaction-plausibility screening is an env toggle: `SYNOMEGA_PLAUSIBILITY=1`. See\n`SKILL.md` for the full option list and output shapes.\n\n## Contents\n\n| File | Purpose |\n|---|---|\n| `SKILL.md` | the skill definiti"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77a46vsrdfh54z4vx4x71gad83cwcw\",\n  \"slug\": \"synomega\",\n  \"version\": \"1.8.1\",\n  \"publishedAt\": 1788009062675\n}"},{"path":"skill-card.md","content":"## Description:\n\nSynOmega Skill helps agents use the local synomega Python package for retrosynthesis, reaction prediction, multi-step synthesis planning, synthesizability scoring, plausibility screening, and multi-component reaction evolution for organic molecules.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zbc0315](https://clawhub.ai/user/zbc0315)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nDevelopers, chemists, and cheminformatics practitioners use this skill to ask an agent for synthesis planning, reaction outcome prediction, route scoring, and local command guidance around organic small molecules. It is intended for benign chemistry workflows and defers hazardous or controlled-compound decisions to the host safety policy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Manual installation commands in the artifact can fetch executable code from mutable remote URLs without integrity checks.\n\nMitigation: Use the ClawHub install path; if installing manually, pin a reviewed commit and verify the provided file hashes before use.\n\nRisk: The Python dependency and first-use model or stock downloads can affect privacy-sensitive, bandwidth-limited, air-gapped, or reproducibility-critical environments.\n\nMitigation: Run the dependency in a dedicated environment, pin requirements, and pre-fetch or mirror model assets before deployment.\n\nRisk: Retrosynthesis and route-planning outputs can be dual-use for hazardous, controlled, or otherwise high-risk compounds.\n\nMitigation: Apply the host safety policy before giving operational synthesis guidance and require additional review for high-risk targets.\n\n## Reference(s):\n\n- [SynOmega documentation](https://zbc0315.github.io/synomega/)\n- [SynOmega package on PyPI](https://pypi.org/project/synomega/)\n- [Synomega Skill on ClawHub](https://clawhub.ai/zbc0315/skills/synomega)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell command snippets and JSON-producing helper commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The bundled helper script prints JSON for retrosynthesis, forward prediction, planning, scoring, and multi-component evolution operations.]\n\n## Skill Version(s):\n\n1.8.1 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"LICENSE","content":"MIT License\n\nCopyright (c) 2026 zbc0315\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1744,"uniquenessScore":41,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:57:27.961Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:48:25.372Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}