Agent skill

XLSX Parsing

by benchflow-ai in benchflow-ai/skillsbench

Read Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas).

Apache-2.0Auto-check passedDocuments & Office

Install XLSX Parsing

skills CLI
$ npx skills add benchflow-ai/skillsbench --skill xlsx-parsing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .claude/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .claude/skills/xlsx-parsing && rm -rf skills-src

Use ~/.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/

Facts

Skill name
xlsx-parsing
GitHub stars
1.8k
Token cost
~1.4k tokens
SKILL.md length
529 words
Files
1
Skills in repo
189
Repo updated
First seen
Licence
Apache-2.0

At a glance

Read Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas).

  • Works in 3 steps: Multiple sheets, only one of which is… → Sparse cells — a row that uses a column… → Composite cells — a single cell that…
  • Reference document is an .xlsx file rather than JSON/CSV
  • SKILL.md covers Reading with openpyxl (pure…, Reading with pandas (if it's…, Empty cells: None is the… and Composite cells, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

XLSX Parsing is an agent skill from benchflow-ai/skillsbench. Read Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas). Covers multi-sheet workbooks, header rows, empty cells, merged cells, comma-separated list cells, and converting a sheet to a list-of-dicts the rest of your code can consume. Use when a task input or reference document is an .xlsx file rather than JSON/CSV.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Documents & Office, covering Excel spreadsheets and DataFrames. It works with Microsoft Excel, pandas and openpyxl. The repository describes itself as: SkillsBench evaluates how well skills work and how effective agents are at using them. The licence is Apache-2.0.

When your agent uses it

  • Reference document is an .xlsx file rather than JSON/CSV
  • Tasks that involve Excel spreadsheets
  • Tasks that involve DataFrames

Example prompts

  • “/xlsx-parsing”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Multiple sheets, only one of which is the data you actually want.
  2. Sparse cells — a row that uses a column may sit next to a row that doesn't, leaving None cells. Empty is meaningful (the rule does not…
  3. Composite cells — a single cell that contains a comma-separated list, a JSON blob, or a sentence rather than an atomic value.

What it can do on your machine

Read from SKILL.md and the folder at commit 9a1f4dd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

XLSX Parsing loads about 1.4k tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 529 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~87
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from benchflow-ai/skillsbench at commit 9a1f4dd, republished under its Apache-2.0 licence (© benchflow-ai). 529 words, ~1,388 tokens.

Download SKILL.mdSave it as .claude/skills/xlsx-parsing/SKILL.md (or your agent's skills folder).
name
xlsx-parsing
description
Read Microsoft Excel (.xlsx) files robustly with `openpyxl` (or `pandas`). Covers multi-sheet workbooks, header rows, empty cells, merged cells, comma-separated list cells, and converting a sheet to a list-of-dicts the rest of your code can consume. Use when a task input or reference document is an `.xlsx` file rather than JSON/CSV.

xlsx-parsing

Excel workbooks are the lingua franca of operational documents that nobody bothered to put in a database — playbooks, rate cards, deviation policies, finance models, SLAs. They show up in tasks with three properties that trip up naive readers:

  1. Multiple sheets, only one of which is the data you actually want.
  2. Sparse cells — a row that uses a column may sit next to a row that doesn't, leaving None cells. Empty is meaningful (the rule does not apply), not an error.
  3. Composite cells — a single cell that contains a comma-separated list, a JSON blob, or a sentence rather than an atomic value.

Treat the workbook as a typed table with declared columns, not a free-form spreadsheet. Read every sheet you need, normalise it to list[dict[str, Any]], then operate on that.

Reading with openpyxl (pure Python, no compiled dependencies)

python
import openpyxl

wb = openpyxl.load_workbook("workbook.xlsx", data_only=True, read_only=True)
print(wb.sheetnames)            # e.g., ['Metadata', 'Definitions', 'Rules']

ws = wb["Rules"]
rows = ws.iter_rows(values_only=True)
header = [str(c).strip() if c else "" for c in next(rows)]
records = [dict(zip(header, row)) for row in rows if any(cell is not None for cell in row)]

Notes:

  • data_only=True returns the cached value of formula cells instead of the formula expression. Without this you may get strings like "=A1+B2".
  • read_only=True is faster on big workbooks and avoids loading styles you don't need.
  • The any(cell is not None ...) filter drops entirely-blank rows that Excel preserves at the bottom of a sheet.
  • dict(zip(header, row)) handles trailing empty columns gracefully when a row is shorter than the header.

Reading with pandas (if it's installed)

python
import pandas as pd

# Multi-sheet read returns a dict of DataFrames
sheets = pd.read_excel("workbook.xlsx", sheet_name=None, dtype=object)
rules_df = sheets["Rules"]

# Drop fully-empty rows; keep partial rows
rules_df = rules_df.dropna(how="all")

# Iterate as dicts; NaN becomes None
records = rules_df.where(rules_df.notna(), None).to_dict(orient="records")

pandas is heavier but useful when you want grouping, joins, or numeric aggregation. Either library is fine; do not mix them in the same module.

Empty cells: None is the answer, not an error

A row that does not specify a numeric cap leaves that cell blank. The blank is part of the rule's shape — it means "no cap applies" or "this constraint is not engaged for this rule." Code defensively:

python
def get(rec, key, default=None):
    val = rec.get(key)
    return default if val is None or (isinstance(val, str) and not val.strip()) else val

Compare against is None or call .strip() rather than truthiness — 0 and False are valid values that fail truthy tests.

Show full SKILL.md (223 more words)Show less

Composite cells

Authors often put list-valued data into a single cell. A cell containing "Delaware, New York, California" is one string, not three rows.

python
def split_list_cell(value):
    if value is None:
        return []
    return [item.strip() for item in str(value).split(",") if item.strip()]

If you see a cell with curly-brace text, it is probably an embedded JSON document; parse with json.loads. Try the simple split first.

Merged cells

Merged cells appear once in the underlying data; only the top-left cell holds the value, and the rest are None. If a column is intentionally merged for a "section header" effect, fill the value down to recover row-wise records:

python
last = None
for row in records:
    if row["section"] is None:
        row["section"] = last
    else:
        last = row["section"]

If you need to know whether a cell is in a merged range, ws.merged_cells.ranges gives you the list.

Multiple sheets

Use the metadata sheet (often named Metadata, Info, or README) for workbook-level fields, and the data sheet(s) for per-record rows. Read all sheets you need before processing — do not assume the schema of one sheet is described inside another sheet you have not opened.

Putting it together for a configuration-style workbook

python
import openpyxl

def load_sheet_as_records(wb, sheet_name):
    ws = wb[sheet_name]
    rows = ws.iter_rows(values_only=True)
    header = [str(c).strip() if c else "" for c in next(rows)]
    return [
        dict(zip(header, row))
        for row in rows
        if any(cell is not None for cell in row)
    ]

wb = openpyxl.load_workbook("workbook.xlsx", data_only=True, read_only=True)
metadata = {row[0]: row[1] for row in wb["Metadata"].iter_rows(min_row=2, values_only=True)}
defs  = load_sheet_as_records(wb, "Definitions")
rules = load_sheet_as_records(wb, "Rules")

After this, rules[0]["key"], rules[0]["rule_type"], etc. are plain Python values you can branch on. The rest of your code does not need to know the input was Excel.

When not to use this skill

  • The file is .csv — use csv.DictReader directly.
  • The file is .json or .jsonl — use json.loads.
  • The file is .xls (legacy binary) — openpyxl will refuse; use xlrd<2 or convert to .xlsx first.

© benchflow-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing of benchflow-ai/skillsbench.

Open the folder on GitHubat commit 9a1f4dd

Compare with similar skills

XLSX Parsing 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.

XLSX Parsing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
XLSX Parsing this skillbenchflow-ai/skillsbench1.8k—~1.4kAutomated safety check: PassApache-2.0
Office XLSXsingula-ai/alego1091 repos~2.3kAutomated safety check: PassMIT
XLSXmateaix/mateclaw1.2k—~1.5kAutomated safety check: PassProprietary
Kimi XLSXthvroyal/kimi-skills238—~9.5kAutomated safety check: PassNone
Create Spreadsheettheexperiencecompany/gaia308—~802Automated safety check: PassCustom licence
Spreadsheetdavila7/claude-code-templates33k1 repos~1.3kAutomated safety check: NotesApache-2.0

Similar skills

  • Office XLSX

    singula-ai/alego

    Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.

    109 GitHub starsUsed in 1 repo~2.3k tokens
    Documents & OfficeAuto-check passed
  • XLSX

    mateaix/mateclaw

    Use this skill any time a spreadsheet file is the primary input or output.

    1.2k GitHub stars~1.5k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • Kimi XLSX

    thvroyal/kimi-skills

    Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.

    238 GitHub stars~9.5k tokensUpdated 6 mo ago
    Documents & OfficeAuto-check passed
  • Create Spreadsheet

    theexperiencecompany/gaia

    Generate an Excel (.xlsx) workbook or a CSV file: tables, financial models, data exports, formatted reports with charts.

    308 GitHub stars~802 tokensUpdated today
    Documents & OfficeAuto-check passed
  • Spreadsheet

    davila7/claude-code-templates

    A skill your agent uses when tasks involve creating, editing, analyzing, or formatting spreadsheets (.xlsx, .csv, .tsv) using Python (openpyxl, pandas), especially when formulas, references, and…

    33k GitHub starsUsed in 1 repo~1.3k tokens
    Documents & OfficeAuto-check: notes
  • Streaming Export Safety

    doccker/cc-use-exp

    当代码涉及 Excel/CSV/JSON/PDF 大文件导出、批量序列化、内存里构建大对象时触发。防止 OOM、临时文件残留、同步导出阻塞 HTTP 线程等内存安全陷阱。

    1.1k GitHub stars~1.9k tokensUpdated 1 mo ago
    Documents & OfficeAuto-check passed

More from benchflow-ai/skillsbench

All 189 skills in this repo
  • Lean4 Memories

    benchflow-ai/skillsbench

    This skill should be used when working on Lean 4 formalization projects to maintain persistent memory of successful proof patterns, failed approaches, project conventions, and user preferences…

    1.8k GitHub stars~3.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Senior Data Engineer

    benchflow-ai/skillsbench

    World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.

    1.8k GitHub stars~5.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Ac Branch Pi Model

    benchflow-ai/skillsbench

    AC branch pi-model power flow equations (P/Q and |S|) with transformer tap ratio and phase shift, matching acopf-math-model.md and MATPOWER branch fields.

    1.8k GitHub stars~1.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Civ6lib

    benchflow-ai/skillsbench

    Civilization 6 district mechanics library. An agent skill from benchflow-ai/skillsbench.

    1.8k GitHub stars~1.7k tokensUpdated 2 mo ago
    Auto-check passed
  • D3 Visualization

    benchflow-ai/skillsbench

    Build deterministic, verifiable data visualizations with D3.js (v6).

    1.8k GitHub stars~1.5k tokensUpdated 2 mo ago
    Auto-check passed
  • Dc Power Flow

    benchflow-ai/skillsbench

    DC power flow analysis for power systems. An agent skill from benchflow-ai/skillsbench.

    1.8k GitHub stars~717 tokensUpdated 2 mo ago
    Auto-check passed

Questions about XLSX Parsing

What does XLSX Parsing do?

Read Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas). XLSX Parsing is an agent skill from benchflow-ai/skillsbench.xlsx) files robustly with openpyxl (or pandas).

When should I use XLSX Parsing?

XLSX Parsing fits situations like: reference document is an .xlsx file rather than JSON/CSV; tasks that involve Excel spreadsheets; tasks that involve DataFrames.

How do I install XLSX Parsing in Claude Code?

Run `npx skills add benchflow-ai/skillsbench --skill xlsx-parsing -a claude-code`. Or copy the skill folder (tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing in benchflow-ai/skillsbench) into .claude/skills/xlsx-parsing in your project. Claude Code loads it when a task matches its description.

How do I install XLSX Parsing in Codex?

Run `npx skills add benchflow-ai/skillsbench --skill xlsx-parsing -a codex`. Or copy the skill folder (tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing in benchflow-ai/skillsbench) into .agents/skills/xlsx-parsing in your project. Codex loads it when a task matches its description.

Can I use XLSX Parsing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add benchflow-ai/skillsbench --skill xlsx-parsing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/xlsx-parsing, .gemini/skills/xlsx-parsing, .github/skills/xlsx-parsing and .opencode/skills/xlsx-parsing in your project.

What does XLSX Parsing need to run?

SKILL.md names no scripts, command-line tools or credentials: XLSX Parsing is instructions for the agent only. Our summary lists: Python 3.

Does XLSX Parsing access the network?

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.

Is XLSX Parsing safe to install?

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. Review the folder before installing.

What licence does XLSX Parsing use?

XLSX Parsing is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does XLSX Parsing use?

About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to XLSX Parsing?

Skills that share tags, products or a category with XLSX Parsing: Office XLSX (singula-ai/alego, 109 stars), XLSX (mateaix/mateclaw, 1.2k stars), Kimi XLSX (thvroyal/kimi-skills, 238 stars) and Create Spreadsheet (theexperiencecompany/gaia, 308 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains XLSX Parsing?

benchflow-ai (a GitHub organization) maintains it in benchflow-ai/skillsbench, which has 1,835 GitHub stars. The repository holds 189 skills in this directory. The repository was last updated on July 23, 2026.

Source: benchflow-ai/skillsbench on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.