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

saas-landing

hero、features、social-proof、pricing、CTA を含むシングルページの SaaS ランディングページ。

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

1仕組みと動作原理

本テンプレートは「フォルダ=テンプレート」構造における純粋なデータです。SKILL.md はセレクター用の YAML frontmatter を備え、本文はエージェント向けのレイアウト指示として機能します。リポジトリ側で個別テンプレート用のコードは一切記述されておらず、テンプレートの追加=フォルダの追加となります。

next/src/lib/templates/loader.ts
SKILL.md — frontmatter (id, scenario, tags, …) + prompt body
loader.ts のファイル先頭コメントにディレクトリ規約が明記されています。frontmatter はプロセス内の正規表現で解析され(YAML 依存関係なし)、本文はプロンプト本文としてそのまま抽出されます。ブラウザ側には渡されません(「Body is excluded so we can return the entire registry in one cheap fetch without shipping prompt text to the browser.」)。

実行時、ホストが本テンプレートの本文を共通デザイン指示とユーザーコンテンツの間に挟み込んでプロンプトを組み立てます。テンプレートの「知能」はこの自然言語テキストの中にのみ存在し、実行可能コードは含まれません。

next/src/lib/templates/shared.ts
return `${SHARED_DESIGN_DIRECTIVES} ${opts.body.trim()}
assemblePrompt の戻り値は「共通デザイン指示 + テンプレート本文 + 【入力フォーマット】+ 【ユーザーコンテンツ】」です。共通セクション(同一ファイル内の SHARED_DESIGN_DIRECTIVES)は、単一ファイル HTML、Tailwind/フォント CDN、コンテンツ駆動の数量決定、ファイルシステムツールの使用禁止といった制約を担当しており、全テンプレート共通であり本テンプレート固有のものではありません。

ホストの /api/convert が本テンプレートを読み込んだ後、これらのテキストをローカルでログイン済みの coding-agent CLI に渡し、stdout を HTML としてストリーミング回収します。テンプレート自体はネットワーク通信、認証情報の読み取り、ファイル書き込みを行いません。

next/src/app/api/convert/route.ts
prompt = assemblePrompt({ body: skill.body, content, format });
同一ルートはその後 invokeAgent({ … }) を呼び出して CLI(ホストの PATH から検出された claude / codex / cursor-agent など)を起動します。これに付随する共通指示にも「**Write / Edit / MultiEdit / Bash / Create / ファイルシステムツールの使用は禁止**」と明記されています。

テンプレートに付属する example.html は「事前レンダリング済みサンプル」であり、プレビューAPIからそのまま出力されてセレクターやギャラリーの iframe に表示されます。テンプレートカードのプレビュー表示の有無を決定するものであり、コンテンツ生成には関与しません。

next/src/app/api/templates/[id]/preview/route.ts
Returns the skill's `example.html` verbatim so it can be loaded into an
プレビューは skill id ごとにキャッシュされます(Cache-Control: public, max-age=300)。フロントエンドはプレビューパネル内の iframe に sandbox="allow-scripts allow-same-origin" を付与しています(ホスト側の実装であり、本テンプレート側では制御不能)。

frontmatter のフィールドはセレクターのメタデータへと順次マッピングされ(featured は全体ソート、recommended は上部の「★ おすすめ」グループ入り、example_* はサンプルカードの文面生成)、カテゴリやシナリオフィルタでの表示位置を決定します。

next/src/lib/templates/loader.ts
if (typeof fm.featured === "number") meta.featured = fm.featured;
fmToMeta は category/scenario/aspectHint/tags も SkillMeta に直接マッピングします。example ブロックは example_id または example.{md,html} が存在する場合に生成されます(id/name/format/tagline/desc + 任意の source)。これらのフィールドは表示とソートにのみ影響し、生成動作には影響しません。

本テンプレートの生成能力はすべて自身の本文によって実現されています。saas-landing/SKILL.md はレイアウト、配色、フォント、コンテンツ規律のみを記述しており、エージェントにツールの実行、API 取得、外部データの読み込みを指示する内容は一切含まれていません。

next/src/lib/templates/skills/saas-landing/SKILL.md
【模板: SaaS Landing】
skill ディレクトリは計 2〜3 ファイル(SKILL.md + example.html [+ example.md])で構成され、scripts/references/データファイルは存在しません。example.html は同一テンプレートの手動作成サンプル成果物にすぎません(internal_assets を参照)。

本文はランディングページを固定のセクションリストに分割し、ユーザーコンテンツをそれらのスロットへマッピングすることをタスクとして定義しています。

next/src/lib/templates/skills/saas-landing/SKILL.md
【意图】完整的 SaaS 产品落地页, 把用户内容映射到标准 sections。

各セクションの構成も固定されています。Hero には大見出し + サブタイトル + デュアル CTA + ビジュアルプレースホルダーが必須であり、Pricing は 2〜3 プランで推奨プランを強調表示する必要があります。

next/src/lib/templates/skills/saas-landing/SKILL.md
- Hero (大标题 + 副标 + 双 CTA + 可视化占位)

スタイル指示はモダンな SaaS ビジュアル言語(大フォントサイズ / 柔らかなグラデーション / グラスモフィズムカード / スクロール連動インアニメーション)であり、ピクセル単位の仕様ではなく主観的な表現となっています。

next/src/lib/templates/skills/saas-landing/SKILL.md
- 现代 SaaS 风: 大字号, 柔和渐变, glassmorphism 卡片, 滚动入场动画

レスポンシブ対応は必須要件です。少なくとも md: ブレークポイントとモバイルのシングルカラムに対応する必要があります。

next/src/lib/templates/skills/saas-landing/SKILL.md
- 至少处理 `md:` 断点, 移动端单栏

サンプル成果物は本構造(nav → hero → features → logo wall → pricing → closing → footer)を実証しており、全体として外部リンクなし、JS なしで構成されています。

next/src/lib/templates/skills/saas-landing/example.html
<section class="pricing wrap" id="pricing" data-od-id="pricing">

2コア機能

01標準的な SaaS ランディングページ情報設計(logo wall 社会的証明セクションを含む)
02Hero エリア構造(大見出し + サブタイトル + デュアル CTA + ビジュアルプレースホルダー)
03機能エリア(3〜6 個の機能カード:アイコン + タイトル + 説明)
04プロセスエリア(3 ステップ:番号 + タイトル + 説明)
05料金エリア(2〜3 プラン、推奨プランの強調表示)
06FAQ アコーディオン(details/summary による JS 不要の実装)
07ダブルクリックで直接開ける完全なシングルページのサンプル成果物(footer を含む)
08MD ブレークポイントのレスポンシブ対応 + モダンな SaaS ビジュアル言語

3外部依存関係

KindDependency / Endpoint
cli本地 coding-agent CLI(宿主提供,模板自身不调用)

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

安全運用のための推奨統制措置
Agent 向け
自動ロード可能
管理者向け
ソースとバージョンの記録
判定根拠(ファイルパスと抜粋)
  • SKILL.md: 純粋なプロンプト指示およびルールテキストであり、スクリプト実行や外部影響は一切なし
監査ノート: 判定対象=本 skill ディレクトリ(SKILL.md + example.html [+ example.md]):独自のスクリプトなし、認証情報の読み取りなし、ディスク書き込み指示なし、実行時に外部エンドポイントを要求しない。本文はレイアウト、配色、フォントファミリー名、コンテンツ規律のみを規定しており、フォントファミリー名はリクエストを発生させません。ディレクトリ内に実際に現れる外部リンクはすべて「成果物サンプル」の性質を持つものであり、個別に確認した結果:該当ゼロ。saas-landing ディレクトリ内の 2 ファイル(SKILL.md / example.html)には http(s) リテラルが一切含まれていません(CDN 参照なし、Web フォント参照なし、外部リンク画像なし、フォントはシステムスタック依存で ui-monospace が 1 箇所のみ)。第 4 バッチ基準(エンドポイントが成果物サンプル/出典表記にのみ現れる場合は green)に基づき、評価ランクには影響しません。ホスト側の挙動(loader.ts によるディスク読み込み、assemblePrompt によるプロンプト組み立て、agents/invoke.ts によるローカル CLI 起動、プレビュー iframe の sandbox="allow-scripts allow-same-origin")は verdict.risks に記載されており、ランク判定の根拠とはなりません。

5二重目の独立検証

  • [ok] skill 目录的脚本 / 网络 / 凭证 / 写盘面 — 目录仅 SKILL.md / example.html 2 个文件,无 scripts/references/数据目录;token 扫描(curl / wget / fetch / exec / spawn / process.env / API_KEY / token / secret / write / save / delete)在该目录的 SKILL.md 中零命中;无自带可执行脚本。
  • [ok] 运行时链路复核 — 重读 loader.ts / shared.ts / app/api/convert/route.ts / app/api/templates/[id]/preview/route.ts:模板正文只作为 prompt body 被 assemblePrompt 拼装,宿主 spawn 本地 CLI 并捕获 stdout;模板不参与任何执行。
  • [ok] commit 与元数据 — 工作副本 git HEAD = 553ed98c283f9c0f489902d035416a972d6a9699(=任务表 pin 的 full 40 位);GitHub API nexu-io/html-anything:stars 8827、license spdx Apache-2.0、pushed_at 2026-09-15T03:36:24Z(与本地 HEAD 提交时间 2026-09-15 11:36:24 +0800 一致)。
  • [discrepancy] README 与源码的 frontmatter schema 漂移(仓库级) — README 第 213 / 217 / 468 行称模板 frontmatter 必须含 mode · scenario · surface · preview · design_system;但在 next/src/lib/templates/skills/ 下 '^mode:'、'^surface:'、'^design_system:' 全部零命中,实际字段是 category / scenario / aspect_hint / featured / recommended + example_*(loader.ts 的 SkillFrontmatter)。文档滞后于代码,不影响本模板运行,但照 README 新写模板会踩空。
  • [ok] frontmatter 元数据映射 — loader.ts fmToMeta 逐字段映射 zhName / enName / emoji / description / category / scenario / aspectHint / tags + featured / recommended + example 卡;本模板取自 SKILL.md 的实际取值与之相符。
  • [discrepancy] example.html 与 SKILL.md 的一致性(FAQ / How-it-works 缺席) — 正文列了 8 段,其中 '- How it works (3 步流程, 数字 + 标题 + 描述)' 与 '- FAQ (details/summary 手风琴)' 在 example.html 中不存在:示例只有 nav / hero / features / proof(logo wall) / pricing / closing / footer,全文件 'details'、'summary' 零命中。示例是「示意」而非严格实现,拿它当验收基准会少看到两段。
  • [ok] 端点扫描(目录内) — saas-landing 目录 2 个文件 http(s) 字面量零命中;无 <script>、无 <link rel="stylesheet">,是 9 个模板里依赖面最干净的。
  • [discrepancy] 「glassmorphism / 滚动入场动画」是否在示例中兑现 — 正文要求 "- 现代 SaaS 风: 大字号, 柔和渐变, glassmorphism 卡片, 滚动入场动画",示例有柔和配色与大字号(.hero h1 用 clamp(44px, 6vw, 76px)),但无 backdrop-filter 类玻璃卡片、无滚动入场动画。规格比示例更"先进"。

6結論

  • ランディングページを列挙可能なセクション契約として定義し、モデルはユーザーコンテンツを各スロットにマッピングするだけで済む構成
  • 各セクションに要素リスト(3〜6 個の機能カード / 2〜3 個の料金プラン)を提示し、モデルによる独自の骨組み作成を防止
  • レスポンシブ対応を明文で規定(md: ブレークポイント + モバイル単一カラム)し、デフォルトで実用的な出力を確保
  • サンプル成果物は外部リンクなし・JS なしで構成され、プレビューおよび共有面で最もクリーン(同リポジトリ内の 3 つのソーシャルメディアカードは Tailwind CDN を参照)
  • FAQ に JS ではなく details/summary を採用し、単一ファイルかつダブルクリックで動作可能
  • 最適な用途: 製品のセールスポイント、機能、料金をシングルページのマーケティングページへ迅速に落とし込むのに適しています。また、「標準的な SaaS ページの骨組み」のプロンプト見本や、プロトタイプ作成時のデフォルトエントリとしても適しています。
    不向きな用途: 完全な Web サイト構築(料金ページ + ドキュメント + ブログなどの複数ページ構成)、厳格なブランドガイドラインへの準拠(デザイン トークンではなくスタイル形容詞のみ提示)、法的に厳格な料金や顧客推薦文の記述には適していません(価格や商標のコンプライアンス検証は行われません)。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload saas-landing.tar.gz
    sha256: 4f4424030c2a6b97…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.