{"id":"da21b636-dbd7-44e2-8e71-c974e2fa444f","shortId":"BdB9aq","kind":"skill","title":"csv-data-analyzer","tagline":"Analyze CSV files with business data through a dialogue-based flow — no code, no Python, no plugins. Profiles dataset structure, asks what you want to understand, then delivers numbered insights and a plain-language interpretation. Use when analyzing sales exports, task lists, su","description":"# CSV Data Analyzer\n\nThis skill analyzes CSV files with business data for non-technical users through a conversational question flow — without code, formulas, or external tools. Claude reads the CSV directly, profiles its structure, asks one clarifying question about your goal, and delivers numbered insights with a plain-language interpretation.\n\n**Input:**\n- A CSV file accessible in the Cowork workspace (uploaded or in the selected folder)\n\n**Output:**\n- Markdown response with: dataset profile, numbered key insights, data snapshot table, plain-language interpretation, and follow-up suggestions\n\n---\n\n## Language Detection\n\nDetect the user's language from their message:\n- If Russian (or contains Cyrillic): respond in Russian\n- If English (or other Latin-script language): respond in English\n- If ambiguous: respond in the language of the trigger phrase used\n\n---\n\n## Instructions\n\n### Step 1: Locate and Read the CSV File\n\n1. Identify the CSV file from the user's message\n   - If a file path or filename is provided: use it directly\n   - If no path given: look for a CSV file in the Cowork workspace folder\n   - If no CSV file found: stop and report — \"I don't see a CSV file. Please upload the file or confirm it's in your selected Cowork folder, then try again.\"\n\n2. Read the file content as plain text\n   - If the file cannot be parsed as CSV (binary, corrupted, wrong format): stop and report — \"This file doesn't appear to be a valid CSV. Please check the file format and try again.\"\n\n### Step 2: Profile the Dataset\n\n1. Count rows and columns (exclude the header row from row count)\n   - If only 1 row exists (header only, no data): stop and report — \"This CSV has no data rows — only headers. Please check the file and try again with a populated dataset.\"\n\n2. Identify column names from the first row\n   - If no header row detected (all rows look like data rows): assign generic names Column 1, Column 2, … and note: \"I couldn't detect column headers — I'll use generic names.\"\n\n3. Infer data type for each column: numeric, text, date, or boolean\n   - If a column contains mixed types (numbers and text): note the inconsistency; treat column as text; recommend cleaning before numeric analysis\n\n4. Check for empty/null cells per column\n   - If a column has >30% empty cells: flag it as sparse and exclude from numeric analysis; include in profile with a note\n\n5. If file has >500 rows: use a representative sample (first 200 rows + last 50 rows); note the sampling and warn — \"File has {N} rows — analysis is based on a sample. Results may not reflect the full dataset.\"\n\n### Step 3: Present Profile and Ask Clarifying Question\n\n1. Output a brief dataset profile (2–3 lines):\n   - Row count, column count, column names with types, notable issues (sparse columns, mixed types, date range if detected)\n\n2. Ask one focused clarifying question:\n   - \"What would you like to understand — summary statistics, trends over time, top/bottom items, comparisons between groups, or something else?\"\n   - Do not proceed to analysis until user answers\n\n### Step 4: Perform Analysis\n\nBased on the user's answer, select the appropriate analysis mode:\n\n- **Summary statistics:** min, max, average, median for numeric columns; value counts for text columns; date range if dates present\n- **Trends over time:** group by date column; show values per period (day/week/month); identify direction (increasing/decreasing/flat)\n- **Top/bottom items:** sort by a numeric column; show top 5 and bottom 5; calculate gap between them\n- **Comparisons between groups:** group by a categorical column; aggregate a numeric column per group; highlight largest/smallest group\n- **Custom goal:** if user's answer doesn't match the above modes, ask one follow-up to clarify which column(s) to focus on\n\n**Edge Case — Ambiguous column reference:** If the user's goal involves a concept not directly named in the column headers (e.g., \"show me churn\" but no \"churn\" column), ask: \"Which column represents [concept] in your data?\" before proceeding.\n\nPerform analysis using natural-language reasoning. No code execution required.\n\n### Step 5: Format and Output Results\n\n1. Output results using the Output Format structure (see below)\n2. Populate Key Insights with 3–5 numbered findings in plain language\n3. Include a Data Snapshot table: top 5–10 rows or the aggregated result (whichever is more informative)\n4. Write Interpretation: 2–3 sentences explaining what the numbers mean in business terms\n\n### Step 6: Offer Follow-Up Directions\n\n1. Ask: \"Anything else you'd like to explore in this data?\"\n2. Offer 2–3 concrete follow-up directions based on what was found (e.g., \"Drill into the top-performing group\", \"Compare this period vs. last period\", \"Find outliers in [column]\")\n3. If user confirms done: close with a one-line summary of the session findings\n\n---\n\n## Output Format\n\n```\n### Dataset Profile\n- **Rows:** {N}  |  **Columns:** {M}\n- **Columns:** {col1 (numeric)}, {col2 (text)}, {col3 (date)}, …\n- **Notable:** {any sparse columns, mixed types, date range, or sampling note}\n\n### Key Insights\n1. [Most significant finding — plain language, 1–2 sentences]\n2. [Second finding]\n3. [Third finding]\n4. [Fourth finding, if applicable]\n5. [Fifth finding, if applicable]\n\n### Data Snapshot\n| {Col1} | {Col2} | {Col3} |\n|--------|--------|--------|\n| …      | …      | …      |\n*(Top 5–10 rows or aggregated result)*\n\n### Interpretation\n[2–3 sentences explaining what these numbers mean for the user's context — written for a business audience, not a data audience]\n\n---\n**What would you like to explore next?**\n- [Follow-up direction 1]\n- [Follow-up direction 2]\n- [Follow-up direction 3]\n```\n\n---\n\n## Negative Cases\n\n- **No CSV file:** Stop with message — \"I don't see a CSV file. Please upload the file or confirm it's in your selected Cowork folder, then try again.\"\n- **Invalid file format:** Stop with message — \"This file doesn't appear to be a valid CSV. Please check the file format and try again.\"\n- **Empty dataset (header only):** Stop with message — \"This CSV has no data rows — only headers. Please check the file and try again with a populated dataset.\"\n- **Request for charts or visual output:** Explain — \"I can't generate charts in this mode, but I can give you a detailed text summary and a data table you can paste into Excel or Sheets to visualize.\"","tags":["csv","data","analyzer","claude","skills","kit","kirkruglov","agent-skills","agentic-skills","ai-agents","ai-skills","awesome-list"],"capabilities":["skill","source-kirkruglov","skill-csv-data-analyzer","topic-agent-skills","topic-agentic-skills","topic-ai-agents","topic-ai-skills","topic-awesome-list","topic-claude","topic-claude-ai","topic-claude-ai-skills","topic-claude-code","topic-claude-cowork","topic-claude-memory","topic-claude-skills"],"categories":["claude-skills-kit"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/KirKruglov/claude-skills-kit/csv-data-analyzer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add KirKruglov/claude-skills-kit","source_repo":"https://github.com/KirKruglov/claude-skills-kit","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (6,352 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:13:36.815Z","embedding":null,"createdAt":"2026-05-18T13:21:14.033Z","updatedAt":"2026-05-18T19:13:36.815Z","lastSeenAt":"2026-05-18T19:13:36.815Z","tsv":"'1':180,187,299,313,365,489,712,773,861,867,932 '10':742,893 '2':253,295,342,367,495,516,722,755,785,787,868,870,899,937 '200':454 '3':381,482,496,727,734,756,788,817,873,900,942 '30':425 '4':414,550,752,876 '5':443,607,610,707,728,741,881,892 '50':457 '500':447 '6':767 'access':106 'aggreg':623,746,896 'ambigu':168,659 'analysi':413,436,468,545,552,562,696 'analyz':4,5,44,52,55 'answer':548,558,637 'anyth':775 'appear':280,984 'applic':880,885 'appropri':561 'ask':26,85,486,517,644,685,774 'assign':361 'audienc':916,920 'averag':568 'base':15,470,553,794 'binari':269 'boolean':392 'bottom':609 'brief':492 'busi':9,59,764,915 'calcul':611 'cannot':264 'case':658,944 'categor':621 'cell':418,427 'chart':1026,1035 'check':287,332,415,991,1014 'churn':680,683 'clarifi':87,487,520,650 'claud':77 'clean':410 'close':822 'code':18,72,703 'col1':842,888 'col2':844,889 'col3':846,890 'column':303,344,364,366,374,387,395,406,420,423,500,502,509,572,577,589,604,622,626,652,660,675,684,687,816,839,841,851 'compar':807 'comparison':535,615 'concept':669,689 'concret':789 'confirm':242,820,963 'contain':151,396 'content':257 'context':911 'convers':68 'corrupt':270 'couldn':371 'count':300,310,499,501,574 'cowork':109,219,248,969 'csv':2,6,50,56,80,104,185,190,215,224,235,268,285,324,946,956,989,1006 'csv-data-analyz':1 'custom':632 'cyril':152 'd':778 'data':3,10,51,60,126,319,327,359,383,692,737,784,886,919,1009,1050 'dataset':24,121,298,341,480,493,835,999,1023 'date':390,512,578,581,588,847,854 'day/week/month':594 'deliv':33,93 'detail':1045 'detect':139,140,354,373,515 'dialogu':14 'dialogue-bas':13 'direct':81,207,596,671,772,793,931,936,941 'doesn':278,638,982 'done':821 'drill':800 'e.g':677,799 'edg':657 'els':540,776 'empti':426,998 'empty/null':417 'english':157,166 'excel':1056 'exclud':304,433 'execut':704 'exist':315 'explain':758,902,1030 'explor':781,926 'export':46 'extern':75 'fifth':882 'file':7,57,105,186,191,199,216,225,236,240,256,263,277,289,334,445,464,947,957,961,975,981,993,1016 'filenam':202 'find':730,813,832,864,872,875,878,883 'first':348,453 'flag':428 'flow':16,70 'focus':519,655 'folder':116,221,249,970 'follow':135,647,770,791,929,934,939 'follow-up':134,646,769,790,928,933,938 'format':272,290,708,718,834,976,994 'formula':73 'found':226,798 'fourth':877 'full':479 'gap':612 'generat':1034 'generic':362,379 'give':1042 'given':211 'goal':91,633,666 'group':537,586,617,618,628,631,806 'header':306,316,330,352,375,676,1000,1012 'highlight':629 'identifi':188,343,595 'includ':437,735 'inconsist':404 'increasing/decreasing/flat':597 'infer':382 'inform':751 'input':102 'insight':35,95,125,725,860 'instruct':178 'interpret':41,101,132,754,898 'invalid':974 'involv':667 'issu':507 'item':534,599 'key':124,724,859 'languag':40,100,131,138,144,163,172,700,733,866 'largest/smallest':630 'last':456,811 'latin':161 'latin-script':160 'like':358,525,779,924 'line':497,827 'list':48 'll':377 'locat':181 'look':212,357 'm':840 'markdown':118 'match':640 'max':567 'may':475 'mean':762,906 'median':569 'messag':147,196,950,979,1004 'min':566 'mix':397,510,852 'mode':563,643,1038 'n':466,838 'name':345,363,380,503,672 'natur':699 'natural-languag':698 'negat':943 'next':927 'non':63 'non-techn':62 'notabl':506,848 'note':369,402,442,459,858 'number':34,94,123,399,729,761,905 'numer':388,412,435,571,603,625,843 'offer':768,786 'one':86,518,645,826 'one-lin':825 'outlier':814 'output':117,490,710,713,717,833,1029 'pars':266 'past':1054 'path':200,210 'per':419,592,627 'perform':551,695,805 'period':593,809,812 'phrase':176 'plain':39,99,130,259,732,865 'plain-languag':38,98,129 'pleas':237,286,331,958,990,1013 'plugin':22 'popul':340,723,1022 'present':483,582 'proceed':543,694 'profil':23,82,122,296,439,484,494,836 'provid':204 'python':20 'question':69,88,488,521 'rang':513,579,855 'read':78,183,254 'reason':701 'recommend':409 'refer':661 'reflect':477 'report':229,275,322 'repres':451,688 'request':1024 'requir':705 'respond':153,164,169 'respons':119 'result':474,711,714,747,897 'row':301,307,309,314,328,349,353,356,360,448,455,458,467,498,743,837,894,1010 'russian':149,155 'sale':45 'sampl':452,461,473,857 'script':162 'second':871 'see':233,720,954 'select':115,247,559,968 'sentenc':757,869,901 'session':831 'sheet':1058 'show':590,605,678 'signific':863 'skill':54 'skill-csv-data-analyzer' 'snapshot':127,738,887 'someth':539 'sort':600 'source-kirkruglov' 'spars':431,508,850 'statist':529,565 'step':179,294,481,549,706,766 'stop':227,273,320,948,977,1002 'structur':25,84,719 'su':49 'suggest':137 'summari':528,564,828,1047 'tabl':128,739,1051 'task':47 'technic':64 'term':765 'text':260,389,401,408,576,845,1046 'third':874 'time':532,585 'tool':76 'top':606,740,804,891 'top-perform':803 'top/bottom':533,598 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agents' 'topic-ai-skills' 'topic-awesome-list' 'topic-claude' 'topic-claude-ai' 'topic-claude-ai-skills' 'topic-claude-code' 'topic-claude-cowork' 'topic-claude-memory' 'topic-claude-skills' 'treat':405 'trend':530,583 'tri':251,292,336,972,996,1018 'trigger':175 'type':384,398,505,511,853 'understand':31,527 'upload':111,238,959 'use':42,177,205,378,449,697,715 'user':65,142,194,547,556,635,664,819,909 'valid':284,988 'valu':573,591 'visual':1028,1060 'vs':810 'want':29 'warn':463 'whichev':748 'without':71 'workspac':110,220 'would':523,922 'write':753 'written':912 'wrong':271","prices":[{"id":"5e2b2ccc-8c02-4cf0-a27a-95f3157e08e1","listingId":"da21b636-dbd7-44e2-8e71-c974e2fa444f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"KirKruglov","category":"claude-skills-kit","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:14.033Z"}],"sources":[{"listingId":"da21b636-dbd7-44e2-8e71-c974e2fa444f","source":"github","sourceId":"KirKruglov/claude-skills-kit/csv-data-analyzer","sourceUrl":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/csv-data-analyzer","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:14.033Z","lastSeenAt":"2026-05-18T19:13:36.815Z"}],"details":{"listingId":"da21b636-dbd7-44e2-8e71-c974e2fa444f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"KirKruglov","slug":"csv-data-analyzer","github":{"repo":"KirKruglov/claude-skills-kit","stars":7,"topics":["agent-skills","agentic-skills","ai","ai-agents","ai-skills","awesome-list","claude","claude-ai","claude-ai-skills","claude-code","claude-cowork","claude-memory","claude-skills","memory-management","productivity","productivity-tools","project-management"],"license":"mit","html_url":"https://github.com/KirKruglov/claude-skills-kit","pushed_at":"2026-05-18T04:27:46Z","description":"40+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation","skill_md_sha":"5132e23bbcee7098a26e794c79ec8abf2e25aa98","skill_md_path":"skills/csv-data-analyzer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/KirKruglov/claude-skills-kit/tree/main/skills/csv-data-analyzer"},"layout":"multi","source":"github","category":"claude-skills-kit","frontmatter":{"name":"csv-data-analyzer","description":"Analyze CSV files with business data through a dialogue-based flow — no code, no Python, no plugins. Profiles dataset structure, asks what you want to understand, then delivers numbered insights and a plain-language interpretation. Use when analyzing sales exports, task lists, survey results, CRM data, or any CSV file. Triggers: 'analyze my CSV', 'analyze this CSV file', 'help me understand this data', 'what insights can you find in this spreadsheet', 'проанализируй CSV', 'разбери мой файл данных', 'что в этом CSV', 'помоги понять данные из таблицы'."},"skills_sh_url":"https://skills.sh/KirKruglov/claude-skills-kit/csv-data-analyzer"},"updatedAt":"2026-05-18T19:13:36.815Z"}}