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,
生成時、テンプレート本文はプロンプトの本文として扱われます。/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, {
本文は【レイアウト】リストを用いてページを4つのブロックに固定しています:四半期バナー、3つの目標カラム(各カラムにKRのセット)、各KRの進捗バー+数値+オーナー+ステータスピル、右カラムのサマリーです。
- 3 个 objectives 列, 每个含一组 KR
サンプルは仕様を忠実に反映し、3値状態マシンを備えた静的ダッシュボードとして実装されています。KR行には進捗バーとオーナーアバターがあり、ステータスピルには on-track / at-risk / off-track の3色のスキームが適用されています。
<span class="pill on-track"><span class="dot"></span>On track</span>
サンプルは外部リンクを一切含まない静的ファイルです。<script> タグはなく、head に CDN やフォントのリンクも存在せず、フォントはシステムフォントスタックを使用しているため、ダブルクリックでオフライン表示可能です。
--display: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
CLI側にはキーワードによる直接マッチング機能が存在します。skills-matcher.ts がユーザーコンテンツ内のキーワードを本テンプレート id に直接マッピングし、一致した場合は confidence=一致数×2+3 を付与します。閾値の 3 に達した場合はローカルルールが適用され、モデルによるテンプレート選択はスキップされます。
[["OKR", "KR", "关键结果", "objectives", "季度目标", "key results"], "team-okrs"],
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コア機能
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルール定義テキストのみで構成され、スクリプト実行や外部への副作用は一切なし
5二重目の独立検証
- [ok] skill 目录文件清单 — find 只有 SKILL.md + example.html,无 scripts/references/模板/数据文件。
- [ok] external_deps 为空 — 对两文件 grep 'https?://' 零命中;head 无 <link>、无 <script src>。
- [ok] 无脚本执行 — grep -c "<script" example.html = 0;SKILL.md 无任何命令行/脚本指令。
- [ok] frontmatter 字段与 loader 白名单对齐 — name/zh_name/en_name/emoji/description/category/scenario/aspect_hint/tags 全在 SkillFrontmatter 类型内,可被 parseFrontmatter 正确解析。
- [ok] 「3 个 objectives」与示例一致 — 示例 meta 行自述 3 objectives · 9 key results,页面含 9 条 KR(.kr 计数 9)。
- [ok] CLI 匹配器路由 — cli/src/skills-matcher.ts 存在 [["OKR", "KR", "关键结果", "objectives", "季度目标", "key results"], "team-okrs"] 行;测试 skills-matcher.test.ts 断言匹配到 team-okrs。
- [ok] 判级 green 自证 — 目录零脚本/零凭证/零写盘、无端点;宿主壳的 Tailwind/字体注入与 iframe sandbox 均写在 reason 说明中,不计档。
- [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文「季度 banner + 3 个目标 + KR 进度条 + owner + 状态 pill」。
6結論
fe13926b690c2c2a…