/lieflat-charts
一套模板驱动的数据可视化 skill,严格从 Lupi、Basics、Glance 与 Interactive gallery 的真实实现生成 HTML 图表;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板,同一交付禁止混用色系。
$ npx -y skills add larashero3-dotcom/lieflat-charts --skill lieflat-charts --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/lieflat-charts
Context preview
The summary Claude sees to decide when to auto-load this skill.
一套模板驱动的数据可视化 skill,严格从 Lupi、Basics、Glance 与 Interactive gallery 的真实实现生成 HTML 图表;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板,同一交付禁止混用色系。
SKILL.md
lieflat-charts.SKILL.mdname: lieflat-charts
description: 一套模板驱动的数据可视化 skill,严格从 Lupi、Basics、Glance 与 Interactive gallery 的真实实现生成 HTML 图表;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板,同一交付禁止混用色系。
Lieflat Charts — 图表品味法典
Lieflat Charts 是一套遵循 Agent Skills 格式的数据可视化 skill,以 Mono 灰阶为保底,也会在数据语义和使用场景明确适配时自动选择一套彩色预设,专注于把数据图表做成有编辑感、能阅读、能组成完整页面的视觉内容。本 skill 在 [moxt.ai](https://moxt.ai) 制作,支持 Lupi 编辑叙事型、Glance 快速判断型、Basics 基础编辑型和 Interactive 交互大图。用户给你数据和场合,你产出一个无需构建、双击可打开的单文件 HTML,改数据只需要动顶部一个数组。纯 SVG 图可离线运行;使用 Chart.js、ECharts 或在线字体的图,在未内联依赖时需要联网。**默认必须先从 Lupi Editorial 和 Lupi Basics 中选型;只有两者都没有合适模板,或用户明确要求 Glance / dashboard / 三秒快读时,才允许使用 Glance。**
颜色无需用户显式触发。按第六点五节在 Mono 与 `color-presets.js` 的三套内置方案之间自动判断;用户明确给出品牌色或自定义色值时,可以建立一套交付内的 custom 色板。同一份 HTML 或同一组交付只能锁定一种色彩系统,不得混用。换肤样张在 `templates/color/`。
**怎么查一张图的参考代码**:catalog 查到图型 → 打开对应 gallery 文件 → 按卡内标题找到 `<div class="card">` 块看结构 → 在 `<script>` 里搜同名 `// ════` 注释块拿渲染代码。不要整页照抄——gallery 是多卡合页,交付给用户的永远是按第九节骨架组装的单图文件。
**目标用户是非程序员**(写作者、运营、做 PPT 的人)。他们说人话("帮我把这季度转化画一下,发公众号用"),不说图型名。你的职责是把人话翻译成正确的图,而且好看到能直接发出去。
---
零、模板优先硬约束
以下规则不是建议,违反任意一条都必须返工:
1. **必须从仓库模板生成。** 每张成品图先在 `catalog.md` 锁定图型编号,再打开对应 gallery 的真实实现:Lupi 使用 `templates/lupi-gallery.html`,基础型使用 `templates/basics-gallery.html`,Glance 使用 `templates/glance-gallery.html`,交互大图使用 `templates/big-*.html`。彩色图仍以这些原版模板为结构正本,`templates/color/` 只用于查配色。 2. **必须沿用所选模板的代码骨架。** 从卡内标题对应的 `<div class="card">` 和同名 `// ════ 图型名 ════` 注释块出发,保留其核心 SVG / Canvas / ECharts 结构、数据编码方式、比例关系和动画节奏。允许替换数据、标题、旁注、来源与必要布局;禁止脱离模板另画一张“看起来差不多”的图,禁止拼接多个模板造混合图型,禁止退回图表库默认样式。 3. **默认选型顺序固定。** 先完整比较 Lupi Editorial(L1–L15),再比较 Lupi Basics(F1–F13)。只要其中存在能诚实承载数据、容纳标签且可读的模板,就必须从这两组中选择。 4. **Glance 是默认降级方案,不是并列首选。** 只有 Lupi Editorial 与 Lupi Basics 都不适配,或用户明确要求 Glance、dashboard、监控、周报、三秒快读时,才使用 Glance。降级前必须写明 Lupi / Basics 不适配的具体原因。 5. **库外新造是最后手段。** Lupi、Basics、Glance 和交互模板都无法承载时,才能走第六节翻译流程;新图仍必须继承最接近 gallery 模板的视觉语法和代码结构。
一、工作流程(每次请求都走这六步)
1. **判数据形状。** 别问用户要什么图,看他的数据长什么样:几个类目的比较?带时间的序列?占比?带正负?多对一归属?网络?逐条记录的分布?形状是选图的主键。 2. **先审计 Lupi 与 Basics。** 按数据形状扫描所有能承接它的 Lupi Editorial(L1–L15)与 Lupi Basics(F1–F13)候选。至少比较 3 个候选;如果不足 3 个,就列出全部候选。比较语义契合、单位诚实、标签容纳、阅读速度、叙事张力和本批次是否重复。 3. **必要时才检查 Glance。** 只有 Lupi 与 Basics 候选全部失败,或用户明确要求 Glance / dashboard / 监控 / 周报 / 三秒快读,才扫描 Glance(G1–G18)。选择 Glance 时记录为什么 Lupi 与 Basics 无法承载,不得只写“Glance 更直观”。 4. **锁定真实模板,再组织整页。** 每张图必须记录体系、图型编号、gallery 文件和卡内标题,并以该卡的真实结构与渲染代码为骨架。禁止先想好“这一页要讲六件事”,再临时发明图型;整页叙事只能在模板锁定之后组织。 5. **按图数规则组成批次。** 一张图只承担一个独立结论;去掉重复结论后,再按第 1.1 节的默认区间决定数量。模板需要全局分配:不重复、不堆同一种轮廓、不为了凑数硬加图。 6. **按模板渲染并自检**(第零、二、三、八节)。逐项核对成品是否仍能对应到所选 gallery 实现;不能因为改数据而换掉模板的核心几何、编码或动效。按第六点五节为整份交付选择 Mono 或一套彩色预设;库外图型走翻译流程(第六节)。
1.1 图数规则
图的数量由**独立结论数**决定,不由“有多少数据列”决定,也不固定要求 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 系(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 的路径优先级(经多轮案例验证)**: 1. **先全量扫描,再选代码骨架**——基础型组 F1–F13(`templates/basics-gallery.html`)是稀疏数据的 Lupi 词汇:柱/折线/面积/环形/横条/分组/堆叠/散点/瀑布/热力/进度/哑铃/矩形树图;编辑型 L1–L15 则提供逐记录、单位分解、关系与旁注语法。不要因为 `basics-gallery.html` 里有现成代码就直接选 F 图。 2. **用最接近本体的模板起步**——多选题百分比优先比较 L15、F5、L2;100% 构成优先比较 L14、L5、F4、G4;漏斗优先比较 L13、F1/F5 的降级表达。选择依据是数据编码方式,不是文件顺序。 3. **库里真没有对应形状才新造**,且新造必须从 gallery 现有语法延伸(发丝 tick、确定性 rnd 抖动、paint-order 光晕、全大写注记),不引入库外参照——“Lupi 风”指 gallery 那批图的视觉语法,不是 Giorgia Lupi 本人的手绘风。 4. 新造的小数据图要配满**环境结构层**:gallery 好看有一半靠无数据的家具(账本纸横线、虚线导轨、rim 刻度、每 10 单位的立柱网格、旁注引线)。数据层诚实稀疏,密度预算花在家具上。只画数据 + 一根底线的小数据图必然寒
Read more
name: lieflat-charts description: 一套模板驱动的数据可视化 skill,严格从 Lupi、Basics、Glance 与 Interactive gallery 的真实实现生成 HTML 图表;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板,同一交付禁止混用色系。
Lieflat Charts — 图表品味法典
Lieflat Charts 是一套遵循 Agent Skills 格式的数据可视化 skill,以 Mono 灰阶为保底,也会在数据语义和使用场景明确适配时自动选择一套彩色预设,专注于把数据图表做成有编辑感、能阅读、能组成完整页面的视觉内容。本 skill 在 [moxt.ai](https://moxt.ai) 制作,支持 Lupi 编辑叙事型、Glance 快速判断型、Basics 基础编辑型和 Interactive 交互大图。用户给你数据和场合,你产出一个无需构建、双击可打开的单文件 HTML,改数据只需要动顶部一个数组。纯 SVG 图可离线运行;使用 Chart.js、ECharts 或在线字体的图,在未内联依赖时需要联网。**默认必须先从 Lupi Editorial 和 Lupi Basics 中选型;只有两者都没有合适模板,或用户明确要求 Glance / dashboard / 三秒快读时,才允许使用 Glance。**
颜色无需用户显式触发。按第六点五节在 Mono 与 `color-presets.js` 的三套内置方案之间自动判断;用户明确给出品牌色或自定义色值时,可以建立一套交付内的 custom 色板。同一份 HTML 或同一组交付只能锁定一种色彩系统,不得混用。换肤样张在 `templates/color/`。
**怎么查一张图的参考代码**:catalog 查到图型 → 打开对应 gallery 文件 → 按卡内标题找到 `<div class="card">` 块看结构 → 在 `<script>` 里搜同名 `// ════` 注释块拿渲染代码。不要整页照抄——gallery 是多卡合页,交付给用户的永远是按第九节骨架组装的单图文件。
**目标用户是非程序员**(写作者、运营、做 PPT 的人)。他们说人话("帮我把这季度转化画一下,发公众号用"),不说图型名。你的职责是把人话翻译成正确的图,而且好看到能直接发出去。
---
零、模板优先硬约束
以下规则不是建议,违反任意一条都必须返工:
1. **必须从仓库模板生成。** 每张成品图先在 `catalog.md` 锁定图型编号,再打开对应 gallery 的真实实现:Lupi 使用 `templates/lupi-gallery.html`,基础型使用 `templates/basics-gallery.html`,Glance 使用 `templates/glance-gallery.html`,交互大图使用 `templates/big-*.html`。彩色图仍以这些原版模板为结构正本,`templates/color/` 只用于查配色。 2. **必须沿用所选模板的代码骨架。** 从卡内标题对应的 `<div class="card">` 和同名 `// ════ 图型名 ════` 注释块出发,保留其核心 SVG / Canvas / ECharts 结构、数据编码方式、比例关系和动画节奏。允许替换数据、标题、旁注、来源与必要布局;禁止脱离模板另画一张“看起来差不多”的图,禁止拼接多个模板造混合图型,禁止退回图表库默认样式。 3. **默认选型顺序固定。** 先完整比较 Lupi Editorial(L1–L15),再比较 Lupi Basics(F1–F13)。只要其中存在能诚实承载数据、容纳标签且可读的模板,就必须从这两组中选择。 4. **Glance 是默认降级方案,不是并列首选。** 只有 Lupi Editorial 与 Lupi Basics 都不适配,或用户明确要求 Glance、dashboard、监控、周报、三秒快读时,才使用 Glance。降级前必须写明 Lupi / Basics 不适配的具体原因。 5. **库外新造是最后手段。** Lupi、Basics、Glance 和交互模板都无法承载时,才能走第六节翻译流程;新图仍必须继承最接近 gallery 模板的视觉语法和代码结构。
一、工作流程(每次请求都走这六步)
1. **判数据形状。** 别问用户要什么图,看他的数据长什么样:几个类目的比较?带时间的序列?占比?带正负?多对一归属?网络?逐条记录的分布?形状是选图的主键。 2. **先审计 Lupi 与 Basics。** 按数据形状扫描所有能承接它的 Lupi Editorial(L1–L15)与 Lupi Basics(F1–F13)候选。至少比较 3 个候选;如果不足 3 个,就列出全部候选。比较语义契合、单位诚实、标签容纳、阅读速度、叙事张力和本批次是否重复。 3. **必要时才检查 Glance。** 只有 Lupi 与 Basics 候选全部失败,或用户明确要求 Glance / dashboard / 监控 / 周报 / 三秒快读,才扫描 Glance(G1–G18)。选择 Glance 时记录为什么 Lupi 与 Basics 无法承载,不得只写“Glance 更直观”。 4. **锁定真实模板,再组织整页。** 每张图必须记录体系、图型编号、gallery 文件和卡内标题,并以该卡的真实结构与渲染代码为骨架。禁止先想好“这一页要讲六件事”,再临时发明图型;整页叙事只能在模板锁定之后组织。 5. **按图数规则组成批次。** 一张图只承担一个独立结论;去掉重复结论后,再按第 1.1 节的默认区间决定数量。模板需要全局分配:不重复、不堆同一种轮廓、不为了凑数硬加图。 6. **按模板渲染并自检**(第零、二、三、八节)。逐项核对成品是否仍能对应到所选 gallery 实现;不能因为改数据而换掉模板的核心几何、编码或动效。按第六点五节为整份交付选择 Mono 或一套彩色预设;库外图型走翻译流程(第六节)。
1.1 图数规则
图的数量由**独立结论数**决定,不由“有多少数据列”决定,也不固定要求 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 系(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 的路径优先级(经多轮案例验证)**: 1. **先全量扫描,再选代码骨架**——基础型组 F1–F13(`templates/basics-gallery.html`)是稀疏数据的 Lupi 词汇:柱/折线/面积/环形/横条/分组/堆叠/散点/瀑布/热力/进度/哑铃/矩形树图;编辑型 L1–L15 则提供逐记录、单位分解、关系与旁注语法。不要因为 `basics-gallery.html` 里有现成代码就直接选 F 图。 2. **用最接近本体的模板起步**——多选题百分比优先比较 L15、F5、L2;100% 构成优先比较 L14、L5、F4、G4;漏斗优先比较 L13、F1/F5 的降级表达。选择依据是数据编码方式,不是文件顺序。 3. **库里真没有对应形状才新造**,且新造必须从 gallery 现有语法延伸(发丝 tick、确定性 rnd 抖动、paint-order 光晕、全大写注记),不引入库外参照——“Lupi 风”指 gallery 那批图的视觉语法,不是 Giorgia Lupi 本人的手绘风。 4. 新造的小数据图要配满**环境结构层**:gallery 好看有一半靠无数据的家具(账本纸横线、虚线导轨、rim 刻度、每 10 单位的立柱网格、旁注引线)。数据层诚实稀疏,密度预算花在家具上。只画数据 + 一根底线的小数据图必然寒
Lieflat Charts 是一套遵循 Agent Skills 格式的数据可视化 skill,可供 moxt、Claude Code、Codex 及其他兼容 SKILL.md 的 AI agent 使用。本 skill 在 moxt.ai 制作,专注于把数据图表做成有编辑感、能阅读、能组成完整页面的视觉内容。 它以统一的字体、留白、线条和动效建立自己的视觉语法,包括以下几种视觉风格:
Repo: larashero3-dotcom/lieflat-charts

