Decision tree with lp embedding
Skill EthanYoQ/Skill-hub/skills/08-writing-marketing/decision-tree-with-lp-embedding
Reusable AI agent skills for Codex, Claude Code etc. — AI coding workflows, SKILL.md templates, and automation practices. 面向 Codex、Claude Code等agents 的可复用 AI Agent Skill 技能库:AI 编程工作流、SKILL.md 模板与自动化实践。
npx -y skills add EthanYoQ/Skill-hub --skill decision-tree-with-lp-embeddingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing 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.
What its author says it does
Copied from the file, not written here
Use when generating Mermaid clinical decision trees that must include Leverage Point (LP) annotations at specific stage nodes (not just text-only in summary box). Trigger on tasks like "决策树标 LP 切入点", "在流程图节点上 标注杠杆点", "决策树嵌入 LP", or any flowchart that has accompanying LP strategy. Library-agnostic — works for hematology IFI, respiratory ICU, oncology, cardiology, any disease where decision tree + leverage points must be visually integrated. Inherits from L0 market-sizing-mece-foundation §10 LP decision diagram spec. LP annotations sourced from `pubtator-entity-search.entity_search()` (drug-disease relations).
SKILL.md
16.9 KB, as published. Nobody here has run it
决策树 + LP 节点嵌入 Skill (L2 · 复用组件)
L2 工具组件:本 skill 提供"决策树 + LP 切入点"在 Mermaid 流程图中的节点级嵌入规范。 设计目标:让任何疾病领域的决策树流程图在节点级直接可见 LP 切入点,不再依赖单独的 LP 决策图。 上游依赖:
market-sizing-mece-foundation(L0 §10 LP 决策图规范) +ifi-market-sizing-skill(L1)
v1.1 变更说明 (2026-04-25) · 新增规则 10 + 规则 11(主图禁嵌 LP / LP 图必须双分支)。 触发原因:血液科 v2.5 第 6 次迭代交付时主图嵌入 8 个 LP_BADGE,用户立即指出"主图(疾病分流总览)语义只承担疾病分流,加 LP 是双语义混淆"。同时旧版 LP 全景图所有 LP 连到线性高危/中高危瀑布,忽略非预防分支,违背 LP 应"双分支分流"的本质。本次新增 2 条 Iron Law 把这两类失败模式钉死。
一句话定义
把"决策树主干"与"LP 切入点 badge"用虚线连接 + stadium 节点 + classDef 配色的方式融合到一张 Mermaid 流程图,使读者一眼看到"哪个临床阶段对应哪个杠杆点 + 量化 Impact"。
核心规范(Iron Law · 不可违反)
规则 1:LP 必须以独立节点出现,不可混在业务节点 label 内
❌ 错误示例:
PROPH["<b>① 一级预防</b><br/>泊沙康唑 35%<br/>🏆 LP1 预防结构优化"]
LP 标签被业务正文稀释,视觉淹没,失去战略提示作用。
✅ 正确示例:
PROPH["<b>① 一级预防</b><br/>泊沙康唑 35% · 伏立 25%"]
LP1_BADGE(["<b>🏆 LP1 · Crown</b><br/>预防结构优化<br/>Impact 1,500-3,000/yr"])
PROPH -.-> LP1_BADGE
规则 2:LP 节点用 stadium 形状(圆角矩形)
LP_X_BADGE(["..."])
- 与决策方块
[]区分(避免读者误以为 LP 是流程节点) - 与判断菱形
{}区分(LP 不是决策点) - stadium
(["..."])的"奖章/徽章"语义明确
规则 3:LP 与业务节点用虚线 -.-> 连接
PROPH -.-> LP1_BADGE
- 实线
-->是流程进展(打断主流) - 虚线
-.->是"附加注释/战略提示"(不打断主流) - ELK 布局对虚线支持良好,会从主流向旁路偏移
规则 4:LP 配色用 lpcrown (金) + lpstd (红)
classDef lpcrown fill:#FEF3C7,stroke:#F59E0B,stroke-width:3.5px,color:#78350F,font-weight:bold
classDef lpstd fill:#FEE2E2,stroke:#DC2626,stroke-width:2.5px,color:#7F1D1D,font-weight:bold
class LP1_BADGE lpcrown
class LP2_BADGE,LP3_BADGE,LP4_BADGE lpstd
- 金色 = Crown LP(战略最重要、不可被取代)
- 红色 = Standard LP(常规 LP,体现紧急程度)
- 边框粗细对比(3.5px vs 2.5px)凸显 Crown 优先级
规则 5:每个 LP_BADGE 必含三要素
<b>{Icon} LP{N} · {Tier 标签}</b>
{LP 名称简化版}
Impact {low}-{high}/yr · {关键缺口数据}
示例:
<b>🏆 LP1 · Crown</b>
预防启用率 50% → 70%
Impact 1,500-3,000/yr · 指南-RWE 20pp 缺口
规则 6:每张子页决策树嵌入 2-3 个 LP(主页主图嵌 6-8 个)
| 图类型 | LP 数量 | 选择标准 |
|---|---|---|
| 子页(独立疾病决策树) | 2-3 个 | TOP Impact + Crown 1 个 + 业务节点匹配度 |
| 主页主图(疾病分流总览) | 0 个(规则 10 严禁) | 主图只承担疾病分流语义,LP 单独成 lp-panorama.mmd |
子页 LP 数量过多 → 视觉杂乱,失去战略焦点;过少 → 缺少行动指引。TOP 3 是最佳平衡。
规则 7:LP_BADGE 命名约定 = LP{N}_BADGE
LP1_BADGE / LP2_BADGE / .../ LP8_BADGE- 不用
LP_PREVENTION/LP_STRUCTURE等语义命名 — 跨疾病不可移植 - 数字编号 +
_BADGE后缀 = 通用、可复用、跨子图一致
规则 8:LP 必须连接到"动作发生"节点而非"风险评估"节点
✅ 正确连接示例:
- LP1 (预防启用率) →
PROPH(一级预防药物节点) 或RISK(风险分层判断,准备启用预防) - LP2 (长程口服) →
A_MAINT(维持期节点) - LP3 (mNGS 普及) →
B_DD(诊断驱动节点) - LP4 (CAR-T 共识) →
PROPH或A_BREAK(突破性 IFD 节点)
❌ 错误连接:
- 不要连接到
HEAD(顶层患者池信息节点) - 不要连接到
END_*(终止节点)— LP 是行动机会,不是结局 - 不要连接到纯展示节点(SUMMARY、统计框)
规则 9:-.-> 不计入 linkStyle 主路径着色
主路径着色(色彩编码业务流):
linkStyle 0 stroke:#1E8449,stroke-width:3.5px
linkStyle 1 stroke:#CB4335,stroke-width:3.5px,stroke-dasharray: 5 3
LP 虚线由 classDef 控制视觉,不要再用 linkStyle 覆盖,避免冲突。
规则 10:主图(disease-flow-map)不嵌入 LP_BADGE
主图(疾病分流总览图 / 市场分级图 / 病程总览图)的语义是"疾病/病种之间的分流",一图一主题。叠加 LP 会让视觉同时承担 2 个语义(疾病分流 + 杠杆点),读者无法分辨"这条线是病程进展还是 LP 标注"。
LP 嵌入只适用于以下两类图:
- LP 全景决策图(独立的战略图,所有 LP 集中在一张图)
- 各子页决策树(节点级标注 TOP 3 LP,聚焦单一疾病的可执行机会)
❌ 错误示例(血液科 v2.5 第 6 次迭代):
%% disease-flow-map.mmd 主图
PATIENT_POOL --> RISK_STRATIFY --> AML_T1 & MDS_T1 & ALL_T1 & LYM_T2 & MM_T2 & CML_T3
LP1_BADGE -.-> AML_T1
LP2_BADGE -.-> MDS_T1
LP3_BADGE -.-> ALL_T1
LP4_BADGE -.-> LYM_T2
LP5_BADGE -.-> MM_T2
LP6_BADGE -.-> CML_T3
LP7_BADGE -.-> AML_T1
LP8_BADGE -.-> MDS_T1
%% 8 个 LP_BADGE 全连到 6 个 disease tier 节点 → 视觉双语义混淆
✅ 正确示例:
%% disease-flow-map.mmd 主图(无 LP)
PATIENT_POOL --> RISK_STRATIFY --> AML_T1 & MDS_T1 & ALL_T1 & LYM_T2 & MM_T2 & CML_T3
%% 主图只画"疾病池 → 风险分层 → 6 个 disease tier → 总览",LP 单独成图
LP 全景图独立成 lp-panorama.mmd,子页决策树各嵌 TOP 3 LP — 主图始终保持纯净的疾病分流语义。
规则 11:LP 决策图必须双分支(或多分支)
LP 全景决策图的入口必须显式标出双分支或多分支分流(例:预防分支 ~50% / 非预防分支 ~50%)。每个 LP_BADGE 必须连接到"具体分支的具体动作节点",不能只连到入口或汇总节点。
验收标准:LP 全景图必须能让读者一眼判断"该 LP 影响哪个分支的多少患者"。
❌ 错误示例(旧 v2.1 LP 全景图):
%% 所有 LP 连到"高危/中高危/低中危"线性瀑布,忽略非预防分支
ENTRY --> HIGH_RISK --> MID_HIGH --> LOW_MID --> END
LP1_BADGE -.-> HIGH_RISK
LP2_BADGE -.-> MID_HIGH
LP3_BADGE -.-> LOW_MID
%% 假设了 100% 启用预防 — 实际仅 ~50% 启用,忽略另外 ~50% 非预防分支的 LP 机会
✅ 正确示例:
ENTRY{"<b>风险分层后</b>"}
ENTRY -->|"~50% 启用预防"| PROPH_BRANCH
ENTRY -->|"~50% 不启用预防"| NO_PROPH_BRANCH
PROPH_BRANCH --> A_INDUC --> A_BREAK --> A_MAINT
NO_PROPH_BRANCH --> B_DD --> B_EMP_TX --> B_TARGET_TX
%% LP1 横跨双分支决策点 — 影响"是否启用预防"的判断
LP1_BADGE -.-> ENTRY
%% LP3 落在非预防分支的诊断节点
LP3_BADGE -.-> B_DD
%% LP8 落在非预防分支的经验治疗节点
LP8_BADGE -.-> B_EMP_TX
%% LP2 落在预防分支的维持节点
LP2_BADGE -.-> A_MAINT
每个 LP 必须能被读者读出"作用在哪个分支 · 影响多少患者占比",而不是被吸进一条单线瀑布里。
执行流程(决策树作者 SOP)
Step 1: 完成主决策树骨架(HEAD → RISK → BRANCH_A/B → 阶段节点 → END)
Step 2: 在 SUMMARY 节点列出 TOP 3 LP 文字版(战略层确定 LP 内容)
Step 3: 在 SUMMARY 之后,新增 LP 嵌入区块:
- LP_BADGE 节点定义(2-3 个,Crown 优先)
- 每个 LP 用 -.-> 连接到主流的"动作节点"
- classDef lpcrown / lpstd 定义
- class LP*_BADGE 应用 classDef
Step 4: 渲染 PNG (mmdc -w 5500 --scale 2 -b white -p puppeteer-config.json)
验证:LP_BADGE 视觉醒目 + 虚线偏移不打断主流 + Crown 金色突出
Step 5: 文件大小 ≥ 750 KB,短边 ≥ 3000 px,否则重渲
回退方案:先尝试 `-w 6000`;若 ELK 布局混乱,改 `layout: dagre` 重渲;
仍失败则检查 puppeteer-config.json 中 chromium 路径是否正确。
完整模板(直接复制粘贴 · 适配任何疾病)
---
config:
layout: elk
flowchart:
nodeSpacing: 55
rankSpacing: 75
curve: basis
padding: 18
theme: base
themeVariables:
fontSize: "13px"
fontFamily: "Microsoft YaHei, PingFang SC, Arial"
---
flowchart TB
%% === 主决策树骨架 (省略, 此处保留疾病专属业务流程) ===
HEAD["<b>{疾病名}</b><br/>年量 + 市场份额"]
HEAD --> RISK{"<b>风险分层</b>"}
RISK -->|"X% 启用预防"| PROPH
RISK -->|"X% 不启用"| NO_PROPH
PROPH --> ... --> A_END["缓解 X%"]
NO_PROPH --> ... --> B_END["缓解 X%"]
A_END & B_END --> SUMMARY["<b>🎯 Market 汇总</b><br/>(LP 战略切入点文字版)"]
%% === LP 节点级切入点标注 (本 skill 强制规范) ===
LP1_BADGE(["<b>🏆 LP1 · Crown</b><br/>{LP 名称}<br/>Impact {low}-{high}/yr"])
LP2_BADGE(["<b>{Icon} LP2</b><br/>{LP 名称}<br/>Impact {low}-{high}/yr"])
LP3_BADGE(["<b>{Icon} LP3</b><br/>{LP 名称}<br/>Impact {low}-{high}/yr"])
PROPH -.-> LP1_BADGE
A_MAINT -.-> LP2_BADGE
B_DD -.-> LP3_BADGE
classDef lpcrown fill:#FEF3C7,stroke:#F59E0B,stroke-width:3.5px,color:#78350F,font-weight:bold
classDef lpstd fill:#FEE2E2,stroke:#DC2626,stroke-width:2.5px,color:#7F1D1D,font-weight:bold
class LP1_BADGE lpcrown
class LP2_BADGE,LP3_BADGE lpstd
主图模板(无 LP) vs LP 全景图模板(双分支) · v1.1 新增对比
关键差异:主图与 LP 全景图是两张独立的图,不可合并。下面给出两份最简骨架,用于直接复制粘贴。
A. 主图模板(disease-flow-map · 无 LP_BADGE)
主图只承担"疾病/病种之间的分流"语义,严禁嵌入任何 LP_BADGE(规则 10)。
---
config:
layout: elk
flowchart: { nodeSpacing: 55, rankSpacing: 75, curve: basis }
---
flowchart TB
POOL["<b>{疾病大类}患者池</b><br/>年量 {N} 人 · 占血液恶性肿瘤 {pct}%"]
POOL --> RISK{"<b>风险分层</b><br/>高危 / 中高危 / 低中危"}
RISK -->|"高危 ~{pct}%"| T1
RISK -->|"中高危 ~{pct}%"| T2
RISK -->|"低中危 ~{pct}%"| T3
T1["<b>Tier 1 · 急性高危</b><br/>AML / MDS / ALL"]
T2["<b>Tier 2 · 中危</b><br/>淋巴瘤 / 多发性骨髓瘤"]
T3["<b>Tier 3 · 低危</b><br/>CML / 慢性 NHL"]
T1 & T2 & T3 --> SUMMARY["<b>总览</b><br/>疾病分流完成 · LP 详见 lp-panorama.mmd"]
%% 严禁在此嵌入 LP_BADGE — 见规则 10
B. LP 全景图模板(lp-panorama.mmd · 双分支强制)
LP 图入口必须显式标出双分支或多分支分流(规则 11),每个 LP 必须连到具体分支的具体动作节点。
---
config:
layout: elk
flowchart: { nodeSpacing: 55, rankSpacing: 75, curve: basis }
---
flowchart TB
ENTRY{"<b>风险分层后入口</b><br/>(双分支必现)"}
ENTRY -->|"~50% 启用预防"| PROPH_BR["<b>预防分支</b><br/>泊沙康唑 / 伏立康唑"]
ENTRY -->|"~50% 不启用预防"| NO_PROPH_BR["<b>非预防分支</b><br/>等待感染信号"]
PROPH_BR --> A_INDUC["诱导期"] --> A_BREAK["突破性 IFD"] --> A_MAINT["维持期"]
NO_PROPH_BR --> B_DD["诊断驱动 mNGS / GM"] --> B_EMP["经验治疗"] --> B_TARGET["靶向治疗"]
A_MAINT & B_TARGET --> END["缓解 / 总览"]
%% LP_BADGE 节点定义(8 个示例)
LP1_BADGE(["<b>🏆 LP1 · Crown</b><br/>预防启用率 50%→70%<br/>Impact 1500-3000/yr"])
LP2_BADGE(["<b>🔧 LP2</b><br/>长程口服维持<br/>Impact 800-1500/yr"])
LP3_BADGE(["<b>🔬 LP3</b><br/>mNGS 普及<br/>Impact 600-1200/yr"])
LP8_BADGE(["<b>💊 LP8</b><br/>经验治疗规范化<br/>Impact 500-1000/yr"])
%% LP 必须连到具体分支的具体动作节点 — 不可只连 ENTRY 或 END
LP1_BADGE -.-> ENTRY
LP2_BADGE -.-> A_MAINT
LP3_BADGE -.-> B_DD
LP8_BADGE -.-> B_EMP
classDef lpcrown fill:#FEF3C7,stroke:#F59E0B,stroke-width:3.5px,color:#78350F,font-weight:bold
classDef lpstd fill:#FEE2E2,stroke:#DC2626,stroke-width:2.5px,color:#7F1D1D,font-weight:bold
class LP1_BADGE lpcrown
class LP2_BADGE,LP3_BADGE,LP8_BADGE lpstd
对比要点
| 维度 | 主图(disease-flow-map) | LP 全景图(lp-panorama) |
|---|---|---|
| 单一语义 | ✅ 仅疾病分流 | ✅ 仅 LP 战略 |
| 入口结构 | 风险分层(3 个 Tier) | 双分支强制(预防 ~50% / 非预防 ~50%) |
| LP_BADGE 数量 | 0(严禁) | 6-8 个(全 LP 集中) |
| LP 连接策略 | 不适用 | 连到具体分支的动作节点,非入口/汇总 |
| 文件命名 | disease-flow-map.mmd | lp-panorama.mmd |
跨疾病移植清单(下次"呼吸科 ICU 真菌"项目)
| 检查项 | 适用方式 |
|---|---|
| LP_BADGE 节点定义 | ✅ 直接复用 — 改 LP 名称 / Icon / Impact 数字 |
-.-> 虚线连接 | ✅ 直接复用 — 改连接到呼吸科决策树的对应节点(如 RICU_PROPH / CAPA_DD) |
| classDef lpcrown / lpstd | ✅ 直接复用 — 配色不变 |
| TOP 3 LP 选择 | 🟡 重新选 — 呼吸科 ICU 的 Crown 通常是"RICU vs 综合 ICU MECE"或"CAPA 共识" |
| LP 数量 | ✅ 子页 2-3 / 主图 6-8 不变 |
| 渲染参数 | ✅ -w 5500 --scale 2 不变 |
失败模式速查
| # | 失败模式 | 根因 | 修复 |
|---|---|---|---|
| 1 | LP 标签混在业务节点 label 内 | 旧版用 prefix "🏆 LP1 ..." | 强制独立 LP_BADGE 节点 |
| 2 | LP 用决策方块而非 stadium | mermaid 语法不熟 | (["..."]) 是奖章语义 |
| 3 | LP 用实线连接打断主流 | --> 误用 | 强制 -.-> 虚线 |
| 4 | LP 配色与业务节点同色 | 缺 classDef | 强制 lpcrown(金)+ lpstd(红) |
| 5 | LP 缺 Impact 数字 | 文字化但无量化 | 强制 Impact low-high/yr |
| 6 | 子页嵌 5+ LP 视觉杂乱 | 战略不聚焦 | 强制 TOP 3 上限 |
| 7 | LP 连到 SUMMARY/END 节点 | 选了"结果"而非"行动" | 必须连"动作发生"节点 |
| 8 | LP_BADGE 命名用语义(LP_STRUCTURE) | 跨疾病不可移植 | 强制 LP{N}_BADGE |
| 9 | 决策树仅 SUMMARY 文字列 LP | 节点级遗漏(血液科 v2.5 反复出现) | 本 skill 强制节点级嵌入 |
| 10 | 主图嵌入 LP_BADGE(疾病分流图带 LP) | 误把主图当 LP 全景图 · 双语义混淆 | 主图严禁嵌 LP · LP 单独成图(规则 10) |
| 11 | LP 全景图所有 LP 连到单分支线性瀑布 | 假设 100% 启用预防,忽略非预防分支 | LP 图入口必须双分支 · LP 必须连具体分支动作节点(规则 11) |
验收标准(交付前自检)
- 主图 .mmd 不含 LP_BADGE(规则 10 · v1.1 新增)
- LP 全景图入口显式标双分支或多分支(规则 11 · v1.1 新增)
- LP 全景图所有 LP 连到具体分支的具体动作节点,非入口/汇总(规则 11 · v1.1 新增)
- 每张子页 .mmd 含 2-3 个
LP{N}_BADGE节点定义 - LP 全景图 .mmd 含 6-8 个 LP_BADGE,按 Tier 连接对应分支动作节点
- 每个 LP_BADGE 用 stadium
(["..."])形状 - 每个 LP_BADGE 的连接用
-.->虚线 - 每个 LP_BADGE 含
Icon · 名称 · Impact 数字三要素 - classDef
lpcrown/lpstd已定义 - Crown LP 用 lpcrown(金边)· 其他用 lpstd(红边)
- LP 连到"动作节点"而非 SUMMARY/END
- 渲染 PNG ≥ 750 KB,短边 ≥ 3000 px
- 视觉抽查:LP_BADGE 醒目度 > 业务节点
版本历史
-
v1.1 (2026-04-25) · 新增规则 10 + 规则 11(主图禁嵌 LP / LP 图必须双分支)。
- 触发原因:血液科 v2.5 主图嵌 8 个 LP_BADGE 被用户当场指出"主图不应承担双语义"
- 旧 v2.1 LP 全景图所有 LP 连到线性高危/中高危瀑布,忽略非预防分支(~50% 患者)
- 新增内容:规则 10 / 规则 11 + 失败模式 #10 / #11 + "主图模板 vs LP 全景图模板"对比 + 验收清单 3 项
-
v1.0 (2026-04-25) · 从血液科 v2.5 第 6 次迭代抽出。Iron Law 来源:
- 失败模式 #28(L1 ifi-market-sizing-skill)— LP 决策图 + 决策树节点级 LP 标注 5 次复现
- 用户反馈"以前试图做过约束,目前问题一直复现"
- 解决方案:抽 L2 通用 skill + L1 强约束清单 + L3 编排 workflow