CSV Data Analyzer
This 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.
Input:
- A CSV file accessible in the Cowork workspace (uploaded or in the selected folder)
Output:
- Markdown response with: dataset profile, numbered key insights, data snapshot table, plain-language interpretation, and follow-up suggestions
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Locate and Read the CSV File
Identify the CSV file from the user's message
- If a file path or filename is provided: use it directly
- If no path given: look for a CSV file in the Cowork workspace folder
- 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."
Read the file content as plain text
- 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."
Step 2: Profile the Dataset
Count rows and columns (exclude the header row from row count)
- 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."
Identify column names from the first row
- 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."
Infer data type for each column: numeric, text, date, or boolean
- If a column contains mixed types (numbers and text): note the inconsistency; treat column as text; recommend cleaning before numeric analysis
Check for empty/null cells per column
- If a column has >30% empty cells: flag it as sparse and exclude from numeric analysis; include in profile with a note
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."
Step 3: Present Profile and Ask Clarifying Question
Output a brief dataset profile (2–3 lines):
- Row count, column count, column names with types, notable issues (sparse columns, mixed types, date range if detected)
Ask one focused clarifying question:
- "What would you like to understand — summary statistics, trends over time, top/bottom items, comparisons between groups, or something else?"
- Do not proceed to analysis until user answers
Step 4: Perform Analysis
Based on the user's answer, select the appropriate analysis mode:
- Summary statistics: min, max, average, median for numeric columns; value counts for text columns; date range if dates present
- Trends over time: group by date column; show values per period (day/week/month); identify direction (increasing/decreasing/flat)
- Top/bottom items: sort by a numeric column; show top 5 and bottom 5; calculate gap between them
- Comparisons between groups: group by a categorical column; aggregate a numeric column per group; highlight largest/smallest group
- Custom goal: if user's answer doesn't match the above modes, ask one follow-up to clarify which column(s) to focus on
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.
Perform analysis using natural-language reasoning. No code execution required.
Step 5: Format and Output Results
- Output results using the Output Format structure (see below)
- Populate Key Insights with 3–5 numbered findings in plain language
- Include a Data Snapshot table: top 5–10 rows or the aggregated result (whichever is more informative)
- Write Interpretation: 2–3 sentences explaining what the numbers mean in business terms
Step 6: Offer Follow-Up Directions
- Ask: "Anything else you'd like to explore in this data?"
- 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]")
- If user confirms done: close with a one-line summary of the session findings
Output Format
### Dataset Profile
- **Rows:** {N} | **Columns:** {M}
- **Columns:** {col1 (numeric)}, {col2 (text)}, {col3 (date)}, …
- **Notable:** {any sparse columns, mixed types, date range, or sampling note}
### Key Insights
1. [Most significant finding — plain language, 1–2 sentences]
2. [Second finding]
3. [Third finding]
4. [Fourth finding, if applicable]
5. [Fifth finding, if applicable]
### Data Snapshot
| {Col1} | {Col2} | {Col3} |
|--------|--------|--------|
| … | … | … |
*(Top 5–10 rows or aggregated result)*
### Interpretation
[2–3 sentences explaining what these numbers mean for the user's context — written for a business audience, not a data audience]
---
**What would you like to explore next?**
- [Follow-up direction 1]
- [Follow-up direction 2]
- [Follow-up direction 3]
Negative Cases
- 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."
- Invalid file format: Stop with message — "This file doesn't appear to be a valid CSV. Please check the file format and try again."
- 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."
- 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."
1---2name: csv-data-analyzer3description: 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', 'помоги понять данные из таблицы'.4---56# CSV Data Analyzer78This 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.910**Input:**11- A CSV file accessible in the Cowork workspace (uploaded or in the selected folder)1213**Output:**14- Markdown response with: dataset profile, numbered key insights, data snapshot table, plain-language interpretation, and follow-up suggestions1516---1718## Language Detection1920Detect the user's language from their message:21- If Russian (or contains Cyrillic): respond in Russian22- If English (or other Latin-script language): respond in English23- If ambiguous: respond in the language of the trigger phrase used2425---2627## Instructions2829### Step 1: Locate and Read the CSV File30311. Identify the CSV file from the user's message32 - If a file path or filename is provided: use it directly33 - If no path given: look for a CSV file in the Cowork workspace folder34 - 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."35362. Read the file content as plain text37 - 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."3839### Step 2: Profile the Dataset40411. Count rows and columns (exclude the header row from row count)42 - 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."43442. Identify column names from the first row45 - 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."46473. Infer data type for each column: numeric, text, date, or boolean48 - If a column contains mixed types (numbers and text): note the inconsistency; treat column as text; recommend cleaning before numeric analysis49504. Check for empty/null cells per column51 - If a column has >30% empty cells: flag it as sparse and exclude from numeric analysis; include in profile with a note52535. 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."5455### Step 3: Present Profile and Ask Clarifying Question56571. Output a brief dataset profile (2–3 lines):58 - Row count, column count, column names with types, notable issues (sparse columns, mixed types, date range if detected)59602. Ask one focused clarifying question:61 - "What would you like to understand — summary statistics, trends over time, top/bottom items, comparisons between groups, or something else?"62 - Do not proceed to analysis until user answers6364### Step 4: Perform Analysis6566Based on the user's answer, select the appropriate analysis mode:6768- **Summary statistics:** min, max, average, median for numeric columns; value counts for text columns; date range if dates present69- **Trends over time:** group by date column; show values per period (day/week/month); identify direction (increasing/decreasing/flat)70- **Top/bottom items:** sort by a numeric column; show top 5 and bottom 5; calculate gap between them71- **Comparisons between groups:** group by a categorical column; aggregate a numeric column per group; highlight largest/smallest group72- **Custom goal:** if user's answer doesn't match the above modes, ask one follow-up to clarify which column(s) to focus on7374**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.7576Perform analysis using natural-language reasoning. No code execution required.7778### Step 5: Format and Output Results79801. Output results using the Output Format structure (see below)812. Populate Key Insights with 3–5 numbered findings in plain language823. Include a Data Snapshot table: top 5–10 rows or the aggregated result (whichever is more informative)834. Write Interpretation: 2–3 sentences explaining what the numbers mean in business terms8485### Step 6: Offer Follow-Up Directions86871. Ask: "Anything else you'd like to explore in this data?"882. 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]")893. If user confirms done: close with a one-line summary of the session findings9091---9293## Output Format9495```96### Dataset Profile97- **Rows:** {N} | **Columns:** {M}98- **Columns:** {col1 (numeric)}, {col2 (text)}, {col3 (date)}, …99- **Notable:** {any sparse columns, mixed types, date range, or sampling note}100101### Key Insights1021. [Most significant finding — plain language, 1–2 sentences]1032. [Second finding]1043. [Third finding]1054. [Fourth finding, if applicable]1065. [Fifth finding, if applicable]107108### Data Snapshot109| {Col1} | {Col2} | {Col3} |110|--------|--------|--------|111| … | … | … |112*(Top 5–10 rows or aggregated result)*113114### Interpretation115[2–3 sentences explaining what these numbers mean for the user's context — written for a business audience, not a data audience]116117---118**What would you like to explore next?**119- [Follow-up direction 1]120- [Follow-up direction 2]121- [Follow-up direction 3]122```123124---125126## Negative Cases127128- **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."129- **Invalid file format:** Stop with message — "This file doesn't appear to be a valid CSV. Please check the file format and try again."130- **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."131- **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."