plugins/google-workspace-cli/skills/sheets/SKILL.md
Use this skill when the user asks about reading, writing, or managing Google Sheets data via the Google Workspace CLI. Trigger on spreadsheet tasks like reading cell ranges, updating data, creating sheets, or working with formulas.
npx skillsauth add nsheaps/ai-mktpl sheetsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use gws sheets to interact with Google Sheets from the command line.
# Read a range of cells
gws sheets get <spreadsheet-id> --range "Sheet1!A1:D10"
# Read entire sheet
gws sheets get <spreadsheet-id> --range "Sheet1"
# Read as JSON
gws sheets get <spreadsheet-id> --range "Sheet1!A1:D10" --format json
# Read with value render option
gws sheets get <spreadsheet-id> --range "Sheet1!A1:D10" --value-render "FORMATTED_VALUE"
# Update a range
gws sheets update <spreadsheet-id> --range "Sheet1!A1" --values '[["Name","Email"],["Alice","[email protected]"]]'
# Append rows to a sheet
gws sheets append <spreadsheet-id> --range "Sheet1!A1" --values '[["Bob","[email protected]"]]'
# Clear a range
gws sheets clear <spreadsheet-id> --range "Sheet1!A1:D10"
# Create a new spreadsheet
gws sheets create --title "Budget 2026"
# Create with initial sheet names
gws sheets create --title "Budget 2026" --sheets "Q1,Q2,Q3,Q4"
# List sheets in a spreadsheet
gws sheets list <spreadsheet-id>
# Add a new sheet
gws sheets add-sheet <spreadsheet-id> --title "New Tab"
# Delete a sheet
gws sheets delete-sheet <spreadsheet-id> --sheet-id <sheet-id>
# Rename a sheet
gws sheets rename-sheet <spreadsheet-id> --sheet-id <sheet-id> --title "Renamed"
# Batch update multiple ranges
gws sheets batchUpdate <spreadsheet-id> --data '[
{"range": "Sheet1!A1", "values": [["Header1", "Header2"]]},
{"range": "Sheet1!A2", "values": [["Data1", "Data2"]]}
]'
# Batch get multiple ranges
gws sheets batchGet <spreadsheet-id> --ranges "Sheet1!A1:B5,Sheet2!A1:C3"
| Option | Behavior |
| -------------- | --------------------------------------------------- |
| RAW | Values stored as-is (no parsing) |
| USER_ENTERED | Values parsed as if user typed them (formulas work) |
# Write with formula support
gws sheets update <spreadsheet-id> --range "Sheet1!C1" \
--values '[["=SUM(A1:B1)"]]' --value-input "USER_ENTERED"
gws drive files export <spreadsheet-id> --mime-type "text/csv" --output ./data.csv
# Get values as JSON and extract specific column
gws sheets get <spreadsheet-id> --range "Sheet1!A:A" --format json | jq '.[].values[][]'
docs.google.com/spreadsheets/d/<SPREADSHEET_ID>/editA1 notation for ranges: Sheet1!A1:D10, Sheet1!A:A (full column), Sheet1 (full sheet)--value-input USER_ENTERED when writing formulasgws drive files list to find spreadsheets by nametools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su