npx skills add ...
npx skills add larashero3-dotcom/lieflat-charts --skill lieflat-charts
一套模板驱动的数据可视化与报告生成 skill,既能严格从 Lupi、Basics、Glance、Maps 与 Interactive gallery 的真实实现生成 HTML 图表,也能从 12 套中英文整页报告模板生成可发布的 HTML 报告;以 Mono 为保底,能按数据语义自动选择内置彩色预设,也支持用户明确提供的自定义色板。地图仅在用户明确要求时启用,同一交付禁止混用色系。
npx skills add larashero3-dotcom/lieflat-charts --skill 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 的人)。他们说人话("帮我把这季度转化画一下,发公众号用"),不说图型名。你的职责是把人话翻译成正确的图,而且好看到能直接发出去。
report-catalog.md,按报告类型、内容结构、版心、密度、阅读速度和语言选择一个 R01–R12。目录里的场景只是召回线索,不是对模板的限制。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 结构、数据编码方式、比例关系和动画节奏。允许替换数据、标题、旁注、来源与必要布局;禁止脱离模板另画一张“看起来差不多”的图,禁止拼接多个模板造混合图型,禁止退回图表库默认样式。report-catalog.md,至少比较 3 个报告候选并记录淘汰理由。按内容结构、信息密度、版心和阅读速度选模板,不把模板名称当成行业限制;例如“旅行手记”也可以承载运动或个人生活数据,“月度运营”也可以承载财报或业务数据报告。catalog.md 选型,优先复用 Lupi / Basics 的真实实现;报告模板的布局不能成为绕过图表数据契约的理由。图的数量由独立结论数决定,不由“有多少数据列”决定,也不固定要求 5 张或 6 张:
| 请求类型 | 默认成品数量 | 规则 |
|---|---|---|
| 单个问题 / 单张表 / 一个指标 | 1 | 只交付最强的一张,不为了展示模板而扩展 |
| 两到三个明确结论 | 2–3 | 每张图承担一个不同结论,可共享同一数据源 |
| 一篇文章、论文或完整案例 | 4–6 | 覆盖总览、构成、比较、关系或变化等不同数据形状 |
| 用户明确要求数量 | 按用户要求 | 仍然删除重复图;不足以支撑时说明并少做 |
默认引用 mono-tokens.js(开源分发时把内容内联进 HTML)。与 token 冲突的取值一律以 token 为准。走彩色时只替换颜色 token,字体、圆角、布局和动画仍以 mono-tokens.js 为准。
颜色
#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 系(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 的路径优先级(经多轮案例验证):
templates/basics-gallery.html)是稀疏数据的 Lupi 词汇:柱/折线/面积/环形/横条/分组/堆叠/散点/瀑布/热力/进度/哑铃/矩形树图;编辑型 L1–L15 则提供逐记录、单位分解、关系与旁注语法。这两组是主力,小数据几乎总能在这里落地。F14–F17 与 L16–L20 是后备,按第零节 3.1 / 3.2 判断。不要因为 basics-gallery.html 里有现成代码就直接选 F 图。同一批产出(一页多图)里模板不重复。 19 张 Lupi 系够轮换;同一数据能被多个模板承接时,选这一批里还没用过的。
编号对应 catalog.md。这些只是候选召回表,箭头和书写顺序不代表优先级。实际选择必须遵守:先检查全部 Lupi Editorial 与 Lupi Basics 候选,确认无合适模板后,才允许采用 Glance 候选。
shade = value。nodeClick:false,避免误触改变视图。HERO。area = ...,使用彩色时再写清 color = ...。按顺序问:
templates/big-threads.html:可见线下垫 9px 透明孪生线当热区,hover 单线亮整条路径、hover 标签拉整束、点击钉住。用户要的图不在 63 张里(或发来一张参考图)时,不是做不了,是现场造句。流程四步,第一步不许跳:
mono-tokens.js 拿,不许发明新颜色新字号。产出必须和库里的图"一眼一家人"。走彩色时颜色改从 color-presets.js 的单一预设中取,其他 token 仍以 mono-tokens.js 为准。参考图翻译的附加规则:识别参考图属于哪个流派(Glance or 编辑部),编辑部风格的密度、旁注、手绘感(blob)是本体的一部分,别做收敛了——almanac 曾因"不敢挤"返工。
Mono 是保底方案,不是未触发彩色时的强制答案。 用户没有提颜色时也要根据数据语义、类目数量、阅读场景和内容气质评估是否适合彩色;适配关系不明确,或颜色没有带来真实信息价值时,回到 Mono。
彩色初稿从三套预设中选择一套,色值在 color-presets.js,样张在 templates/color/。预设用于快速得到稳定、统一的第一版,不是锁死的色板。用户要求"这个蓝再深一点"时,在当前色系内继续调整;用户明确给出品牌色、色值或完整色板时,按下方规则建立 custom 色板。调整后必须重新检查对比度、视觉主次和数据语义。
同一份 HTML 或同一组交付必须先锁定一个全局色彩系统:Mono、porcelain、palm、wire 或一套 custom。 所有图共享该选择。若其中某张图不支持已选系统,不得单独换色;改选一套全局兼容的系统,或整组退回 Mono。
结构正本永远是原版 gallery。 查渲染代码去 templates/ 根目录的 gallery,templates/color/ 只查配色。先按第零节选定结构,再决定是否换肤。
按以下优先级判断:
彩色不是升级版,而是 Agent 可以主动选择的语义工具。交付时用一句话说明所选色系及其承担的数据含义。
Agent 不得自行发明第五套默认审美。只有用户给出明确色值、品牌色、品牌规范或"沿用这张参考图的配色"时,才建立 custom 色板;仅说"好看一点"仍从三套内置预设选择。
BG、TXT、MUT、GRID、DATA;需要重点时再定义 HERO,有序数据定义 RAMP,分类数据定义 CAT。成品内联一个 CUSTOM 对象,所有图从角色取色。CAT。超过 6 个先合并类目、改用位置/标签,或退回 Mono。BG 混合,深色由用户色与 TXT 混合;不得借用 porcelain、palm、wire 的色值补齐 custom。CUSTOM。除非用户明确要求把品牌色固化为项目级预设,否则 custom 只内联在当前成品,不回写 color-presets.js。用户后续要求"再深一点"、"背景暖一点"或替换某个色值时,修改对应角色并重新检查整套对比度和语义映射,不只改被点名的那一个元素。
| 数据形状 | 允许 | 原因 |
|---|---|---|
| 有序 / 单序列(进度、热力、时间序列、单指标、排名) | porcelain、wire | 明度即数据的契约仍然成立 |
| 无序类目 ≤4 | palm | 色相对应类目 |
| 无序类目 5–6 | palm(勉强) | 依靠明度和饱和度辅助区分 |
| 类目 >6 | Mono 灰阶 | 彩色预设容量不足 |
| 需要克制但要一个视线落点 | wire | 灰阶承载数据,橙色只标主角 |
| 用户会说 | 预设 | 气质 |
|---|---|---|
| 蓝、冷、学术、理性、严肃、科技感 | porcelain | 单色相蓝阶 |
| 绿、暖、自然、温柔、复古、莫兰迪 | palm | 绿黄低饱和,琥珀点睛 |
| 黑白、克制、杂志感、编辑部 | wire | 黑灰加一点荧光橙 |
color-presets.js 的一套预设,或一套用户明确要求的 custom。禁止预设彼此混用,也禁止 custom 借用内置预设补色。dot heat 除外。DARK 块。big-circular / big-force / big-threads 只有 porcelain 和 palm;wire 使用原版 Mono 大图。DATA 和 HERO 必须不同。 琥珀和橄榄明度接近,不要把两者当作平等类目色。敢拒绝比什么都接更可信。以下情况不做,并给替代:
CUSTOM 角色取色并通过对比度检查?rnd 确定性的?刷新两次长得一样?node --check 过语法(把 <script> 内容抽出来查)。报告交付仍然是单文件 HTML;templates/reports/ 中的文件是可复制的起始骨架,不是需要逐字照抄的内容样例。模板内的演示数据只用于展示结构,生成最终报告时必须全部替换。
report-catalog.md # 先按场景选 R01–R12
templates/reports/report-NN.zh.html # 中文整页正本
templates/reports/report-NN.en.html # English full-page source
templates/reports/index.html # 本地可打开的模板索引
docs/assets/reports/report-NN.png # 中文版静态预览