or\nbackticks. Keep `\"$BOX_AGENT_NODE\"` as shown to expand the trusted runtime variable.\n\nPowerShell paths also use literal single-quoted strings: double any embedded\napostrophe (`O'Brien` becomes `O''Brien`), and preserve backslashes, dollar\nsigns, brackets, and backticks unchanged. Do not replace `-LiteralPath` with\n`-Path` or omit `-ErrorAction Stop`; a failed directory switch must stop before\nthe synchronizer runs. Do not use typographic quotation marks in these commands.\n\nThe manifest argument above is the same literal presentation-directory-relative path on every\nplatform. The loader-expanded script path is native—normally `/...` on\nmacOS/Linux and a drive-qualified path such as `C:\\\\...` on Windows—and must be\ncopied exactly from the loaded skill. The synchronization invocation must be\nthe only command apart from the exact platform-specific directory prefix: do not add\n`2>&1`, `echo`, another `;` or `&&`, pipes, redirects, command substitutions,\nwrappers, aliases, or extra arguments. Read failure details directly from the\nBash tool result; never work around a rejection by manually editing the\nmanifest. Do not reread those files when their current contents are already in\ncontext. For a routine\ndeck of roughly 12 slides or fewer, do not call\n`plan_write` or `todo_write`; avoid micro-turns that only update coordination.\n\n| Operation | Command convention |\n| --- | --- |\n| Sync generated image statuses | Use the platform-specific standalone example above, including its literal directory prefix. |\n\nWrite one `deck.patch.json` when it fits, with this exact envelope:\n\n```json\n{\"slides\":{\"slide-01\":{\"props\":{\"title\":\"Page title\"}}}}\n```\n\nRun `scripts/apply_deck_patch.js deck.json deck.patch.json`. Fill only the returned\ncontent fields. The program rejects changes to locked visual enums, including\npage `composition`, local `variant`, chart style/type and media-side controls.\nNever rewrite full `deck.json`/manifest with file tools, Python, or ad-hoc shell.\nUse ordered write chunks only after explicit output-length recovery, never guess\nan accepted chunk index, and restart from durable files after session recovery.\n\nFor charts, every included series must contain a real numeric value for every\ncategory. Never pad a gap with zero, placeholders, or an invented baseline/forecast.\n\nKeep source names short in `source`; put conclusions in the proper content field.\nDo not invent chart values or fill missing numeric cells with zero/placeholders.\nUse a complete supported subset and preserve isolated facts in another content\nfield; incompatible data shape goes back to the design role. Keep optional copy\nempty when the user supplied no text. The patch compiler binds ready media;\nfull-slide `background` is a slide field, never `props.background`.\nWhen the accepted plan includes per-page `subject_expression`, implement that\nexpression in the corresponding content/media fields. Before finalization,\ncompare each key page with its expression: naming an axis is not a route diagram,\nand naming materials is not a material-detail visual. Report any expression that\ncould not be implemented; a profile in JSON is not proof of visible subject fit.\n\nExplicit image-rich briefs may activate `creative_image_mode`; at least one real\ngenerated asset must be referenced for an image-complete result. If all required\ngeneration fails, deliver structurally usable degraded HTML and accurately report\nthe unmet image requirement. Ordinary factual topics do not imply creative mode.\n\n### 6. Finalize and deliver\n\n```bash\n${BOX_AGENT_NODE:-node} scripts/finalize_controlled_deck.js deck.json --out index.html\n```\n\nThis is the single normal finalization command. Core schema/design-contract and\nrender failures block. Outline binding drift blocks by default. Only an explicit\n`BOX_AGENT_ALLOW_DEGRADED_OUTLINE_BINDING=1` permits that semantic-only draft.\nImage, optional inspection and source findings are recorded as advisories.\nOn any nonzero finalization result, read `qa/render_quality.json` before\nclassifying other advisories. Its `ok: false`, non-advisory issues and the\nfinalizer's `blocking_issues` are confirmed visual failures. A local\n`text.status: fit` only describes text sizing and does not clear container\noverflow warnings; package validity and successful image generation also do\nnot clear these failures. Follow the report's `next` action, not a guessed\nexplanation for the exit status.\nIf finalization returns `correction_required: true`, confirmed unreadable text\nor text overflow is a repair request, not a projection disclaimer. Use\n`render_quality.affected_pages` and its concrete issues with the existing\n`design_plan.js correct` page-bound correction, accept and apply once, then\nfinalize again. Preserve the accepted palette, theme and all unaffected pages.\nIf the correction was already used or the defect persists, retain HTML/PPTX as\nan explicitly degraded editable draft; do not report the deck as fully completed\nor mark visual quality passed. Report execution outcome as `partial`, with the\nfailed visual check non-advisory, and describe the artifact as a degraded draft\nin the final response. Finalization returns `ok: false` and a nonzero exit status\nfor these confirmed defects even when it preserved usable files.\nMissing optional inspection alone never requests\nthis correction. Do not start an unbounded review/repair loop.\nAn actual frozen-palette mismatch is a design-contract failure, not an optional\nvisual review: report the concrete component/property from QA without replacing\nthe accepted colors or patching the compiler. Missing image understanding alone\ndoes not block this deterministic color check or ordinary delivery.\n`ok: true` does not imply warning-free. Never describe degraded output as clean.\nA design-plan deck does not require a second semantic reviewer; the report records\nthat post-content model review was not performed. Program QA still runs normally.\nFor a requested PPT/PPTX, add `--require-pptx --pptx output.pptx` to this command.\nIt exports and checks the current deck before reporting the PPTX path. Without\nthese flags it delivers HTML only. An export failure keeps the HTML, returns a\nnonzero exit status and reports `delivery_status: partial`; it is not a completed\nPPTX delivery, even if a previous `.pptx` exists.\n\nWhen the image manifest has a background `layout_contract`, run\n`scripts/validate_image_layout_contract.js` after finalization and preserve its\nfindings with the draft. Keep `outline.json`, `deck.json`, assets and reports beside\nthe HTML. The saved HTML's embedded model is authoritative after user editing;\nthe sibling `deck.json` is not automatically synchronized.\n\n## Requested redesign and other routes\n\nFor an explicit design change, update the affected outline constraints, prepare\nnew designer input and import the revised child response with `design_plan.js accept`. With an existing deck of the same\npage count, run `scripts/design_plan.js apply design_plan.json --input design_input.json\n--deck deck.json`, then fill any newly required content and finalize. A failed\nlayout migration returns named content/contract issues; do not trim required facts.\nThe HTML editor remains free to change layouts, local enums, pages and media.\n\nFor an existing PPTX/template: copy it, extract text, edit while preserving OOXML,\nvalidate the package, and inspect visually only when requested or needed. Read\n`references/ooxml-editing.md`. Native PptxGenJS or legacy/custom HTML is an explicit\nescape route when controlled layouts cannot express the requirement and the user\naccepts the tradeoff. Read `references/pptxgenjs.md` or `references/html-first.md`\nthen. This authorization applies to the requested alternative, not to a failed\ndesign acceptance; use the existing HTML delivery procedure above for that case.\nDo not change route for convenience. Direct PPTX line geometry must use\nnonnegative width/height.\n\nFor optional Archify diagrams, read `references/archify-diagrams.md`; use its\nbundled runtime without installation. Its embedded diagram is an image. Keep\n`technical-diagram-v1` for editable nodes/edges in HTML; PPTX receives a scalable\nSVG picture, not guaranteed native node objects. Statistical data stays in the\neditable chart workflow. Read `references/html-editable.md` for export internals.\n\n### Theme preview intent (before deck authoring)\n\n“先看看主题 / theme options” is theme discovery, before writing `outline.json` or\nscaffolding. Run `scripts/render_theme_gallery.js --out theme-previews/index.html`,\nshow the real compiled previews, and wait for the chosen registered theme. This\nopt-in discovery must not slow the default path. Composition comparison intent\nuses `scripts/render_composition_gallery.js --out composition-previews/index.html`;\nit displays existing internal presets without requiring main-agent family choices.\n`html-templates` is optional richer design reference, not a hard dependency.\n\n## Research and image evidence boundaries\n\nFor a factual public deck without supplied evidence (people, organizations,\nevents, products, data), research happens **before** `outline.json`, never after:\nload `research-synthesis` when available; when it is unavailable or hidden in\nthis session (fast mode), call the search tools yourself — open with general\nqueries without `site:`, then `web_extract` the specific pages you will cite.\nWriting `outline.json` for such a deck before any search or page read is a\nprocess error. Only write `source_mode=public_authoritative_research` when the\noutline's facts come from sources you actually opened in this task, and put the\nexact page URL (not a homepage or a bare site name) plus the exact figure or\ndate into that slide's `evidence`: every number or date in a slide's title,\nmessage or bullets must appear literally in that same slide's evidence text\n(e.g. `2013年加盟巴塞罗那 | FC Barcelona | https://…`), one fact per item. If nothing was searched, do not claim that\nmode: use only supplied facts, omit optional claims and disclose required gaps.\nIf `prepare` answers `repair_required: true`, design has not started and the\noutline must be fixed now: work through every `checklist` item in one rewrite of\n`outline.json` — copy the exact figure/date from a page you already opened into\nthat slide's evidence next to its URL; otherwise run at most two targeted\nsearches for it; otherwise reword the line without the number (or use\n`暂无可验证公开数据`). Then re-run the same `prepare` command. Anything left\nunfixed is cut from the slides before design, leaving them short or empty, so do\nnot re-run `prepare` without editing. If a later `prepare` reports\n`auto_degraded` or `unverified_claims`, name those items in the final reply. `prepare` records `research_status`; if it is\n`handoff_unverified`, do not claim verified research or hide this limitation.\nUse only supported facts, omit optional claims or disclose required gaps, and\ncontinue production without treating research gaps as a rendering failure.\n\nImage understanding is optional. If `inspect_images` cannot view the image or\nreports no multimodal capability, record visual identity/quality as unverified\nand continue immediately. Do not retry it, switch models, change user settings,\nor block design, media binding, rendering or export. Actual file existence,\ndecode and geometry checks remain program checks, independent of model vision.\n\n## Export and runtime\n\nHTML-only generation needs no export-host preflight. Normal PPTX delivery uses\nthe finalization command above. For an existing or degraded HTML draft, run\n`scripts/check_html_export_env.js`, then `scripts/html_to_editable_pptx.js\n\u003cprimary_artifact> output.pptx`; verify the created file with\n`scripts/validate_pptx_package.py output.pptx`. Do not ask the user to request\nPPTX again, or restart authoring to export a usable draft. Read `references/runtime-office-raccoon.md`,\n`references/dependency-policy.md`, and `references/shell-safety.md` when needed.\nUse managed `BOX_AGENT_NODE`, `BOX_AGENT_PYTHON`, `BOX_AGENT_NPM` executables and\nmanaged package resolution, not bare require.resolve probes or system installs.\nA blocked export does not suppress an existing editable HTML deliverable.\n\nThe controlled canvas remains exactly 1920px × 1080px. Do not pass --width/--height;\nnonstandard exports require matching explicit --canvas WxH on the relevant tools.\nEvery created/modified PPTX needs package validation, text extraction, placeholder\nscan, and page count/order checks. Missing optional render dependencies do not\nblock HTML. For maintenance, use `references/presentation-system.md` and the\nall-theme/all-layout matrix; it is not a routine authoring stage.\n\n### 4.2 Visual inspection is optional\n\nRendered visual inspection (`scripts/render_pptx.py` + reading the resulting images) is **opt-in**, not a required gate.\n\nModel-based image inspection is also optional. If `inspect_images` is absent,\nthe selected model does not support images, the request fails/times out, or its\nanswer says it cannot see/read the image (including “Access Denied”), record\nvisual inspection as **unverified** and continue to deliver the usable HTML.\nA tool-level `success: true` does not turn an “unable to read” answer into a\ncompleted visual review. Do not retry the same inspection, switch models, ask\nthe user to configure a vision model, or repair the environment just to satisfy\nthis optional check. Deterministic HTML/layout checks remain independent of\nmodel vision. Missing visual inspection alone never blocks the workflow or\nmarks an otherwise usable deck incomplete. Follow an explicit user request to\nretry or use a particular vision model separately.\nIf preparing the screenshot inputs fails, skip the model-based inspection at\nthat point too. Do not cycle through capture methods or export a PPTX merely to\nobtain pictures for checking an HTML-only delivery.\n\n**Default behavior:** skip rendered visual inspection. The controlled HTML QA\nreports above are sufficient for an HTML-only delivery; PPTX structural QA is\nsufficient for an exported `.pptx`. Do not call `render_pptx.py` for visual\njudgment on every deck.\n\n**Trigger visual inspection only when:**\n1. The user explicitly asks to see / review / render the deck.\n2. A blocker-class issue is already suspected from structural QA (e.g. text-extract shows truncated content) and visual confirmation is needed to locate the failure.\n\n**When visual inspection runs:**\n1. One pass only. Classify findings per §4.1.\n2. Fix blockers, accept cosmetics, report.\n3. Do **not** re-render after the fix to verify cosmetics. Re-render only if the fix targeted a blocker.\n4. Do **not** trigger a second visual pass to \"double-check\" your own judgment.\n\nRendering for the user's own preview (so they can open the PNGs) is fine and does not count as visual QA — just generate the images, do not narrate findings or self-critique.\n\n### 4.3 Optional whole-deck overview\n\nAt final delivery, prefer one contact sheet showing every slide in order, if\ncurrent screenshots and the local renderer are available. This is a user preview,\nnot an additional visual QA gate. Never block delivery on this preview.\nUse a four-column thumbnail grid in reading order (left to right, then top to\nbottom): 12 slides form 4 columns by 3 rows. Fewer than four slides use one row;\nan incomplete last row is fine. This is only a quick look at the overall style\nand composition, not a detailed slide review.\n\nReuse screenshots from the final HTML export when available; identify them as\nHTML previews, not screenshots of the exported PowerPoint. Otherwise use an\navailable browser to capture the final HTML slides, or an already usable PPTX\nrenderer (`scripts/render_pptx.py \u003cdeck.pptx> --out qa/overview-slides --format png`).\nFor browser capture, screenshot each slide element separately, preserving its\naspect ratio and excluding editor toolbars, navigation, and surrounding page\nchrome. Do not use a full-page scrolling screenshot or a single tall strip of\nthe entire deck as the overview. Do not change the actual deck layout to make\nthe contact sheet.\nDo not install dependencies just for this optional preview. If capture is\nunavailable or fails, skip it without retries or asking the user to fix their\nmachine. Missing preview alone does not make the deck incomplete.\n\nUse only current full-slide PNGs in a dedicated directory; check that their\ncount and numeric order match the final deck. Never use generated asset images,\nstale screenshots, or a single Quick Look thumbnail as an all-slide overview.\nIf any slide is missing, omit the overview. Combine a complete set with:\n\n```bash\n${BOX_AGENT_NODE:-node} scripts/make_contact_sheet.js qa/overview-slides --out qa/deck-overview.png --cols 4 --thumb-width 480\n```\n\nIf stitching fails or the dependency is missing, skip the preview. The helper's\nvision-review prompt/status belongs to opt-in visual QA; it does not require a\nreviewer or prevent delivery of this user preview. Embed only the successfully\ncreated contact sheet once, before the generation-details section. Do not\nembed individual slide screenshots by default.\n\n## 6. Final Response Format\n\nThe normal user-facing response must be concise and use the active user-visible\nresponse language. An explicit user language request wins; otherwise follow the\nhost `ui_language` instruction when present, then the language of the user's\ntask. Never override that contract with a locale-specific default, and do not\nmix headings from one language with body text from another.\n\nTreat generated or acquired slide illustrations, diagrams, backgrounds, and\nindividual screenshots as intermediate assets. Do not embed them in progress\nmessages or the final reply, or list them as standalone deliverables, unless\nthe user explicitly requests the individual images. Keep their local files and\nmanifest references for deck rendering and editing. For PPT assets call\n`generate_image` with `publish_artifact: false`; this suppresses artifact\npublication without suppressing generation or insertion. For a requested\nindividual-image deliverable, call `publish_artifact(path)` on the validated\nimage after generation.\n\nThe preparation script declares the presentation directory as an intermediate\nworkspace. Only explicitly registered deliveries appear in chat. Finalization\nand PPTX export register their finished outputs automatically. For the final\nwhole-deck overview, pass `--publish-artifact` to `make_contact_sheet.js`;\nomit it for internal review sheets. Keep user-requested standalone images explicit.\n\nPresent information in this priority order:\n\n1. Start with one plain-language completion sentence using the matching\n localized completion, editable-draft, or incomplete status below.\n2. Name only the primary user deliverable: the editable presentation, requested\n PowerPoint export, or requested PDF export. Do not enumerate reproducibility\n or workflow files.\n3. Add the localized usage-note label only when a finding changes how the user should preview,\n edit, download, or publicly use the result. Explain the concrete impact and\n recommended action; omit purely diagnostic findings.\n4. End with concrete next steps in the active response language, for example\n previewing, downloading, continuing edits, or updating after adding sources.\n5. Add a compact block using the matching localized generation-details heading;\n the host\n moves this section into its collapsed details area before the existing\n generated-files module. Retain QA totals and relevant technical artifacts.\n Translate fixed status concepts into the matching localized QA labels. Keep artifact\n names and directories such as `deck.patch.json`, `qa/`, and `research/`\n literal so the result remains traceable.\n\nUse these stable labels for the host-supported locales. If the user explicitly\nrequests another language, translate the same semantic roles consistently:\n\n| Role | `zh` | `en` | `ja` |\n| --- | --- | --- | --- |\n| Complete | `演示文稿已完成` | `Presentation complete` | `プレゼンテーションが完成しました` |\n| Editable draft | `已生成可编辑草稿` | `Editable draft ready` | `編集可能な下書きができました` |\n| Incomplete | `演示文稿尚未完成` | `Presentation not complete` | `プレゼンテーションは未完成です` |\n| Usage note | `使用前注意` | `Before use` | `ご利用前の注意` |\n| Generation details heading | `## 生成详情` | `## Generation details` | `## 生成の詳細` |\n| QA passed label | `质量检查` | `Quality checks` | `品質チェック` |\n| QA notice label | `检查提示` | `Check notices` | `確認事項` |\n\nNever print raw status key names such as `qa_ok` or `qa_warnings`, internal\nresearch delivery-mode ids such as `framework` or `partial`, validator names,\nor commands. Their values may be retained only under clear localized labels.\nTechnical filenames and report directories remain literal under the localized\ngeneration-details heading.\nDo not turn a diagnostic count into a user warning: explain it under\nthe localized usage-note section only when it changes how the user should use the result.\n\nTranslate internal outcomes into user impact:\n\n- Image-generation success means the file exists, not that it is inserted.\n Finalization binds ready manifest assets to missing/placeholder slots in the\n same invocation, preserving already chosen media. Use the final image report\n to describe insertion; an unreferenced image remains missing from the deck.\n Report affected pages in an editable draft without another review or retry.\n- Local contrast warnings likewise mean a readable-display problem remains:\n deliver the editable draft, name the affected pages from the existing report,\n and do not label the color check as clean or start another review round.\n- When the editable HTML is current and core checks pass, say it can be\n previewed and edited normally.\n- When source or private-fact advisories exist, make clear that they do not\n prevent preview/editing and state whether public sharing needs source review.\n- When a usable HTML draft exists but a presentation issue may affect display,\n use the localized editable-draft status and name the affected use, not the validator.\n- When HTML is usable but a requested PPTX/PDF export is unavailable, deliver\n the presentation and say only that the requested format has not been exported.\n- When no trustworthy HTML exists, do not claim completion.\n\nFormat-specific QA is explicit: HTML delivery treats chart recoverability and\ndom-to-pptx compatibility findings as advisories; a requested native PPTX run\nmust invoke `finalize_controlled_deck.js ... --require-pptx`, which promotes\nthose findings to blocking export checks and creates the PPTX while preserving\nthe HTML artifact. For degraded HTML, use the existing-HTML export route above.\n\nIf a blocking structural, HTML, runtime, explicitly required image, or export\nstep is blocked, explain the user-visible consequence in the active response\nlanguage. Never treat a\nsource/URL/private-fact advisory as a blocked presentation.\n","licenseDocuments":[]}}
La interfaz está localizada; las descripciones y documentos de las Skills se traducen automáticamente con IA a su idioma. El código, los comandos, rutas y términos técnicos se mantienen en el original, y prevalece el documento del autor.
Explorar Skills
Documentos · SKILL.md

ppt-fast

ppt-fast

Create, inspect, edit, validate, render, and QA presentation decks. Use when the user mentions PowerPoint, PPT, PPTX, HTML deck, slide deck, presentation, template slides, speaker notes, slide images, or asks to read, generate, create, make, design, or modify a presentation artifact. New decks use controlled, editable HTML; PPT/PowerPoint requests also rece…

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentación de la Skill

GitHub

name: ppt-fast displayName: 快速模式 description: Create, inspect, edit, validate, render, and QA presentation decks. Use when the user mentions PowerPoint, PPT, PPTX, HTML deck, slide deck, presentation, template slides, speaker notes, slide images, or asks to read, generate, create, make, design, or modify a presentation artifact. New decks use controlled, editable HTML; PPT/PowerPoint requests also receive a PPTX file unless the user requests HTML only. keywords: [ppt, pptx, slide, slides, deck, presentation, powerpoint, pitch deck, speaker notes, ppt制作, 做ppt, 可编辑ppt, 幻灯片, 演示文稿, 投影片, 演示, 宣讲, 汇报材料, 路演, 路演材料, 融资路演, 商业计划书, BP, 提案, 讲稿, 模板页, 路演ppt] capabilities: [presentation.authoring] related_skills: [html-templates] metadata: user_visible: false allow_override: false

PPT Fast Skill

Create controlled, editable HTML presentations. A request to make a PPT/PowerPoint requires a .pptx file alongside the HTML; the user need not separately ask to “export”. Carry that format request through mode selection and task continuation. Explicit HTML-only or outline-only requests need no PPTX. A request for a finished PPT includes pages, not just an outline, unless it says “只要大纲/内容方案” or “不要生成页面”. Existing PPTX/template edits preserve the original file structure; python-pptx must not create a new deck.

Responsibilities

Use the host's Playwright runtime for rendering. When BOX_AGENT_PLAYWRIGHT_MODULE_PATH is supplied, load that exact Node module and pass BOX_AGENT_PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH as executablePath; do not install a second SDK/browser or use a bare require('playwright') that can select an old workspace dependency. Prefer the bundled rendering/export scripts, which implement this contract. A missing host runtime must be reported for repair in the client.

The main agent owns research, factual content, the outline, content filling, media acquisition and delivery. An isolated design role owns the registered theme preset, complete role-based palette, structured visual requirements, slide layouts and their visual options. Programs validate and render. Do not select themes, composition families or whole-deck variants in the main agent, and do not load the complete design catalog into its context.

The designer's instructions are in references/design-role.md. They are inputs for the isolated role, not another full Skill to preload into the main agent. Programs match theme visual traits independently of its original colors; an allowed no-match result uses plain-neutral and records the relaxed features. Report that fallback in delivery. Explicit user constraints must not be silently relaxed. Themes and all existing HTML layout controls remain available. New designs have no seed. Human edits always supersede an AI proposal; the content-patch lock must never be applied to the HTML editor's user actions.

Presentation directory contract

Resolve one absolute <PRESENTATION_DIR> from the current conversation before reading or writing deck files. If the model created a task directory, use it; otherwise use the unchanged session cwd. This directory is task organization, not a new workspace, and it must never come from a legacy host output-root setting.

Pass this absolute directory as workspaceDir only when the invoking tool actually supports that argument. Box-Agent's Bash tool has no workspaceDir: POSIX commands using relative deck paths must start with cd '<PRESENTATION_DIR>' &&; PowerShell uses Set-Location -LiteralPath '<PRESENTATION_DIR>' -ErrorAction Stop;. PPT and deep research must use the same directory for a research-backed deck. Use the literal path quoting rules below for every directory prefix. Keep private build, qa/, assets/, and final output paths inside it; do not add an automatic output/ layer.

New controlled deck

1. Content and outline

Bundled Skill files are read-only runtime code. Do not edit, replace, copy-and-patch, or disable their scripts to make a presentation pass. Keep task writes in the presentation directory; preserve completed artifacts and report a program failure.

Read references/outline.md when planning a new deck. Keep near-final page copy, all required facts, units, counts, relationships and explicit user constraints. The designer must not invent missing content to fit a visual. Keep short source material short: do not repeat the same claim in a card title, body and bullet just to fill space. Choose a layout with suitable capacity. Do not compare different units on a shared numeric axis; use separate chart panels or clearly labeled growth rates derived from the supplied values.

  • Supplied page content is the source of truth; preserve its intended ordering.
  • Proposed architectures/solutions with sufficient goals and components use source_mode=user_provided; they do not require research by default.
  • Missing external/current/company/market facts use research-synthesis when available. Follow its selected research budget and use only the validated presentation_handoff.verified_facts[].canonical as researched facts. Do not ask again for permission to use public sources already authorized by the task.
  • Preserve strict/private source boundaries. Omit optional unsupported claims; disclose required public gaps as 暂无可验证公开数据, and private gaps as 待补充 or 待客户确认. Assumptions require explicit user authorization.
  • Ask one focused structural question only when competing audience/scope choices materially change the requested result. Do not ask about internal tooling.
  • User-selected page counts are hard; suggested ranges are only planning hints. Derive an unspecified count from the material, never an arbitrary midpoint.

Do not use request_user_input for a missing fact. Missing case metrics, quote amounts, contact names and other required private facts use disclosed placeholders without pausing delivery. Source-bound decks never invent named clients, team facts, awards or rates such as “复购率持续提升”. Never create a fake bitmap with Pillow and claim it came from image generation. Do not convert visual styling language into required semantic fields; corner labels are not --require-field 1:tags.

Removing numbers or rewriting a claim as qualitative prose does not verify it. For framework research pages, the exact unavailable-data placeholder must appear in message or bullets.

Write outline.json. Preserve explicit theme selections in design_requirements.theme_id, and exact palette/style/geometry wording in the same design requirements. Put explicit per-page geometry/count requirements in that page's hard_requirements, quoted verbatim from the real user request. Do not put your own aesthetic choices there: outline layout/visual are suggestions for the designer, and changing only those hints does not reset the design budget. These constraints must be updated when the user changes them. Do not add unrelated history or synthetic continuation text as user facts.

2. Prepare the isolated design input

All shell examples below run in the presentation directory using the directory prefix above and the loader-expanded script paths.

${BOX_AGENT_NODE:-node} scripts/design_plan.js prepare outline.json --out design_input.json

For a research-backed outline, add --research-handoff research/qa/<topic>_research_check.json. This command runs the outline validator and writes qa/outline_check.json. A failure returns the named issues for a content correction; do not bypass it. An optional --title sets the deck title. It writes the complete designer input to bounded brief/index files, with theme/layout details available on demand. Stdout contains only paths and reuse status. The metadata file is not the designer brief.

If reusable: true, reuse design_plan.json without another design call. If the existing deck.json is already scaffolded, continue its content/finalization work; never scaffold over it. For a content-only update that fits the existing fields, patch it directly without rerunning design preparation. Re-enter design only for changed design requirements or incompatible content shape/capacity. A saved HTML with user edits is authoritative: preserve it and its embedded #deck-document; never restore a stale sibling JSON over those edits.

3. Delegate and import the independent response

Call sub_agent with required_tools: ["read_file", "search_files"] and budget: {"max_steps": 24, "max_tool_calls": 48}. Design is a critical stage; do not impose a short whole-task timeout such as 180 seconds on this workflow. Omit files to keep the real tool-capable loop. Put the exact designer_brief absolute path returned by prepare and the loader-expanded references/design-role.md path in the task. Ask the role to read both and return theme/layout/visual choices plus explicit background/text/primary/accent/secondary color values and accent_usage. User colors remain locked per role; the designer fills missing values. Without user colors it selects and states the complete palette from the brief and theme. Both paths compile into the same frozen palette contract; the main agent must not substitute colors after acceptance. The brief contains compact indices; detailed theme/layout contracts are small linked files. Do not read the catalog or make visual choices in the main agent.

The brief lists bounded content packets and theme/layout indices. Tell the role to read all listed packets before selecting, shortlist up to three themes, then read only chosen theme/layout details. Reserve the final steps for producing the decision; more catalog searching is not useful once compatible choices are found. The role returns a response, not a complete deck plan. Never write or repair design_plan.json yourself. Import the completed child's actual Session Log:

${BOX_AGENT_NODE:-node} scripts/design_plan.js accept design_input.json

The importer finds only completed child sessions that read this exact brief in this workspace. It binds version, hashes, ordered page numbers, and content mappings, then validates the real choices and generates the canonical plan. Manually modified plans or responses from another input/workspace are rejected. No model needs to copy hashes, page IDs, or JSON content-reference paths.

If a valid accepted design later fails page-level render QA, do not start a fresh designer with only the old brief. Bind the original decision and failed pages:

${BOX_AGENT_NODE:-node} scripts/design_plan.js correct design_input.json --pages 4 --issue "Page 4 overflows"

Send the returned correction_file to the design role, then run accept and apply. The program changes only the named pages, preserving palette, subject profile and all other pages. The one-correction limit still applies. A second unbound response cannot replace an already valid design. Explicit theme-only revisions use --fields theme_id instead; never widen scope just to accept unrelated changes.

Prepare first creates fallback.html and, when no existing HTML exists, index.html: a registered-layout presentation rendered by the normal renderer and full editor, containing the supplied outline before checking it. If outline/research validation fails, it returns degraded delivery with unverified content clearly reported; do not repeat research or validator debugging indefinitely. This is the delivery floor, not a completed visual review. Keep it until the normal deck is rendered. If can_retry: true, send the same brief path and correction_file to the designer once with budget {"max_steps": 16, "max_tool_calls": 24}. This is a fresh role; read correction_file and follow its requires_full_read value:

  • true: read brief_file and its required packets using the design role's reading procedure, then return a complete decision object. The previous response is not a usable decision to patch; do not replace these reads with main-agent choices copied into the task.
  • false: the correction file is sufficient. Return only its named fields as a JSON patch; the program preserves the rest. Do not reread all packets or the full catalog, or recreate the deck.

Run accept again. On status: degraded, design authoring is finished: do not call inspect_deck_contract, apply_deck_patch, finalize_controlled_deck, edit deck.json, delete slides, or start another design call. Continue the requested format delivery from primary_artifact as described below. Missing, malformed or still-invalid designer output must not leave the user without a deck. Recovery uses plain-neutral with registered cover/cards/closing layouts and the normal deck schema, renderer, playback, layout editor, save and export controls. Never substitute a separate text-only HTML implementation. Extra pages are tolerated in the fallback by splitting existing outline content; never invent content or facts to fill them. Do not start a third design call or alter input just to reset the attempt count. If later compilation fails, use the existing fallback HTML with its report. Images or unavailable vision must never prevent delivery of the files already available.

Finish delivery after design failure

If acceptance returns correction_failed with retained_plan, the correction failed but the original accepted plan remains valid. Keep its palette, subject identity and page count; apply that retained plan if needed and finalize the existing deck. Do not switch to neutral recovery HTML or restart design. Report any remaining confirmed visual defects as a degraded draft with partial outcome.

degraded / terminal ends design retries, not outstanding format delivery. Read qa/design_delivery.json; keep its actual primary_artifact HTML unchanged. For HTML-only requests, deliver that file with the report. When PPTX is required, run the existing exporter on that same file, using its absolute path in place of <PRIMARY_ARTIFACT>:

${BOX_AGENT_NODE:-node} scripts/check_html_export_env.js
${BOX_AGENT_NODE:-node} scripts/html_to_editable_pptx.js '<PRIMARY_ARTIFACT>' output.pptx
${BOX_AGENT_PYTHON:-python} scripts/validate_pptx_package.py output.pptx

Then extract text and check actual page count/order, required content and picture objects. Explain the design/content limitations and any page-count difference from the request; fallback pagination can add pages to retain supplied content. Claim independently replaceable images only for actual picture objects, not shapes or artwork baked into a page background. Package validity alone does not prove those content/editability requirements.

An actual export error should be repaired within the existing dependency/export rules and retried. If it remains blocked, deliver the existing HTML and report the missing PPTX as incomplete. Failed design validation does not authorize a fresh HTML implementation, a new python-pptx deck or a switch to the escape route.

Stopping authoring still permits exporting the existing primary_artifact. If PPTX was requested, use the existing-HTML export command below without rerunning finalization or changing the deck. Deliver the available files and explain the limitations from qa/design_delivery.json.

4. Scaffold the validated plan once

${BOX_AGENT_NODE:-node} scripts/inspect_deck_contract.js --design-plan design_plan.json --design-input design_input.json --outline outline.json --out deck.json

Use cd '<PRESENTATION_DIR>' && ${BOX_AGENT_NODE:-node} on that same line; do not split cd and the inspector across lines. The inspector must be the only command after the literal directory prefix: no pipe, redirection, tail, or additional diagnostic command. It rejects attempts to override the plan with theme/family/layout flags, and returns concrete design errors rather than silently replacing a layout or splitting pages. It writes deck.json, assets/generated/manifest.json, and qa/deck_contract.json. The stdout is the selected content contract: fields, defaults, source pages, content bindings and media slots. Reuse it; do not inspect every layout again. Use --fact for verbatim user facts, --research-fact only after research, and --assumption only for explicitly authorized assumptions. Use --require-field only for user-required semantic data fields, never decoration.

5. Acquire media and fill content

Before issuing any image-generation batch, read assets/generated/manifest.json and collect each selected row's exact output_path. Generate directly to those paths; do not generate descriptive aliases first and rename them afterwards.

Read references/image-assets.md for image acquisition. Follow the scaffolded acquire_via: user keeps localized supplied assets; web uses image search; ai uses generation; none stays image-free. Web rows use the exact search query with search_type: "image" and count: 5, once per unique query. Localize selected receipts with scripts/localize_web_image.py. Only after exhausted or unavailable may a web job use its labelled AI-concept fallback. Never fabricate a documentary image of a real subject. Call generate_image with watermark: false and publish_artifact: false; use the manifest entry's output_path verbatim as the tool's output_path (never invent a short alias such as cover-hero.png). Independent jobs may share a tool batch. Generation success is not insertion proof: the final manifest must bind the asset to the actual page and field.

Then synchronize once with one tightly scoped Bash-tool command. A missing optional generated asset is recorded as deferred and does not stop HTML delivery; an explicitly required asset remains an incomplete-delivery finding. Use the exact platform-specific directory prefix below; do not pass workspaceDir to the Box-Agent Bash tool. Do not use a legacy output environment variable in either the directory or manifest path. Copy the exact loader-expanded absolute path shown for scripts/sync_image_manifest_status.js; do not construct a path from a known installation root. Quote that native path because any platform's installation directory may contain spaces.

  • macOS/Linux POSIX shells and the bundled Git Bash on Windows: cd '<PRESENTATION_DIR>' && "$BOX_AGENT_NODE" '<LOADER_EXPANDED_SYNC_SCRIPT>' assets/generated/manifest.json
  • Windows PowerShell fallback when the Bash tool identifies itself as PowerShell: Set-Location -LiteralPath '<PRESENTATION_DIR>' -ErrorAction Stop; & "$env:BOX_AGENT_NODE" '<LOADER_EXPANDED_SYNC_SCRIPT>' 'assets/generated/manifest.json'

POSIX paths use literal single-quoted strings so dollar signs and backticks remain filename characters. For an embedded apostrophe, close the string, insert a double-quoted apostrophe, and reopen it: O'Brien becomes 'O'"'"'Brien'. Do not use double-quoted path literals containing $ or backticks. Keep "$BOX_AGENT_NODE" as shown to expand the trusted runtime variable.

PowerShell paths also use literal single-quoted strings: double any embedded apostrophe (O'Brien becomes O''Brien), and preserve backslashes, dollar signs, brackets, and backticks unchanged. Do not replace -LiteralPath with -Path or omit -ErrorAction Stop; a failed directory switch must stop before the synchronizer runs. Do not use typographic quotation marks in these commands.

The manifest argument above is the same literal presentation-directory-relative path on every platform. The loader-expanded script path is native—normally /... on macOS/Linux and a drive-qualified path such as C:\\... on Windows—and must be copied exactly from the loaded skill. The synchronization invocation must be the only command apart from the exact platform-specific directory prefix: do not add 2>&1, echo, another ; or &&, pipes, redirects, command substitutions, wrappers, aliases, or extra arguments. Read failure details directly from the Bash tool result; never work around a rejection by manually editing the manifest. Do not reread those files when their current contents are already in context. For a routine deck of roughly 12 slides or fewer, do not call plan_write or todo_write; avoid micro-turns that only update coordination.

OperationCommand convention
Sync generated image statusesUse the platform-specific standalone example above, including its literal directory prefix.

Write one deck.patch.json when it fits, with this exact envelope:

{"slides":{"slide-01":{"props":{"title":"Page title"}}}}

Run scripts/apply_deck_patch.js deck.json deck.patch.json. Fill only the returned content fields. The program rejects changes to locked visual enums, including page composition, local variant, chart style/type and media-side controls. Never rewrite full deck.json/manifest with file tools, Python, or ad-hoc shell. Use ordered write chunks only after explicit output-length recovery, never guess an accepted chunk index, and restart from durable files after session recovery.

For charts, every included series must contain a real numeric value for every category. Never pad a gap with zero, placeholders, or an invented baseline/forecast.

Keep source names short in source; put conclusions in the proper content field. Do not invent chart values or fill missing numeric cells with zero/placeholders. Use a complete supported subset and preserve isolated facts in another content field; incompatible data shape goes back to the design role. Keep optional copy empty when the user supplied no text. The patch compiler binds ready media; full-slide background is a slide field, never props.background. When the accepted plan includes per-page subject_expression, implement that expression in the corresponding content/media fields. Before finalization, compare each key page with its expression: naming an axis is not a route diagram, and naming materials is not a material-detail visual. Report any expression that could not be implemented; a profile in JSON is not proof of visible subject fit.

Explicit image-rich briefs may activate creative_image_mode; at least one real generated asset must be referenced for an image-complete result. If all required generation fails, deliver structurally usable degraded HTML and accurately report the unmet image requirement. Ordinary factual topics do not imply creative mode.

6. Finalize and deliver

${BOX_AGENT_NODE:-node} scripts/finalize_controlled_deck.js deck.json --out index.html

This is the single normal finalization command. Core schema/design-contract and render failures block. Outline binding drift blocks by default. Only an explicit BOX_AGENT_ALLOW_DEGRADED_OUTLINE_BINDING=1 permits that semantic-only draft. Image, optional inspection and source findings are recorded as advisories. On any nonzero finalization result, read qa/render_quality.json before classifying other advisories. Its ok: false, non-advisory issues and the finalizer's blocking_issues are confirmed visual failures. A local text.status: fit only describes text sizing and does not clear container overflow warnings; package validity and successful image generation also do not clear these failures. Follow the report's next action, not a guessed explanation for the exit status. If finalization returns correction_required: true, confirmed unreadable text or text overflow is a repair request, not a projection disclaimer. Use render_quality.affected_pages and its concrete issues with the existing design_plan.js correct page-bound correction, accept and apply once, then finalize again. Preserve the accepted palette, theme and all unaffected pages. If the correction was already used or the defect persists, retain HTML/PPTX as an explicitly degraded editable draft; do not report the deck as fully completed or mark visual quality passed. Report execution outcome as partial, with the failed visual check non-advisory, and describe the artifact as a degraded draft in the final response. Finalization returns ok: false and a nonzero exit status for these confirmed defects even when it preserved usable files. Missing optional inspection alone never requests this correction. Do not start an unbounded review/repair loop. An actual frozen-palette mismatch is a design-contract failure, not an optional visual review: report the concrete component/property from QA without replacing the accepted colors or patching the compiler. Missing image understanding alone does not block this deterministic color check or ordinary delivery. ok: true does not imply warning-free. Never describe degraded output as clean. A design-plan deck does not require a second semantic reviewer; the report records that post-content model review was not performed. Program QA still runs normally. For a requested PPT/PPTX, add --require-pptx --pptx output.pptx to this command. It exports and checks the current deck before reporting the PPTX path. Without these flags it delivers HTML only. An export failure keeps the HTML, returns a nonzero exit status and reports delivery_status: partial; it is not a completed PPTX delivery, even if a previous .pptx exists.

When the image manifest has a background layout_contract, run scripts/validate_image_layout_contract.js after finalization and preserve its findings with the draft. Keep outline.json, deck.json, assets and reports beside the HTML. The saved HTML's embedded model is authoritative after user editing; the sibling deck.json is not automatically synchronized.

Requested redesign and other routes

For an explicit design change, update the affected outline constraints, prepare new designer input and import the revised child response with design_plan.js accept. With an existing deck of the same page count, run scripts/design_plan.js apply design_plan.json --input design_input.json --deck deck.json, then fill any newly required content and finalize. A failed layout migration returns named content/contract issues; do not trim required facts. The HTML editor remains free to change layouts, local enums, pages and media.

For an existing PPTX/template: copy it, extract text, edit while preserving OOXML, validate the package, and inspect visually only when requested or needed. Read references/ooxml-editing.md. Native PptxGenJS or legacy/custom HTML is an explicit escape route when controlled layouts cannot express the requirement and the user accepts the tradeoff. Read references/pptxgenjs.md or references/html-first.md then. This authorization applies to the requested alternative, not to a failed design acceptance; use the existing HTML delivery procedure above for that case. Do not change route for convenience. Direct PPTX line geometry must use nonnegative width/height.

For optional Archify diagrams, read references/archify-diagrams.md; use its bundled runtime without installation. Its embedded diagram is an image. Keep technical-diagram-v1 for editable nodes/edges in HTML; PPTX receives a scalable SVG picture, not guaranteed native node objects. Statistical data stays in the editable chart workflow. Read references/html-editable.md for export internals.

Theme preview intent (before deck authoring)

“先看看主题 / theme options” is theme discovery, before writing outline.json or scaffolding. Run scripts/render_theme_gallery.js --out theme-previews/index.html, show the real compiled previews, and wait for the chosen registered theme. This opt-in discovery must not slow the default path. Composition comparison intent uses scripts/render_composition_gallery.js --out composition-previews/index.html; it displays existing internal presets without requiring main-agent family choices. html-templates is optional richer design reference, not a hard dependency.

Research and image evidence boundaries

For a factual public deck without supplied evidence (people, organizations, events, products, data), research happens before outline.json, never after: load research-synthesis when available; when it is unavailable or hidden in this session (fast mode), call the search tools yourself — open with general queries without site:, then web_extract the specific pages you will cite. Writing outline.json for such a deck before any search or page read is a process error. Only write source_mode=public_authoritative_research when the outline's facts come from sources you actually opened in this task, and put the exact page URL (not a homepage or a bare site name) plus the exact figure or date into that slide's evidence: every number or date in a slide's title, message or bullets must appear literally in that same slide's evidence text (e.g. 2013年加盟巴塞罗那 | FC Barcelona | https://…), one fact per item. If nothing was searched, do not claim that mode: use only supplied facts, omit optional claims and disclose required gaps. If prepare answers repair_required: true, design has not started and the outline must be fixed now: work through every checklist item in one rewrite of outline.json — copy the exact figure/date from a page you already opened into that slide's evidence next to its URL; otherwise run at most two targeted searches for it; otherwise reword the line without the number (or use 暂无可验证公开数据). Then re-run the same prepare command. Anything left unfixed is cut from the slides before design, leaving them short or empty, so do not re-run prepare without editing. If a later prepare reports auto_degraded or unverified_claims, name those items in the final reply. prepare records research_status; if it is handoff_unverified, do not claim verified research or hide this limitation. Use only supported facts, omit optional claims or disclose required gaps, and continue production without treating research gaps as a rendering failure.

Image understanding is optional. If inspect_images cannot view the image or reports no multimodal capability, record visual identity/quality as unverified and continue immediately. Do not retry it, switch models, change user settings, or block design, media binding, rendering or export. Actual file existence, decode and geometry checks remain program checks, independent of model vision.

Export and runtime

HTML-only generation needs no export-host preflight. Normal PPTX delivery uses the finalization command above. For an existing or degraded HTML draft, run scripts/check_html_export_env.js, then scripts/html_to_editable_pptx.js <primary_artifact> output.pptx; verify the created file with scripts/validate_pptx_package.py output.pptx. Do not ask the user to request PPTX again, or restart authoring to export a usable draft. Read references/runtime-office-raccoon.md, references/dependency-policy.md, and references/shell-safety.md when needed. Use managed BOX_AGENT_NODE, BOX_AGENT_PYTHON, BOX_AGENT_NPM executables and managed package resolution, not bare require.resolve probes or system installs. A blocked export does not suppress an existing editable HTML deliverable.

The controlled canvas remains exactly 1920px × 1080px. Do not pass --width/--height; nonstandard exports require matching explicit --canvas WxH on the relevant tools. Every created/modified PPTX needs package validation, text extraction, placeholder scan, and page count/order checks. Missing optional render dependencies do not block HTML. For maintenance, use references/presentation-system.md and the all-theme/all-layout matrix; it is not a routine authoring stage.

4.2 Visual inspection is optional

Rendered visual inspection (scripts/render_pptx.py + reading the resulting images) is opt-in, not a required gate.

Model-based image inspection is also optional. If inspect_images is absent, the selected model does not support images, the request fails/times out, or its answer says it cannot see/read the image (including “Access Denied”), record visual inspection as unverified and continue to deliver the usable HTML. A tool-level success: true does not turn an “unable to read” answer into a completed visual review. Do not retry the same inspection, switch models, ask the user to configure a vision model, or repair the environment just to satisfy this optional check. Deterministic HTML/layout checks remain independent of model vision. Missing visual inspection alone never blocks the workflow or marks an otherwise usable deck incomplete. Follow an explicit user request to retry or use a particular vision model separately. If preparing the screenshot inputs fails, skip the model-based inspection at that point too. Do not cycle through capture methods or export a PPTX merely to obtain pictures for checking an HTML-only delivery.

Default behavior: skip rendered visual inspection. The controlled HTML QA reports above are sufficient for an HTML-only delivery; PPTX structural QA is sufficient for an exported .pptx. Do not call render_pptx.py for visual judgment on every deck.

Trigger visual inspection only when:

  1. The user explicitly asks to see / review / render the deck.
  2. A blocker-class issue is already suspected from structural QA (e.g. text-extract shows truncated content) and visual confirmation is needed to locate the failure.

When visual inspection runs:

  1. One pass only. Classify findings per §4.1.
  2. Fix blockers, accept cosmetics, report.
  3. Do not re-render after the fix to verify cosmetics. Re-render only if the fix targeted a blocker.
  4. Do not trigger a second visual pass to "double-check" your own judgment.

Rendering for the user's own preview (so they can open the PNGs) is fine and does not count as visual QA — just generate the images, do not narrate findings or self-critique.

4.3 Optional whole-deck overview

At final delivery, prefer one contact sheet showing every slide in order, if current screenshots and the local renderer are available. This is a user preview, not an additional visual QA gate. Never block delivery on this preview. Use a four-column thumbnail grid in reading order (left to right, then top to bottom): 12 slides form 4 columns by 3 rows. Fewer than four slides use one row; an incomplete last row is fine. This is only a quick look at the overall style and composition, not a detailed slide review.

Reuse screenshots from the final HTML export when available; identify them as HTML previews, not screenshots of the exported PowerPoint. Otherwise use an available browser to capture the final HTML slides, or an already usable PPTX renderer (scripts/render_pptx.py <deck.pptx> --out qa/overview-slides --format png). For browser capture, screenshot each slide element separately, preserving its aspect ratio and excluding editor toolbars, navigation, and surrounding page chrome. Do not use a full-page scrolling screenshot or a single tall strip of the entire deck as the overview. Do not change the actual deck layout to make the contact sheet. Do not install dependencies just for this optional preview. If capture is unavailable or fails, skip it without retries or asking the user to fix their machine. Missing preview alone does not make the deck incomplete.

Use only current full-slide PNGs in a dedicated directory; check that their count and numeric order match the final deck. Never use generated asset images, stale screenshots, or a single Quick Look thumbnail as an all-slide overview. If any slide is missing, omit the overview. Combine a complete set with:

${BOX_AGENT_NODE:-node} scripts/make_contact_sheet.js qa/overview-slides --out qa/deck-overview.png --cols 4 --thumb-width 480

If stitching fails or the dependency is missing, skip the preview. The helper's vision-review prompt/status belongs to opt-in visual QA; it does not require a reviewer or prevent delivery of this user preview. Embed only the successfully created contact sheet once, before the generation-details section. Do not embed individual slide screenshots by default.

6. Final Response Format

The normal user-facing response must be concise and use the active user-visible response language. An explicit user language request wins; otherwise follow the host ui_language instruction when present, then the language of the user's task. Never override that contract with a locale-specific default, and do not mix headings from one language with body text from another.

Treat generated or acquired slide illustrations, diagrams, backgrounds, and individual screenshots as intermediate assets. Do not embed them in progress messages or the final reply, or list them as standalone deliverables, unless the user explicitly requests the individual images. Keep their local files and manifest references for deck rendering and editing. For PPT assets call generate_image with publish_artifact: false; this suppresses artifact publication without suppressing generation or insertion. For a requested individual-image deliverable, call publish_artifact(path) on the validated image after generation.

The preparation script declares the presentation directory as an intermediate workspace. Only explicitly registered deliveries appear in chat. Finalization and PPTX export register their finished outputs automatically. For the final whole-deck overview, pass --publish-artifact to make_contact_sheet.js; omit it for internal review sheets. Keep user-requested standalone images explicit.

Present information in this priority order:

  1. Start with one plain-language completion sentence using the matching localized completion, editable-draft, or incomplete status below.
  2. Name only the primary user deliverable: the editable presentation, requested PowerPoint export, or requested PDF export. Do not enumerate reproducibility or workflow files.
  3. Add the localized usage-note label only when a finding changes how the user should preview, edit, download, or publicly use the result. Explain the concrete impact and recommended action; omit purely diagnostic findings.
  4. End with concrete next steps in the active response language, for example previewing, downloading, continuing edits, or updating after adding sources.
  5. Add a compact block using the matching localized generation-details heading; the host moves this section into its collapsed details area before the existing generated-files module. Retain QA totals and relevant technical artifacts. Translate fixed status concepts into the matching localized QA labels. Keep artifact names and directories such as deck.patch.json, qa/, and research/ literal so the result remains traceable.

Use these stable labels for the host-supported locales. If the user explicitly requests another language, translate the same semantic roles consistently:

Rolezhenja
Complete演示文稿已完成Presentation completeプレゼンテーションが完成しました
Editable draft已生成可编辑草稿Editable draft ready編集可能な下書きができました
Incomplete演示文稿尚未完成Presentation not completeプレゼンテーションは未完成です
Usage note使用前注意Before useご利用前の注意
Generation details heading## 生成详情## Generation details## 生成の詳細
QA passed label质量检查Quality checks品質チェック
QA notice label检查提示Check notices確認事項

Never print raw status key names such as qa_ok or qa_warnings, internal research delivery-mode ids such as framework or partial, validator names, or commands. Their values may be retained only under clear localized labels. Technical filenames and report directories remain literal under the localized generation-details heading. Do not turn a diagnostic count into a user warning: explain it under the localized usage-note section only when it changes how the user should use the result.

Translate internal outcomes into user impact:

  • Image-generation success means the file exists, not that it is inserted. Finalization binds ready manifest assets to missing/placeholder slots in the same invocation, preserving already chosen media. Use the final image report to describe insertion; an unreferenced image remains missing from the deck. Report affected pages in an editable draft without another review or retry.
  • Local contrast warnings likewise mean a readable-display problem remains: deliver the editable draft, name the affected pages from the existing report, and do not label the color check as clean or start another review round.
  • When the editable HTML is current and core checks pass, say it can be previewed and edited normally.
  • When source or private-fact advisories exist, make clear that they do not prevent preview/editing and state whether public sharing needs source review.
  • When a usable HTML draft exists but a presentation issue may affect display, use the localized editable-draft status and name the affected use, not the validator.
  • When HTML is usable but a requested PPTX/PDF export is unavailable, deliver the presentation and say only that the requested format has not been exported.
  • When no trustworthy HTML exists, do not claim completion.

Format-specific QA is explicit: HTML delivery treats chart recoverability and dom-to-pptx compatibility findings as advisories; a requested native PPTX run must invoke finalize_controlled_deck.js ... --require-pptx, which promotes those findings to blocking export checks and creates the PPTX while preserving the HTML artifact. For degraded HTML, use the existing-HTML export route above.

If a blocking structural, HTML, runtime, explicitly required image, or export step is blocked, explain the user-visible consequence in the active response language. Never treat a source/URL/private-fact advisory as a blocked presentation.

Skills guardadas