1仕組みと動作原理
この skill は実行可能プログラムではなく、ローカルの coding-agent CLI に注入されるプロンプトです。ホストが SKILL.md の本文を取得し、前にサイト共通のデザイン指示、後ろにユーザーコンテンツを結合して1つのプロンプトを作成し、ログイン済み agent に渡して、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"
キャンバスはこのテンプレート最大の特徴です。2.39:1 レターボックス(1920×800、上下に各 140px の黒帯)を推奨し、フルフレームの 16:9(1920×1080)もサポートします。
aspect_hint: "2.39:1 letterbox (1920×800) 或 16:9 (1920×1080)"
フィルムの光線漏れは、2〜3個の大きな radial-gradient 楕円 + 下部の1本の linear-gradient を重ねて作成され、色相はウォームオレンジ/ピーチ/ローズレッド/ダークイエローに制限され、「冷たい青は禁止」と明記されています。フィルターではなく色温度によってフィルム感を演出します。
- **胶片漏光 (Light Leak)**: 2-3 个大 `radial-gradient(ellipse at top right, #ffb547 0%, transparent 50%)` + 1 个底部 `linear-gradient(to top, #d97757 0%, transparent 30%)`; 颜色取暖橙 / 桃 / 玫红 / 暗黄, **不要冷蓝**。
粒子ノイズは全画面の SVG turbulence noise(opacity 14%、mix-blend-mode overlay)で実装され、data-URI 版の feTurbulence 記述も提供されます。フィルムの揺れをシミュレートする任意の feDisplacementMap も用意されています(慎重に使用するよう注記あり)。
- **35mm Grain**: 全屏覆盖 SVG turbulence noise 图层, opacity 14%, `mix-blend-mode: overlay`; 也可用 `background-image: url("data:image/svg+xml,...feTurbulence...")`。
フィルムの物理ディテールを補完: フィルムの傷(1〜2px の垂直の白い線、不規則な間隔)とパーフォレーション(レターボックス黒帯内に repeating-linear-gradient で描画される等間隔の小さな白四角)。
example_desc: "2.39:1 letterbox + 衬线斜体大字 + 胶片齿孔"
タイポグラフィと色数の双方向の制約: セリフ体大見出し(Source Serif Pro / Playfair / EB Garamond)を 5〜8vw italic + ウォームホワイトで使用。色数は絶対に4色相以内。中国語は Noto Serif SC に italic がないため、regular + 文字間隔拡大で代替します。
- 中文: `Noto Serif SC` italic 不存在 → 用 `Noto Serif SC` regular + 字距加大。
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Google Fonts(EB Garamond / Source Serif Pro / IBM Plex Mono / Noto Serif SC,示例页实际引用) |
| network | Tailwind Play CDN(共享指令强制;示例页亦引用) |
| network | hyperframes 目录页(frontmatter 出处标注,非运行时请求) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストであり、スクリプト実行や外部への影響はありません
5二重目の独立検証
- [ok] 画布/漏光/颗粒规格 — 重读 SKILL.md【画布】【背景】【文字】三段,逐字复核 2.39:1、140px、opacity 14%、overlay 等数值。
- [ok] 『不要冷蓝』约束 — SKILL.md 原文:颜色取暖橙 / 桃 / 玫红 / 暗黄, **不要冷蓝**。与 JSON 引用一致。
- [ok] 『无外链图片』结论 — 示例页 URL 扫描仅命中 fonts.googleapis.com 与 cdn.tailwindcss.com,无图片资源域;颗粒为 data-URI SVG。
- [ok] 中文 italic 处理 — SKILL.md 原文:中文: `Noto Serif SC` italic 不存在 → 用 `Noto Serif SC` regular + 字距加大。,引用逐字通过。
- [ok] 安全面 — 目录内 3 个文件无自写脚本、无凭证、无写盘、无表单外发。
- [ok] meta 元数据 — GitHub API 实查 stars=8827、pushed_at=2026-09-15T03:36:24Z、license Apache-2.0。
- [unlocatable] 安装量 — 无公开安装量数据源,installs=null。
6結論
b36d67728ab9f7bb…