ChartGen AI — Data Analysis & Visualization Skill
name: chartgen
by chartgen-ai · published 2026-04-01
$ claw add gh:chartgen-ai/chartgen-ai-chart-ai---
name: chartgen
description: >
Use this skill when the user wants to create visualizations (charts, dashboards, diagrams, Gantt, PPT), analyze data (Excel/CSV upload, cross-file analysis, trends, outliers) or generate reports. Also use when the user mentions ChartGen or uploads spreadsheet files.
user-invocable: true
homepage: https://github.com/chartgen-ai/chartgen-skill
metadata:
openclaw:
requires:
env:
- CHARTGEN_API_KEY
runtime:
- node >= 14
---
# ChartGen AI — Data Analysis & Visualization Skill
ChartGen is an AI platform for **visualization**, **data analysis** and **report generation**.
You call its API to analyze data, uncover insights, and produce visual outputs.
**Visualization** (PNG): All ECharts chart types (Bar, Line, Pie, Area, Scatter, Heatmap, Combo, Waterfall, Funnel, Radar, Treemap, Sunburst, etc.); Diagrams (Flowchart, Sequence, Class, State, ER, Mind Map, Timeline, Kanban, Gantt);
Dashboards (multi-chart layouts).
**Data Analysis**: text-only (describe scenario / sample data), file upload (Excel/CSV, multi-file joins), or web/external sources. Supports stats, trends, outliers, YoY.
**Reports & PPT**: analysis reports with findings; PPT slides with visualizations.
---
Tool — `tools/chartgen_api.js`
| Command | Args | Purpose |
|---------|------|---------|
| `submit` | `"<query>" <channel> [files...]` | Submit request → returns `task_id` |
| `wait` | `<task_id>` | Poll until done (~25 min max) |
| `poll` | `<task_id>` | Single status check |
---
Workflow — 5 Steps
STEP 1 — Confirm Before Submitting
Always respond in the user's language. **Must** include numbered options (1=go, 2=modify, 0=cancel).
**Confirmation rules:**
1. **Cancel = abandon forever.** Never proceed with a cancelled task.
2. **Replies bind to the most recent prompt only.** If the task was cancelled, completed, or the conversation moved on — start a new confirmation from scratch.
3. **When in doubt, ask** — never guess.
**Text request (no files):** Compose the planned task and present with options 1/2/0. If user says 1 or any affirmative → STEP 2. If user modifies → use their version, go to STEP 2. If cancel → discard.
**File upload:** Do NOT submit immediately. Recommend 3–5 analysis tasks (numbered, noting which files). User picks a number, types custom text, or cancels.
Text request example (adapt to language):
> I'll use **ChartGen** to create this for you:
> 📊 **Generate a monthly sales trend line chart for 2025.**
> **1** — Go ahead **2** — Modify **0** — Cancel
File upload example (adapt to language):
> I received your files! What would you like **ChartGen** to do?
> **1.** 📊 Monthly order trend — *orders.xlsx*
> **2.** 🥧 Category pie chart — *orders.xlsx, products.xlsx*
> **3.** 📋 Full analysis report — *all files*
> **0.** ❌ Cancel
> Or type your own question.
---
STEP 2 — Notify User, Then Submit
**CRITICAL**: Send the notification message BEFORE calling the tool — do NOT batch them.
**Notify** (adapt to language and context):
**Then call the tool:**
node tools/chartgen_api.js submit "<query>" <channel> [files...]`<channel>`: current channel name, e.g. `Signal`, `WhatsApp`, `Web`.
`[files...]`: optional, space-separated absolute paths to data files.
Save the returned `task_id` for STEP 3.
**Error handling:**
---
STEP 3 — Background Polling
Choose based on platform capabilities:
**A. Background exec** (OpenClaw, or agent supports background execution with exit notification):
{ "tool": "exec", "params": { "command": "node tools/chartgen_api.js wait {task_id}", "background": true } }When done, read output → STEP 4.
**B. Cron** (generic): poll every 90s with `poll {task_id}`. On terminal status (`finished`/`error`/`not_found`), remove cron → STEP 4. Timeout after 25 min.
**C. Inline** (last resort): run `wait {task_id}` synchronously → STEP 4.
If user asks to check a task: run `poll {task_id}` and report.
---
STEP 4 — Handle Completion
Read the output JSON `status`:
---
STEP 5 — Deliver Results
1. **Show `text_reply`** — the analysis report in Markdown.
2. **Send artifacts:**
- Charts/Dashboards/Diagrams: send image at `image_path` with title as caption.
- PPT: tell user page count, send each `preview_paths` image, send `.pptx` file at `download_path` if it exists and channel supports attachments.
3. **Show `edit_url`** — link to edit on ChartGen.
4. **HTML content**: if `html_content` exists, send it as HTML message (skip separate text+images). Still show `edit_url`.
5. **Suggest next steps**: "You can ask me to generate another visualization!"
---
Rules
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...