会话里有上传的 .pptx,且用户要把这份幻灯片填进一节已建的课(先 create_stage 建课,再 import_pptx 把页面追加进这节课堂,保留原版排版;课堂标题以 create_stage 为准,PPT 不接管)。随后逐页检查(有 render_scene_preview 就渲染看)并修 bad case,理解整课之后才写旁白/spotlight,最后 TTS。仅在用户要求时插入 quiz 或 interactive。不要重新规划整课。
64
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Fill an uploaded PowerPoint's slides INTO the stage the user created with
create_stage: the slides become appended pages (or pages inserted at
atOrder), keeping the original layout. The stage keeps its own title and its
existing pages — the PPT is content, not the classroom's identity. Import,
inspect and repair the pages, understand the course, then write
classroom actions. Do not skip from import to TTS.
The learner-facing name is 「PPT 导入成课」. Never say "clone", "style transfer", or "rewrite from the PPT".
Do not replan the imported deck. Do not call generate_scene on an
imported slide — that rebuilds the page and throws the original layout away.
create_stage for the classroom, then import the deck into it.pro-editing to fix visual bad cases. Do not patch /actions yet.generate_tts.create_stage with the classroom's own title and brief. The stage — not the
PPT — is the classroom: import never changes its title.list_materials. Find the source .pptx (mat_ id, mime or filename).import_pptx with that source mat_ id and the stageId from
create_stage. Pages append after the existing ones, numbered
consecutively. Pass atOrder to insert them at a position instead: pages at
that order and beyond shift back. Existing pages are a normal premise — the
PPT is one content source among others, never a reason to refuse.edit_deck delete), then
retry.edit_deck insert, then generate_scene that new page only with its
explicit type and brief — do not
re-import the deck to get more pages.If there is no .pptx, say so and stop. Do not extract a PDF/DOCX and pretend
it was a slide import.
Speaker notes may already have become speech actions. Treat them as drafts. Do not TTS them yet; they are rewritten in Step 4 after you understand the course.
If the import result says no roster exists, settle the cast in conversation and
call set_roster. Voices are needed later for
TTS, not for the inspection pass.
list_scenes is the map. Then inspect before you edit.
read_stage every imported page at path:/scenes/<order|id>. Record, in your own notes:
src);A deck of more than 20 pages: still list_scenes fully; read_stage the
cover, every section-looking page, and every page whose title/excerpt looks
thin, garbled, or like a dump. Do not skip a page that looks empty.
If render_scene_preview is registered, use it. A read_stage detail:"tree" inventory
cannot see overlap, clipping, or a table running off the canvas.
read_stage. Look at the
PNG, then decide whether that page needs a fix.read_stage only. Do not invent a screenshot.Do not call render_scene_preview on pages you have not read, and do not
preview quiz/interactive stubs you have not inserted yet.
Load pro-editing first. read its SKILL.md (the path is in
<available_skills>), then follow that skill's surgical loop for every
visual repair: read_stage, the smallest patch_stage / edit_deck op,
render_scene_preview look → edit → look. Stay in pro-editing until the
bad cases below are done. Do not skip the load and invent a parallel edit
style.
| Problem | Tool |
|---|---|
| Empty or garbage title | edit_deck retitle from the first real heading |
| Overlap or overflow | patch_stage set on that element's /content/canvas/.../left / top / width / height, one number per op |
| Leftover empty boxes | patch_stage delete_element |
| Broken or missing image | patch_stage set on /content/canvas/elements/N/src, only if you have a real replacement URL; otherwise leave it and mention it |
| Garbled text, leftover font-substitution junk | read_stage detail:"source", then patch_stage set on that element's rich-text path |
Rules:
pro-editing into narration.Only after Step 3. You now have a page list, inventories, and (if available) previews. Form a short course reading before touching actions:
Then write playback actions with generate_actions page by page, in order
(it drafts the full action set from the page content and course context, and
synthesizes audio by default — reserve patch_stage on /actions/... + generate_tts for
line-level fixes afterwards):
insert_speech / set_speech: one or a few teacher lines that teach this
page. Do not read the slide aloud verbatim. Speaker notes are a draft to
rewrite, not a script to keep if they are outline-speak or leftover PPT
comments.set_spotlight: bind the line to the element it is about (elementId
from read_stage detail:"source"). Skip spotlight when the page is a title-only cover.delete imported speech that does not teach.Do not call generate_scene to "generate actions". That regenerates the
slide.
After a page's actions are settled, generate_tts that page (default mode
fills missing audioId only). Reworded speech has no audio until this runs.
Before saying the import is ready to teach: every page that has speech must
have audioId. read_stage detail:"source" shows it.
If the user did not ask for quiz, interactive, or extra pages, stop after Step 5. One sentence is enough: they can ask to insert a quiz or an interactive page next.
If they did ask:
edit_deck insert with type=quiz or type=interactive at the chosen
atOrder. This creates an empty stub; it does not copy a PPT slide.generate_scene only that new page, with the explicit page type and
brief plus
materialFacts taken from the surrounding imported slides. Never
regenerate an imported slide in this step.widgetType and a filled
widgetOutline. A quiz must have real questions, answers, and analysis.generate_tts the new page if it has narration.Do not sprinkle quizzes through the deck "for engagement" when nobody asked.
list_scenes — imported slides still in order, plus any pages you inserted.audioId.import_pptx is the source of visual truth. Replanning the imported deck is
the wrong workflow for this skill.generate_scene is allowed only for newly inserted quiz/interactive
stubs, or when the user explicitly asked to rebuild one imported page.extract_material and teach from the text.636fab0
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.