
Csv Excel Merger
Merge multiple CSV or Excel exports with smart column matching, deduplication, and conflict rules when consolidating spreadsheets.
Overview
csv-excel-merger is an agent skill for the Build phase that merges multiple CSV or Excel files with intelligent column matching, deduplication, and configurable conflict resolution.
Install
npx skills add https://github.com/onewave-ai/claude-skills --skill csv-excel-mergerWhat is this skill?
- Stepwise workflow: analyze file count/format, inspect headers, encoding, and keys, then merge
- Column matching: exact, case-insensitive, and fuzzy aliases (e-mail vs email, first_name variants)
- Conflict resolution strategies including keep-first and keep-last when duplicates share a primary key
- Handles CSV, Excel, and TSV with duplicate column detection
- Primary-key-driven deduplication across exports from different systems
- Documented merge steps: analyze inputs, inspect structures, then apply column matching and conflict resolution
- Column matching covers exact, case-insensitive, and fuzzy alias patterns
Adoption & trust: 848 installs on skills.sh; 173 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have several exports with different column names and overlapping rows and need one deduplicated file without manual VLOOKUP work.
Who is it for?
Indie builders combining customer lists, survey exports, or ops spreadsheets into a single import-ready table.
Skip if: Real-time streaming ETL, massive warehouse jobs without local files, or merges where no one can define a primary key or conflict policy.
When should I use this skill?
User needs to merge spreadsheets, combine data exports, or consolidate multiple CSV/Excel files into one.
What do I get? / Deliverables
You get a consolidated dataset with aligned columns, resolved duplicates on a chosen primary key, and documented merge decisions your script or notebook can repeat.
- Merged CSV or Excel output with normalized column names
- Merge script or notebook documenting encoding, keys, and conflict handling
Recommended Skills
Journey fit
Combining data sources is a build-time integration task when importers, admin tools, or one-off consolidation scripts are added to the product. Integrations fits because the skill orchestrates heterogeneous file inputs, schema alignment, and merge policy—not UI polish alone.
How it compares
Use for agent-guided spreadsheet consolidation scripts instead of one-off chat guesses without encoding, key, or conflict checks.
Common Questions / FAQ
Who is csv-excel-merger for?
Solo builders and small teams who need to merge CSV/Excel/TSV files—often from different tools—into one deduplicated dataset for apps, reports, or migrations.
When should I use csv-excel-merger?
During Build integrations when implementing imports or data cleanup, or whenever a user says they need to combine spreadsheets, consolidate exports, or match columns across files.
Is csv-excel-merger safe to install?
The skill guides filesystem reads and data processing—avoid pointing it at sensitive exports until you review code the agent generates; check the Security Audits panel on this Prism page.
SKILL.md
READMESKILL.md - Csv Excel Merger
# CSV/Excel Merger Intelligently merge multiple CSV or Excel files with automatic column matching and data deduplication. ## Instructions When a user needs to merge CSV or Excel files: 1. **Analyze Input Files**: - How many files need to be merged? - What format (CSV, Excel, TSV)? - Are the files provided or need to be read from disk? - Do columns have the same names across files? - What is the primary key (unique identifier)? 2. **Inspect File Structures**: - Read headers from each file - Identify column names and data types - Detect encoding (UTF-8, Latin-1, etc.) - Check for missing columns - Look for duplicate column names 3. **Create Merge Strategy**: **Column Matching**: - Exact name match: "email" = "email" - Case-insensitive: "Email" = "email" - Fuzzy match: "E-mail" ≈ "email" - Common patterns: - "first_name", "firstname", "First Name" → "first_name" - "phone", "phone_number", "tel" → "phone" - "email", "e-mail", "email_address" → "email" **Conflict Resolution** (when same record appears in multiple files): - **Keep first**: Use value from first file - **Keep last**: Use value from last file (most recent) - **Keep longest**: Use most complete value - **Manual review**: Flag conflicts for user review - **Merge**: Combine non-conflicting fields **Deduplication**: - Identify duplicate rows based on primary key - Options: keep first, keep last, keep all, merge values - Track source file for each row 4. **Perform Merge**: ```python # Example merge logic import pandas as pd # Read files df1 = pd.read_csv('file1.csv') df2 = pd.read_csv('file2.csv') # Normalize column names df1.columns = df1.columns.str.lower().str.strip() df2.columns = df2.columns.str.lower().str.strip() # Map similar columns column_mapping = { 'firstname': 'first_name', 'e_mail': 'email', # ... } df2 = df2.rename(columns=column_mapping) # Merge merged = pd.concat([df1, df2], ignore_index=True) # Deduplicate merged = merged.drop_duplicates(subset=['email'], keep='last') # Save merged.to_csv('merged_output.csv', index=False) ``` 5. **Format Output**: ``` 📊 CSV/EXCEL MERGER REPORT ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📁 INPUT FILES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ File 1: contacts_jan.csv Rows: 1,245 Columns: 8 (name, email, phone, company, ...) File 2: contacts_feb.csv Rows: 987 Columns: 9 (firstname, lastname, email, mobile, ...) File 3: leads_export.xlsx Rows: 2,103 Columns: 12 (full_name, email_address, phone, ...) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔄 COLUMN MAPPING ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Unified Schema: • first_name ← [firstname, first name, fname] • last_name ← [lastname, last name, lname] • email ← [email, e-mail, email_address] • phone ← [phone, mobile, phone_number, tel] • company ← [company, organization, org] • title ← [title, job_title, position] • source ← [file origin tracking] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔍 MERGE ANALYSIS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Total rows before merge: 4,335 Duplicate records found: 892 Conflicts detected: 47 Deduplication Strategy: Keep most recent (by source file date) Primary Key: email ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⚠️ CONFLICTS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Record: john.doe@example.com File 1 phone: (555) 123-4567 File 2 phone: (555) 987-6543 Resolution: Kept most recent