1仕組みと動作原理
テンプレート本体には実行可能コードが含まれていません。loaderはsrc/lib/templates/skills/<id>/SKILL.mdからfrontmatterと本文を読み込み、本文(body)をexampleの内容とともにLoadedSkillとして返します。
const raw = safeRead(path.join(dir, "SKILL.md"));
プロンプトは送信前にホスト側で組み立てられます。テンプレート本文は共有デザイン指示(SHARED_DESIGN_DIRECTIVES)と【入力フォーマット】/【ユーザーコンテンツ】の間に挟まれます。
Wrap a per-template instruction body with the shared design directives and
共有指示はハード制約をエージェントへの明示的な禁止事項として定義し、コンテンツ駆動による数量決定を強制します(テンプレート内の数値は参考下限値に過ぎません)。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
実際に実行されるのは、ユーザーのローカル環境にインストールされログイン済みのコーディングエージェントCLIです。ホストが子プロセスをspawnし、プロンプトを渡してstdoutからHTMLをストリーミング取得します。
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
/api/convertはテンプレートの実行パスです。skill.bodyとユーザーコンテンツをプロンプトに組み上げ、invokeAgentに渡します。
prompt = assemblePrompt({ body: skill.body, content, format });
テンプレートは成果物内でCDNチャートライブラリを用いたレンダリングを要求します。2つ以上のチャート(棒/折れ線/円/散布図)にChart.jsまたはEChartsを用い、jsdelivr CDN経由で読み込み、ユーザー入力からデータを解析します。
- 主图表区: 至少 2 个图表 (柱状 / 折线 / 饼 / 散点), 使用 Chart.js 或 ECharts (jsdelivr CDN 引入), 数据从用户输入解析得到。
テンプレートは具体的なクラッシュ事象を予見し解決策を提示しています。Chart.jsでresponsiveおよびmaintainAspectRatio:falseを設定した際、親コンテナに明示的な高さがないとResizeObserverの無限ループに陥るため、canvasの外側を固定高コンテナでラップする必要があります。
**图表容器必须有固定高度**
データの信憑性が最優先事項として規定されています。ユーザーが提供した実際のデータを解析し、決して捏造してはなりません。
- **必须解析用户提供的实际数据**, 不要捏造。
レポートはさらに4種類の補助的要素を規定しています。ヘッダー(タイトル+対象期間+データソース)、KPIカード(数値+前年比+ミニトレンドライン)、データテーブル(ストライプ/ホバー/固定ヘッダー)、インサイトブロック(絵文字始まりの3〜5項目)、下部の折りたたみ式メソドロジーエリアです。
- KPI 卡片网格: 3-5 个最重要指标, 每个卡片显示数值 + 同比变化 + 微型趋势线。
サンプルではデータをインライン配列として保持し、成果物内スクリプトでテーブルとチャートをレンダリングすることで、ユーザーデータからDOM構造への完全な変換パスを示しています。
{month:'2024-09', mau:8420, signups:1240, paying:612, churn:0.034},
チャートコンテナの高さ制約はサンプル内で忠実に再現されています(ミニチャート40px、メインチャート260px)。
<div class="mt-3" style="position:relative;height:40px"><canvas id="kpi1"></canvas></div>
2コア機能
4推奨統制措置と判定根拠
- SKILL.md: プロンプト指示および規則テキストのみで構成され、スクリプト実行や外部への副作用は一切ありません。
5二重目の独立検証
- [ok] 图表容器高度规范 vs 示例实现 — SKILL.md 要求 canvas 外层包固定高度 div(KPI ~40px、主图 240–280px)且禁止给 canvas 写 height 属性;示例全部命中(40px×4、260px×2,canvas 无 height 属性)。
- [ok] 数据一致性(产物 ↔ 示例输入) — example.html 的 data 数组与 example.md 的 CSV 9 行数值一一对应(如 2025-05: mau 23950 / signups 4250 / paying 2418 / churn 0.018),证明解析用户数据的执行路径可复现。
- [ok] 端点性质(产物期 vs 执行期) — SKILL.md:22 逐字命中「使用 Chart.js 或 ECharts (jsdelivr CDN 引入)」;example.html:7 为 [email protected] 的 jsdelivr 链接。库由浏览器加载产物时取用,属产物期引用(批4 终版口径不判级),故维持 green;端点已列入 security.reason 与 verdict.risks。
- [ok] 「至少 2 个图表」是否达标 — 示例有 chart-main(柱状覆盖双轴折线)与 chart-churn(折线)两张主图,另有 4 条 KPI 迷你趋势线,超过最低要求;图表类型在 SKILL.md 列出的柱状/折线范围内。
- [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結論
decfcd8af87ff5e9…