Office XLSX
singula-ai/alego
Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.
Read Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas).
$ npx skills add benchflow-ai/skillsbench --skill xlsx-parsing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --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/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-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 "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .claude/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsingType 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 benchflow-ai/skillsbench --skill xlsx-parsing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .agents/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .agents/skills/xlsx-parsing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .agents/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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 benchflow-ai/skillsbench --skill xlsx-parsing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .cursor/skills/xlsx-parsing && 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 "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .cursor/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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/benchflow-ai/skillsbench.git --path tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing--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 benchflow-ai/skillsbench --skill xlsx-parsing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .gemini/skills/xlsx-parsing && 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 "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .gemini/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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 benchflow-ai/skillsbench xlsx-parsingInstalls 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 benchflow-ai/skillsbench --skill xlsx-parsing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .github/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .github/skills/xlsx-parsing && 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 "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .github/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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 benchflow-ai/skillsbench --skill xlsx-parsing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install benchflow-ai/skillsbench xlsx-parsing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing .opencode/skills/xlsx-parsing && 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 "xlsx-parsing" agent skill from https://github.com/benchflow-ai/skillsbench/tree/main/tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing into .opencode/skills/xlsx-parsing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx-parsing", 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.
xlsx-parsingRead Microsoft Excel (.xlsx) files robustly with openpyxl (or pandas).
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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9a1f4dd. 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.
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.
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.
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.
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); files beside SKILL.md are not scanned.
The full file from benchflow-ai/skillsbench at commit 9a1f4dd, republished under its Apache-2.0 licence (© benchflow-ai). 529 words, ~1,388 tokens.
.claude/skills/xlsx-parsing/SKILL.md (or your agent's skills folder).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:
None cells. Empty is meaningful (the rule does not apply), not an error.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.
openpyxl (pure Python, no compiled dependencies)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.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.pandas (if it's installed)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.
None is the answer, not an errorA 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:
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 valCompare against is None or call .strip() rather than truthiness — 0 and False are valid values that fail truthy tests.
Authors often put list-valued data into a single cell. A cell containing "Delaware, New York, California" is one string, not three rows.
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 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:
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.
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.
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.
.csv — use csv.DictReader directly..json or .jsonl — use json.loads..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
Just SKILL.md in tasks-extra/nda-playbook-review/environment/skills/xlsx-parsing of benchflow-ai/skillsbench.
Open the folder on GitHubat commit 9a1f4dd
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| XLSX Parsing this skillbenchflow-ai/skillsbench | 1.8k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Office XLSXsingula-ai/alego | 109 | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| XLSXmateaix/mateclaw | 1.2k | — | ~1.5k | Automated safety check: Pass | Proprietary | |
| Kimi XLSXthvroyal/kimi-skills | 238 | — | ~9.5k | Automated safety check: Pass | None | |
| Create Spreadsheettheexperiencecompany/gaia | 308 | — | ~802 | Automated safety check: Pass | Custom licence | |
| Spreadsheetdavila7/claude-code-templates | 33k | 1 repos | ~1.3k | Automated safety check: Notes | Apache-2.0 |
singula-ai/alego
Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.
mateaix/mateclaw
Use this skill any time a spreadsheet file is the primary input or output.
thvroyal/kimi-skills
Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.
theexperiencecompany/gaia
Generate an Excel (.xlsx) workbook or a CSV file: tables, financial models, data exports, formatted reports with charts.
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…
doccker/cc-use-exp
当代码涉及 Excel/CSV/JSON/PDF 大文件导出、批量序列化、内存里构建大对象时触发。防止 OOM、临时文件残留、同步导出阻塞 HTTP 线程等内存安全陷阱。
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…
benchflow-ai/skillsbench
World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.
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.
benchflow-ai/skillsbench
Civilization 6 district mechanics library. An agent skill from benchflow-ai/skillsbench.
benchflow-ai/skillsbench
Build deterministic, verifiable data visualizations with D3.js (v6).
benchflow-ai/skillsbench
DC power flow analysis for power systems. An agent skill from benchflow-ai/skillsbench.
Works with
Categories
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).
XLSX Parsing fits situations like: reference document is an .xlsx file rather than JSON/CSV; tasks that involve Excel spreadsheets; tasks that involve DataFrames.
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.
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.
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.
SKILL.md names no scripts, command-line tools or credentials: XLSX Parsing is instructions for the agent only. Our summary lists: Python 3.
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. Review the folder before installing.
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.
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.
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.
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.