XLSX Spreadsheet Toolkit
XiaomiMiMo/MiMo-Code
Builds, edits, cleans, recalculates and reads Excel workbooks and CSV files with openpyxl and pandas, plus LibreOffice for recalculation and PDF export.
Creates and edits .xlsx workbooks with real Excel formulas rather than hardcoded computed values, defaulting to exceljs in TypeScript with a static formula-safety check.
$ npx skills add pipeshub-ai/pipeshub-ai --skill xlsx -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pipeshub-ai/pipeshub-ai xlsx --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/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .claude/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .claude/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsxType 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 pipeshub-ai/pipeshub-ai --skill xlsx -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pipeshub-ai/pipeshub-ai xlsx --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .agents/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .agents/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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 pipeshub-ai/pipeshub-ai --skill xlsx -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pipeshub-ai/pipeshub-ai xlsx --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .cursor/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .cursor/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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/pipeshub-ai/pipeshub-ai.git --path backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx--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 pipeshub-ai/pipeshub-ai --skill xlsx -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pipeshub-ai/pipeshub-ai xlsx --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .gemini/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .gemini/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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 pipeshub-ai/pipeshub-ai xlsxInstalls 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 pipeshub-ai/pipeshub-ai --skill xlsx -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .github/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .github/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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 pipeshub-ai/pipeshub-ai --skill xlsx -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pipeshub-ai/pipeshub-ai xlsx --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pipeshub-ai/pipeshub-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx .opencode/skills/xlsx && 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" agent skill from https://github.com/pipeshub-ai/pipeshub-ai/tree/main/backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx into .opencode/skills/xlsx/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "xlsx", 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.
xlsxCreates and edits .xlsx workbooks with real Excel formulas rather than hardcoded computed values, defaulting to exceljs in TypeScript with a static formula-safety check.
The skill's central rule is that any cell whose value is a calculation the user will keep updating, such as a total, percentage or lookup, must be written as an actual Excel formula rather than the number the generating code computed, because a hardcoded number looks right today but silently goes stale the moment an input cell changes; raw input data the user supplied is the one exception and stays hardcoded. In exceljs, a formula is set as an object like { formula: "SUM(B2:B9)" } rather than a string starting with an equals sign.
A quick-reference table sets exceljs in TypeScript as the default for creating or editing a workbook and for bulk tabular data, reaching for openpyxl or pandas only when the workbook is a genuine byproduct of Python-side data analysis already underway, not as a first choice; both are pre-installed in the sandbox. A static formula sanity-check script ships in both a TypeScript and a Python version, run against a finished file to check formulas without actually recalculating them, since the skill notes formulas are not recalculated in this environment.
Read from SKILL.md and the folder at commit 18d929a. 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.
Ships 2 files in scripts/ (Python and TypeScript), which the agent can run.
Shell commands in SKILL.md call:
nodepythonnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
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.
PipesHub Excel Spreadsheet Builder loads about 1.8k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 780 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); the scripts in this folder are not scanned.
The full file from pipeshub-ai/pipeshub-ai at commit 18d929a, republished under its Apache-2.0 licence (© pipeshub-ai). 780 words, ~1,800 tokens.
.claude/skills/xlsx/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.| Task | Default (Node) | Fallback (Python) |
|---|---|---|
| Create / edit a workbook | exceljs — write a TypeScript program (packages: ["exceljs"]) and run it via your coding tool; pre-installed in the standard sandbox image | openpyxl — reach for this only when the workbook is a byproduct of a larger pandas-based analysis already running in Python (see data-analysis), not as a first choice |
| Bulk tabular data in/out | exceljs (worksheet.addRows(records)) | pandas (pd.read_excel/DataFrame.to_excel) when the data is already a DataFrame |
| Static formula sanity-check | node skills/xlsx/scripts/verify_formulas.ts <file.xlsx> (via tsx, already installed by the sandbox's TypeScript runtime) | python skills/xlsx/scripts/verify_formulas.py <file.xlsx> |
Default to exceljs in TypeScript for any new spreadsheet-creation task, per this environment's Node-first policy for office-document generation — reach for openpyxl/pandas only when the workbook is genuinely a byproduct of Python-side data work you're already doing (e.g. exporting a data-analysis result), not as a starting point. Both are already installed/allowlisted — no extra setup either way.
When a cell's value is the result of a calculation the user will want to keep updating (a total, a percentage, a lookup), write it as an actual Excel formula, never as the number your code computed on the JS/Python side. A hardcoded number looks correct today but silently goes stale the moment the user edits an input cell — which defeats the entire purpose of giving them a spreadsheet instead of a static table. This applies to totals, subtotals, percentages-of-total, running balances, and any lookup/reference between sheets.
In exceljs, a formula is a cell value shaped as an object, not a string prefixed with =:
worksheet.getCell("B10").value = { formula: "SUM(B2:B9)" };Exception: raw input data (the numbers the user gave you, or that you extracted from a source document) should be hardcoded values — only derived values need to be formulas.
import ExcelJS from "exceljs";
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet("Report", {
views: [{ state: "frozen", ySplit: 1 }], // freeze the header row
});
sheet.columns = [
{ header: "Item", key: "item", width: 32 },
{ header: "Amount", key: "amount", width: 14, style: { numFmt: "#,##0.00" } },
];
sheet.addRows([{ item: "Widgets", amount: 1200 }, { item: "Gadgets", amount: 830 }]);
sheet.getCell(`B${sheet.rowCount + 1}`).value = { formula: `SUM(B2:B${sheet.rowCount})` };
await workbook.xlsx.writeFile("report.xlsx");width in the columns definition, or worksheet.getColumn(n).width = ...) and number formats (cell.numFmt = "#,##0.00" / "0.0%") — an unformatted sheet of raw numbers reads as unfinished.worksheet.views = [{ state: "frozen", ySplit: 1 }] (add xSplit too to also freeze leading columns).SUM over however many rows got added), compute the range bounds from worksheet.rowCount/actualRowCount, never a hardcoded row count — otherwise the formula silently omits rows if the dataset grows.: \ / ? * [ ] and a 31-character limit — sanitize any user-provided sheet name before calling workbook.addWorksheet(name).exceljs has no auto-fit for column widths — if content length varies a lot, compute a width from the max string length in that column yourself before setting it, rather than leaving a default that truncates.const workbook = new ExcelJS.Workbook();
await workbook.xlsx.readFile("input.xlsx");
const sheet = workbook.getWorksheet("Sheet1"); // or workbook.worksheets[0]
sheet.eachRow({ includeEmpty: false }, (row) => { /* row.values, row.getCell(n) */ });For heavy tabular reshaping (multi-file joins, group-by/aggregate before writing the result out), it's reasonable to read via pandas.read_excel into a DataFrame instead — pandas' reshaping API is more ergonomic than hand-rolling the equivalent in exceljs, and the DataFrame can still be written out via pandas.DataFrame.to_excel (or handed to exceljs if you need formulas/styling on the way out that pandas doesn't support).
This environment cannot recalculate formulas (no LibreOffice/Excel to open the file and re-run its calculation engine), so a formula's result is never re-verified — only its shape. scripts/verify_formulas.ts (or the Python equivalent, scripts/verify_formulas.py — both inspect the same on-disk .xlsx format and produce equivalent results, so use whichever matches the sandbox session you already have open) does a best-effort static scan for the most common formula footguns:
0 in the data you wrote — a likely future #DIV/0! the moment that cell is read.SUM(B2:B100)) that extends beyond the sheet's actual used range — usually a sign the range was hardcoded rather than computed from the data.#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?, #NULL!, #NUM!).Run it after writing the file, before handing it to the user: npx tsx skills/xlsx/scripts/verify_formulas.ts output.xlsx. It exits non-zero and prints every flagged cell if it finds anything.
Independently cross-check any number you report in your response (e.g. "the total is $45,230") by actually computing it in code — since the formula itself is never executed in this environment, the only way to be confident the number you're telling the user about is correct is to have actually computed it yourself, not just written a formula that should compute it.
© pipeshub-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
SKILL.md and 2 other files (scripts) in backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx of pipeshub-ai/pipeshub-ai.
Open the folder on GitHubat commit 18d929a
PipesHub Excel Spreadsheet Builder 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 |
|---|---|---|---|---|---|---|
| PipesHub Excel Spreadsheet Builder this skillpipeshub-ai/pipeshub-ai | 3.8k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| XLSX Spreadsheet ToolkitXiaomiMiMo/MiMo-Code | 14k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Kimi XLSXthvroyal/kimi-skills | 238 | — | ~9.5k | Automated safety check: Pass | None | |
| Excel Spreadsheet Builderagentscope-ai/QwenPaw | 36k | — | ~1.8k | Automated safety check: Pass | Proprietary | |
| Office XLSXsingula-ai/alego | 109 | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| CSV and Excel MergerOneWave-AI/claude-skills | 336 | — | ~1.6k | Automated safety check: Pass | MIT |
XiaomiMiMo/MiMo-Code
Builds, edits, cleans, recalculates and reads Excel workbooks and CSV files with openpyxl and pandas, plus LibreOffice for recalculation and PDF export.
thvroyal/kimi-skills
Specialized utility for advanced manipulation, analysis, and creation of spreadsheet files, including (but not limited to) XLSX, XLSM, CSV formats.
agentscope-ai/QwenPaw
Creates, edits, cleans and analyzes Excel and CSV files with openpyxl and pandas, recalculating formulas through LibreOffice so files are delivered without formula errors.
singula-ai/alego
Read, create, and modify Excel workbooks (.xlsx), including data, formulas, formatting, and pandas analysis.
OneWave-AI/claude-skills
Combines CSV, TSV and Excel files into one verified table with pandas, by stacking or joining, mapping columns, normalizing keys and removing duplicates.
theexperiencecompany/gaia
Generate an Excel (.xlsx) workbook or a CSV file: tables, financial models, data exports, formatted reports with charts.
pipeshub-ai/pipeshub-ai
Unpacks a .docx or .pptx into pretty-printed XML, lets you make small targeted edits, and repacks it into a file Office will open.
pipeshub-ai/pipeshub-ai
Picks the right library for generating a new PDF, filling an existing PDF form, or extracting text and tables, defaulting to Node where possible.
pipeshub-ai/pipeshub-ai
Creates new PowerPoint decks with pptxgenjs in TypeScript, reads existing decks with python-pptx, and applies a design-quality checklist so every slide has real visual hierarchy.
pipeshub-ai/pipeshub-ai
Loads, cleans, aggregates and joins tabular data with pandas under a verification rule: every number reported must be one that the code actually printed.
pipeshub-ai/pipeshub-ai
Picks the right chart type for a data question and applies readability rules like axis labels, colorblind palettes and legend restraint.
pipeshub-ai/pipeshub-ai
Routes a Word document request to the right approach: a TypeScript library for new files, XML editing for existing ones, and plain reading only.
Works with
Categories
Creates and edits .xlsx workbooks with real Excel formulas rather than hardcoded computed values, defaulting to exceljs in TypeScript with a static formula-safety check. The skill's central rule is that any cell whose value is a calculation the user will keep updating, such as a total, percentage or lookup, must be written as an actual Excel formula rather than the number the generating code computed, because a hardcoded number looks right today but silently goes stale the moment an input cell changes; raw input data the user supplied is the one exception and stays hardcoded. In exceljs, a formula is set as an object like { formula: "SUM(B2:B9)" } rather than a string starting with an equals sign.
PipesHub Excel Spreadsheet Builder fits situations like: creating a new Excel workbook with formulas, multiple sheets or pivot-style summaries; editing an existing .xlsx file while keeping its totals and lookups as live formulas; checking a generated workbook's formulas for static errors before delivery.
Run `npx skills add pipeshub-ai/pipeshub-ai --skill xlsx -a claude-code`. Or copy the skill folder (backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx in pipeshub-ai/pipeshub-ai) into .claude/skills/xlsx in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pipeshub-ai/pipeshub-ai --skill xlsx -a codex`. Or copy the skill folder (backend/python/app/agents/agent_loop/skills/builtin_packs/xlsx in pipeshub-ai/pipeshub-ai) into .agents/skills/xlsx 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 pipeshub-ai/pipeshub-ai --skill xlsx -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, .gemini/skills/xlsx, .github/skills/xlsx and .opencode/skills/xlsx in your project.
Going by SKILL.md and its folder, PipesHub Excel Spreadsheet Builder needs Python and TypeScript for the scripts in its folder and the command-line tools its instructions call (node, python and npx). Our summary lists: Node.js with exceljs, or Python with openpyxl or pandas.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
PipesHub Excel Spreadsheet Builder 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.8k tokens (SKILL.md is roughly 7.2k 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 PipesHub Excel Spreadsheet Builder: XLSX Spreadsheet Toolkit (XiaomiMiMo/MiMo-Code, 14k stars), Kimi XLSX (thvroyal/kimi-skills, 238 stars), Excel Spreadsheet Builder (agentscope-ai/QwenPaw, 36k stars) and Office XLSX (singula-ai/alego, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pipeshub-ai (a GitHub organization) maintains it in pipeshub-ai/pipeshub-ai, which has 3,825 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 10, 2026.
Source: pipeshub-ai/pipeshub-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.