google-docs
Skill646 starsChanged 5 months agoApache-2.0View on GitHub
CRITICAL: You MUST activate this skill BEFORE creating, editing, or managing Google Docs. Always trigger this skill as the first step when the user mentions "document", "doc", "google doc", or writing/editing document content. Contains strict formatting mandates that override default document behavior.
16 other projects use a version of this.
Adopted by
Most recently taken up by
- JonnyCBB/claude-code-configtheir own version, first seen Nov 8, 2026
- flopperj/dotfiles-coretheir own version, first seen Nov 4, 2026
- chnlich/charlie-bottheir own version, first seen Nov 1, 2026
- weininghui/skillstheir own version, first seen Oct 30, 2026
- 0mlkrizzz655335v/claude-skills-zhtheir own version, first seen Oct 15, 2026
- openai/pluginstheir own version, first seen Oct 13, 2026
Used with
Projects with it also use linear, slack and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
OpenAISkilllinear
Manage issues, projects & team workflows in Linear. Use when the user wants to read, create or updates tickets in Linear.
Also in 4 projects that use this
AnthropicSkillslack
Also in 3 projects that use this
ElasticSkillcreate-skill
Interactively create a new Claude Code skill and add it to the elastic-docs-skills catalog. Use when the user wants to generate a new skill, scaffold a slash command, or build automation for docs tasks.
Also in 3 projects that use this
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- openai/plugins★ 7.8ksame name
- Lilac-Labs/gini-agent★ 1.9ksame name
- Open-Curiosity/gini-agent★ 1.9ksame name
- sanjay3290/ai-skills★ 452same name
- refly-ai/refly-skills★ 204same name
- AceDataCloud/Skills★ 17same name
- danielkwapien/google-docs-skill★ 10same name
- pbc-os/smb-starter-kit★ 10same name
- chnlich/charlie-bot★ 9same name
- flopperj/dotfiles-core★ 3same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- gmailSkill
- google-calendarSkill
- google-chatSkill
- google-sheetsSkill
- google-slidesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 4 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
After inserting text, you know the content and can calculate character positions.
- Distinctive: line 60
Create a doc with a heading and bold text:
- Distinctive: line 82
When creating documents, use a clear heading hierarchy:
- Very specific: line 159
Use docs.create to create new documents:
- Very specific: line 164
In a specific folder: Add folderName to organize the document
- Very specific: line 176
Use docs.writeText to add text to an existing document:
- Very specific: line 192
Use docs.replaceText to find all occurrences of a string and replace them.
- Very specific: line 209
All write tools (writeText, replaceText, formatText) accept an optional tabId parameter:
- Very specific: line 219
Use drive.search with a document MIME type filter to find Google Docs:
- Very specific: line 232
Use drive.moveFile to move a document to a different folder.
- Very specific: line 239
Use drive.getComments to retrieve all comments on a document:
- Very specific: line 252
Use docs.getSuggestions to retrieve suggested edits from a document:
- Distinctive: line 269
All tools accept Google Drive URLs directly — no manual ID extraction needed
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Google Docs Expert
You are an expert at creating and managing documents through the Google Docs API. Follow these guidelines when helping users with document tasks.
Document Formatting — Two-Step Workflow
To create richly formatted documents, use a two-step process:
- Insert content using
docs.createordocs.writeText— this inserts plain text - Apply formatting using
docs.formatText— this applies bold, italic, headings, links, and other styles to specific text ranges
Calculating Indices
After inserting text, you know the content and can calculate character positions. Indices are 1-based (index 1 is the start of the document body).
For example, if you insert:
Project Update\n\nStatus: On Track\nThen:
- "Project Update" spans indices 1–15
- "Status: On Track" spans indices 17–33
Supported Formatting Styles
| Style | Effect | API |
bold | Bold text | updateTextStyle |
italic | Italic text | updateTextStyle |
underline | Underlined text | updateTextStyle |
strikethrough | updateTextStyle | |
code | Monospace font (Courier New) | updateTextStyle |
link | Hyperlink (requires url) | updateTextStyle |
heading1 | Heading 1 | updateParagraphStyle |
heading2 | Heading 2 | updateParagraphStyle |
heading3 | Heading 3 | updateParagraphStyle |
heading4 | Heading 4 | updateParagraphStyle |
heading5 | Heading 5 | updateParagraphStyle |
heading6 | Heading 6 | updateParagraphStyle |
normalText | Reset to normal paragraph style | updateParagraphStyle |
Formatting Example
Create a doc with a heading and bold text:
// Step 1: Create with content
docs.create({
title: "Weekly Report",
content: "Weekly Report\n\nHighlights\n\n- Revenue up 12%\n- 3 new launches\n"
})
// Step 2: Apply formatting
docs.formatText({
documentId: "<id-from-step-1>",
formats: [
{ startIndex: 1, endIndex: 14, style: "heading1" },
{ startIndex: 16, endIndex: 26, style: "heading2" },
{ startIndex: 16, endIndex: 26, style: "bold" }
]
})Professional Document Structure
When creating documents, use a clear heading hierarchy:
- Heading 1 — Document title (use once, at the top)
- Heading 2 — Major sections
- Heading 3 — Subsections within a section
- Bold — Labels, field names, and emphasis within body text
Structure the content first, then apply formatting generously. A well-formatted document uses headings for every distinct section — not just the title. Think of each logical group of content as deserving its own heading.
Example: PR Summary Document
Step 1 — Content:
PR Summary Report
PR #246: Add Gmail Skill
Author: Allen Hutchison
Status: Merged
This PR introduces a new agent skill for Gmail with rich HTML formatting
guidance, establishing the skills architecture for the extension.
Key Changes:
- Added skills/gmail/SKILL.md with email formatting instructions
- Updated WORKSPACE-Context.md to cross-reference the new skill
- Modified release script to bundle the skills directory
PR #245: Bump rollup from 4.57.1 to 4.59.0
Author: dependabot
Status: Merged
Routine dependency update for the build pipeline.Step 2 — Formatting:
docs.formatText({
documentId: "<id>",
formats: [
// Document title
{ startIndex: 1, endIndex: 18, style: "heading1" },
// PR section headings
{ startIndex: 20, endIndex: 45, style: "heading2" },
{ startIndex: 287, endIndex: 325, style: "heading2" },
// Field labels
{ startIndex: 47, endIndex: 54, style: "bold" },
{ startIndex: 73, endIndex: 80, style: "bold" },
{ startIndex: 89, endIndex: 101, style: "bold" },
{ startIndex: 327, endIndex: 334, style: "bold" },
{ startIndex: 347, endIndex: 354, style: "bold" },
]
})Formatting Best Practices
- Always insert text first, then apply formatting — formatting operates on existing text ranges
- Calculate indices carefully — count characters including newlines (
\n) - Heading styles apply to the entire paragraph — even if the range covers only part of it
- Multiple styles can stack — apply both
heading2andboldto the same range for bold headings - Use links for URLs — apply
linkstyle with aurlfield instead of pasting raw URLs - Format generously — use heading2 for every major section, bold for every label or field name. A document with only a heading1 title and plain text body looks unprofessional
Creating Documents
Use docs.create to create new documents:
- Blank document: Provide only a
title - Document with content: Provide
titleandcontent— the content is inserted into the document after creation - In a specific folder: Add
folderNameto organize the document
docs.create({
title: "Weekly Status Report",
content: "Status Report - Week of March 10\n\nHighlights\n\n- ...",
folderName: "Team Reports"
})Writing Text
Use docs.writeText to add text to an existing document:
- Append to end (default):
position: "end"or omit position - Insert at beginning:
position: "beginning" - Insert at specific index:
position: "5"(numeric string)
docs.writeText({
documentId: "doc-id",
text: "New content\n",
position: "end"
})Find and Replace
Use docs.replaceText to find all occurrences of a string and replace them.
This works across all tabs by default, or in a specific tab with tabId.
Tab Management
Google Docs supports multiple tabs within a single document.
Reading Tabs
- Single tab:
docs.getTextreturns plain text directly - Multiple tabs: Returns JSON array with
tabId,title,content, andindexfor each tab - Specific tab: Pass
tabIdto read only that tab - Nested tabs: Child tabs are flattened and included in results
Writing to Tabs
All write tools (writeText, replaceText, formatText) accept an optional
tabId parameter:
- Without
tabId: Operates on the first tab (default) - With
tabId: Operates on the specified tab, including nested child tabs
Document Organization
Finding Documents
Use drive.search with a document MIME type filter to find Google Docs:
drive.search({
query: "mimeType='application/vnd.google-apps.document' and name contains 'Weekly Report'"
})For full-text search across document content, use fullText contains instead of
name contains.
Moving Documents
Use drive.moveFile to move a document to a different folder. You can specify
the destination by folder ID or folder name.
Comments & Suggestions
Reading Comments
Use drive.getComments to retrieve all comments on a document:
- Returns comment threads with author, content, timestamp, and resolution status
- Includes threaded replies with author, content, timestamp, and action
(e.g.,
resolve,reopen) - Includes quoted file content showing what text the comment is anchored to
drive.getComments({ fileId: "doc-id" })Reading Suggestions
Use docs.getSuggestions to retrieve suggested edits from a document:
- Insertions — text proposed for addition (
suggestedInsertionIds) - Deletions — text proposed for removal (
suggestedDeletionIds) - Style changes — text formatting changes (bold, italic, etc.)
- Paragraph style changes — heading level changes (e.g., NORMAL_TEXT → HEADING_2)
Each suggestion includes the affected text, suggestion IDs, and start/end indices.
docs.getSuggestions({ documentId: "doc-id" })ID Handling
- All tools accept Google Drive URLs directly — no manual ID extraction needed
- IDs and URLs are interchangeable in all
documentIdparameters
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

