Contributing to flint-chart

June 24, 2026 ยท View on GitHub

Thanks for your interest. This document describes the workflow, code layout, and conventions for contributions.

Code of Conduct

This project adopts the Microsoft Open Source Code of Conduct.

Project layout

src/                         library source (published to npm)
  index.ts                   public barrel
  core/                      target-agnostic types, decisions, semantics
  vegalite/                  Vega-Lite backend
  echarts/                   ECharts backend
  chartjs/                   Chart.js backend
  test-data/                 fixtures + generators (used by gallery + tests)
tests/                       repo-level tests (unit + snapshot)
site/                        unified demo app (Vite + React, landing / gallery / editor)
agent-skills/                      Agent skill (SKILL.md) for AI-assisted charting
docs/                        design docs, planning, contributor how-tos

Local setup

npm install            # installs root + examples + agents via workspaces
npm run typecheck      # tsc --noEmit
npm run test           # vitest run
npm run lint
npm run build          # tsup โ†’ dist/ (dual ESM + CJS + .d.ts)

Node 18+ required (see .nvmrc).

Quick contribution recipes

Commit / PR guidelines

  • One topic per PR. Keep diffs reviewable.
  • Run npm run typecheck && npm run test && npm run lint before pushing.
  • Snapshot test updates: justify the diff in your PR description.

Public API & semver

The public surface is whatever is re-exported from src/index.ts and the per-backend ./vegalite, ./echarts, ./chartjs, ./core, ./test-data subpath exports. We follow semver: breaking changes go in a major release; new templates / semantic types / fields on non-required types are minor; bug fixes are patch.

Release process

Releases are handled by project maintainers.