XLSX
K-Dense-AI/claude-scientific-writer
Create, edit, analyze, or convert Excel spreadsheets (.xlsx, .xlsm, .xltx) where the workbook file is the primary deliverable.
A skill your agent uses when working a spreadsheet programmatically — writing or repairing a formula, generating an .xlsx with Python including charts and conditional formats, driving Google Sheets…
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness spreadsheet-ops --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/spreadsheet-ops .claude/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .claude/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-opsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness spreadsheet-ops --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/spreadsheet-ops .agents/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .agents/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness spreadsheet-ops --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/spreadsheet-ops .cursor/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .cursor/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/spreadsheet-ops--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness spreadsheet-ops --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/spreadsheet-ops .gemini/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .gemini/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness spreadsheet-opsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/spreadsheet-ops .github/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .github/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness spreadsheet-ops --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/spreadsheet-ops .opencode/skills/spreadsheet-ops && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "spreadsheet-ops" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/spreadsheet-ops into .opencode/skills/spreadsheet-ops/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spreadsheet-ops", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
spreadsheet-opsA skill your agent uses when working a spreadsheet programmatically — writing or repairing a formula, generating an .xlsx with Python including charts and conditional formats, driving Google Sheets…
Spreadsheet Ops is an agent skill from ericrisco/rsc-harness. Use when working a spreadsheet programmatically — writing or repairing a formula, generating an .xlsx with Python including charts and conditional formats, driving Google Sheets from a script, building a read-transform-write pipeline, or writing an in-sheet macro or trigger. Covers formula errors, Sheets API quota, service-account permissions, and formulas that read back blank. NOT pure dedupe or normalisation with no sheet output (that is data-cleaning), NOT scraping a web table into rows (that is data-scraper)…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/formula-cookbook.md`).
It sits in Documents & Office, covering Excel spreadsheets and Web scraping. It works with Microsoft Excel, Python, Google Sheets and openpyxl. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Spreadsheet Ops loads about 2.9k tokens when it runs, and up to ~5.7k if it reads all its reference files. Until then it costs about 149 tokens; SKILL.md has 1,307 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,307 words, ~2,936 tokens.
.claude/skills/spreadsheet-ops/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.A spreadsheet is a runtime, not a document. Your job is to emit a checkable artifact — a .xlsx
file that opens, a script that compiles, a cell range you can re-read — never a hand-waved formula in
prose. Pick the tool that matches the runtime (local file vs cloud sheet, one-shot vs event-driven),
write the formula with comma arguments, and verify before you claim it works.
The trap that bites everyone first: openpyxl writes formulas but does not compute them. The string
is stored; Excel evaluates it on open. If you read the cell back with Python it is None until a real
Excel/LibreOffice session has saved it. Internalize that before you touch a workbook.
| Your situation | Reach for | Why |
|---|---|---|
Read and modify an existing local .xlsx | openpyxl | Only mainstream lib that round-trips an existing file. |
Write a new .xlsx rich with charts/conditional formats, possibly large | xlsxwriter (via pandas ExcelWriter) | Write-only but the richest formatting + low-memory constant_memory mode. |
| Dump a DataFrame to a sheet, minimal fuss | pandas df.to_excel(...) | Wraps an engine; pass engine= explicitly so the result does not depend on what is installed. |
| Read/write a cloud Google Sheet from a script | gspread (+ gspread-formatting for colors/rules) | Friendly wrapper over the Sheets API for CRUD. |
| High-volume cloud writes, must beat quotas | Sheets API v4 batchUpdate | One batched call counts as one request — survives the per-minute limit. |
| In-sheet menus, time-driven triggers, custom functions | Apps Script (V8) | Runs inside the sheet; the only place for onEdit/menus. |
Two you will confuse: xlsxwriter cannot open an existing file — if you need to edit one in place,
that is openpyxl. And gspread vs the raw Sheets API is convenience vs throughput: reach for raw
batchUpdate only when gspread's per-call writes would blow the quota.
Versions seen on PyPI when this was written (2026-06-02): openpyxl 3.1.5, gspread 6.2.1 (Python 3.8+), gspread-formatting 1.2.1, pandas on the 3.x line, Sheets API v4, Apps Script on the V8 runtime. Treat these as a floor, re-check PyPI before pinning, and pin whatever you actually resolve — do not copy a point release from a doc as gospel.
=SUM(A1;A2) → Good: =SUM(A1,A2).=. ws["A1"] = "SUM(1,1)" stores literal text; ws["A1"] = "=SUM(1,1)" stores a formula. No leading = means no calculation, ever.=VLOOKUP(A2,Sheet2!A:B,2,0) → Good: =XLOOKUP(A2,Sheet2!$A:$A,Sheet2!$B:$B).=FILTER(...), =SORT(...),
=UNIQUE(...) spill automatically and are readable. A spill blocked by data below it raises
#SPILL!; clear the range, do not array-enter.LET (name sub-expressions once) or a helper column.
Bad: =IF(A1>90,"A",IF(A1>80,"B",IF(A1>70,"C","D"))) → Good: a lookup table + XLOOKUP, or
=LET(g,A1, IF(g>90,"A", IF(g>80,"B","C"))) kept shallow.When generating cross-sheet formulas, SHEET() returns a sheet's index and SHEETS() returns the
sheet count — both have shipped in Excel for years (SHEET/SHEETS since Excel 2013) and exist in Google
Sheets, so they are safe to emit. Full XLOOKUP/SUMIFS/LET patterns and the #VALUE!/#REF!/#N/A/#NAME?
error decoder live in references/formula-cookbook.md.
The no-compute trap, stated as code:
from openpyxl import load_workbook
wb = load_workbook("report.xlsx")
ws = wb.active
ws["C2"] = "=A2*B2" # stores the FORMULA string, not a number
wb.save("report.xlsx")
# Re-reading C2 now returns "=A2*B2" (the formula), or with data_only=True
# returns None — because no Excel has opened+saved the file to cache a value.
back = load_workbook("report.xlsx", data_only=True)
assert back.active["C2"].value is None # last cached value: none yetSo: if a downstream step needs the computed number, either compute it in Python and write the value, or open the file once in Excel/LibreOffice headless to populate the cache. Do not assume openpyxl evaluated it.
Append a sheet to an existing file (the only mode that does not silently truncate):
import pandas as pd
with pd.ExcelWriter("report.xlsx", engine="openpyxl", mode="a",
if_sheet_exists="replace") as xl:
df.to_excel(xl, sheet_name="2026-Q2", index=False)Charts and conditional formatting on a new file go through xlsxwriter (richer) — it is write-only,
so never point it at a file you need to keep. Recipes (chart, conditional format, write_only/
constant_memory for big files) are in references/python-excel.md.
import gspread
gc = gspread.service_account(filename="bot-key.json") # service account
sh = gc.open_by_key("SPREADSHEET_ID")
ws = sh.worksheet("Orders")
ws.append_rows([["2026-06-02", "INV-1001", 240.00]],
value_input_option="USER_ENTERED") # parses formulas/datesThe failure that wastes the most time: a service account has zero access until the sheet is shared
with its email. Open the key JSON, copy client_email, and share the sheet with it (Editor) — a
PermissionError/SpreadsheetNotFound here is almost always an unshared sheet, not bad code.
Quotas (as published 2026-06-02 — re-check Google's "Usage limits" page, these shift): 300 read
req/min/project, 60 read req/min/user (writes mirror this), refilled each minute, no daily cap under
the per-minute ceiling. A batchUpdate — with all its sub-requests inside — counts as one request.
So batch: build one batchUpdate body instead of N update calls, and wrap calls in exponential
backoff on HTTP 429. Batching is the difference between a nightly job that survives and one that 429s.
Creating the OAuth client or service account itself is google-workspace's
job; this skill assumes the credential exists and owns the Sheets surface. batchUpdate request shapes
and backoff code are in references/sheets-api-appsscript.md.
Write for V8 — Google deprecated the legacy Rhino runtime (Feb 2025) and set its retirement for on
or after 2026-01-31, so new code should never target it. V8 has no fetch, no timers, no streams
— use UrlFetchApp.fetch() (or fetchAll() for parallel) for HTTP. No ES6 import/export, no private
#fields.
Read and write the sheet in one range operation, never a per-cell loop — getValue()/setValue()
inside a loop makes one API round-trip per cell and times out on real data:
function colorOverdue() {
const sh = SpreadsheetApp.getActiveSheet();
const data = sh.getDataRange().getValues(); // ONE read, all rows
const out = data.map(r => r[3] === "OVERDUE" ? ["#fde0e0"] : ["#ffffff"]);
sh.getRange(1, 1, out.length, 1).setBackgrounds(out.map(c => c)); // ONE write
}Time-driven triggers (run nightly), onEdit simple triggers, and custom menus are covered in
references/sheets-api-appsscript.md.
A pipeline that reruns must not duplicate rows. Decide the write mode first:
order_id) into a map, update matched rows, append the
rest. Idempotent: rerunning yields the same sheet, no duplicates.--apply flag
is set. This catches a wrong key or a header drift before it touches the live sheet.batchUpdate / setValues) and back off on 429.| Anti-pattern | Why it bites | Do instead |
|---|---|---|
Semicolon arguments =SUM(A1;A2) | File format is comma-only; locale display fools you | Always commas =SUM(A1,A2) |
Formula string without leading = | Stored as literal text, never calculates | Start the string with = |
| Assuming openpyxl computed the result | It only stores the formula; value is None until Excel opens it | Write the value, or open once to cache |
Per-cell getValue()/setValue() loop (Apps Script) | One round-trip per cell → timeout | getValues()/setValues() once per range |
N single update calls to the Sheets API | Blows 60/user-min, 300/project-min quota | One batchUpdate; backoff on 429 |
| Service account not shared with the sheet | PermissionError, looks like a code bug | Share the sheet with client_email from the key |
Deep-nested IF chains | Unreadable, miscounted parens, hard to repair | LET, a lookup table, or a helper column |
| xlsxwriter to modify an existing file | It is write-only; you lose the original | openpyxl for read+modify |
df.to_excel("f.xlsx") over an existing file | Default mode truncates the whole workbook | ExcelWriter(..., mode="a") to append |
| VLOOKUP with a hardcoded column index | Index miscounts when columns move; approximate-match default | XLOOKUP with explicit ranges |
Run scripts/verify.sh (read-only by default; pass a path to a generated .py/.xlsx). It
py_compiles generated scripts, opens produced workbooks with openpyxl to confirm a sheet + header row,
and lints formula strings for the semicolon-argument bug. Cloud paths are validated by structure, not
live Google calls — no network or credentials required. On an empty/clean target it exits 0.
References: python-excel.md ·
sheets-api-appsscript.md ·
formula-cookbook.md.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in skills/spreadsheet-ops of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Spreadsheet Ops next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Spreadsheet Ops this skillericrisco/rsc-harness | 156 | — | ~2.9k | Automated safety check: Pass | MIT | |
| XLSXK-Dense-AI/claude-scientific-writer | 2.4k | — | ~2.1k | Automated safety check: Notes | Proprietary | |
| XLSXrvdbreemen/OTGW-firmware | 207 | 35 repos | ~2.9k | Automated safety check: Pass | Proprietary | |
| Excel Workbook EditorTokenRhythm/opensquilla | 7.1k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Kimi XLSXthvroyal/kimi-skills | 238 | — | ~9.5k | Automated safety check: Pass | None | |
| Office XLSXopen-octo/octo-agent | 125 | — | ~1.8k | Automated safety check: Notes | MIT |
K-Dense-AI/claude-scientific-writer
Create, edit, analyze, or convert Excel spreadsheets (.xlsx, .xlsm, .xltx) where the workbook file is the primary deliverable.
rvdbreemen/OTGW-firmware
Use this skill any time a spreadsheet file is the primary input or output.
TokenRhythm/opensquilla
Inspects, edits in place or creates Microsoft Excel .xlsx workbooks with openpyxl, treating each cell as a typed number, string, datetime or formula value.
thvroyal/kimi-skills
Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.
open-octo/octo-agent
Create, read, and edit Excel (.xlsx) spreadsheets programmatically with openpyxl — cell values, formulas, styling (fonts/fills/borders/alignment/number formats), merged cells, multiple sheets…
doccker/cc-use-exp
当实现用户驱动的大文件导出或批量序列化(Excel/CSV/JSON/JSONL/PDF,数据量未知或超过 1 万行/10 MB)时触发;普通小文件下载、静态资源下载、非导出 Writer/Report 类不触发。防止 OOM、临时文件残留、同步导出阻塞 HTTP 线程和表格公式注入。
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Categories
A skill your agent uses when working a spreadsheet programmatically — writing or repairing a formula, generating an .xlsx with Python including charts and conditional formats, driving Google Sheets…. Spreadsheet Ops is an agent skill from ericrisco/rsc-harness.xlsx with Python including charts and conditional formats, driving Google Sheets from a script, building a read-transform-write pipeline, or writing an in-sheet macro or trigger.
Spreadsheet Ops fits situations like: working a spreadsheet programmatically — writing; repairing a formula; generating an .xlsx with Python including charts and conditional formats; driving Google Sheets from a script.
Run `npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a claude-code`. Or copy the skill folder (skills/spreadsheet-ops in ericrisco/rsc-harness) into .claude/skills/spreadsheet-ops in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a codex`. Or copy the skill folder (skills/spreadsheet-ops in ericrisco/rsc-harness) into .agents/skills/spreadsheet-ops in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill spreadsheet-ops -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spreadsheet-ops, .gemini/skills/spreadsheet-ops, .github/skills/spreadsheet-ops and .opencode/skills/spreadsheet-ops in your project.
Going by SKILL.md and its folder, Spreadsheet Ops needs a shell for the scripts in its folder. Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Spreadsheet Ops is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Spreadsheet Ops: XLSX (K-Dense-AI/claude-scientific-writer, 2.4k stars), XLSX (rvdbreemen/OTGW-firmware, 207 stars), Excel Workbook Editor (TokenRhythm/opensquilla, 7.1k stars) and Kimi XLSX (thvroyal/kimi-skills, 238 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.