1实现原理 · 为什么它能做到
模板本体没有可执行代码:loader 从 src/lib/templates/skills/<id>/SKILL.md 读入 frontmatter 与正文,正文(body)与 example 内容一起作为 LoadedSkill 返回。
const raw = safeRead(path.join(dir, "SKILL.md"));
下发前宿主固定拼装 prompt:模板正文夹在共享设计指令 SHARED_DESIGN_DIRECTIVES 与【输入格式】/【用户内容】之间。
Wrap a per-template instruction body with the shared design directives and
共享指令把硬约束写成对 agent 的显式禁令,并强制内容驱动数量(模板里的数字只作参考下限)。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
真正执行的是用户本机已安装并登录的编码 agent CLI:宿主 spawn 子进程,把 prompt 交给它,HTML 从 stdout 流式捕获。
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
/api/convert 是模板的执行路径:它把 skill.body 与用户内容组装成 prompt 后交给 invokeAgent。
prompt = assemblePrompt({ body: skill.body, content, format });
模板定位为消费产品感的数据墙,靠 editorial typography(衬线展示体 + 等宽数字)与克制高亮色同常规后台区分。
【意图】消费产品感的数据墙, editorial typography + 克制的高亮色。
布局五段:Left rail 导航 → Ticker bar 实时信号 → Headline KPIs → 30-day mutual-matches 柱状图 → Match-rate 趋势 block。
- Ticker bar 实时信号
头部 KPI 区实际做成 3×3 九宫格统计墙(Mutuals on file / Replies in 24h / Communities / Match rate / 2nd dates / Exes…),每格带一句口语化注解。
<div class="label">Match rate</div>
30 天柱状图以纯内联 SVG 手工绘制(多根 rect,最后一根用高亮色 #c14a2b 强调),无图表库、无脚本。
<rect x="630" y="60" width="14" height="160" fill="#c14a2b"></rect>
示例在窄屏把左栏折叠为顶部条(aside.rail 在媒体查询里改为无右边框、加下边框),说明虽定位桌面也做了一档降级。
aside.rail { border-right: none; border-bottom: 1px solid var(--ink); }
页面保留版本号位(mutuals.v0.6.1)与「NEXT TIER AT 2,080 MUTUALS」等产品化细节,属消费产品的仿真元素。
<div style="opacity:0.7;margin-top:2px;">mutuals.v0.6.1</div>
2核心能力
4风险提醒 风险提醒:绿色 · 放心使用
- 演示数据会被误当真实看板 — 示例内所有数字(1,842 mutuals / 14% match rate / mutuals.v0.6.1)都是样例;用户不替换数据就会产出看似真实的产品界面。
- 模板对内容契约很宽,容易产出好看但空的页面 — SKILL.md 只给五段布局,不要求解析用户数据(对比 data-report 的必须解析实际数据),指标含义依赖用户提供。
- 字体走 Google Fonts(产物期引用) — DM Serif Display/Text 与 IBM Plex Mono 来自 fonts.googleapis.com(浏览器打开产物时取用,skill 执行期不发请求);离线时退化为系统衬线/等宽字体,观感下降但布局不塌。
- 用户内容逐字进 prompt 的注入面 — 宿主装配层直接插值用户内容;粘贴文本中的指令性内容可影响生成,危害限于产物内容与外观。
5第二遍独立确认
- [discrepancy] KPI 数量与 SKILL.md 的关系 — SKILL.md 仅写 Headline KPIs 未给数量;示例实现为 3×3 共 9 格(含 Exes in your circle / Shared blocks / Logged-off hrs 等生活化指标)。属示例扩展而非模板要求,详情页不应把 9 格当作固定规格。
- [ok] 「无脚本」判定 — dating-web/ 内 <script> 计数为 0;30 天柱状图以 <rect> 手工排布(含高亮柱 fill="#c14a2b"),无图表库、无 Canvas。
- [ok] 端点与判级 — 目录内 http(s) 仅 fonts.googleapis.com(css2 样式表)与 fonts.gstatic.com(preconnect),均为产物期引用;SKILL.md 只写字族风格要求、未点名端点,执行期零外发,维持 green。
- [ok] 窄屏降级是否存在 — 媒体查询内 aside.rail 改为 border-right:none + border-bottom,左栏折叠为顶部条,与桌面 1440 定位不冲突,属可用的移动端降级。
- [ok] license / stars / commit 元数据 — GitHub API(api.github.com/repos/nexu-io/html-anything):spdx_id=Apache-2.0、stargazers_count=8827、pushed_at=2026-09-15T03:36:24Z;工作副本 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699(与任务表 pin 553ed98c283f 同源)。
- [ok] skill.path 与目录资产面 — pin 目录内该路径存在且含 SKILL.md;目录内文件清单已用 glob 全量核对(含隐藏文件),无 scripts/、无 references/、无二进制资产(competitive-teardown 的 assets/ 为纯 HTML,另行记录)。
6结论
e3773d07ae610754…553ed98c28