Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Environment diagnostic for the PPT family. Validates sn-image-base, API keys, Node runtime, and optional deps; interactively writes .env for required vars. Runs before sn-ppt-entry; does not modify sn-image-* skills.
.claude/skills/opensensenova-sn-ppt-doctor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 30% | 0% |
这是按需运行的能力与本地依赖检查,不是 Entry 的强制前置。Doctor 分开报告:
sn-ppt-tools 是否存在并已配置。Doctor 不检查或恢复 sn_agent_runner.py,不写 .env,也不把可选媒体能力变成硬门槛。
PPT 内置工具与 Doctor 自动读取:
~/.hermes/.env~/.openclaw/.envSN_PPT_ENV_FILE=/absolute/path/to/file已有进程变量优先于文件值。推荐配置:
ini# 搜索和搜图共用;默认请求 google.serper.dev SN_PPT_SEARCH_API_KEY="<search-api-key>" # OpenAI/SenseNova 兼容的同步 /images/generations 接口 SN_PPT_IMAGE_GEN_URL="https://your-host/images/generations" SN_PPT_IMAGE_GEN_API_KEY="<image-generation-api-key>" SN_PPT_IMAGE_GEN_MODEL="<image-generation-model>"
用户只需编辑一次文件,不需要每次启动 Hermes 前执行 export。Doctor 输出实际读取的文件、 已采用的变量名和缺失字段,但不得输出 key 值。
<pwd>/ppt_decks 是否可用;pypdf、python-docx 是否可用于附件解析;uv tool Playwright 是否可作为可选隔离环境;
pptxgenjs、echarts、Node Playwright 是否可解析,以及该Playwright 的 Chromium 是否能实际启动;
python-pptx 是否可用于 Creative 整页图片打包。sn-ppt-tools 的四个脚本是否存在;.env 路径、无效行和缺失字段。工具出现在 Agent 工具列表中不等于可用。 Doctor 必须使用以下状态:
| 状态 | 含义 | |---|---| | absent | 当前 Agent 没有对应工具 | | present_unverified | 工具已注册,但没有配置检查或成功调用证据 | | misconfigured | 工具或已知配置检查明确报告缺少 URL、key、model 等 | | available | 无费用 config/health 检查通过,或一次真实调用成功 | | failed | 真实调用已经失败 |
运行 Doctor Skill 的 Agent 必须:
absent。misconfigured。present_unverified,不得因工具名称存在就写 available。present_unverified,除非已有明确缺配置证据。
本地脚本无法读取 Agent 工具注册表,所以只报告 Bundled 配置事实,并在 native_media 中返回 agent_inspection_required。Doctor Skill 负责把 Native 与 Bundled 两层并列呈现, 再给出 effective source:
缺少某个可选依赖只影响对应能力,不应阻止其他出口。例如没有 Node 时仍可使用宿主原生 PPTX 能力;HTML -> PPTX 失败时仍保留 HTML。
bashpython3 "$SKILL_DIR/ppt_doctor/check_environment.py"
默认命令不联网,只检查 Bundled 配置。显式探测 Bundled 搜索接口:
bashpython3 "$SKILL_DIR/ppt_doctor/check_environment.py" --probe-search
Bundled 图片生成可能收费,只有用户明确要求时才执行:
bashpython3 "$SKILL_DIR/ppt_doctor/check_environment.py" \ --probe-image-generation \ --probe-output-dir "/absolute/existing/directory"
Doctor 只报告,不安装依赖、不写 secret、不修改任务目录。standard_html.status 只有在 渲染脚本、Python Playwright 和 Chromium 实际启动都通过时才是 available;否则 playwright_chromium.install_hint 给出准备命令。报告中的 python_source 为 current_interpreter 或 uv_tool。前者始终先检查,缺包时的主安装提示保留 python -m pip install -r requirements.txt;只有当 Doctor 实际检测到已安装的 uv-tool Playwright 时,才使用 uv tool run --from playwright python ...。 html_to_pptx_environment.status 只有在 导出脚本、Node 包和 Node Playwright Chromium 均可实际运行时才是 available,缺失时同样 给出准备命令。缺少媒体配置时仍以退出码 0 完成报告,并显示应编辑的 .env 路径和缺失项。
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 24,134 | 10,675 | -56% | 1 | 1 | 0% | 3,587 | 1,810 | -50% | 0 | 0 | — |
case-02 | fail→fail | 23,836 | 11,791 | -51% | 1 | 1 | 0% | 3,621 | 1,730 | -52% | 0 | 0 | — |
case-03 | fail→fail | 17,318 | 12,598 | -27% | 1 | 1 | 0% | 2,637 | 1,876 | -29% | 0 | 0 | — |
case-04 | fail→pass | 15,580 | 13,915 | -11% | 1 | 1 | 0% | 1,924 | 2,201 | +14% | 0 | 0 | — |
case-05 | fail→pass | 20,169 | 23,716 | +18% | 1 | 1 | 0% | 2,353 | 3,195 | +36% | 0 | 0 | — |
case-06 | pass→pass | 17,524 | 8,804 | -50% | 1 | 1 | 0% | 2,549 | 2,818 | +11% | 0 | 0 | — |
case-07 | fail→pass | 13,922 | 6,888 | -51% | 1 | 1 | 0% | 1,680 | 1,823 | +9% | 0 | 0 | — |
case-08 | fail→pass | 14,105 | 4,184 | -70% | 1 | 1 | 0% | 1,886 | 1,881 | -0% | 0 | 0 | — |
case-09 | fail→pass | 11,218 | 6,897 | -39% | 1 | 1 | 0% | 1,710 | 2,226 | +30% | 0 | 0 | — |
case-10 | pass→pass | 14,764 | 6,142 | -58% | 1 | 1 | 0% | 2,165 | 2,262 | +4% | 0 | 0 | — |
case-11 | fail→pass | 13,311 | 5,367 | -60% | 1 | 1 | 0% | 2,056 | 2,103 | +2% | 0 | 0 | — |
case-12 | fail→pass | 13,363 | 5,221 | -61% | 1 | 1 | 0% | 2,093 | 2,076 | -1% | 0 | 0 | — |
case-13 | fail→pass | 17,972 | 8,461 | -53% | 1 | 1 | 0% | 2,452 | 2,436 | -1% | 0 | 0 | — |
case-14 | fail→pass | 22,512 | 5,815 | -74% | 1 | 1 | 0% | 3,002 | 2,272 | -24% | 0 | 0 | — |
case-15 | pass→pass | 15,648 | 8,094 | -48% | 1 | 1 | 0% | 2,178 | 2,491 | +14% | 0 | 0 | — |
case-16 | fail→pass | 16,502 | 7,801 | -53% | 1 | 1 | 0% | 2,357 | 2,243 | -5% | 0 | 0 | — |
case-17 | fail→fail | 15,234 | 3,884 | -75% | 1 | 1 | 0% | 2,133 | 1,641 | -23% | 0 | 0 | — |
case-18 | fail→pass | 12,637 | 3,254 | -74% | 1 | 1 | 0% | 1,429 | 1,755 | +23% | 0 | 0 | — |
case-19 | pass→pass | 15,026 | 5,007 | -67% | 1 | 1 | 0% | 2,138 | 1,945 | -9% | 0 | 0 | — |
case-20 | pass→pass | 12,439 | 9,947 | -20% | 1 | 1 | 0% | 1,908 | 2,899 | +52% | 0 | 0 | — |
case-21 | fail→pass | 32,383 | 14,072 | -57% | 1 | 1 | 0% | 2,257 | 3,367 | +49% | 0 | 0 | — |
case-22 | pass→fail | 9,615 | 4,105 | -57% | 1 | 1 | 0% | 1,187 | 1,890 | +59% | 0 | 0 | — |
case-23 | fail→fail | 6,856 | 7,890 | +15% | 1 | 1 | 0% | 228 | 1,671 | +633% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +48 percentage points is the difference between those two pass rates over the 19 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/4/2026 | +50% |
Other measured skills in the registry, with their headline benchmark lift.