Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
차트를 마크다운 텍스트 형태로 제공하고, 그림을 그릴 수 없을 때는 숫자를 표로 표시합니다
Charts as text in Markdown. Where they cannot draw, the numbers stay as a table.
개발 도구TypeScript · CSSGitHub @geekplux직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Charts in Markdown. The numbers are the picture.
Write a short chart block in Markdown. markvis draws it wherever the Markdown is shown: a page, a note, a chat reply, a docs site. Where it cannot draw, the numbers stay as a table.
type: bar
title: Visits by day
x: day
y: visits
day,visits
Mon,3
Tue,5
Wed,4
Thu,6
Fri,8
58 kB gzip · 0 dependencies · under 1 ms a chart · plain SVG
One script tag, in a page or a Markdown file. Every chart block on it draws.
<script src="https://cdn.jsdelivr.net/npm/markvis@2/dist/markvis.min.js"></script>
JavaScript. One call. It never throws: a wrong block comes back as its rows and one error line.
import { render } from "markvis";
element.innerHTML = render(blockText).html;
React. Follows its container, and draws while a reply streams.
import { Markvis } from "markvis/react";
<Markvis source={blockText} />
GitHub. github.com runs no scripts, so bake a picture next to the block. A workflow step can do it on every push.
npx markvis bake README.md
Tell your model. Put the 250-token instruction in a system prompt and it writes this block instead of an image or JSON. The same text opens llms.txt.
Your colors. A chart drawn in your page reads your CSS variables (--markvis-ink, --markvis-grid, --markvis-series-1 …), so it follows light, dark, and brand colors. Each color keeps a fixed fallback, and bake writes fixed colors by default.
Play · Examples · Integrate · Theming · Chart types
| Code block tags | chart markvis vis |
| Chart kinds | bar line area scatter pie hist heatmap funnel waterfall radar gauge sankey treemap dumbbell bullet boxplot calendar |
| Fields | markvis type title unit x y series plus theme palette surface. Type-local: layout innerRadius min max orient role target |
| Numbers | Comma-separated rows, or one Markdown table. Not JSON as the default. No JavaScript in the block. |
theme: how it is drawn: folio (default) highcharts shadcn docs ant recharts graphite. palette: colors only: ink porcelain warm cool vivid. Unknown look → table + error, never a silent swap. Pie slices are not forced to 100. Rows stay in the order you wrote them.
2.x replaces 0.0.13 (the old d3 renderer stays in legacy/).
npm install markvis
npx markvis bake README.md
bake writes a picture next to the file and adds a Markdown image so GitHub can show it. The code block stays. Running bake again does nothing if nothing changed. npx markvis check notes.md checks every chart block in the file and exits non-zero if any block is invalid.
On GitHub, a workflow step bakes the pictures on every push (full workflow):
- uses: geekplux/markvis@master
A blank measure cell is missing, not zero. Text such as N/A is an error (E_BAD_NUMBER) and the table stays. Omit markvis for version 2; any other version is rejected.
To parse without drawing, parseBlock(text) returns the chart or a stable error code with the rows. To read every chart in a document, parseDocument(markdown).
In a Markdown site — markdown-it, remark, or rehype. Each returns the picture and the data table:
import markdownItMarkvis from "markvis/markdown-it"; // md.use(markdownItMarkvis)
import remarkMarkvis from "markvis/remark"; // remark().use(remarkMarkvis)
import rehypeMarkvis from "markvis/rehype"; // MDX, Docusaurus: rehypePlugins: [rehypeMarkvis]
With an AI: put docs/prompt.md in the system prompt, or point a model at llms.txt or skills/markvis/SKILL.md. It should write only the fields listed there, not a PNG, and never invent a type id.
Get started · Integrate · SPEC.md · Themes · Architecture · Contributing · Changelog
In 2017 this project was a renderer (GitHub Trending). This is the rewrite: the same name, for people and for AI. 0.0.13 (the old d3 renderer): legacy/.