1仕組みと動作原理
テンプレート本体に実行可能コードは含まれません。loader が src/lib/templates/skills/<id>/SKILL.md から frontmatter と本文を読み込み、本文(body)と example の内容を LoadedSkill として返します。
const raw = safeRead(path.join(dir, "SKILL.md"));
配信前にホストがプロンプトを確定的に組み立てます。テンプレート本文は共有デザイン指示(SHARED_DESIGN_DIRECTIVES)と【入力形式】/【ユーザーコンテンツ】の間に挟み込まれます。
Wrap a per-template instruction body with the shared design directives and
共有指示はハード制約をエージェントに対する明示的な禁止事項として定義し、コンテンツ駆動による数量決定を強制します(テンプレート内の数値は参考用の下限値に過ぎません)。
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
実際の実行はユーザーのローカル環境に導入・ログイン済みのコーディングエージェント CLI が担います。ホストが子プロセスを spawn してプロンプトを渡し、stdout から HTML をストリーミング取得します。
import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
/api/convert がテンプレートの実行パスです。skill.body とユーザーコンテンツをプロンプトに組み立てた後、invokeAgent に引き渡します。
prompt = assemblePrompt({ body: skill.body, content, format });
実装原理は「ナラティブアーク + レイアウトモールド」の二重拘束です。6つの公理がコンテンツを制約し(真の問いが先、失敗の挿入が必須、命名の前にひらめきを配置など)、6つの layout class がレイアウトのリズムを制御し、いずれかを満たさない場合は再生成となります。
【六条公理 — 任一不过, 重做】
リズムはモールドのシーケンスによって厳密に固定されます:.feature → .note → .archive → .cross → .hero → .closing。開放と凝縮が交互に現れ、転換点では拡大し、末尾では中心対称へと回帰します。
**节奏铁律**: 开阔(feature)→ 紧(note 错位)→ 紧(archive 横长)→ 爆(cross 200px)→ 开阔(hero)→ 静(closing 中心对称)。
「4つのフォントファミリーの同時使用必須」により、単一フォントによる平坦さを排して階層性を持たせます:タイトル/引用の Serif、本文の Sans、番号/脚注の Mono、手書き注記の Hand がそれぞれの役割を担います。
【字族对比 — 必须四种同时使用】
カラーシステムは CSS 変数として定義され、主要色は最大4色に制限され、純黒(#000)の使用は明文で禁止されています。
**禁止 `#000` 纯黑**
成果物仕様は、単一ファイル HTML + インライン CSS + Google Fonts CDN、JS 不使用、静的縦長グラフィック、1080px 幅コンテナ(高さ可変)です。当該 CDN は成果物利用時の参照(ブラウザ表示時の取得)であり、skill 実行時の外部通信は発生しません。
输出**单文件 HTML**, inline CSS + Google Fonts CDN(Noto Serif SC / Noto Sans SC / Caveat / JetBrains Mono)。不写 JS, 静态长图。容器宽 1080px, 高度自适应。
skill の末尾には改変元とバージョンが明記されており、派生関係を追跡可能です。
本 skill 改编自 [lijigang/ljg-skills · ljg-card -v sketchnote](https://github.com/lijigang/ljg-skills/tree/master/skills/ljg-card)(v2.3.0)。
2コア機能
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示および規則テキストのみで構成され、スクリプト実行や外部への副作用はありません
5二重目の独立検証
- [ok] 六模具与示例的一致性 — example.html 中 <section class="feature">、<aside class="note">、<section class="archive">、<section class="cross">、<section class="hero">、<section class="closing"> 依次出现,节奏铁律(爆点在 cross、收尾 closing 中心对称)可对照验证。
- [ok] 「不写 JS」的声明 vs 实际 — example.html 全文无 <script> 标签、无 on* 事件属性;所有图形为内联 SVG(viewBox 0 0 280 220 等),与【输出契约】不写 JS、静态长图一致。
- [ok] 端点性质(产物期 vs 执行期) — SKILL.md:198 逐字命中「inline CSS + Google Fonts CDN(Noto Serif SC / Noto Sans SC / Caveat / JetBrains Mono)」;example.html:7-9 有 preconnect 与 css2 链接。字体由浏览器加载产物时取用,属产物期引用(批4 终版口径不判级),故维持 green;端点已列入 security.reason 与 verdict.risks。
- [ok] 示例文本与公理的相符性 — 示例标题「涌现的命名 · 复杂系统 1972」不在标题中直接揭示概念定义,closing 才给中文概念名与 byline(人名·年份·文献),符合「顿悟在前、命名在后」公理。
- [ok] license / stars / commit 元数据 — GitHub API(api.github.com/repos/nexu-io/html-anything):spdx_id=Apache-2.0、stargazers_count=8827、pushed_at=2026-09-15T03:36:24Z;工作副本 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699(与任务表 pin 553ed98c283f 同源)。
- [ok] skill.path 与目录资产面 — pin 目录内该路径存在且含 SKILL.md;目录内文件清单已用 glob 全量核对(含隐藏文件),无 scripts/、无 references/、无二进制资产(competitive-teardown 的 assets/ 为纯 HTML,另行记录)。
6結論
fa995708ae5df142…