deck-xhs-pastel
Cream background + soft glow blobs + rounded macaron cards + Playfair italic numerals
1How It Works & Mechanism
This skill is not an executable program, but follows a "one directory = one template" pattern: the frontmatter of SKILL.md is used for selector display, while the body serves as the prompt sent to the model; adding a template equals adding a directory, without modifying TypeScript.
routes rescan disk and the client refetches `/api/templates`.
The actual prompt sent = platform shared design directives (SHARED_DESIGN_DIRECTIVES) + this skill's SKILL.md body + user content, assembled into a single prompt by assemblePrompt.
Wrap a per-template instruction body with the shared design directives and
Final deliverables bypass the file system: shared directives explicitly forbid file tools like Write/Edit/Bash, requiring the model to stream the entire HTML directly as the response body (stdout is captured and persisted by the frontend).
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
The style is strictly locked down by the [Layout] checklist in SKILL.md across four dimensions: "color values + typography + border radius + components": cream background #fef8f1, three soft glow blobs, Playfair italic serif headings, 28px rounded macaron cards, and Playfair italic 01-04 numerals.
- 奶油 #fef8f1 底 + 三个柔光 blob
The card's 28px border-radius and the soft glow blobs are materialized into ready-to-copy CSS in example.html: cards with 28px border-radius + 0 14px 40px soft shadow, and blobs composed of three large circles with radial gradients + blur(2px).
.tpl-xhs-pastel-card .xp-card{border-radius:28px;padding:30px 34px;background:#fff;box-shadow:0 14px 40px rgba(42,35,64,.08);position:relative;overflow:hidden}
Data graphics avoid chart libraries entirely: weekly time allocation is rendered using a hand-coded SVG donut (segmented circles + stroke-dasharray offsets), centered with a Playfair numeral labeled 4h.
<text x="130" y="130" text-anchor="middle" font-family="Playfair Display" font-size="44" font-weight="900" fill="#2a2340">4h</text>
Slide counts are not hardcoded by the template: shared directives require "content-driven volume," and the template only provides a reusable layout pool.
模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
The server-side /api/convert handles only three tasks: read the skill from disk by templateId, assemble the prompt, and spawn the local agent CLI while forwarding the output via SSE streaming.
prompt = assemblePrompt({ body: skill.body, content, format });
2Core Capabilities
4Recommended Governance & Evidence
- SKILL.md: Pure prompt directives and rule text, without script execution or external impact
5Second-Pass Verification
- [ok] 目录只有 SKILL.md + example.html(无脚本/无资产) — find 结果 2 个文件;<script 与事件处理器零命中。
- [ok] 「奶油底 #fef8f1 底 + 三个柔光 blob」 — example.html 有 --xp-bg:#fef8f1 与 .xp-blob.b1/.b2/.b3 三条径向渐变规则。
- [ok] 「Playfair 斜体 01-04 序号」 — 卡片内 <div class="xp-num">01</div>…04 与 .xp-h1 em{font-style:italic} 均为 Playfair Display。
- [ok] 「SVG donut 图 + chip+page 顶栏」 — 第 06 页背景层含四段 stroke-dasharray 的圆环 + 中心 4h;每页 xp-topbar 内 xp-chip + xp-page。
- [discrepancy] aspect_hint 16:9 与样例的对应关系 — SKILL.md frontmatter 写 aspect_hint: "16:9",但 example.html 的 .slide 是 width:100vw/height:100vh 全屏适配(由宿主的 deck 模式播放),并没有 16:9 固定画布;选择器缩略图处才出现 aspect-ratio:16/9。结论:16:9 是宿主预览/导出的约束,不是模板文件里的画布尺寸。
- [ok] 页数口径 — 样例为 8 页(页脚 01 · 08…08 · 08),符合共享指令「模板不定义数量、由内容决定」;SKILL.md 未写死页数。
- [ok] 官方描述逐字一致 — description 原文「奶油底 + 柔光 blob + 马卡龙圆角卡片 + Playfair 斜体序号」与 SKILL.md 逐字相同。
6Verdict & Scenarios
e9e5fecb3c98880a…