digital-eguide
Two-page spread digital guide featuring a cover + lesson page + pull-quote + step list.
1How It Works & Mechanism
This skill is not an executable program, but follows the pattern 'one directory = one template': the frontmatter of SKILL.md is used for display in the selector, while the body serves as the prompt sent to the model; adding a template means simply adding a directory without modifying TypeScript.
routes rescan disk and the client refetches `/api/templates`.
The actual prompt sent to the model = platform shared design directives (SHARED_DESIGN_DIRECTIVES) + the body of SKILL.md from this skill + user content, assembled into a single prompt via assemblePrompt.
Wrap a per-template instruction body with the shared design directives and
The final output bypasses the filesystem: shared directives strictly forbid file tools such as Write, Edit, and Bash, requiring the model to stream the entire HTML directly as the response body (stdout is captured and written to disk by the front end).
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
The deliverable is not a standard webpage, but an 'open book': a two-page side-by-side horizontal spread with a cover on the left and an interior page on the right, positioned visually as a lead magnet style.
- 两页 side-by-side 横向, 像翻开的书
The open-book effect is crafted via two CSS properties: a flex container with a horizontal layout and a 36px gap, each page being 540px wide and at least 740px high, each slightly counter-rotated by ±0.6deg.
.page.left { transform: rotate(-0.6deg); }
Pages are marked with semantic anchors in the sample: the left page is article.page.left.cover (data-od-id="cover"), and the right page is article.page.right.spread (data-od-id="spread"), making subsequent block targeting easier.
<article class="page right spread" data-od-id="spread">
The interior page typography utilizes a triad of 'drop cap + numbered steps + pull-quote opening with quotation marks': .columns p:first-letter creates the drop cap, while .steps .row features a 28px numbered column with dashed dividers.
.steps .row { display: grid; grid-template-columns: 28px 1fr; gap: 10px; align-items: baseline; padding: 8px 0; border-bottom: 1px dashed var(--rule); }
The cover creates a 'tutorial product feel' using a stat row + TOC teaser: 3 stat counters (16 / 38 / 1) + 6 lines of table of contents entries (title + dotted leader line + page number).
<h2 class="inside">What's <em>inside.</em></h2>
The server-side /api/convert performs only three tasks: reads the skill from disk by templateId, assembles the prompt, and spawns the local agent CLI to forward the output via SSE stream.
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 side effects
5Second-Pass Verification
- [ok] 「两页跨页」且不随内容扩页 — 样例恰 2 个 article.page;SKILL.md【意图】明写「一封面一内页跨页排列」。
- [ok] 「像翻开的书」的视觉手法 — flex 横排 + .page.left/.page.right 反向 0.6deg 旋转 + 两页纸面色差 + 30px/60px 柔影。
- [ok] 「pull-quote + 步骤列表」 — .pullquote(含 56px 引号字形与署名行)与 .steps .row(4 条编号步骤)均在样例内。
- [ok] 字体依赖 Google Fonts — 样例 <link> 引入 Cormorant Garamond / DM Serif Text / IBM Plex Mono 三族;离线打开时回落到 Iowan Old Style/Georgia,布局不崩。
- [ok] data-od-id 的作用 — 样例有 5 处 data-od-id(cover/toc/spread/pullquote…),但 repo 内 TS/JS 对 data-od-id 零引用(grep 无命中)→ 仅成稿语义标记,不是运行时钩子。
- [ok] 无外部图片 — 全文无 <img> 与外链图;封面的几何点/线均为 CSS 绘制。
6Verdict & Scenarios
810081d8875f1560…