Install any skill in seconds. Free to start, no credit card required.
Get Started Free →onewave-ai/csv-excel-merger
Merge multiple CSV/Excel files with intelligent column matching, data deduplication, and conflict resolution. Handles different schemas, formats, and combines data sources.
Passed 20 of 22 test cases with the skill, and 15 of 22 without it.
and 2 more in the full report
5 fixed16 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
I just merged `leads_north.csv` and `leads_south.csv`. What export formats should be offered to the user upon completion of the merge report?
| Checked | Without skill | With skill |
|---|---|---|
| The response offers Parquet export format. | Missed | Passed |
The instructions your model reads when the skill loads.
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 report
Profile 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.xlsx
Excel 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, [email protected] and [email protected] 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"))
test cases passed, vs 15 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.