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 });
模板的核心是九段固定结构:从 Header、Executive takeaway、Positioning map 一直到 30/90/180 天 Recommended moves,缺段即不合格。
【必须输出的结构】
定位图与功能矩阵被规定为从用户内容生成而非套模板词:坐标轴必须来自素材,矩阵列含 Us / Opportunity,用 ✓/△/— 表达覆盖度。
3. Positioning map: 用 2×2 象限或坐标图表现竞品定位。坐标轴必须来自用户内容, 不要套模板词。
每个竞品一张卡,字段固定为 target user / core promise / pricing signal / primary strength / visible weakness;机会窗口固定含 why now、target segment、first move、risk。
8. Opportunity windows: 3 个机会窗口, 每个包含 why now、target segment、first move、risk。
有独立的内容真实性章节:只使用用户提供的资料、缺失信息标注 not found in source / unknown、禁止发明市场份额/ARR/客户名/定价,资料不足也要在 Evidence gaps 列缺口。
- 只使用用户提供的竞品、价格、功能、评论。缺失信息用 "not found in source" 或 "unknown" 标注。
风格三选一由 assets/ 里的三份参考 HTML 提供(war-room-grid 默认、radar-map 深色情报台、analyst-dossier 纸质投研档案),并要求按输入特征择一,不得混用。
- `assets/war-room-grid.html`: 默认风格。浅色战情室 / 咨询报告, 适合产品团队、PM、普通商业读者。
2核心能力
4风险提醒 风险提醒:绿色 · 放心使用
- 示例覆盖度低于模板要求 — 示例未独立呈现 Pricing / UX notes / Opportunity windows 三段;用户若以示例为验收基准,可能得到比 SKILL.md 要求更薄的报告,需以指令为准。
- 输入质量决定结论可靠性 — 模板禁止编造但无法核实用户素材真伪;若用户贴入的定价/评价本身过时或错误,报告会把错误结构化输出(矩阵只标 unknown,不会纠错)。
- 用户内容逐字进 prompt 的注入面(本批最接近外部内容摄入的模板) — 宿主装配层直接插值用户内容,而本模板的输入常是竞品官网摘录、用户评论等第三方文本;粘贴文本中的指令性语句可影响生成结果。产物为本地 HTML 报告,危害限于报告内容。
- 预览同源沙箱(宿主行为) — preview-pane.tsx:297 / template-picker.tsx:544 使用 sandbox="allow-scripts allow-same-origin";本模板产物除 Tailwind CDN 无自定义脚本。
5第二遍独立确认
- [discrepancy] 九段结构在示例中的覆盖度 — example.html 展示了 Header、Executive takeaway(3 条)、Positioning map、3 张竞品卡、Feature matrix(含 not found / unknown 单元格)、30/90/180 天 moves;但第 6 段 Pricing / packaging read 与第 7 段 UX / messaging notes 未独立成节,第 8 段 Opportunity windows 亦未以独立小节出现(部分内容并入卡片与矩阵注释)。模板能力以 SKILL.md 为准,示例属精简演示。
- [ok] 内容真实性纪律的可见落地 — 矩阵中逐字出现 unknown(Transcript library 行)与 not found(CRM / sales workflow、Cross-interview insight cards 行),与 SKILL.md 要求的标注词一致,证明该纪律可被执行。
- [ok] 三套 assets 是否为真实不同风格 — war-room-grid:浅色 --paper:#f7f4ec + Inter;radar-map:深色 panel rgba(13,27,45,.76) + 径向雷达网格 repeating-radial-gradient;analyst-dossier:双线规则 .rule + 红色 stamp 旋转 -2deg + IBM Plex Serif 衬线。三份互不相同的实现坐实风格三选一。
- [ok] 端点与判级 — SKILL.md 正文无 URL/端点要求;端点只出现在 assets 与 example 的 cdn.tailwindcss.com <script> 及字体链接,属产物期引用层,执行期零外发,维持 green。
- [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结论
99cee63fe9181008…553ed98c28