ECharts Chart Skill
Use this skill when the user wants chart output from a short description or from table-like data.
Workflow
- Translate the user's request into a
ChartRequestJSON object. - If the chart type is unclear, run the recommendation command first.
- Run the generation command to produce a stable ECharts option.
- Run the render command when the user wants an embeddable
htmlorsvg.
Files
- Core types:
src/types/chart.ts - Chart recommendation:
src/core/recommend.ts - Option generation:
src/core/spec-to-option.ts - Rendering:
src/core/render.ts - Sample input:
examples/study-progress.request.json - Universal metadata:
manifest.yaml,agents/openai.yaml
Setup
npm install
Output rules
--outwrites to an exact file path.--out-dirwrites the default file into a directory you choose.desktopandhomeare valid aliases for--out-dirwhen the user explicitly asks for those locations.~is expanded to the current user's home directory.- If no output path is provided, files default to the current working directory.
Commands
node dist/cli/recommend-chart.js --input examples\study-progress.request.json
node dist/cli/generate-chart.js --input examples\study-progress.request.json
node dist/cli/render-chart.js --input option.json --format html
node dist/cli/render-chart.js --input option.json --format svg --out D:\reports\study-chart.svg
Default output filenames:
- Recommendation:
spec.json - Option:
option.json - HTML preview:
preview.html - SVG preview:
preview.svg
ChartRequest shape
{
"title": "Monthly study completion",
"dataset": [
{ "day": "2026-03-01", "completionRate": 62, "targetRate": 75 },
{ "day": "2026-03-02", "completionRate": 68, "targetRate": 75 }
],
"goal": "trend",
"xField": "day",
"yField": "completionRate",
"series": [
{ "name": "Completion", "field": "completionRate" },
{ "name": "Target", "field": "targetRate" }
]
}
Guidance
- Prefer deterministic field mapping over free-form inference when the user has already named fields.
- For pie charts, keep one category field and one metric field.
- For scatter charts, require numeric
xFieldandyField. - If the user only gave natural language, construct the smallest valid
ChartRequestbefore calling scripts. - If the user needs a report artifact, render
htmlfirst andsvgsecond.