spreadsheet-authoring

spreadsheet-authoring is a skill for Claude Code, Codex from vellum-ai/vellum-assistant. It costs 44 tokens per session (1,681 once invoked), scanned A, original, MIT.

A tool for creating and editing Excel workbooks whose formula cells also contain their latest computed values. Excel workbooks are spreadsheet files that can store both formulas and results.

In plain words
What is it for?
Use it to create or update .xlsx files, calculate and verify formulas, and apply date and time formats.
Why use it?
It prevents previews and viewers without a formula engine from showing blank totals or formula text instead of the calculated numbers.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to create or update .xlsx files, calculate and verify formulas, and apply date and time formats.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/vellum-ai/vellum-assistant/spreadsheet-authoring
About the project

Vellum Assistant is a personal AI assistant that remembers information about users, learns their preferences, and takes actions across connected apps. It is intended for people who want an assistant that can manage conversations, unfinished work, and proactive notifications over time. The catalogue skills, hooks, instruction, and setting configure or extend how the assistant works.

vellum-ai/vellum-assistant · 1,430 stars · on GitHub · vellum.ai

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add vellum-ai/vellum-assistant --skill spreadsheet-authoring
Clone the repo
git clone --depth 1 https://github.com/vellum-ai/vellum-assistant

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for spreadsheet-authoring

README.md
[![agentmods](https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/spreadsheet-authoring/github.svg)](https://agentmods.dev/skills/vellum-ai/vellum-assistant/spreadsheet-authoring)
Your own site
<a href="https://agentmods.dev/skills/vellum-ai/vellum-assistant/spreadsheet-authoring"><img src="https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/spreadsheet-authoring/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for spreadsheet-authoring

Your own site · 80×15
<a href="https://agentmods.dev/skills/vellum-ai/vellum-assistant/spreadsheet-authoring"><img src="https://agentmods.dev/badge/skills/vellum-ai/vellum-assistant/spreadsheet-authoring.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 44 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,681 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00044 $0.01681
Opus 5.5 $0.00018 $0.00672
Sonnet 5.5 $0.00009 $0.00336
Haiku 4.5 $0.00004 $0.00168

Measured 22d ago against content hash 8ba6c79cc846, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

spreadsheet-authoring scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 22d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/spreadsheet-authoring/SKILL.md · 171 lines

How it starts

The opening of the file, as written. The whole thing — 171 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Spreadsheet Authoring

Write workbooks whose numbers are visible everywhere they are opened.

A formula is stored with the value it produced

An .xlsx cell holding a formula stores two things: the formula text, and the value that formula last produced. Excel fills the value in when it saves. openpyxl writes none, because it has no formula engine.

Anything that does not run a formula engine shows what the file stores. Chat file previews, Quick Look, Google Drive previews, and mail previews all read the stored value, so a workbook written by openpyxl shows =SUM(C2:C7) where the total should be, and a summary sheet of formulas comes out blank.

So: write the computed value next to every formula. Compute it in Python, where the data already is.

Install the two packages first

Both come from PyPI and neither is there by default. Run this once at the start of the task; the import check makes it a no-op when they are already installed.

python3 -c "import xlsxwriter, openpyxl" 2>/dev/null \
  || pip install --user --quiet XlsxWriter==3.2.9 openpyxl==3.1.5 \
  || pip install --user --quiet --break-system-packages XlsxWriter==3.2.9 openpyxl==3.1.5

Use pip, not python3 -m pip. Some environments mark the system Python as externally managed, and the second form is refused there outright. If both attempts fail, build a virtualenv somewhere that persists (python3 -m venv .venv), install into it, and run the scripts below with .venv/bin/python.

Writing a new workbook

Use XlsxWriter. write_formula(row, col, formula, format, value) takes the value as its last argument, which is the whole point.

import datetime

import xlsxwriter

rows = [
    ("Widget", datetime.date(2026, 1, 5), 120, 4.50),
    ("Gadget", datetime.date(2026, 1, 6), 80, 12.00),
    ("Doohickey", datetime.date(2026, 1, 7), 45, 7.25),
]
last = len(rows) + 1

book = xlsxwriter.Workbook("sales.xlsx")
bold = book.add_format({"bold": True})
money = book.add_format({"num_format": "#,##0.00"})
day = book.add_format({"num_format": "yyyy-mm-dd"})

sales = book.add_worksheet("Sales")
sales.write_row(0, 0, ["Item", "Date", "Units", "Unit price", "Total"], bold)
for index, (item, sold_on, units, price) in enumerate(rows, start=1):
    sales.write_string(index, 0, item)
    sales.write_datetime(index, 1, sold_on, day)
    sales.write_number(index, 2, units)
    sales.write_number(index, 3, price, money)
    line = index + 1
    sales.write_formula(index, 4, f"=C{line}*D{line}", money, units * price)

summary = book.add_worksheet("Summary")
summary.write_string(0, 0, "Revenue", bold)
summary.write_formula(
    0, 1, f"=SUM(Sales!E2:E{last})", money, sum(u * p for _, _, u, p in rows)
)
summary.write_string(1, 0, "Items sold", bold)
summary.write_formula(1, 1, f"=COUNTA(Sales!A2:A{last})", None, len(rows))

book.close()

Read the full file on GitHub · 171 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 22d ago First seen · 171 lines · 44 tokens per session scan A 8ba6c79cc846

Subscribe to this mod's changes

spreadsheet-authoring is a skill published in the GitHub repository vellum-ai/vellum-assistant (1,430 stars, last pushed 3d ago), licensed MIT. It adds 44 tokens to every session and 1,681 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-25.

Related

Other skills, from other repositories

ha-data-analytics

A local-first data-analysis and reporting skill for CSV and spreadsheet files. It produces decision-ready analyses and shareable offline reports while separating facts, calculations, interpretations, and recommendations.

shiwenwen/hope-agent · 106 tokens

office-xlsx

Use when the user asks to create, inspect, verify, analyze, format, or deliver Excel .xlsx workbooks, Google Sheets-targeted spreadsheet artifacts, trackers, budgets, models, tables, dashboards, formulas, CSV/TSV-to-XLSX conversions, or spreadsheet-ready data packs.

shiwenwen/hope-agent · 64 tokens

sandbox-xlsx

Read and write Excel workbooks in a Code node or CodeAct action, with exceljs running on the host.

nodetool-ai/nodetool · 26 tokens

sandbox-csv

Parse and write CSV in a Code node or CodeAct action, with papaparse running on the host behind a generated facade.

nodetool-ai/nodetool · 29 tokens

aio-google-workspace

Interact with Google Workspace services via the gws CLI. Use when the user wants to send email, read Gmail, upload to Drive, create a Google Calendar event, read or write Google Sheets, generate a standup report, manage Google Tasks, or work with Google Docs, Slides, Chat, or Contacts.

aiocean/claude-plugins · 67 tokens

anthropic-xlsx

Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify…

davekilleen/Dex · 99 tokens