agentsclimarketplace

Sheet create

Skill NovateStudioGit/novate-studio-skills/knowledge-ops/sheet-create

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).From its SKILL.md

Install
npx -y skills add NovateStudioGit/novate-studio-skills --skill sheet-create

Assembled 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.

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:

PathWhy it fails
openpyxl-built .xlsxWrites formula expressions without cached values; Sheets viewer doesn't auto-recalc on open → cells appear blank
Composio googlesheets connectorAuth UI flaky on their side
Apps ScriptOAuth-gated, editor errored for Will
Cross-file Cmd+C/V from a working sheetDrops 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

  1. CSV formula escaping — formulas with commas (INDEX/MATCH, ROUND(x,0), IF(...)) MUST be CSV-quoted or they split across cells. Script uses csv.writer with QUOTE_MINIMAL, which quotes any field containing a comma.
  2. Single tab + in-tab refs only — no cross-tab Assumptions!E6 refs (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.
  3. CSV preserves no formatting — currency, percent, fills, dropdowns, conditional formatting, column widths, merges. None of it. The script EMITS a follow-up checklist (format_notes from the spec) for the post-upload manual touches.
  4. 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.
  5. 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.

What ships with it: 3 files

14.5 KB alongside SKILL.md, 2 of them executable

examples/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.