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.
Combines CSV, TSV and Excel files into one verified table with pandas, by stacking or joining, mapping columns, normalizing keys and removing duplicates.
$ npx skills add OneWave-AI/claude-skills --skill csv-excel-merger -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OneWave-AI/claude-skills csv-excel-merger --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/OneWave-AI/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/csv-excel-merger .claude/skills/csv-excel-merger && 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 "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .claude/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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/OneWave-AI/claude-skills/tree/main/csv-excel-mergerType 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 OneWave-AI/claude-skills --skill csv-excel-merger -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OneWave-AI/claude-skills csv-excel-merger --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/csv-excel-merger .agents/skills/csv-excel-merger && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .agents/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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 OneWave-AI/claude-skills --skill csv-excel-merger -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OneWave-AI/claude-skills csv-excel-merger --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/csv-excel-merger .cursor/skills/csv-excel-merger && 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 "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .cursor/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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/OneWave-AI/claude-skills.git --path csv-excel-merger--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 OneWave-AI/claude-skills --skill csv-excel-merger -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OneWave-AI/claude-skills csv-excel-merger --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/csv-excel-merger .gemini/skills/csv-excel-merger && 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 "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .gemini/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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 OneWave-AI/claude-skills csv-excel-mergerInstalls 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 OneWave-AI/claude-skills --skill csv-excel-merger -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/csv-excel-merger .github/skills/csv-excel-merger && 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 "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .github/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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 OneWave-AI/claude-skills --skill csv-excel-merger -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OneWave-AI/claude-skills csv-excel-merger --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/csv-excel-merger .opencode/skills/csv-excel-merger && 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 "csv-excel-merger" agent skill from https://github.com/OneWave-AI/claude-skills/tree/main/csv-excel-merger into .opencode/skills/csv-excel-merger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "csv-excel-merger", 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.
csv-excel-mergerCombines CSV, TSV and Excel files into one verified table with pandas, by stacking or joining, mapping columns, normalizing keys and removing duplicates.
The workflow starts with a bundled `scripts/profile_inputs.py` that reports each file's encoding, delimiter, row count, headers, candidate keys and header overlap without changing anything. Excel workbooks are profiled sheet by sheet, and the agent confirms with you which sheets count. It then decides between appending, for the same kind of records from different periods or sources, and joining, for different facts about the same entities.
Columns are mapped through an explicit rename map shown to you when matches are fuzzy, and keys such as emails and phone numbers are normalized before deduplication. Files are read as strings to keep leading zeros, and joins use pandas validation so duplicate keys raise an error. Before reporting, the agent checks row counts, tracks which file each row came from, and follows conflict strategies and an output template in the references folder.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fc5b785. 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 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
pythonFrom 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.
CSV and Excel Merger loads about 1.6k tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 145 tokens; SKILL.md has 556 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 OneWave-AI/claude-skills at commit fc5b785, republished under its MIT licence (© OneWave-AI). 556 words, ~1,638 tokens.
.claude/skills/csv-excel-merger/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Combine tabular files into one clean output without silently losing, duplicating, or corrupting rows.
Copy this checklist and track progress:
- [ ] 1. Profile inputs
- [ ] 2. Choose append vs join
- [ ] 3. Map columns and normalize keys
- [ ] 4. Merge and resolve conflicts
- [ ] 5. Verify row math
- [ ] 6. Write output and reportProfile inputs. Run the bundled profiler first; it reports encoding, delimiter, rows, headers, candidate keys, and header overlap without changing anything:
python scripts/profile_inputs.py file1.csv file2.xlsxExcel files are profiled per sheet. Confirm with the user which sheets count if a workbook has more than one.
Choose the operation. This is the decision that most often goes wrong:
pd.concat, then dedupe.pd.merge on a key.Map columns and normalize keys. Build an explicit {original: unified} rename map per file (see references/merge_strategies.md for common variants) and show it to the user when any match is fuzzy. Normalize key columns before dedupe or join: strip whitespace, lowercase emails, strip non-digits from phones, unify date formats. Without this, A@x.com and a@x.com survive as two people.
Merge. Read every file with dtype=str so IDs, ZIP codes, and phone numbers keep leading zeros, then convert specific columns afterward.
import pandas as pd
frames = []
for path, rename in [("jan.csv", {"E-mail": "email"}), ("feb.xlsx", {"Email Address": "email"})]:
df = (pd.read_excel(path, dtype=str) if path.endswith((".xlsx", ".xls"))
else pd.read_csv(path, dtype=str, encoding="utf-8-sig", # use the profiler's encoding
keep_default_na=False))
df = df.rename(columns=rename)
df["email"] = df["email"].str.strip().str.lower()
df["source_file"] = path # lineage for every row
frames.append(df)
combined = pd.concat(frames, ignore_index=True, sort=False)
# Blank keys are not duplicates of each other: set them aside before deduping.
has_key = combined["email"].fillna("") != ""
# Later files win: list the most recent source last, then keep="last".
deduped = combined[has_key].drop_duplicates(subset=["email"], keep="last")
no_key = combined[~has_key]
merged = pd.concat([deduped, no_key], ignore_index=True)For a join, make pandas enforce the relationship you expect so a duplicate key raises instead of multiplying rows:
out = pd.merge(contacts, deals, on="email", how="left",
validate="one_to_one", indicator=True)
unmatched = out[out["_merge"] == "left_only"]Conflict strategies (keep first/last/most complete, combine fields, flag for review) are in references/merge_strategies.md.
Verify before reporting. Never hand back a merge without checking it:
rows_in = sum(len(f) for f in frames)
assert len(merged) > 0, "merge produced an empty frame"
assert len(merged) <= rows_in, "more rows out than in: check the join keys"
assert deduped["email"].is_unique, "duplicate keys remain after dedupe"
print(f"in={rows_in} out={len(merged)} removed={rows_in - len(merged)} blank_keys={len(no_key)}")
print(merged["source_file"].value_counts())Spot-check three removed duplicates by hand against the source files; the asserts prove the math, not that the right row won.
Write output and report. Use the layout in references/output_template.md.
to_csv(path, index=False, encoding="utf-8-sig") (the BOM makes Excel read accents correctly).to_excel(path, index=False) with openpyxl installed. A sheet holds at most 1,048,576 rows; split or use CSV/Parquet beyond that.conflicts_review.csv or unmatched.csv when those sets are non-empty.Current pandas is 3.x (Python 3.11+). Differences that affect merges:
str dtype, not object. Check pd.api.types.is_string_dtype(col) instead of dtype == object.df[col][mask] = x never updates df (pandas only warns); use df.loc[mask, col] = x..dt.as_unit("ns") before casting to integers if something downstream expects nanoseconds.pd.read_excel(..., engine="calamine") (needs python-calamine) reads large workbooks much faster than openpyxl.The code in this skill also runs on pandas 2.2.
validate= catches it.dtype=str turns 01234 into 1234.1.23E+15 or dates already reformatted in the source file cannot be recovered by pandas; flag them.skiprows= or header=.é artifacts. The profiler reports the encoding per file.chunksize= or use Polars/DuckDB, and dedupe with a key set instead of loading everything into memory.© OneWave-AI, MIT. 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 3 other files (scripts, references) in csv-excel-merger of OneWave-AI/claude-skills.
Open the folder on GitHubat commit fc5b785
CSV and Excel Merger 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 |
|---|---|---|---|---|---|---|
| CSV and Excel Merger this skillOneWave-AI/claude-skills | 336 | — | ~1.6k | Automated safety check: Pass | MIT | |
| XLSX Spreadsheet ToolkitXiaomiMiMo/MiMo-Code | 14k | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Excel Spreadsheet Creation and Editinganthropics/skills | 180k | 4 repos | ~2.1k | Automated safety check: Pass | Proprietary | |
| Excel Spreadsheet Builderagentscope-ai/QwenPaw | 36k | — | ~1.8k | Automated safety check: Pass | Proprietary | |
| Sn Da Excel WorkflowMichaelYang-lyx/AIDABench | 111 | 1 repos | ~2.5k | Automated safety check: Pass | None | |
| Codebookbrycewang-stanford/Auto-Empirical-Research-Skills | 4.6k | — | ~527 | Automated safety check: Notes | Custom licence |
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.
anthropics/skills
Creates, edits and analyzes spreadsheets (.xlsx, .xlsm, .csv, .tsv) with openpyxl and pandas, writing live formulas and recalculating to confirm zero formula errors.
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.
MichaelYang-lyx/AIDABench
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV 并提供下载链接。覆盖从数据读取到报告生成全流程,按步骤编排 capability 子…
brycewang-stanford/Auto-Empirical-Research-Skills
Auto-generates a Markdown codebook from a dataset (CSV, DTA, Excel, Parquet) with types and summary statistics.
Harryoung/efka
Smart Excel/CSV file parsing with intelligent routing based on file complexity analysis.
OneWave-AI/claude-skills
Finds duplicate and junk records in a CRM CSV export with fuzzy matching, normalizes fields and writes a reviewable merge plan plus import-ready files without touching the live CRM.
OneWave-AI/claude-skills
Repairs broken decks and PDFs exported from Claude Design or similar AI deck generators: clipped text, wrong fonts and corrupted .pptx package structure.
OneWave-AI/claude-skills
Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table…
OneWave-AI/claude-skills
Categorizes transactions, reconciles bank and card statements to the ledger, works a month-end checklist and prepares a close package, without ever forcing a balance.
OneWave-AI/claude-skills
Pulls financial statement numbers for US public companies straight from SEC EDGAR's free official XBRL APIs (companyfacts, companyconcept, frames, submissions) into a cited table.
OneWave-AI/claude-skills
Answers business questions about the user's own spreadsheet or data export (CSV, TSV, XLSX from a CRM, Shopify, Stripe, QuickBooks, ad platforms, HR or payroll systems) correctly and auditably.
Works with
Categories
Combines CSV, TSV and Excel files into one verified table with pandas, by stacking or joining, mapping columns, normalizing keys and removing duplicates. py` that reports each file's encoding, delimiter, row count, headers, candidate keys and header overlap without changing anything. Excel workbooks are profiled sheet by sheet, and the agent confirms with you which sheets count.
CSV and Excel Merger fits situations like: stacking monthly exports into a single spreadsheet; consolidating contact or lead lists from several sources and removing duplicates; joining two sheets on an ID or email column, like a VLOOKUP; merging multi-sheet Excel workbooks whose column names do not match.
Run `npx skills add OneWave-AI/claude-skills --skill csv-excel-merger -a claude-code`. Or copy the skill folder (csv-excel-merger in OneWave-AI/claude-skills) into .claude/skills/csv-excel-merger in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OneWave-AI/claude-skills --skill csv-excel-merger -a codex`. Or copy the skill folder (csv-excel-merger in OneWave-AI/claude-skills) into .agents/skills/csv-excel-merger 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 OneWave-AI/claude-skills --skill csv-excel-merger -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/csv-excel-merger, .gemini/skills/csv-excel-merger, .github/skills/csv-excel-merger and .opencode/skills/csv-excel-merger in your project.
Going by SKILL.md and its folder, CSV and Excel Merger needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3 with pandas.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
CSV and Excel Merger is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with CSV and Excel Merger: XLSX Spreadsheet Toolkit (XiaomiMiMo/MiMo-Code, 14k stars), Excel Spreadsheet Creation and Editing (anthropics/skills, 180k stars), Excel Spreadsheet Builder (agentscope-ai/QwenPaw, 36k stars) and Sn Da Excel Workflow (MichaelYang-lyx/AIDABench, 111 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OneWave-AI (a GitHub organization) maintains it in OneWave-AI/claude-skills, which has 336 GitHub stars. The repository holds 69 skills in this directory. The repository was last updated on October 2, 2026.
Source: OneWave-AI/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.