1仕組みと動作原理
本 skill は html-anything の「テンプレートパッケージ」です:frontmatter はセレクターがメタデータを取得するために使用され、SKILL.md 本文(frontmatter 以降の body)は loader によってそのまま読み込まれ、モデルへの指示として渡されます。
const { fm, body } = parseFrontmatter(raw);
実際にモデルへ入力される prompt = 共通設計指示 + 本テンプレート本文 + 【入力形式】+【ユーザーコンテンツ】;共通指示には、テンプレート内のスライド数やレイアウト数値が上限ではないことを明記した上書きルールが含まれます。
return `${SHARED_DESIGN_DIRECTIVES} ${opts.body.trim()}
生成規約は共通指示によって厳格に制限:agent によるあらゆるファイルシステムツールの使用を禁止し、HTML は必ず stdout テキストとしてストリーミング出力され、フロントエンド側でディスクに保存されます。
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何
発表者サポートは「各スライドの aside.notes」によって実現:本文では各スライドに 150〜300 文字の原稿(スクリプト)を添付することを要求し、アプリケーション側の deck.ts が aside.notes を抽出してノートパネルに配置し、スライド本体からは削除します。
notes = stripTags(inner);
テレプロンプターのポップアップはキーボードショートカットで操作:T でテーマ切り替え、S でポップアップ表示。ポップアップ内には CURRENT / NEXT / SCRIPT / TIMER の 4 枚のカードが含まれます。
- 右下小 toolbar: T 切主题 / S 打开 popup
テーマ機能は「1 デフォルト + 5 種類切り替え可能」:デフォルトは tokyo-night、T キーで順次切り替え(ライトテーマ 1 種を含む)。
- 默认 tokyo-night; 共 5 套主题 (含 light)
スライドコンテナはリポジトリ全体の deck 規約に準拠:example.html の section は slide を含む class を持ち、8 箇所の aside.notes を備え、deck.ts によりページごとにパースされて原稿が抽出されます。
const SLIDE_RE =
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | 宿主本机 agent CLI(由应用侧 spawn;非本 skill 指令) |
| network | Google Fonts(产物示例引用,非 skill 正文要求) |
| network | 产物样例正文里的第三方出处文本(非调用) |
4推奨統制措置と判定根拠
- 网络端点: 外部ネットワークアクセスの宣言: example.html 内に複数の Google Fonts @import(fonts.googleapis.com)が存在;成果物のレンダリング時にブラウザによって取得されます。
5二重目の独立検証
- [ok] 文件清单(2 个文件,无脚本) — SKILL.md(687B) + example.html(37604B)。
- [ok] 正文零端点复核 — SKILL.md 内 http/CDN/fetch/script 零命中。
- [ok] 目录内端点自证 — example.html: 多条 fonts.googleapis.com @import + 一处 github.com/lewislulu/html-ppt-skill 文本;无远程 script、无 fetch/XHR。
- [ok] 无凭证读取 — key/secret/token/.env 零命中。
- [ok] 无写盘指令 — SKILL.md 无 write/save 类指令;shared.ts 明令禁文件工具。
- [ok] 交互约定逐字可复核 — T 切主题 / S 打开 popup / CURRENT·NEXT·SCRIPT·TIMER 四卡 / 默认 tokyo-night 5 套主题均在正文。
- [ok] aside.notes 机制在宿主侧有真实实现 — deck.ts 的 `notes = stripTags(inner);` 与 class 含 notes 的 aside 匹配正则,说明「含逐字稿」不是空头承诺。
- [ok] 样例产物与机制一致 — example.html: 6 个 <section>、8 处 class 含 slide、8 处 aside.notes → 稿件可被逐页抽出。
6結論
1b8a4ed4e3c3279c…