1仕組みと動作原理
本スキルは実行可能プログラムではなく、html-anythingの「テンプレート」です。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,
生成時、本テンプレート本文はプロンプトのbodyとして扱われます。/api/convertがassemblePrompt()を用いて「グローバルデザイン指示 + 本テンプレート本文 + ユーザーコンテンツ」を1つのプロンプトに結合し、ホスト環境のローカルagent CLIに引き渡してstdoutからHTML出力をストリーミング取得します。
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, {
本文の【レイアウト】指示により、ランディングページは「中央配置の1カラム」4段構成に定義されています(ブランドロゴ+タグライン+大文字ヒーロー、メール入力欄と送信ボタンが統合されたピル型UI、3つの特徴・メリット、フッターのファウンダーズノート+SNSリンク)。
- 邮箱捕获 input + submit 按钮 (合并成一个 pill)
装飾レイヤーはインラインSVG/CSSで実装されています(グラデーションメッシュ、ノイズテクスチャ、星の軌跡)。さらに、送信成功時のマイクロインタラクション(✓ + テキスト変化)が要求されています。
- 装饰: SVG 渐变 mesh / 噪点纹理 / 一颗星轨
サンプルのメール登録機能は純粋なフロントエンドデモです。submitイベントでpreventDefaultを実行し、バリデーション通過後にフォームを非表示にして成功メッセージに.visibleを付与するのみで、バックエンドへの送信は一切行われません。
this.style.display = 'none';
成功状態は実在するDOM構造(role="status"属性付きの段落 + .visibleクラス)であり、モデルがアドリブで追加したテキストではありません。
<p class="success-msg" id="success-msg" role="status">You're on the list! We'll be in touch.</p>
CLI側にはキーワード直接マッチングルートが存在します。skills-matcher.tsがユーザーコンテンツ内のキーワードを本テンプレートIDに直接マッピングし、ヒット時にconfidence=ヒット数×2+3を付与します。しきい値3に達した場合はローカルルールが適用され、モデルによるテンプレート選択はスキップされます。
[["等候", "waitlist", "预发布", "coming soon", "即将上线", "预约"], "waitlist-page"],
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(Syne / DM Sans) |
| network | Google Fonts 静态资源域(preconnect) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストのみで構成されており、スクリプト実行や外部影響は一切ありません
5二重目の独立検証
- [ok] skill 目录文件清单 — find 得 SKILL.md + example.html,无 scripts/references。
- [ok] 外部端点仅字体(示例侧) — SKILL.md 正文无 URL;example.html 仅 fonts.googleapis.com 的 css2 link 与 fonts.gstatic.com preconnect(另有产品壳注入的 Tailwind)。
- [ok] 「邮箱捕获」是否真的外发数据 — 示例脚本只 preventDefault + 切成功态,无 fetch/XHR/action 属性;判定为纯前端演示,已在 verdict.risks 写明「不采集数据」。
- [ok] 成功微动效是否落地 — 存在 .success-msg 与 .success-msg.visible 两态样式 + role="status" 段落 + 脚本切换,与正文「成功提交后给一个微动效 (✓ + 文案变化)」对应。
- [ok] 装饰图层是否为内联 SVG — 示例含 logo-svg / coil-row / grid-svg 三个内联 <svg>(含 xmlns="http://www.w3.org/2000/svg"),无外链图片。
- [ok] CLI 匹配器路由 — cli/src/skills-matcher.ts 存在 [["等候", "waitlist", "预发布", "coming soon", "即将上线", "预约"], "waitlist-page"] 行。
- [ok] 判级 green 自证 — 目录零脚本文件(示例内联 JS 属产物示例)、零凭证、零写盘;SKILL.md 未点名运行时接口 → green。
- [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文。
6結論
f44cc710d83cf149…