面向 AI Agents 的单色数据可视化 Skill,将数据快速生成精致、可交互的 HTML 图表
# Add to your Claude Code skills
git clone https://github.com/larashero3-dotcom/lieflat-chartsGuides for using ai agents skills like lieflat-charts.
lieflat-charts is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by larashero3-dotcom. 面向 AI Agents 的单色数据可视化 Skill,将数据快速生成精致、可交互的 HTML 图表. It has 99 GitHub stars.
lieflat-charts's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/larashero3-dotcom/lieflat-charts" and add it to your Claude Code skills directory (see the Installation section above). lieflat-charts ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
lieflat-charts is primarily written in HTML. It is open-source under larashero3-dotcom on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh lieflat-charts against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Lieflat Charts 是一套遵循 Agent Skills 格式的单色数据可视化 skill,专注于把数据图表做成有编辑感、能阅读、能组成完整页面的视觉内容。它由 moxt 与 Codex 协同制作,支持 Lupi 编辑叙事型、Glance 快速判断型、Basics 基础编辑型和 Interactive 交互大图。用户给你数据和场合,你产出一个无需构建、双击可打开的单文件 HTML,改数据只需要动顶部一个数组。纯 SVG 图可离线运行;使用 Chart.js、ECharts 或在线字体的图,在未内联依赖时需要联网。默认必须先从 Lupi Editorial 和 Lupi Basics 中选型;只有两者都没有合适模板,或用户明确要求 Glance / dashboard / 三秒快读时,才允许使用 Glance。
怎么查一张图的参考代码:catalog 查到图型 → 打开对应 gallery 文件 → 按卡内标题找到 <div class="card"> 块看结构 → 在 <script> 里搜同名 // ════ 注释块拿渲染代码。不要整页照抄——gallery 是多卡合页,交付给用户的永远是按第九节骨架组装的单图文件。
目标用户是非程序员(写作者、运营、做 PPT 的人)。他们说人话("帮我把这季度转化画一下,发公众号用"),不说图型名。你的职责是把人话翻译成正确的图,而且好看到能直接发出去。
以下规则不是建议,违反任意一条都必须返工:
catalog.md 锁定图型编号,再打开对应 gallery 的真实实现:Lupi 使用 templates/lupi-gallery.html,基础型使用 templates/basics-gallery.html,Glance 使用 templates/glance-gallery.html,交互大图使用 templates/big-*.html。<div class="card"> 和同名 // ════ 图型名 ════ 注释块出发,保留其核心 SVG / Canvas / ECharts 结构、数据编码方式、比例关系和动画节奏。允许替换数据、标题、旁注、来源与必要布局;禁止脱离模板另画一张“看起来差不多”的图,禁止拼接多个模板造混合图型,禁止退回图表库默认样式。图的数量由独立结论数决定,不由“有多少数据列”决定,也不固定要求 5 张或 6 张:
| 请求类型 | 默认成品数量 | 规则 |
|---|---|---|
| 单个问题 / 单张表 / 一个指标 | 1 | 只交付最强的一张,不为了展示模板而扩展 |
| 两到三个明确结论 | 2–3 | 每张图承担一个不同结论,可共享同一数据源 |
| 一篇文章、论文或完整案例 | 4–6 | 覆盖总览、构成、比较、关系或变化等不同数据形状 |
| 用户明确要求数量 | 按用户要求 | 仍然删除重复图;不足以支撑时说明并少做 |
引用 mono-tokens.js(开源分发时把内容内联进 HTML)。与 token 冲突的取值一律以 token 为准。
颜色
#F0EFEB 和炭黑 #1C1C1A 两极,中间 7 级灰阶 ladder。没有彩色。.card.dark)只给两种图:必须暗底衬托的形(花瓣、发光感丝线/网络)。默认浅卡;每屏(4 卡)最多 1 张暗卡。排版
· 分隔)+ 图 + 来源行(全大写、加字距)。形状
动画
quarticOut 快进快停,不弹跳(波浪入场可用 elasticOut)。点阵 stagger 8–15ms/个,条形 80–130ms/根。obsReveal,带 timer 清理)。prefers-reduced-motion 降级(token 的 CSS 已含)。数据
rnd(i,k) 确定性伪随机,禁用 Math.random()——刷新必须长一样。Math.sqrt(v) 换算半径,不许拿数值直接当半径。同一份 mono 色板下有两种世界观,选哪个看场合和读者愿意花几秒:
| Glance 系(18 张) | Lupi 系(细读,15 张) | |
|---|---|---|
| 基本单元 | 形状(粗柱、大弧、色块) | 记录(一个点 = 一条数据) |
| 线条 | 2px+,理直气壮 | 0.5–0.7px 发丝 |
| 聚合 | 提前聚合好,给结论 | 拒绝聚合,摊开原材料 |
| 读法 | 扫一眼(<10s) | 凑近读(30s+) |
| 场合 | 周报、dashboard、随手贴 | 年报、对外故事页、海报 |
| 引擎 | Chart.js / ECharts | 手写 SVG |
默认策略:Lupi Editorial → Lupi Basics → Glance。 没有明确场合时,禁止默认 Glance。放年报、公众号长文、海报、开源 README、作品集时先选 Lupi Editorial;数据较少或适合熟悉图型时再选 Lupi Basics。只有前两组都没有合适模板,或用户明确要 dashboard、监控、周报、三秒快读时,才进入 Glance 候选池。
全量候选审计不是“把所有图都做一遍”。 先用数据形状筛出能编码同一本体的候选,再把候选分成:
最终选择是三项的交集,不是“哪个模板文件最容易复制”。默认审计先在 Lupi Editorial 与 Lupi Basics 内完成;只有两组都失败才扩展到 Glance。若同一批要做多张图,再对候选做一次全局分配:模板不重复,形状轮换,最多一张暗卡,避免整页变成六张相似的环或横条。
数据少(只有几个百分比)不等于只能 Glance。 Lupi 化的正道是单位分解:把聚合数摊回可数单位(1 点 = 1 人 / 1 百分点),密度来自单位而不是记录数。单位含义写进副标题,只摊诚实单位(占比加总 100 → 100 个点),不编造不存在的个体记录。取整时如果加总不足 100(如 49.0+27.4+13.9+5.0+3.2 → 98),在底注写明「另外 N 人被四舍五入吃掉了」,不凑假单位。
小数据走 Lupi 的路径优先级(经多轮案例验证):
templates/basics-gallery.html)是稀疏数据的 Lupi 词汇:柱/折线/面积/环形/横条/分组/堆叠/散点/瀑布/热力/进度/哑铃;编辑型 L1–L15 则提供逐记录、单位分解、关系与旁注语法。不要因为 basics-gallery.html 里有现成代码就直接选 F 图。同一批产出(一页多图)里模板不重复。 15 张 Lupi 系够轮换;同一数据能被多个模板承接时,选这一批里还没用过的。
编号对应 catalog.md。这些只是候选召回表,箭头和书写顺序不代表优先级。实际选择必须遵守:先检查全部 Lupi Editorial 与 Lupi Basics 候选,确认无合适模板后,才允许采用 Glance 候选。
按顺序问:
templates/big-threads.html:可见线下垫 9px 透明孪生线当热区,hover 单线亮整条路径、hover 标签拉整束、点击钉住。用户要的图不在 48 张里(或发来一张参考图)时,不是做不了,是现场造句。流程四步,第一步不许跳:
mono-tokens.js 拿,不许发明新颜色新字号。产出必须和库里的图"一眼一家人"。参考图翻译的附加规则:识别参考图属于哪个流派(Glance or 编辑部),编辑部风格的密度、旁注、手绘感(blob)是本体的一部分,别做收敛了——almanac 曾因"不敢挤"返工。
敢拒绝比什么都接更可信。以下情况不做,并给替代:
rnd 确定性的?刷新两次长得一样?node --check 过语法(把 <script> 内容抽出来查)。<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Mono — {图名}</title>
<!-- 需要 ECharts 时: -->
<script src="https://cdn.jsdelivr.net/npm/echarts@6/dist/echarts.min.js"></script>
<!-- 需要 Chart.js 时(G1 / G3): -->
<!-- <script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script> -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="{MONO.FONT.link}" rel="stylesheet">
<style>/* 内联 MONO.CARD_CSS */</style>
</head>
<body>
<div class="grid2">
<div class="card"><!-- 或 card dark / card wide -->
<h2>{结论式标题}</h2>
<div class="sub">{说明} · {图例} · {时间范围}</div>
<!-- 图容器按引擎三选一: -->
<div class="ch" id="ch"></div><!-- ECharts -->
<!-- 手写 SVG: <svg id="ch" viewBox="0 0 400 320"></svg> -->
<!-- Chart.js(G1/G3): <div class="wrap"><canvas id="ch"></canvas></div>,配 .wrap{position:relative;height:320px} -->
<!-- ⚠️ Chart.js 必须挂 <canvas>,套 <div class="ch"> 会报 can't acquire context -->
<div class="src">{图型名} · {系列} · {数据来源}</div>
</div>
</div>
<script>
// 内联 mono-tokens.js 全文
// ── 数据(用户只需要改这里)──
const DATA = [ /* ... */ ];
// ── 渲染 ──
MONO.obsReveal('ch', el => { /* ... */ });
</script>
</body>
</html>
Lieflat Charts 是一套遵循 Agent Skills 格式的单色数据可视化 skill,可供 moxt、Claude Code、Codex 及其他兼容 SKILL.md 的 AI agent 使用。本 skill 由 moxt 与 Codex 协同制作,专注于把数据图表做成有编辑感、能阅读、能组成完整页面的视觉内容。
它用统一的单色灰阶、字体、留白、线条和动效建立自己的视觉语法,包括以下几种视觉风格:
此外还提供网络、路径和多段流向等独立交互大图。每张图都尽量保留数据的真实单位,同时让标题、旁注、来源和页面结构参与表达。
以下是几类模板的实际预览。
细读、逐记录、编辑感。精选 15 张编辑叙事型模板中的代表图型。
快读、聚合、结论先行。精选 18 张快速判断型模板中的代表图型。
动态预览:
更多动态预览:
常见图型与可数单位的结合。精选 12 张基础编辑型模板中的代表图型。
用于网络、路径与高密度关系数据。
动态预览:
一条命令安装:
npx skills add https://github.com/larashero3-dotcom/lieflat-charts --skill lieflat-charts
也可以直接把这段话发给有 shell 权限的 AI Agent:
帮我安装 lieflat-charts。请把 https://github.com/larashero3-dotcom/lieflat-charts
克隆到 ~/.claude/skills/lieflat-charts,安装完成后检查 SKILL.md、templates/、
catalog.md 和 mono-tokens.js 是否存在。
使用 Codex 时,将安装路径换成 ~/.codex/skills/lieflat-charts。
已经安装过的话,用这段话更新:
帮我更新 lieflat-charts。请进入 ~/.claude/skills/lieflat-charts 执行 git pull,
然后告诉我当前最新 commit。
安装后直接对 Agent 说:
把这份调研数据做成适合公众号长文的 5 张中文版图表。
默认先比较 Lupi Editorial 和 Lupi Basics 候选;两组都不适配时,再使用 Glance。
也可以试这些请求:
读这篇论文,找出最值得讲的几个数据结论,做成一页完整的 HTML 图表。
这是一份周报数据,要求 10 秒内看懂排名、变化和异常。
把这个 CSV 做成一张适合放进汇报里的 Glance 图表。
用 Lupi 风格重新设计这组数据,保留每条真实记录,并加入必要的旁注。
图数由独立结论决定:单个问题通常 1 张,两个到三个结论 2–3 张,完整文章或论文 4–6 张,单页默认最多 6 张。用户明确指定数量时会遵守,但不会为了凑数重复表达同一个结论。
| 类型 | 数量 | 适合什么 | 实现 |
|---|---|---|---|
| Lupi Editorial | 15 | 年报、论文、公众号、海报、作品集;读者愿意停下来细看 | 手写 SVG |
| Lupi Basics | 12 | 柱、折线、面积、环形、散点、瀑布、热力、进度等基础数据形状 | 手写 SVG |
| Glance | 18 | 周报、dashboard、监控、汇报;需要快速排序和比较 | Chart.js / ECharts |
| Interactive | 3 | 网络、路径、多段流向和高密度关系数据 | ECharts / SVG |
把一个点、一根线或一条旁注尽量对应到真实数据单位。它不急着把数据聚合成一个结论,而是把原材料摊开,让读者看到结构、分布和例外。视觉上使用发丝线、留白、账本式导轨、旁注和低对比灰阶,阅读时间通常在 30 秒以上。
保留常见图表的剪影,但把它们放进 Lupi 的编辑语法里:一格可以是一个百分点,一根 tick 可以是一个人,一条 hairline 可以是一天。它适合数据不多、但仍然希望画面有密度和可读单位的场景。
提前聚合、加粗主要形状,把关键排序和变化放到第一眼。它不是“低配版 Lupi”,而是另一种阅读速度:读者不需要展开每条记录,也能在几秒内知道谁更高、哪里变化最大、哪个指标需要关注。
用于普通静态图承载不了的关系数据。通过 hover、聚焦、拖拽、固定路径和状态栏,把“看起来很复杂”的网络变成可以逐条查询的图。交互只服务于真实记录,不给纯装饰元素添加假的行为。
所有体系共享一套 Mono 视觉语法:纸灰与炭黑两极,加上中间灰阶;明度承担层级,位置、长度、密度和结构承担数据编码。创新不在于再发明一种孤立图型,而在于把图型选择、编辑排版、浏览器交互和整页叙事放进同一个可复用的 skill。
因此,Lieflat Charts 和过去直接做 charts 的差别,不只是“换了颜色”:
.
├── SKILL.md # Agent 使用的工作流与规则
├── catalog.md # 48 个图型的数据契约索引
├── mono-tokens.js # 共享视觉 token
├── templates/ # Lupi、Basics、Glance 与交互大图
├── examples/ # 真实公开数据案例
├── docs/assets/ # README 模板截图与动态预览
└── scripts/validate.mjs # 发布前检查
直接打开 templates/ 下的 HTML 文件即可查看 gallery。Lupi 和 Basics 主要使用原生 SVG;Glance、Circular 和 Force 模板通过 CDN 加载 Chart.js 或 ECharts,需要联网才能完整显示。
本项目使用 PolyForm Noncommercial License 1.0.0。允许学习、修改、分享和非商业使用;商业使用需要另行取得许可。
Chart.js、Apache ECharts 和 Inter 字体遵循各自的原始许可证,详见 THIRD_PARTY_NOTICES.md。