markvis
Charts of numbers in Markdown. The table is the source (comma-separated rows or a Markdown table). Tags chart, markvis, and vis are the same language. Types: bar line area scatter pie hist only.
When to use
- Numbers in a doc need a chart and the rows must stay editable.
- An agent should be able to add a row, change
type, and regenerate. - Readers without a plugin still need the table.
When not to use
- Flowcharts, sequence, state, ER → a structure diagram tool.
- Invented PNG / screenshot as the source of truth.
- Vega-Lite / ECharts JSON as the default artifact (optional later
engine:, not core). - A 7th chart type (
donut,heatmap,stacked-baras its own type).
Fence shape
```chart markvis: 2 type: bar title: Q3 Revenue unit: USD k x: month y: revenue month,revenue Jan,120 Feb,180 Mar,150
Optional `theme:`: `folio` (default) `highcharts` `shadcn` `docs` `ant` `recharts` — grammar packs only, no chart runtimes. Optional `palette:`: `ink` `porcelain` `warm` `cool` `vivid` — colors only. Omit → theme default colors. Unknown → `E_UNKNOWN_PALETTE` + table. Never merge palette into the theme id. Also: GFM table after the blank line; or `<!-- chart: bar x=month y=revenue title="Q3" -->` immediately followed by a GFM table. ## Eight few-shots Copy from `examples/valid/` (keep fences identical): 1. `01-bar-basic` — bar + unit + CSV 2. `02-line-multi` — line + `series` 3. `03-area-basic` — area, tag `vis` 4. `04-scatter-basic` — scatter 5. `05-pie-raw` — pie (do not normalize; 40+35+30) 6. `06-hist-basic` — hist 7. `07-bar-gfm` — GFM table as data 8. `08-bar-comment` — HTML comment + table ## Anti-patterns | Don’t | Do | | --- | --- | | Flowchart `pie` / `xychart` for tables | markvis fence | | JSON array as the data body | CSV or GFM table | | Sort categories “to look nice” | Keep input row order | | Force pie slices to 100 | Leave values as-is | | Drop the table on error | Table + one-line error code | | Emit PNG by default | Emit the fence |

