gsheets · git:20260610.c15894f · 2026-06-10 · sha256 e432477ac9ce6038

gsheets git:20260610.c15894fA

Immutable. This exact content is served forever at /api/v1/blob/e432477ac9ce6038.

---
name: gsheets
description: "Google Sheets via MCP — read, write, create, list, share spreadsheets. Use when reading, writing, or managing Google Sheets data."
effort: low
keywords: [google-sheets, spreadsheet, csv, data, read, write, mcp]
task_strategies: [feature, spike]
stream_affinity: [roadmap, research]
argument-hint: "[list|read|write|create|summary|share] [args]"
group: utility
allowed-tools:
  - Read
  - Bash
  - AskUserQuestion
model: haiku
status: stable
growth_stage: evergreen
---
# Google Sheets — MCP Operations

Direct interface to Google Sheets via MCP. Read, write, create, and manage spreadsheets with performance-optimal tool usage.

## When to use

- User wants to read, write, or manage Google Sheets
- Another skill needs Sheets access (growth-check, pipeline, financial-model, morning, monthly-close)
- Discovering what spreadsheets exist
- Creating or sharing a new spreadsheet

## Usage

`/brana:gsheets [action] [args...]`

Actions:
- `/brana:gsheets list` — list spreadsheets or folders
- `/brana:gsheets read <spreadsheet> [sheet] [range]` — read data
- `/brana:gsheets write <spreadsheet> <sheet> <range>` — update data
- `/brana:gsheets create <title>` — create new spreadsheet
- `/brana:gsheets summary <spreadsheet>` — quick overview (sheets, headers, row counts)
- `/brana:gsheets share <spreadsheet> <email> [role]` — share access
- `/brana:gsheets` (no args) — ask user what they need

---

## Step 1: Check MCP Availability

Use `ToolSearch` to probe for `mcp__google-sheets__*` tools:

```
ToolSearch query: "+google-sheets list"
```

If no `mcp__google-sheets__*` tools are found:
- Tell the user: "Google Sheets MCP is not configured."
- Point to setup guide: `thebrana/docs/google-sheets-mcp-setup.md`
- Stop here.

If tools are found, load the ones needed for the requested action and proceed.

---

## Step 2: Route Action

Parse `$ARGUMENTS` to determine the action. If no arguments, ask the user what they need.

### `list` — Discover Spreadsheets

```
ToolSearch query: "+google-sheets list"
```

- Use `mcp__google-sheets__list_spreadsheets` to show recent spreadsheets
- Use `mcp__google-sheets__list_folders` to browse by folder
- Present results as a table: Title | ID | Last Modified

### `read <spreadsheet> [sheet] [range]` — Read Data

```
ToolSearch query: "+google-sheets get_sheet"
```

- If only spreadsheet given: use `mcp__google-sheets__list_sheets` to show available sheets, then ask which one
- If sheet given but no range: use `mcp__google-sheets__get_sheet_data` with a sensible default range (A1:Z1 for headers, then A1:Z100 for data preview)
- If full range given: use `mcp__google-sheets__get_sheet_data` with the exact range
- For cross-sheet reads: use `mcp__google-sheets__get_multiple_sheet_data` in a single call

### `write <spreadsheet> <sheet> <range>` — Update Data

```
ToolSearch query: "+google-sheets update"
```

- **Always confirm with the user before writing.** Show what will be written and where.
- For a single range: use `mcp__google-sheets__update_cells`
- For multiple ranges: use `mcp__google-sheets__batch_update_cells` in a single call
- For adding rows at the end: use `mcp__google-sheets__add_rows`
- For adding columns: use `mcp__google-sheets__add_columns`
- For structural changes (formatting, dimensions, conditional formatting): use `mcp__google-sheets__batch_update`

### `create <title>` — Create Spreadsheet

```
ToolSearch query: "+google-sheets create"
```

- Use `mcp__google-sheets__create_spreadsheet` with the given title
- If the user specifies sheets to add: use `mcp__google-sheets__create_sheet` for each additional sheet
- Return the spreadsheet URL after creation

### `summary <spreadsheet>` — Quick Overview

```
ToolSearch query: "+google-sheets summary"
```

- Use `mcp__google-sheets__get_multiple_spreadsheet_summary` (works for one or many)
- Show: spreadsheet title, sheet names, row/column counts
- For a deeper look: read A1:Z1 from each sheet to show column headers

### `share <spreadsheet> <email> [role]` — Share Access

```
ToolSearch query: "+google-sheets share"
```

- Default role: `reader` if not specified
- Use `mcp__google-sheets__share_spreadsheet`
- Confirm with user before sharing

---

## Step 3: Performance Rules

These rules apply to ALL Sheets operations, whether invoked via `/brana:gsheets` or by other skills.

1. **Always specify a range when reading.** Never fetch an entire sheet unless the user explicitly asks for all data. Default to reading headers (row 1) first, then expand as needed.

2. **Never set `include_grid_data: true`** unless the user specifically asks about formatting, colors, or cell styles. Grid data inflates response tokens dramatically.

3. **Batch over individual.** Use `batch_update_cells` for writing to multiple ranges — never loop `update_cells` cell-by-cell or range-by-range.

4. **Use `get_multiple_sheet_data`** when reading from 2+ sheets in the same spreadsheet. One call, not N calls.

5. **Use `get_multiple_spreadsheet_summary`** for discovery and overview. It returns structure without data — much cheaper than reading actual cell contents.

6. **Use `batch_update`** for structural changes (formatting, conditional formatting, column dimensions, merges). Don't mix structural operations with data writes.

7. **Use `add_rows` for appending** — don't calculate the next empty row manually and then use `update_cells`.

8. **Prefer `list_sheets` before `get_sheet_data`** when the user hasn't specified which sheet to read. Don't guess sheet names.

---

## Step 4: Output Conventions

- **Render data as markdown tables.** Format sheet data into readable tables with headers.
- **Show spreadsheet URLs** after create, share, or any operation where the user might want to open the sheet.
- **Confirm writes.** After a successful write, summarize what was written and where (sheet, range, row count).
- **Truncate large datasets.** If reading returns more than 50 rows, show the first 20 and tell the user how many more exist. Ask if they want the full dataset.

---

## Rules

- **Never write or overwrite without user confirmation.** Always show what will change before executing writes.
- **Performance-first.** Batch over individual, ranges over full sheets, summaries over full reads. Follow Step 3 strictly.
- **Reuse known spreadsheet IDs.** If a spreadsheet ID is referenced in `docs/venture/`, `.claude/CLAUDE.md`, or `docs/pipeline/`, use it directly — don't ask the user to provide it again.
- **Graceful degradation.** If MCP is unavailable, say so clearly and stop. Don't attempt workarounds.
- **No fabricated data.** If a read returns empty cells or errors, report exactly what happened. Never fill in guessed values.
- **Ask for clarification.** If the spreadsheet name is ambiguous, the range is unclear, or the action could affect important data — ask before acting.