flint-chart-author
Author semantic chart specifications and render charts using flint-chart.
Skill by EstebanForge
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/estebanforge-flint-chart-author
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/flint-chart-author
What's inside
- Skill name
flint-chart-author- Description
- Author semantic chart specifications and render charts using flint-chart. Use when creating, visualizing, or validating data charts in JavaScript/TypeScript projects.
- License
- MIT
- Instructions
- 567 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: 567 lines (spec recommends under 500)
Files (2)
- META.md
- SKILL.md
SKILL.md (first lines)
# flint-chart: authoring and using a chart spec
## What you produce (and what you do NOT)
Your output is the **spec**: the `chart_spec` and `semantic_types` of a
`ChartAssemblyInput`. You reference data columns **by name**. The host
passes the resulting input to `assembleVegaLite`, `assembleECharts`,
or `assembleChartjs` to get a backend spec.
**You write the input spec, not the output spec.** And critically:
- **DO** emit `chart_spec` (chart type, channel→field mapping, properties)
and `semantic_types` (field → semantic type).
- **Reference columns by name.** How `data` itself gets bound depends on
the situation — a URL, a host-side variable, or embedded rows (see "How
data gets bound"). Embedding is fine for small tables; just don't
re-serialize a *large* dataset by hand, since that risks truncation and
silent value corruption and wastes tokens.
- **Transform data before Flint.** If the requested chart needs aggregation,
filtering, joins, pivots, derived columns, or long/wide reshaping beyond
Flint's built-in static-series fold, use a coding, notebook, SQL, or data tool
first. Then author the Flint spec against the transformed table.
- **Style after Flint, only when needed.** Author structure in Flint. For a
presentation tweak Flint does not express (a reference line, annotation, or
shaded band), use the Vega-Lite escape hatch — see "Post-Flint style
customization". Never feed edited Vega-Lite JSON back to `render_chart`.
## When the user wants more than a spec
First decide which workflow the user is asking for:
- **Spec authoring only:** return a `ChartAssemblyInput` or its
`semantic_types` + `chart_spec` pieces. Do not install packages or write
renderer code unless asked.
- **MCP chart output:** if Flint MCP tools are available, **default to
`create_chart_view`** whenever the user asks to see a chart — it opens an
interactive, live-rendered view with a customization panel, and it validates
the spec for you. Only fall back to `render_chart` (PNG/SVG) when the host has
no App UI support or the user explicitly wants a static image. Use
`validate_chart` to check a spec without rendering, `compile_chart` when the
user wants backend-native JSON, and `list_chart_types` when you need the
supported chart catalog.
- **Project integration, only when the user asks for code:** add Flint to an
app, notebook, script, or agentic product, install/import the library, and
call an assembler in code. Keep the same `ChartAssemblyInput` contract, then
let the host render the backend result.
For MCP clients, the server can run with `npx`:
```bash
npx -y flint-chart-mcp
```
For JavaScript or TypeScript projects, install Flint first and add only the
renderer peer dependencies needed by the backend you will render:
```bash
npm install flint-chart
npm install vega vega-lite vega-embed # browser Vega-Lite rendering
npm install echarts # ECharts rendering
npm install chart.js # Chart.js rendering
```
Then compile with the requested backend:
```ts
import { assembleChartjs, assembleECharts, assembleVegaLite } from 'flint-chart';
const vegaLiteSpec = assembleVegaLite(input);
const echartsOption = assembleECharts(input);
const chartjsConfig = assembleChartjs(input);
```
Python support is planned for a later release. Until the PyPI package is
published, use the npm package or MCP server for released workflows.
```ts
interface ChartAssemblyInput {
// Bound by the HOST or by you, depending on the situation (see below).
data: { values: any[] } | { url: string };
semantic_types?: Record<string, string>; // field → semantic type ← you write this
chart_spec: { // ← you write this
chartType: string; // e.g. "Scatter Plot"
encodings: Record<string, EncodingValue>; // channel → { field, ... } (or array)
baseSize?: { width: number; height: number }; // target layout size, default 400×320
canvasSize?: { width: number; height: number }; // optional hard ceiling on stretch
chartProperties?: Record<string, any>; // per-chart tuning (optional)
};
options?: Record<string, any>; // global layout options (rarely needed)
}
```
## How data gets bound
Use the binding mode that matches the runtime. Do not mix them.
1. **Direct MCP rendering: embed rows.** When calling `render_chart`,
`compile_chart`, or `validate_chart`, the tool arguments are JSON. If the
data is small or already transformed by another tool, pass it as
`data: { values: [...] }`. Do not pass runtime variable names in
MCP tool calls — the MCP server cannot see your local variables.
2. **Direct MCP rendering: reference a local file.**
The `flint-chart-mcp` server can load `data: { url: "..." }` from local
`.json`, `.csv`, or `.tsv` files. By default any local file the agent can
name is readable (relative paths resolve against the working directory); a
hardened deployment may reject local file references entirely via
`--disable-file-reference` (or `FLINT_MCP_DISABLE_FILE_REFERENCE`), in which
case pass rows inline with `data.values`. Remote URL
fetching is disabled. If the data must be transformed first, use a
coding/data tool to write a small prepared file, then reference that file.
3. **Generated application or notebook code: bind runtime variables.** If the
user asks you to add Flint to code, write normal data-loading code first and
pass a real runtime value, e.g. `data: { values: rows }`, to
`assembleVegaLite`, `assembleECharts`, or `assembleChartjs`. This variable
pattern is for generated code, not for MCP tool calls.
For spec-only answers, return the `semantic_types` and `chart_spec` pieces and
state how the host should bind data. In the worked examples below, `data` is
shown as `{ values: [] }` to signal "host binds this" — focus on `chart_spec`From EstebanForge/AGENTS, MIT.
More from EstebanForge/AGENTS
- 0.614score
ffmpeg-skill
EstebanForge
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles…
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
datastar
EstebanForge
Build reactive hypermedia web applications using Datastar.
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
fsm-design
EstebanForge
Design domain logic, multi-step processes, and agent workflows as strict Finite State Machines.
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
commit
EstebanForge
Create git commits with Conventional Commits formatting and human-gate verification.
SkillAFreshness: A★ 4Claude Code +9 - 0.606score
explain
EstebanForge
Use whenever the user asks to explain, walk through, or help them understand anything (code, a flow, a bug, a concept, an architecture, a model output).
SkillAFreshness: A★ 4Claude Code +9 - 0.578score
bro
EstebanForge
Restate the last message in plain human language, with no jargon.
SkillAFreshness: A★ 4Claude Code +9 - 0.574score
skill-installer
EstebanForge
Install skills from curated repositories or GitHub paths into $CODEX_HOME/skills.
SkillBFreshness: B★ 4Claude Code +9 - 0.570score
skill-creator
EstebanForge
Guide for creating or updating skills.
SkillBFreshness: B★ 4Claude Code +9 - 0.569score
codebase-design
EstebanForge
Design principles and vocabulary for deep software modules.
SkillBFreshness: B★ 4Claude Code +9 - 0.569score
agent-browser
EstebanForge
Automate web browsers using the agent-browser CLI.
SkillBFreshness: B★ 4Claude Code +9 - 0.569score
code-review
EstebanForge
Review code changes against project coding standards and specification requirements.
SkillBFreshness: B★ 4Claude Code +9 - 0.569score
domain-modeling
EstebanForge
Define and maintain project domain models and ubiquitous language.
SkillBFreshness: B★ 4Claude Code +9
Signals
- Stars
- 4
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 5, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/EstebanForge/AGENTS
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from EstebanForge
- 0.614score
ffmpeg-skill
EstebanForge
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles…
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
fsm-design
EstebanForge
Design domain logic, multi-step processes, and agent workflows as strict Finite State Machines.
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
commit
EstebanForge
Create git commits with Conventional Commits formatting and human-gate verification.
SkillAFreshness: A★ 4Claude Code +9 - 0.609score
datastar
EstebanForge
Build reactive hypermedia web applications using Datastar.
SkillAFreshness: A★ 4Claude Code +9 - 0.606score
explain
EstebanForge
Use whenever the user asks to explain, walk through, or help them understand anything (code, a flow, a bug, a concept, an architecture, a model output).
SkillAFreshness: A★ 4Claude Code +9 - 0.578score
bro
EstebanForge
Restate the last message in plain human language, with no jargon.
SkillAFreshness: A★ 4Claude Code +9
Cite this page
flint-chart-author skill. Agent Mart. https://agentmart.dev/skills/estebanforge-flint-chart-author (last updated 2026-10-24)