1仕組みと動作原理
本スキルは実行可能プログラムではなく、プレーンテキストのプロンプトテンプレートです。ホストが正規表現で SKILL.md の YAML frontmatter をパースし、本文(body)をプロンプト本体として読み込みます。
const { fm, body } = parseFrontmatter(raw);
テンプレート本文は単体で実行されるのではなく、最終プロンプトの「テンプレート部分」に組み込まれます:共有デザイン指示 + 本テンプレート本文 + ユーザーコンテンツ。
prompt = assemblePrompt({ body: skill.body, content, format });
グローバルの「コンテンツ主導の分量」ルールがテンプレート内のいかなる数値指定よりも優先されます。テンプレートはレイアウト/スタイル/配色/コンポーネントライブラリのみを定義し、出力の長さを定義しません。
数量**完全由【用户内容】的实际长度和信息结构决定**
成果物の形式はグローバルで厳格に制約されています:単一ファイル HTML、コードフェンスなしの純粋な HTML、最初の文字は < でなければならず、ファイル書き込みは禁止されています(フロントエンドが stdout をキャプチャ)。
不要用 markdown 代码围栏包裹, 不要任何解释性文字
frontmatter のメタデータがセレクターの表示(中国語名/英語名/emoji/説明/カテゴリ/シナリオ/アスペクト比/タグ/サンプルメタデータ)を制御します。
zhName: fm.zh_name ?? fm.name ?? id,
同梱のサンプルアセットは2つの読み取り専用 API を通じてフロントエンドに公開されます:example.html は iframe 内にそのまま返され、example.md は「プレビュー」ボタンの入力コンテンツとして機能します。
verbatim so it can be loaded into an
実行チェーン(ホスト側の挙動であり、本テンプレートのコードではありません):ホストはローカルでログイン済みの agent CLI を spawn し、組み立てたプロンプトを stdin 経由で送り、stdout から HTML をストリーミングで回収します。
child.stdin.write(opts.prompt);
テンプレートが提供するのは「セクション順序 + 各セクションの分量/文型制約」であり、視覚的な仕様ではなく閲覧順序の仕様です(設計意図:「製品要件定義書のシングルページ、構造が明確」)。
【意图】产品需求文档单页, 结构清晰。
2つの分量/文型の厳格な制約(KPI 3〜5個、ユーザーストーリーに Given/When/Then を使用)により、自由な散文ではなく比較・レビューが可能な出力になります。
- Success metrics (3-5 个 KPI)
長ページの位置付け(aspect_hint: 長ページ)と共有指示の組版規律(8px ベースライン、段落の最大幅 65ch)が組み合わさることで、そのまま直接読める単一ファイルのドキュメントが得られます。
- Rollout plan + Open questions
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | Tailwind Play CDN(共享指令对产物的要求) |
| network | jsdelivr CDN(可选:图表/动画脚本) |
| network | Google Fonts(共享指令指定) |
| cli | 本机 coding-agent CLI(宿主检测 PATH 并 spawn) |
4推奨統制措置と判定根拠
- 网络端点: 外部ネットワークアクセスの宣言:成果物側(共有デザイン指示による要求):生成された HTML はブラウザ内で cdn.tailwindcss.com(Tailwind Play)および Google Fonts を読み込みます。
5二重目の独立検証
- [ok] skill 目录资产面(脚本 / references / 数据 / 模板) — 目录实为 2 个文件:SKILL.md 与 example.html;无 scripts/、无 references 目录、无任何可执行文件(.sh/.py/.js/.mjs/.ts 零命中)。
- [ok] 「无脚本、无网络、无凭证、无写盘」的反例搜索 — 对目录递归 token 扫描(api[_-]?key|token|secret|\.env|process\.env|child_process|fetch\(|curl |wget |npm |npx |exec\(|subprocess|writeFile|fs\.):零命中;SKILL.md 另按 http|CDN|cdn|font|API|api|fetch|Google|script 扫描,仅命中 font-semibold / font-black 这类字重类名,无端点。
- [ok] 官方描述 vs 实际能力(有无夸大) — frontmatter description(问题 + 成功指标 + 范围 + user stories + 设计 + 发布 + 待解决)与正文一致:描述承诺的版式要素都能在正文找到对应条目,未见正文未支持的越界承诺。
- [ok] 外部资源/工具条目逐条回源 — external_deps 中的仓库级条目(Tailwind Play CDN / jsdelivr / Google Fonts / 本机 agent CLI)逐条回到 shared.ts 与 argv.ts 原文取证;本模板无目录级端点条目。
- [ok] 宿主执行链(供 security.reason / verdict.risks 使用,不参与判级) — prompt 经 stdin 送入被 spawn 的本机 CLI(invoke.ts),HTML 从 stdout 分流捕获;claude 参数含 --permission-mode bypassPermissions、envFor 透传 process.env;预览 iframe sandbox="allow-scripts allow-same-origin"(template-picker.tsx:544 / preview-pane.tsx:297)。
- [ok] 路径与 commit 一致性 — 工作副本 /var/ytdown/skills-portal/spy-repos/html-anything 的 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699(与任务表 pin 一致);skill.path=next/src/lib/templates/skills/pm-spec 下确有 SKILL.md,全仓无第二份同名模板。
- [ok] "设计备注含 mockup 占位"是否意味着抓取外部图 — 原文是 "- Design notes (含占位 mockup)",即版面占位;共享指令另有"不要引用任何外部图片 URL"的禁令,方向一致,不存在外链图片要求。
- [ok] 随包 example.html 的外链与脚本面 — pm-spec/example.html(14291 字节)无 http(s) 外链、无 <script>:长文档排版全部内联 CSS,预览不会产生外部请求。
6結論
3cd90ed0d79647d1…