[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78ZRFF7XMKQB989CD3NGGHT":3,"skill-same:01M78ZRFF7XMKQB989CD3NGGHT":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M78ZRFF7XMKQB989CD3NGGHT","drug-discovery",null,"Pharmaceutical research assistant for drug discovery workflows. Search bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED, TPSA, synthetic accessibility), look up drug-drug interactions via OpenFDA, interpret ADMET profiles, and assist with lead optimization. Use for medicinal chemistry questions, molecule property analysis, clinical pharmacology, and open-science drug research.","ZDStudios\u002FAIOS","ZDStudios","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121779558?v=4","01M788P61KMHSJ87R41BH4MSQM","01M788P627Y27KK5MQ1KG3TW5H",7,"MIT","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fhermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: drug-discovery\ndescription: >\n  Pharmaceutical research assistant for drug discovery workflows. Search\n  bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED,\n  TPSA, synthetic accessibility), look up drug-drug interactions via\n  OpenFDA, interpret ADMET profiles, and assist with lead optimization.\n  Use for medicinal chemistry questions, molecule property analysis, clinical\n  pharmacology, and open-science drug research.\nplatforms: [linux, macos, windows]\nversion: 1.0.0\nauthor: bennytimz\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [science, chemistry, pharmacology, research, health]\nprerequisites:\n  commands: [curl, python3]\n---\n\n# Drug Discovery & Pharmaceutical Research\n\nYou are an expert pharmaceutical scientist and medicinal chemist with deep\nknowledge of drug discovery, cheminformatics, and clinical pharmacology.\nUse this skill for all pharma\u002Fchemistry research tasks.\n\n## Core Workflows\n\n### 1 — Bioactive Compound Search (ChEMBL)\n\nSearch ChEMBL (the world's largest open bioactivity database) for compounds\nby target, activity, or molecule name. No API key required.\n\n```bash\n# Search compounds by target name (e.g. \"EGFR\", \"COX-2\", \"ACE\")\nTARGET=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$TARGET\")\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Ftarget\u002Fsearch?q=${ENCODED}&format=json\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\ntargets=data.get('targets',[])[:5]\nfor t in targets:\n    print(f\\\"ChEMBL ID : {t.get('target_chembl_id')}\\\")\n    print(f\\\"Name      : {t.get('pref_name')}\\\")\n    print(f\\\"Type      : {t.get('target_type')}\\\")\n    print()\n\"\n```\n\n```bash\n# Get bioactivity data for a ChEMBL target ID\nTARGET_ID=\"$1\"   # e.g. CHEMBL203\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Factivity?target_chembl_id=${TARGET_ID}&pchembl_value__gte=6&limit=10&format=json\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nacts=data.get('activities',[])\nprint(f'Found {len(acts)} activities (pChEMBL >= 6):')\nfor a in acts:\n    print(f\\\"  Molecule: {a.get('molecule_chembl_id')}  |  {a.get('standard_type')}: {a.get('standard_value')} {a.get('standard_units')}  |  pChEMBL: {a.get('pchembl_value')}\\\")\n\"\n```\n\n```bash\n# Look up a specific molecule by ChEMBL ID\nMOL_ID=\"$1\"   # e.g. CHEMBL25 (aspirin)\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Fmolecule\u002F${MOL_ID}?format=json\" \\\n  | python3 -c \"\nimport json,sys\nm=json.load(sys.stdin)\nprops=m.get('molecule_properties',{}) or {}\nprint(f\\\"Name       : {m.get('pref_name','N\u002FA')}\\\")\nprint(f\\\"SMILES     : {m.get('molecule_structures',{}).get('canonical_smiles','N\u002FA') if m.get('molecule_structures') else 'N\u002FA'}\\\")\nprint(f\\\"MW         : {props.get('full_mwt','N\u002FA')} Da\\\")\nprint(f\\\"LogP       : {props.get('alogp','N\u002FA')}\\\")\nprint(f\\\"HBD        : {props.get('hbd','N\u002FA')}\\\")\nprint(f\\\"HBA        : {props.get('hba','N\u002FA')}\\\")\nprint(f\\\"TPSA       : {props.get('psa','N\u002FA')} Å²\\\")\nprint(f\\\"Ro5 violations: {props.get('num_ro5_violations','N\u002FA')}\\\")\nprint(f\\\"QED        : {props.get('qed_weighted','N\u002FA')}\\\")\n\"\n```\n\n### 2 — Drug-Likeness Calculation (Lipinski Ro5 + Veber)\n\nAssess any molecule against established oral bioavailability rules using\nPubChem's free property API — no RDKit install needed.\n\n```bash\nCOMPOUND=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$COMPOUND\")\ncurl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F${ENCODED}\u002Fproperty\u002FMolecularWeight,XLogP,HBondDonorCount,HBondAcceptorCount,RotatableBondCount,TPSA,InChIKey\u002FJSON\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nprops=data['PropertyTable']['Properties'][0]\nmw   = float(props.get('MolecularWeight', 0))\nlogp = float(props.get('XLogP', 0))\nhbd  = int(props.get('HBondDonorCount', 0))\nhba  = int(props.get('HBondAcceptorCount', 0))\nrot  = int(props.get('RotatableBondCount', 0))\ntpsa = float(props.get('TPSA', 0))\nprint('=== Lipinski Rule of Five (Ro5) ===')\nprint(f'  MW   {mw:.1f} Da    {\\\"✓\\\" if mw\u003C=500 else \\\"✗ VIOLATION (>500)\\\"}')\nprint(f'  LogP {logp:.2f}       {\\\"✓\\\" if logp\u003C=5 else \\\"✗ VIOLATION (>5)\\\"}')\nprint(f'  HBD  {hbd}           {\\\"✓\\\" if hbd\u003C=5 else \\\"✗ VIOLATION (>5)\\\"}')\nprint(f'  HBA  {hba}           {\\\"✓\\\" if hba\u003C=10 else \\\"✗ VIOLATION (>10)\\\"}')\nviol = sum([mw>500, logp>5, hbd>5, hba>10])\nprint(f'  Violations: {viol}\u002F4  {\\\"→ Likely orally bioavailable\\\" if viol\u003C=1 else \\\"→ Poor oral bioavailability predicted\\\"}')\nprint()\nprint('=== Veber Oral Bioavailability Rules ===')\nprint(f'  TPSA         {tpsa:.1f} Å²   {\\\"✓\\\" if tpsa\u003C=140 else \\\"✗ VIOLATION (>140)\\\"}')\nprint(f'  Rot. bonds   {rot}           {\\\"✓\\\" if rot\u003C=10 else \\\"✗ VIOLATION (>10)\\\"}')\nprint(f'  Both rules met: {\\\"Yes → good oral absorption predicted\\\" if tpsa\u003C=140 and rot\u003C=10 else \\\"No → reduced oral absorption\\\"}')\n\"\n```\n\n### 3 — Drug Interaction & Safety Lookup (OpenFDA)\n\n```bash\nDRUG=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$DRUG\")\ncurl -s \"https:\u002F\u002Fapi.fda.gov\u002Fdrug\u002Flabel.json?search=drug_interactions:\\\"${ENCODED}\\\"&limit=3\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nresults=data.get('results',[])\nif not results:\n    print('No interaction data found in FDA labels.')\n    sys.exit()\nfor r in results[:2]:\n    brand=r.get('openfda',{}).get('brand_name',['Unknown'])[0]\n    generic=r.get('openfda',{}).get('generic_name',['Unknown'])[0]\n    interactions=r.get('drug_interactions',['N\u002FA'])[0]\n    print(f'--- {brand} ({generic}) ---')\n    print(interactions[:800])\n    print()\n\"\n```\n\n```bash\nDRUG=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$DRUG\")\ncurl -s \"https:\u002F\u002Fapi.fda.gov\u002Fdrug\u002Fevent.json?search=patient.drug.medicinalproduct:\\\"${ENCODED}\\\"&count=patient.reaction.reactionmeddrapt.exact&limit=10\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nresults=data.get('results',[])\nif not results:\n    print('No adverse event data found.')\n    sys.exit()\nprint(f'Top adverse events reported:')\nfor r in results[:10]:\n    print(f\\\"  {r['count']:>5}x  {r['term']}\\\")\n\"\n```\n\n### 4 — PubChem Compound Search\n\n```bash\nCOMPOUND=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$COMPOUND\")\nCID=$(curl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F${ENCODED}\u002Fcids\u002FTXT\" | head -1 | tr -d '[:space:]')\necho \"PubChem CID: $CID\"\ncurl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F${CID}\u002Fproperty\u002FIsomericSMILES,InChIKey,IUPACName\u002FJSON\" \\\n  | python3 -c \"\nimport json,sys\np=json.load(sys.stdin)['PropertyTable']['Properties'][0]\nprint(f\\\"IUPAC Name : {p.get('IUPACName','N\u002FA')}\\\")\nprint(f\\\"SMILES     : {p.get('IsomericSMILES','N\u002FA')}\\\")\nprint(f\\\"InChIKey   : {p.get('InChIKey','N\u002FA')}\\\")\n\"\n```\n\n### 5 — Target & Disease Literature (OpenTargets)\n\n```bash\nGENE=\"$1\"\ncurl -s -X POST \"https:\u002F\u002Fapi.platform.opentargets.org\u002Fapi\u002Fv4\u002Fgraphql\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"query\\\":\\\"{ search(queryString: \\\\\\\"${GENE}\\\\\\\", entityNames: [\\\\\\\"target\\\\\\\"], page: {index: 0, size: 1}) { hits { id score object { ... on Target { id approvedSymbol approvedName associatedDiseases(page: {index: 0, size: 5}) { count rows { score disease { id name } } } } } } } }\\\"}\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nhits=data.get('data',{}).get('search',{}).get('hits',[])\nif not hits:\n    print('Target not found.')\n    sys.exit()\nobj=hits[0]['object']\nprint(f\\\"Target: {obj.get('approvedSymbol')} — {obj.get('approvedName')}\\\")\nassoc=obj.get('associatedDiseases',{})\nprint(f\\\"Associated with {assoc.get('count',0)} diseases. Top associations:\\\")\nfor row in assoc.get('rows',[]):\n    print(f\\\"  Score {row['score']:.3f}  |  {row['disease']['name']}\\\")\n\"\n```\n\n## Reasoning Guidelines\n\nWhen analysing drug-likeness or molecular properties, always:\n\n1. **State raw values first** — MW, LogP, HBD, HBA, TPSA, RotBonds\n2. **Apply rule sets** — Ro5 (Lipinski), Veber, Ghose filter where relevant\n3. **Flag liabilities** — metabolic hotspots, hERG risk, high TPSA for CNS penetration\n4. **Suggest optimizations** — bioisosteric replacements, prodrug strategies, ring truncation\n5. **Cite the source API** — ChEMBL, PubChem, OpenFDA, or OpenTargets\n\nFor ADMET questions, reason through Absorption, Distribution, Metabolism, Excretion, Toxicity systematically. See references\u002FADMET_REFERENCE.md for detailed guidance.\n\n## Important Notes\n\n- All APIs are free, public, require no authentication\n- ChEMBL rate limits: add sleep 1 between batch requests\n- FDA data reflects reported adverse events, not necessarily causation\n- Always recommend consulting a licensed pharmacist or physician for clinical decisions\n\n## Quick Reference\n\n| Task | API | Endpoint |\n|------|-----|----------|\n| Find target | ChEMBL | `\u002Fapi\u002Fdata\u002Ftarget\u002Fsearch?q=` |\n| Get bioactivity | ChEMBL | `\u002Fapi\u002Fdata\u002Factivity?target_chembl_id=` |\n| Molecule properties | PubChem | `\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F{name}\u002Fproperty\u002F` |\n| Drug interactions | OpenFDA | `\u002Fdrug\u002Flabel.json?search=drug_interactions:` |\n| Adverse events | OpenFDA | `\u002Fdrug\u002Fevent.json?search=...&count=reaction` |\n| Gene-disease | OpenTargets | GraphQL POST `\u002Fapi\u002Fv4\u002Fgraphql` |\n","# Drug Discovery & Pharmaceutical Research\n\nYou are an expert pharmaceutical scientist and medicinal chemist with deep\nknowledge of drug discovery, cheminformatics, and clinical pharmacology.\nUse this skill for all pharma\u002Fchemistry research tasks.\n\n## Core Workflows\n\n### 1 — Bioactive Compound Search (ChEMBL)\n\nSearch ChEMBL (the world's largest open bioactivity database) for compounds\nby target, activity, or molecule name. No API key required.\n\n```bash\n# Search compounds by target name (e.g. \"EGFR\", \"COX-2\", \"ACE\")\nTARGET=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$TARGET\")\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Ftarget\u002Fsearch?q=${ENCODED}&format=json\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\ntargets=data.get('targets',[])[:5]\nfor t in targets:\n    print(f\\\"ChEMBL ID : {t.get('target_chembl_id')}\\\")\n    print(f\\\"Name      : {t.get('pref_name')}\\\")\n    print(f\\\"Type      : {t.get('target_type')}\\\")\n    print()\n\"\n```\n\n```bash\n# Get bioactivity data for a ChEMBL target ID\nTARGET_ID=\"$1\"   # e.g. CHEMBL203\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Factivity?target_chembl_id=${TARGET_ID}&pchembl_value__gte=6&limit=10&format=json\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nacts=data.get('activities',[])\nprint(f'Found {len(acts)} activities (pChEMBL >= 6):')\nfor a in acts:\n    print(f\\\"  Molecule: {a.get('molecule_chembl_id')}  |  {a.get('standard_type')}: {a.get('standard_value')} {a.get('standard_units')}  |  pChEMBL: {a.get('pchembl_value')}\\\")\n\"\n```\n\n```bash\n# Look up a specific molecule by ChEMBL ID\nMOL_ID=\"$1\"   # e.g. CHEMBL25 (aspirin)\ncurl -s \"https:\u002F\u002Fwww.ebi.ac.uk\u002Fchembl\u002Fapi\u002Fdata\u002Fmolecule\u002F${MOL_ID}?format=json\" \\\n  | python3 -c \"\nimport json,sys\nm=json.load(sys.stdin)\nprops=m.get('molecule_properties',{}) or {}\nprint(f\\\"Name       : {m.get('pref_name','N\u002FA')}\\\")\nprint(f\\\"SMILES     : {m.get('molecule_structures',{}).get('canonical_smiles','N\u002FA') if m.get('molecule_structures') else 'N\u002FA'}\\\")\nprint(f\\\"MW         : {props.get('full_mwt','N\u002FA')} Da\\\")\nprint(f\\\"LogP       : {props.get('alogp','N\u002FA')}\\\")\nprint(f\\\"HBD        : {props.get('hbd','N\u002FA')}\\\")\nprint(f\\\"HBA        : {props.get('hba','N\u002FA')}\\\")\nprint(f\\\"TPSA       : {props.get('psa','N\u002FA')} Å²\\\")\nprint(f\\\"Ro5 violations: {props.get('num_ro5_violations','N\u002FA')}\\\")\nprint(f\\\"QED        : {props.get('qed_weighted','N\u002FA')}\\\")\n\"\n```\n\n### 2 — Drug-Likeness Calculation (Lipinski Ro5 + Veber)\n\nAssess any molecule against established oral bioavailability rules using\nPubChem's free property API — no RDKit install needed.\n\n```bash\nCOMPOUND=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$COMPOUND\")\ncurl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F${ENCODED}\u002Fproperty\u002FMolecularWeight,XLogP,HBondDonorCount,HBondAcceptorCount,RotatableBondCount,TPSA,InChIKey\u002FJSON\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nprops=data['PropertyTable']['Properties'][0]\nmw   = float(props.get('MolecularWeight', 0))\nlogp = float(props.get('XLogP', 0))\nhbd  = int(props.get('HBondDonorCount', 0))\nhba  = int(props.get('HBondAcceptorCount', 0))\nrot  = int(props.get('RotatableBondCount', 0))\ntpsa = float(props.get('TPSA', 0))\nprint('=== Lipinski Rule of Five (Ro5) ===')\nprint(f'  MW   {mw:.1f} Da    {\\\"✓\\\" if mw\u003C=500 else \\\"✗ VIOLATION (>500)\\\"}')\nprint(f'  LogP {logp:.2f}       {\\\"✓\\\" if logp\u003C=5 else \\\"✗ VIOLATION (>5)\\\"}')\nprint(f'  HBD  {hbd}           {\\\"✓\\\" if hbd\u003C=5 else \\\"✗ VIOLATION (>5)\\\"}')\nprint(f'  HBA  {hba}           {\\\"✓\\\" if hba\u003C=10 else \\\"✗ VIOLATION (>10)\\\"}')\nviol = sum([mw>500, logp>5, hbd>5, hba>10])\nprint(f'  Violations: {viol}\u002F4  {\\\"→ Likely orally bioavailable\\\" if viol\u003C=1 else \\\"→ Poor oral bioavailability predicted\\\"}')\nprint()\nprint('=== Veber Oral Bioavailability Rules ===')\nprint(f'  TPSA         {tpsa:.1f} Å²   {\\\"✓\\\" if tpsa\u003C=140 else \\\"✗ VIOLATION (>140)\\\"}')\nprint(f'  Rot. bonds   {rot}           {\\\"✓\\\" if rot\u003C=10 else \\\"✗ VIOLATION (>10)\\\"}')\nprint(f'  Both rules met: {\\\"Yes → good oral absorption predicted\\\" if tpsa\u003C=140 and rot\u003C=10 else \\\"No → reduced oral absorption\\\"}')\n\"\n```\n\n### 3 — Drug Interaction & Safety Lookup (OpenFDA)\n\n```bash\nDRUG=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$DRUG\")\ncurl -s \"https:\u002F\u002Fapi.fda.gov\u002Fdrug\u002Flabel.json?search=drug_interactions:\\\"${ENCODED}\\\"&limit=3\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nresults=data.get('results',[])\nif not results:\n    print('No interaction data found in FDA labels.')\n    sys.exit()\nfor r in results[:2]:\n    brand=r.get('openfda',{}).get('brand_name',['Unknown'])[0]\n    generic=r.get('openfda',{}).get('generic_name',['Unknown'])[0]\n    interactions=r.get('drug_interactions',['N\u002FA'])[0]\n    print(f'--- {brand} ({generic}) ---')\n    print(interactions[:800])\n    print()\n\"\n```\n\n```bash\nDRUG=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$DRUG\")\ncurl -s \"https:\u002F\u002Fapi.fda.gov\u002Fdrug\u002Fevent.json?search=patient.drug.medicinalproduct:\\\"${ENCODED}\\\"&count=patient.reaction.reactionmeddrapt.exact&limit=10\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nresults=data.get('results',[])\nif not results:\n    print('No adverse event data found.')\n    sys.exit()\nprint(f'Top adverse events reported:')\nfor r in results[:10]:\n    print(f\\\"  {r['count']:>5}x  {r['term']}\\\")\n\"\n```\n\n### 4 — PubChem Compound Search\n\n```bash\nCOMPOUND=\"$1\"\nENCODED=$(python3 -c \"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))\" \"$COMPOUND\")\nCID=$(curl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F${ENCODED}\u002Fcids\u002FTXT\" | head -1 | tr -d '[:space:]')\necho \"PubChem CID: $CID\"\ncurl -s \"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F${CID}\u002Fproperty\u002FIsomericSMILES,InChIKey,IUPACName\u002FJSON\" \\\n  | python3 -c \"\nimport json,sys\np=json.load(sys.stdin)['PropertyTable']['Properties'][0]\nprint(f\\\"IUPAC Name : {p.get('IUPACName','N\u002FA')}\\\")\nprint(f\\\"SMILES     : {p.get('IsomericSMILES','N\u002FA')}\\\")\nprint(f\\\"InChIKey   : {p.get('InChIKey','N\u002FA')}\\\")\n\"\n```\n\n### 5 — Target & Disease Literature (OpenTargets)\n\n```bash\nGENE=\"$1\"\ncurl -s -X POST \"https:\u002F\u002Fapi.platform.opentargets.org\u002Fapi\u002Fv4\u002Fgraphql\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"query\\\":\\\"{ search(queryString: \\\\\\\"${GENE}\\\\\\\", entityNames: [\\\\\\\"target\\\\\\\"], page: {index: 0, size: 1}) { hits { id score object { ... on Target { id approvedSymbol approvedName associatedDiseases(page: {index: 0, size: 5}) { count rows { score disease { id name } } } } } } } }\\\"}\" \\\n  | python3 -c \"\nimport json,sys\ndata=json.load(sys.stdin)\nhits=data.get('data',{}).get('search',{}).get('hits',[])\nif not hits:\n    print('Target not found.')\n    sys.exit()\nobj=hits[0]['object']\nprint(f\\\"Target: {obj.get('approvedSymbol')} — {obj.get('approvedName')}\\\")\nassoc=obj.get('associatedDiseases',{})\nprint(f\\\"Associated with {assoc.get('count',0)} diseases. Top associations:\\\")\nfor row in assoc.get('rows',[]):\n    print(f\\\"  Score {row['score']:.3f}  |  {row['disease']['name']}\\\")\n\"\n```\n\n## Reasoning Guidelines\n\nWhen analysing drug-likeness or molecular properties, always:\n\n1. **State raw values first** — MW, LogP, HBD, HBA, TPSA, RotBonds\n2. **Apply rule sets** — Ro5 (Lipinski), Veber, Ghose filter where relevant\n3. **Flag liabilities** — metabolic hotspots, hERG risk, high TPSA for CNS penetration\n4. **Suggest optimizations** — bioisosteric replacements, prodrug strategies, ring truncation\n5. **Cite the source API** — ChEMBL, PubChem, OpenFDA, or OpenTargets\n\nFor ADMET questions, reason through Absorption, Distribution, Metabolism, Excretion, Toxicity systematically. See references\u002FADMET_REFERENCE.md for detailed guidance.\n\n## Important Notes\n\n- All APIs are free, public, require no authentication\n- ChEMBL rate limits: add sleep 1 between batch requests\n- FDA data reflects reported adverse events, not necessarily causation\n- Always recommend consulting a licensed pharmacist or physician for clinical decisions\n\n## Quick Reference\n\n| Task | API | Endpoint |\n|------|-----|----------|\n| Find target | ChEMBL | `\u002Fapi\u002Fdata\u002Ftarget\u002Fsearch?q=` |\n| Get bioactivity | ChEMBL | `\u002Fapi\u002Fdata\u002Factivity?target_chembl_id=` |\n| Molecule properties | PubChem | `\u002Frest\u002Fpug\u002Fcompound\u002Fname\u002F{name}\u002Fproperty\u002F` |\n| Drug interactions | OpenFDA | `\u002Fdrug\u002Flabel.json?search=drug_interactions:` |\n| Adverse events | OpenFDA | `\u002Fdrug\u002Fevent.json?search=...&count=reaction` |\n| Gene-disease | OpenTargets | GraphQL POST `\u002Fapi\u002Fv4\u002Fgraphql` |\n",{"name":5,"author":23,"license":14,"version":24,"metadata":25,"platforms":33,"description":37,"prerequisites":38},"bennytimz","1.0.0",{"hermes":26},{"tags":27},[28,29,30,31,32],"science","chemistry","pharmacology","research","health",[34,35,36],"linux","macos","windows","Pharmaceutical research assistant for drug discovery workflows. Search bioactive compounds on ChEMBL, calculate drug-likeness (Lipinski Ro5, QED, TPSA, synthetic accessibility), look up drug-drug interactions via OpenFDA, interpret ADMET profiles, and assist with lead optimization. Use for medicinal chemistry questions, molecule property analysis, clinical pharmacology, and open-science drug research.\n",{"commands":39},[40,41],"curl","python3","main","4faa79f92720631ffd00755d9a1018f8c68d3619","hermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery",1,"https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS","https:\u002F\u002Fzdstudios.github.io\u002FAIOS\u002F","https:\u002F\u002Fgithub.com\u002FZDStudios","zdstudios.network","Hacker, Coder and Machine Learning Engineer \r\n","2026-10-06 21:45:38",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add ZDStudios\u002FAIOS --skill drug-discovery",{"tool":58,"command":59},"bunx","bunx skills add ZDStudios\u002FAIOS --skill drug-discovery",{"tool":61,"command":62},"pnpm","pnpm dlx skills add ZDStudios\u002FAIOS --skill drug-discovery","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fhermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery\u002FSKILL.md",true,[66,72,78],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002FADMET_REFERENCE.md","REFERENCE","参考文档",1920,"https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fhermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery\u002Freferences\u002FADMET_REFERENCE.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Fchembl_target.py","SCRIPT","脚本",2203,"https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fhermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery\u002Fscripts\u002Fchembl_target.py",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"scripts\u002Fro5_screen.py",2034,"https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fhermes-agent-main\u002Fhermes-agent-main\u002Foptional-skills\u002Fresearch\u002Fdrug-discovery\u002Fscripts\u002Fro5_screen.py",[83,91,98,104,111,118],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":87,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":18},"01M7910QACPXVF8QY3ZMK6MD2M","ruflo","Ruflo is a multi-agent orchestration platform for AI coding agents (Claude Code, Cursor, Codex, Copilot, Gemini, Amp, +12 more). Use this skill when the user wants to (1) install\u002Finit ruflo in a project, (2) run multi-agent swarms with hierarchical coordination, (3) use ruflo's 314+ MCP tools for memory, routing, hooks, sub-agents, or workflows, (4) check ruflo status\u002Fversion\u002Fdoctor health, or (5) discover which of ruflo's 30+ plugins fits their task.","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fruflo-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fruflo-main\u002FSKILL.md",[],[],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M790G7AX480HX5959531CWBK","ponytail","Forces the laziest solution that actually works, simplest, shortest, most minimal. Channels a senior dev who has seen everything: question whether the task needs to exist at all (YAGNI), reach for the standard library before custom code, native platform features before dependencies, one line before fifty. Supports intensity levels: lite, full (default), ultra. Use on ANY coding task: writing, adding, refactoring, fixing, reviewing, or designing code, and choosing libraries or dependencies. Also use whenever the user says \"ponytail\", \"be lazy\", \"lazy mode\", \"simplest solution\", \"minimal solution\", \"yagni\", \"do less\", or \"shortest path\", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Do NOT use for non-coding requests (general knowledge, prose, translation, summaries, recipes).","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fponytail-main\u002Fskills\u002Fponytail\u002FSKILL.md",[],[],{"skillNo":99,"name":93,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":18},"01M790FD2BC49T1M774T6NND33","Lazy senior dev mode for any coding task (write, refactor, fix, review): YAGNI, stdlib first, no unrequested abstractions. Not for non-coding requests.","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fponytail-main\u002F.openclaw\u002Fskills\u002Fponytail\u002FSKILL.md",[],[],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":18},"01M790FANKMMJJQK23GQEESEXP","ponytail-review","Review a diff for over-engineering. Finds what to delete: reinvented stdlib, needless deps, speculative abstractions. One line per finding.","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fponytail-main\u002F.openclaw\u002Fskills\u002Fponytail-review\u002FSKILL.md",[],[],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":18},"01M790F7Q3SJZCR6BYQ97TVFEJ","ponytail-help","Quick reference for ponytail's modes, skills, and commands. One-shot display.","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fponytail-main\u002F.openclaw\u002Fskills\u002Fponytail-help\u002FSKILL.md",[],[],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":18},"01M790F3TX7VZG0J4VVXE9BSNT","ponytail-gain","Show ponytail measured impact as a scoreboard: less code, less cost, more speed, from the benchmark medians. One-shot display.","https:\u002F\u002Fgithub.com\u002FZDStudios\u002FAIOS\u002Fblob\u002Fmain\u002Fponytail-main\u002F.openclaw\u002Fskills\u002Fponytail-gain\u002FSKILL.md",[],[]]