Zero External Dependencies
This skill is fully self-contained. No additional setup or npm install required.
- ✅ All JavaScript dependencies bundled into
bundle.mjs - ✅ WASM binaries included for PNG rendering
- ✅ Works immediately after folder download
- ✅ Cross-platform (macOS, Linux, Windows)
Just use the .github/skills/charto/ folder as-is.
This skill is a single end-to-end workflow with internal phases, not separate sub-skills.
Project assets for this skill live here:
references/chart-workflow-guide.md: decision and workflow referencescripts/build/dist/: prebuilt runtime snapshot for direct sharing (generated bynpm run build)bundle.mjs: fully bundled MCP server (all JS deps included)index_bg.wasm: WASM binary for PNG rendering
- Root
scripts/*.mjs: runnable helper scripts that import from.github/skills/charto/scripts/build/dist/
Core flow:
- Load the input data with
load_tabular_file. - Infer schema via
infer_schema. - Propose ranked chart choices with
suggest_chart_options. - If the user picked an option, build it with
generate_vega_spec. - Render output artifacts with
render_chart_preview. - Return artifact paths and a short rationale.
Large dataset flow (required):
- Always pass
rowLimitwhen a file may be large. - If large dataset metadata is returned:
- clearly state that large dataset mode was triggered
- surface recommended options first
- explain any fallback aggregation applied
- In large dataset mode, use
includePngBase64: falseunless inline base64 is explicitly requested.
Rules:
- Never invent columns, values, or transformations.
- Prefer readable, aggregated visuals over noisy row-level output.
- If no viable chart option exists, explain why and ask for dataset adjustments.
- Return generated artifact paths whenever available.
- Ask for the dataset path if missing.
- PNG rendering uses bundled WASM; if rendering fails, fall back to HTML output (no external dependencies needed).