Google Sheets
SkillDev toolsRead, write, and manage the user's Google Sheets.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Google Sheets skill
What this skill tells your AI
The instructions your AI receives, as published by win4r/museai-skills in opt/hatch/skills/google-sheets/SKILL.md and read by ahel’s review.
Purpose
Manage Google Sheets through hatch_gws_cli; the vendored Google Workspace CLI is the only implementation path.
Tooling
Use exec to run:
hatch_gws_cli sheets <resource> <method> [flags]
Connection management
hatch_gws_cli sheets status
hatch_gws_cli sheets disconnect
Sheets operations
Core patterns:
hatch_gws_cli sheets statushatch_gws_cli sheets disconnecthatch_gws_cli schema sheets.spreadsheets.gethatch_gws_cli schema sheets.spreadsheets.createhatch_gws_cli schema sheets.spreadsheets.values.gethatch_gws_cli schema sheets.spreadsheets.values.appendhatch_gws_cli schema sheets.spreadsheets.batchUpdate
Common raw API calls:
hatch_gws_cli sheets spreadsheets get --params '{"spreadsheetId":"<spreadsheet_id>"}'hatch_gws_cli sheets spreadsheets create --json '{"properties":{"title":"My Spreadsheet"}}'hatch_gws_cli sheets spreadsheets values get --params '{"spreadsheetId":"<spreadsheet_id>","range":"Sheet1!A1:D10"}'hatch_gws_cli sheets spreadsheets values append --params '{"spreadsheetId":"<spreadsheet_id>","range":"Sheet1!A:D","valueInputOption":"USER_ENTERED"}' --json '{"values":[["a","b"],["c","d"]]}'hatch_gws_cli sheets spreadsheets batchUpdate --params '{"spreadsheetId":"<spreadsheet_id>"}' --json '{"requests":[{"addSheet":{"properties":{"title":"Q2"}}}]}'
Vendored helpers are also available:
hatch_gws_cli sheets +read ...hatch_gws_cli sheets +append ...
JSON output contract:
status: parsestatus,connect_url, anddisconnect_urldisconnect: parseok,action,status, anddisconnect_url
Formatting spreadsheet content
Write and format the spreadsheet through the Sheets API. Do not upload a file over it.
- Write the values with
spreadsheets.create,values.update, orvalues.append. SetvalueInputOptiontoUSER_ENTEREDso Sheets parses dates, currency, and formulas. - Set the styling in one
spreadsheets.batchUpdatecall.repeatCellwithuserEnteredFormatsets the header style and the number formats.updateSheetPropertiesfreezes the header row.updateDimensionPropertiessets column widths. A new spreadsheet can carry these formats in thespreadsheets.createbody instead. - Read the result back before you call it ready. A successful write proves the API accepted the request, not that the sheet reads correctly.
spreadsheets.getreturns no cell data by default, so pass a field mask:hatch_gws_cli sheets spreadsheets get --params '{"spreadsheetId":"<spreadsheet_id>","ranges":"<tab>!A1:F10","fields":"sheets(properties(title,gridProperties(frozenRowCount)),data(rowData(values(formattedValue,effectiveFormat(backgroundColor,numberFormat,textFormat)))))"}' - Never publish a
.xlsxfile over a spreadsheet withdrive files update. Google replaces the full contents of the file, so that upload discards every other tab and every edit the user made. To change one part of a spreadsheet, usevalues.updateorspreadsheets.batchUpdate. To give the user a workbook to download, build a spreadsheet artifact and attach the file.
Auth
Authentication is handled by the wrapper's status and disconnect subcommands. Do not hand-write credential files or run raw gws auth ....
First-use setup flow
- Run
hatch_gws_cli sheets status. - If
statusisunavailable, tell the user that Google Sheets is not available on this device. Do not offer alternative integration approaches or ask the user for credentials. - If
statusisnot_connectedandconnect_urlis present, replace<connect_url>with the returned URL and share exactly this Markdown link:[Connect Google Sheets](<connect_url>); do not paste the raw URL separately. Wait for the user to reconnect. - Once
statusisconnected, proceed with Sheets operations.
Operating Rules
- Use
schemabefore unfamiliar Sheets methods so--paramsand--jsonmatch the current vendored CLI contract. - Use A1 notation for ranges unless the user explicitly wants a different API path.
- Creating a spreadsheet, clearing cells, and editing a spreadsheet owned only by the user may proceed from a clear request. Confirm before editing a shared spreadsheet because its contents can be exposed to or changed for other people.
- Treat spreadsheet IDs and sheet IDs as opaque strings and only use IDs returned by prior commands or explicit user input.
- Run
hatch_gws_cli sheets disconnect. After running it, whendisconnect_urlis present, replace<disconnect_url>with the returned URL and share exactly this Markdown link:[Disconnect Google Sheets](<disconnect_url>); do not paste the raw URL separately. - Prefer
spreadsheets.getorsheets +readbefore writing when you need to inspect current sheet structure or cell contents. To write or style a sheet, follow "Formatting spreadsheet content" above. - After a read or write action, confirm the user-visible result only. Do not surface raw API identifiers (spreadsheet and sheet IDs) or other internal response fields (page tokens/cursors, raw JSON) in text shown to the user unless the user asks for them or you need them to troubleshoot a failure; keep using them internally to chain follow-up commands.
Signals
- GitHub stars
- 293
- Forks
- 93
- Last commit
- Sep 2026
ahel review
S4info
community integration, published by win4r, not google
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
google-sheets-win4r- Source
- github.com/win4r/museai-skills