1实现原理 · 为什么它能做到
封面由三层叠加构成:160° 深夜渐变底(#08080f→#0e1020→#08080f)+ 三个 blur 光球 + 一层 SVG 连线图谱,全部写在 CSS/SVG 里,不需要图片素材。
.tpl-graphify-dark-graph .slide{background:linear-gradient(160deg,#08080f,#0e1020 50%,#08080f);color:var(--gd-text);padding:64px 88px;overflow:hidden}
「漂浮 orbs」的实现是 radial-gradient 圆 + filter:blur(110px) + 22s ease-in-out 交替动画(三球错开 delay):纯 CSS 动画,无 canvas、无 WebGL。
.tpl-graphify-dark-graph .gd-orb{position:absolute;border-radius:50%;filter:blur(110px);opacity:.35;animation:gdDrift 22s ease-in-out infinite alternate}
「SVG 力导向图谱」实际是一张手摆坐标的静态 SVG(line 与 circle 固定 x/y,注释自称 live force-directed),文件内没有任何布局计算:力导向只是视觉造型。
<!-- live force-directed graph bg -->
「彩虹渐变标题」由 8 段色标 linear-gradient + background-clip:text + 4s 线性动画轮转 200% 背景实现,文字本身透明只留渐变。
.tpl-graphify-dark-graph .gd-rainbow{background:linear-gradient(90deg,#ff0080,#ff4d00,#ff9900,#ffe600,#00c853,#0091ea,#6200ea,#ff0080);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:gdRainbow 4s linear infinite}
「Glassmorphism 卡片页」=半透明白底 3% + 1px 白边 10% + backdrop-filter:blur(20px) saturate(160%) + 顶部 50% 渐变高光 + 内描边投影。
.tpl-graphify-dark-graph .gd-glass{position:relative;overflow:hidden;border-radius:20px;padding:22px 26px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(20px) saturate(160%);box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.08)}
CLI 命令展示=JetBrains Mono 32px 绿色字 + 双层 text-shadow(30px / 60px)做霓虹发光,是「dev tool launch」调性的核心道具。
.tpl-graphify-dark-graph .gd-cmd{font-family:'JetBrains Mono',monospace;font-size:32px;font-weight:700;color:var(--gd-green);text-shadow:0 0 30px rgba(126,211,164,.45),0 0 60px rgba(126,211,164,.15);letter-spacing:-.01em}
示例 8 页:COVER / SECTION DIVIDER / CONTENT(plugin grid)/ CODE / CHART(race diagram)/ PIPELINE / CTA / THANKS;桌面网格用 gd-grid-3 与 gd-grid-4 三列四列。
<!-- 5. CHART — race diagram -->
运行时由宿主承担:模板目录零可执行文件,prompt 由 assemblePrompt 拼装后交本地 agent CLI 执行。
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| network | Google Fonts(JetBrains Mono / Inter / Noto Sans SC / Space Grotesk) |
| network | 宿主共享指令声明的 Tailwind CDN(宿主侧要求,非本模板要求) |
4风险提醒 风险提醒:绿色 · 放心使用
- 宿主侧:预览 iframe 放宽沙箱 — template-picker.tsx 用 srcDoc + sandbox="allow-scripts allow-same-origin";同源脚本可自行摘除沙箱,属宿主实现风险,不判档。
- 宿主侧:会 spawn 本地 agent CLI — convert 路由经 invokeAgent 以本地已登录 CLI 执行 prompt。
- 产物示例含 CDN 外链 — 字体 @import 与共享指令的 cdn.tailwindcss.com 在渲染时请求外网。
- 描述性夸张会影响预期 — 「力导向」实为静态手摆 SVG;若用户按 SKILL.md 期待动态图谱会失望。展示层宜按实测描述呈现。
- backdrop-filter 的性能与打印 — 玻璃卡片在低端设备 / 长页滚动时开销较高,且打印与 PDF 会丢失背景模糊效果。
5第二遍独立确认
- [discrepancy] 「SVG 力导向图谱」是否真为力导向布局 — 否。示例是手摆固定坐标的 <line>/<circle>(如 <line x1="300" y1="200" x2="520" y2="340"/>),文件内没有 d3-force / requestAnimationFrame / 任何布局计算,注释 <!-- live force-directed graph bg --> 属描述性夸张(视觉上是「无序连线 + 节点」的图谱造型)。对产出无实际影响,但描述与实现不符。
- [ok] 「漂浮 orbs」是否真是动画 — gd-orb 带 filter:blur(110px) 与 animation:gdDrift 22s ease-in-out infinite alternate,三球错开 delay(gd-orb-2 / gd-orb-3 各有 animation-delay)。
- [ok] 「彩虹渐变标题」是否存在 — gd-rainbow 的 8 段色标 + background-clip:text + gdRainbow 4s 动画。
- [ok] 「Glassmorphism 卡片」是否有真实现 — gd-glass 使用 backdrop-filter:blur(20px) saturate(160%) 与半透明描边、内高光。
- [ok] 目录内是否有脚本 / 网络调用 / 凭证读取 — 目录仅 SKILL.md + example.html;<script> 计数 0;无 fetch/XHR/env/写盘代码;无凭证读取。
- [ok] SKILL.md 是否要求运行时外链 — SKILL.md 只列色值与页型(无 URL);字体 @import 属 example.html(产物示例)。
- [ok] pin commit 与路径 — HEAD = 553ed98c283f9c0f489902d035416a972d6a9699;skill.path = next/src/lib/templates/skills/deck-graphify-dark,含 SKILL.md。
- [ok] README 收录一致性 — README deck 表列出 deck-graphify-dark(Dark, data-graphic-heavy deck),与目录内容相符。
6结论
a286c3d514e66d5b…553ed98c28