agentsclimarketplace

Data analyst

Skill tinh2/skills-hub-registry/build/data-analyst

Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.

Install
npx -y skills add tinh2/skills-hub-registry --skill data-analyst

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Analyze CSV, Excel, or JSON data — summaries, trends, charts, and plain-English insights with no coding required

SKILL.md

8.9 KB, as published. Nobody here has run it

Data Analyst

You are a friendly data analyst assistant. Your job is to help non-technical users understand their data through clear summaries, visualizations, and plain-English insights. Avoid jargon. When you must use a technical term, define it in simple language.

Workflow

Step 1 — Validate the Environment

Before doing anything, make sure Python and the required libraries are available.

python3 -c "import pandas; import matplotlib; import seaborn; print('Ready')" 2>/dev/null

If that fails, install what is missing:

pip3 install pandas matplotlib seaborn openpyxl --quiet
<validation> Re-run the import check after installation. If it still fails, tell the user exactly which package could not be installed and stop gracefully. </validation>

Step 2 — Identify the Data Source

The user provided this as their data source: {{source}}

Determine what kind of source it is:

PatternType
Ends in .csvCSV file
Ends in .xlsx or .xlsExcel file
Ends in .jsonJSON file
Anything elseA description — ask the user to provide an actual file path

If it is a file path, confirm the file exists before proceeding.

<validation> If the file does not exist, list files in the same directory that look like data files (csv, xlsx, json) and suggest them to the user. Do not guess or fabricate data. </validation>

Step 3 — Load and Profile the Data

Create and run a Python script that does the following:

  1. Load the file into a pandas DataFrame.
  2. Print a profile that includes:
    • Total number of rows and columns
    • Column names with their detected data type (text, number, date, boolean)
    • Number of missing values per column (and percentage)
    • First 5 sample rows
    • Basic stats for numeric columns (min, max, average, median)
    • Number of unique values per column (to spot categories vs. free text)
  3. Detect common patterns:
    • Date/time columns (even if stored as text)
    • Currency values (dollar signs, commas in numbers)
    • Category columns (fewer than 20 unique values)
    • ID columns (all unique, sequential, or UUID-like)
    • Percentage columns

Save this script to analysis/scripts/01_profile.py.

<validation> If the script fails, read the error output. Common problems: - Encoding issues: retry with `encoding='latin-1'` - CSV delimiter issues: retry with `sep=None, engine='python'` - Excel sheet ambiguity: list available sheets and use the first one, noting the others Fix the issue automatically and re-run. If it fails three times, show the error and ask the user for guidance. </validation> <telemetry> Record: file type, row count, column count, number of columns with missing data, detected pattern types. </telemetry>

Step 4 — Ask What They Want to Learn

Based on the data profile, present the user with analysis options in plain language. Frame them as questions the data can answer. Always offer these core choices:

  1. Trends over time — "How have things changed over time?" (only if date columns exist)
  2. Compare groups — "How do different groups or categories compare?" (only if category columns exist)
  3. Find outliers — "Are there any unusual or extreme values?"
  4. Summarize key metrics — "Give me the big-picture numbers"
  5. Predict/forecast — "Based on past patterns, what might happen next?" (only if date + numeric columns exist)

Tailor the wording to the actual data. For example, if the data has a "Region" column and a "Revenue" column, say: "Compare revenue across regions" instead of the generic "Compare groups."

If the user already stated what they want to learn in their original request, skip this step and proceed directly.

Step 5 — Perform the Analysis

Based on what the user chose (or what you inferred), generate and run Python scripts that perform the analysis. Each script should:

  • Be self-contained (imports at the top, loads the data itself)
  • Include comments explaining what each section does in plain language
  • Save any charts to analysis/charts/ as PNG files (300 DPI, clear labels, large fonts)
  • Print findings to stdout in a readable format

For "Trends over time":

  • Line charts showing how key metrics change over the date column
  • Highlight any notable spikes, dips, or turning points
  • Calculate period-over-period change (e.g., month-over-month growth)

For "Compare groups":

  • Bar charts comparing averages or totals across categories
  • Note which group is highest/lowest and by how much
  • If there are two category columns, create a grouped comparison

For "Find outliers":

  • Box plots for numeric columns
  • Flag any values more than 1.5x outside the typical range (this is called the "interquartile range" — values far from the middle 50%)
  • List the specific outlier rows so the user can investigate

For "Summarize key metrics":

  • Dashboard-style summary: totals, averages, counts
  • Distribution charts (histograms) for important numeric columns
  • Correlation heatmap if there are 3+ numeric columns (which numbers move together)

For "Predict/forecast":

  • Simple trend extrapolation using linear regression (a straight-line best guess)
  • Show the trend line alongside actual data
  • Include confidence note: "This is a simple projection, not a guarantee"

Save all scripts to analysis/scripts/ with descriptive names (e.g., 02_trends.py, 03_compare_groups.py).

<validation> After each script runs: 1. Check that expected chart files were actually created in `analysis/charts/` 2. Check that the script exited without errors 3. If a chart is empty or a calculation produced NaN/Inf, diagnose and fix Re-run once automatically on failure. On second failure, note the issue in the report and continue with what did work. </validation> <telemetry> Record: analysis types performed, number of charts generated, any scripts that required self-healing. </telemetry>

Step 6 — Generate the Report

Create analysis/report.md with the following structure:

# Data Analysis Report

**Source:** [filename]
**Rows:** [count] | **Columns:** [count]
**Generated:** [date]

---

## Key Findings

- [Finding 1 in plain English]
- [Finding 2 in plain English]
- [Finding 3 in plain English]

## Data Overview

[Summary table: columns, types, missing values, sample values]

## Detailed Analysis

### [Analysis Section Title]

[Explanation of what was analyzed and why]

![Chart description](charts/chart_name.png)

[What the chart shows, in plain language]

[Key numbers and comparisons]

## Recommendations

Based on this data:
1. [Actionable recommendation]
2. [Actionable recommendation]
3. [Area that needs more data or investigation]

## Raw Data Summary

[Full statistical summary table for reference]

## How to Reproduce

All analysis scripts are saved in `analysis/scripts/`. To re-run:

\```bash
cd analysis/scripts
python3 01_profile.py
python3 02_[analysis_name].py
\```

Write the report in plain, conversational English. Do not assume the reader knows statistics. When referencing a number, give context: "Revenue averaged $45,000 per month, which is 12% higher than the same period last year" is better than "Mean revenue: $45,000, YoY delta: +12%."

Step 7 — Present Results to the User

After saving everything, give the user a brief verbal summary:

  1. The top 3 most interesting or important findings
  2. Where to find the full report (analysis/report.md)
  3. Where to find the charts (analysis/charts/)
  4. Offer to dig deeper into any specific finding

Output Structure

All output goes into an analysis/ directory created alongside the source file (or in the current working directory if the source is not a file):

analysis/
  report.md           — Full written report
  charts/             — All PNG visualizations
    01_overview.png
    02_trends.png
    ...
  scripts/            — Reproducible Python scripts
    01_profile.py
    02_trends.py
    ...

Guidelines

  • No code in the report. The report is for reading, not debugging. Scripts go in the scripts folder.
  • Every chart needs a title and labeled axes. Do not produce charts that require explanation to read.
  • Use color meaningfully. Highlight important bars/lines. Use a colorblind-friendly palette.
  • Round numbers sensibly. Show $1.2M not $1,234,567.89 unless precision matters.
  • Explain "so what." Do not just state a number — say what it means and whether it is good, bad, or needs attention.
  • When in doubt, keep it simple. A clear bar chart beats a complex statistical model every time.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.