1实现原理 · 为什么它能做到
配色规则不是「选一个主色」而是「每页一个色,从 8 色调色板循环取,同色可复用」——于是全篇节奏由背景色更替承担,而不是靠排版层级。
- 页数由【用户内容】决定 (短内容 8 页起步, 长内容应更多); 每页单色背景, 从下列调色板里循环选取 (靛 / 奶 / 绛 / 翠 / 灰 / 紫 / 白 / 炭), 同色可复用
8 个调色板落成 8 个 .t-* 类(t-indigo/t-cream/t-crimson/t-emerald/t-slate/t-violet/t-white/t-charcoal),且每类单独定义 .dk-accent 前景色,保证强调色在深色与浅色底上都可读。
.tpl-dir-key-nav-minimal .t-cream .dk-accent{color:#B5392A}
「160px display 标题 + 4px accent 线」落成 .dk-h0{font-size:160px;letter-spacing:-5px} 与 .dk-line{width:90px;height:4px;background:currentColor}——线只有一条,是全模板唯一的装饰元素。
.tpl-dir-key-nav-minimal .dk-h0{font-size:160px;font-weight:900;line-height:.9;letter-spacing:-5px;margin:0 0 20px}
「箭头 → 前缀的 Mono 列表」=ul.dk-list 用等宽字体 + li::before{content:'→'} 悬挂缩进:列表符号由伪元素生成,不占内容 DOM。
.tpl-dir-key-nav-minimal .dk-list li::before{content:'→';position:absolute;left:0;opacity:.5}
导航有两个常驻元素:左下 .dk-keyhint(kbd 胶囊写「← → space」,末页写「press ← to rewind · F for fullscreen」)与右下 .dk-page 页码,均用 var(--dk-mono) 小字、45% 透明。
<div class="dk-keyhint">nav · <kbd>←</kbd> <kbd>→</kbd> · <kbd>space</kbd></div>
example.html 末尾额外写了一段「静态预览兜底」CSS:因为目录里没有 runtime.js,于是把所有 slide 设为可见、relative、height:100vh——预览因此是长页而非翻页。
/* Static-preview fallback (runtime.js is absent — keep every slide visible) */
运行时仍在宿主侧:模板目录零可执行文件;prompt 由 assemblePrompt 拼装、交本地 agent CLI 执行,deck 分页由宿主拆 <section class="slide">。
export function assemblePrompt(opts: {
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| network | Google Fonts(Inter / Noto Sans SC / JetBrains Mono) |
| network | 宿主共享指令声明的 Tailwind CDN(宿主侧要求,非本模板要求) |
4风险提醒 风险提醒:绿色 · 放心使用
- 宿主侧:预览 iframe 放宽沙箱 — srcDoc + sandbox="allow-scripts allow-same-origin"(template-picker.tsx),同源脚本可自行摘除沙箱;宿主实现风险,非模板行为。
- 宿主侧:会 spawn 本地 agent CLI — convert 路由经 invokeAgent 用本地 CLI 执行 prompt。
- 产物示例含 CDN 外链 — 字体 @import 与共享指令的 cdn.tailwindcss.com 在渲染时请求外网。
- 极简模板的表现力上限 — 禁用图片与图表后,数据只能靠巨数字与箭头列表承载,信息密度低;对内容本身的质量要求高。
5第二遍独立确认
- [discrepancy] 「单色背景」是否真为纯色 — 多数(indigo / crimson / emerald / slate / violet / charcoal)实为同色系 linear-gradient(135deg,…) 渐变,仅 t-cream(#F5F0E8)与 t-white 为纯色。属措辞宽泛:仍是「每页一个色系」,不影响观感与机制。
- [ok] 160px / 4px 是否兑现 — .dk-h0 font-size:160px;.dk-line width:90px; height:4px——与 SKILL.md 数值逐字一致。
- [ok] kbd 提示是否只出现在首末页 — 首题页(nav · ← → · space)与末页(press ← to rewind · F for fullscreen)各一处,正文页无。
- [ok] 目录内是否有脚本 / 网络调用 / 凭证读取 — 目录仅 SKILL.md + example.html;<script> 计数 0;无 fetch/XHR/env/写盘代码。
- [ok] 静态预览兜底注释是否与事实相符 — 注释声明 runtime.js is absent,目录内确实不存在 runtime.js;HTML 也无任何 <script src>。
- [ok] pin commit 与路径 — HEAD = 553ed98c283f9c0f489902d035416a972d6a9699;skill.path = next/src/lib/templates/skills/deck-dir-key-nav,含 SKILL.md。
- [ok] README 收录一致性 — README deck 表列出 deck-dir-key-nav(Directional key-nav deep browse),与目录内容相符。
6结论
c67ac120d2a37bce…553ed98c28