Gws sheets verify
Reusable Claude Code skills for matplotlib visualization and Google Sheets automation
npx -y skills add Pirat83/claude-code-skills --skill gws-sheets-verifyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Visual feedback loop for Google Sheets operations. After any write, take a Playwright screenshot and verify data integrity, sort order, and formatting.
SKILL.md
4.2 KB, 951 tokens by cl100k_base, as published. Nobody here has run it
Google Sheets — Verify After Write
Claude Code is multimodal — it can see screenshots via the Read tool. Use this
to close a visual feedback loop after every Google Sheets write operation.
Verify-After-Write Workflow
Applies to ALL Google Sheets write operations: update values, sort, insert/delete rows, format, borders, batchUpdate.
Steps
- Execute the Sheets API command (update, batchUpdate, sort, etc.)
- Open the sheet in Playwright:
Use the specific tab URL if working on a named tab (appendbrowser_navigate to the spreadsheet URL#gid=SHEET_ID). - Wait for render:
browser_wait_for selector=".grid-container" or timeout 5000 - Take screenshot:
browser_take_screenshot (full page or element-specific) - Read the screenshot with the
Readtool to visually inspect. - Apply the Self-Review Checklist (below).
- If issues found: fix the command, re-execute, re-verify (max 2 cycles).
- If still broken after 3 cycles, report to user with the screenshot.
Important Notes
- Maximum 3 total verify cycles (initial + 2 fixes)
- The Playwright browser must be authenticated with Google (session cookies)
- For automated skills (cron), screenshot verification may not be possible — use API read-back as fallback
Self-Review Checklist
After reading the screenshot, check:
Data Integrity
- All columns are still aligned — no column was sorted independently
- Row count matches expected (check against pre-write count)
- No blank rows inserted where data should be
- Cell values match what was written (spot-check a few cells)
Sort Order
- Rows sorted by the correct field
- All columns within each row moved together (no detached columns)
- Never sort a single column — always sort entire rows
Borders and Formatting
- All data rows have visible horizontal divider lines (top/bottom borders)
- Vertical dividers present between columns where expected
- The last data row has correct borders (bulk ops often miss it)
- No broken/missing borders anywhere in the data range
- Number format preserved (currency, percentages, dates)
Layout
- Headers are intact and not shifted
- Frozen rows/columns still in place
- Column widths haven't collapsed
- No overflow text hiding adjacent cell content
Hard Rules for Google Sheets Operations
Sorting
- Sort entire rows, NEVER individual columns — a sort that moves only one column detaches it from the rest of the row, corrupting every record
Borders
- Use
copyPaste PASTE_FORMATto apply borders — NEVERupdateBorders.updateBordersonly sets top/bottom/innerHorizontal for the range; it does NOT set per-columnleft/rightentries, resulting in missing vertical dividers - Use generous
endRowIndexbuffer (+10 or 200) for bulk format operations — a fixedendRowIndexsilently misses the last row when rows are added - After
insertDimensionat index N, copy format from row N+1 (pushed down) to the new row at N - Always verify the last data row has correct borders after any bulk operation
API Read-Back Fallback
When Playwright is unavailable (e.g., cron automation), verify via API:
# Read back the data range after writing
gws sheets spreadsheets.values get \
--spreadsheetId SHEET_ID \
--range "TAB_NAME!A1:G100" \
--json values
Check that:
- Row count matches expected
- Column alignment is intact (each row has the same number of values)
- Sort order is correct (compare key fields across rows)
This catches data issues but NOT formatting. Flag formatting as "unverified" when using API-only fallback.
Requirements
- Claude Code with multimodal
Readtool - Playwright MCP server for screenshots
- Google Sheets API access (via
gwsCLI, Google Apps Script, or direct API) - Playwright browser authenticated with Google (for screenshot access)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.