/data-analysis
Loads CSV, Excel, and JSON data files, performs statistical analysis, and generates charts and reports. Use when the user asks to analyze a dataset, compute statistics, create visualizations, find trends, or produce a data report.
$ npx -y skills add 0xranx/golembot --skill data-analysis --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/data-analysis
Context preview
The summary Claude sees to decide when to auto-load this skill.
Loads CSV, Excel, and JSON data files, performs statistical analysis, and generates charts and reports. Use when the user asks to analyze a dataset, compute statistics, create visualizations, find trends, or produce a data report.
SKILL.md
data-analysis.SKILL.mdname: data-analysis
description: "Loads CSV, Excel, and JSON data files, performs statistical analysis, and generates charts and reports. Use when the user asks to analyze a dataset, compute statistics, create visualizations, find trends, or produce a data report."
Data Analysis Skill
Process data files in the `data/` directory, perform analysis, and output reports to `reports/`.
Step-by-Step Workflow
1. **Identify the data source** — List available files and confirm with the user which to analyze:
ls data/
2. **Load and inspect the data** — Use Python to read the file and show a summary:
import pandas as pd
df = pd.read_csv("data/sales.csv") # or read_excel / read_json
print(f"Shape: {df.shape}")
print(f"Columns: {list(df.columns)}")
print(df.dtypes)
print(df.describe())
print(f"Missing values:\n{df.isnull().sum()}")3. **Clean the data** — Handle missing values, fix types, remove duplicates:
df = df.drop_duplicates()
df["date"] = pd.to_datetime(df["date"], errors="coerce")
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
df = df.dropna(subset=["date", "amount"])
print(f"Clean shape: {df.shape}")4. **Analyze** — Compute the requested statistics or aggregations:
# Example: monthly revenue trend
monthly = df.groupby(df["date"].dt.to_period("M"))["amount"].sum()
print(monthly)
# Example: correlation matrix
print(df[["amount", "quantity", "discount"]].corr())5. **Visualize** — Generate charts and save to `reports/`:
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
monthly.plot(kind="bar", title="Monthly Revenue")
plt.tight_layout()
plt.savefig("reports/monthly_revenue.png", dpi=150)
plt.close()
print("Chart saved to reports/monthly_revenue.png")6. **Write the report** — Save a Markdown report to `reports/`:
with open("reports/analysis_report.md", "w") as f:
f.write("# Analysis Report\n\n")
f.write("## Summary\n")
f.write(f"- Total records: {len(df)}\n")
f.write(f"- Date range: {df['date'].min()} to {df['date'].max()}\n")
f.write(f"- Total revenue: {df['amount'].sum():,.2f}\n\n")
f.write("## Charts\n")
f.write("\n")
print("Report saved to reports/analysis_report.md")Validation Checkpoints
After each step, verify before proceeding:
- After loading: confirm row count and column names are plausible
- After cleaning: check that no critical data was dropped unexpectedly (compare row counts)
- After analysis: sanity-check totals and aggregations (e.g., no negative counts)
- After saving: confirm output files exist with `ls reports/`
Using calc.py
For complex or specialized calculations, use the `calc.py` helper script:
python calc.py --input data/sales.csv --operation regression --output reports/regression.json
Output Format
Analysis reports should follow this structure:
# [Analysis Topic] Report
## Summary
- Key finding 1
- Key finding 2
## Data Overview
- Records: N rows
- Time range: ...
## Detailed Analysis
...
## Recommendations
...
Read more
name: data-analysis description: "Loads CSV, Excel, and JSON data files, performs statistical analysis, and generates charts and reports. Use when the user asks to analyze a dataset, compute statistics, create visualizations, find trends, or produce a data report."
Data Analysis Skill
Process data files in the `data/` directory, perform analysis, and output reports to `reports/`.
Step-by-Step Workflow
1. **Identify the data source** — List available files and confirm with the user which to analyze:
ls data/
2. **Load and inspect the data** — Use Python to read the file and show a summary:
import pandas as pd
df = pd.read_csv("data/sales.csv") # or read_excel / read_json
print(f"Shape: {df.shape}")
print(f"Columns: {list(df.columns)}")
print(df.dtypes)
print(df.describe())
print(f"Missing values:\n{df.isnull().sum()}")3. **Clean the data** — Handle missing values, fix types, remove duplicates:
df = df.drop_duplicates()
df["date"] = pd.to_datetime(df["date"], errors="coerce")
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
df = df.dropna(subset=["date", "amount"])
print(f"Clean shape: {df.shape}")4. **Analyze** — Compute the requested statistics or aggregations:
# Example: monthly revenue trend
monthly = df.groupby(df["date"].dt.to_period("M"))["amount"].sum()
print(monthly)
# Example: correlation matrix
print(df[["amount", "quantity", "discount"]].corr())5. **Visualize** — Generate charts and save to `reports/`:
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
monthly.plot(kind="bar", title="Monthly Revenue")
plt.tight_layout()
plt.savefig("reports/monthly_revenue.png", dpi=150)
plt.close()
print("Chart saved to reports/monthly_revenue.png")6. **Write the report** — Save a Markdown report to `reports/`:
with open("reports/analysis_report.md", "w") as f:
f.write("# Analysis Report\n\n")
f.write("## Summary\n")
f.write(f"- Total records: {len(df)}\n")
f.write(f"- Date range: {df['date'].min()} to {df['date'].max()}\n")
f.write(f"- Total revenue: {df['amount'].sum():,.2f}\n\n")
f.write("## Charts\n")
f.write("\n")
print("Report saved to reports/analysis_report.md")Validation Checkpoints
After each step, verify before proceeding:
- After loading: confirm row count and column names are plausible
- After cleaning: check that no critical data was dropped unexpectedly (compare row counts)
- After analysis: sanity-check totals and aggregations (e.g., no negative counts)
- After saving: confirm output files exist with `ls reports/`
Using calc.py
For complex or specialized calculations, use the `calc.py` helper script:
python calc.py --input data/sales.csv --operation regression --output reports/regression.json
Output Format
Analysis reports should follow this structure:
# [Analysis Topic] Report ## Summary - Key finding 1 - Key finding 2 ## Data Overview - Records: N rows - Time range: ... ## Detailed Analysis ... ## Recommendations ...
Any Agent × Any Provider × Anywhere. Connect Cursor, Claude Code, OpenCode, or Codex to Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat — with any LLM provider.
Repo: 0xranx/golembot
Other skills on golembot.
- /escalation
Escalate unresolvable or sensitive requests to a human agent by recording an escalation entry. Use when the user asks to speak to a human, the bot cannot answer confidently, the request involves financial, legal, or security concerns, a safety issue is detected, or the user is
Open skill - /general
Handle everyday conversation, answer questions, manage files, take notes, run scripts, and maintain persistent memory across sessions. Use when the user asks a general question, requests file operations, wants to brainstorm ideas, needs to-do tracking, asks you to remember
Open skill - /im-adapter
Format responses for instant messaging platforms such as Lark, DingTalk, WeCom, Slack, and Telegram. Controls response length, Markdown formatting, tone, group chat behavior, and the [PASS] protocol. Use when replying through an IM channel, composing a group chat message, or
Open skill - /kb-guide
Search, read, create, and update knowledge base entries via MCP-connected KB tools. Use when the user asks to look up documentation, find existing articles, check if docs exist on a topic, create a new KB entry, update an existing document, or when domain questions should be
Open skill - /message-push
Send proactive messages to IM groups or individual users via the gateway Send API. Use when the user says to send, post, notify, forward, or tell someone a message on Feishu, Slack, Telegram, Discord, DingTalk, or WeCom.
Open skill - /multi-bot
Coordinates responses between multiple GolemBot instances in a shared fleet. Use when the bot operates in a group chat with other bots, needs to decide whether to respond or pass, or must call a peer bot's API to fetch cross-domain data.
Open skill

