Agent skill · Design & Presentation

sn-ppt-creative

Creative-mode PPT pipeline. One full-page 16:9 PNG per slide. LLM / VLM calls go through sn-ppt-standard/lib/model_client.py (shared thin client). Text-to-image (the actual png rendering) goes through sn-image-base/scripts/sn_agent_runner.py. Falls back to web image search when T2I generation fails. Expects task_pack.json + info_pack.json already written by sn-ppt-entry.

OpenSenseNovagithub.com/OpenSenseNovaGitHub ↗
claude-codeships scriptsMIT
Install
npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-creative --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 9
SKILL.md size: 12 KB
Bundled scripts: yes
Path: skills/sn-ppt-creative/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 4,855
Language: JavaScript
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# sn-ppt-creative > **⚠️ This skill must be invoked through `/skill sn-ppt-entry`.** Never start here directly — the entry skill collects parameters and writes `task_pack.json` + `info_pack.json` that this skill requires. If you arrived here without those files, stop and tell the user to enter via `/skill sn-ppt-entry` or "生成 PPT". ## Call-routing policy | Kind | Backend | |---|---| | LLM (text) | `$PPT_STANDARD_DIR/lib/model_client.py` → `llm(sys, user)` | | VLM (image understanding) | `$PPT_STANDARD_DIR/lib/model_client.py` → `vlm(sys, user, images)` | | T2I (image generation) | `$SN_IMAGE_BASE/scripts/sn_agent_runner.py sn-image-generate` | Never mix — LLM / VLM through sn-image-base, or T2I through model_client — both violate policy. ## Visual asset priority - Creative mode renders each slide as a generated full-page PNG, so **image generation is the first-priority visual path**. - If image generation fails for a page, use web search (`sn-search-image`) as a fallback to find a real image that fits the page's topic. Each search result includes the image URL, source page, title, and domain for traceability. - Do not create placeholders. If generation and search both fail, record

What's inside
Steps it walks through
  1. Call-routing policy
  2. Visual asset priority
  3. Preconditions
  4. Generation progress WebUI
  5. Resume
  6. Stage 2 — stylespec.md (LLM or VLM via modelclient)
  7. Stage 3 — outline.json (LLM via modelclient)
  8. Stage 4 — per-page: one independent exec per page
  9. 4.1 Compose prompt (LLM via modelclient) — skip if action == "renderonly"
  10. 4.2 Generate image (T2I via sn-image-base)
  11. 4.3 Failure handling
  12. Stage 5 — pptx 打包(一次独立 exec)
  13. Stage 6 — closing
  14. Progress echo — MANDATORY
Ships with 8 files
  • prompts/outline.md
  • prompts/page_prompt.md
  • prompts/style_from_image.md
  • prompts/style_from_query.md
  • requirements.txt
  • scripts/build_pptx.py
  • scripts/resume_scan.py
  • scripts/sanitize_prompt.py
Commands it runs
python3 $SKILL_DIR/scripts/resume_scan.py --deck-dir <deck_dir>
python3 -c "
import sys, pathlib, json
from model_client import llm
deck = pathlib.Path('<deck_dir>')
tp = json.loads((deck / 'task_pack.json').read_text())
ip = json.loads((deck / 'info_pack.json').read_text())
sys_prompt = open('$SKILL_DIR/prompts/style_from_query.md').read()
user_prompt = json.dumps({
md = llm(sys_prompt, user_prompt)
More from SenseNova-Skills
All skills →
About this skill
What does the sn-ppt-creative skill do?

Creative-mode PPT pipeline. One full-page 16:9 PNG per slide. LLM / VLM calls go through sn-ppt-standard/lib/model_client.py (shared thin client). Text-to-image (the actual png rendering) goes through sn-image-base/scripts/sn_agent_runner.py. Falls back to web image search when T2I generation fails. Expects task_pack.json + info_pack.json already written by sn-ppt-entry.

How do I install it?

Run `npx skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-creative --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From OpenSenseNova/SenseNova-Skills, a repository with 4,855 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going