1仕組みと動作原理
本skillは実行可能プログラムではなく、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,
生成時、本テンプレート本文はプロンプト本文として扱われます。/api/convertがassemblePrompt()を用いて「グローバルデザイン指示+本テンプレート本文+ユーザーコンテンツ」を1つのプロンプトに結合し、ホスト側のローカルagent CLIに渡して、HTMLをstdoutストリーミングからキャプチャします。
prompt = assemblePrompt({ body: skill.body, content, format });
テンプレート本文の前にはグローバル共通指示(SHARED_DESIGN_DIRECTIVES)が付与され、技術およびコンテンツの規律がすべてのテンプレートに一律適用されます。サンプルHTMLに見られるCDNやWebフォントの外部リンクはここに由来します(ホストシェルによる注入であり、テンプレート自体の要求ではありません)。
通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。
生成物はstdoutテキストとして返却されます。グローバル指示によりエージェントによるファイルシステム操作は明示的に禁止されており、ディスクへの保存はフロントエンドが担当します。そのため、テンプレートディレクトリにはスクリプトもディスク書き込み能力も存在しません。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
example.htmlはパッケージ同梱の事前レンダリングサンプルです。/api/templates/<id>/previewはtext/htmlとしてそのままiframe(セレクター内のインラインプレビュー)に返し、/api/templates/<id>/exampleはexample.mdとexample.htmlをセットで返します。
return new Response(skill.exampleHtml, {
本文では「アニメーション演出」が検証可能な時系列仕様として定義されています。1文字あたり80msでの順次表示、現在文字に追従するカーソルブロック、およびrevealの瞬間に発生して200ms以内に収束するchromatic ghostなどです。
- 逐字揭示, 每个字符 80ms 间隔; 当前字符后面跟着一个 cursor `▍` (或细 vertical bar)。
光斑や光線はビットマップではなくCSSで合成されます。細長い矩形のlinear-gradientとmix-blend-mode: screenを組み合わせ、不規則な角度でランダムに3〜5本配置されます。
- 在打字位置附近随机生成 3-5 道**定向光斑** (light leak)
「避けるべきこと」を明確にしたネガティブ制約:ホットピンク+シアンの2色による色収差のみを使用し、R/G/Bのフルカラーレインボーを禁止し、セリフフォントを厳格に禁止します。
- **绝不**: 多色彩虹 chromatic (只用 1 个 hot pink + cyan 这种二元像散, 不要 R/G/B 全色)。
アクセシビリティと素材の真正性が本文に明記されています。アニメーションはprefers-reduced-motionで無効化(すべてのテキストを即時表示)できなければならず、またユーザーから提供された名言を必ず使用し、捏造してはなりません。
- 必须用用户提供的金句; 不要捏造。
サンプルHTMLは「静止した1フレーム」のみを再現しています。カーソルブロックはCSSのblinkアニメーションで点滅し、chromaticはテキスト全体に対する静的なtext-shadowであり、3本の.rayは固定角度です。順次表示を行うJSタイマー、shimmer、prefers-reduced-motionへのフォールバックは実装されていません。
animation: blink 1s steps(1) infinite;
CLI側にはキーワードによる直接マッチング経路が存在します。skills-matcher.tsがユーザーコンテンツ内のキーワードを本テンプレートidに直接マッピングし、一致した場合はconfidence=ヒット数×2+3を付与します。しきい値3に達するとローカルルールが適用され、モデルによるテンプレート選択はスキップされます。
[["VFX", "特效", "光标", "cursor", "chromatic", "reveal"], "vfx-text-cursor"],
CLIのフォールバックマッチングで使用されるしきい値定数:AIによる要約マッチングを有効にするにはコンテンツ長が60文字を超えている必要があり、強シグナルのしきい値は3です。
const MIN_CONTENT_LENGTH_FOR_AI = 60;
ホストシェルはsandbox="allow-scripts allow-same-origin"を指定したiframeを使用してサンプルや成果物をレンダリングします(スクリプトおよび同一オリジンアクセスを許可)。これは製品シェルの設計判断であり、リスクとして記載されますが、本skillの判定には影響しません。
sandbox="allow-scripts allow-same-origin"
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Tailwind CDN(示例 HTML 引用) |
| network | Google Fonts(Inter Tight / Noto Sans SC / JetBrains Mono) |
| network | 示例来源标注(frontmatter 元数据,非运行依赖) |
4推奨統制措置と判定根拠
- SKILL.md: プロンプト指示およびルールテキストのみで構成され、スクリプト実行や外部への副作用は一切なし
5二重目の独立検証
- [ok] skill 目录文件清单 — find 得 SKILL.md + example.html + example.md,无 scripts/references。
- [ok] 外部端点只出现在示例/元数据 — SKILL.md 正文无 URL;两个 URL 分别位于 frontmatter example_source_url(元数据)与 example.html 的 Tailwind CDN / Google Fonts link。
- [discrepancy] 逐字揭示/计时器是否在示例中实现 — SKILL.md 写明「@keyframes + JS 计时器 (setTimeout 逐字)」与 0.5s shimmer、reduced-motion 降级;example.html 只有 CSS blink 光标 + 静态 text-shadow,grep 无 setTimeout / prefers-reduced-motion / shimmer,属示例未实现正文声明的动效(示例是静帧预览)。
- [discrepancy] 「不要外链字体以外的资源」是否被示例遵守 — 正文禁非字体外链,但 example.html 引入 https://cdn.tailwindcss.com 脚本;该 Tailwind 要求实为宿主全局指令(shared.ts)强制,说明模板正文与宿主壳在此点冲突。
- [discrepancy] chromatic 只在 reveal 瞬间 vs 示例静态 — 正文要求像散在 reveal 瞬间出现并 200ms 内收敛;示例 .chroma 是整段 h1 的静态 text-shadow。
- [ok] CLI 匹配器路由 — cli/src/skills-matcher.ts 存在 [["VFX", "特效", "光标", "cursor", "chromatic", "reveal"], "vfx-text-cursor"] 行。
- [ok] 判级 green 自证 — 目录零脚本文件、零凭证、零写盘;正文未点名运行时接口,端点仅见示例与 frontmatter 元数据 → green。
- [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文。
6結論
315c18b1b92b614f…