デザイン&モーション · nexu-io/html-anything

web-proto-editorial

エディトリアル・ミニマリズム: 暖色系モノクロキャンバス + セリフ体見出し + グロテスク体本文

L1 基本 · ソース登録のみV1 コミット固定Dual-pass Audit
Author nexu-ioGitHub nexu-io/html-anything ↗Stars 8827License Apache-2.0(仓库根 LICENSE 文件;GitHub API license.spdx_id = Apache-2.0)Commit 553ed98c28
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

本skillは実行可能プログラムではなく、html-anythingの「テンプレート」です。1つのディレクトリ(SKILL.md + example.html[/example.md])で構成され、実行時にloader.tsによってディスクスキャン経由で読み込まれます。テンプレートの新規追加=ディレクトリの追加であり、TypeScriptの変更は不要です。

next/src/lib/templates/loader.ts
Adding a template = adding a folder. No TS code change required; the API
SKILLS_DIRはアプリケーションcwdのsrc/lib/templates/skillsに固定されています。listSkills()は第1階層のサブディレクトリを走査し、isValidBundledIdでフィルタリングして、ディレクトリごとにSKILL.mdを読み込んでfrontmatterをパースするため、「セレクター用メタデータ」と「生成用プロンプト本文」は同一ファイルから生成されます。

frontmatterはセレクター/API向けのメタデータ(zh_name/en_name/emoji/description/category/scenario/aspect_hint/featured/recommended/tags)であり、fmToMeta()によってSkillMetaへとマッピングされます。frontmatter以降の本文がモデルに渡される仕様となります。

next/src/lib/templates/loader.ts
zhName: fm.zh_name ?? fm.name ?? id,
idはディレクトリ名から取得されます。exampleメタデータ(example_id/name/format/tagline/desc/source_url)はディレクトリ内にexample.md/htmlが存在する場合にのみSkillExampleMetaとして生成され、bodyは一覧APIから意図的に除外されています(コメント: Body is excluded so we can return the entire registry in one cheap fetch)。

生成時、本テンプレート本文はプロンプト本文として扱われます。/api/convertがassemblePrompt()を用いて「グローバルデザイン指示 + 本テンプレート本文 + ユーザーコンテンツ」を1つのプロンプトに結合し、ホストのローカルagent CLIに引き渡して、HTMLをstdoutストリーミングからキャプチャします。

next/src/app/api/convert/route.ts
prompt = assemblePrompt({ body: skill.body, content, format });
同ルートにはeditFromHtml/editFromContentによる「差分最小化編集」ブランチも存在します。このパイプラインにおいてテンプレート本文は単なる文字列であり、評価や実行は行われません。

テンプレート本文の上位にはグローバル共通指示(SHARED_DESIGN_DIRECTIVES)が配置され、すべてのテンプレートの前に技術面およびコンテンツ面の規律を一元的に適用します。サンプルHTMLで一般的に見られるCDNやフォントの外部リンクはここから発生しています(ホストシェルによる注入であり、テンプレート自体の要求ではありません)。

next/src/lib/templates/shared.ts
通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。
テンプレート本文はスタイル、レイアウト、コンポーネントのみを担当し、これらの必須要件を重複して記述しません。グレーディング対象はテンプレート自身のディレクトリのみであり、当該エンドポイントはホストシェルの挙動としてsecurity.reasonに記載されています。

成果物はstdoutテキストとして返却されます。グローバル指示によりagentによるファイルシステムの操作は明示的に禁止されており、ディスク保存はフロントエンドが担当します。そのため、テンプレートディレクトリにはスクリプトもディスク書き込み能力も存在しません。

next/src/lib/templates/shared.ts
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
原文の指示文では「HTMLをいかなる.htmlファイルにも書き込まず……フロントエンドがstdoutテキストを直接キャプチャし、ファイルのディスク保存はフロントエンドが担当する」と要求されています。成果物は最終的にフロントエンドによってタスク履歴に記録され、エクスポートされます。

example.htmlはパッケージに同梱された事前レンダリング済みのサンプルです。/api/templates/<id>/previewはiframe(セレクター内のインラインプレビュー)にtext/htmlとしてそのまま返却し、/api/templates/<id>/exampleはexample.md + example.htmlをあわせて返却します。

next/src/app/api/templates/[id]/preview/route.ts
return new Response(skill.exampleHtml, {
サンプルはプレビューおよびドキュメント用途に限定され、生成用プロンプトには関与しない(生成にはSKILL.md本文のみを使用する)ため、その外部リンクはテンプレート自体の機能境界に影響を与えません。

本文ではエディトリアル・ミニマリズムを4つの要素で定義しています。暖色系モノクロキャンバス、セリフ体見出し + グロテスク体本文 + モノスペース体メタ情報の3つのフォントファミリーの役割分担、1pxのヘアラインボーダーと極めてソフトなチップ、広大な余白(マクロホワイトスペース)+ 控えめなインライン入場アニメーションです。

next/src/lib/templates/skills/web-proto-editorial/SKILL.md
- Serif display + grotesque body + mono meta
補足の3原則は「- Warm monochrome canvas」「- 1px hairline borders, 非常にソフトなchip」「- Macro-whitespace, ambient micro-motion」であり、「雑誌のような上質感」を実行可能なフォント選定・ボーダー・リズムの3要素に分解しています。

サンプルではフォントファミリーの役割分担をCSS変数として定義しています。displayにはInstrument Serif、sansにはInter Tight、monoにはJetBrains Monoを指定しています。

next/src/lib/templates/skills/web-proto-editorial/example.html
--display: 'Instrument Serif', 'Newsreader', 'Lyon Text', Georgia, serif;
同一の変数ブロック内で--sans/--monoにもそれぞれ優先フォントとフォールバックのフォントスタックが設定されており、Google Fontsの読み込みに失敗した場合でも品位を保ったフォールバックが保証されています。

「ambient micro-motion」はIntersectionObserverによって駆動され、コードコメントでスクロールリスナーの使用を明示的に拒否しています: // Intersection-observer reveal — never window scroll listeners.

next/src/lib/templates/skills/web-proto-editorial/example.html
// Intersection-observer reveal — never window scroll listeners.
これは具体的なエンジニアリング上の判断です。入場revealを1回トリガーしてunobserveすることで、スクロールコールバックのジッターを回避し、本文の「控えめで主役を邪魔しないマイクロアニメーション」という思想に合致させています。

「極めてソフトなチップ」は、4組の淡い背景色/濃い文字色のセマンティックカラーペア(淡い赤/青/緑/黄)として実装され、ドロップシャドウの代わりにすべて1pxのヘアラインボーダーが採用されています。

next/src/lib/templates/skills/web-proto-editorial/example.html
--pale-red-bg: #FDEBEC; --pale-red-fg: #9F2F2D;
これはbrutalistの1pxソリッド線、softの2層ベベルと対をなし、同一シリーズ内における3種の「境界」戦略を形成しています。

CLI側にはキーワード直接マッチングルートが存在します。skills-matcher.tsがユーザーコンテンツ内のキーワードを本テンプレートidに直接マッピングし、マッチした場合はconfidence=ヒット数×2+3を付与し、閾値3に達した場合はローカルルールを採用してモデルによるテンプレート選択をスキップします。

cli/src/skills-matcher.ts
[["editorial", "编辑", "杂志风", "serif", "排版"], "web-proto-editorial"],
editorial / 編集 / 雑誌風 / serif / タイポグラフィが本テンプレートに直接マッチします。brutalistやsoftと共通のdesignシナリオシグナルテーブルを使用します。

CLIのフォールバックマッチングで使用される閾値定数:コンテンツ長が60文字を超えている場合のみAI要約マッチングが有効化されます。強シグナルの閾値は3です。

cli/src/skills-matcher.ts
const MIN_CONTENT_LENGTH_FOR_AI = 60;
その他、テンプレートのscenarioに応じてキーワードに重み付けを行うSCENARIO_SIGNALSや、tags/zhName/descriptionを用いてスコアリングするfallbackMatchが存在し、双方が不発の場合にのみagentを呼び出して要約マッチングを実行します。

ホストシェルはsandbox="allow-scripts allow-same-origin"(スクリプト許可、同一生成元許可)のiframeを使用してサンプルや成果物をレンダリングします。これは製品シェル側の設計判断であり、リスクとして記載されていますが、本skill自体のグレーディングには影響しません。

next/src/components/template-picker.tsx
sandbox="allow-scripts allow-same-origin"
preview-pane.tsx / deck-viewer.tsxで共通の仕様です。サンプルHTMLのインラインJSはブラウザプレビュー時にのみ実行され、skill自体は一切スクリプトを実行しません。

2コア機能

01暖色系モノクロキャンバス(--canvas #FBFBFA)
02セリフ体display + グロテスク体body + モノスペース体metaの3フォントファミリー構成
031pxヘアラインボーダー(ドロップシャドウの代替)
04極めてソフトなセマンティックチップ(4色の淡い背景)
05Macro-whitespaceによる大胆な余白リズム
06控えめな入場マイクロアニメーション(IntersectionObserver reveal)

3外部依存関係

KindDependency / Endpoint
networkGoogle Fonts(Instrument Serif / Inter Tight / JetBrains Mono)
networkGoogle Fonts 静态资源域(preconnect)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
自動ロード可能
管理者向け
ソースとバージョンの記録
判定根拠(ファイルパスと抜粋)
  • SKILL.md: 純粋なプロンプト指示およびルールテキストのみであり、スクリプト実行や外部への影響は皆無
監査ノート: グレーディング対象=本skillディレクトリ(next/src/lib/templates/skills/web-proto-editorial/)。ファイルごとの検証結果:スクリプトゼロ、クレデンシャル読み取りゼロ、ディスク書き込みゼロ。ディレクトリ内に現れるエンドポイントはGoogle Fonts(Instrument Serif / Inter Tight / JetBrains Mono)およびGoogle Fonts静的リソースドメイン(preconnect)のみであり、すべて「成果物サンプル」であるexample.html内に限定されています。SKILL.md本文はレイアウト、スタイル、フォントファミリー名を規定しているだけであり、実行時の外部インターフェースは一切指定されていないため、純粋な指示テンプレート=greenと判定されます。ホスト側の補足(判定には含まれません):html-anythingの製品シェルはassemblePrompt()経由で本文をプロンプトに結合してローカルagent CLIをspawnし、cdn.tailwindcss.com + Google Fontsの要件を注入します(next/src/lib/templates/shared.ts)。また、プレビュー用iframeにはsandbox="allow-scripts allow-same-origin"が使用されています(next/src/components/template-picker.tsx)。

5二重目の独立検証

  • [ok] skill 目录文件清单 — find 得 SKILL.md + example.html,无 scripts/references。
  • [ok] 外部端点仅字体 — example.html 仅 fonts.googleapis.com css2 与 fonts.gstatic.com preconnect;SKILL.md 正文无 URL。
  • [ok] 微动效实现方式 — 示例内联脚本用 IntersectionObserver(threshold 0.08) 一次性 reveal + unobserve,注释自述不用滚动监听。
  • [ok] hairline / chip 是否按正文实现 — --hairline #EAEAEA 贯穿边框;.chip--green/blue/red/yellow 四组浅底深字,与正文「1px hairline borders, 极柔和 chip」对应。
  • [unlocatable] 无 JS 时 reveal 是否兜底 — 示例的 .reveal 初始态与 is-in 类由脚本切换,styles 中未见 no-JS 或 prefers-reduced-motion 的兜底规则;无法从源码确证降级行为,未在正文作断言。
  • [ok] CLI 匹配器路由 — cli/src/skills-matcher.ts 存在 [["editorial", "编辑", "杂志风", "serif", "排版"], "web-proto-editorial"] 行。
  • [ok] 判级 green 自证 — 目录零脚本文件(示例内联 reveal 属产物示例)、零凭证、零写盘;正文无运行时接口 → green。
  • [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文。

6結論

  • 「雑誌感」の実行可能化: フォントファミリーの役割分担 + 1pxボーダー + 大胆な余白の3原則により、モデルがeditorialの意味を推測する必要を排除
  • 抑制的かつエンジニアリング的根拠のある動的効果: IntersectionObserverによる単発revealを採用し、コメントでスクロールリスナーを明示的に禁止
  • 優れたフォールバック対応: 各フォントファミリー変数に同一系統のフォールバックスタック(Georgia / system-ui / ui-monospace)を完備
  • 高彩度を避け、淡い背景+濃い文字色のセマンティックチップを採用することで、長文ページでも閲覧負荷を低減
  • 最適な用途: 長文記事/ホワイトペーパーのランディングページ、テクニカルライティング系の製品公式サイト、「静寂で信頼性のある」トーンが求められるブランドページに最適です。また、3つのスタイルプロトタイプの中で洗練された文芸的対比としても適しています。
    不向きな用途: 強い視覚的インパクトが求められるマーケティングキャンペーンページやデータ集約型のダッシュボードには不向きです。派手なアニメーションや3D表現が要求されるシーン(意図的に演出を抑制しているため)には適していません。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload web-proto-editorial.tar.gz
    sha256: cd20ceb19bfbeb7f…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.