{"id":"d754ac08-5778-43dc-8259-e2e768322307","shortId":"kkABQP","kind":"skill","title":"Compare recurring CSV, TSV, or JSON exports and emit row-level change sets before syncs","tagline":"Use csv-diff when an agent needs to explain what changed between two structured exports, not just that the files differ. The agent lines records up by a stable key, reports added, removed, and changed rows, and can hand the result to humans or downstream automations as readable t","description":"# Compare recurring CSV, TSV, or JSON exports and emit row-level change sets before syncs\n\nUse csv-diff when an agent needs to explain what changed between two structured exports, not just that the files differ. The agent lines records up by a stable key, reports added, removed, and changed rows, and can hand the result to humans or downstream automations as readable text or machine-friendly JSON.\n\n## Prerequisites\n\nPython 3, pip, two comparable CSV, TSV, or JSON snapshots, and a stable key column or field.\n\n## Installation\n\nUse the upstream install or setup path that matches your environment:\n- pip install csv-diff\n- $ docker build -t csvdiff .\n- $ docker run --rm -v $(pwd):/files csvdiff\n- $ docker run --rm -v $(pwd):/files csvdiff one.csv two.csv\n\nRequirements and caveats from upstream:\n- --extra name \"Python format string with {id} for variables\"\n- ## As a Python library\n- You can also import the Python library into your own code like so:\n\nBasic usage or getting-started notes:\n- Consider two CSV files:\n- one.csv\n- id,name,age\n\n- Source: https://github.com/simonw/csv-diff\n- Extracted from upstream docs: https://raw.githubusercontent.com/simonw/csv-diff/HEAD/README.md\n\n## Documentation\n\n- https://github.com/simonw/csv-diff\n\n## Source\n\n- [Agent Skill Exchange](https://agentskillexchange.com/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs/)","tags":["compare","recurring","csv","tsv","json","exports","and","emit","row","level","change","sets"],"capabilities":["skill","source-agentskillexchange","skill-compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-awesome-list","topic-claude-code","topic-codex","topic-cursor","topic-llm","topic-mcp","topic-npx-skills","topic-openclaw","topic-skills-catalog"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/agentskillexchange/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add agentskillexchange/skills","source_repo":"https://github.com/agentskillexchange/skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (1,407 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:54.118Z","embedding":null,"createdAt":"2026-05-18T13:15:47.783Z","updatedAt":"2026-05-18T19:09:54.118Z","lastSeenAt":"2026-05-18T19:09:54.118Z","tsv":"'/files':182,189 '/simonw/csv-diff':242,253 '/simonw/csv-diff/head/readme.md':249 '/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs/)':260 '3':140 'ad':49,115 'age':238 'agent':23,40,89,106,255 'agentskillexchange.com':259 'agentskillexchange.com/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs/)':258 'also':213 'autom':63,129 'basic':224 'build':174 'caveat':195 'chang':13,28,52,79,94,118 'code':221 'column':153 'compar':1,67,143 'consid':231 'csv':3,19,69,85,144,171,233 'csv-diff':18,84,170 'csvdiff':176,183,190 'diff':20,86,172 'differ':38,104 'doc':246 'docker':173,177,184 'document':250 'downstream':62,128 'emit':9,75 'environ':167 'exchang':257 'explain':26,92 'export':7,32,73,98 'extra':198 'extract':243 'field':155 'file':37,103,234 'format':201 'friend':136 'get':228 'getting-start':227 'github.com':241,252 'github.com/simonw/csv-diff':240,251 'hand':56,122 'human':60,126 'id':204,236 'import':214 'instal':156,160,169 'json':6,72,137,147 'key':47,113,152 'level':12,78 'librari':210,217 'like':222 'line':41,107 'machin':135 'machine-friend':134 'match':165 'name':199,237 'need':24,90 'note':230 'one.csv':191,235 'path':163 'pip':141,168 'prerequisit':138 'pwd':181,188 'python':139,200,209,216 'raw.githubusercontent.com':248 'raw.githubusercontent.com/simonw/csv-diff/head/readme.md':247 'readabl':65,131 'record':42,108 'recur':2,68 'remov':50,116 'report':48,114 'requir':193 'result':58,124 'rm':179,186 'row':11,53,77,119 'row-level':10,76 'run':178,185 'set':14,80 'setup':162 'skill':256 'skill-compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs' 'snapshot':148 'sourc':239,254 'source-agentskillexchange' 'stabl':46,112,151 'start':229 'string':202 'structur':31,97 'sync':16,82 'text':132 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-awesome-list' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-llm' 'topic-mcp' 'topic-npx-skills' 'topic-openclaw' 'topic-skills-catalog' 'tsv':4,70,145 'two':30,96,142,232 'two.csv':192 'upstream':159,197,245 'usag':225 'use':17,83,157 'v':180,187 'variabl':206","prices":[{"id":"222f37ce-5b86-42ef-a64f-6bd8112306fa","listingId":"d754ac08-5778-43dc-8259-e2e768322307","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"agentskillexchange","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:15:47.783Z"}],"sources":[{"listingId":"d754ac08-5778-43dc-8259-e2e768322307","source":"github","sourceId":"agentskillexchange/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs","sourceUrl":"https://github.com/agentskillexchange/skills/tree/main/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs","isPrimary":false,"firstSeenAt":"2026-05-18T13:15:47.783Z","lastSeenAt":"2026-05-18T19:09:54.118Z"}],"details":{"listingId":"d754ac08-5778-43dc-8259-e2e768322307","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"agentskillexchange","slug":"compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs","github":{"repo":"agentskillexchange/skills","stars":8,"topics":["agent-skills","ai-agents","ai-tools","awesome-list","claude-code","codex","cursor","llm","mcp","npx-skills","openclaw","skills-catalog"],"license":"mit","html_url":"https://github.com/agentskillexchange/skills","pushed_at":"2026-05-18T19:02:17Z","description":"The open catalog of AI agent skills — 2,000+ security-scanned skills for Claude Code, Cursor, Codex, and more.","skill_md_sha":"9c7e77b35b4818c976706c87c95f1a7159fb57f4","skill_md_path":"skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/agentskillexchange/skills/tree/main/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"Compare recurring CSV, TSV, or JSON exports and emit row-level change sets before syncs","description":"Use csv-diff when an agent needs to explain what changed between two structured exports, not just that the files differ. The agent lines records up by a stable key, reports added, removed, and changed rows, and can hand the result to humans or downstream automations as readable text or machine-friendly JSON."},"skills_sh_url":"https://skills.sh/agentskillexchange/skills/compare-recurring-csv-tsv-or-json-exports-and-emit-row-level-change-sets-before-syncs"},"updatedAt":"2026-05-18T19:09:54.118Z"}}