1实现原理 · 为什么它能做到
实现方式是把结构化 deck 数据装入固定模板 SloganTemplate.html,由一个构建脚本产出单文件 HTML;不允许在产物末尾补 CSS 或另写渲染分支。
skills/ljg-present/SKILL.md
使用 Tools/BuildDeck.ts 把数据装入 SloganTemplate.html;不在产物末尾补 CSS,不另写渲染分支。
这里在做什么:把「渲染」收敛为一个模板 + 数据契约,保证每次产物同源、可校验,而非一次性手写 HTML。
分两种内容契约:faithful(保真排版,保留原文字句/顺序/表格/代码/源图)与 editorial(演讲编排,可在授权范围内改写上屏文字),按用户是否授权提炼决定。
skills/ljg-present/SKILL.md
| faithful 保真排版 | 已有投影提纲;未授权改写 | 原文字句、顺序、表格、代码和源图 |
这里在做什么:把「能不能改作者内容」变成显式契约;仅有「做成演示」不自动授权删改。
主题按优先级解析:显式选择 > 明确的 theme_* 视觉标签 > 默认 hacker-dark;普通话题/用途标签不参与主题选择。
skills/ljg-present/SKILL.md
显式选择 > 明确的 theme_* 视觉标签 > hacker-dark。普通话题、用途标签不参与主题选择。
这里在做什么:固定配色决策链,避免 share/talk 之类标签触发错误主题。
版式由讲述功能(语义角色)决定,不由行数决定;两行仍可以是同一个判断,行数只参与字号与分页。
skills/ljg-present/SKILL.md
两行可以是一个判断。role 由讲述功能决定;行数只参与字号与分页。
这里在做什么:把「选哪一版」交给语义而非排版巧合,支撑巨句/对照/关系/证据/章节五类原型。
图表契约:源里有数据、顺序或关系才画;不补数值曲线,也不把并列/相关擅自升级成因果箭头。
skills/ljg-present/ChartSpec.md
图让关系直接可见。源中有数据、顺序或关系才画;不补数值曲线,不把并列或相关性擅自升级为因果箭头。
这里在做什么:规定图的准入条件与箭头语义,防止为了好看而虚构关系。
Unicode 关系图用等宽网格画连接线,中文节点独立按自然字距排版,不把中文逐字塞进固定字符格。
skills/ljg-present/SKILL.md
Unicode 连接线使用等宽网格,中文节点独立排版。不要把中文逐字塞进固定字符格。
这里在做什么:解决中文与等宽线条共存的对齐问题,保证回路/箭头可读。
静态校验不够:构建工具固定模板,另用浏览器探针核对实际绘制页面,截图再检视觉主次。
skills/ljg-present/SKILL.md
静态通过不等于画面成立。构建工具固定模板;浏览器探针核对实际绘制的页面,截图另检视觉主次。
这里在做什么:把「数据/模板合规」与「画面真的成立」分两层验收。
交付是单文件离线 HTML:字体内嵌、图表内联、零动效,并内置讲稿层与翻页笔键位。
skills/ljg-present/SKILL.md
一个 ~/Downloads/{title}.html,字体内嵌,图表内联,离线、零动效。
这里在做什么:定义产物形态与交互键位(方向键/Space/F/N),便于现场用翻页笔直接放映。
视觉语言由设计系统约束:暖白/墨黑承担内容,琥珀只用于一个重点或章节边界,不给所有分类同时着色。
skills/ljg-present/DesignSystem.md
默认暖白或墨黑承担内容。琥珀用于一个重点、章节边界或明确状态,不给所有分类同时着色。
这里在做什么:用一套明确的配色/线条纪律保证每页只有一个主角。
2核心能力
01提纲/讲稿 → 单文件离线 HTML(BuildDeck.ts + SloganTemplate.html,数据驱动)
02faithful / editorial 双内容契约与授权纪律(editingBasis、sourceIds 回源)
03五类语义版式(巨句/对照/关系/证据/章节)+ sequence/quotation
04原生图表契约(bar/line/flow/compare),数值有限、零基线、x 递增等硬规则
05Unicode 关系图(columns/rows 布局 + nodes/edges/via 路由,中文节点独立排版)
06五套主题与解析优先级(hacker-dark 默认;-b/-r/-y 等)
07讲稿层与翻页笔交互(notes 按 N 查看;方向键/Home/End/F 等)
08模板一致性静态校验(ValidateDeck.ts:只允许数据与内嵌字体不同于当前模板)
09浏览器探针 + 截图视觉复核(ProbeDeck.js 在隔离浏览器中核对实际绘制页面)
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | bun(运行 BuildDeck.ts / EmbedAssets.ts / ValidateDeck.ts;BuildDeck 内部 spawn bun 子进程) |
| cli | 隔离浏览器(加载 ProbeDeck.js 做运行时绘制核对;由宿主提供,非脚本外发) |
4管控建议与判定依据
建议配套管控措施
面向 Agent
分级或逐次授权,建议在沙箱运行
面向管理者
审批流程、可回滚、全程审计
判定依据(文件路径与关键语句摘要)
- scripts/: 执行本地脚本或命令: Tools/BuildDeck.ts(bun 运行;读 deck 数据、mkdir + Bun.write 写 HTML,并 spawn bun 跑
- 本地工作目录: 文件读写与工件输出: ~/Downloads/{title}.html(最终单文件 deck,字体内嵌、图表内联)
审计说明: 蓝色,正常使用。判级对象仅本 skill 目录:自带 BuildDeck.ts / EmbedAssets.ts / ValidateDeck.ts / ProbeDeck.js,全部本地读数据、写 HTML(Bun.write / writeFileSync),并 spawn 内部 bun 子进程完成内联与校验——属「仅本地脚本/CLI 与本地读写」。§3 的 6 条 URL 命中经逐条核实全是安全字面量:`http://www.w3.org/2000/svg` 命名空间、回归样例里的 `https://example.com`/`fetch("literal text")`、ValidateDeck 测试用的 `<svg>fetch('x')` 字面量——非真实外发;「憑證」3 条命中实为模板 token/占位符相关词,非凭证读取;「沙箱」1 条是 ValidateDeck 用 `new Function` 编译自身产物脚本做语法检查。字体内嵌在产物里、无产物期 CDN 外链,故 network_calls/credential_reads 为空,判 blue(对照 baoyu-diagram 的本地脚本类先例)。
5第二遍独立确认
- [ok] URL 命中均为安全字面量 — 6 条:w3.org SVG 命名空间 1 条、RegressionDeck.json 与 ValidateDeck.ts 测试字面量 5 条;无 fetch/curl 对真实端点,network_calls=[] 成立。
- [ok] 「凭证」命中非凭证读取 — 3 条命中均为 token/模板一致性(canonical-template、{{DECK_META_JSON}} 占位符)与 help 文案,不读 env/keychain/文件;credential_reads=[] 成立。
- [ok] 沙箱命中为构建期语法检查 — ValidateDeck.ts 用 `new Function(script)` 对自身模板产物做 JS 语法编译(捕获异常记 javascript-syntax),非对不可信外部代码的任意执行;已写入 injection_surface/reason。
- [ok] 写盘面与交付声明一致 — BuildDeck 用 mkdir + Bun.write 写输出 HTML;EmbedAssets writeFileSync 内嵌字体/图片;SKILL.md 交付声明为 ~/Downloads/{title}.html,一致。
- [ok] 无产物期 CDN 字体外链(未夸大离线) — SKILL.md 声明「字体内嵌…离线、零动效」,Fonts/ 内含 IBM Plex Mono ttf 与 OFL,EmbedAssets 负责内联;无不依赖远端字体的证据缺口。
- [ok] 授权契约与编辑依据真实存在 — SKILL.md 两种内容契约表与「仅有『做成演示』不自动授权删改」「记录 editingBasis…sourceIds 回到完整来源」为原文,editorial 约束非臆测。
6结论
适合: 适合把 Org/Markdown 提纲或已授权提炼的讲稿做成 Unix 气质单文件演示:技术分享、内部评审、需要对投影距离与主次有强控制的现场放映;也适合想保留「数据驱动 + 可复现」的演示生产流程。
不适合: 不适合未经授权改写作者内容,也不适合生成企业 PPT(description 的 NOT FOR);不适合要 PowerPoint 文件、要花哨动效/模板库、或无法提供隔离浏览器做视觉复验的场合。
Install Agent-Ready
① Verified Mirror 2026-10-10
Option A · Direct DownloadDownload ljg-present.tar.gz
sha256:
Option B · Copy Guide for Agentc5877f065fa8406a…agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
② Upstream GitHub
GitHub Repo ↗
Pinned to commit 9e75497a95.