Analysis Data
by @chartgen-ai
Use this skill when the user wants to create visualizations (charts, dashboards, diagrams, Gantt, PPT), analyze data (Excel/CSV upload, cross-file analysis,...
clawhub install analysis-dataπ About This Skill
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: primaryEnv: CHARTGEN_API_KEY requires: 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 | | Submit request β returns task_id |
| wait | | Poll until done (~25 min max) |
| poll | | Single status check |
| run | | Submit request and poll until done |
{ "query": "...", "channel": "Web", "files": ["/absolute/path/data.xlsx"] }.query: confirmed user request text.channel: messaging channel name using letters, numbers, spaces, dots, underscores, or hyphens.files: optional array of absolute paths to selected files..csv, .xls, .xlsx, .tsv.https://chartgen.ai. Custom API endpoints are not supported.text_reply, edit_url, artifacts[] (artifact_id, image_path, title).page_count, preview_paths[], download_path.download_path, file_name, summary."error" and "user_message" (for non-special errors).Workflow β 5 Steps
STEP 1 β Confirm Before Submitting
Always respond in the user's language. Must mention using ChartGen to complete the task, and include numbered options, each on its own line: > 1 β Go ahead > 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.
Query rule β text requests (no files):
The request JSON query field is always the user's original message, copied word-for-word. Do NOT translate, rephrase, expand, polish, or "improve" it in any way. Show this exact text in the confirmation. If user confirms β submit this exact text. If user edits β the edited text becomes the new verbatim query.
File upload: Do NOT submit immediately. Recommend 3β5 analysis tasks (numbered, noting which files). Each option's text is the exact query that will be submitted. User picks a number, types custom text, or cancels.
Text request example (reply in user's language, mention ChartGen): > Sure! Here's what I'll ask ChartGen to do for you: > π "Generate a monthly sales trend line chart for 2025" > 1 β Go ahead > 2 βοΈ Modify > 0 β Cancel
File upload example (reply in user's language, mention ChartGen): > Got your files! Here are a few things ChartGen can do β pick one or tell me what you'd like: > 1. π "Monthly order trend chart" β *orders.xlsx* > 2. π₯§ "Category breakdown pie chart" β *orders.xlsx, products.xlsx* > 3. π "Full analysis report with all files" > 0. β Cancel > Or just type your own request!
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 create a temporary request JSON file: Use a platform file-write API or other structured file operation. Do not create this JSON file with a shell command containing the user's query, and do not put the query, channel, or data file paths directly into the shell command.
Use an agent-generated temporary filename with safe characters, for example /tmp/chartgen_request_20260506_112900.json.
Request JSON:
{
"query": "confirmed user text from STEP 1",
"channel": "Web",
"files": ["/absolute/path/data.xlsx"]
}
Omit files when no files are selected.
Then call the tool with only the request file path:
node tools/chartgen_api.js submit /tmp/chartgen_request_20260506_112900.json
The shell command must contain only the fixed command words and the agent-generated request JSON path.Save the returned task_id for STEP 3.
Error handling:
"api_key_not_configured" β Tell user to get a key at https://chartgen.ai/chat β Menu β API, then set via export CHARTGEN_API_KEY="key" or save to ~/.chartgen/api_key. Stop here."upgrade_required" β Tell user the skill is outdated and needs manual update. See references/upgrade-skill.md for the message template. Stop here.user_message field to the user. Stop here.STEP 3 β Background Polling
Choose based on platform capabilities:
Before using any task_id, confirm it matches only letters, numbers, dots, underscores, or hyphens. If it does not, stop and report the invalid task ID instead of running a command.
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:
"finished" β Proceed to STEP 5. Artifacts are already saved to local image_path / download_path."error" β Show error to user, suggest retry."not_found" β Task expired, offer new request."timeout" β Inform user, offer manual check: "Check task {task_id}".STEP 5 β Deliver Results
1. Summarize text_reply β extract key points from ChartGen's analysis and present them concisely to the user. Keep it clear and informative.
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.
- Excel/file: show summary (columns, rows), send 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
https://chartgen.ai.image_path from results, never show raw base64.text_reply, send artifact images/files, show edit_url, and suggest next steps β even when artifacts are present.π Constraints
https://chartgen.ai.image_path from results, never show raw base64.text_reply, send artifact images/files, show edit_url, and suggest next steps β even when artifacts are present.