Skill review

The xlsx skill, reviewed

From anthropics/skills. Kin scored it 87/100 and says: install it. Number 2 of 30 reviewed skills.

Reviewed on November 7, 2026. The skill may have changed since: read it on GitHub.

Kin, the Briefkin mascotA small dark card with two round eyes, brows, a mouth and an amber dot on its corner.

anthropics/skills · skills/xlsx/SKILL.md

A
87/100Very good
Install it

xlsx

“Anthropic's xlsx skill: dense, battle-tested spreadsheet rules that catch the silent formula bugs”

Post on X

What it does

Guides the agent through creating, editing and reading Excel and CSV files with openpyxl and pandas. It then recalculates every formula through LibreOffice to catch errors. Most of it is hard-won gotchas about formulas, cached values, links and finance formatting.

When the agent uses it
Whenever a spreadsheet file (.xlsx, .xlsm, .csv, .tsv) is the main input or output: open, edit, fix, clean, create or convert one.
Who it is for
Install if your agent builds or edits Excel files in a Python sandbox with LibreOffice. Skip it if you live in Google Sheets or have no LibreOffice.
What it costs
75 lines, about 2.3k tokens once the agent loads it, plus 2 files beside it.
The description the agent sees

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .xltx, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

What it tells the agent to do

  1. Pick the tool by task: openpyxl for formulas and formatting, pandas for bulk data, markitdown for a quick look
  2. When editing, find the designated input cells, match the file's conventions and leave existing formulas untouched
  3. Write real formulas, not computed totals; test 2–3 first, using Excel-2007 functions or _xlfn.-prefixed ones
  4. Run python scripts/recalc.py output.xlsx, fix the cells it names, and rerun until status is success
  5. Document every assumption and hardcoded number in a comment or adjacent cell, citing sources
  6. For financial models, apply the blue/black/green color code, number formats and one-assumption-per-cell structure

Lines worth reading

Straight from the file, with why each one matters.

  1. line 3the xlsx in my downloads

    The trigger is written in the user's casual words, so a vague request still finds the skill.

  2. line 23An error you introduced looks exactly like one you inherited.

    A sharp rule. 'It was already broken' needs proof from the original file.

  3. line 48A green recalc proves your formulas *evaluate*, not that they are *right*.

    Rare honesty about the limits of its own check. Wrong ranges pass silently.

  4. line 69A formula LibreOffice could not parse is written back **lowercased**

    A neat debugging tell that you only learn by getting burned.

  5. line 91years as text (`"2024"`, never `2,024`)

    Every finance analyst has seen the year 2,024. Now the agent won't make it.

Watch out for

  • Medium

    recalc.py rewrites the file in place. Pointed at the user's original, it alters it with no copy made first.

    line 40the file is **rewritten in place**
  • Low

    --force lets the agent push through and delete external workbook links. The text accepts that loss without saying to ask the user.

    line 58`--force` overrides,
  • Low

    It may pip install missing packages, which pulls code from PyPI at run time.

    line 16`pip install` the missing package

The scorecard

  • TriggerSays when to use it
    9/10

    Clear uses, file types, casual phrasing and explicit do-not-trigger cases, under the cap.

  • FocusOne clear job
    8/10

    Spreadsheets throughout, though the finance section is a second job tucked inside.

  • LeanLight to load
    9/10

    About 75 lines, almost all rules or gotchas. The script carries the heavy logic.

  • ConcreteSteps you can follow
    9/10

    Exact command, JSON fields, exit codes, function lists and formats. Few full examples.

  • SafeSafe to run
    8/10

    No secrets or remote scripts. In-place rewrites and --force deserve an ask-first rule.

What it does well

  • Explains recalc.py's exit codes precisely, including that errors_found exits 0, so a clean exit isn't mistaken for a clean file.
  • Lists exactly which post-2007 functions need _xlfn. and which never work, with the reason.
  • The openpyxl gotchas (data_only destroys formulas, keep_vba, merged cells) are the real traps, stated in one line each.

How it could be better

  1. Recalculate a copy, never the user's original

    recalc.py overwrites in place, and --force can drop external links, so the original should be kept safe.

    Add
    Always save output to a new path (e.g. `<name>_edited.xlsx`) and run `recalc.py` on that copy. Never use `--force` without asking the user first.
  2. Fix or remove the soffice.py reference

    Dependencies cites scripts/office/soffice.py, which is not in the skill's folder listing, so the agent may look for a missing file.

    Add
    LibreOffice (`soffice`) must be on PATH. If `recalc.py` returns an `error` key mentioning soffice, install it with `<install command>`.
  3. Add one end-to-end example

    The rules are sharp, but a short worked case shows the full write-recalc-check loop at once.

    Add
    ## Example
    ```python
    from openpyxl import Workbook
    wb = Workbook(); ws = wb.active
    ws['A1'] = 'Revenue ($mm)'; ws['B2'] = 100; ws['B3'] = '=B2*(1+$B$1)'
    wb.save('<output>.xlsx')
    ```
    Then: `python scripts/recalc.py <output>.xlsx` → expect `{"status": "success", "total_errors": 0, ...}`

In the skill’s folder

Listed, not read: the agent opens these only when SKILL.md sends it there.

  • LICENSE.txt
  • scripts/recalc.py

Kin reviews against Anthropic’s Extend Claude with skills and agentskills.io’s the Agent Skills standard. It reads SKILL.md only, so a script beside it can still do things the file does not say.

Thinking of installing another skill?

Link it or paste its SKILL.md and Kin reviews it the same way. Free, no sign-up.

Review a skill

More reviewed skills

Skills run while you look away.

Briefkin shows every Claude Code, Codex and Cursor session on one board: working, waiting on you, done. Answer them from your phone. Free in the open beta.

Make your board