1仕組みと動作原理
この skill は実行可能プログラムではなく、ローカルの coding-agent CLI に注入されるプロンプトです。ホストが SKILL.md 本文を取得し、前にサイト全体の共通デザイン指示、後ろにユーザーコンテンツを結合してプロンプトを組み立て、ログイン済み agent に渡して stdout を HTML として取得します。
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
共通指示レイヤー(単一の skill には属さず全テンプレートの上位に位置)は、出力を「自己完結型シングルファイル HTML」に固定し、agent が Write/Edit/Bash などのファイルシステムツールを使用することを明示的に禁止し、HTML を対話本文として直接ストリーミング出力させます。
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
SKILL.md の外側には「コンテンツ駆動の数量」上書きルールがあります。テンプレートに記載されたページ数、フレーム数、カード数はすべて参考下限とみなされ、実際の数量はユーザーコンテンツによって決定されます。これにより、agent がテンプレートの数値に合わせてユーザーコンテンツを圧縮するのを防ぎます。
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
読み込み規約は「1 skill = 1 ディレクトリ」です。SKILL.md(セレクター用 YAML frontmatter + プロンプト本文)、任意の example.md(サンプル入力)、example.html(直接ブラウザで開けるプレビュー見本)で構成され、TS コードを変更することなくディレクトリを追加するだけでテンプレートを新規追加できます。
* SKILL.md — frontmatter (id, scenario, tags, …) + prompt body * example.md — (optional) sample input content * example.html — (optional) pre-rendered preview, shown inline in the picker
選択パイプライン(CLI側)は3段階のファネルです。キーワードの一致シグナル(1単語ヒットにつき2点、しきい値3)→ tags/scenario によるスコアリングへのフォールバック → それでも判定できない場合はユーザーコンテンツの先頭800文字をローカル agent に渡し、1文で分類させます。
const CONFIDENCE_THRESHOLD = 3;
プレビューパイプラインは生成から独立しています。/api/templates/<id>/preview は example.html をそのまま text/html として iframe に返し、フロントエンドの iframe は sandbox="allow-scripts allow-same-origin" を使用します。
sandbox="allow-scripts allow-same-origin"
テンプレートの核心は「固定の9セクションレポート骨格 + 4択の裁定」です。任意の実験素材を強制的に Header → Hypothesis → Setup → Result snapshot → Metric table → Interpretation → Decision → Follow-up → Instrumentation notes のパイプラインに通し、最終的に Ship / iterate / extend / stop のいずれかに着地させます。
【必须输出的结构】 1. Header: 实验名称、owner、日期、实验状态、decision。 2. Hypothesis: 原始假设, 必须改写成可验证句式。 3. Setup: audience、variant、duration、sample size、primary metric、guardrail metrics。 4. Result snapshot: primary metric lift、absolute delta、sample、confidence / caveat。 5. Metric table: Control vs Variant, primary + secondary + guardrail。 6. Interpretation: 解释结果为什么发生, 区分 signal、noise、unknown。 7. Decision: Ship / iterate / extend / stop 四选一, 并给理由。 8. Follow-up experiments: 2-4 个下一步实验, 每个包含 hypothesis、expected impact、effort。 9. Instrumentation notes: 数据缺口、埋点问题、样本偏差。
単に「データを提示する」という目的を明示的に拒否しています。意図セクションでは、この実験が何を物語っているか、次のステップとしてリリース/停止/継続/再設計のどれを行うべきかという「判断」に焦点を当てています。
【意图】这不是普通数据报告、不是 dashboard。目标是回答: "这个实验说明了什么, 我们下一步应该上线、停止、继续跑, 还是重新设计?"
データ捏造防止条項がテンプレート本文に明記されています。ユーザーが提供したデータのみを使用し、p-value / confidence / サンプルサイズの捏造を厳禁としています。
- 只使用用户提供的数据。不要捏造 p-value、confidence、样本量。
ファーストビューの情報階層が指定されています。「大型の decision badge と primary metric delta」を必須とし、読者が3秒以内に裁定と主要指標の変化を把握できるようにします。
- 首屏必须有大号 decision badge 和 primary metric delta。
3系統のスタイルアセットを排他的に分岐します。product-readout(デフォルト)/ lab-notebook(研究向け、不確実性を保持)/ growth-console(グロース、ファネル、リアルタイム)があり、それぞれの使用条件と「3種を混在させない」ルールが規定されています。
根据实验语境选择一种, 不要三种混用:
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Tailwind Play CDN(共享指令强制;示例页与三份资产页均实际引用) |
| network | Google Fonts(Inter / Noto Sans SC,示例页实际引用) |
| package | Chart.js(SKILL.md 允许的可选图表库;示例页未使用) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストであり、スクリプトの実行や外部への影響はありません。
5二重目の独立検証
- [ok] 运行时机制(loader→assemblePrompt→agent CLI→捕获 stdout) — 重读 next/src/lib/templates/shared.ts / next/src/app/api/convert/route.ts:拼装顺序与 /api/convert 调用点逐字复核,与第一遍一致。
- [ok] 『固定 9 段结构』宣称 — 重读 SKILL.md 结构段,9 段编号与名称与 JSON 引用一致,无夸大。
- [ok] 外部资源条目(tailwind / Google Fonts) — 在 assets/product-readout.html 命中 <script src="https://cdn.tailwindcss.com">、<link href="https://fonts.googleapis.com/css2?family=Inter…">,调用点真实存在。
- [discrepancy] 『assets/ 三风格可选』可执行性 — SKILL.md 指示参考 assets/,但全仓 grep 显示 product-readout.html / lab-notebook.html / growth-console.html 仅被该 SKILL.md 自身引用;loader.ts 的 loadSkillFromDir 只读 SKILL.md / example.md / example.html。结论:生成时模型看不到这三份资产,指令为死引用。
- [ok] 安全面(脚本/网络/凭证/写盘) — 对 skill 目录做 token 扫描(script/fetch/XMLHttpRequest/API key/process.env/child_process/eval/curl/wget/.env/localStorage/download=)零命中;示例页唯一 <script> 是 Tailwind CDN 标签,无自写 JS。
- [ok] meta 元数据(stars / last_push / license) — GitHub API 实查 owner_repo=nexu-io/html-anything:stargazers_count=8827、pushed_at=2026-09-15T03:36:24Z、license.spdx_id=Apache-2.0,与仓库根 LICENSE(Apache License 2.0)一致。
- [unlocatable] 安装量 — 无公开安装量数据源(README/GitHub API 均无),meta.installs 置 null,不硬写。
6結論
f9361c33db600ac8…