Audit websites for accessibility issues and WCAG compliance. Use when checking accessibility, fixing a11y issues, or ensuring WCAG compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Merges, appends, joins, and deduplicates multiple CSV, TSV, and Excel files (including multi-sheet workbooks) with pandas - mapping mismatched column names to one schema, normalizing keys, resolving conflicting values, tracking which file each row came from, and verifying the row math. Use when the user wants to combine spreadsheets or exports, stack monthly files, consolidate contact or lead lists, VLOOKUP-style join two sheets on an ID or email, or dedupe records across sources, even if they only say "put these together" or "clean up these lists into one".
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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, 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.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Audit websites for accessibility issues and WCAG compliance. Use when checking accessibility, fixing a11y issues, or ensuring WCAG compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Deploy a 2-layer parallel agent hierarchy for large, parallelizable work — big refactors, multi-file migrations, codebase-wide audits, bulk generation. A top-tier commander (Fable or Opus) orchestrates the swarms; the user picks a power level (Max Power / Heavy / Balanced / Economy) that sets the Opus/Sonnet/Haiku model mix per layer. Layer 1 is 3-50+ specialist agents, each with its own full context window; Layer 2 is 2+ sub-agents per member. Includes git safety, tiered sizing, a pre-deploy gate, phantom-completion checks, and multi-wave follow-up.
日本語の概要は準備中です。原文の説明を表示しています。
Use to test whether an AI agent, prompt, or skill actually works before or after it ships — build a small eval set, score runs, and catch regressions when the prompt or model changes. Trigger when the user asks whether a prompt is good, wants to compare models or versions, sees inconsistent agent output, or is about to put an agent in front of customers.
日本語の概要は準備中です。原文の説明を表示しています。
Deploys swarms of sub-agents for massive parallel data processing tasks. Unlike agent-army (which is for code changes), this is for DATA tasks -- processing 1000 documents, analyzing datasets, bulk content generation. Configurable swarm size, task distribution, result aggregation, progress tracking, and error recovery.
日本語の概要は準備中です。原文の説明を表示しています。
Designs and deploys custom agent teams for specific business workflows. Interactive discovery of business processes, then generates complete team configurations with specialized agent roles, tool access, communication protocols, and handoff rules.
日本語の概要は準備中です。原文の説明を表示しています。
Agent-to-Agent (A2A) communication protocol. Connect two or more Claude agents that pass messages, share context, delegate tasks, and collaborate. Implements structured handoffs, shared memory, and multi-agent conversations.
日本語の概要は準備中です。原文の説明を表示しています。