agentsclimarketplace

Market sizing mece foundation

Skill EthanYoQ/Skill-hub/skills/06-data-search/market-sizing-mece-foundation

L0 foundation for all medical market-sizing tasks. Use this skill whenever a task involves MECE department/age/region/indication slicing, evidence grading, drug-target three-state activity matrix, or cross-department patient-flow sizing. Trigger phrases: "市场多大", "market sizing", "用药占比", "竞品格局", "患者流". Disease-specific L1 skills (ifi-market-sizing-skill, etc.) must reference this first.From its SKILL.md

Install
npx -y skills add EthanYoQ/Skill-hub --skill market-sizing-mece-foundation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • fetches URLsInstructs the agent to fetch 3 URLs, including https://www.nmpa.gov.cn/ and 2 more.

SKILL.md

36.4 KB, ~15.6k tokens by cl100k_base, as published. Nobody here has run it

Medical Market Sizing — MECE Foundation (L0)

一句话定义: 所有医药市场调研 market sizing 任务的跨疾病共性骨架 — 包括 MECE 切分原则、证据分级、药物-靶点三态活性矩阵、Phase 0 通用澄清问题库、Agent 输出 schema 契约。疾病特化 skill (L1) 继承本 skill 后再加专属内容。

定位:本 skill 是 L0 Foundation。疾病特化 skill 是 L1(如 ifi-market-sizing-skill 抗真菌、oncology-sizing-skill 肿瘤、cv-sizing-skill 心血管)。L1 必须在开头引用本 skill,并只维护本疾病专属部分(锚点文献、NMPA 药物清单、专家团队、专属诊疗路径)。


1. MECE 切分原则(核心 Iron Law)

MECE = Mutually Exclusive, Collectively Exhaustive(互斥 + 穷尽)

做医药市场调研时,常见的 4 个切分维度必须分别保证 MECE:

维度切分示例MECE 陷阱
科室血液科 / 呼吸科(含 RICU)/ 综合 ICU / 感染科 / 肿瘤科 / 器官移植❌ 综合 ICU 里的呼吸相关患者被重复算到"呼吸科"
年龄成人 / 儿童(0-17)— 或更细分新生儿/婴幼/青少年❌ "成人"默认包含儿童但没标注
地理华北/华东/华南/西南/西北/东北 — 或省级❌ 国家级数据不能按科室再拆
适应症预防 / 经验性治疗 / 诊断驱动 / 目标治疗 / 挽救治疗❌ "一线治疗"同时包含经验+目标模糊

MECE 违反的工程根源

MECE 错误通常不在方法论层,而在 Phase 2 数据抓取层。以下三个漏洞必须在 L2 data-agent-template 中堵住:

  1. 搜索词模糊:"ICU" 搜出综合 ICU + RICU 混杂
  2. 数据 schema 不强制:返回数据无 ward_type 字段,下游无法过滤
  3. 数据不足时默认顶替:综合 ICU 数据被无声填入呼吸科空白

MECE 修复三件套(L0 强制)

所有 L1 疾病 skill 必须实施:

A. Phase 0 强制 MECE 提问(见第 4 节模板库)

Q: 按科室切分时是否走 MECE 互斥?
   A-1 严格互斥(推荐默认):呼吸科 ∩ 综合 ICU = ∅,综合 ICU 数据剔除
   A-2 包含归口:呼吸科 + X% 归口的综合 ICU 患者(标注系数)
   A-3 不区分:仅在单一科室独立调研时使用

B. Phase 2 搜索词模板按 MECE 模式过滤(见第 6 节)

C. Agent 输出强制 schema(见第 7 节)每条证据含 dept_attribution + ward_type / age_group / region / indication_stage 必要字段


2. 证据分级标准(跨疾病统一)

等级符号定义市场分析可用性
最高🟢中国多中心 RWE(≥5 中心或 n≥200)或国家级指南/登记可直接用于市场分析
重要🔵中国单中心 RWE n≥50 或区域多中心可谨慎参考,标注局限
参考🟡单中心 n<50 / 摘要 / 学位论文 / 行业咨询估算仅作补充参考
国际国际多中心 / 指南(非中国数据)标注"非中国数据"后可参考
估算🟠基于数据的合理推算必须标注推算逻辑和假设

特殊规则:

  • 指南推荐 ≠ 真实世界比例,两者分列
  • 企业赞助但经同行评审 → 正常分级 + 标注赞助方
  • 会议摘要 vs 期刊全文 → 以期刊版为准
  • 处方分析 / DDD → 等级随中心数和样本量判定

3. 药物-靶点 三态活性矩阵(跨疾病通用)

不得用二态(✅/✗)描述药物 × 靶点关系。必须三态:

符号含义判断标准处方含义
🟢 说明书适应症药监局(NMPA/FDA/EMA)说明书明确列出查药监官网说明书原文可正常处方,医保支付顺畅
🟡 超说明书(off-label)药理学有活性,说明书未列有证据源之一:指南推荐 / RWE / 体外/体内药理学依据指南/共识处方,须告知患者+留档
无活性固有耐药 / 无靶点 / 药代不可达有药理学证据(MIC/靶点缺失/PK 失败)绝对不应使用
不适用该场景与该药无交集N/A

证据码系统(每个 🟡 和 ❌ 必须附)

证据码来源类型示例
[数字]药监说明书[1] = 伏立康唑 NMPA 2005 说明书
[G#]指南/共识[G2] = ESCMID/ECMM/ERS CPA 2016
[R#]RWE 文献[R1] = 武汉 220 例 CPA PMC12864492
[P#]药理学[P1] = 伏立康唑 MIC90 对 C. neoformans 0.12-0.25 μg/mL

填写步骤(通用于任何疾病)

  1. 查药监说明书原文 → 有 → 🟢 + [数字]
  2. 无说明书 → 查指南 → 推荐 → 🟡 + [G#]
  3. 查 RWE → 有临床实践 → 🟡 + [R#]
  4. 查 PK/MIC → 药理学支持 → 🟡 + [P#]
  5. 均否定 → ❌ 无活性 + [P#](需耐药机制证据)

典型误区(任何领域都会犯)

药物 × 靶点二态误判三态正解
伏立康唑 × 隐球菌🟡 (IDSA 备选, MIC 低)
奥希替尼 × EGFR Exon20ins🟢🟡 (部分活性, NCCN 二线, NMPA 未批亚型)
SGLT2i × HFpEF因国而异视药监批件状态三态

3.1 三态核查自问表(v1.2 新增 · Iron Law · 防止简化误判)

背景:v2.0 → v2.1 审阅发现 HTML agent 在"简化三态矩阵(每药 × 每病原 1 格)"时,将原文 🟢[批件号] 错误简化成 🟡(超说明书)。根因:从多阶段原始矩阵简化到单格视图时,agent 未把"NMPA 批件是否明确列出该病原"作为独立判断维度,而是误以为"不是一线 = 超说明书"。

v1.2 补丁:每填一格三态前,强制回答以下 5 问;任何 1 问答 Yes,必须 🟢 · 不得降级:

Q1. 该药 NMPA 说明书「适应症」章节是否原文提到该病原 / 靶点?
    (不是"作用机制"或"药理学",而是具体适应症原文)
Q2. 原文是否含以下关键词之一:
    "<病原名>感染" / "对<病原>的治疗" / "<病原>的预防" / 
    "对<药物 A>耐药的<病原>" / "难治性<病原>" / "挽救治疗"?
Q3. 若 Q1/Q2 为 Yes 但限定在"某亚场景"(如粒缺 vs 非粒缺 / 儿童 vs 成人 / 
    一线 vs 挽救),该亚场景在本报告 MECE 范围内是否占主流(≥50%)?
Q4. 若 Q3 为 No (主流场景超出批件),那一格是否应该标 🟢(预防)+ 🟡(治疗)
    双态,而非一刀切 🟡?
Q5. 若所有批件都无,查指南(中国指南 2A 级/2B 级推荐)— 有 → 🟡 · 无 → ❌

简化规则(从 5 阶段 × N 病原 × M 药 缩减到 1 格 × N 病原 × M 药):
  - 5 阶段中 ≥3 阶段 🟢 → 单格 🟢
  - 1-2 阶段 🟢 + 其他 🟡 → 单格 🟢(预防/治疗)注脚区分
  - 全部 🟡 → 单格 🟡
  - 全部 ❌ → 单格 ❌
  - 混合 🟢+🟡+❌ → 单格 🟢(若主流场景内 🟢)· 不可降级为 🟡

违反时的典型信号:

  • 看到"药物 A 在 XX 场景算超说明书"就直接降级整个 🟢 → 🟡
  • 忘了"NMPA 批件"与"指南首选"是两个维度 — 批件 🟢 ≠ 一线
  • 简化时把"条件限定"(如"13 岁以上")当作"超说明书"—— 不对,只要批件列出,仍是 🟢

3.2 NMPA 批件查证清单(v1.2 新增 · 医药类强制)

填三态前,每个药物必须先完成以下两步查证:

Step A:NMPA 说明书原文查证

  • 官方渠道:https://www.nmpa.gov.cn/ 搜索药品名 → 打开药品说明书 PDF
  • 第二渠道:https://www.yaozh.com/ 药智网(国内镜像)
  • 第三渠道:丁香园专业版 drugs.dxy.cn
  • 必须摘抄"适应症"章节原文(不是产品介绍/药理学章节)

Step B:批件证据码系统化归档

  • 每个 🟢 必须附批件号 + 年份 + 适应症原文摘抄
  • 每个 🟡 必须附 [G#]/[R#]/[P#] 证据码(L0 第 3 节)
  • 每个 ❌ 必须附 [P#] 耐药机制证据

不得使用"推测"或"国际外推"代替 NMPA 查证。国际 FDA/EMA 批件在中国任务中仅作 ⚪ 参考,不能自动等价中国 🟢。


4. Phase 0 通用澄清问题库(强制触发)

Iron Law:无论用户是否给"研究规划摘要",执行前必须输出 3-5 条澄清问题。已给摘要时,审视摘要中未覆盖/有歧义的维度。

通用 13 维度检查清单(v1.2 从 12 → 13 维度)

#维度必问情景默认建议
1MECE 边界跨科室/跨人群时必问严格互斥(剔除邻接科室)
2年龄范围有儿童年龄限制药物时必问成人为主,儿童限制标注
3地理范围有地域差异病原时必问中国大陆全国,重大差异单列
4证据窗口有 COVID-19 影响时必问默认隔离 2020-2022
5市场分母口径任何市场调研必问院内 vs 全口径选一
6药物范围是否含非抗真菌/邻接治疗药?明确列清
7输出语言中/英/双语中文(国内任务)
8目标读者药企/KOL/投资方/政策中立多方可读
9报告呈现顺序咨询式 vs 学术式咨询式(TOC+图表索引+附录)
10立场中立第三方 vs 特定产品中立
11科室归属边界(MECE 跨科室)科室切分时必问(关键)严格 MECE(剔除综合 ICU 等邻接独立科室)
12科室内疾病/病因细分(v1.2 新增 Iron Law)每次做科室 market sizing 必问见下方"科室内细分粒度参考表";不同疾病的 IFI 发生率/治疗方案/药物比例差异极大,严禁合并为单一"高危池"
13MRR 骨架是否加 TAM/SAM/SOM加(sizing 核心)

科室内疾病/病因细分粒度参考表(v1.2 新增)

血液科 v1.2 前复盘:新版报告把 AML/HSCT/MDS 合并为"高危层单一池",完全丢失了每种疾病的 IFI 发生率/预防用药比例。 Iron Law:Phase 0 必须问"科室内按什么疾病/病因拆分",每个亚人群必须在瀑布图中作为独立分支(不可合并)。

科室疾病/病因最小拆分粒度说明
血液科allo-HSCT · auto-HSCT · AML诱导 · AML维持 · ALL · NHL · HL · MM · MDS-IST · CML · CLL · 再障ATG · CAR-T · 非恶性血液病参照 CAESAR 2.0 亚人群分层
呼吸科4 大入口(免疫缺陷/RICU/慢性肺病/免疫正常)× 7 分型(IPA/CPA/ABPA/隐球菌/毛霉/PJP/念珠菌)树状分支已在 ifi-market-sizing-skill 验证
综合 ICU高危宿主 swim-lane(免疫抑制 · 长期激素 · COPD · DKA · CTD · SICU术后)× 5 病原(念珠菌 · 曲霉 · PJP · 毛霉 · 隐球菌)× 病毒叠加(IAPA/CAPA)MECE 剔除 RICU;每个病原必须独立分支,不共用诊断/治疗节点
SOT 器官移植肝 · 肾 · 心 · 肺 · 胰 · 小肠各器官 IFI 风险与预防用药差异大
实体肿瘤按癌种(肺 · 消化道 · 血液转移)× 治疗线(化疗/靶向/免疫)

数据不足时 🟠 推算填空,但分支结构必须保留

Phase 0 输出模板

=== Phase 0 澄清问题(请回复后再执行)===
1. [维度]:[具体问题]
   - 默认建议:[值]
2. …
=== 等用户回复 ===
=== 收到回复后输出研究规划摘要 ===

5. Red Flags — 违反 Phase 0 或 MECE 的警示信号

看到这些念头立即停下来:

念头为什么是违规信号
"用户已给摘要,直接执行"摘要不等于 12 维度对齐,须审视缺口
"科室就是 X 科室,不用区分"科室内部有亚专业(RICU vs 病房),必须区分
"数据不够,用邻接科室顶替"MECE 违反,宁可留空 🟠 推算
"ICU 就是 ICU"综合 ICU vs 专科 ICU(RICU/CCU/NICU/SICU)完全不同
"成人和儿童差不多"药物年龄限制严格,必须分层
"先干再说,有问题再改"MECE 一旦污染,返工成本 10x

6. Phase 2 数据抓取 · MECE 模式搜索词模板

科室 MECE 切分(以本骨架覆盖的常见科室)

呼吸科(RICU only,严格互斥)

PubMed: ("respiratory intensive care unit" OR "respiratory ICU" OR RICU OR
         "respiratory ward") AND <disease keywords> AND China
        NOT ("medical ICU" OR MICU OR "surgical ICU" OR SICU OR
             "mixed ICU" OR "general ICU")
CNKI:  "呼吸重症" OR "呼吸ICU" OR "呼吸科ICU" -综合ICU -MICU -SICU
期刊:  中华结核和呼吸杂志 / 中华呼吸与危重症医学杂志
团队:  呼吸与危重症医学科 KOL(如曹彬/解立新/施毅)

综合 ICU(不含 RICU)

PubMed: ("medical ICU" OR "surgical ICU" OR "mixed ICU" OR "general ICU" OR
         MICU OR SICU) AND <disease> NOT respiratory

血液科(不含其他)

PubMed: ("hematology ward" OR "HSCT unit" OR "bone marrow transplant" OR
         "leukemia ward") AND <disease>

儿科(不含成人)

PubMed: (pediatric OR paediatric OR "children" OR neonatal OR NICU OR PICU)
        AND <disease>

科室归属过滤关键词

搜索完成后,对每条返回的文献用以下关键词判断科室归属:

  • RICU / 呼吸 ICU / 呼吸重症 / 呼吸与危重症 → ward_type: RICU
  • MICU / 内科 ICU / 医学 ICU → ward_type: MICU
  • SICU / 外科 ICU → ward_type: SICU
  • 综合 ICU / 中心 ICU / mixed ICU / general ICU → ward_type: general_ICU
  • ICU(无限定) → ward_type: unclear(默认剔除)

7. Agent 输出 Schema 契约(文档级,Phase 1 软约束)

Phase 1 只在文档层写清楚约定(当前状态)。升级条件:L2 data-agent 上线后, 将本 schema 移至 scripts/validate_schema.py 并在 pipeline 中硬阻塞。 主 agent 在启动 Phase 2 data-agent 时,必须将本 schema 嵌入 agent prompt。

证据条目 schema

evidence_item:
  study_name: string            # 研究名或作者+年份
  sample_size: int
  evidence_grade: 🟢|🔵|🟡|⚪|🟠
  pmid_doi: string              # 必须有,否则降级为 🟡
  ward_type: RICU|MICU|SICU|general_ICU|mixed|unclear  # 必填
  dept_attribution: respiratory|ICU_independent|hematology|oncology|other  # 必填
  age_group: adult|pediatric|mixed|unclear
  region: national|province|municipal|single_center
  indication_stage: prevention|empirical|DD|target|salvage|maintenance
  time_window: YYYY-YYYY

schema 违反时的处理

  • ward_type 或为 unclear → 该条从"目标口径基线"剔除,降级到"参考"
  • dept_attribution → 同上
  • ward_type 与目标科室不匹配(如做呼吸科但 ward_type = MICU)→ 强制剔除,可放入"邻接科室对照"附录
  • 数据不足无法填目标口径 → 留空 + 🟠 推算,绝不以邻接科室数据顶替

8. L1 疾病特化 skill 的编写规范

L1 应该维护什么

专属内容(L1 必有):

  • 疾病 NMPA 药物清单(如抗真菌 14 药 / 肿瘤靶向药组 / 降压药组)
  • 疾病锚点文献(如 Zhou EID 2020 真菌负担 / CAESAR 血液 IFI)
  • 疾病专家团队(如抗真菌的施毅/曹彬 vs 肿瘤的孙燕/吴一龙)
  • 疾病专属诊疗路径(如真菌 4 入口 vs 肿瘤 5 线治疗)
  • 疾病专属的 NMPA 适应症表(通用三态规则来自 L0,具体药-病原映射是 L1 专属)

L1 不应该维护什么

应在 L0 的内容(L1 不重复):

  • MECE 原则(抽象)
  • 证据分级 🟢🔵🟡⚪🟠
  • 三态活性矩阵 规则
  • Phase 0 通用 12 维度
  • Phase 2 通用搜索词模板
  • Agent schema 契约
  • Red Flags 通用列表

L1 引用 L0 的方式

L1 SKILL.md 开头:

> **依赖**:本 skill 是 L1 疾病特化,继承 L0 `market-sizing-mece-foundation`。
> 使用本 skill 前请先读 L0 的 MECE 原则、证据分级、三态矩阵、Phase 0 问题库、
> Phase 2 搜索词模板、Agent schema 契约。

9. 已知失败模式(跨疾病通用)

#失败模式根因修复规则
1MECE 违反 - 邻接科室混入Phase 2 搜索词不严格 + 无 ward_type schema第 6-7 节
2无适应症被误标为无活性二态表达不足第 3 节三态
3超说明书无证据来源缺证据码系统第 3 节 [G#/R#/P#]
4Phase 0 漏触发用户给摘要就跳过第 4 节 Iron Law
5数据不足以邻接科室顶替缺 schema 强制第 7 节"强制剔除"规则
6成人药物套用儿童年龄维度漏 MECE第 1 节 + 第 4 节

10. LP 决策图(Leverage Points)呈现规范

v1.1 新增。LP 决策图是基于 market sizing 结论按 Impact 排序的策略切入点可视化,在最终报告作为独立章节(通常第 7 章)呈现。

10.1 LP 定义

  • LP = Leverage Point,指"该杠杆点改进后可直接受益的年度患者数"
  • MECE 原则:LP 之间不重叠,覆盖市场主要未满足需求
  • 通常 5-10 个 LP 为宜,按 Impact 中位数从大到小排列

10.2 LP Impact 三列量化

字段含义
Impact low保守估算(最低识别率/最小可及率)
Impact mid排序基准(仅作优先级参考,非精确值)
Impact high乐观估算(最高识别率/最大可及率)

10.3 LP 在瀑布图上的标注(Mermaid 实现)

关键原则:LP 标签必须是独立于业务节点的视觉元素,而非混在节点文字内。

错误示范(节点内前缀,视觉淹没):

C_CPA["🏆 <b>LP1</b> CPA 长程未满足 · Impact 127-345k<br/>CPA 20-30%..."]

正确示范(独立 stadium badge + 虚线连接):

C_CPA["<b>CPA</b> 20-30% 🟢<br/>Zhou 2020 现患 48.9万..."]
LP1(["🏆 LP1"]):::lpBadgeCrown
LP1 -.- C_CPA

classDef lpBadge fill:#DC2626,stroke:#7F1D1D,stroke-width:3px,color:#FFFFFF,font-weight:bold
classDef lpBadgeCrown fill:#F59E0B,stroke:#78350F,stroke-width:4px,color:#FFFFFF,font-weight:bold

10.4 LP Badge 视觉分层(三态)

Tier配色粗边适用
🏆 Crown(最大杠杆点)金底 #F59E0B / 深棕边 #78350F4pxImpact 最大的 1 个 LP
🔴 Standard(标准)红底 #DC2626 / 深红边 #7F1D1D3px其他可嵌入瀑布图的 LP
⬜ Cross-entry(跨入口)灰底 · 虚线边2px dashed跨多入口亚组的 LP(如儿童、年龄分层),无法嵌入瀑布图时用灰虚线,报告另附亚组图

10.5 LP 跨入口情况

当一个 LP 在多个入口/分支都有作用点时,在每个 subgraph 内各放一个 badge(用后缀区分):

LP3_A(["🔬 LP3"]):::lpBadge
LP3_A -.- DX_A   %% 入口 A 的 LP3

LP3_B(["🔬 LP3"]):::lpBadge
LP3_B -.- DX_B   %% 入口 B 的 LP3

这让瀑布图中同一 LP 的多个作用点都被标注,避免"挂哪个好"的取舍。

10.6 LP Icon 语义建议(emoji)

Icon语义示例
🏆Champion / 最大杠杆LP1 必用
🎯Target / 识别精准如"门诊识别率提升"
🔬Lab / 诊断基建如"mNGS 协同检测"
🌿Long-tail / 长尾稳定如"免疫正常长程用药"
⚙️Gear / 规范化治理如"指南化/AFS 规范"
💊Drug / 药物窗口如"新药独家窗口"
👶Baby / 儿童亚组LP 跨入口儿童专属
🌍Globe / 地域差异LP 跨地区

Icon 可自定义,但必须每个 LP 专属不重复

10.7 报告章节结构(7. LP 决策图)

七、LP 决策图(Leverage Points)
 ├ 7.1 LP 在患者流瀑布图上的具体位置
 │      └ 图 7.1(含独立 LP badge + 虚线连接)
 │      └ 阅读指南 callout(说明 badge 配色分层 / 跨入口处理)
 ├ 7.2 LP 排序表(按 Impact 中位数)
 │      └ 字段:LP# | 策略切入点 | Impact 区间 | 中位数 | 关键依据 | 原编号
 │      └ ⚠️ 不要有"瀑布图位置"列(已在图上标,冗余)
 ├ 7.3 跨入口 LP 单独说明(如有)
 └ 7.4 LP 量化方法说明

10.8 LP 立场规范(中立第三方)

严禁在 LP 策略建议中出现具体药物/产品推荐

  • ❌ 错:"可通过伊曲康唑 TDM 普及 + 医保长疗程支付破局"
  • ✅ 对:"需解决三大摩擦——长程 TDM 工具普及、医保长疗程支付机制、基层诊疗路径教育。属于全市场结构性机会,不偏向任何单一产品"

同样语言的正/反对照见第 12 节"去产品化语言规范"。


11. 报告呈现:字体与配色规范(参照 market-research-reports)

v1.1 新增。所有 market sizing 报告的 HTML/PDF 渲染参照 market-research-reports skill 的 market_research.sty 调色板和字号,以保证咨询公司级专业度。

11.1 调色板(与 MRR 对齐)

角色HexRGB用途
Primary Navy#0033660,51,102h1 标题、表头色
Secondary Blue#33669951,102,153h2/h3、强调文字
Accent Blue#0078D70,120,215callout box / 链接
Accent Green#0080600,128,96data hint box、🟢 A 级证据
Warning Orange#FF8C00255,140,0🟡 C 级 / 🟠 估算
Alert Red#C62828198,40,40warning box / 🔴 风险

11.2 字号(MRR LaTeX 11pt 正文对齐)

层级HTML PDF备注
正文11pt对齐 MRR 11pt(非 10.5pt)
表格10ptfont-variant-numeric: tabular-nums 对齐数字
h122pt / 700章节标题,navy · 2.5pt 下边框
h215pt / 700小节,navy · 4pt 左边框(blue)
h312pt / 600blue
h411pt / 600gray-700
caption9pt italic图表注释
行距1.65正文;表格 1.5

11.3 字体家族(中英混排)

:root {
  --font-sans: 'Source Han Sans CN', 'Noto Sans SC', 'PingFang SC',
               'Microsoft YaHei', -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --font-mono: 'JetBrains Mono', 'Consolas', 'Menlo', monospace;
}

优先级理由:思源黑体 SC(Source Han Sans CN)→ 苹方(PingFang SC)→ 微软雅黑,覆盖 macOS/Windows,视觉最一致。

11.4 Box 环境(对齐 MRR 四色系)

类型边色 · 背景用途
.callout蓝 #0078D7 · 浅蓝 #E6F1FBKey Insight / 说明
.warning红 #C62828 · 浅红 #FFEBEECritical Risk
.datahint绿 #008060 · 浅绿 #C8E6C9Market Data Box
(可选) .recommendation紫 #6A1B9A · 浅紫策略建议(但 market sizing 立场通常用 callout)

12. 去产品化语言规范(中立第三方 Iron Law)

v1.1 新增。所有 market sizing 报告默认"中立第三方"立场时,LP 建议 / 策略切入点 / 结论章节严禁偏袒具体药物/产品

12.1 禁语示例

❌ 错(偏袒单一产品)✅ 对(中立市场视角)
"可通过伊曲康唑 TDM 破局""需解决长程 TDM 工具普及摩擦"
"单伊曲康唑长程处方即增量 2-3 亿元""长程抗真菌处方扩量 → 整个三唑类赛道扩容"
"艾沙康唑毛霉独家窗口""毛霉识别与精准用药闭环 → 多烯类+口服序贯市场同步扩容"
"对某药企的决策工具有临床教育价值""规范化 AFS 决策 → 整体降低资源浪费"

12.2 通用模式

结构:

  • "【痛点规模】 → 【解决摩擦】 → 【带动整个赛道/子市场】"

动词选择:

  • ✅ 扩容 / 规范 / 普及 / 识别 / 基建 / 教育 / 闭环
  • ❌ 首选 / 最佳 / 优于 / 碾压 / 主导 / 独占

主体措辞:

  • ✅ "整个 [赛道/品类] 规模性扩容"
  • ✅ "结构性机会,不偏向任何单一产品"
  • ✅ "市场基建 / 行业共建"
  • ❌ "【某药】 市场份额提升 X%"(除非明确是该药企定制报告)

12.3 例外:特定产品策略导向报告

如 Phase 0 明确 report_stance: 特定产品策略导向(如 XXX 药企委托),则 LP 建议可包含该产品推荐。但必须在封面和执行摘要明确标注立场,避免读者误解为中立第三方观点。


13. 工程:两遍渲染 PDF 生成页码(Chrome headless)

v1.1 新增。Chrome headless 不支持 CSS target-counter(attr(href url), page)leader(),直接用失效。 Paged.js polyfill 在 Chrome headless 中渲染超时不稳。 推荐方案:Python 两遍渲染法(可靠 · 零外部依赖)。

13.1 流程

Pass 1: 渲染 HTML → PDF (TOC 页码占位空)
         ↓
Pass 2: pypdf 扫描每页文本,搜章节标题关键字首次出现的页 → 得到 {anchor: page_num}
         ↓
Pass 3: 正则替换 HTML 中的 <span class="page"></span> 为 <span class="page">N</span>
         ↓
Pass 4: 再次渲染 HTML → PDF(最终带页码)

13.2 HTML TOC 结构契约

<div class="toc">
  <ol>
    <li><a href="#ch1">
         <span class="title">一、执行摘要</span>
         <span class="dots"></span>
         <span class="page"></span>     <!-- 占位,两遍渲染脚本注入 -->
       </a></li>
    ...
  </ol>
</div>

CSS:

.toc a { display: flex; align-items: baseline; gap: 6pt; }
.toc a .title { white-space: nowrap; }
.toc a .dots  { flex: 1; border-bottom: 1pt dotted #ccc; transform: translateY(-2pt); }
.toc a .page  { white-space: nowrap; font-variant-numeric: tabular-nums; color: #666; }

13.3 Python 参考脚本

见仓库 output/build_pdf_two_pass.py。核心逻辑:

TOC_ANCHORS = [('#ch1', '一、执行摘要'), ('#ch2', '二、研究方法'), ...]

def measure_page_numbers(pdf_path):
    reader = PdfReader(str(pdf_path))
    pages = [(p.extract_text() or '') for p in reader.pages]
    result = {}
    for href, keyword in TOC_ANCHORS:
        # 从第 4 页开始搜(跳过 TOC 本身)
        for i in range(2, len(pages)):
            if keyword in pages[i]:
                result[href] = i + 1  # 1-indexed
                break
        else:
            result[href] = None
    return result

def inject_page_numbers(html_path, page_map):
    html = html_path.read_text(encoding='utf-8')
    for href, page_num in page_map.items():
        pattern = (
            r'(<a href="' + re.escape(href) + r'">'
            r'<span class="title">[^<]+</span>'
            r'<span class="dots"></span>'
            r'<span class="page">)(</span></a>)'
        )
        html = re.sub(pattern, r'\g<1>' + str(page_num or '—') + r'\g<2>', html)
    html_path.write_text(html, encoding='utf-8')

13.4 WPS/Adobe 占用 PDF 文件的 fallback

def pick_pdf_path():
    try:
        if PRIMARY.exists():
            PRIMARY.rename(PRIMARY)  # 测试可写
        return PRIMARY
    except PermissionError:
        print(f'⚠ {PRIMARY.name} 被其他程序占用, fallback 到 {FALLBACK.name}')
        return FALLBACK

14. 署名规则(强制规范 · 所有输出物)

v1.1 新增。所有 market sizing 报告、流程图、交付物封面必须包含 skill 署名。

14.1 标准文字(精确匹配)

Skill Presented by:YongQi, SimonSu, RuiYu, YingJi

格式要点:

  • 冒号后无空格 (by:YongQi)
  • 姓名之间用英文逗号+空格 (, )
  • 4 人顺序固定:YongQi, SimonSu, RuiYu, YingJi
  • 禁止使用中点分隔符 ·(v1.0 用过,v1.1 起废弃)
  • 禁止使用中文顿号

14.2 出现位置

载体位置字号/样式
PDF/HTML 报告封面 · 最后一行(方法依据下方)小字灰色 9pt · color: var(--gray-500)
Mermaid HTML 流程图header 底部 credit 行11px 半透明 · opacity: .65
Mermaid .mmd 源文件文件顶部 comment 区%% Skill Presented by: YongQi, SimonSu, RuiYu, YingJi
docx 封面最末段16pt 灰色 · color: '888888'
参数包 yaml文件头注释# 署名: Presented by YongQi, SimonSu, RuiYu, YingJi

14.3 替换脚本(跨项目迁移时用)

import re
from pathlib import Path

# 统一替换各种旧格式为新标准
PATTERNS = [
    (r'YongQi\s*·\s*SimonSu\s*·\s*RuiYu(?!\s*,?\s*YingJi)',
     'YongQi, SimonSu, RuiYu, YingJi'),
    (r'YongQi,\s*SimonSu,\s*RuiYu(?!\s*,?\s*YingJi)',
     'YongQi, SimonSu, RuiYu, YingJi'),
    (r'YongQi、SimonSu、RuiYu(?!.*YingJi)',
     'YongQi, SimonSu, RuiYu, YingJi'),
]

for fp in Path('.').rglob('*'):
    if fp.suffix in ('.md', '.mmd', '.js', '.yaml', '.yml', '.html'):
        content = fp.read_text(encoding='utf-8')
        for pat, repl in PATTERNS:
            content = re.sub(pat, repl, content)
        fp.write_text(content, encoding='utf-8')

15. 流程图验证 Iron Law(v1.2 新增 · 强制机器约束)

背景:v1.2 前三次复盘发现同类流程图缺陷跨项目复现 —— Mermaid 语法错误、分支无终点、多源汇聚交叉。 根因:规则在文档里,但子 agent 生成 .mmd 后无机器验证,直接嵌入 PDF 才暴露。 Iron Law:所有 .mmd 文件在渲染 PNG/嵌入 PDF 之前,必须运行 references/flowchart-validator.py 通过。 return code = 2 阻塞渲染流水线,return code = 1 软警告。

15.1 标准流水线(L1 报告生成器必须遵守)

# Step 1: 结构 + 语法验证(硬约束)
python references/flowchart-validator.py output/flowchart.mmd
if return_code == 2: 停止,根据错误信息修复 .mmd,重跑
if return_code == 1: 软警告,记录但可继续

# Step 2: 验证通过后才渲染 PNG
mmdc -i output/flowchart.mmd -o output/flowchart.png -w 5000 --scale 2 ...

# Step 3: 嵌入 HTML/PDF

15.2 Validator 覆盖的 7 项自动检查

#检查项类型v1.2 前真实错误
1mmdc 渲染测试硬错误ICU Parse error on line 1: ---config
2YAML frontmatter 首行位置硬错误ICU %% 注释 放在 --- 前 → mermaid 10.9+ 失败
3每个叶子 终止(规则 2)硬错误ICU LP ●=0 所有分支悬空;血液科 3 个 _PROPH 叶子无终止
4复杂图 ≥3 subgraph(规则 4)软警告ICU subgraph=0 swim-lane 丢失
5无多入度 ≥3 共用节点(规则 15)软警告ICU HOSTS --> A&B&C&D&E, 然后 A/B/C/D/E --> DIAG 多源汇聚
6必须含诊断层软警告纯流行病图会触发
7必须含治疗层软警告纯路由图会触发

15.3 flowchart-rules 同步新增(规则 13-15,写入 L1 flowchart-rules.md)

  • 规则 13 · YAML frontmatter 首行:若使用 --- frontmatter,第 1 行必须是 ---。前面不得有注释/空行/任何字符。
  • 规则 14 · validator 必须通过:所有 .mmd 必须通过 validator 才能渲染 PNG。
  • 规则 15 · 禁止多源汇聚共用节点:非明确评估/路由/汇聚节点(EVAL_ / ROUTER / SCREEN / END_ / DIAG / RETURN),入度不得 ≥ 3。多分支需要经过相同诊断/治疗节点时,必须拆成独立节点(如 DIAG_CAND / DIAG_ASP / DIAG_PJP),即使文字相同。

15.4 合规率统计(自检)

本 skill 发布时,对历史 3 个项目的 .mmd 文件做合规回溯:

项目.mmd 文件硬错误数软警告数修复后
呼吸科(v1.3.3)flowchart.mmd + flowchart_lp.mmd00-1
ICU(v1.0)patient_flow_normal.mmd2(frontmatter + ●终止)1❌ → 需重跑
ICU(v1.0)lp_decision_map.mmd2(同上)2(subgraph=0 + 多入度)❌ → 需重跑
血液科(v2.0)flowchart.mmd1(3 叶子无 ●)1(H_MAINT 多入度)❌ → 需重跑

Iron Law 效果:如果 validator 在 v1.2 前就存在,三个项目都会在渲染阶段被拦截,不会进入用户可见的 PDF。


16. 医学术语规范对照表(v1.3 新增 · 跨疾病通用)

背景:v2.1 审阅发现 HTML agent 把 "breakthrough IFI"(预防期感染)中文化为"IFI 爆发",这是严重医学术语错误。"爆发"(outbreak)是公共卫生疫情暴发含义,与个体患者"突破性感染"(breakthrough infection)完全不同。

Iron Law:所有 medical market sizing 报告必须严格遵守以下中英医学术语对照表,禁止任意意译。

16.1 常见英→中医学术语(任何领域通用)

English✅ 正确中文❌ 错误中文(常见误译)注释
breakthrough infection突破性感染 / 突破❌ 爆发(爆发=outbreak 疫情含义)特指预防/治疗期间仍发生的感染
outbreak暴发 / 疫情暴发❌ 爆发"暴"字正,群体性
prophylaxis预防 / 预防治疗❌ 先期治疗一级预防 = 未感染时预防
empirical therapy经验治疗 / 经验性治疗❌ 经验主义治疗FN 无真菌证据时
diagnostic-driven therapy (DD)诊断驱动治疗❌ 诊断指导治疗(不推荐)/ 先发治疗(错误)有微生物阳性但未 proven
targeted therapy (IFI 领域)目标治疗❌ 靶向治疗(=molecular targeted 分子靶向)区别于肿瘤"靶向治疗"
salvage therapy挽救治疗❌ 营救治疗一线失败后
refractory难治 / 难治性❌ 耐药(耐药=resistant)治疗无应答
relapse复发❌ 爆发 / 再发(不精准)缓解后再发
persistence持续感染❌ 持续性
colonization定植❌ 殖民化无感染征象
proven确诊(级)❌ 确定 / 验证EORTC/MSG 定义
probable临床诊断(级)❌ 可能诊断EORTC/MSG 定义
possible拟诊(级)❌ 可能 / 疑诊(部分场景可)EORTC/MSG 定义
incidence发病率❌ 发生率(语境敏感)新发/时间单位
prevalence患病率 / 现患率❌ 流行率(不精准)某时点已有病例
cumulative incidence累积发生率❌ 累积发病率(可混用)某时间窗内新发
attributable mortality归因死亡率❌ 相关死亡率该病直接导致
all-cause mortality全因死亡率❌ 总死亡率各原因死亡合计
off-label超说明书 / 超适应症❌ 标签外(不专业)中文正式报告
on-label说明书内 / 适应症内❌ 批件内(可混用)
TDM (therapeutic drug monitoring)治疗药物监测❌ 药物浓度监测(不精准)含浓度+疗效评估
GVHD (graft-versus-host disease)移植物抗宿主病❌ 宿主抗移植物病(倒置)免疫学术语
CRS (cytokine release syndrome)细胞因子释放综合征❌ 细胞因子风暴(colloquial · 不规范)CAR-T 后
ICANS免疫效应细胞相关神经毒性综合征❌ CAR-T 神经毒性(不规范)CAR-T 后
high-dose methotrexate (HD-MTX)大剂量甲氨蝶呤❌ 高剂量 MTX(直译)ALL 化疗

16.2 使用规则

  • 报告正文/流程图/表格/图注:全部使用"✅ 正确中文"
  • 引用原文献/共识名称:可保留原词不变(如 "2025 免疫/靶向治疗感染共识" 是官方名)
  • 英文缩写:首次出现附中文全称 + 英文缩写,之后可仅用缩写
  • Phase 4 质量审核必查:grep 以下关键词必须零命中:
    grep -n "爆发\|确诊分级\|标签外\|营救治疗\|先期治疗" output/**/*.md evidence/**/*.md
    
    命中即阻塞交付。

16.3 跨领域等价术语(肿瘤/心血管等)

肿瘤领域"靶向治疗"合法(特指分子靶向 molecular targeted therapy),但在抗感染语境必须用"目标治疗"。疾病领域切换时必须重新校准术语表。


17. 版本

  • v1.0:从 ifi-market-sizing-skill v1.2 提取共性骨架
  • v1.1:LP 决策图规范(§10) + MRR 字体对齐(§11) + 去产品化语言(§12) + 两遍渲染 PDF 工程(§13)
  • v1.2:Iron Law §15 流程图验证器 + Phase 0 从 12 → 13 维度 + flowchart-rules.md 新增规则 13-15
  • v1.3(本版):
    • §3.1 三态核查自问表(5 问 Iron Law)+ §3.2 NMPA 批件查证清单
    • §16 医学术语规范对照表(22 条英→中对照 · 防止 "breakthrough → 爆发" 类误译)
    • 根因:v2.0 → v2.1 审阅发现 HTML agent 简化三态矩阵时误判 · 术语"爆发"医学语境错误
  • 计划 v1.4:补充肿瘤/心血管科疾病细分粒度表 + flowchart-templates/ 样板库
  • 计划 Phase 2:L2 agent prompt schema 硬验证 + L3 跨报告一致性 meta skill

What ships with it: 1 file

10.3 KB alongside SKILL.md, 1 of them executable

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.