1仕組みと動作原理
本スキルは実行可能プログラムではなく、html-anything の「テンプレート」です。1 つのディレクトリ(SKILL.md + example.html[/example.md])として構成され、ランタイム時に loader.ts がディスクを走査して読み込みます。新規テンプレートの追加はディレクトリの追加のみで完結し、TypeScript の変更は不要です。
Adding a template = adding a folder. No TS code change required; the API
frontmatter はセレクター/API 向けのメタデータ(zh_name/en_name/emoji/description/category/scenario/aspect_hint/featured/recommended/tags)であり、fmToMeta() によって SkillMeta にマッピングされます。frontmatter 以降の本文がモデルに与えられる仕様となります。
zhName: fm.zh_name ?? fm.name ?? id,
生成時、このテンプレート本文はプロンプトの本文として扱われます。/api/convert が assemblePrompt() を使用して「グローバルデザイン指示 + 本テンプレート本文 + ユーザーコンテンツ」を 1 つのプロンプトに結合し、ホストのローカル agent CLI に渡して HTML を stdout 経由でストリーミング取得します。
prompt = assemblePrompt({ body: skill.body, content, format });
テンプレート本文の前にはグローバル共通指示(SHARED_DESIGN_DIRECTIVES)が付与され、技術およびコンテンツの規律が各テンプレートの前に統一的に適用されます。サンプル HTML で広く見られる CDN やフォントの外部リンクはこれに起因します(ホストシェルによる注入であり、テンプレート自体の要件ではありません)。
通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。
生成物は stdout のテキストとして返却されます。グローバル指示によりエージェントによるファイルシステム操作は明示的に禁止されており、ディスクへの書き込みはフロントエンドが担当します。したがって、テンプレートディレクトリにはスクリプトもディスク書き込み能力も存在しません。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
example.html はパッケージに同梱された事前レンダリング済みのサンプルです。/api/templates/<id>/preview は iframe(セレクター内インラインプレビュー用)に text/html としてそのまま返却し、/api/templates/<id>/example は example.md と example.html をセットで返却します。
return new Response(skill.exampleHtml, {
本文では「手描きワイヤーフレーム」を、方眼紙(graph-paper)背景、マルチタブのバリアントラベル、落書き風(scribble)チャートのプレースホルダー + 斜線ハッチング塗り、わずかに回転した黄色の付箋(sticky note)の 4 要素として定義しています。
- Graph-paper 背景
方眼紙(graph-paper)背景は、画像テクスチャを使用せず、2 組の repeating-linear-gradient の重ね合わせ(24px グリッド)によって実現されています。
repeating-linear-gradient(0deg, var(--grid) 0 1px, transparent 1px 24px),
「几帳面に整列させない」という方針は、多数の微小な回転として数値化されています。タグの rotate(-2.2deg)、タブの rotate(-0.4deg)、付箋の rotate(2.4deg)/(-3.2deg)、各 KPI カードの傾き(tilt)などです。
.sticky.sn1 { top: 20px; right: 30px; background: var(--note-yellow); transform: rotate(2.4deg); }
手書きフォントは、サンプル内では Caveat + Patrick Hand の組み合わせ(および DM Serif Display / IBM Plex Mono)として実装されており、本文で指定されている Architects Daughter は使用されていません。
--hand-bold: 'Caveat', 'Patrick Hand', cursive;
チャートのプレースホルダーはインライン SVG の「落書き」パス(.panel svg.scribble)を採用しており、グローバル指示の「CSS / SVG インライン描画を優先」に準拠しています。
.panel svg.scribble { width: 100%; height: 160px; display: block; }
CLI 側にはキーワード直接マッチングのルートも存在します。skills-matcher.ts がユーザーコンテンツ内のキーワードを該当テンプレート ID に直接マッピングし、ヒット時に confidence = ヒット数 × 2 + 3 を付与します。閾値 3 に達した場合はローカルルールが適用され、モデルによるテンプレート選択はスキップされます。
[["原型", "prototype", "线框", "wireframe", "mockup", "低保真", "sketch", "手绘"], "prototype-web"],
CLI のフォールバックマッチングで使用される閾値定数:コンテンツ長が 60 文字を超えている場合のみ AI 要約マッチングが有効化されます。強シグナルの閾値は 3 です。
const MIN_CONTENT_LENGTH_FOR_AI = 60;
ホストシェルは sandbox="allow-scripts allow-same-origin" を設定した iframe を使用してサンプル/生成物をレンダリングします(スクリプト実行および同一オリジンを許可)。これは製品シェルの仕様上のトレードオフであり、リスクとして記載されていますが、本スキルの評価判定には影響しません。
sandbox="allow-scripts allow-same-origin"
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Google Fonts(Caveat / Patrick Hand / DM Serif Display / IBM Plex Mono) |
| network | Google Fonts 静态资源域(preconnect) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストであり、スクリプト実行や外部影響は一切なし
5二重目の独立検証
- [ok] skill 目录文件清单 — find 得 SKILL.md + example.html,无 scripts/references。
- [ok] 无脚本执行 — grep -c "<script" example.html = 0;SKILL.md 无脚本指令。
- [ok] 外部端点仅字体 — example.html 仅 fonts.googleapis.com css2 与 fonts.gstatic.com preconnect;SKILL.md 正文无 URL。
- [discrepancy] 正文字体 vs 示例字体 — SKILL.md 写「字体: Caveat / Architects Daughter」,example.html 实际加载 Caveat + Patrick Hand(--hand: 'Patrick Hand', 'Caveat' / --hand-bold 反之),未出现 Architects Daughter。
- [discrepancy] CLI 强信号是否覆盖本模板 — cli/src/skills-matcher.ts 中 wireframe/线框/sketch/手绘 的关键词行映射到 "prototype-web"(第 35 行),全套 STRONG_SIGNALS 无 wireframe-sketch 行;本模板仅能通过 fallbackMatch(tags 命中 +3/条)或手选命中。
- [ok] graph-paper 与 sticky note 是否落地 — 两处 repeating-linear-gradient(…1px 24px) 构成网格;.sticky.sn1/sn2 用 --note-yellow/--note-pink 并带 rotate(2.4deg)/(-3.2deg)。
- [ok] 判级 green 自证 — 目录零脚本文件、零凭证、零写盘;正文无运行时接口,端点仅见示例 → green。
- [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文「网格背景 + marker 笔触 + 多 tab + sticky note + scribble 图表」。
6結論
40e72150a36c51da…