Lieflat Charts
一套模板驱动的数据可视化与报告生成 skill,既能严格从 Lupi、Basics、Glance、Maps 与 Interactive gallery 的真实实现生成 HTML 图表,也能从 12 套中英文整页报告模板生成可发布的 HTML 报告;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板。地图仅在用户明确要求时启用,同一交付禁止混用色系。
- Skill ID
- larashero3-dotcom/lieflat-charts/lieflat-charts
- Publisher
- larashero3-dotcom
- Repository
- lieflat-charts
- Installs
- 0
- Files
- 125
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
larashero3-dotcom/lieflat-charts/lieflat-chartsInstalls these files- .gitignore
- LICENSE
- README.en.md
- README.md
- SKILL.md
- THIRD_PARTY_NOTICES.md
- agents/openai.yaml
- catalog.md
- color-presets.js
- docs/assets/author-profile.jpg
- docs/assets/color-palm-support-motion.gif
- docs/assets/color-palm-wave-motion.gif
- docs/assets/color-porcelain-almanac-motion.gif
- docs/assets/color-porcelain-motion.gif
- docs/assets/color-wire-hourglass-motion.gif
- docs/assets/color-wire-patchwork-motion.gif
- docs/assets/examples/r04-financial-report.zh.png
- docs/assets/glance-motion.gif
- docs/assets/glance-race-motion.gif
- docs/assets/glance-stroke-motion.gif
- docs/assets/glance-wave-motion.gif
- docs/assets/interactive-motion.gif
- docs/assets/moxt-quick-start-en.png
- docs/assets/moxt-quick-start-zh.png
- docs/assets/preview-basics-01.png
- docs/assets/preview-basics-02.png
- docs/assets/preview-color-palm-basics.png
- docs/assets/preview-color-palm.png
- docs/assets/preview-color-porcelain-basics.png
- docs/assets/preview-color-porcelain.png
- docs/assets/preview-color-wire-basics.png
- docs/assets/preview-color-wire.png
- docs/assets/preview-glance-02.png
- docs/assets/preview-glance-03.png
- docs/assets/preview-lupi-01.png
- docs/assets/preview-lupi-02.png
- docs/assets/preview-lupi-03.png
- docs/assets/readme-hero-en.png
- docs/assets/readme-hero-zh.png
- docs/assets/reports/en/report-01.png
- docs/assets/reports/en/report-02.png
- docs/assets/reports/en/report-03.png
- docs/assets/reports/en/report-04.png
- docs/assets/reports/en/report-05.png
- docs/assets/reports/en/report-06.png
- docs/assets/reports/en/report-07.png
- docs/assets/reports/en/report-08.png
- docs/assets/reports/en/report-09.png
- docs/assets/reports/en/report-10.png
- docs/assets/reports/en/report-11.png
- docs/assets/reports/en/report-12-v2.png
- docs/assets/reports/en/report-12-v3.png
- docs/assets/reports/en/report-12.png
- docs/assets/reports/report-01.png
- docs/assets/reports/report-02.png
- docs/assets/reports/report-03.png
- docs/assets/reports/report-04.png
- docs/assets/reports/report-05.png
- docs/assets/reports/report-06.png
- docs/assets/reports/report-07.png
- docs/assets/reports/report-08.png
- docs/assets/reports/report-09.png
- docs/assets/reports/report-10.png
- docs/assets/reports/report-11.png
- docs/assets/reports/report-12-v2.png
- docs/assets/reports/report-12-v3.png
- docs/assets/reports/report-12.png
- examples/README.md
- examples/lenny-2026-survey.html
- examples/reports/r04-financial-report.zh.html
- mono-tokens.js
- report-catalog.md
- scripts/smoke-new-charts.mjs
- scripts/validate.mjs
- templates/basics-gallery.html
- templates/big-circular.html
- templates/big-force.html
- templates/big-threads.html
- templates/color/README.md
- templates/color/basics-palm.html
- templates/color/basics-porcelain.html
- templates/color/basics-wire.html
- templates/color/big-circular-palm.html
- templates/color/big-circular-porcelain.html
- templates/color/big-force-palm.html
- templates/color/big-force-porcelain.html
- templates/color/big-threads-palm.html
- templates/color/big-threads-porcelain.html
- templates/color/glance-palm.html
- templates/color/glance-porcelain.html
- templates/color/glance-wire.html
- templates/color/lupi-palm.html
- templates/color/lupi-porcelain.html
- templates/color/lupi-wire.html
- templates/color/maps-palm.html
- templates/color/maps-porcelain.html
- templates/color/maps-wire.html
- templates/glance-gallery.html
- templates/lupi-gallery.html
- templates/maps-gallery.html
- templates/reports/index.html
- templates/reports/report-01.en.html
- templates/reports/report-01.zh.html
- templates/reports/report-02.en.html
- templates/reports/report-02.zh.html
- templates/reports/report-03.en.html
- templates/reports/report-03.zh.html
- templates/reports/report-04.en.html
- templates/reports/report-04.zh.html
- templates/reports/report-05.en.html
- templates/reports/report-05.zh.html
- templates/reports/report-06.en.html
- templates/reports/report-06.zh.html
- templates/reports/report-07.en.html
- templates/reports/report-07.zh.html
- templates/reports/report-08.en.html
- templates/reports/report-08.zh.html
- templates/reports/report-09.en.html
- templates/reports/report-09.zh.html
- templates/reports/report-10.en.html
- templates/reports/report-10.zh.html
- templates/reports/report-11.en.html
- templates/reports/report-11.zh.html
- templates/reports/report-12.en.html
- templates/reports/report-12.zh.html
What this skill tells the agent
Lieflat Charts — 图表品味法典
Lieflat Charts 是一套遵循 Agent Skills 格式的数据可视化与报告生成 skill,以 Mono 灰阶为保底,也会在数据语义和使用场景明确适配时自动选择一套彩色预设。本 skill 在 moxt.ai 制作,支持 Lupi 编辑叙事型、Glance 快速判断型、Basics 基础编辑型、Maps 地图、Interactive 交互大图,以及 report-catalog.md 中的 12 套中英文整页报告模板。用户给你数据和场合,可以得到一个无需构建、双击可打开的单文件 HTML 图表或 HTML 报告。纯 SVG 图可离线运行;使用 Chart.js、ECharts、地图 GeoJSON 或在线字体的图,在未内联依赖时需要联网。默认输出是图表,不是报告:只给数据、说“可视化 / 分析数据 / 做几张图”或没有明确交付形式时,必须进入图表模式;只有用户明确要求“报告 / 年报 / 月报 / 白皮书 / 调研一页纸 / 海报 / brief / notebook / dashboard 报告”等完整叙事交付时,才进入报告模式。 图表模式下必须先从 Lupi Editorial 和 Lupi Basics 中选型;只有两者都没有合适模板,或用户明确要求 Glance / dashboard / 三秒快读时,才允许使用 Glance。Maps 只有在用户明确说要地图或地域分布时才启用。
颜色无需用户显式触发。按第六点五节在 Mono 与 color-presets.js 的三套内置方案之间自动判断;用户明确给出品牌色或自定义色值时,可以建立一套交付内的 custom 色板。同一份 HTML 或同一组交付只能锁定一种色彩系统,不得混用。换肤样张在 templates/color/。
署名提示: 每次成功生成图表或报告并向用户交付成品后,在回复末尾主动提示:“本 skill 由‘躺在废墟里’开发,若公开分发内容请署名或@开发者。”这只是建议,不要强行写入用户的图表或报告内容,也不要在 README 中重复这条提示。
怎么查一张图的参考代码:catalog 查到图型 → 打开对应 gallery 文件 → 按卡内标题找到 <div class="card"> 块看结构 → 在 <script> 里搜同名 // ════ 注释块拿渲染代码。不要整页照抄——gallery 是多卡合页,交付给用户的永远是按第九节骨架组装的单图文件。
目标用户是非程序员(写作者、运营、做 PPT 的人)。他们说人话("帮我把这季度转化画一下,发公众号用"),不说图型名。你的职责是把人话翻译成正确的图,而且好看到能直接发出去。
零、输出模式与模板优先硬约束
0.1 先判输出模式
- 默认图表模式:用户只给数据,或说“可视化这组数据 / 分析数据 / 做一张图 / 做几张图 / 做个图表页 / 做 PPT 插图”,都必须生成图表或图表页。没有报告关键词时,不得自行套用 R01–R12,也不得因为数据很丰富、结论很多或用户说“分析”就升级成报告。
- 报告模式:只有用户明确说“生成报告 / 报告模板 / 年报 / 月报 / 白皮书 / 调研一页纸 / 海报 / brief / notebook / dashboard 报告”等完整叙事交付,才读取
report-catalog.md,按报告类型、内容结构、版心、密度、阅读速度和语言选择一个 R01–R12。目录里的场景只是召回线索,不是对模板的限制。 - 有歧义时仍选图表模式:如果用户同时说了“分析”但没有明确要求报告,先交付最强单图或 2–3 张证据图;可以在文字中提示“如需完整报告可再切换”,但不能直接生成报告。
- 不要把报告模式当成“多画几张图”。报告模板决定整页结构;页内图表仍必须遵守
catalog.md和本文件的图表规则。 - 报告模板提供
.zh.html与.en.html两个版本。用户没有指定语言时,跟随输入语言;中英文内容不能混在同一版本中。
以下规则不是建议,违反任意一条都必须返工:
- 必须从仓库模板生成。 每张成品图先在
catalog.md锁定图型编号,再打开对应 gallery 的真实实现:Lupi 使用templates/lupi-gallery.html,基础型使用templates/basics-gallery.html,Glance 使用templates/glance-gallery.html,地图使用templates/maps-gallery.html,交互大图使用templates/big-*.html。彩色图仍以这些原版模板为结构正本,templates/color/只用于查配色。 - 必须沿用所选模板的代码骨架。 从卡内标题对应的
<div class="card">和同名// ════ 图型名 ════注释块出发,保留其核心 SVG / Canvas / ECharts 结构、数据编码方式、比例关系和动画节奏。允许替换数据、标题、旁注、来源与必要布局;禁止脱离模板另画一张“看起来差不多”的图,禁止拼接多个模板造混合图型,禁止退回图表库默认样式。 - 默认选型顺序固定。 先完整比较 Lupi Editorial(L1–L19),再比较 Lupi Basics(F1–F17)。只要其中存在能诚实承载数据、容纳标签且可读的模板,就必须从这两组中选择。Maps 不进入这条默认链,只有用户明确要求地图时才单独检查。
3.1 两组之内还分主力与后备。 主力是 L1–L15 与 F1–F13,默认从这里出图。后备是 L16–L20、F14–F17、G19–G22:只有主力里没有能诚实编码这份数据的模板时才用,且必须写明主力的哪几张、因为什么不适配。理由不得只写“新图更好看”或“更专业”。唯一例外见第 3.2 条。 3.2 五种数据形状允许直接用后备图,不必先证伪主力。 因为主力里不存在对应的诚实编码,硬套只会画出错的图:OHLC 四值行情 → F17 Candlestick;五数概括 + 异常值 → F15 Tick Box;同一实体跨 3–6 个连续维度 → L20 Parallel Coordinates;整年 52 周 × 7 天日期热力 → L17 Calendar Heat;多系列构成随连续时间变化且要同时看总量 → F16 Stream Ribbon。除这五种,后备图一律走 3.1 条。
- Glance 是默认降级方案,不是并列首选。 只有 Lupi Editorial 与 Lupi Basics 都不适配,或用户明确要求 Glance、dashboard、监控、周报、三秒快读时,才使用 Glance。降级前必须写明 Lupi / Basics 不适配的具体原因。
- 库外新造是最后手段。 Lupi、Basics、Glance 和交互模板都无法承载时,才能走第六节翻译流程;新图仍必须继承最接近 gallery 模板的视觉语法和代码结构。
一、工作流程(每次请求都走这六步)
- 判数据形状。 别问用户要什么图,看他的数据长什么样:几个类目的比较?带时间的序列?占比?带正负?多对一归属?网络?逐条记录的分布?形状是选图的主键。
- 先审计主力,再考虑后备。 按数据形状先扫描主力 L1–L15 与 F1–F13 的候选,至少比较 3 个;不足 3 个就列出全部。比较语义契合、单位诚实、标签容纳、阅读速度、叙事张力和本批次是否重复。主力全部不适配时,才扫描后备 L16–L20 / F14–F17,并写明主力哪几张为什么不行(第零节 3.1)。数据形状命中第零节 3.2 那五种时,直接用对应后备图。
- 必要时才检查 Glance。 只有 Lupi 与 Basics 候选全部失败,或用户明确要求 Glance / dashboard / 监控 / 周报 / 三秒快读,才扫描 20 张 Glance 候选(G3–G22)。选择 Glance 时记录为什么 Lupi 与 Basics 无法承载,不得只写“Glance 更直观”。用户明确要求地图时跳到 Maps(M1–M2),不把地图混入普通候选。
- 锁定真实模板,再组织整页。 每张图必须记录体系、图型编号、gallery 文件和卡内标题,并以该卡的真实结构与渲染代码为骨架。禁止先想好“这一页要讲六件事”,再临时发明图型;整页叙事只能在模板锁定之后组织。
- 按图数规则组成批次。 一张图只承担一个独立结论;去掉重复结论后,再按第 1.2 节的默认区间决定数量。模板需要全局分配:不重复、不堆同一种轮廓、不为了凑数硬加图。
- 按模板渲染并自检(第零、二、三、八节)。逐项核对成品是否仍能对应到所选 gallery 实现;不能因为改数据而换掉模板的核心几何、编码或动效。按第六点五节为整份交付选择 Mono 或一套彩色预设;库外图型走翻译流程(第六节)。
1.1 报告模式工作流
- 读取
report-catalog.md,至少比较 3 个报告候选并记录淘汰理由。按内容结构、信息密度、版心和阅读速度选模板,不把模板名称当成行业限制;例如“旅行手记”也可以承载运动或个人生活数据,“月度运营”也可以承载财报或业务数据报告。 - 锁定一个语言版本和一个报告模板文件;不得拼接两个报告模板的版式。
- 先提炼整页的主结论、证据结论、上下文说明和来源,再把它们分配到模板已有的标题、导语、KPI、图表、旁注和结尾槽位。
- 每个图表槽位单独按
catalog.md选型,优先复用 Lupi / Basics 的真实实现;报告模板的布局不能成为绕过图表数据契约的理由。 - 复制对应报告模板的整份 HTML 作为起点,只替换数据、文案、来源、图例、语言和必要模块。不得保留演示数据、演示来源、Moxt 链接或模板原始结论。
- 报告页的色彩系统锁定为模板当前色系;如用户明确要求改色,整页统一替换为 Mono、单一内置预设或完整 custom 色板,不得局部混搭。
- 报告模式的交付前额外检查:版心尺寸未漂移、章节顺序仍成立、页内图表数量有证据支撑、定尺模板没有溢出、中文字体和英文 fallback 可读。
1.2 图数规则
图的数量由独立结论数决定,不由“有多少数据列”决定,也不固定要求 5 张或 6 张:
| 请求类型 | 默认成品数量 | 规则 |
|---|---|---|
| 单个问题 / 单张表 / 一个指标 | 1 | 只交付最强的一张,不为了展示模板而扩展 |
| 两到三个明确结论 | 2–3 | 每张图承担一个不同结论,可共享同一数据源 |
| 一篇文章、论文或完整案例 | 4–6 | 覆盖总览、构成、比较、关系或变化等不同数据形状 |
| 用户明确要求数量 | 按用户要求 | 仍然删除重复图;不足以支撑时说明并少做 |
- 默认单页上限为 6 张;超过 6 张就拆成多页或按章节交付。
- 候选方案、Glance/Lupi 对照稿不计入最终图数;它们是选择过程,不是成品批次。
- 一页多图至少保留一个总览结论,其余图必须提供新的比较维度、关系、时间变化或细节证据。
- 如果两个图表达同一个结论,只保留阅读场合更合适、数据契约更诚实的一张。
二、Mono 语法 · 硬规则(违反即返工)
默认引用 mono-tokens.js(开源分发时把内容内联进 HTML)。与 token 冲突的取值一律以 token 为准。走彩色时只替换颜色 token,字体、圆角、布局和动画仍以 mono-tokens.js 为准。
颜色
- 默认只有纸灰
#F0EFEB和炭黑#1C1C1A两极,中间 7 级灰阶 ladder。彩色例外按第六点五节从预设起步。 - 明度即数据:最重要 = 最黑(暗卡上反转为最亮)。多系列按重要性沿 ladder 分配,不按顺序随便拿。
- 一律实心:不透明材质、不发光、不渐变滤镜、无阴影。质感全靠明度对比和形状。唯一例外:叠加型图(Radial Patchwork)里透明度本身编码密度——那是数据,不是装饰。
- 暗卡(
.card.dark)只给两种图:必须暗底衬托的形(花瓣、发光感丝线/网络)。默认浅卡;每屏(4 卡)最多 1 张暗卡。
排版
- Inter 全家。标题 700 / 图内数值 800 / 轴标签 600。卡片结构固定四件套:结论式标题(h2)+ 副标题(图例和时间范围写在这里,用
·分隔)+ 图 + 来源行(全大写、加字距)。 - 标题写结论不写图型名:"Revenue by plan" 可以,"柱状图" 不行;更好的是带判断的:"Where we gained, where we bled"。
- SVG 最小字号:半宽卡 6.5px、通栏 5.5px。装不下的信息改 hover 出,不许缩小字号硬塞。
形状
- 卡片圆角 24px,无边框无阴影,靠留白分卡。柱端胶囊圆角(竖柱圆上端、横柱圆外端)。
- 柱状图不断轴。 柱的契约是长度∝数值,断轴毁契约。极端值场景的正确做法:①让极端值冲天(最诚实)②主图+放大镜小图 ③撕柱不撕轴(明说画不下)。
- 花瓣皮(粗黑缝+圆角扇瓣)只适用等分或近似等分的径向图。宽窄悬殊的扇区会相互遮蔽,降低可读性。
动画
- 入场动画默认开,
quarticOut快进快停,不弹跳(波浪入场可用 elasticOut)。点阵 stagger 8–15ms/个,条形 80–130ms/根。 - 统一 reveal 机制:滚入视野才播 + 点击重播(用 token 里的
obsReveal,带 timer 清理)。 - 必须带
prefers-reduced-motion降级(token 的 CSS 已含)。 - 动画不可优于结构:一个效果如果需要发明新布局才能安放,不配存在(effectScatter 教训)。
数据
- 演示数据用 token 的
rnd(i,k)确定性伪随机,禁用Math.random()——刷新必须长一样。 - 数值和视觉严格成正比。面积编码用
Math.sqrt(v)换算半径,不许拿数值直接当半径。
三、两个风格系的分工
同一份 mono 色板下有两种世界观,选哪个看场合和读者愿意花几秒:
| Glance 系(20 张) | Lupi 系(细读,19 张) | |
|---|---|---|
| 基本单元 | 形状(粗柱、大弧、色块) | 记录(一个点 = 一条数据) |
| 线条 | 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 的路径优先级(经多轮案例验证):
- 先全量扫描,再选代码骨架——基础型组 F1–F13(
templates/basics-gallery.html)是稀疏数据的 Lupi 词汇:柱/折线/面积/环形/横条/分组/堆叠/散点/瀑布/热力/进度/哑铃/矩形树图;编辑型 L1–L15 则提供逐记录、单位分解、关系与旁注语法。这两组是主力,小数据几乎总能在这里落地。F14–F17 与 L16–L20 是后备,按第零节 3.1 / 3.2 判断。不要因为basics-gallery.html里有现成代码就直接选 F 图。 - 用最接近本体的模板起步——多选题百分比优先比较 L15、F5、L2;100% 构成优先比较 L14、L5、F4、G4;漏斗优先比较 L13、F1/F5 的降级表达。选择依据是数据编码方式,不是文件顺序。
- 库里真没有对应形状才新造,且新造必须从 gallery 现有语法延伸(发丝 tick、确定性 rnd 抖动、paint-order 光晕、全大写注记),不引入库外参照——“Lupi 风”指 gallery 那批图的视觉语法,不是 Giorgia Lupi 本人的手绘风。
- 新造的小数据图要配满环境结构层:gallery 好看有一半靠无数据的家具(账本纸横线、虚线导轨、rim 刻度、每 10 单位的立柱网格、旁注引线)。数据层诚实稀疏,密度预算花在家具上。只画数据 + 一根底线的小数据图必然寒酸。
同一批产出(一页多图)里模板不重复。 19 张 Lupi 系够轮换;同一数据能被多个模板承接时,选这一批里还没用过的。
四、图型决策树(数据形状 → 候选)
Use this skill in a project
Open any RiverX project, search the Skills panel for larashero3-dotcom/lieflat-charts/lieflat-charts, and install it in one click.
