(1) Start/reopen the browser SVG editor when no preview service is running; (2) apply user-submitted annotations after Step 7 export. Executor’s mandatory auto-startup lives in
generate-pptxStep 6 — never re-launch a preview that is already running. Editor behavior, lifecycle, ports, and remote access are documented insvg_editor.md.
Changes saved to svg_output... / 修改已保存到 svg_output...) or saying apply my annotations / apply my edits / 应用注解 / 开始应用.When not to run: the service is already running → give the URL; a precise chat edit (“change page 3 title to X”) → edit the SVG directly; a full regeneration → main workflow; Step 7 has never run → finish the main pipeline first.
python3 ${SKILL_DIR}/scripts/svg_editor/server.py <project_path> --daemon
Plain mode, no --live (reserved for Step 6). Launch immediately — the user already asked. Report the actual URL from the launch output or <project_path>/live_preview/lock.json, never an inferred 6060; on a remote host add --no-browser and forward the port. Then tell the user, in their language, in one short message:
Ctrl+Z / Undo drops staged edits; re-export stays chat-driven (“re-export” / “重新导出”);apply my annotations;🚧 GATE: <project_path>/exports/ contains at least one *.pptx; otherwise tell the user to finish the main pipeline first.
python3 ${SKILL_DIR}/scripts/check_annotations.py <project_path> — its output lists each pending change as file → element_id → annotation text → content preview; use it directly as the to-do list. If it reports none, tell the user and stop.<project_path>/svg_output/<file> per the text; remove data-edit-target and data-edit-annotation from it; append one annotation_applied JSONL record (ts, file, element_id, original text) to <project_path>/live_preview/annotations.jsonl.generate-pptx Step 7.2, wait for its success criterion, then run Step 7.3; rerun Step 7.1 only when speaker notes changed.