diff --git a/plugins/google-drive/.codex-plugin/plugin.json b/plugins/google-drive/.codex-plugin/plugin.json index ff878d89..49b546ec 100644 --- a/plugins/google-drive/.codex-plugin/plugin.json +++ b/plugins/google-drive/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "google-drive", - "version": "0.1.6", + "version": "0.1.7", "description": "Use Google Drive as the single entrypoint for Drive, Docs, Sheets, and Slides work.", "author": { "name": "OpenAI", diff --git a/plugins/google-drive/skills/google-drive/SKILL.md b/plugins/google-drive/skills/google-drive/SKILL.md index 0783de8e..e2f39bea 100644 --- a/plugins/google-drive/skills/google-drive/SKILL.md +++ b/plugins/google-drive/skills/google-drive/SKILL.md @@ -35,11 +35,11 @@ Start with Google Drive for file discovery and file lifecycle tasks, then route - Deck -> Slides skill - If the user wants to find a file and then edit it, do both in one flow: Drive for discovery, then the file-type skill for the edit. - If the user wants a Google Workspace outcome but has not named a file type yet, start with Drive discovery instead of asking them to choose among separate Google plugins. -- If the user asks to create a new Google Doc, route to the Docs skill; it owns the mandatory local `.docx` -> native Google Docs import workflow and the explicit-user-override boundary. Do not create a blank Google Doc directly from this router. +- If the user asks to create a new Google Doc, route to the Docs skill. The Docs skill chooses connector-native creation for blank/basic docs and local `.docx` import only for polished or layout-sensitive deliverables. - If the user asks to import a local `.docx` into Google Docs, route to the Docs skill and use its native conversion workflow. Preserve the source file type only when the user explicitly asks for that. - If the user asks to create a new Google Sheet, route to the Sheets skill. The Sheets skill should prefer the `[@spreadsheets](plugin://spreadsheets@openai-primary-runtime)` plugin or `$Excel` skill to create a local `.xlsx`, then import it as native Google Sheets. - If the user asks to import a local `.xlsx`, `.xls`, `.ods`, `.csv`, or `.tsv` into Google Sheets, route to the Sheets skill and use native Google Sheets conversion by default. Preserve the source file type only when the user explicitly asks for that. -- If the user asks to create a new Google Slides deck, route to the Slides skill; it owns the mandatory local `.pptx` -> native Google Slides import workflow and the explicit-user-override boundary. Do not create a blank Google Slides deck directly from this router. +- If the user asks to create a new Google Slides deck, route to the Slides skill. The Slides skill chooses native template copy, direct native creation with `_create_file` plus `_batch_update_presentation`, or local `.pptx` import based on the source material and available connector actions. - If the user asks to import a local `.ppt`, `.pptx`, or `.odp` into Google Slides, route to the Slides skill and use its native conversion workflow. Preserve the source file type only when the user explicitly asks for that. - If the user asks to export or download an existing Drive file, choose the action from metadata: native Google Docs, Sheets, and Slides files use `export_file`; non-native PDFs, images, ZIPs, CSVs, Office files, audio, and video use `fetch`, with `download_raw_file=True` for raw-file workflows. diff --git a/plugins/google-drive/skills/google-slides/SKILL.md b/plugins/google-drive/skills/google-slides/SKILL.md index ab32d14d..dfb0d71d 100644 --- a/plugins/google-drive/skills/google-slides/SKILL.md +++ b/plugins/google-drive/skills/google-slides/SKILL.md @@ -33,17 +33,19 @@ The active/main agent must personally read this file and every relevant referenc Unless the user asks otherwise: 1. New deck from a provided native Google Slides template or reference deck: copy the provided deck directly in Google Drive, then use Slides `batchUpdate` on the copy. Read `references/reference-template-reference-deck-copy-workflow.md`. -2. Net-new Google Slides deck without a provided native Slides template or reference deck: use `[@presentations](plugin://presentations@openai-primary-runtime)` to create a local `.pptx` first. Then read `references/reference-import-presentation.md` and import with `mcp__codex_apps__google_drive_import_presentation` using `upload_mode: "native_google_slides"`. -3. If the Presentations plugin is unavailable for a net-new deck that does not use the native Slides copy workflow, do not create the deck directly. Report that the required local Presentations authoring path is unavailable. +2. Net-new generated Google Slides deck without a provided native Slides template or reference deck: read `references/reference-new-deck-and-final-pass.md`, create a native presentation with `_create_file`, then populate it with `_batch_update_presentation`. +3. Use `[@presentations](plugin://presentations@openai-primary-runtime)` plus `references/reference-import-presentation.md` only when the user provided a local `.ppt`, `.pptx`, or `.odp`, explicitly requested PowerPoint-first authoring/import, or the direct native creation actions are unavailable while `import_presentation` is available. 4. Existing Google Slides reads, summaries, edits, comments, and template-preserving modifications: use Google Slides connector or app tools directly. -For net-new Google Slides without a provided native Slides template or reference deck, the PPTX-import path is the only currently supported high-quality workflow. Do not create a blank Google Slides deck and fill it with Google Slides write APIs, use Computer Use, use Browser Use, or build the deck directly in Google Drive unless the user explicitly asks for that alternate workflow. If they do, mention first that output quality is expected to be best when a local `.pptx` is imported through the Google Drive plugin. +For generated net-new Google Slides decks, do not force local `.pptx` import when native create and batch update actions are available. The direct native path avoids conversion fragility and keeps the work in connector-visible Google Slides objects. Do not use Computer Use or Browser Use as the Slides editing path. For new decks from a provided native Google Slides template or reference deck, do not create a local `.pptx` first. Copy the provided deck directly, treat the copy as the destination deck, and create/edit slides there with `batchUpdate` using duplicated exemplar slides or layouts from the copied deck. Populate existing template objects first: replace text, images, charts, tables, and placeholder content in the copied slide's existing slots instead of adding new primary content boxes. The slide-planning, archetype-selection, hierarchy, semantic-emphasis, evidence-legibility, and deck-consistency rules apply across both creation paths and to slides added to existing decks. Only source-parity requirements such as exact text preservation, speaker-note parity, and media-ID parity depend on a source-based adaptation or migration request. -The import reference owns the exact connector action, plugin install/reinstall handling, native-conversion verification, post-import verification, and cleanup expectations. Read it before any net-new Google Slides import attempt. +The import reference owns the exact connector action, plugin install/reinstall handling, native-conversion verification, post-import verification, and cleanup expectations for local presentation-file conversion. Read it before any Google Slides import attempt, but do not use it as the default for generated decks. + +If an import attempt returns no usable presentation id or URL, reports that the action is blocked, or is unavailable after discovery, do not repeatedly rediscover or retry the same import action. For generated deck tasks, switch to direct native creation when `_create_file` and `_batch_update_presentation` are available. For user-provided local-file conversion tasks, stop and report that native conversion is unavailable in the current connector runtime. For imports and any explicit direct-create override, wait for the write action to complete, then perform connector readback or Drive metadata readback before returning a Google Slides URL or presentation id. Use only a URL or id observed from the completed connector result or readback. Do not synthesize or predict Google Slides URLs, and do not present a URL as ready if readback fails. @@ -53,7 +55,7 @@ Inserted or edited content must match the target deck's existing structure and c Treat wrong target deck, wrong slide, stale object IDs, missing chart updates, leftover placeholder or template sample text, empty or unresolved placeholder objects, primary content placed in newly created freeform boxes while an inherited or template slot remains unused, clipped text, broken slide order, or unverified visible layout changes as failed output that must be corrected before handoff. For Slides batch updates, API success is not completion. A fresh post-write LARGE thumbnail and examining the image by curling it is required for every touched slide. You MUST curl the image after requesting thumbnail. No skip. -For net-new Google Slides without a provided native Slides template or reference deck, create a local `.pptx` with `[@presentations](plugin://presentations@openai-primary-runtime)` and import it to Google Drive with `upload_mode: "native_google_slides"`. +For net-new Google Slides without a provided native Slides template or reference deck, create the deck directly in Google Slides when native create and batch update actions are available. Stage a local `.pptx` only for the import workflow described above. ## Canonical Workflow Bias @@ -131,7 +133,7 @@ The active/main agent must perform this reading itself. Do not assign these file 7. If the task spans multiple categories, read all matching files. 8. If uncertain, read every file in `references/`. -For net-new local `.pptx` creation, read the `[@presentations](plugin://presentations@openai-primary-runtime)` authoring skill before creating the deck. +For net-new local `.pptx` creation in an import workflow, read the `[@presentations](plugin://presentations@openai-primary-runtime)` authoring skill before creating the deck. Do not execute content edits until the required references are read in the current turn. diff --git a/plugins/google-drive/skills/google-slides/references/reference-import-presentation.md b/plugins/google-drive/skills/google-slides/references/reference-import-presentation.md index 822edf7c..5d6b5855 100644 --- a/plugins/google-drive/skills/google-slides/references/reference-import-presentation.md +++ b/plugins/google-drive/skills/google-slides/references/reference-import-presentation.md @@ -5,7 +5,7 @@ When to read: local `.ppt`, `.pptx`, or `.odp` input. ## Workflow 1. Confirm the input file is a supported presentation file. -2. Before import, confirm the Google Drive plugin exposes `mcp__codex_apps__google_drive_import_presentation`. If the Google Drive plugin is not installed or unavailable, use the plugin-install/user-elicitation flow to ask the user to install `google-drive@openai-curated`. If the plugin is available but the import action is missing, ask the user to reinstall or refresh the Google Drive plugin. +2. Before import, confirm the Google Drive plugin exposes `mcp__codex_apps__google_drive_import_presentation`. If the Google Drive plugin is not installed or unavailable, use the plugin-install/user-elicitation flow to ask the user to install `google-drive@openai-curated`. If the plugin is available but the import action is missing, stop file-conversion work and report that native presentation import is unavailable in this runtime. For generated net-new deck tasks, return to the main Google Slides routing and use direct native creation when `_create_file` and `_batch_update_presentation` are available. 3. Use `mcp__codex_apps__google_drive_import_presentation` with `upload_mode: "native_google_slides"` to create a native Google Slides deck: ```json { @@ -21,12 +21,15 @@ When to read: local `.ppt`, `.pptx`, or `.odp` input. 8. Run thumbnail verification for the imported deck before follow-on edits. 9. Continue in this skill with the relevant references for summaries, slide planning, content edits, visual cleanup, template following, source adaptation, or structural repair. +If the import action returns a redacted or safety-blocked result without a usable presentation id or URL, do not keep retrying the same import path. For generated deck tasks, switch to direct native creation if supported. For user-provided presentation-file conversion, stop and report that native conversion did not complete. + ## Rules - Treat import as conversion into a new native Google Slides deck. - Preserve source slide order and content by default. - Do not use generic `_upload_file` for "upload as Google Slides"; it preserves `.pptx` instead of converting to native Slides. -- Do not substitute Computer Use, Browser Use, blank-Google-Slides creation followed by Google Slides write APIs, or another direct-to-Slides construction path for net-new Google Slides unless the user explicitly asks for that alternate workflow. If they do, mention first that output quality is expected to be best with this local `.pptx` import path. +- Use this reference for local presentation-file conversion or explicit PowerPoint-first import requests. For generated net-new decks, do not force a `.pptx` import when native `_create_file` and `_batch_update_presentation` actions are available. +- Do not substitute Computer Use or Browser Use for native import. - Do not promise perfect fidelity for Office-specific animations, transitions, SmartArt, or effects. - If import introduces layout drift, fix the native Google Slides deck rather than editing the source file. diff --git a/plugins/google-drive/skills/google-slides/references/reference-new-deck-and-final-pass.md b/plugins/google-drive/skills/google-slides/references/reference-new-deck-and-final-pass.md index 1d636953..f8436dfb 100644 --- a/plugins/google-drive/skills/google-slides/references/reference-new-deck-and-final-pass.md +++ b/plugins/google-drive/skills/google-slides/references/reference-new-deck-and-final-pass.md @@ -6,6 +6,17 @@ When to read: any presentation creation workflow and final handoff after a write Use every available relevant source before creating or finalizing the deck: web, MCP/connectors, local files, metadata, thumbnails, previews, and the referenced materials themselves. There is no time constraint; be thorough. +## Creation Route + +Use the source material to choose the creation path before designing slide content: + +1. Provided native Google Slides template or reference deck: copy the deck in Google Drive and edit the copy. +2. Provided local `.ppt`, `.pptx`, or `.odp`: use `reference-import-presentation.md` to convert it into native Google Slides. +3. Generated net-new deck with no native template or local presentation file: create a native Google Slides file with `_create_file` using `mime_type: "application/vnd.google-apps.presentation"`, then populate it with `_batch_update_presentation`. +4. Use a local `.pptx` plus import for a generated deck only when the user explicitly requested PowerPoint-first authoring/import, or native create/batch update actions are unavailable while import is available. + +Do not repeatedly retry `import_presentation` for generated decks after a blocked, missing, or redacted import result. Switch to the direct native path when `_create_file` and `_batch_update_presentation` are available. + ## New Deck Defaults 1. Do not ask for styling unless the request depends on a brand, template, or aesthetic.