landing-page-design について
landing-page-design は、ページ構成、ビジュアルパターン、CTA、パフォーマンス確認を扱う、製品ランディングページ設計用のスキルです。デザイナーや開発者がデザインコンテキストを反映し、モバイルとデスクトップの画面サイズで検証できます。
主な機能
- 01デザイントークンの読み込みと適用
- 02ランディングページのセクション設計
- 03ヒーローと機能紹介のレイアウト選択
- 04明確な主要CTAの設計
- 05パフォーマンスとアクセシビリティの確認
活用シーン
- 01製品ランディングページの制作
- 02既存のブランドや Figma のデザインコンテキストの適用
- 03モバイルとデスクトップの画面サイズでの表示確認
MCP 対応
Figma URL が指定された場合、Figma MCP の `get_design_context` と `get_screenshot` を使ってデザインコンテキストとスクリーンショットを取得します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ arnavpuri/ designskills --skill landing-page-designインストール後、Claude Code で/landing-page-designを入力して読み込まれたか確認します。
詳細
ランディングページのデザイン
始める前に:デザインコンテキストを読み込む
design-contextスキルによって作成された.agents/design-context.mdを読みます。存在しない場合は、tailwind.config.*または:rootCSS 変数にトークンがないか確認します。何も存在しない場合は、デフォルト値(Primary#2563EB、Secondary#7C3AED、Accent#F59E0B、Tailwind のグレーニュートラル、見出しと本文には Inter、スタイルはミニマル)を使用し、デフォルト値を使用したことをユーザーに伝えます。design-contextの実行を提案してください。- トークンを一度だけ CSS 変数に対応付け、以降は変数のみを使います。
--color-primary、--color-primary-light、--color-primary-dark、--color-secondary、--color-accent、--color-neutral-50~--color-neutral-900、--color-success/-warning/-error、--font-heading、--font-body、--font-mono、--radius、および 4px を基準とした間隔スケールを使用してください。 - Tailwind: 同じ変数を
primary、primary-light、primary-dark、secondary、accent、neutral-*、font-heading、font-bodyとして公開します(v3 ではtheme.extend、v4 では@theme)。以下の例にあるindigo-*/gray-*クラスは、これらのトークンに置き換えるためのプレースホルダーです。 - Figma: ユーザーから Figma の URL が提示された場合は、Figma MCP(
get_design_context、get_screenshot)を使って取得し、そのデザインに合わせます。そのデザインでは、コンテキストファイルよりも Figma の内容を優先します。 - 次の点を尋ねるか、推測します。製品は何か、対象ユーザーは誰か、そして求めるアクションは一つだけなら何か。コピーにはコンテキストのトーンを使い、ヒーローパターンとセクションの背景にはスタイルのアーキタイプを参考にしてください。
1. セクションの構成
コンバージョン率の高いランディングページは、すべてこの流れに従います。セクションの順番は入れ替えたり、省略したりできますが、これは実績のある構成です。
1. Hero — Value prop + primary CTA (above the fold)
2. Social Proof — Logos, stats, or trust badges
3. Features — What it does (benefits, not features)
4. How It Works — 3-step simplicity
5. Testimonials — Real humans saying real things
6. Pricing — Clear tiers with obvious recommendation
7. FAQ — Overcome objections
8. Final CTA — Repeat the primary action
9. Footer — Links, legal, secondary nav
セクション間の余白
- 主要なセクションには
py-20 md:py-28 lg:py-32を使用します(余白スケールの全容はセクション 11 を参照)。 - 背景色は白と控えめなグレー(
bg-gray-50)を交互に使用します。 - すべてのコンテンツに
max-w-7xl mx-auto px-4 sm:px-6 lg:px-8コンテナを使用します。
2. ヒーローパターン
ヒーローはページの最初のセクションです。これがデフォルトです。分割、動画、ミニマルなタイポグラフィのバリエーション、背景の手法、LCP の詳細については、hero-section スキルを使用してください。
パターン A:中央揃えのヒーロー(SaaS に最適)
<section class="relative overflow-hidden bg-white pt-24 pb-20 sm:pt-32 sm:pb-28">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 text-center">
<div class="inline-flex items-center gap-2 rounded-full bg-indigo-50 px-3 py-1 text-sm
font-medium text-indigo-700 ring-1 ring-indigo-600/10 mb-8">
<span class="h-1.5 w-1.5 rounded-full bg-indigo-600"></span>
Now in public beta
</div>
<h1 class="text-4xl sm:text-5xl lg:text-6xl font-extrabold tracking-tight text-gray-950
max-w-4xl mx-auto leading-[1.1]">
The faster way to build
<span class="text-indigo-600">beautiful products</span>
</h1>
<p class="mt-6 text-lg sm:text-xl text-gray-600 max-w-2xl mx-auto leading-relaxed">
Ship production-ready interfaces in minutes. Stop fighting CSS and start
delighting your users.
</p>
<div class="mt-10 flex flex-col sm:flex-row items-center justify-center gap-4">
<a href="#" class="w-full sm:w-auto bg-indigo-600 text-white px-8 py-3.5 rounded-xl
font-semibold text-lg hover:bg-indigo-500 transition-colors shadow-lg
shadow-indigo-600/25">
Start free trial
</a>
<a href="#" class="w-full sm:w-auto text-gray-700 px-8 py-3.5 rounded-xl font-semibold
text-lg hover:bg-gray-100 transition-colors flex items-center justify-center gap-2">
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" aria-hidden="true"></svg>
Watch demo
</a>
</div>
<p class="mt-8 text-sm text-gray-500">No credit card required. Free for up to 3 projects.</p>
</div>
</section>
その他のヒーローパターン
分割(テキスト+製品のビジュアル)、動画背景、アニメーション付きのヒーローについては、hero-section を参照してください。どのパターンでも、ヒーロー画像は LCP 要素です。loading="lazy" は決して使用せず、必ず fetchpriority="high" と width/height を指定してください。
3. ソーシャルプルーフセクション
ロゴバー
<section class="bg-gray-50 py-12 border-y border-gray-100">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<p class="text-center text-sm font-medium text-gray-500 mb-8">
Trusted by 2,000+ teams worldwide
</p>
<div class="flex flex-wrap items-center justify-center gap-x-12 gap-y-6
grayscale opacity-60 hover:grayscale-0 hover:opacity-100 transition-all">
<img src="/logos/stripe.svg" alt="Stripe" width="112" height="28" class="h-7 w-auto" loading="lazy" />
<img src="/logos/vercel.svg" alt="Vercel" width="112" height="28" class="h-7 w-auto" loading="lazy" />
</div>
</div>
</section>
統計カウンター
<div class="grid grid-cols-2 lg:grid-cols-4 gap-8 text-center">
<div>
<div class="text-4xl font-extrabold text-gray-950">10K+</div>
<div class="mt-1 text-sm text-gray-500">Active users</div>
</div>
<div>
<div class="text-4xl font-extrabold text-gray-950">99.9%</div>
<div class="mt-1 text-sm text-gray-500">Uptime SLA</div>
</div>
</div>
4. 機能セクション
Bento グリッド(モダンで視覚的)
<section class="py-20 bg-white">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div class="text-center mb-16">
<h2 class="text-3xl sm:text-4xl font-bold text-gray-950">Everything you need</h2>
<p class="mt-4 text-lg text-gray-600 max-w-2xl mx-auto">
A complete toolkit for modern teams.
</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<div class="md:col-span-2 bg-gradient-to-br from-indigo-600 to-purple-700
rounded-2xl p-8 text-white min-h-[300px] flex flex-col justify-end">
<h3 class="text-2xl font-bold">AI-powered insights</h3>
<p class="mt-2 text-white/90">Automatically surface what matters most.</p>
</div>
<div class="bg-gray-50 rounded-2xl p-8 min-h-[300px] flex flex-col justify-end">
<div class="w-10 h-10 rounded-lg bg-indigo-100 text-indigo-600 flex items-center
justify-center mb-4" aria-hidden="true"></div>
<h3 class="text-lg font-bold text-gray-950">Real-time sync</h3>
<p class="mt-2 text-gray-600">Changes appear instantly across all devices.</p>
</div>
</div>
</div>
</section>
交互に並べる行(定番で詳細)
- 奇数行:左にテキスト、右に画像。
- 偶数行:左に画像、右にテキスト。
- 各行で、見出し、説明、ビジュアルを使って一つの機能を紹介します。
アイコングリッド(シンプルで見やすい)
- アイコン+見出し+短い説明を、3 列または 4 列で配置します。
- アイコンのスタイル(アウトラインまたは塗りつぶし)は統一し、混在させないでください。
5. CTA のデザイン
プライマリー CTA のルール
- サイズ:高さは最低 48px、幅は 200px 以上。ページ内の他のどのボタンよりも大きくします。
- 色:ページ内で最もコントラストの高い要素にします。ブランドのプライマリーカラーを使用します。
- コピー:行動を促す動詞を使います。「無料トライアルを始める」は「送信」より、「始める」は「登録する」より効果的です。
- 緊急性:任意ですが、効果的です。「無料で始めましょう。クレジットカードは不要です。」
- 繰り返し:プライマリー CTA は少なくとも 3 回表示します。ヒーロー、中盤、最下部に配置してください。
モバイル向けスティッキー CTA
<div class="fixed bottom-0 inset-x-0 bg-white/90 backdrop-blur-lg border-t
border-gray-200 px-4 pt-4 pb-[calc(1rem+env(safe-area-inset-bottom))] sm:hidden z-50">
<a href="#" class="block w-full bg-indigo-600 text-white text-center py-3.5
rounded-xl font-semibold text-lg">
Start free trial
</a>
</div>
セカンダリー CTA のパターン
- プライマリー CTA の横にゴーストボタン(アウトライン)を配置します。
- 矢印付きのテキストリンク:
Learn more ->。 - 同じ強さの CTA を横に二つ並べることは避けてください。
- 遷移する CTA には
<a>を、モーダルを開いたり送信したりする CTA には<button>を使用します。
6. 仕組み
3 ステップのパターン
<section class="py-20 bg-gray-50">
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<h2 class="text-3xl font-bold text-center text-gray-950 mb-16">
Get started in minutes
</h2>
<div class="grid md:grid-cols-3 gap-12">
<div class="text-center">
<div class="w-12 h-12 rounded-full bg-indigo-100 text-indigo-600 font-bold
text-lg flex items-center justify-center mx-auto">1</div>
<h3 class="mt-4 text-lg font-semibold text-gray-950">Connect your data</h3>
<p class="mt-2 text-gray-600">Import from 50+ sources with one click.</p>
</div>
</div>
</div>
</section>
ステップは 3 つに抑えてください。手順がそれ以上ある場合は、簡略化するか、まとめてください。
7. お客様の声
カードグリッド
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
<div class="bg-white rounded-2xl p-6 shadow-sm border border-gray-100">
<div class="flex gap-1 text-amber-400 mb-4" role="img" aria-label="Rated 5 out of 5">
</div>
<blockquote class="text-gray-700 leading-relaxed">
"This completely changed how our team works. We shipped 3x faster in the
first month."
</blockquote>
<div class="mt-4 flex items-center gap-3">
<img src="/avatars/sarah.jpg" alt="" width="40" height="40" loading="lazy" class="w-10 h-10 rounded-full" />
<div>
<div class="font-semibold text-gray-950 text-sm">Sarah Chen</div>
<div class="text-gray-500 text-sm">CTO, Acme Corp</div>
</div>
</div>
</div>
</div>
ルール
- 実際の写真、実名、実在企業を使用します。
- 信頼性を示すため、役職/肩書きを含めます。
- 星評価で視覚的な信頼感を高めます。
- 「3倍高速」「週あたり20時間削減」など、具体的な成果を強調します。
8. 料金セクション
3段階のパターン
- 無料/ベーシック — 基準となる価格を示し、機能を制限します。
- プロ(おすすめ) — 枠線、バッジ、またはシャドウで強調します。最も多くの機能を利用できます。
- エンタープライズ — 「営業にお問い合わせください」と表示し、すべての機能を無制限で提供します。
デザインルール
- おすすめのプランは
ring-2 ring-indigo-600とlg:scale-105で強調します(カードが縦に並んだときにオーバーフローするため、モバイルでは拡大しません)。 - 「最も人気」バッジを使用します。
- 年払い/月払いの切り替えには、割引の案内を添えます。スタイルを設定した
<div>ではなく、実際の<button role="switch" aria-checked>またはラジオグループを使用します。 - 機能一覧では、利用可能な項目にチェックマーク、対象外の項目にダッシュまたは X を付けます。
- 価格は大きな数字で、期間は小さく表示します(例:$29/月)。
9. 信頼性を示す要素
以下の要素は1つのセクションだけでなく、ページ全体に配置します。
- セキュリティバッジ:SSL、SOC 2、GDPR
- 返金保証:「30日以内なら理由を問わず全額返金」
- サポート:「24時間年中無休のサポート」または「平均応答時間:2時間」
- ソーシャルプルーフ:CTA ボタンの近くに「10,000以上のチームに選ばれています」
- 報道機関のロゴ:「TechCrunch、Forbes などで紹介」
10. パフォーマンスの優先事項
ファーストビュー(LCP の最適化)
- ヒーロー画像/動画のポスターが LCP 要素になる可能性が高いため、
fetchpriority="high"と明示的なwidth/heightを設定し、loading="lazy"は使用しません。 - 画像の検出が遅れる場合(CSS の背景画像、JS によるレンダリング、
<picture>)に限り、プリロードします。 - ヒーローセクションのクリティカル CSS をインライン化します。見出しを
opacity: 0からフェードインさせないでください。LCP が遅れます。 - 目標値(Core Web Vitals、第75パーセンタイル):LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1。
<link rel="preload" href="/hero-image.webp" as="image" fetchpriority="high" />
ファーストビューより下
- すべての画像を遅延読み込みします:
loading="lazy"。 - レスポンシブ画像には
srcsetを使用します。 - 重要でない JS の実行を遅らせます。
- ページ下部のセクションには
contain-intrinsic-size: auto 800pxを指定したcontent-visibility: autoを使用します(サイズのヒントがないとスクロールバーが跳ねます)。 - レイアウトシフトを防ぐため、すべての画像に
width/height(またはaspect-ratio)を指定します。
<img
src="/feature.webp"
srcset="/feature-400.webp 400w, /feature-800.webp 800w, /feature-1200.webp 1200w"
sizes="(max-width: 768px) 100vw, 50vw"
width="1200" height="800"
loading="lazy"
alt="Feature description"
class="rounded-2xl"
/>
11. コンバージョンを重視した余白と流れ
視線の流れに関するルール
- テキストの多いページでは Fパターン を使用します(視線は左上から右へ進み、次に左下へ移動します)。
- シンプルなページでは Zパターン を使用します(視線がページ上をジグザグに移動します)。
- 各セクションで1つの疑問に答え、次のセクションへ導きます。
- 余白は機能の一つです。窮屈なページは信頼感を損ないます。
セクション間の余白
- 主要なセクション間:
py-20 md:py-28 lg:py-32 - サブセクション間:
py-12 lg:py-16 - 見出しとコンテンツの間:
mb-12 lg:mb-16 - コンテンツ項目間:
gap-6 lg:gap-8
確認:レンダリングしてチェックする
自分で確認していないコードを引き渡してはいけません。生成後、次の手順を実行します。
- モバイルとデスクトップの幅でスクリーンショットを撮影します。例:
npx playwright screenshot --full-page --viewport-size=390,844 file://$PWD/index.html mobile.pngを実行し、続けて--viewport-size=1440,900を指定します(または開発サーバーの URL を指定します)。 - 2枚の画像を開いて確認します。横スクロールや、テキストのクリッピング/重なりがないこと、階層がひと目で分かること、ブランドトークンが適用されていること、画像が適切なアスペクト比で読み込まれることを確認します。
- すべてのインタラクティブ要素に、論理的な順序で目に見えるフォーカスリングが表示されることを確認するため、Tab キーで一巡します。
- 390px のスクリーンショットで、スクロールせずに見出しと主要な CTA が表示され、固定 CTA がコンテンツを覆っていないことを確認します。サーバーが稼働している場合は Lighthouse(
npx lighthouse <url> --only-categories=performance,accessibility)を実行します。 - 見つかった問題を修正し、完了を報告する前に再度スクリーンショットを撮影します。
ランディングページのチェックリスト
- 明確な CTA を 1 つに絞る(3 回以上繰り返す)
- ヒーロー画像(LCP 対象)に
fetchpriority="high"を設定し、幅と高さを指定する。遅延読み込みはしない - 最初のスクロール範囲内にソーシャルプルーフを配置する
- コピーでは機能よりもメリットを伝える
- モバイル向けに最適化する(固定 CTA、縦積みレイアウト)
- Core Web Vitals:LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1
- アニメーションは
prefers-reduced-motionを尊重する。テキストのコントラスト比は 4.5:1 以上にする - 390px と 1440px でレンダリングし、スクリーンショットを撮る(「Verify」を参照)
- ナビゲーションの競合を避ける(ランディングページではヘッダーを最小限にする)