Sheet create
Skill NovateStudioGit/novate-studio-skills/knowledge-ops/sheet-create
57 agent skills for Claude Code — creative production, paid growth, copywriting, ecommerce, email marketing & knowledge ops. By Novate Studio.
npx -y skills add NovateStudioGit/novate-studio-skills --skill sheet-createAssembled 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
Build a working native Google Sheet from a structured spec — formulas evaluate live, no Copy-to dance. Uses CSV→Drive auto-convert (the only reliable path; XLSX/Apps Script/Composio all fail in subtle ways). Triggered by `/sheet-create` or natural language like "build me a sheet for X", "make a Google Sheet that does Y", "create a planner/tracker/calculator sheet", "spin up a sheet with these formulas". NOT `/make-pdf` (markdown→PDF), NOT `/json-canvas` (Obsidian Canvas), NOT `/notion-tracker` (Notion-side trackers).
SKILL.md
5.4 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
/sheet-create — build a working Google Sheet from a spec
A Sheet-as-deliverable workflow that doesn't waste 3 hours on broken delivery paths. Engine: scripts/sheet_create.py (stdlib only) emits a CSV with formula text, then uploads it to Drive via the Drive MCP with contentMimeType: "text/csv". Drive auto-converts CSV uploads to a native Google Sheet at conversion time, and formulas evaluate at that conversion — so a =ROUND(C10*C11,0) in the CSV is a live, computing formula in the resulting Sheet.
The iron rule (why this skill exists)
Only one delivery path works. Four others were tried 2026-05-30 and all failed in subtle ways:
| Path | Why it fails |
|---|---|
openpyxl-built .xlsx | Writes formula expressions without cached values; Sheets viewer doesn't auto-recalc on open → cells appear blank |
Composio googlesheets connector | Auth UI flaky on their side |
| Apps Script | OAuth-gated, editor errored for Will |
| Cross-file Cmd+C/V from a working sheet | Drops formulas / breaks refs on cross-spreadsheet paste |
The working path: Python emits CSV (with formula text properly quoted) → Drive MCP create_file with contentMimeType: "text/csv" → Drive auto-converts to a native Google Sheet → formulas live.
When to use
Will wants a working Google Sheet deliverable from a structured spec — planners, financial models, calendars, dashboards, COGS trackers, channel-mix calculators, ops sheets — anything where formulas must compute live and the spec is mechanizable.
Hard-won mechanics baked into the script
- CSV formula escaping — formulas with commas (
INDEX/MATCH,ROUND(x,0),IF(...)) MUST be CSV-quoted or they split across cells. Script usescsv.writerwithQUOTE_MINIMAL, which quotes any field containing a comma. - Single tab + in-tab refs only — no cross-tab
Assumptions!E6refs (they break under Copy-to / tab-reorder). Lay out inputs/outputs in cols A–C and assumptions in cols E–I of the same tab. The spec is a flat{cell: value_or_formula}dict — one tab by design. - CSV preserves no formatting — currency, percent, fills, dropdowns, conditional formatting, column widths, merges. None of it. The script EMITS a follow-up checklist (
format_notesfrom the spec) for the post-upload manual touches. - Numeric vs string vs formula — formulas start with
=(stay as-is). Numbers stay numeric. Strings are written verbatim and CSV-quoted if they contain commas/quotes/newlines. - Sparse grid — spec only lists populated cells; the script fills in the gaps with blank cells out to
max(row, col).
How to invoke
Conversational mode
Will describes what he wants: "build me a creative planner with spend tier + offer modifier + format mix". Draft a spec (YAML), show it to him, confirm, then upload.
Direct mode
Will passes a YAML or Python-dict spec at a path. Run it.
Spec format
title: "ExampleBrand — Meta Creative Planner"
parent_folder_id: "YOUR_DRIVE_FOLDER_ID" # optional
cells:
B2: "ExampleBrand — Meta Creative Planner"
F2: "ASSUMPTIONS (edit to tune the model)"
B4: "INPUTS"
C5: 25000
C6: "Aggressive"
C10: "=INDEX(F5:F8, MATCH(C6, E5:E8, 0))"
C12: "=ROUND(C10*C11, 0)"
E5: "Modest"
E6: "Standard"
E7: "Aggressive"
E8: "Hero"
F5: 0.8
F6: 1.0
F7: 1.4
F8: 2.0
format_notes:
- "Format C5 as Currency (AUD, 0 decimals)"
- "Format C12:C13 as Number (0 decimals)"
- "Add data-validation dropdown on C6, source = E5:E8"
- "Bold B2 and F2, font 14pt"
The flow
1 — Build/confirm the spec
For conversational invocation, draft the spec from Will's description and show it before uploading. For direct invocation, load the YAML.
2 — Dry-run + print the CSV (default safety)
python3 ~/.claude/skills/sheet-create/scripts/sheet_create.py \
--spec ~/Desktop/GLOBAL/AllSkills/sheet-create/examples/creative_planner.yaml \
--dry-run --print-csv
Prints the CSV that would be uploaded. Eyeball it — every formula should be quoted, every cell in the right spot, no commas split across cells.
3 — Upload via the Drive MCP
Read the CSV emit (or call the script with --emit-csv to get the string), then call:
mcp__claude_ai_Google_Drive__create_file(
name=<title>,
contentMimeType="text/csv",
textContent=<csv_string>,
parentId=<parent_folder_id> # optional
)
Drive responds with a file id + URL — the file is now a native Google Sheet.
4 — Hand the URL + the manual-touches checklist to Will
The Sheet is live and computing. The format_notes checklist is the short list of post-upload manual touches (currency formats, dropdowns, fills, column widths) — print these inline so Will can knock them out in <2 min.
Report to Will
After a live run: file URL, title, parent_folder_id it landed in, count of cells written, and the format_notes checklist as a copy-pasteable to-do list.