google-docs-collaboration
Manages Google Docs, Sheets, and Slides through the Docs, Sheets, and Slides APIs. Create, read, and edit documents, spreadsheets, and presentations programmatically. Format content, manage collaboration, extract data, and automate document workflows. Use when working with Google Workspace documents, editing content, extracting data, or automating document creation.
What this skill does
# Google Docs Collaboration
Comprehensive Google Workspace document integration enabling programmatic creation, editing, and management of Docs, Sheets, and Slides through their respective APIs.
## Quick Start
When asked to work with Google Docs, Sheets, or Slides:
1. **Authenticate**: Set up OAuth2 credentials (one-time setup)
2. **Create documents**: Generate Docs, Sheets, or Slides
3. **Read content**: Extract text, data, or presentation content
4. **Edit documents**: Update content programmatically
5. **Format**: Apply styling and formatting
6. **Collaborate**: Manage sharing and comments
## Prerequisites
### One-Time Setup
**1. Enable APIs:**
```bash
# Visit Google Cloud Console
# https://console.cloud.google.com/
# Enable these APIs:
# - Google Docs API
# - Google Sheets API
# - Google Slides API
# - Google Drive API (for file operations)
```
**2. Create OAuth2 Credentials:**
```bash
# In Google Cloud Console:
# APIs & Services > Credentials > Create Credentials > OAuth client ID
# Application type: Desktop app
# Download credentials as credentials.json
```
**3. Install Dependencies:**
```bash
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client --break-system-packages
```
**4. Initial Authentication:**
```bash
python scripts/authenticate.py
# Opens browser for Google sign-in
# Saves token.json for future use
```
See [reference/setup-guide.md](reference/setup-guide.md) for detailed setup.
## Google Docs Operations
### Create Documents
**Create blank Doc:**
```bash
# New document
python scripts/create_doc.py --title "Project Proposal"
# With initial content
python scripts/create_doc.py \
--title "Meeting Notes" \
--content-file template.txt
```
**Create from template:**
```bash
# Copy template and customize
python scripts/create_from_template.py \
--template-id TEMPLATE_DOC_ID \
--title "Q4 Report" \
--replacements "{{date}}:2025-01-20,{{author}}:John Smith"
```
### Read Documents
**Get document content:**
```bash
# Read as text
python scripts/read_doc.py --doc-id DOC_ID
# Get structured content
python scripts/get_doc_structure.py --doc-id DOC_ID --output doc.json
# Export as different format
python scripts/export_doc.py --doc-id DOC_ID --format pdf --output report.pdf
python scripts/export_doc.py --doc-id DOC_ID --format docx --output report.docx
```
**Extract specific elements:**
```bash
# Get headings only
python scripts/extract_headings.py --doc-id DOC_ID
# Get tables
python scripts/extract_tables.py --doc-id DOC_ID
# Get images
python scripts/extract_images.py --doc-id DOC_ID --output ./images/
```
### Edit Documents
**Append content:**
```bash
# Add text to end
python scripts/append_doc.py \
--doc-id DOC_ID \
--text "New paragraph content"
# Add formatted content
python scripts/append_doc.py \
--doc-id DOC_ID \
--content-file content.json
```
**Insert content:**
```bash
# Insert at specific position
python scripts/insert_text.py \
--doc-id DOC_ID \
--index 100 \
--text "Inserted text"
# Insert before/after heading
python scripts/insert_after_heading.py \
--doc-id DOC_ID \
--heading "Introduction" \
--text "New content"
```
**Replace content:**
```bash
# Find and replace
python scripts/replace_text.py \
--doc-id DOC_ID \
--find "old text" \
--replace "new text"
# Replace with regex
python scripts/replace_text.py \
--doc-id DOC_ID \
--pattern "\d{4}-\d{2}-\d{2}" \
--replace "2025-01-20"
```
**Delete content:**
```bash
# Delete range
python scripts/delete_range.py \
--doc-id DOC_ID \
--start-index 100 \
--end-index 200
```
### Format Documents
**Apply text formatting:**
```bash
# Bold text
python scripts/format_text.py \
--doc-id DOC_ID \
--range 10:50 \
--bold
# Multiple formats
python scripts/format_text.py \
--doc-id DOC_ID \
--range 10:50 \
--bold --italic --underline \
--font-size 14 \
--font-family "Arial"
```
**Apply paragraph formatting:**
```bash
# Set heading style
python scripts/set_paragraph_style.py \
--doc-id DOC_ID \
--range 0:20 \
--style "HEADING_1"
# Adjust alignment and spacing
python scripts/format_paragraph.py \
--doc-id DOC_ID \
--range 50:100 \
--alignment "CENTER" \
--line-spacing 1.5
```
**Insert elements:**
```bash
# Insert image
python scripts/insert_image.py \
--doc-id DOC_ID \
--index 100 \
--image-url "https://example.com/image.jpg"
# Insert table
python scripts/insert_table.py \
--doc-id DOC_ID \
--index 100 \
--rows 3 \
--columns 4
# Insert page break
python scripts/insert_page_break.py \
--doc-id DOC_ID \
--index 500
```
## Google Sheets Operations
### Create Sheets
**Create blank Sheet:**
```bash
# New spreadsheet
python scripts/create_sheet.py --title "Budget 2025"
# With initial data
python scripts/create_sheet.py \
--title "Sales Data" \
--data data.csv
```
**Create with structure:**
```bash
# Multiple sheets with headers
python scripts/create_sheet.py \
--title "Project Tracker" \
--sheets "Tasks,Timeline,Budget" \
--headers "Task,Owner,Status,Due Date"
```
### Read Sheets
**Get data:**
```bash
# Read range
python scripts/read_sheet.py \
--sheet-id SHEET_ID \
--range "Sheet1!A1:D10"
# Read entire sheet
python scripts/read_sheet.py \
--sheet-id SHEET_ID \
--sheet "Sheet1"
# Export as CSV
python scripts/export_sheet.py \
--sheet-id SHEET_ID \
--format csv \
--output data.csv
```
**Get sheet properties:**
```bash
# Get sheet metadata
python scripts/get_sheet_info.py --sheet-id SHEET_ID
# List all sheets
python scripts/list_sheets.py --sheet-id SHEET_ID
```
### Edit Sheets
**Update cells:**
```bash
# Update single cell
python scripts/update_cell.py \
--sheet-id SHEET_ID \
--cell "A1" \
--value "New Value"
# Update range
python scripts/update_range.py \
--sheet-id SHEET_ID \
--range "A1:B10" \
--values data.csv
# Append rows
python scripts/append_rows.py \
--sheet-id SHEET_ID \
--sheet "Sheet1" \
--values new_data.csv
```
**Formulas:**
```bash
# Add formula
python scripts/set_formula.py \
--sheet-id SHEET_ID \
--cell "D2" \
--formula "=SUM(A2:C2)"
# Copy formula down column
python scripts/fill_formula.py \
--sheet-id SHEET_ID \
--range "D2:D100" \
--formula "=SUM(A2:C2)"
```
**Formatting:**
```bash
# Format cells
python scripts/format_cells.py \
--sheet-id SHEET_ID \
--range "A1:D1" \
--bold \
--background-color "blue" \
--text-color "white"
# Number format
python scripts/set_number_format.py \
--sheet-id SHEET_ID \
--range "B2:B100" \
--format "CURRENCY"
```
**Sheet structure:**
```bash
# Add sheet
python scripts/add_sheet.py \
--sheet-id SHEET_ID \
--title "New Sheet"
# Delete sheet
python scripts/delete_sheet.py \
--sheet-id SHEET_ID \
--sheet-name "Old Sheet"
# Rename sheet
python scripts/rename_sheet.py \
--sheet-id SHEET_ID \
--old-name "Sheet1" \
--new-name "Data"
```
**Sort and filter:**
```bash
# Sort range
python scripts/sort_range.py \
--sheet-id SHEET_ID \
--range "A1:D100" \
--sort-by-column 1 \
--ascending
# Create filter
python scripts/create_filter.py \
--sheet-id SHEET_ID \
--range "A1:D100"
```
## Google Slides Operations
### Create Presentations
**Create blank presentation:**
```bash
# New presentation
python scripts/create_slides.py --title "Q4 Review"
# From template
python scripts/create_from_template.py \
--template-id TEMPLATE_ID \
--title "Sales Presentation"
```
### Read Presentations
**Get presentation content:**
```bash
# Read all slides
python scripts/read_slides.py --presentation-id PRES_ID
# Get specific slide
python scripts/get_slide.py \
--presentation-id PRES_ID \
--slide-index 0
# Export as PDF
python scripts/export_slides.py \
--presentation-id PRES_ID \
--format pdf \
--output presentation.pdf
```
### Edit Presentations
**Add slides:**
```bash
# Add blank slide
python scripts/add_slide.py \
--presentation-id PRES_ID \
--layout "TITLE_AND_BODY" \
--indexRelated in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.