← Google DriveCONTENT HISTORY

Update to Google Drive

Snapshot Oct 24, 2026 · 12:46 UTC · version 0.1.22

Collection source: downloaded plugin package.

WHAT CHANGED

Instructions updated for google-docs

Skill instructions — Now says: ## Writing style Write for the document’s intended audience and purpose. Default to using natural, concise, and clear writing. Do not describe your search or...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Google Drive and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Oct 10, 2026 · 06:02 UTC

### Formatting and native features For new documents, use Google Docs’ supplied named styles, fonts, spacing, and margins unless the user requests a different design. Use `TITLE` for a visible title, `HEADING_1` for main sections, and `H...

After

Oct 24, 2026 · 12:46 UTC

## Writing style Write for the document’s intended audience and purpose. Default to using natural, concise, and clear writing. Do not describe your search or review process, report how many items you reviewed, or list evaluation criteria...

Supporting files

Before

Oct 10, 2026 · 06:02 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":337},{"relative_path":"assets/google-docs-small.svg","size_in_bytes":2135},{"relative_path":"assets/google-docs.png","size_in_bytes":65371},{"relative_path":"host/docs-dropdown-execu...

After

Oct 24, 2026 · 12:46 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":337},{"relative_path":"assets/google-docs-small.svg","size_in_bytes":2135},{"relative_path":"assets/google-docs.png","size_in_bytes":65371},{"relative_path":"host/docs-dropdown-execu...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -16,6 +16,12 @@
 
 Place new documents and template copies in `ChatGPT` at My Drive root unless the user specifies another location. Edit existing documents in place.
 
+## Writing style
+
+Write for the document’s intended audience and purpose. Default to using natural, concise, and clear writing. Do not describe your search or review process, report how many items you reviewed, or list evaluation criteria unless the user explicitly asks for those details or if they are necessary to avoid a misleading answer.
+
+When revising, preserve the author’s voice. For formatting-only requests, keep the original wording exactly.
+
 ## Edit without losing structure
 
 `batch_update_document` applies direct edits, not tracked suggestions.
@@ -26,17 +32,37 @@
 4. Use `write_control.requiredRevisionId` for edits that should fail on concurrent changes. Use a returned revision for the next guarded batch when available. Read again only when a later edit needs positions or native IDs you cannot reliably derive, a revision conflict occurs, or a write outcome is uncertain; reconcile that outcome before retrying. Do not read after every tool call.
 5. After the planned edits, read back the changed area once to verify content, location, native element types, and preservation of nearby structure. Use PDF rendering when page fit or image placement matters; connector metadata alone cannot prove rendered layout. Export and inspect the relevant PDF pages for that check; HTML and thumbnails do not prove page fit.
 
-### Formatting and native features
+## Formatting
+
+For new documents, start with Google Docs’ supplied named styles, fonts, and margins. Unless the user or style guide specifies otherwise, use these defaults.
+
+- Choose heading levels by document structure. Reserve `SUBTITLE` for an optional line beneath the document title, and use `HEADING_2` for subsections within a `HEADING_1` section.
+- Apply the named paragraph style first to preserve the document outline and navigation. Then set only the font size, using 22 pt for `TITLE`, 13 pt for `SUBTITLE`, 18 pt for `HEADING_1`, and 16 pt for `HEADING_2`.
+- Separate body paragraphs with a single paragraph break and set `paragraphStyle.spaceBelow` to 6 pt. Preserve the spacing of headings, lists, tables, and code.
+
+For an existing document or template, preserve its typography and match nearby headings.
+
+Use named paragraph styles for headings. Set `namedStyleType` first, then change only the font size of the title, subtitle, or heading text, excluding its final newline. Preserve the heading’s text color and weight unless the user or style guide explicitly specifies otherwise. In `updateTextStyle`, send only `textStyle.fontSize` with `fields: "fontSize"`. Leave `foregroundColor`, `bold`, and `weightedFontFamily` unset so the named style or template continues to control them. Changing a paragraph to `NORMAL_TEXT` may leave explicit character formatting intact; reset unintended inherited styling on inserted body text to match its intended body style.
+
+Use bold for a short label, key question, or decision readers need to find quickly. Use italics for light emphasis or a brief aside. Style just the words that need emphasis, leaving the surrounding explanation in regular text.
+
+Consolidate genuinely comparable repeated records into a readable native table.
+
+Format exact code literals and identifiers in monospace, preserving any existing link.
+
+## Bulleted and numbered lists
 
-For new documents, use Google Docs’ supplied named styles, fonts, spacing, and margins unless the user requests a different design. Use `TITLE` for a visible title, `HEADING_1` for main sections, and `HEADING_2` for subsections; keep peer sections at the same level. For existing documents and template copies, preserve their formatting and match nearby peers when adding content.
+- **Use bullets when order doesn’t matter.** Good examples are open questions, risks to discuss, or materials to bring.
+- **Use numbers when order or reference matters.** Number the steps in a procedure, criteria a reviewer will score, or findings that correspond to numbered questions in the source.
 
-Use named paragraph styles for headings and native list requests for lists. Set only `namedStyleType` for a heading unless the user requests overrides or a sampled peer requires them. Changing a paragraph to `NORMAL_TEXT` may leave explicit character formatting intact; reset unintended inherited styling on inserted body text to match its intended body style.
+Use native Google Docs lists so numbering updates when items move. If each item introduces a section rather than a list entry, preserve the document’s heading hierarchy.
 
-Smart chips are optional unless requested or needed to match an existing field. Preserve chips, links, and controls outside the edit scope rather than converting them globally.
+## Smart chips and dropdowns
 
-### Dropdowns
+- **Smart chips identify a specific person, date, or Google resource.** Use one when requested, when matching a template, or when it makes a working field more useful: a person chip for an owner, a date chip for a deadline, or a file chip for a source document. Use a verified email, date, or supported URL. In ordinary prose, plain text or a descriptive link is usually clearer.
+- **Dropdowns let an editor choose from a defined set of values.** Use one for a field people will maintain, such as review status with “Draft,” “In review,” and “Approved.” To update one entry, change its selection. Edit the shared option list only when the user wants the choices themselves changed.
 
-Preserve dropdowns when editing nearby content. To create or update them, pass dropdown request objects to the connector's `batch_update_document` tool; see the [dropdown example and readback checks](references/reference-smart-chips-and-building-blocks.md#dropdowns).
+Preserve existing chips, dropdowns, and links outside the edit. Use the [native requests and readback checks](references/reference-smart-chips-and-building-blocks.md) to verify the chip’s value or the dropdown’s selected option.
 
 ## References: read as needed
 
Full technical diff · 2 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 337
  },
  {
    "relative_path": "assets/google-docs-small.svg",
    "size_in_bytes": 2135
  },
  {
    "relative_path": "assets/google-docs.png",
    "size_in_bytes": 65371
  },
  {
    "relative_path": "host/docs-dropdown-executor.mjs",
    "size_in_bytes": 33451
  },
  {
    "relative_path": "host/docs-dropdown-file-bridge.mjs",
    "size_in_bytes": 9402
  },
  {
    "relative_path": "host/docs-stdin-receiver.pl",
    "size_in_bytes": 3091
  },
  {
    "relative_path": "host/docs-trusted-read-file-bridge.mjs",
    "size_in_bytes": 23014
  },
  {
    "relative_path": "host/docs-trusted-read-wrapper.mjs",
    "size_in_bytes": 16458
  },
  {
    "relative_path": "references/reference-direct-request-composition.md",
    "size_in_bytes": 10992
  },
  {
    "relative_path": "references/reference-meeting-notes-direct.md",
    "size_in_bytes": 5187
  },
  {
    "relative_path": "references/reference-smart-chips-and-building-blocks.md",
    "size_in_bytes": 6575
  },
  {
    "relative_path": "references/reference-trusted-read-wrapper.md",
    "size_in_bytes": 4901
  },
  {
    "relative_path": "runtime/docs-read-normalizer.mjs",
    "size_in_bytes": 10783
  },
  {
    "relative_path": "runtime/dropdown-common.mjs",
    "size_in_bytes": 3337
  },
  {
    "relative_path": "runtime/dropdown-contract.mjs",
    "size_in_bytes": 4008
  },
  {
    "relative_path": "runtime/dropdown-inventory.mjs",
    "size_in_bytes": 10565
  },
  {
    "relative_path": "runtime/dropdown-plan.mjs",
    "size_in_bytes": 14701
  },
  {
    "relative_path": "runtime/dropdown-routing.mjs",
    "size_in_bytes": 2037
  },
  {
    "relative_path": "scripts/build_docs_dropdown_inventory.mjs",
    "size_in_bytes": 805
  },
  {
    "relative_path": "scripts/canonicalize_google_workspace_url.mjs",
    "size_in_bytes": 3055
  },
  {
    "relative_path": "scripts/create_docs_dropdown_execution_context.mjs",
    "size_in_bytes": 740
  },
  {
    "relative_path": "scripts/freeze_docs_dropdown_contract.mjs",
    "size_in_bytes": 653
  },
  {
    "relative_path": "scripts/validate_docs_dropdown_plan.mjs",
    "size_in_bytes": 1152
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 337
  },
  {
    "relative_path": "assets/google-docs-small.svg",
    "size_in_bytes": 2135
  },
  {
    "relative_path": "assets/google-docs.png",
    "size_in_bytes": 65371
  },
  {
    "relative_path": "host/docs-dropdown-executor.mjs",
    "size_in_bytes": 33451
  },
  {
    "relative_path": "host/docs-dropdown-file-bridge.mjs",
    "size_in_bytes": 9402
  },
  {
    "relative_path": "host/docs-stdin-receiver.pl",
    "size_in_bytes": 3091
  },
  {
    "relative_path": "host/docs-trusted-read-file-bridge.mjs",
    "size_in_bytes": 23014
  },
  {
    "relative_path": "host/docs-trusted-read-wrapper.mjs",
    "size_in_bytes": 16458
  },
  {
    "relative_path": "references/reference-direct-request-composition.md",
    "size_in_bytes": 11609
  },
  {
    "relative_path": "references/reference-meeting-notes-direct.md",
    "size_in_bytes": 5187
  },
  {
    "relative_path": "references/reference-smart-chips-and-building-blocks.md",
    "size_in_bytes": 6860
  },
  {
    "relative_path": "references/reference-trusted-read-wrapper.md",
    "size_in_bytes": 4901
  },
  {
    "relative_path": "runtime/docs-read-normalizer.mjs",
    "size_in_bytes": 10783
  },
  {
    "relative_path": "runtime/dropdown-common.mjs",
    "size_in_bytes": 3337
  },
  {
    "relative_path": "runtime/dropdown-contract.mjs",
    "size_in_bytes": 4008
  },
  {
    "relative_path": "runtime/dropdown-inventory.mjs",
    "size_in_bytes": 10565
  },
  {
    "relative_path": "runtime/dropdown-plan.mjs",
    "size_in_bytes": 14701
  },
  {
    "relative_path": "runtime/dropdown-routing.mjs",
    "size_in_bytes": 2037
  },
  {
    "relative_path": "scripts/build_docs_dropdown_inventory.mjs",
    "size_in_bytes": 805
  },
  {
    "relative_path": "scripts/canonicalize_google_workspace_url.mjs",
    "size_in_bytes": 3055
  },
  {
    "relative_path": "scripts/create_docs_dropdown_execution_context.mjs",
    "size_in_bytes": 740
  },
  {
    "relative_path": "scripts/freeze_docs_dropdown_contract.mjs",
    "size_in_bytes": 653
  },
  {
    "relative_path": "scripts/validate_docs_dropdown_plan.mjs",
    "size_in_bytes": 1152
  }
]

changed /skill_md_contents

BEFORE
"---\nname: google-docs\ndescription: Create and edit native Google Docs through connected tools.\n---\n\n# Google Docs\n\nCreate and edit native Google Docs through connector tools, which handle authentication. For content edits, `batch_update_document` calls Google’s `documents.batchUpdate` API. Verify connector capabilities before claiming a feature is unsupported.\n\n## Choose the route\n\n- **New document:** create a native Google Doc with the Drive create action and `application/vnd.google-apps.document`.\n- **Edit an existing document:** edit the specified document in place. Read the target and surrounding structure with the Google Docs tools before writing. For large responses or complex native controls, optionally use the [file-backed read helper](references/reference-trusted-read-wrapper.md) to save a searchable outline and control inventory. Do not write through an opaque control range you cannot inspect.\n- **Use a template:** when creating a new document from a template, copy it natively to preserve its formatting and embedded features. When adapting a past document, update task-relevant content across every retained tab; preserving structure does not mean carrying forward old people, dates, links, or approvals. Edit an existing document in place when that is what the user requests.\n- **Convert Word to Google Docs:** only when the user supplies a Word file and asks to convert it. Call `mcp__codex_apps__google_drive_import_document` with `source_file` set to its absolute local path, the desired `title`, and `upload_mode: \"native_google_docs\"`. Preserve the source file. Verify the response identifies a native Google Doc (`application/vnd.google-apps.document`) and supplies its ID or URL, then read it back to check content, headings, lists, tables, and embedded elements against the source. When layout fidelity matters, compare an exported PDF with the source rendering. Repair conversion drift with scoped edits that preserve the source formatting, and report any remaining fidelity loss.\n\nPlace new documents and template copies in `ChatGPT` at My Drive root unless the user specifies another location. Edit existing documents in place.\n\n## Edit without losing structure\n\n`batch_update_document` applies direct edits, not tracked suggestions.\n\n1. Resolve the destination document ID, target `tabId`, and current structure. A URL pointing at one tab does not describe the whole document. Inspect all tabs when copying or editing the whole document; a targeted edit needs only its relevant scope.\n2. Resolve paragraph, table-cell, and native-element ranges from connector readback. Docs indexes are UTF-16 code units, not character counts. Requests in a batch execute sequentially, so earlier inserts and deletions change later indexes.\n3. Batch compatible edits in one `batch_update_document` call, accounting for sequential index shifts. Combine text insertion and its formatting when ranges can be calculated from the inserted text. Make scoped edits. Do not rebuild a document for a small correction or replace a table/control with its visible text. Match nearby peer styles when adding content to an existing structure.\n4. Use `write_control.requiredRevisionId` for edits that should fail on concurrent changes. Use a returned revision for the next guarded batch when available. Read again only when a later edit needs positions or native IDs you cannot reliably derive, a revision conflict occurs, or a write outcome is uncertain; reconcile that outcome before retrying. Do not read after every tool call.\n5. After the planned edits, read back the changed area once to verify content, location, native element types, and preservation of nearby structure. Use PDF rendering when page fit or image placement matters; connector metadata alone cannot prove rendered layout. Export and inspect the relevant PDF pages for that check; HTML and thumbnails do not prove page fit.\n\n### Formatting and native features\n\nFor new documents, use Google Docs’ supplied named styles, fonts, spacing, and margins unless the user requests a different design. Use `TITLE` for a visible title, `HEADING_1` for main sections, and `HEADING_2` for subsections; keep peer sections at the same level. For existing documents and template copies, preserve their formatting and match nearby peers when adding content.\n\nUse named paragraph styles for headings and native list requests for lists. Set only `namedStyleType` for a heading unless the user requests overrides or a sampled peer requires them. Changing a paragraph to `NORMAL_TEXT` may leave explicit character formatting intact; reset unintended inherited styling on inserted body text to match its intended body style.\n\nSmart chips are optional unless requested or needed to match an existing field. Preserve chips, links, and controls outside the edit scope rather than converting them globally.\n\n### Dropdowns\n\nPreserve dropdowns when editing nearby content. To create or update them, pass dropdown request objects to the connector's `batch_update_document` tool; see the [dropdown example and readback checks](references/reference-smart-chips-and-building-blocks.md#dropdowns).\n\n## References: read as needed\n\n| When to read | Reference |\n| --- | --- |\n| Composing requests for text, formatting, lists, tables, hyperlinks, or images | [Connector examples](references/reference-direct-request-composition.md) |\n| Working with smart chips, dropdowns, or existing building blocks | [Smart chips, dropdowns, and building blocks](references/reference-smart-chips-and-building-blocks.md) |\n| Creating Calendar-backed meeting notes using a complete request example | [Meeting-notes example](references/reference-meeting-notes-direct.md) |\n| Using the optional helper to inspect a large or complex document response | [File-backed read helper](references/reference-trusted-read-wrapper.md) |\n\n## Output delivery\n\nThese citation directives are only for the final chat response to the user. Never insert them into the Google Doc. For source references inside the document, use ordinary hyperlinks or the citation style requested by the user.\n\n- **`purpose=\"output\"`:** use for each final Google Doc created or edited for the user. Cite it exactly once, on its own line in its own paragraph, outside prose and list items. Briefly describe the result separately without repeating its filename, path, or link. Do not use output citations for unchanged files or read-only answers.\n- **`purpose=\"source\"`:** use for each document whose contents you summarize or use to support an answer. Place the citation inline where the document is referenced, in place of its filename. Do not write the filename separately and append its citation. Files merely inspected but not used in the answer need no citation.\n- Include only `path` and `purpose` inside each directive. Do not add a description, title, label, `mode`, or other attributes. Any explanatory prose belongs outside the directive.\n- Emit `:codex-file-citation{...}` directly, without backticks, code fences, or a Markdown-link wrapper. Use verified targets only. No need to cite or reference intermediate work.\n\nSet `path` to the verified native Google Docs URL returned by the connector. Citation directives are exempt from “Return web URLs as Markdown links.”\n\nExamples below use placeholders; actual responses use verified URLs and no code fences.\n\n```text\n:codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"output\"}\n```\n\n```text\nThe review of :codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"source\"} is due Friday.\n```\n"
AFTER
"---\nname: google-docs\ndescription: Create and edit native Google Docs through connected tools.\n---\n\n# Google Docs\n\nCreate and edit native Google Docs through connector tools, which handle authentication. For content edits, `batch_update_document` calls Google’s `documents.batchUpdate` API. Verify connector capabilities before claiming a feature is unsupported.\n\n## Choose the route\n\n- **New document:** create a native Google Doc with the Drive create action and `application/vnd.google-apps.document`.\n- **Edit an existing document:** edit the specified document in place. Read the target and surrounding structure with the Google Docs tools before writing. For large responses or complex native controls, optionally use the [file-backed read helper](references/reference-trusted-read-wrapper.md) to save a searchable outline and control inventory. Do not write through an opaque control range you cannot inspect.\n- **Use a template:** when creating a new document from a template, copy it natively to preserve its formatting and embedded features. When adapting a past document, update task-relevant content across every retained tab; preserving structure does not mean carrying forward old people, dates, links, or approvals. Edit an existing document in place when that is what the user requests.\n- **Convert Word to Google Docs:** only when the user supplies a Word file and asks to convert it. Call `mcp__codex_apps__google_drive_import_document` with `source_file` set to its absolute local path, the desired `title`, and `upload_mode: \"native_google_docs\"`. Preserve the source file. Verify the response identifies a native Google Doc (`application/vnd.google-apps.document`) and supplies its ID or URL, then read it back to check content, headings, lists, tables, and embedded elements against the source. When layout fidelity matters, compare an exported PDF with the source rendering. Repair conversion drift with scoped edits that preserve the source formatting, and report any remaining fidelity loss.\n\nPlace new documents and template copies in `ChatGPT` at My Drive root unless the user specifies another location. Edit existing documents in place.\n\n## Writing style\n\nWrite for the document’s intended audience and purpose. Default to using natural, concise, and clear writing. Do not describe your search or review process, report how many items you reviewed, or list evaluation criteria unless the user explicitly asks for those details or if they are necessary to avoid a misleading answer.\n\nWhen revising, preserve the author’s voice. For formatting-only requests, keep the original wording exactly.\n\n## Edit without losing structure\n\n`batch_update_document` applies direct edits, not tracked suggestions.\n\n1. Resolve the destination document ID, target `tabId`, and current structure. A URL pointing at one tab does not describe the whole document. Inspect all tabs when copying or editing the whole document; a targeted edit needs only its relevant scope.\n2. Resolve paragraph, table-cell, and native-element ranges from connector readback. Docs indexes are UTF-16 code units, not character counts. Requests in a batch execute sequentially, so earlier inserts and deletions change later indexes.\n3. Batch compatible edits in one `batch_update_document` call, accounting for sequential index shifts. Combine text insertion and its formatting when ranges can be calculated from the inserted text. Make scoped edits. Do not rebuild a document for a small correction or replace a table/control with its visible text. Match nearby peer styles when adding content to an existing structure.\n4. Use `write_control.requiredRevisionId` for edits that should fail on concurrent changes. Use a returned revision for the next guarded batch when available. Read again only when a later edit needs positions or native IDs you cannot reliably derive, a revision conflict occurs, or a write outcome is uncertain; reconcile that outcome before retrying. Do not read after every tool call.\n5. After the planned edits, read back the changed area once to verify content, location, native element types, and preservation of nearby structure. Use PDF rendering when page fit or image placement matters; connector metadata alone cannot prove rendered layout. Export and inspect the relevant PDF pages for that check; HTML and thumbnails do not prove page fit.\n\n## Formatting\n\nFor new documents, start with Google Docs’ supplied named styles, fonts, and margins. Unless the user or style guide specifies otherwise, use these defaults.\n\n- Choose heading levels by document structure. Reserve `SUBTITLE` for an optional line beneath the document title, and use `HEADING_2` for subsections within a `HEADING_1` section.\n- Apply the named paragraph style first to preserve the document outline and navigation. Then set only the font size, using 22 pt for `TITLE`, 13 pt for `SUBTITLE`, 18 pt for `HEADING_1`, and 16 pt for `HEADING_2`.\n- Separate body paragraphs with a single paragraph break and set `paragraphStyle.spaceBelow` to 6 pt. Preserve the spacing of headings, lists, tables, and code.\n\nFor an existing document or template, preserve its typography and match nearby headings.\n\nUse named paragraph styles for headings. Set `namedStyleType` first, then change only the font size of the title, subtitle, or heading text, excluding its final newline. Preserve the heading’s text color and weight unless the user or style guide explicitly specifies otherwise. In `updateTextStyle`, send only `textStyle.fontSize` with `fields: \"fontSize\"`. Leave `foregroundColor`, `bold`, and `weightedFontFamily` unset so the named style or template continues to control them. Changing a paragraph to `NORMAL_TEXT` may leave explicit character formatting intact; reset unintended inherited styling on inserted body text to match its intended body style.\n\nUse bold for a short label, key question, or decision readers need to find quickly. Use italics for light emphasis or a brief aside. Style just the words that need emphasis, leaving the surrounding explanation in regular text.\n\nConsolidate genuinely comparable repeated records into a readable native table.\n\nFormat exact code literals and identifiers in monospace, preserving any existing link.\n\n## Bulleted and numbered lists\n\n- **Use bullets when order doesn’t matter.** Good examples are open questions, risks to discuss, or materials to bring.\n- **Use numbers when order or reference matters.** Number the steps in a procedure, criteria a reviewer will score, or findings that correspond to numbered questions in the source.\n\nUse native Google Docs lists so numbering updates when items move. If each item introduces a section rather than a list entry, preserve the document’s heading hierarchy.\n\n## Smart chips and dropdowns\n\n- **Smart chips identify a specific person, date, or Google resource.** Use one when requested, when matching a template, or when it makes a working field more useful: a person chip for an owner, a date chip for a deadline, or a file chip for a source document. Use a verified email, date, or supported URL. In ordinary prose, plain text or a descriptive link is usually clearer.\n- **Dropdowns let an editor choose from a defined set of values.** Use one for a field people will maintain, such as review status with “Draft,” “In review,” and “Approved.” To update one entry, change its selection. Edit the shared option list only when the user wants the choices themselves changed.\n\nPreserve existing chips, dropdowns, and links outside the edit. Use the [native requests and readback checks](references/reference-smart-chips-and-building-blocks.md) to verify the chip’s value or the dropdown’s selected option.\n\n## References: read as needed\n\n| When to read | Reference |\n| --- | --- |\n| Composing requests for text, formatting, lists, tables, hyperlinks, or images | [Connector examples](references/reference-direct-request-composition.md) |\n| Working with smart chips, dropdowns, or existing building blocks | [Smart chips, dropdowns, and building blocks](references/reference-smart-chips-and-building-blocks.md) |\n| Creating Calendar-backed meeting notes using a complete request example | [Meeting-notes example](references/reference-meeting-notes-direct.md) |\n| Using the optional helper to inspect a large or complex document response | [File-backed read helper](references/reference-trusted-read-wrapper.md) |\n\n## Output delivery\n\nThese citation directives are only for the final chat response to the user. Never insert them into the Google Doc. For source references inside the document, use ordinary hyperlinks or the citation style requested by the user.\n\n- **`purpose=\"output\"`:** use for each final Google Doc created or edited for the user. Cite it exactly once, on its own line in its own paragraph, outside prose and list items. Briefly describe the result separately without repeating its filename, path, or link. Do not use output citations for unchanged files or read-only answers.\n- **`purpose=\"source\"`:** use for each document whose contents you summarize or use to support an answer. Place the citation inline where the document is referenced, in place of its filename. Do not write the filename separately and append its citation. Files merely inspected but not used in the answer need no citation.\n- Include only `path` and `purpose` inside each directive. Do not add a description, title, label, `mode`, or other attributes. Any explanatory prose belongs outside the directive.\n- Emit `:codex-file-citation{...}` directly, without backticks, code fences, or a Markdown-link wrapper. Use verified targets only. No need to cite or reference intermediate work.\n\nSet `path` to the verified native Google Docs URL returned by the connector. Citation directives are exempt from “Return web URLs as Markdown links.”\n\nExamples below use placeholders; actual responses use verified URLs and no code fences.\n\n```text\n:codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"output\"}\n```\n\n```text\nThe review of :codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"source\"} is due Friday.\n```\n"
Full snapshot data
{
  "description": "Create and edit native Google Docs through connected tools.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 337
    },
    {
      "relative_path": "assets/google-docs-small.svg",
      "size_in_bytes": 2135
    },
    {
      "relative_path": "assets/google-docs.png",
      "size_in_bytes": 65371
    },
    {
      "relative_path": "host/docs-dropdown-executor.mjs",
      "size_in_bytes": 33451
    },
    {
      "relative_path": "host/docs-dropdown-file-bridge.mjs",
      "size_in_bytes": 9402
    },
    {
      "relative_path": "host/docs-stdin-receiver.pl",
      "size_in_bytes": 3091
    },
    {
      "relative_path": "host/docs-trusted-read-file-bridge.mjs",
      "size_in_bytes": 23014
    },
    {
      "relative_path": "host/docs-trusted-read-wrapper.mjs",
      "size_in_bytes": 16458
    },
    {
      "relative_path": "references/reference-direct-request-composition.md",
      "size_in_bytes": 11609
    },
    {
      "relative_path": "references/reference-meeting-notes-direct.md",
      "size_in_bytes": 5187
    },
    {
      "relative_path": "references/reference-smart-chips-and-building-blocks.md",
      "size_in_bytes": 6860
    },
    {
      "relative_path": "references/reference-trusted-read-wrapper.md",
      "size_in_bytes": 4901
    },
    {
      "relative_path": "runtime/docs-read-normalizer.mjs",
      "size_in_bytes": 10783
    },
    {
      "relative_path": "runtime/dropdown-common.mjs",
      "size_in_bytes": 3337
    },
    {
      "relative_path": "runtime/dropdown-contract.mjs",
      "size_in_bytes": 4008
    },
    {
      "relative_path": "runtime/dropdown-inventory.mjs",
      "size_in_bytes": 10565
    },
    {
      "relative_path": "runtime/dropdown-plan.mjs",
      "size_in_bytes": 14701
    },
    {
      "relative_path": "runtime/dropdown-routing.mjs",
      "size_in_bytes": 2037
    },
    {
      "relative_path": "scripts/build_docs_dropdown_inventory.mjs",
      "size_in_bytes": 805
    },
    {
      "relative_path": "scripts/canonicalize_google_workspace_url.mjs",
      "size_in_bytes": 3055
    },
    {
      "relative_path": "scripts/create_docs_dropdown_execution_context.mjs",
      "size_in_bytes": 740
    },
    {
      "relative_path": "scripts/freeze_docs_dropdown_contract.mjs",
      "size_in_bytes": 653
    },
    {
      "relative_path": "scripts/validate_docs_dropdown_plan.mjs",
      "size_in_bytes": 1152
    }
  ],
  "name": "google-docs",
  "skill_md_contents": "---\nname: google-docs\ndescription: Create and edit native Google Docs through connected tools.\n---\n\n# Google Docs\n\nCreate and edit native Google Docs through connector tools, which handle authentication. For content edits, `batch_update_document` calls Google’s `documents.batchUpdate` API. Verify connector capabilities before claiming a feature is unsupported.\n\n## Choose the route\n\n- **New document:** create a native Google Doc with the Drive create action and `application/vnd.google-apps.document`.\n- **Edit an existing document:** edit the specified document in place. Read the target and surrounding structure with the Google Docs tools before writing. For large responses or complex native controls, optionally use the [file-backed read helper](references/reference-trusted-read-wrapper.md) to save a searchable outline and control inventory. Do not write through an opaque control range you cannot inspect.\n- **Use a template:** when creating a new document from a template, copy it natively to preserve its formatting and embedded features. When adapting a past document, update task-relevant content across every retained tab; preserving structure does not mean carrying forward old people, dates, links, or approvals. Edit an existing document in place when that is what the user requests.\n- **Convert Word to Google Docs:** only when the user supplies a Word file and asks to convert it. Call `mcp__codex_apps__google_drive_import_document` with `source_file` set to its absolute local path, the desired `title`, and `upload_mode: \"native_google_docs\"`. Preserve the source file. Verify the response identifies a native Google Doc (`application/vnd.google-apps.document`) and supplies its ID or URL, then read it back to check content, headings, lists, tables, and embedded elements against the source. When layout fidelity matters, compare an exported PDF with the source rendering. Repair conversion drift with scoped edits that preserve the source formatting, and report any remaining fidelity loss.\n\nPlace new documents and template copies in `ChatGPT` at My Drive root unless the user specifies another location. Edit existing documents in place.\n\n## Writing style\n\nWrite for the document’s intended audience and purpose. Default to using natural, concise, and clear writing. Do not describe your search or review process, report how many items you reviewed, or list evaluation criteria unless the user explicitly asks for those details or if they are necessary to avoid a misleading answer.\n\nWhen revising, preserve the author’s voice. For formatting-only requests, keep the original wording exactly.\n\n## Edit without losing structure\n\n`batch_update_document` applies direct edits, not tracked suggestions.\n\n1. Resolve the destination document ID, target `tabId`, and current structure. A URL pointing at one tab does not describe the whole document. Inspect all tabs when copying or editing the whole document; a targeted edit needs only its relevant scope.\n2. Resolve paragraph, table-cell, and native-element ranges from connector readback. Docs indexes are UTF-16 code units, not character counts. Requests in a batch execute sequentially, so earlier inserts and deletions change later indexes.\n3. Batch compatible edits in one `batch_update_document` call, accounting for sequential index shifts. Combine text insertion and its formatting when ranges can be calculated from the inserted text. Make scoped edits. Do not rebuild a document for a small correction or replace a table/control with its visible text. Match nearby peer styles when adding content to an existing structure.\n4. Use `write_control.requiredRevisionId` for edits that should fail on concurrent changes. Use a returned revision for the next guarded batch when available. Read again only when a later edit needs positions or native IDs you cannot reliably derive, a revision conflict occurs, or a write outcome is uncertain; reconcile that outcome before retrying. Do not read after every tool call.\n5. After the planned edits, read back the changed area once to verify content, location, native element types, and preservation of nearby structure. Use PDF rendering when page fit or image placement matters; connector metadata alone cannot prove rendered layout. Export and inspect the relevant PDF pages for that check; HTML and thumbnails do not prove page fit.\n\n## Formatting\n\nFor new documents, start with Google Docs’ supplied named styles, fonts, and margins. Unless the user or style guide specifies otherwise, use these defaults.\n\n- Choose heading levels by document structure. Reserve `SUBTITLE` for an optional line beneath the document title, and use `HEADING_2` for subsections within a `HEADING_1` section.\n- Apply the named paragraph style first to preserve the document outline and navigation. Then set only the font size, using 22 pt for `TITLE`, 13 pt for `SUBTITLE`, 18 pt for `HEADING_1`, and 16 pt for `HEADING_2`.\n- Separate body paragraphs with a single paragraph break and set `paragraphStyle.spaceBelow` to 6 pt. Preserve the spacing of headings, lists, tables, and code.\n\nFor an existing document or template, preserve its typography and match nearby headings.\n\nUse named paragraph styles for headings. Set `namedStyleType` first, then change only the font size of the title, subtitle, or heading text, excluding its final newline. Preserve the heading’s text color and weight unless the user or style guide explicitly specifies otherwise. In `updateTextStyle`, send only `textStyle.fontSize` with `fields: \"fontSize\"`. Leave `foregroundColor`, `bold`, and `weightedFontFamily` unset so the named style or template continues to control them. Changing a paragraph to `NORMAL_TEXT` may leave explicit character formatting intact; reset unintended inherited styling on inserted body text to match its intended body style.\n\nUse bold for a short label, key question, or decision readers need to find quickly. Use italics for light emphasis or a brief aside. Style just the words that need emphasis, leaving the surrounding explanation in regular text.\n\nConsolidate genuinely comparable repeated records into a readable native table.\n\nFormat exact code literals and identifiers in monospace, preserving any existing link.\n\n## Bulleted and numbered lists\n\n- **Use bullets when order doesn’t matter.** Good examples are open questions, risks to discuss, or materials to bring.\n- **Use numbers when order or reference matters.** Number the steps in a procedure, criteria a reviewer will score, or findings that correspond to numbered questions in the source.\n\nUse native Google Docs lists so numbering updates when items move. If each item introduces a section rather than a list entry, preserve the document’s heading hierarchy.\n\n## Smart chips and dropdowns\n\n- **Smart chips identify a specific person, date, or Google resource.** Use one when requested, when matching a template, or when it makes a working field more useful: a person chip for an owner, a date chip for a deadline, or a file chip for a source document. Use a verified email, date, or supported URL. In ordinary prose, plain text or a descriptive link is usually clearer.\n- **Dropdowns let an editor choose from a defined set of values.** Use one for a field people will maintain, such as review status with “Draft,” “In review,” and “Approved.” To update one entry, change its selection. Edit the shared option list only when the user wants the choices themselves changed.\n\nPreserve existing chips, dropdowns, and links outside the edit. Use the [native requests and readback checks](references/reference-smart-chips-and-building-blocks.md) to verify the chip’s value or the dropdown’s selected option.\n\n## References: read as needed\n\n| When to read | Reference |\n| --- | --- |\n| Composing requests for text, formatting, lists, tables, hyperlinks, or images | [Connector examples](references/reference-direct-request-composition.md) |\n| Working with smart chips, dropdowns, or existing building blocks | [Smart chips, dropdowns, and building blocks](references/reference-smart-chips-and-building-blocks.md) |\n| Creating Calendar-backed meeting notes using a complete request example | [Meeting-notes example](references/reference-meeting-notes-direct.md) |\n| Using the optional helper to inspect a large or complex document response | [File-backed read helper](references/reference-trusted-read-wrapper.md) |\n\n## Output delivery\n\nThese citation directives are only for the final chat response to the user. Never insert them into the Google Doc. For source references inside the document, use ordinary hyperlinks or the citation style requested by the user.\n\n- **`purpose=\"output\"`:** use for each final Google Doc created or edited for the user. Cite it exactly once, on its own line in its own paragraph, outside prose and list items. Briefly describe the result separately without repeating its filename, path, or link. Do not use output citations for unchanged files or read-only answers.\n- **`purpose=\"source\"`:** use for each document whose contents you summarize or use to support an answer. Place the citation inline where the document is referenced, in place of its filename. Do not write the filename separately and append its citation. Files merely inspected but not used in the answer need no citation.\n- Include only `path` and `purpose` inside each directive. Do not add a description, title, label, `mode`, or other attributes. Any explanatory prose belongs outside the directive.\n- Emit `:codex-file-citation{...}` directly, without backticks, code fences, or a Markdown-link wrapper. Use verified targets only. No need to cite or reference intermediate work.\n\nSet `path` to the verified native Google Docs URL returned by the connector. Citation directives are exempt from “Return web URLs as Markdown links.”\n\nExamples below use placeholders; actual responses use verified URLs and no code fences.\n\n```text\n:codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"output\"}\n```\n\n```text\nThe review of :codex-file-citation{path=\"https://docs.google.com/document/d/<verified-file-id>\" purpose=\"source\"} is due Friday.\n```\n"
}

SHA-256 of public snapshot: e529974b8a51356dbcb5de2bd5c1ed8a1bf95926466cb78a06bdaaeb32e45e0f