[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70D7P2ST110V641SRKM365A":3,"skill-same:01M70D7P2ST110V641SRKM365A":121},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M70D7P2ST110V641SRKM365A","nmpa-drug-registry-lookup",null,"中国药品权威数据库查询 — NMPA(国家药监局) + CDE(药品审评中心) + DrugBank(英文名\u002FATC) + PubChem(化学结构) 多源融合,提供(通用名 ↔ 商品名 ↔ 英文名 ↔ 适应症 ↔ NMPA 批文号 ↔ 上市日期)精确映射。Make sure to use this skill whenever the user mentions 药品名 \u002F 通用名 \u002F 商品名 \u002F NMPA \u002F 国药准字 \u002F 药监局 \u002F CDE \u002F drug brand name \u002F generic name \u002F drug registry \u002F pharmaceutical lookup \u002F drug verification \u002F 药物核验 \u002F 商品名对应 \u002F drug cross-check \u002F drug authority lookup. 在任何 medical \u002F market-sizing \u002F clinical \u002F disease-research 报告生成阶段,**所有药品提及必须先调 lookup_drug() 验证**,严禁 LLM 凭训练记忆拼凑通用名↔商品名↔英文名对应关系。LLM 训练截止后药企会更换商品名、新药持续上市,记忆完全不可信。Iron Law:lookup 返回 None → 调用方必须 raise UnverifiedDrugError,不允许 fallback 到记忆。免费公开数据源,跨平台:Claude Code \u002F Codex \u002F Gemini CLI 三端均可 auto-trigger,实现仅依赖 httpx + beautifulsoup4 标准生态,不绑定任何厂商 SDK。","EthanYoQ\u002FSkill-hub","EthanYoQ","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F257484394?v=4","01M70C9QKWR1YS0S7V26DNB18H","Ethan","01M70C9QMER047R5ANZZA6KC2P",11,"MIT","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"registry","registry lookup","lookup","nmpa drug registry lookup","generic","gemini","brand","httpx","fallback","make","gemini cli","cli","verification","sure","code","auto","authority","clinical","medical","market-sizing","2026-11-10 10:12:30",false,"---\r\nname: nmpa-drug-registry-lookup\r\ndescription: 中国药品权威数据库查询 — NMPA(国家药监局) + CDE(药品审评中心) + DrugBank(英文名\u002FATC) + PubChem(化学结构) 多源融合,提供(通用名 ↔ 商品名 ↔ 英文名 ↔ 适应症 ↔ NMPA 批文号 ↔ 上市日期)精确映射。Make sure to use this skill whenever the user mentions 药品名 \u002F 通用名 \u002F 商品名 \u002F NMPA \u002F 国药准字 \u002F 药监局 \u002F CDE \u002F drug brand name \u002F generic name \u002F drug registry \u002F pharmaceutical lookup \u002F drug verification \u002F 药物核验 \u002F 商品名对应 \u002F drug cross-check \u002F drug authority lookup. 在任何 medical \u002F market-sizing \u002F clinical \u002F disease-research 报告生成阶段,**所有药品提及必须先调 lookup_drug() 验证**,严禁 LLM 凭训练记忆拼凑通用名↔商品名↔英文名对应关系。LLM 训练截止后药企会更换商品名、新药持续上市,记忆完全不可信。Iron Law:lookup 返回 None → 调用方必须 raise UnverifiedDrugError,不允许 fallback 到记忆。免费公开数据源,跨平台:Claude Code \u002F Codex \u002F Gemini CLI 三端均可 auto-trigger,实现仅依赖 httpx + beautifulsoup4 标准生态,不绑定任何厂商 SDK。\r\nlicense: MIT\r\n---\r\n\r\n# nmpa-drug-registry-lookup · 中国药品权威 Registry\r\n\r\n## 一句话定义\r\n\r\n中国市场所有报告里的药品提及,都从此 skill 拿权威记录(NMPA + CDE + DrugBank + PubChem 多源融合);**LLM 不允许凭记忆改写药品名**。\r\n\r\n---\r\n\r\n## Iron Law(违反此条 = 报告作废)\r\n\r\n**任何写入报告的药品名(通用名 \u002F 商品名 \u002F 英文名),必须通过 `lookup_drug()` 验证。**\r\n\r\nLLM 不允许凭训练记忆拼凑通用名↔商品名↔英文名对应关系 — 因为:\r\n\r\n1. 药企会更换商品名(如同一通用名在不同厂家有多个商品名)\r\n2. 新药持续上市,LLM 训练截止日期之后的数据**完全不可信**\r\n3. 中国市场命名经常与全球市场不同(如:Lorlatinib 中国商品名\"博瑞纳\",国外\"Lorbrena\")\r\n4. 一个药名错位 = 整份报告地基塌方(治疗推荐错 \u002F GRADE 错 \u002F LP 错 \u002F 市场份额测算错)\r\n\r\n**唯一允许的姿势**:\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drug, UnverifiedDrugError\r\n\r\nrec = lookup_drug(\"洛拉替尼\")\r\nif rec is None:\r\n    raise UnverifiedDrugError(\"洛拉替尼 not in NMPA registry — refuse to write to report\")\r\n\r\n# 报告里写药名时,通用名和商品名都从 record 取,不要手输\r\ngeneric_zh = rec.generic_name_zh   # \"洛拉替尼\"\r\ngeneric_en = rec.generic_name_en   # \"Lorlatinib\"\r\nbrand_zh   = rec.brand_names_zh[0] # \"博瑞纳\"\r\n```\r\n\r\n**绝不允许**:\r\n\r\n```python\r\n# 错误!LLM 凭记忆\r\nreport_html += \"\u003Cp>洛拉替尼(商品名:赛可瑞)...\u003C\u002Fp>\"   # 赛可瑞实际是克唑替尼!\r\nreport_html += \"\u003Cp>布加替尼(商品名:博瑞纳)...\u003C\u002Fp>\"   # 博瑞纳实际是洛拉替尼!\r\n```\r\n\r\n---\r\n\r\n## 何时调用\r\n\r\n- 任何**报告生成阶段**(market-sizing \u002F 治疗方案 \u002F 决策树 \u002F 市场份额测算)涉及具体药品名\r\n- 用户问\"X 药的通用名是什么?\"、\"Y 药什么时候在中国上市?\"、\"Z 药 NMPA 批文号是多少?\"\r\n- `medical-evidence-grading` \u002F `disease-market-sizing-orchestration` 调用方需要药名锚定\r\n- 报告生成完毕,跑 `cross_check_drug_mentions()` 全文扫描,catch LLM 偷偷凭记忆改写的药名\r\n\r\n## 何时不调用\r\n\r\n- 文献检索本身(给 PubMed query 时)— 不需要,query 自由文本即可\r\n- 询问药物机制 \u002F 靶点(用 `pubtator-entity-search` 抓基因\u002F通路)\r\n- 询问临床试验状态(用 `clinical-trials-v2`)\r\n\r\n---\r\n\r\n## 与其他 skill 的协作关系\r\n\r\n```\r\n                        ┌─ pubmed-eutils(召回主力)\r\n召回层 ───┬─────────────┤\r\n          │             └─ europepmc-search\r\n          │\r\n          │             ┌─ cn-clinical-guidelines-fetch(指南权威)\r\n权威层 ───┼─────────────┤\r\n          │             └─ ★ nmpa-drug-registry-lookup(本 skill · 药品权威)\r\n          │\r\n          ▼\r\n报告生成层 ───  所有药品名引用 → lookup_drug() \u002F cross_check_drug_mentions()\r\n```\r\n\r\n**调用顺序**:\r\n1. orchestration 解析疾病 → fetch_chinese_guidelines() 拿指南治疗推荐表\r\n2. 用指南里提到的药品 → lookup_drugs_batch() 建立本疾病 drug_registry.json\r\n3. 报告生成时所有药品名引用从 drug_registry.json 取(LLM 禁止改写)\r\n4. 报告草稿出来 → cross_check_drug_mentions(html) 全文扫描,critical 严重性 → raise\r\n\r\n---\r\n\r\n## 核心函数签名\r\n\r\n```python\r\nfrom dataclasses import dataclass\r\nfrom pathlib import Path\r\n\r\n@dataclass(frozen=True)\r\nclass DrugRecord:\r\n    \"\"\"中国药品权威记录。frozen 防止 LLM 修改。\"\"\"\r\n    generic_name_zh: str         # 通用名(中文,首选 NMPA 命名)\r\n    generic_name_en: str         # 通用名(英文,DrugBank\u002FINN)\r\n    brand_names_zh: tuple[str, ...]    # 商品名列表(中国市场,可能多个生产厂家)\r\n    brand_names_en: tuple[str, ...]    # 商品名列表(全球)\r\n    nmpa_approval_no: str        # NMPA 批准文号(如 国药准字 H20180123 \u002F 进 J20180012)\r\n    first_approval_date_cn: str  # 中国首次上市日期 ISO yyyy-mm-dd\r\n    indications_cn: tuple[str, ...]    # 适应症(中文)\r\n    atc_code: str                # ATC 分类(如 L01ED05 = 抗肿瘤 ALK 抑制剂)\r\n    target: str                  # 靶点(对靶向药,如 \"ALK\")\r\n    drug_class: str              # 类别(如 \"三代 ALK-TKI\")\r\n    sources: tuple[str, ...]     # 来源 URL,可追溯\r\n\r\n\r\nclass UnverifiedDrugError(Exception):\r\n    \"\"\"lookup 失败时调用方应 raise — 拒绝写入报告。\"\"\"\r\n\r\n\r\ndef lookup_drug(\r\n    name: str,                   # 任意名称(通用\u002F商品\u002F英文,模糊匹配)\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> DrugRecord | None:\r\n    \"\"\"单药查询。匹配优先级:\r\n    1. 已知 fallback dict 精确命中(NMPA 网站抓不到时的兜底)\r\n    2. NMPA 精确通用名\r\n    3. NMPA 商品名\r\n    4. DrugBank generic_name\r\n    5. PubChem 化学名 fallback\r\n\r\n    None = 该药不在权威数据库 → 调用方必须 raise UnverifiedDrugError。\r\n    \"\"\"\r\n\r\n\r\ndef lookup_drugs_batch(\r\n    names: list[str],\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> dict[str, DrugRecord | None]:\r\n    \"\"\"批量查询。返回 {name: DrugRecord or None}。\"\"\"\r\n\r\n\r\ndef cross_check_drug_mentions(\r\n    text: str,                   # 报告 HTML \u002F Markdown 草稿\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> dict:\r\n    \"\"\"扫描文本里所有疑似药品名,逐个 lookup,返回错误清单。\r\n\r\n    Returns:\r\n        {\r\n            \"ok\": bool,\r\n            \"verified_drugs\": [...],       # 命中权威数据库的药名\r\n            \"unverified_drugs\": [...],     # 在数据库找不到 → 必须修\r\n            \"name_mismatches\": [           # 通用名\u002F商品名混用错位(critical)\r\n                {\"text_uses\": \"赛可瑞\", \"claimed_as\": \"洛拉替尼\",\r\n                 \"actual_generic\": \"克唑替尼\", \"evidence_source\": \"NMPA\"},\r\n                ...\r\n            ],\r\n            \"violation_severity\": \"none\" | \"warning\" | \"critical\",\r\n        }\r\n\r\n    严重性规则:\r\n    - 任何 name_mismatches 非空 → critical(LLM 把 A 药写成 B 药商品名)\r\n    - 仅 unverified_drugs 非空 → warning(可能是新药 \u002F 仿制名)\r\n    - 全部 verified → none\r\n    \"\"\"\r\n```\r\n\r\n---\r\n\r\n## 数据源(免费公开)\r\n\r\n| 来源 | 提供 | 抓取方式 |\r\n|-----|------|---------|\r\n| **NMPA 国家药监局** (`nmpa.gov.cn`) | 通用名 \u002F 批文号 \u002F 适应症 \u002F 上市时间 (权威 I 级) | REST + WebFetch + bs4 |\r\n| **CDE 药品审评中心** (`cde.org.cn`) | 临床试验阶段 \u002F 适应症详情 | WebFetch |\r\n| **DrugBank**(免费学术) | 英文名 \u002F ATC code \u002F mechanism | API \u002F scrape |\r\n| **PubChem**(NIH) | 化学结构 \u002F IUPAC \u002F 同义词 | REST(`pug.ncbi.nlm.nih.gov\u002Frest\u002Fpug`) |\r\n| **NCBI Gene** | 靶点基因(已通过 pubtator-entity-search 间接) | 复用 |\r\n\r\n**fallback 兜底**:NMPA 网站反爬严重时,`scripts\u002F_known_drugs_fallback.py` 含一份手工核验的常用药字典,每条都有 NMPA 公开页 URL 引用作来源。\r\n\r\n---\r\n\r\n## 失败模式(8 条)\r\n\r\n| # | 症状 | 原因 | 修复 |\r\n|---|------|------|------|\r\n| 1 | lookup 返回 None | 药品不在 NMPA(可能仿制名 \u002F 进口未上市 \u002F 拼写错)| 让用户确认是否仍写入,标 unverified;不允许 LLM 凭记忆补 |\r\n| 2 | 同一通用名多个商品名 | 多厂家(如阿仑膦酸钠) | brand_names_zh 列出全部,不要任选一个 |\r\n| 3 | 通用名↔商品名错位(LLM 偷偷脑补) | LLM 训练截止后数据老化 | `cross_check_drug_mentions` 全文扫描,critical 级 raise |\r\n| 4 | NMPA 网站抓取失败(反爬) | nmpa.gov.cn 改版 \u002F 验证码 | 降级:cache → fallback dict → 报错 |\r\n| 5 | 同一英文名对应多个中文音译 | 早期未规范化 | NMPA 通用名为唯一权威,其他作 alias |\r\n| 6 | DrugBank 拒绝学术抓取 | 反爬升级 | 该字段标 None,不阻塞主流程(NMPA 字段是必需) |\r\n| 7 | LLM 在 prompt 里\"脑补\"通用名 | 训练数据过时 | 任何 grade_evidence \u002F LP 阶段都强制 lookup,不接受 LLM 直出 |\r\n| 8 | 进口药批文号格式 vs 国产不同 | NMPA 编号规则:H\u002FJ\u002FZ\u002FS 前缀 | 不要自行拆解,作为 opaque string 存储 |\r\n\r\n---\r\n\r\n## 跨平台\r\n\r\n- **Python**: 3.10+(用 PEP 604 `X | None` 类型注解)\r\n- **依赖**: `httpx`, `beautifulsoup4`, 可选 `pypdf`(适应症附件解析)\r\n- **测试**: `python -m pytest`(Windows 用 `C:\\Python3\\python.exe -m pytest`,不要用 `python3` stub)\r\n- **Windows GBK 终端兼容**: 测试入口加 `sys.stdout.reconfigure(encoding=\"utf-8\")`\r\n- **Cache**: JSON 文件 `\u003Ccache_dir>\u002Fdrug_registry.json`,TTL 7 天;SQLite 是 future work\r\n- **不联网测试**: 测试用 `tests\u002Ffixtures\u002Fnmpa_responses\u002F*.html` 预录制响应,绝不在 CI 里直连 NMPA\r\n\r\n---\r\n\r\n## 调用方典型用法\r\n\r\n### A. 单药 lookup\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drug, UnverifiedDrugError\r\n\r\nrec = lookup_drug(\"洛拉替尼\")\r\nif rec is None:\r\n    raise UnverifiedDrugError(\"洛拉替尼 not in NMPA registry — refuse to write to report\")\r\n\r\nprint(rec.generic_name_en)    # \"Lorlatinib\"\r\nprint(rec.brand_names_zh)     # (\"博瑞纳\",)\r\nprint(rec.atc_code)           # \"L01ED05\"\r\nprint(rec.first_approval_date_cn)  # \"2022-04-29\"\r\n```\r\n\r\n### B. 批量预热(orchestration 在 Step 0b 调)\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drugs_batch\r\n\r\nkey_drugs = [\"克唑替尼\", \"阿来替尼\", \"塞瑞替尼\", \"恩沙替尼\",\r\n             \"布加替尼\", \"洛拉替尼\", \"伊鲁阿克\", \"依奉阿克\"]\r\nresults = lookup_drugs_batch(key_drugs)\r\n\r\nmissing = [d for d, r in results.items() if r is None]\r\nif missing:\r\n    raise UnverifiedDrugError(f\"NMPA registry missing: {missing}\")\r\n\r\n# 写入 .cache\u002F\u003Cslug>\u002Fdrug_registry.json,后续报告生成阶段 LLM 必须从此取\r\n```\r\n\r\n### C. 报告生成完毕全文扫描\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import cross_check_drug_mentions\r\n\r\nresult = cross_check_drug_mentions(report_html)\r\nif result[\"violation_severity\"] == \"critical\":\r\n    # LLM 把 A 药写成 B 药商品名 — 必须重生成\r\n    raise OrchestrationError(f\"drug name mismatches: {result['name_mismatches']}\")\r\nelif result[\"violation_severity\"] == \"warning\":\r\n    # 仅有 unverified(可能是新药)— §0 加红色警告\r\n    add_section_zero_warning(result[\"unverified_drugs\"])\r\n```\r\n\r\n---\r\n\r\n## 引用与下游\r\n\r\n- 上游: `cn-clinical-guidelines-fetch`(指南先告诉本 skill 该疾病有哪些药)\r\n- 下游: `disease-market-sizing-orchestration`(在内容生成阶段强制锚定)、`content-verification-layer`(report-level cross-check 的事实审计层)\r\n- 同层互补: `pubtator-entity-search`(基因靶点)、`pubmed-eutils`(文献召回)\r\n\r\n参考文档:\r\n- `references\u002Fnmpa-fetch-api.md` — NMPA 网站结构 + 抓取策略\r\n- `references\u002Fdrugbank-integration.md` — DrugBank 学术免费用法\r\n- `references\u002Ffailure-modes.md` — 8 失败模式详解\r\n","# nmpa-drug-registry-lookup · 中国药品权威 Registry\r\n\r\n## 一句话定义\r\n\r\n中国市场所有报告里的药品提及,都从此 skill 拿权威记录(NMPA + CDE + DrugBank + PubChem 多源融合);**LLM 不允许凭记忆改写药品名**。\r\n\r\n---\r\n\r\n## Iron Law(违反此条 = 报告作废)\r\n\r\n**任何写入报告的药品名(通用名 \u002F 商品名 \u002F 英文名),必须通过 `lookup_drug()` 验证。**\r\n\r\nLLM 不允许凭训练记忆拼凑通用名↔商品名↔英文名对应关系 — 因为:\r\n\r\n1. 药企会更换商品名(如同一通用名在不同厂家有多个商品名)\r\n2. 新药持续上市,LLM 训练截止日期之后的数据**完全不可信**\r\n3. 中国市场命名经常与全球市场不同(如:Lorlatinib 中国商品名\"博瑞纳\",国外\"Lorbrena\")\r\n4. 一个药名错位 = 整份报告地基塌方(治疗推荐错 \u002F GRADE 错 \u002F LP 错 \u002F 市场份额测算错)\r\n\r\n**唯一允许的姿势**:\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drug, UnverifiedDrugError\r\n\r\nrec = lookup_drug(\"洛拉替尼\")\r\nif rec is None:\r\n    raise UnverifiedDrugError(\"洛拉替尼 not in NMPA registry — refuse to write to report\")\r\n\r\n# 报告里写药名时,通用名和商品名都从 record 取,不要手输\r\ngeneric_zh = rec.generic_name_zh   # \"洛拉替尼\"\r\ngeneric_en = rec.generic_name_en   # \"Lorlatinib\"\r\nbrand_zh   = rec.brand_names_zh[0] # \"博瑞纳\"\r\n```\r\n\r\n**绝不允许**:\r\n\r\n```python\r\n# 错误!LLM 凭记忆\r\nreport_html += \"\u003Cp>洛拉替尼(商品名:赛可瑞)...\u003C\u002Fp>\"   # 赛可瑞实际是克唑替尼!\r\nreport_html += \"\u003Cp>布加替尼(商品名:博瑞纳)...\u003C\u002Fp>\"   # 博瑞纳实际是洛拉替尼!\r\n```\r\n\r\n---\r\n\r\n## 何时调用\r\n\r\n- 任何**报告生成阶段**(market-sizing \u002F 治疗方案 \u002F 决策树 \u002F 市场份额测算)涉及具体药品名\r\n- 用户问\"X 药的通用名是什么?\"、\"Y 药什么时候在中国上市?\"、\"Z 药 NMPA 批文号是多少?\"\r\n- `medical-evidence-grading` \u002F `disease-market-sizing-orchestration` 调用方需要药名锚定\r\n- 报告生成完毕,跑 `cross_check_drug_mentions()` 全文扫描,catch LLM 偷偷凭记忆改写的药名\r\n\r\n## 何时不调用\r\n\r\n- 文献检索本身(给 PubMed query 时)— 不需要,query 自由文本即可\r\n- 询问药物机制 \u002F 靶点(用 `pubtator-entity-search` 抓基因\u002F通路)\r\n- 询问临床试验状态(用 `clinical-trials-v2`)\r\n\r\n---\r\n\r\n## 与其他 skill 的协作关系\r\n\r\n```\r\n                        ┌─ pubmed-eutils(召回主力)\r\n召回层 ───┬─────────────┤\r\n          │             └─ europepmc-search\r\n          │\r\n          │             ┌─ cn-clinical-guidelines-fetch(指南权威)\r\n权威层 ───┼─────────────┤\r\n          │             └─ ★ nmpa-drug-registry-lookup(本 skill · 药品权威)\r\n          │\r\n          ▼\r\n报告生成层 ───  所有药品名引用 → lookup_drug() \u002F cross_check_drug_mentions()\r\n```\r\n\r\n**调用顺序**:\r\n1. orchestration 解析疾病 → fetch_chinese_guidelines() 拿指南治疗推荐表\r\n2. 用指南里提到的药品 → lookup_drugs_batch() 建立本疾病 drug_registry.json\r\n3. 报告生成时所有药品名引用从 drug_registry.json 取(LLM 禁止改写)\r\n4. 报告草稿出来 → cross_check_drug_mentions(html) 全文扫描,critical 严重性 → raise\r\n\r\n---\r\n\r\n## 核心函数签名\r\n\r\n```python\r\nfrom dataclasses import dataclass\r\nfrom pathlib import Path\r\n\r\n@dataclass(frozen=True)\r\nclass DrugRecord:\r\n    \"\"\"中国药品权威记录。frozen 防止 LLM 修改。\"\"\"\r\n    generic_name_zh: str         # 通用名(中文,首选 NMPA 命名)\r\n    generic_name_en: str         # 通用名(英文,DrugBank\u002FINN)\r\n    brand_names_zh: tuple[str, ...]    # 商品名列表(中国市场,可能多个生产厂家)\r\n    brand_names_en: tuple[str, ...]    # 商品名列表(全球)\r\n    nmpa_approval_no: str        # NMPA 批准文号(如 国药准字 H20180123 \u002F 进 J20180012)\r\n    first_approval_date_cn: str  # 中国首次上市日期 ISO yyyy-mm-dd\r\n    indications_cn: tuple[str, ...]    # 适应症(中文)\r\n    atc_code: str                # ATC 分类(如 L01ED05 = 抗肿瘤 ALK 抑制剂)\r\n    target: str                  # 靶点(对靶向药,如 \"ALK\")\r\n    drug_class: str              # 类别(如 \"三代 ALK-TKI\")\r\n    sources: tuple[str, ...]     # 来源 URL,可追溯\r\n\r\n\r\nclass UnverifiedDrugError(Exception):\r\n    \"\"\"lookup 失败时调用方应 raise — 拒绝写入报告。\"\"\"\r\n\r\n\r\ndef lookup_drug(\r\n    name: str,                   # 任意名称(通用\u002F商品\u002F英文,模糊匹配)\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> DrugRecord | None:\r\n    \"\"\"单药查询。匹配优先级:\r\n    1. 已知 fallback dict 精确命中(NMPA 网站抓不到时的兜底)\r\n    2. NMPA 精确通用名\r\n    3. NMPA 商品名\r\n    4. DrugBank generic_name\r\n    5. PubChem 化学名 fallback\r\n\r\n    None = 该药不在权威数据库 → 调用方必须 raise UnverifiedDrugError。\r\n    \"\"\"\r\n\r\n\r\ndef lookup_drugs_batch(\r\n    names: list[str],\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> dict[str, DrugRecord | None]:\r\n    \"\"\"批量查询。返回 {name: DrugRecord or None}。\"\"\"\r\n\r\n\r\ndef cross_check_drug_mentions(\r\n    text: str,                   # 报告 HTML \u002F Markdown 草稿\r\n    market: str = \"CN\",\r\n    cache_dir: Path | None = None,\r\n) -> dict:\r\n    \"\"\"扫描文本里所有疑似药品名,逐个 lookup,返回错误清单。\r\n\r\n    Returns:\r\n        {\r\n            \"ok\": bool,\r\n            \"verified_drugs\": [...],       # 命中权威数据库的药名\r\n            \"unverified_drugs\": [...],     # 在数据库找不到 → 必须修\r\n            \"name_mismatches\": [           # 通用名\u002F商品名混用错位(critical)\r\n                {\"text_uses\": \"赛可瑞\", \"claimed_as\": \"洛拉替尼\",\r\n                 \"actual_generic\": \"克唑替尼\", \"evidence_source\": \"NMPA\"},\r\n                ...\r\n            ],\r\n            \"violation_severity\": \"none\" | \"warning\" | \"critical\",\r\n        }\r\n\r\n    严重性规则:\r\n    - 任何 name_mismatches 非空 → critical(LLM 把 A 药写成 B 药商品名)\r\n    - 仅 unverified_drugs 非空 → warning(可能是新药 \u002F 仿制名)\r\n    - 全部 verified → none\r\n    \"\"\"\r\n```\r\n\r\n---\r\n\r\n## 数据源(免费公开)\r\n\r\n| 来源 | 提供 | 抓取方式 |\r\n|-----|------|---------|\r\n| **NMPA 国家药监局** (`nmpa.gov.cn`) | 通用名 \u002F 批文号 \u002F 适应症 \u002F 上市时间 (权威 I 级) | REST + WebFetch + bs4 |\r\n| **CDE 药品审评中心** (`cde.org.cn`) | 临床试验阶段 \u002F 适应症详情 | WebFetch |\r\n| **DrugBank**(免费学术) | 英文名 \u002F ATC code \u002F mechanism | API \u002F scrape |\r\n| **PubChem**(NIH) | 化学结构 \u002F IUPAC \u002F 同义词 | REST(`pug.ncbi.nlm.nih.gov\u002Frest\u002Fpug`) |\r\n| **NCBI Gene** | 靶点基因(已通过 pubtator-entity-search 间接) | 复用 |\r\n\r\n**fallback 兜底**:NMPA 网站反爬严重时,`scripts\u002F_known_drugs_fallback.py` 含一份手工核验的常用药字典,每条都有 NMPA 公开页 URL 引用作来源。\r\n\r\n---\r\n\r\n## 失败模式(8 条)\r\n\r\n| # | 症状 | 原因 | 修复 |\r\n|---|------|------|------|\r\n| 1 | lookup 返回 None | 药品不在 NMPA(可能仿制名 \u002F 进口未上市 \u002F 拼写错)| 让用户确认是否仍写入,标 unverified;不允许 LLM 凭记忆补 |\r\n| 2 | 同一通用名多个商品名 | 多厂家(如阿仑膦酸钠) | brand_names_zh 列出全部,不要任选一个 |\r\n| 3 | 通用名↔商品名错位(LLM 偷偷脑补) | LLM 训练截止后数据老化 | `cross_check_drug_mentions` 全文扫描,critical 级 raise |\r\n| 4 | NMPA 网站抓取失败(反爬) | nmpa.gov.cn 改版 \u002F 验证码 | 降级:cache → fallback dict → 报错 |\r\n| 5 | 同一英文名对应多个中文音译 | 早期未规范化 | NMPA 通用名为唯一权威,其他作 alias |\r\n| 6 | DrugBank 拒绝学术抓取 | 反爬升级 | 该字段标 None,不阻塞主流程(NMPA 字段是必需) |\r\n| 7 | LLM 在 prompt 里\"脑补\"通用名 | 训练数据过时 | 任何 grade_evidence \u002F LP 阶段都强制 lookup,不接受 LLM 直出 |\r\n| 8 | 进口药批文号格式 vs 国产不同 | NMPA 编号规则:H\u002FJ\u002FZ\u002FS 前缀 | 不要自行拆解,作为 opaque string 存储 |\r\n\r\n---\r\n\r\n## 跨平台\r\n\r\n- **Python**: 3.10+(用 PEP 604 `X | None` 类型注解)\r\n- **依赖**: `httpx`, `beautifulsoup4`, 可选 `pypdf`(适应症附件解析)\r\n- **测试**: `python -m pytest`(Windows 用 `C:\\Python3\\python.exe -m pytest`,不要用 `python3` stub)\r\n- **Windows GBK 终端兼容**: 测试入口加 `sys.stdout.reconfigure(encoding=\"utf-8\")`\r\n- **Cache**: JSON 文件 `\u003Ccache_dir>\u002Fdrug_registry.json`,TTL 7 天;SQLite 是 future work\r\n- **不联网测试**: 测试用 `tests\u002Ffixtures\u002Fnmpa_responses\u002F*.html` 预录制响应,绝不在 CI 里直连 NMPA\r\n\r\n---\r\n\r\n## 调用方典型用法\r\n\r\n### A. 单药 lookup\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drug, UnverifiedDrugError\r\n\r\nrec = lookup_drug(\"洛拉替尼\")\r\nif rec is None:\r\n    raise UnverifiedDrugError(\"洛拉替尼 not in NMPA registry — refuse to write to report\")\r\n\r\nprint(rec.generic_name_en)    # \"Lorlatinib\"\r\nprint(rec.brand_names_zh)     # (\"博瑞纳\",)\r\nprint(rec.atc_code)           # \"L01ED05\"\r\nprint(rec.first_approval_date_cn)  # \"2022-04-29\"\r\n```\r\n\r\n### B. 批量预热(orchestration 在 Step 0b 调)\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import lookup_drugs_batch\r\n\r\nkey_drugs = [\"克唑替尼\", \"阿来替尼\", \"塞瑞替尼\", \"恩沙替尼\",\r\n             \"布加替尼\", \"洛拉替尼\", \"伊鲁阿克\", \"依奉阿克\"]\r\nresults = lookup_drugs_batch(key_drugs)\r\n\r\nmissing = [d for d, r in results.items() if r is None]\r\nif missing:\r\n    raise UnverifiedDrugError(f\"NMPA registry missing: {missing}\")\r\n\r\n# 写入 .cache\u002F\u003Cslug>\u002Fdrug_registry.json,后续报告生成阶段 LLM 必须从此取\r\n```\r\n\r\n### C. 报告生成完毕全文扫描\r\n\r\n```python\r\nfrom nmpa_drug_registry_lookup.scripts.registry import cross_check_drug_mentions\r\n\r\nresult = cross_check_drug_mentions(report_html)\r\nif result[\"violation_severity\"] == \"critical\":\r\n    # LLM 把 A 药写成 B 药商品名 — 必须重生成\r\n    raise OrchestrationError(f\"drug name mismatches: {result['name_mismatches']}\")\r\nelif result[\"violation_severity\"] == \"warning\":\r\n    # 仅有 unverified(可能是新药)— §0 加红色警告\r\n    add_section_zero_warning(result[\"unverified_drugs\"])\r\n```\r\n\r\n---\r\n\r\n## 引用与下游\r\n\r\n- 上游: `cn-clinical-guidelines-fetch`(指南先告诉本 skill 该疾病有哪些药)\r\n- 下游: `disease-market-sizing-orchestration`(在内容生成阶段强制锚定)、`content-verification-layer`(report-level cross-check 的事实审计层)\r\n- 同层互补: `pubtator-entity-search`(基因靶点)、`pubmed-eutils`(文献召回)\r\n\r\n参考文档:\r\n- `references\u002Fnmpa-fetch-api.md` — NMPA 网站结构 + 抓取策略\r\n- `references\u002Fdrugbank-integration.md` — DrugBank 学术免费用法\r\n- `references\u002Ffailure-modes.md` — 8 失败模式详解\r\n",{"name":5,"license":15,"description":7},"mine","1e7390741dffd3d5041fca4ebc056071ee3ba137","archives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup",5,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub","https:\u002F\u002Fgithub.com\u002FEthanYoQ","www.orz.md","Part Marketer, Part AI Explorer.","2026-11-07 14:52:29",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add EthanYoQ\u002FSkill-hub --skill nmpa-drug-registry-lookup",{"tool":69,"command":70},"bunx","bunx skills add EthanYoQ\u002FSkill-hub --skill nmpa-drug-registry-lookup",{"tool":72,"command":73},"pnpm","pnpm dlx skills add EthanYoQ\u002FSkill-hub --skill nmpa-drug-registry-lookup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002FSKILL.md",true,[77,83,87,91,97,101,105,109,113,117],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fdrugbank-integration.md","REFERENCE","参考文档",1633,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Freferences\u002Fdrugbank-integration.md",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Ffailure-modes.md",2861,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Freferences\u002Ffailure-modes.md",{"path":88,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fnmpa-fetch-api.md",2078,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Freferences\u002Fnmpa-fetch-api.md",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002F__init__.py","SCRIPT","脚本",627,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F__init__.py",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002F_cache.py",2721,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F_cache.py",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002F_cde.py",1141,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F_cde.py",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":107,"sourceHtmlUrl":108},"scripts\u002F_drugbank.py",1135,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F_drugbank.py",{"path":110,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":111,"sourceHtmlUrl":112},"scripts\u002F_known_drugs_fallback.py",9075,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F_known_drugs_fallback.py",{"path":114,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002F_nmpa.py",3493,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002F_nmpa.py",{"path":118,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":119,"sourceHtmlUrl":120},"scripts\u002Fregistry.py",8621,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fnmpa-drug-registry-lookup\u002Fc46e383d394cc99a\u002Fnmpa-drug-registry-lookup\u002Fscripts\u002Fregistry.py",[122,148,174,197,215,230],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":49},"01M713CBDSYARG4PXFXK2R2NNN","xhs-pharma-social-listening","Run evidence-disciplined Xiaohongshu social listening for foreign pharma employee pain points. Use when the user asks to collect and analyze notes\u002Fcomments about pharma companies, aliases, roles, compliance, medical affairs, or AI topics, then produce a cited and scored sampled-insight report. Includes independent-evidence counting, MediaCrawler batch collection, and CAPTCHA\u002F461 fallback to Agent Reach\u002FOpenCLI.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fxhs-pharma-social-listening\u002FSKILL.md",[128],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[130,131,132,133,47,134,135,136,137,138,139,140,141,37,142,143,144,145,146,147],"social","xhs pharma social listening","social listening","xhs","counting","when","collection","batch","analyze","notes","run","opencli","captcha","agent reach","evidence","for","collect","produce",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":156,"publishedAt":49},"01M713C8Q76ZP0WXXBRAFKS6EE","healthcare-phi-compliance","Protected Health Information (PHI) and Personally Identifiable Information (PII) compliance patterns for healthcare applications. Covers data classification, access control, audit trails, encryption, and common leak vectors. Use when code touches PHI or PII in a healthcare system, or when auditing access control, audit trails, or leak vectors.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-phi-compliance\u002FSKILL.md",[154,155],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[157,158,159,160,161,162,163,164,135,165,43,166,167,168,169,170,145,171,172,173],"healthcare","phi","compliance","healthcare phi compliance","pii","compliance patterns","information","access","encryption","common","audit","data","patterns","Access Control","system","applications","Auditing Access Control",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":181,"publishedAt":49},"01M713C5R2GE43X45T2K75TB76","healthcare-eval-harness","Patient safety evaluation harness for healthcare application deployments. Automated test suites for CDSS accuracy, PHI exposure, clinical workflow integrity, and integration compliance. Blocks deployments on safety failures. Use when a healthcare deployment must be gated on patient-safety tests for CDSS accuracy, PHI exposure, and workflow integrity.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-eval-harness\u002FSKILL.md",[180],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[157,182,183,184,185,46,186,135,187,188,189,190,158,145,191,192,193,194,195,196],"eval","harness","healthcare eval harness","eval harness","patient","workflow","Evaluation","Safety","integrity","deployment","accuracy","tests","deployments","use","super",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":204,"publishedAt":49},"01M713C2J17S91VYR7A8M696VR","healthcare-emr-patterns","EMR\u002FEHR development patterns for healthcare applications. Clinical safety, encounter workflows, prescription generation, clinical decision support integration, and accessibility-first UI for medical data entry. Use when building EMR or EHR features such as encounter workflows, prescription generation, or clinical data entry UI.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-emr-patterns\u002FSKILL.md",[203],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[157,205,169,206,207,47,46,208,135,209,210,211,189,168,212,213,214,145,172,195],"EMR","healthcare emr patterns","decision","workflows","support","clinical decision support","features","ui","as","development",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":222,"publishedAt":49},"01M713BZERTXV0N8X6SW9DDVWZ","healthcare-cdss-patterns","Clinical Decision Support System (CDSS) development patterns. Drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), alert severity classification, and integration into EMR workflows. Use when building clinical decision support — drug interaction checks, dose validation, clinical scoring, or alert severity.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-cdss-patterns\u002FSKILL.md",[221],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[157,169,223,207,46,205,208,135,224,225,209,210,226,214,171,227,195,228,196,229],"healthcare cdss patterns","scoring","interaction","severity","classification","alert","decision support",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":237,"publishedAt":49},"01M713BVK3PQR7V4ZKYGMWMXJD","dxy-task-clarify","用户的请求含糊、缺背景、缺资料说明、缺读者或用途时使用。先用少量带选项的追问把任务问清楚，写成任务卡，用户确认后再执行。尤其适用于医生、科研人员和药企各岗位的工作，例如「帮我分析一下这些数据」「帮我准备明天的拜访」「写个总结」「做个 PPT」「回一下这封邮件」「整理一下会议纪要」「整理一下这些文献」「帮我准备下周的讲课」「写个病例汇报」「帮我写个提示词」。用户说「先问我」「帮我理清需求」「我不知道怎么描述」「我不会问 AI」时也使用。用途、资料、读者都已说清的请求，纯翻译，以及写代码、改代码，不使用。","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fdxy-task-clarify\u002FSKILL.md",[236],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[238,239,240,241,242,243,244,245],"clarify","dxy task clarify","task","pptx","整理","翻译","数据","总结"]