1仕組みと動作原理
本スキルは実行可能プログラムではなく、ローカルの coding-agent CLI に注入されるプロンプトです。ホストが SKILL.md 本文を取得し、先頭にサイト共通のデザイン指示を付加し、末尾にユーザーコンテンツを結合して1つのプロンプトを作成します。これをログイン済みエージェントに渡し、エージェントの stdout を HTML として取得します。
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
共通指示レイヤー(個別のスキルには属さず、全テンプレートを統括)は出力を「自己完結型単一ファイルHTML」に固定し、エージェントによる Write/Edit/Bash などのファイルシステムツールの使用を明示的に禁止して、HTML を対話本文として直接ストリーミング出力させます。
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
SKILL.md の外側に「コンテンツ駆動数量」のオーバーライドルールが存在します。テンプレートに記載されたページ数、フレーム数、カード数はすべて参考下限値と見なされ、実際の数量はユーザーコンテンツによって決定されます。これにより、エージェントがテンプレートの数値に合わせてユーザーコンテンツを圧縮するのを防ぎます。
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
ロード規約は「1スキル = 1ディレクトリ」です。SKILL.md(セレクター用YAMLフロントマター + プロンプトテンプレート本文)、任意の 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文字をローカルエージェントに渡し、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"
テンプレートはプロセスを「ホワイトボード + 付箋」として描画します。1920×1080のキャンバスにベージュのホワイトボード紙 #f4ede1 または冷灰色のホワイトボード #f0f2f4 の下地を敷き、ごく薄い hex grid(rgba(0,0,0,0.04))を重ねてホワイトボードの質感を演出します。
【画布】1920×1080。背景: 米黄白板纸 `#f4ede1` 或冷灰白板 `#f0f2f4`; 加非常浅的 hex grid `rgba(0,0,0,0.04)` 让它有白板感。
ノード仕様は詳細に固定されています。240×180pxの付箋、4色ランダム(黄 #fcd34d / 桃 #fca5a5 / ミント #a7f3d0 / スカイ #a5b4fc)、±2degの微小な回転、drop-shadow、上部のマスキングテープ風 linear-gradient 装飾、手書き風フォント(Kalam/Caveat/Patrick Hand、中国語は霞鹜文楷)。
- 每节点 = 一张 240×180px 便利贴, 4 套颜色随机分配: 黄 `#fcd34d` / 桃 `#fca5a5` / 薄荷 `#a7f3d0` / 天 `#a5b4fc`。
接続線には SVG Bezier パスを使用します。stroke #2a2a2a、線幅 2.5、丸型端点。実線はシーケンス、stroke-dasharray 8 6 は条件分岐を表し、矢印には marker-end の黒い三角形を使用します。また、分岐(1つのノードから2本)および合流(2本が1つのノードへ)の描画方法も明確に規定されています。
- 用 `<path>` Bezier 曲线连接节点, stroke `#2a2a2a`, width 2.5, `stroke-linecap: round`, `stroke-dasharray: 0` (实线) 或 `8 6` (虚线 = 条件分支)。 - 箭头终端用 `marker-end`, 黑色三角小箭头。
ホワイトボード感はあえて「不揃い」にすることで演出します。ノードの配置は中央揃えを求めませんが、接続線が交差せず明確であることを保証します。また、ノードの横に浮かぶFigma風のコラボレーションカーソル(SVG矢印 + ネームタグ)を追加可能です。
- 一个"光标"装饰 (`<svg>` arrow + name tag), 浮在某节点旁, 模拟 figma 协作光标。
ノード数には範囲制約(最小5個、最大12個)があり、コンテンツはユーザーの実際のプロセスに基づく必要があります。ノードのテキストにはユーザー入力を直接使用します。
- 至少 5 个节点, 最多 12 个。
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Google Fonts(Caveat / Patrick Hand / Inter / IBM Plex Mono,示例页实际引用) |
| network | Tailwind Play CDN(共享指令强制;示例页亦引用) |
| network | hyperframes 目录页(frontmatter 出处标注,非运行时请求) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストのみであり、スクリプト実行や外部への副作用は存在しない。
5二重目の独立検証
- [ok] 节点/连线/交互规格 — 重读 SKILL.md【节点】【连接线】【可选交互】三段,引用逐字一致(含 240×180px、±2deg、stroke-dasharray 8 6)。
- [ok] 『不要外部图标库』结论 — SKILL.md 明写『单文件 HTML, 不要外部图标库 (用 inline SVG)』;示例页除 Tailwind/字体外无第三方资源引用。
- [ok] 节点数区间与共享指令是否冲突 — 共享指令规定模板数字是参考下限、数量由内容决定;本模板的 5-12 是可读性范围,二者不冲突(已在 traits 说明)。
- [ok] 外部端点存在性 — example.html 实测命中 fonts.googleapis.com 与 cdn.tailwindcss.com;hyperframes 链接仅在 frontmatter。
- [ok] 安全面 — 目录内 3 个文件无自写脚本、无 fetch/表单外发、无凭证读取、无写盘。
- [ok] meta 元数据 — GitHub API 实查 stars=8827、pushed_at=2026-09-15T03:36:24Z、license Apache-2.0。
- [unlocatable] 安装量 — 无公开安装量数据源,installs=null。
6結論
7a10e7dfc2816a51…