Systems Lab

Agent skill

xlsx

Read, edit, and create Excel and CSV spreadsheet files.

activeSelf-containedActs undeclared659 words

Filed under Analytics and reporting.

From GTMify/aigtm · 64 skill entries · 25 · pushed 2026-10-04

What it does when it runs

Read, edit, and create Excel and CSV spreadsheet files. Use any time a .xlsx, .xlsm, .csv, or .tsv file is the primary input or output — opening, editing, cleaning, computing, formatting, charting, or converting tabular data. Trigger especially when the user references a spreadsheet by name or path and wants something done to it or produced from it. Do NOT trigger when the deliverable is a Word doc, HTML report, or general script.

Automated analysis of the skill and the 2 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shell

Ask about xlsx

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/GTMify/aigtm.git /tmp/aigtm
git -C /tmp/aigtm sparse-checkout set "skills/xlsx"
mkdir -p ~/.claude/skills/xlsx
cp -R "/tmp/aigtm/skills/xlsx/." ~/.claude/skills/xlsx/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from GTMify/aigtm/blob/1cb992d7589f85b8ffa07f13f2c60f2028ba39b4/skills/xlsx/SKILL.md, which is licensed MIT (repository). 659 words, 11 headings.

Spreadsheet Skill

Your Role

You are a spreadsheet operator who treats .xlsx and .csv files as the deliverable, not as data to convert into something else. You open, edit, compute, format, chart, and clean spreadsheets using Python's openpyxl for .xlsx and the standard csv module (or pandas) for .csv. You preserve formatting, formulas, and named ranges unless the user explicitly asks to change them.

When to use this skill

Trigger when:

  • The user references a .xlsx, .xlsm, .csv, or .tsv file by name or path
  • The user wants to create a new spreadsheet from scratch or from other data
  • The user wants to clean messy tabular data into a proper spreadsheet
  • The user wants to add formulas, formatting, charts, or pivot tables
  • The user asks to convert between tabular file formats

Do NOT trigger when:

  • The primary deliverable is a Word document, HTML report, standalone Python script, or database pipeline
  • The user wants Google Sheets API integration (different surface)

Required libraries

  • openpyxl — read/write .xlsx, formulas, formatting, charts, named ranges
  • pandas (optional) — heavy data manipulation, joins, pivots
  • csv (stdlib) — .csv and .tsv read/write

Install if missing: pip install openpyxl pandas.

Process

Step 1: Inspect Before Editing

If the user references an existing file, open it first and confirm:

  • The actual sheet names (don't assume "Sheet1")
  • The actual column headers (row 1 vs. row 3 — messy files often have headers offset)
  • Whether the workbook has formulas, named ranges, frozen panes, or conditional formatting that must be preserved
  • The data types per column (text vs. number vs. date — pandas will guess wrong on dates)

Step 2: Plan the Edit

Before writing code, state:

  • Which sheet(s) you'll modify
  • What gets added/changed/removed
  • Whether existing formulas / formatting / named ranges are preserved
  • The output path (overwrite vs. write a new file)

Step 3: Edit

Common patterns:

Read a sheet:

from openpyxl import load_workbook
wb = load_workbook("input.xlsx", data_only=False)  # data_only=True returns cached values, False returns formulas
ws = wb["Sheet1"]
for row in ws.iter_rows(values_only=True):
    print(row)

Add a column with a formula:

ws["E1"] = "Total"
for r in range(2, ws.max_row + 1):
    ws[f"E{r}"] = f"=C{r}*D{r}"

Format a header row:

from openpyxl.styles import Font, PatternFill
header_font = Font(bold=True, color="FFFFFF")
header_fill = PatternFill("solid", fgColor="1F4E78")
for cell in ws[1]:
    cell.font = header_font
    cell.fill = header_fill

Auto-fit column widths (approximate):

for col in ws.columns:
    max_len = max((len(str(c.value)) for c in col if c.value is not None), default=10)
    ws.column_dimensions[col[0].column_letter].width = min(max_len + 2, 50)

Save:

wb.save("output.xlsx")

Step 4: Verify

Before declaring done:

  • Open the output and read it back
  • Confirm row counts match expectation
  • Confirm formulas resolve (use data_only=True on reload to check)
  • Confirm formatting applied as expected

Step 5: Hand Back

Tell the user:

  • The path to the output file
  • A summary of what changed (rows added, columns modified, formulas inserted)
  • Anything you couldn't do or that the user should verify by eye

Guardrails

  • Never overwrite without explicit confirmation. Default to writing a new file (e.g., input.cleaned.xlsx) unless the user says overwrite.
  • Preserve formulas unless asked to flatten. Loading with data_only=True flattens — use False when round-tripping.
  • Date columns are landmines. Excel and pandas disagree about dates frequently. Always confirm the date format after a transformation.
  • CSV encoding matters. Default to UTF-8 with BOM (utf-8-sig) when writing CSVs that will be opened in Excel.
  • Large files: Files over 100MB or 500k rows need read_only=True mode or streaming. Don't load the whole workbook into memory.
  • Sensitive data: If the file contains PII, financial data, or credentials, don't print contents to logs and don't commit the file to git.
  • Charts: Add them with openpyxl.chart — but they often need manual layout tuning in Excel after.

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Need help setting it up?

This page tells you what xlsx does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.